<?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>25503</bug_id>
          
          <creation_ts>2009-04-30 19:01:08 -0700</creation_ts>
          <short_desc>Add instrumentation framework to WebCore</short_desc>
          <delta_ts>2009-09-08 11:35:55 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bolsinga</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>knorton</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>pfeldman</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119556</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2009-04-30 19:01:08 -0700</bug_when>
    <thetext>I think it would be good to have a lightweight instrumentation framework in WebCore to keep tabs on things like the number of layouts and their duration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119557</commentid>
    <comment_count>1</comment_count>
      <attachid>29934</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2009-04-30 19:02:55 -0700</bug_when>
    <thetext>Created attachment 29934
Implementation of instrumentation and simple aggregate in DRT

This is an example of instrumentation in layout, style recalculation, html parsing and painting.  There is also a fairly simplistic implementation of an aggregator in DumpRenderTree that will optionally spit out stats when running layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119895</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-05-04 17:08:10 -0700</bug_when>
    <thetext>Some basic comments.  The names of the client methods don&apos;t really mesh well with our current idiom for client methods.  For instance, instead of &quot;layoutStarting&quot;, we would use &quot;didStartLayout&quot;.

How does this effect the performance of the various perf tests we run? </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119896</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-05-04 17:10:50 -0700</bug_when>
    <thetext>Some general feedback (I didn&apos;t read Sam&apos;s yet)

* I&apos;m not sure I like the pairing of a specific start signal (&quot;recalcStyleStarting&quot;) with a generic end signal (&quot;finished&quot;). Seems like it would be good to force pairing, even if just to assert that they are correctly paired.
* Rather than hard-coding all the categories in method names, why not make it extensible:

analysisClient()-&gt;start(&quot;parsing&quot;);
analysisClient()-&gt;end(&quot;parsing&quot;);

Then you just need a hash to store data in on the collection side.

* Why have WebAnalysisClient in WebKit? Seems like the mechanics of data collection and analysis will be the same for every platform, so should be in WebCore. Then what you export via WebKit is:
i) a way to turn it on and off
ii) a way to get at the raw data (e.g. for a UI visualizer) or summary data?
I think WebCore should also have code to dump the output. You could use a log channel for output, maybe.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120732</commentid>
    <comment_count>4</comment_count>
      <attachid>30205</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2009-05-11 15:07:23 -0700</bug_when>
    <thetext>Created attachment 30205
Addresses some comments and rebases against r43514

This patch addresses the naming issues with AnalysisClient and creates a separate didFoo() callback instead of the generic finished() callback.  This way an implementation only interested in a subset of the instrumentation points could support only the willFoo()/didFoo() pairs they cared about.

This patch also merges up to r43514 and fixes some whitespace/path issues from the original patch.  I&apos;ll address the other comments raised in the bug directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120733</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2009-05-11 15:10:10 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Some basic comments.  The names of the client methods don&apos;t really mesh well
&gt; with our current idiom for client methods.  For instance, instead of
&gt; &quot;layoutStarting&quot;, we would use &quot;didStartLayout&quot;.
&gt; 
&gt; How does this effect the performance of the various perf tests we run? 
&gt; 

The performance of the instrumentation depends pretty much entirely on how much work is done by the AnalysisClient implementation.  In this case, since very little work is done by the DRT implementation there is no measurable performance impact as determined by running SunSpider, the layout tests in LayoutTests/fast, or a mozilla page cycler with some popular websites.  I don&apos;t have access to IBench.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120736</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2009-05-11 15:42:52 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Some general feedback (I didn&apos;t read Sam&apos;s yet)
&gt; 
&gt; * I&apos;m not sure I like the pairing of a specific start signal
&gt; (&quot;recalcStyleStarting&quot;) with a generic end signal (&quot;finished&quot;). Seems like it
&gt; would be good to force pairing, even if just to assert that they are correctly
&gt; paired.
&gt; * Rather than hard-coding all the categories in method names, why not make it
&gt; extensible:
&gt; 
&gt; analysisClient()-&gt;start(&quot;parsing&quot;);
&gt; analysisClient()-&gt;end(&quot;parsing&quot;);
&gt; 
&gt; Then you just need a hash to store data in on the collection side.

The advantage of having separate callbacks is that the instrumentation points can be easily parameterized to keep data around beyond simple start/end timestamps. For example, the paint instrumentation point could also have the size of the bounding box being painted.

&gt; 
&gt; * Why have WebAnalysisClient in WebKit? Seems like the mechanics of data
&gt; collection and analysis will be the same for every platform, so should be in
&gt; WebCore. Then what you export via WebKit is:
&gt; i) a way to turn it on and off
&gt; ii) a way to get at the raw data (e.g. for a UI visualizer) or summary data?
&gt; I think WebCore should also have code to dump the output. You could use a log
&gt; channel for output, maybe.
&gt; 

The DRT aggregation is fairly simple and could potentially apply to all platforms, but it&apos;s more intended as an example of a use of this data and not the only one.   We&apos;ve experimented with tools that keep entire trace trees around and found that the data is quite interesting but also very large and probably doesn&apos;t make sense to keep around in WebCore proper.  In the other extreme, the Android folks have experimented with instrumentation points that do nothing except log to one of their system logs to keep the observer effects down while understand perf regressions.  I think it makes sense to keep the instrumentation itself very generic for now and figure out exactly what sort of processing should be in WebCore vs the platform layer as times goes on.  Does that approach seem good to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122774</commentid>
    <comment_count>7</comment_count>
      <attachid>30205</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-05-22 20:22:34 -0700</bug_when>
    <thetext>Comment on attachment 30205
Addresses some comments and rebases against r43514

I am not sure why these need to use client objects -- as this is primarily of value to developers it should be entirely inside webcore with appropriate bindings to the inspector.  Currently it sits in the inspector directory but the inspector does not use it at all.

I feel it&apos;s value in DRT is vastly less than in the inspector so there should be at least rudimentary information displayed in the inspector as part of this patch.

Also you&apos;re adding branches to some very hot code paths so i&apos;d like to be sure that you&apos;ve ensured that there isn&apos;t a performance regression in layout or rendering.

Given these issues i&apos;m r-&apos;ing this for now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141913</commentid>
    <comment_count>8</comment_count>
      <attachid>38382</attachid>
    <who name="Kelly Norton">knorton</who>
    <bug_when>2009-08-21 11:21:56 -0700</bug_when>
    <thetext>Created attachment 38382
Similar instrumentation points, but this time it goes to an agent in InspectorController.

This path is a much delayed follow up to James&apos; patches that addresses the first part of Oliver&apos;s objection. Are there runnable perf tests for determining the impact of some of the branches this adds?

Also note that this does not add any UI to inspector. This is something I discussed with Timonthy and Sam a little while back and I think they were ok with that. (I requested Timothy on the review).

I&apos;m also kellegous on IRC if there are questions better handled in real-time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143130</commentid>
    <comment_count>9</comment_count>
      <attachid>38382</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-08-27 09:26:27 -0700</bug_when>
    <thetext>Comment on attachment 38382
Similar instrumentation points, but this time it goes to an agent in InspectorController.


&gt; +InspectorTimelineAgent* Document::inspectorTimelineAgent() const
&gt; +{
&gt; +    return page() ? page()-&gt;inspectorTimelineAgent() : 0;
&gt; +}

Make these getters inline functions and it will be better. It would make the callers simplier to keep them.

&gt; +    if (inspectorTimelineAgent())
&gt; +        inspectorTimelineAgent()-&gt;willRecalculateStyle();

This should store the timeline agent into a local so the work isn&apos;t done twice when it is enabled. Same for the other callers.

&gt; +void InspectorTimelineAgent::willDispatchDOMEvent(const Event&amp; event)
&gt; +{
&gt; +    TimelineItem* newItem = newTimelineItem(DOMDispatchTimelineItemType);
&gt; +    newItem-&gt;addDOMEventProperties(m_frontend, event);
&gt; +}
&gt; +
&gt; +void InspectorTimelineAgent::didDispatchDOMEvent()
&gt; +{
&gt; +    didCompleteCurrentRecord();
&gt; +}

I worry about didCompleteCurrentRecord() ending the wrong record. As long as all the recorded things are synchronous it is fine. We should ASSERT here that the current TimelineItem is the right type (DOMDispatchTimelineItemType in this case). And in all the other places didCompleteCurrentRecord() is called.

&gt; +void InspectorTimelineAgent::TimelineItem::addItemProperties(double endTime)
&gt; +{
&gt; +    m_scriptObject.set(&quot;time&quot;, m_startTime);
&gt; +    m_scriptObject.set(&quot;type&quot;, static_cast&lt;int&gt;(m_itemType));
&gt; +    m_scriptObject.set(&quot;duration&quot;, endTime - m_startTime);
&gt; +    if (m_childObjects.length())
&gt; +        m_scriptObject.set(&quot;children&quot;, m_childObjects);
&gt; +}
&gt; +
&gt; +void InspectorTimelineAgent::TimelineItem::addDOMEventProperties(InspectorFrontend* frontend, const Event&amp; event)
&gt; +{
&gt; +    ScriptObject data = frontend-&gt;newScriptObject();
&gt; +    data.set(&quot;type&quot;, event.type().string());
&gt; +    m_scriptObject.set(&quot;data&quot;, data);
&gt; +}

These should be normal data members, and more like ConsoleMessage when the ScriptObjects are created. Like what Pavel was saying on IRC.

&gt; +        // Must be kept in sync with Timeline.js

This should say TimelineAgent.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143740</commentid>
    <comment_count>10</comment_count>
      <attachid>38838</attachid>
    <who name="Kelly Norton">knorton</who>
    <bug_when>2009-08-31 15:37:25 -0700</bug_when>
    <thetext>Created attachment 38838
Addresses review suggestions and updates to r47896</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144575</commentid>
    <comment_count>11</comment_count>
      <attachid>38838</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-09-03 13:04:44 -0700</bug_when>
    <thetext>Comment on attachment 38838
Addresses review suggestions and updates to r47896

Looks good! Some small nits. Will r+ when you fix these.

&gt; +    InspectorTimelineAgent* timelineAgent = inspectorTimelineAgent();
&gt; +    if (timelineAgent)
&gt; +        timelineAgent-&gt;willRecalculateStyle();

You can combine these into 2 lines. Same comment for the rest of the palces like this.

    if (InspectorTimelineAgent* timelineAgent = inspectorTimelineAgent())
        timelineAgent-&gt;willRecalculateStyle();

&gt; +    int i = 0;
&gt; +    for (TimelineItems::const_iterator it(m_children.begin()); it != m_children.end(); ++it) {
&gt; +        ScriptObject childObject = (*it)-&gt;convertToScriptObject(frontend);
&gt; +        children.set(i++, childObject);
&gt; +    }

Just use a normal for loop and a count and not iterators.

&gt; +InspectorTimelineAgent* Page::inspectorTimelineAgent() const
&gt; +{
&gt; +    return m_inspectorController-&gt;timelineAgent();
&gt; +}

You should inline this in the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144596</commentid>
    <comment_count>12</comment_count>
      <attachid>39009</attachid>
    <who name="Kelly Norton">knorton</who>
    <bug_when>2009-09-03 13:56:52 -0700</bug_when>
    <thetext>Created attachment 39009
Fixes the remaining iterator nit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144763</commentid>
    <comment_count>13</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-04 02:08:24 -0700</bug_when>
    <thetext>I think it will break the Windows WebKit build. Could you update vcproj file as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144943</commentid>
    <comment_count>14</comment_count>
      <attachid>39093</attachid>
    <who name="Kelly Norton">knorton</who>
    <bug_when>2009-09-04 15:49:59 -0700</bug_when>
    <thetext>Created attachment 39093
Adds Windows build changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145087</commentid>
    <comment_count>15</comment_count>
      <attachid>39093</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-06 21:56:15 -0700</bug_when>
    <thetext>Comment on attachment 39093
Adds Windows build changes.

Rejecting patch 39093 from commit-queue.  This patch will require manual commit.

Patch https://bugs.webkit.org/attachment.cgi?id=39093 from bug 25503 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145106</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-07 00:13:27 -0700</bug_when>
    <thetext>Several patch application failures, including the XCode project file.  the commit-queue can&apos;t land this unless someone updates it for tip of tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145370</commentid>
    <comment_count>17</comment_count>
      <attachid>39191</attachid>
    <who name="Kelly Norton">knorton</who>
    <bug_when>2009-09-08 08:55:18 -0700</bug_when>
    <thetext>Created attachment 39191
Same patch updated to r48154.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145381</commentid>
    <comment_count>18</comment_count>
      <attachid>39191</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-08 09:13:36 -0700</bug_when>
    <thetext>Comment on attachment 39191
Same patch updated to r48154.

Based on Tim&apos;s previous r+, this still looks fine.  The bots are red atm so it will be a bit before the commit-queue wakes up and commits this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145449</commentid>
    <comment_count>19</comment_count>
      <attachid>39191</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-08 10:55:45 -0700</bug_when>
    <thetext>Comment on attachment 39191
Same patch updated to r48154.

Clearing flags on attachment: 39191

Committed r48167: &lt;http://trac.webkit.org/changeset/48167&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145450</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-08 10:55:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145465</commentid>
    <comment_count>21</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-09-08 11:35:55 -0700</bug_when>
    <thetext>Build fix landed as http://trac.webkit.org/changeset/48171.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29934</attachid>
            <date>2009-04-30 19:02:55 -0700</date>
            <delta_ts>2009-05-11 15:07:23 -0700</delta_ts>
            <desc>Implementation of instrumentation and simple aggregate in DRT</desc>
            <filename>a_c_r42999.diff</filename>
            <type>text/plain</type>
            <size>52917</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzkyN2FmYy4uZTQ1MTBlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0wNC0zMCAgSmFtZXMgUm9iaW5z
b24gIDxqYW1lc3JAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRzIEFuYWx5c2lzQ2xpZW50IGluc3RydW1lbnRhdGlvbiBpbnRl
cmZhY2UgdG8gV2ViQ29yZSBhbmQgaW5zdHJ1bWVudHMgbGF5b3V0LCBzdHlsZSByZWNhbGN1bGF0
aW9uLCBwYWludGluZyBhbmQgaHRtbCB0b2tlbml6ZXIuICBBbHNvIHByb3ZpZGVzIGEgYmFzaWMg
Y29uc3VtZXIgb2YgdGhlIGRhdGEgaW4gRFJUIGFuZCBydW4td2Via2l0LXRlc3RzIHN1cHBvcnQg
Zm9yIGFnZ3JlZ2F0aW5nIHRpbWVzIHNwZW50IGluIHZhcmlvdXMgZmFjZXRzIHdoaWxlIHJ1bm5p
bmcgbGF5b3V0IHRlc3RzLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQg
T1IgQ0hBTkdFRAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6YW5hbHlzaXNDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0
eWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUb2tl
bml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6d3JpdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9BbmFseXNpc0NsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFuYWx5c2lzQ2xpZW50Ojp+QW5hbHlzaXNDbGllbnQpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmFuYWx5c2lzQ2xpZW50KToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpzZXRBbmFseXNpc0NsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjphbmFseXNpc0NsaWVudCk6CisKIDIwMDktMDQtMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2ZWFsIGN1cnJlbnQgZXhlY3V0aW9uIGxpbmUg
b25jZSBTb3VyY2VGcmFtZSBjb250ZW50IGlzIGxvYWRlZC4gCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM5ZjIyMjIuLjI5MzMwNWMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MTgsNiArNjE4LDcgQEAKIAkJ
MzdBQ0NGNjkwREE0MTRFNzAwODlFNjAyIC8qIEZvbnREZXNjcmlwdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0FDQ0U2MjBEQTJBQTk2MDA4
OUU2MDIgLyogRm9udERlc2NyaXB0aW9uLmNwcCAqLzsgfTsKIAkJMzdGODE4RkQwRDY1NzYwNjAw
NUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGODE4RkIwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVV
UkxSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTM3RjgxOEZFMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0Y4MThGQzBE
NjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNlLm1tICovOyB9OworCQkzOEFGN0Q3
QzBGODNGOEM2MDBBN0JBOUEgLyogQW5hbHlzaXNDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4QUY3RDdCMEY4M0Y4QzYwMEE3QkE5QSAvKiBB
bmFseXNpc0NsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxMDAyQ0NEMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NC
MEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsgfTsKIAkJNDEwMDJD
Q0UwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQzBGNjZFREVGMDA5RTY2
MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLzsgfTsKIAkJNDExMDQ2NDEwRkEyMjJBNjAw
QkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTA0NjNGMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRF
dmVudExpc3RlbmVyLmggKi87IH07CkBAIC01NTM1LDYgKzU1MzYsNyBAQAogCQkzN0FDQ0U2MjBE
QTJBQTk2MDA4OUU2MDIgLyogRm9udERlc2NyaXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREZXNjcmlwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTM3RjgxOEZCMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9u
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RjgxOEZDMEQ2NTc2MDYwMDVFMUYw
NSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJDb3JlVVJMUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTM4QUY3RDdCMEY4M0Y4QzYwMEE3QkE5QSAvKiBBbmFseXNpc0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmFseXNpc0NsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVu
Y3Rpb25DYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZ1bmN0
aW9uQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQzBGNjZFREVG
MDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxMTA0NjNGMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3Rl
bmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEV2ZW50TGlzdGVu
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk3MDksNiArOTcxMSw3IEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFDODFCOTU5MEU5NzMzMDgw
MDI2NkUwNyAvKiBmcm9udC1lbmQgKi8sCisJCQkJMzhBRjdEN0IwRjgzRjhDNjAwQTdCQTlBIC8q
IEFuYWx5c2lzQ2xpZW50LmggKi8sCiAJCQkJNDFGMDYxOEQwRjVGMDY5ODAwQTA3RUFDIC8qIENv
bnNvbGVNZXNzYWdlLmNwcCAqLywKIAkJCQk0MUYwNjE4QzBGNUYwNjk4MDBBMDdFQUMgLyogQ29u
c29sZU1lc3NhZ2UuaCAqLywKIAkJCQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgKi8sCkBAIC0xNDYyMiw2ICsxNDYyNSw3IEBACiAJCQkJ
MjlBQUM1MUYwRTUzOTYzQjAwOEY5QjNCIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRh
aW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk4MDBDOTUwRTUyNEM4QjAwMDI1NTM2IC8qIEFj
Y2Vzc2liaWxpdHlUYWJsZVJvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNERFNjkwRUE3NUMx
RTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzhBRjdE
N0MwRjgzRjhDNjAwQTdCQTlBIC8qIEFuYWx5c2lzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OUU5MTJBQjBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzMTZGRTExMjBFNkUxREE3MDBCRjYwODggLyogQW5pbWF0aW9uQmFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzE2RkUxMTQwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTg5MzMsNiArMTg5MzcsOCBAQAogCQkJCURFQURfQ09E
RV9TVFJJUFBJTkcgPSAiJChERUFEX0NPREVfU1RSSVBQSU5HX2RlYnVnKSI7CiAJCQkJREVCVUdf
REVGSU5FUyA9ICIkKERFQlVHX0RFRklORVNfZGVidWcpIjsKIAkJCQlHQ0NfT1BUSU1JWkFUSU9O
X0xFVkVMID0gIiQoR0NDX09QVElNSVpBVElPTl9MRVZFTF9kZWJ1ZykiOworCQkJCUhFQURFUl9T
RUFSQ0hfUEFUSFMgPSAvVXNlcnMvamFtZXNyL3dlYmtpdF9naXRzdm4vV2ViS2l0TGlicmFyaWVz
OworCQkJCUxJQlJBUllfU0VBUkNIX1BBVEhTID0gL1VzZXJzL2phbWVzci93ZWJraXRfZ2l0c3Zu
L1dlYktpdExpYnJhcmllczsKIAkJCQlTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCA9ICIkKFNUUklQ
X0lOU1RBTExFRF9QUk9EVUNUX2RlYnVnKSI7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IDBhNjU1N2EuLjc1ZTljNWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogCisjaW5jbHVkZSAi
QW5hbHlzaXNDbGllbnQuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAi
QW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNEQVRBU2VjdGlvbi5oIgpAQCAtMTA1
NCw2ICsxMDU1LDExIEBAIFBhZ2UqIERvY3VtZW50OjpwYWdlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9mcmFtZSA/IG1fZnJhbWUtPnBhZ2UoKSA6IDA7ICAgIAogfQorICAgIAorQW5hbHlzaXND
bGllbnQqIERvY3VtZW50OjphbmFseXNpc0NsaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
ZnJhbWUgPyBtX2ZyYW1lLT5hbmFseXNpc0NsaWVudCgpIDogMDsKK30KIAogU2V0dGluZ3MqIERv
Y3VtZW50OjpzZXR0aW5ncygpIGNvbnN0CiB7CkBAIC0xMTMxLDYgKzExMzcsOSBAQCB2b2lkIERv
Y3VtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgaWYgKG1faW5TdHls
ZVJlY2FsYykKICAgICAgICAgcmV0dXJuOyAvLyBHdWFyZCBhZ2FpbnN0IHJlLWVudHJhbmN5LiAt
ZHdoCiAKKyAgICBpZiAoYW5hbHlzaXNDbGllbnQoKSkKKyAgICAgICAgYW5hbHlzaXNDbGllbnQo
KS0+cmVjYWxjU3R5bGVTdGFydGluZygpOworCiAgICAgbV9pblN0eWxlUmVjYWxjID0gdHJ1ZTsK
ICAgICBzdXNwZW5kUG9zdEF0dGFjaENhbGxiYWNrcygpOwogICAgIGlmICh2aWV3KCkpCkBAIC0x
MjAzLDYgKzEyMTIsOSBAQCBiYWlsX291dDoKICAgICAgICAgbV9jbG9zZUFmdGVyU3R5bGVSZWNh
bGMgPSBmYWxzZTsKICAgICAgICAgaW1wbGljaXRDbG9zZSgpOwogICAgIH0KKworICAgIGlmIChh
bmFseXNpc0NsaWVudCgpKQorICAgICAgICBhbmFseXNpc0NsaWVudCgpLT5maW5pc2hlZCgpOwog
fQogCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDAwYWU4
NjYuLjk2OTE1NjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDgsNiArNDgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgY2xhc3MgQVhPYmplY3RDYWNoZTsKKyAgICBjbGFzcyBBbmFseXNpc0NsaWVudDsK
ICAgICBjbGFzcyBDREFUQVNlY3Rpb247CiAgICAgY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsK
ICAgICBjbGFzcyBDYWNoZWRTY3JpcHQ7CkBAIC0zODMsNiArMzg0LDggQEAgcHVibGljOgogICAg
IEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0gLy8gY2FuIGJlIE5VTEwK
ICAgICBQYWdlKiBwYWdlKCkgY29uc3Q7IC8vIGNhbiBiZSBOVUxMCiAgICAgU2V0dGluZ3MqIHNl
dHRpbmdzKCkgY29uc3Q7IC8vIGNhbiBiZSBOVUxMCisgICAgCisgICAgQW5hbHlzaXNDbGllbnQq
IGFuYWx5c2lzQ2xpZW50KCkgY29uc3Q7IC8vIGNhbiBiZSBOVUxMCiAKICAgICBQYXNzUmVmUHRy
PFJhbmdlPiBjcmVhdGVSYW5nZSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRv
a2VuaXplci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKaW5kZXggZmEzMmI4
Ni4uODRjNGQ0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbml6ZXIuaCIKIAorI2luY2x1ZGUg
IkFuYWx5c2lzQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiQ2Fj
aGUuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKQEAgLTE2MjcsNiArMTYyOCw5IEBAIHZv
aWQgSFRNTFRva2VuaXplcjo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzdHIsIGJvb2wg
YXBwZW5kRGF0YSkKICAgICAgICAgcHJpbnRmKCJCZWdpbm5pbmcgd3JpdGUgYXQgdGltZSAlZFxu
IiwgbV9kb2MtPmVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCiAgICAgCisgICAgaWYgKG1fZG9jLT5h
bmFseXNpc0NsaWVudCgpKQorICAgICAgICBtX2RvYy0+YW5hbHlzaXNDbGllbnQoKS0+aHRtbFdy
aXRlU3RhcnRpbmcoKTsKKwogICAgIGludCBwcm9jZXNzZWRDb3VudCA9IDA7CiAgICAgZG91Ymxl
IHN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKQEAgLTE3NTEsNiArMTc1NSw5IEBAIHZvaWQg
SFRNTFRva2VuaXplcjo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzdHIsIGJvb2wgYXBw
ZW5kRGF0YSkKICAgICAgICAgcHJpbnRmKCJFbmRpbmcgd3JpdGUgYXQgdGltZSAlZFxuIiwgbV9k
b2MtPmVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCiAgICAgCisgICAgaWYgKG1fZG9jLT5hbmFseXNp
c0NsaWVudCgpKQorICAgICAgICBtX2RvYy0+YW5hbHlzaXNDbGllbnQoKS0+ZmluaXNoZWQoKTsK
KyAgICAKICAgICBtX2luV3JpdGUgPSB3YXNJbldyaXRlOwogCiAgICAgbV9zdGF0ZSA9IHN0YXRl
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQW5hbHlzaXNDbGllbnQuaCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0FuYWx5c2lzQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uY2JiNzlmMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0Fu
YWx5c2lzQ2xpZW50LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQW5hbHlzaXNDbGllbnRfaAor
I2RlZmluZSBBbmFseXNpc0NsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFz
cyBBbmFseXNpc0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5BbmFseXNp
c0NsaWVudCgpIHt9CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0U3RhcnRp
bmcoKSA9IDA7CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGVTdGFy
dGluZygpID0gMDsKKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFN0YXJ0aW5n
KCkgPSAwOworICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIGh0bWxXcml0ZVN0YXJ0aW5n
KCkgPSAwOworICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkKCkgPSAwOwor
ICAgIH07Cit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChBbmFseXNpc0NsaWVudF9oKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5k
ZXggY2U3NzExNi4uM2VmMTEzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xNTYxLDYgKzE1NjEsMTEgQEAgUGFnZSog
RnJhbWU6OnBhZ2UoKSBjb25zdAogICAgIHJldHVybiBtX3BhZ2U7CiB9CiAKK0FuYWx5c2lzQ2xp
ZW50KiBGcmFtZTo6YW5hbHlzaXNDbGllbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2Ug
PyBtX3BhZ2UtPmFuYWx5c2lzQ2xpZW50KCkgOiAwOworfQorCiBFdmVudEhhbmRsZXIqIEZyYW1l
OjpldmVudEhhbmRsZXIoKSBjb25zdAogewogICAgIHJldHVybiAmbV9ldmVudEhhbmRsZXI7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmlu
ZGV4IGQyODJkYWQuLjFiOWQ2ZDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisr
KyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC02Miw2ICs2Miw3IEBAIHR5cGVkZWYgc3RydWN0
IEhCSVRNQVBfXyogSEJJVE1BUDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBbmFs
eXNpc0NsaWVudDsKIGNsYXNzIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgRWRp
dG9yOwogY2xhc3MgRXZlbnRIYW5kbGVyOwpAQCAtOTgsNiArOTksOCBAQCBwdWJsaWM6CiAKICAg
ICBQYWdlKiBwYWdlKCkgY29uc3Q7CiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVs
ZW1lbnQoKSBjb25zdDsKKyAgICAKKyAgICBBbmFseXNpc0NsaWVudCogYW5hbHlzaXNDbGllbnQo
KSBjb25zdDsKIAogICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpOwogICAgIHZvaWQgZGlzY29ubmVj
dE93bmVyRWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAg
Yi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA4ZjhhMWZkLi5jYmJjOGU0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogCiAj
aW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFuYWx5c2lzQ2xpZW50LmgiCiAj
aW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgog
I2luY2x1ZGUgIkRvY0xvYWRlci5oIgpAQCAtNDU2LDYgKzQ1Nyw5IEBAIHZvaWQgRnJhbWVWaWV3
OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgaWYgKGlzUGFpbnRpbmcoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKG1fZnJhbWUtPmFuYWx5c2lzQ2xpZW50KCkpCisgICAgICAg
IG1fZnJhbWUtPmFuYWx5c2lzQ2xpZW50KCktPmxheW91dFN0YXJ0aW5nKCk7CisKICAgICBpZiAo
IWFsbG93U3VidHJlZSAmJiBtX2xheW91dFJvb3QpIHsKICAgICAgICAgbV9sYXlvdXRSb290LT5t
YXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChmYWxzZSk7CiAgICAgICAgIG1fbGF5b3V0Um9v
dCA9IDA7CkBAIC02MzYsNiArNjQwLDkgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFs
bG93U3VidHJlZSkKICAgICAgICAgcmVzdW1lU2NoZWR1bGVkRXZlbnRzKCk7CiAgICAgICAgIEFT
U0VSVChtX2VucXVldWVFdmVudHMpOwogICAgIH0KKyAgICAKKyAgICBpZiAobV9mcmFtZS0+YW5h
bHlzaXNDbGllbnQoKSkKKyAgICAgICAgbV9mcmFtZS0+YW5hbHlzaXNDbGllbnQoKS0+ZmluaXNo
ZWQoKTsKIAogICAgIG1fbmVzdGVkTGF5b3V0Q291bnQtLTsKIH0KQEAgLTEzMTEsNiArMTMxOCw5
IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogcCwgY29u
c3QgSW50UmVjdCYgcmVjdCkKICAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKKyAgICBpZiAobV9mcmFtZS0+YW5hbHlzaXNDbGllbnQoKSkKKyAgICAgICAgbV9mcmFtZS0+
YW5hbHlzaXNDbGllbnQoKS0+cGFpbnRTdGFydGluZygpOworCiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gZnJhbWUoKS0+ZG9jdW1lbnQoKTsKIAogI2lmbmRlZiBOREVCVUcKQEAgLTEzNjcsNiAr
MTM3NywxMCBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQq
IHAsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAKICAgICBpZiAoaXNUb3BMZXZlbFBhaW50ZXIpCiAg
ICAgICAgIHNDdXJyZW50UGFpbnRUaW1lU3RhbXAgPSAwOworICAgIAorICAgIAorICAgIGlmICht
X2ZyYW1lLT5hbmFseXNpc0NsaWVudCgpKQorICAgICAgICBtX2ZyYW1lLT5hbmFseXNpc0NsaWVu
dCgpLT5maW5pc2hlZCgpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6c2V0UGFpbnRSZXN0cmljdGlv
bihQYWludFJlc3RyaWN0aW9uIHByKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDIxNjYwZWQuLjcwMTA3MTIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAg
LTEyOSw2ICsxMjksNyBAQCBQYWdlOjpQYWdlKENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBD
b250ZXh0TWVudUNsaWVudCogY29udGV4dE1lbnVDbGllbnQsIEVkaQogICAgICwgbV9kZWJ1Z2dl
cigwKQogICAgICwgbV9jdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KC0xKQogICAgICwgbV9j
dXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplKC0xKQorICAgICwgbV9hbmFseXNpc0NsaWVudCgw
KQogewogICAgIGlmICghYWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFnZXMgPSBuZXcgSGFzaFNl
dDxQYWdlKj47CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvV2ViQ29yZS9wYWdl
L1BhZ2UuaAppbmRleCBlZWRkMjRjLi5hN2IyYjk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIEFuYWx5c2lzQ2xp
ZW50OwogICAgIGNsYXNzIENocm9tZTsKICAgICBjbGFzcyBDaHJvbWVDbGllbnQ7CiAgICAgY2xh
c3MgQ29udGV4dE1lbnVDbGllbnQ7CkBAIC0xOTgsNiArMTk5LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHNldEphdmFTY3JpcHRVUkxzQXJlQWxsb3dlZChib29sKTsKICAg
ICAgICAgYm9vbCBqYXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQoKSBjb25zdDsKIAorICAgICAgICB2
b2lkIHNldEFuYWx5c2lzQ2xpZW50KEFuYWx5c2lzQ2xpZW50KiBjbGllbnQpIHsgbV9hbmFseXNp
c0NsaWVudCA9IGNsaWVudDsgfQorICAgICAgICBBbmFseXNpc0NsaWVudCogYW5hbHlzaXNDbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX2FuYWx5c2lzQ2xpZW50OyB9CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAtMjU4LDYgKzI2MSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNpZiBFTkFCTEUoV01MKQogICAgICAgICBPd25QdHI8V01MUGFnZVN0YXRlPiBt
X3dtbFBhZ2VTdGF0ZTsKICNlbmRpZgorICAgICAgICAKKyAgICAgICAgQW5hbHlzaXNDbGllbnQq
IG1fYW5hbHlzaXNDbGllbnQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L0NoYW5nZUxvZyBiL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmU3NzA0
NS4uYzhiNmFkMSAxMDA2NDQKLS0tIGEvV2ViS2l0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDQtMzAgIEphbWVzIFJvYmluc29uICA8amFt
ZXNyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkcyBBbmFseXNpc0NsaWVudCBpbnN0cnVtZW50YXRpb24gaW50ZXJmYWNlIHRv
IFdlYkNvcmUgYW5kIGluc3RydW1lbnRzIGxheW91dCwgc3R5bGUgcmVjYWxjdWxhdGlvbiwgcGFp
bnRpbmcgYW5kIGh0bWwgdG9rZW5pemVyLiAgQWxzbyBwcm92aWRlcyBhIGJhc2ljIGNvbnN1bWVy
IG9mIHRoZSBkYXRhIGluIERSVCBhbmQgcnVuLXdlYmtpdC10ZXN0cyBzdXBwb3J0IGZvciBhZ2dy
ZWdhdGluZyB0aW1lcyBzcGVudCBpbiB2YXJpb3VzIGZhY2V0cyB3aGlsZSBydW5uaW5nIGxheW91
dCB0ZXN0cy4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDA5LTA0LTI3ICBEb3VnbGFzIFIuIERhdmlkc29uICA8ZGRhdmlkc29AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBsb2NhbGl6YWJsZSBzdHJpbmdzIGZvciAKZGlmZiAtLWdpdCBhL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMjI0NTA0Li44MzNhOTM5IDEwMDY0NAotLS0gYS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03Myw2ICs3MywxMCBAQAogCQkyMjZFOUU2
QTA5RDBBQTgyMDBGM0EyQkMgLyogV2ViTmV0c2NhcGVEZXByZWNhdGVkRnVuY3Rpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjZFOUU2ODA5RDBB
QTgyMDBGM0EyQkMgLyogV2ViTmV0c2NhcGVEZXByZWNhdGVkRnVuY3Rpb25zLmggKi87IH07CiAJ
CTIyNkU5RTZCMDlEMEFBODIwMEYzQTJCQyAvKiBXZWJOZXRzY2FwZURlcHJlY2F0ZWRGdW5jdGlv
bnMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNkU5
RTY5MDlEMEFBODIwMEYzQTJCQyAvKiBXZWJOZXRzY2FwZURlcHJlY2F0ZWRGdW5jdGlvbnMuYyAq
Lzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby1kZXByZWNhdGVkLWRlY2xhcmF0
aW9ucyI7IH07IH07CiAJCTIyRjIxOUNDMDhEMjM2NzMwMDMwRTA3OCAvKiBXZWJCYWNrRm9yd2Fy
ZExpc3RQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyMkYyMTlDQjA4RDIzNjczMDAzMEUwNzggLyogV2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTM4
RTc1RkREMEY4NDRBNEEwMDA0ODQ4NyAvKiBXZWJBbmFseXNpc0NsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzhFNzVGREMwRjg0NEE0QTAwMDQ4
NDg3IC8qIFdlYkFuYWx5c2lzQ2xpZW50LmggKi87IH07CisJCTM4RTc1RkU2MEY4NDUwM0YwMDA0
ODQ4NyAvKiBXZWJBbmFseXNpc0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzOEU3NUZFNTBGODQ1MDNGMDAwNDg0ODcgLyogV2ViQW5hbHlz
aXNEZWxlZ2F0ZS5oICovOyB9OworCQkzOEU3NjAyQzBGODQ1NDYzMDAwNDg0ODcgLyogV2ViQW5h
bHlzaXNEZWxlZ2F0ZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzhFNzYwMkIwRjg0NTQ2MzAwMDQ4NDg3IC8qIFdlYkFuYWx5c2lzRGVsZWdhdGUubSAq
LzsgfTsKKwkJMzhFNzYwMkYwRjg0NTgxMTAwMDQ4NDg3IC8qIFdlYkFuYWx5c2lzQ2xpZW50Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzhFNzYwMkUw
Rjg0NTgxMTAwMDQ4NDg3IC8qIFdlYkFuYWx5c2lzQ2xpZW50Lm1tICovOyB9OwogCQk0NDE3OTNB
NjBFMzRFRTE1MDA1NUUxQUUgLyogV2ViSFRNTFJlcHJlc2VudGF0aW9uSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MTc5M0E1MEUzNEVF
MTUwMDU1RTFBRSAvKiBXZWJIVE1MUmVwcmVzZW50YXRpb25JbnRlcm5hbC5oICovOyB9OwogCQk0
QkY5OUY5MDBBRTA1MEJDMDA4MTVDMkIgLyogV2ViRWRpdG9yQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkY5OUY4RTBBRTA1MEJDMDA4MTVD
MkIgLyogV2ViRWRpdG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsg
fTsgfTsKIAkJNEJGOTlGOTEwQUUwNTBCQzAwODE1QzJCIC8qIFdlYkVkaXRvckNsaWVudC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRjk5RjhGMEFF
MDUwQkMwMDgxNUMyQiAvKiBXZWJFZGl0b3JDbGllbnQubW0gKi87IH07CkBAIC00MDMsNiArNDA3
LDEwIEBACiAJCTM1MDgxRDk1MDJCNkQ0RDgwQUNBMkFDQSAvKiBXZWJIVE1MVmlldy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
SFRNTFZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQkzNTA4MUQ5NjAyQjZENEQ4MEFDQTJBQ0EgLyogV2ViSFRNTFZpZXdQcml2
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViSFRNTFZpZXdQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQkzNTA4MURBRTAyQjZENEY1MEFDQTJBQ0EgLyogV2ViRG9j
dW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKKwkJMzhFNzVGREMwRjg0NEE0QTAwMDQ4NDg3IC8qIFdlYkFuYWx5c2lz
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFuYWx5c2lzQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM4RTc1RkU1MEY4NDUwM0YwMDA0
ODQ4NyAvKiBXZWJBbmFseXNpc0RlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkFuYWx5c2lzRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzhFNzYwMkIwRjg0NTQ2MzAwMDQ4NDg3IC8qIFdlYkFuYWx5c2lzRGVsZWdhdGUubSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzOEU3NjAyRTBGODQ1ODExMDAwNDg0ODcgLyog
V2ViQW5hbHlzaXNDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJBbmFseXNpc0NsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Mzk0NDYwNkIwMjBGNTBFRDBFQ0ExNzY3IC8qIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkR5bmFt
aWNTY3JvbGxCYXJzVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJMzk0NDYwNkMwMjBGNTBFRDBFQ0ExNzY3IC8qIFdlYkR5bmFt
aWNTY3JvbGxCYXJzVmlldy5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgcGF0aCA9IFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJMzk0NDYwNkUw
MjBGNTBFRDBFQ0ExNzY3IC8qIFdlYlByZWZlcmVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJlZmVyZW5jZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xMDE1LDYg
KzEwMjMsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRjUyQ0E2QkQwMkRGOUQwRjAxODYzNUNB
IC8qIEhUTUwgKi8sCiAJCQkJNTFFOTRDMDcwNkMwMkNBMzAwQTlCMDlFIC8qIFBERiAqLywKKwkJ
CQkzOEU3NUZFNTBGODQ1MDNGMDAwNDg0ODcgLyogV2ViQW5hbHlzaXNEZWxlZ2F0ZS5oICovLAor
CQkJCTM4RTc2MDJCMEY4NDU0NjMwMDA0ODQ4NyAvKiBXZWJBbmFseXNpc0RlbGVnYXRlLm0gKi8s
CiAJCQkJODM3MzQzNUEwNjI0RUUwRDAwRjNCMjg5IC8qIFdlYkFyY2hpdmUuaCAqLywKIAkJCQk4
MzczNDM1QjA2MjRFRTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5tbSAqLywKIAkJCQk5MzNENjU5
OTAzNDEzRkYyMDA4NjM1Q0UgLyogV2ViQ2xpcFZpZXcuaCAqLywKQEAgLTExMTEsNiArMTEyMSw4
IEBACiAJCUY1QjM2QjQwMDI4MURFODcwMTg2MzVDQiAvKiBXZWJDb3JlU3VwcG9ydCAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMzhFNzVGREMwRjg0NEE0
QTAwMDQ4NDg3IC8qIFdlYkFuYWx5c2lzQ2xpZW50LmggKi8sCisJCQkJMzhFNzYwMkUwRjg0NTgx
MTAwMDQ4NDg3IC8qIFdlYkFuYWx5c2lzQ2xpZW50Lm1tICovLAogCQkJCTUxQ0JGQ0FDMEQxMEU2
QzUwMDJEQkY1MSAvKiBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oICovLAogCQkJCTE0RDgy
NTJEMEFGOTU1MDkwMDA0RjA1NyAvKiBXZWJDaHJvbWVDbGllbnQuaCAqLywKIAkJCQkxNEQ4MjUy
RTBBRjk1NTA5MDAwNEYwNTcgLyogV2ViQ2hyb21lQ2xpZW50Lm1tICovLApAQCAtMTQxNiw2ICsx
NDI4LDggQEAKIAkJCQlBQjlGQkJCQjBGODU4MkIwMDA2QURDNDMgLyogV2ViRE9NT3BlcmF0aW9u
c0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQUVCRkY2MzBGOUZBOEJFMDAwRDQ4NkIg
LyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBBQjc1MjM3MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29u
dGV4dEluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTM4RTc1RkREMEY4NDRBNEEwMDA0ODQ4NyAv
KiBXZWJBbmFseXNpc0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzhFNzVGRTYwRjg0NTAz
RjAwMDQ4NDg3IC8qIFdlYkFuYWx5c2lzRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTcy
Niw2ICsxNzQwLDggQEAKIAkJCQlGRUY1MkRGQTBGNjc0OEYyMDBGRjcwRUUgLyogV2ViR2VvbG9j
YXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwQUVCRkY2NDBGOUZBOEJFMDAwRDQ4NkIgLyog
V2ViTmV0c2NhcGVDb250YWluZXJDaGVja1ByaXZhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkw
QUI3NTIzODBGQTJFNERCMDBEN0NCQjEgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRl
eHRJbmZvLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMzhFNzYwMkMwRjg0NTQ2MzAwMDQ4NDg3IC8q
IFdlYkFuYWx5c2lzRGVsZWdhdGUubSBpbiBTb3VyY2VzICovLAorCQkJCTM4RTc2MDJGMEY4NDU4
MTEwMDA0ODQ4NyAvKiBXZWJBbmFseXNpc0NsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTgy
Niw3ICsxODQyLDEwIEBACiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA0RkQ0
MEJBOUREMEYwMDgxRTlEMCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi87CiAJCQlidWlsZFNl
dHRpbmdzID0gewogCQkJCURFQlVHX0RFRklORVMgPSAiJChERUJVR19ERUZJTkVTX2RlYnVnKSI7
CisJCQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICIiOwogCQkJCUdDQ19PUFRJTUlaQVRJT05f
TEVWRUwgPSAiJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX2RlYnVnKSI7CisJCQkJSEVBREVSX1NF
QVJDSF9QQVRIUyA9ICIiOworCQkJCUxJQlJBUllfU0VBUkNIX1BBVEhTID0gIiI7CiAJCQkJU1RS
SVBfSU5TVEFMTEVEX1BST0RVQ1QgPSAiJChTVFJJUF9JTlNUQUxMRURfUFJPRFVDVF9kZWJ1Zyki
OwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZmIzMDU5My4uM2NiYjgxOSAxMDA2NDQK
LS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMiBAQAorMjAwOS0wNC0zMCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAZGhjcC0x
NzItMjktMjEyLTE2Ny5hdGwuY29ycC5nb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgQW5hbHlzaXNDbGllbnQgaW5zdHJ1bWVu
dGF0aW9uIGludGVyZmFjZSB0byBXZWJDb3JlIGFuZCBpbnN0cnVtZW50cyBsYXlvdXQsIHN0eWxl
IHJlY2FsY3VsYXRpb24sIHBhaW50aW5nIGFuZCBodG1sIHRva2VuaXplci4gIEFsc28gcHJvdmlk
ZXMgYSBiYXNpYyBjb25zdW1lciBvZiB0aGUgZGF0YSBpbiBEUlQgYW5kIHJ1bi13ZWJraXQtdGVz
dHMgc3VwcG9ydCBmb3IgYWdncmVnYXRpbmcgdGltZXMgc3BlbnQgaW4gdmFyaW91cyBmYWNldHMg
d2hpbGUgcnVubmluZyBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJBbmFseXNpc0NsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkFuYWx5c2lzQ2xpZW50Ojp+
V2ViQW5hbHlzaXNDbGllbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFuYWx5c2lz
Q2xpZW50Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkFuYWx5c2lzQ2xpZW50OjpXZWJBbmFseXNp
c0NsaWVudCk6CisgICAgICAgIChXZWJBbmFseXNpc0NsaWVudDo6c2V0V2ViQW5hbHlzaXNEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJBbmFseXNpc0NsaWVudDo6bGF5b3V0U3RhcnRpbmcpOgorICAg
ICAgICAoV2ViQW5hbHlzaXNDbGllbnQ6OnJlY2FsY1N0eWxlU3RhcnRpbmcpOgorICAgICAgICAo
V2ViQW5hbHlzaXNDbGllbnQ6OnBhaW50U3RhcnRpbmcpOgorICAgICAgICAoV2ViQW5hbHlzaXND
bGllbnQ6Omh0bWxXcml0ZVN0YXJ0aW5nKToKKyAgICAgICAgKFdlYkFuYWx5c2lzQ2xpZW50Ojpm
aW5pc2hlZCk6CisgICAgICAgICogV2ViVmlldy9XZWJBbmFseXNpc0RlbGVnYXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlZpZXcvV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tOiBBZGRlZC4KKyAgICAg
ICAgKC1bV2ViQW5hbHlzaXNEZWxlZ2F0ZSBsYXlvdXRTdGFydGluZzpdKToKKyAgICAgICAgKC1b
V2ViQW5hbHlzaXNEZWxlZ2F0ZSByZWNhbGNTdHlsZVN0YXJ0aW5nOl0pOgorICAgICAgICAoLVtX
ZWJBbmFseXNpc0RlbGVnYXRlIHBhaW50U3RhcnRpbmc6XSk6CisgICAgICAgICgtW1dlYkFuYWx5
c2lzRGVsZWdhdGUgaHRtbFdyaXRlU3RhcnRpbmc6XSk6CisgICAgICAgICgtW1dlYkFuYWx5c2lz
RGVsZWdhdGUgZmluaXNoZWQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5oOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgrW1dlYkZyYW1lIF9jcmVhdGVG
cmFtZVdpdGhQYWdlOmZyYW1lTmFtZTpmcmFtZVZpZXc6b3duZXJFbGVtZW50Ol0pOgorICAgICAg
ICAoLVtXZWJGcmFtZSBzZXRXZWJBbmFseXNpc0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViRnJhbWVJbnRlcm5hbC5oOgorCiAyMDA5LTA0LTI5ICBEYXZpZCBIeWF0dCAgPGh5YXR0
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbmFseXNpc0NsaWVudC5oIGIvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbmFseXNpc0NsaWVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkYjFmZWYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFuYWx5c2lzQ2xpZW50LmgKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgPFdlYkNvcmUvQW5hbHlzaXNDbGllbnQuaD4KKworI2ltcG9ydCAiV2Vi
QW5hbHlzaXNEZWxlZ2F0ZS5oIgorCitjbGFzcyBXZWJBbmFseXNpc0NsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpBbmFseXNpc0NsaWVudCB7CitwdWJsaWM6CisgICAgV2ViQW5hbHlzaXNDbGllbnQo
KTsKKyAgICB2aXJ0dWFsIH5XZWJBbmFseXNpc0NsaWVudCgpIHt9CisKKyAgICB2b2lkIHNldFdl
YkFuYWx5c2lzRGVsZWdhdGUoV2ViQW5hbHlzaXNEZWxlZ2F0ZSogZGVsZWdhdGUpOworCisgICAg
dmlydHVhbCB2b2lkIGxheW91dFN0YXJ0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0
eWxlU3RhcnRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTdGFydGluZygpOworICAgIHZp
cnR1YWwgdm9pZCBodG1sV3JpdGVTdGFydGluZygpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hl
ZCgpOworCitwcml2YXRlOgorICAgIFdlYkFuYWx5c2lzRGVsZWdhdGUqIG1fZGVsZWdhdGU7Cit9
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbmFseXNpc0NsaWVu
dC5tbSBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQW5hbHlzaXNDbGllbnQubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI4OTQyOQotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQW5hbHlzaXNDbGllbnQubW0KQEAgLTAs
MCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViQW5hbHlzaXNDbGllbnQuaCIKKyNpbXBvcnQg
IldlYkFuYWx5c2lzRGVsZWdhdGUuaCIKKyNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgorCitX
ZWJBbmFseXNpc0NsaWVudDo6V2ViQW5hbHlzaXNDbGllbnQoKSA6IG1fZGVsZWdhdGUobmlsKQor
eworfQorCit2b2lkIFdlYkFuYWx5c2lzQ2xpZW50OjpzZXRXZWJBbmFseXNpc0RlbGVnYXRlKFdl
YkFuYWx5c2lzRGVsZWdhdGUqIGRlbGVnYXRlKQoreworICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKK30KKwordm9pZCBXZWJBbmFseXNpc0NsaWVudDo6bGF5b3V0U3RhcnRpbmcoKQoreworICAg
IFttX2RlbGVnYXRlIGxheW91dFN0YXJ0aW5nOiBXVEY6OmN1cnJlbnRUaW1lKCldOworfQorCit2
b2lkIFdlYkFuYWx5c2lzQ2xpZW50OjpyZWNhbGNTdHlsZVN0YXJ0aW5nKCkKK3sKKyAgICBbbV9k
ZWxlZ2F0ZSByZWNhbGNTdHlsZVN0YXJ0aW5nOiBXVEY6OmN1cnJlbnRUaW1lKCldOworfQorCit2
b2lkIFdlYkFuYWx5c2lzQ2xpZW50OjpwYWludFN0YXJ0aW5nKCkKK3sKKyAgICBbbV9kZWxlZ2F0
ZSBwYWludFN0YXJ0aW5nOiBXVEY6OmN1cnJlbnRUaW1lKCldOworfQorCit2b2lkIFdlYkFuYWx5
c2lzQ2xpZW50OjpodG1sV3JpdGVTdGFydGluZygpCit7CisgICAgW21fZGVsZWdhdGUgaHRtbFdy
aXRlU3RhcnRpbmc6IFdURjo6Y3VycmVudFRpbWUoKV07Cit9CisKK3ZvaWQgV2ViQW5hbHlzaXND
bGllbnQ6OmZpbmlzaGVkKCkKK3sKKyAgICBbbV9kZWxlZ2F0ZSBmaW5pc2hlZDogV1RGOjpjdXJy
ZW50VGltZSgpXTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBbmFseXNp
c0RlbGVnYXRlLmggYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQW5hbHlzaXNEZWxlZ2F0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YmJkOTkKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQW5hbHlzaXNEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEs
NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworCisvKiEKKyBAcHJvdG9jb2wgIFdlYkFuYWx5c2lzRGVsZWdhdGUKKyAqLwor
QHByb3RvY29sIFdlYkFuYWx5c2lzRGVsZWdhdGUgPE5TT2JqZWN0PgorCisvLyBNaXJyb3JzIFdl
YkFuYWx5c2lzQ2xpZW50LmgKKworLSAodm9pZClsYXlvdXRTdGFydGluZzooZG91YmxlKXRpbWVz
dGFtcDsKKy0gKHZvaWQpcmVjYWxjU3R5bGVTdGFydGluZzooZG91YmxlKXRpbWVzdGFtcDsKKy0g
KHZvaWQpcGFpbnRTdGFydGluZzooZG91YmxlKXRpbWVzdGFtcDsKKy0gKHZvaWQpaHRtbFdyaXRl
U3RhcnRpbmc6KGRvdWJsZSl0aW1lc3RhbXA7CistICh2b2lkKWZpbmlzaGVkOihkb3VibGUpdGlt
ZXN0YW1wOworCitAZW5kCisKKworLyohCisgQGNsYXNzIFdlYkFuYWx5c2lzRGVsZWdhdGUKKyBA
ZGlzY3Vzc2lvbiBUaGUgV2ViQW5hbHlzaXNEZWxlZ2F0ZSBjbGFzcyByZXNwb25kcyB0byBhbGwg
V2ViQW5hbHlzaXNEZWxlZ2F0ZSBwcm90b2NvbAorIG1ldGhvZHMgYnkgZG9pbmcgbm90aGluZy4g
SXQncyBwcm92aWRlZCBmb3IgdGhlIGNvbnZlbmllbmNlIG9mIGNsaWVudHMgd2hvIG9ubHkgd2Fu
dAorIHRvIGltcGxlbWVudCBzb21lIG9mIHRoZSBhYm92ZSBtZXRob2RzIGFuZCBpZ25vcmUgb3Ro
ZXJzLgorICovCitAaW50ZXJmYWNlIFdlYkFuYWx5c2lzRGVsZWdhdGUgOiBOU09iamVjdCA8V2Vi
QW5hbHlzaXNEZWxlZ2F0ZT4KK0BlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJBbmFseXNpc0RlbGVnYXRlLm0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQW5hbHlzaXNEZWxl
Z2F0ZS5tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NjExMjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tCkBA
IC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViQW5hbHlzaXNEZWxlZ2F0ZS5oIgorCitA
aW1wbGVtZW50YXRpb24gV2ViQW5hbHlzaXNEZWxlZ2F0ZQorCistICh2b2lkKWxheW91dFN0YXJ0
aW5nOihkb3VibGUpdGltZXN0YW1wCit7Cit9CisKKy0gKHZvaWQpcmVjYWxjU3R5bGVTdGFydGlu
ZzooZG91YmxlKXRpbWVzdGFtcAoreworfQorCistICh2b2lkKXBhaW50U3RhcnRpbmc6KGRvdWJs
ZSl0aW1lc3RhbXAKK3sKK30KKworLSAodm9pZClodG1sV3JpdGVTdGFydGluZzooZG91YmxlKXRp
bWVzdGFtcAoreworfQorCistICh2b2lkKWZpbmlzaGVkOihkb3VibGUpdGltZXN0YW1wCit7Cit9
CisKK0BlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5oIGIvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLmgKaW5kZXggYTZjZGViYi4uY2M2ZmM3MSAxMDA2NDQK
LS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLmgKKysrIGIvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLmgKQEAgLTMyLDYgKzMyLDcgQEAKIEBjbGFzcyBET01Eb2N1bWVudDsKIEBj
bGFzcyBET01IVE1MRWxlbWVudDsKIEBjbGFzcyBOU1VSTFJlcXVlc3Q7CitAY2xhc3MgV2ViQW5h
bHlzaXNEZWxlZ2F0ZTsKIEBjbGFzcyBXZWJBcmNoaXZlOwogQGNsYXNzIFdlYkRhdGFTb3VyY2U7
CiBAY2xhc3MgV2ViRnJhbWVQcml2YXRlOwpAQCAtMjE0LDQgKzIxNSwxMSBAQAogKi8KIC0gKEpT
R2xvYmFsQ29udGV4dFJlZilnbG9iYWxDb250ZXh0OwogCisvKiEKKyAgICBAbWV0aG9kIHNldFdl
YkFuYWx5c2lzRGVsZWdhdGUKKyAgICBAZGlzY3Vzc2lvbiBBbGwgV2ViQW5hbHlzaXNDbGllbnQg
Y2FsbHMgYXJlIGZvcndhcmRlZCB0byB0aGUgZGVsZWdhdGUsIGlmIG9uZSBpcyBzZXQuCisgICAg
QHBhcmFtIGRlbGVnYXRlIFRoZSBkZWxlZ2F0ZSB0byBmb3J3YXJkIGNhbGxzIHRvLgorKi8KKy0g
KHZvaWQpc2V0V2ViQW5hbHlzaXNEZWxlZ2F0ZTooV2ViQW5hbHlzaXNEZWxlZ2F0ZSAqKWRlbGVn
YXRlOworCiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMTZiYjViNi4uZTFkYjMzZCAx
MDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiRE9NSFRN
TEVsZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0
ICJET01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJXZWJBbmFseXNpc0NsaWVudC5oIgogI2lt
cG9ydCAiV2ViQXJjaGl2ZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJDaHJvbWVDbGllbnQuaCIK
ICNpbXBvcnQgIldlYkRhdGFTb3VyY2VJbnRlcm5hbC5oIgpAQCAtMjQyLDYgKzI0Myw5IEBAIFdl
YlZpZXcgKmdldFdlYlZpZXcoV2ViRnJhbWUgKndlYkZyYW1lKQogCiAgICAgW3dlYlZpZXcgX3Nl
dFpvb21NdWx0aXBsaWVyOlt3ZWJWaWV3IF9yZWFsWm9vbU11bHRpcGxpZXJdIGlzVGV4dE9ubHk6
W3dlYlZpZXcgX3JlYWxab29tTXVsdGlwbGllcklzVGV4dE9ubHldXTsKIAorICAgIGZyYW1lLT5f
cHJpdmF0ZS0+d2ViQW5hbHlzaXNDbGllbnQgPSBuZXcgV2ViQW5hbHlzaXNDbGllbnQoKTsKKyAg
ICBwYWdlLT5zZXRBbmFseXNpc0NsaWVudChmcmFtZS0+X3ByaXZhdGUtPndlYkFuYWx5c2lzQ2xp
ZW50KTsKKwogICAgIHJldHVybiBjb3JlRnJhbWUucmVsZWFzZSgpOwogfQogCkBAIC0xMzY1LDQg
KzEzNjksOSBAQCBzdGF0aWMgTlNVUkwgKmNyZWF0ZVVuaXF1ZVdlYkRhdGFVUkwoKQogICAgIHJl
dHVybiB0b0dsb2JhbFJlZihjb3JlRnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRXhlYygpKTsKIH0KIAorLSAodm9pZClzZXRXZWJBbmFseXNpc0RlbGVnYXRlOihXZWJBbmFs
eXNpc0RlbGVnYXRlICopZGVsZWdhdGUKK3sKKyAgICBfcHJpdmF0ZS0+d2ViQW5hbHlzaXNDbGll
bnQtPnNldFdlYkFuYWx5c2lzRGVsZWdhdGUoZGVsZWdhdGUpOworfQorCiBAZW5kCmRpZmYgLS1n
aXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oIGIvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAppbmRleCAxMGEzMDE1Li5hMTdiYWM3IDEwMDY0NAot
LS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCisrKyBiL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKIEBjbGFzcyBX
ZWJGcmFtZVZpZXc7CiBAY2xhc3MgV2ViSGlzdG9yeUl0ZW07CiAKK2NsYXNzIFdlYkFuYWx5c2lz
Q2xpZW50OwogY2xhc3MgV2ViU2NyaXB0RGVidWdnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTc5LDYgKzgwLDcgQEAgV2ViVmlldyAqZ2V0V2ViVmlldyhXZWJGcmFtZSAqd2ViRnJhbWUp
OwogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWU7CiAgICAgV2ViRnJhbWVWaWV3ICp3ZWJG
cmFtZVZpZXc7CiAgICAgV2ViU2NyaXB0RGVidWdnZXIqIHNjcmlwdERlYnVnZ2VyOworICAgIFdl
YkFuYWx5c2lzQ2xpZW50KiB3ZWJBbmFseXNpc0NsaWVudDsKICAgICBpZCBpbnRlcm5hbExvYWRE
ZWxlZ2F0ZTsKICAgICBCT09MIHNob3VsZENyZWF0ZVJlbmRlcmVyczsKIH0KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBhMjcw
ZGFlLi5iZTcyM2IzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMDktMDQtMzAgIEphbWVzIFJv
Ymluc29uICA8amFtZXNyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyBBbmFseXNpc0NsaWVudCBpbnN0cnVtZW50YXRpb24g
aW50ZXJmYWNlIHRvIFdlYkNvcmUgYW5kIGluc3RydW1lbnRzIGxheW91dCwgc3R5bGUgcmVjYWxj
dWxhdGlvbiwgcGFpbnRpbmcgYW5kIGh0bWwgdG9rZW5pemVyLiAgQWxzbyBwcm92aWRlcyBhIGJh
c2ljIGNvbnN1bWVyIG9mIHRoZSBkYXRhIGluIERSVCBhbmQgcnVuLXdlYmtpdC10ZXN0cyBzdXBw
b3J0IGZvciBhZ2dyZWdhdGluZyB0aW1lcyBzcGVudCBpbiB2YXJpb3VzIGZhY2V0cyB3aGlsZSBy
dW5uaW5nIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoYWxsb2NhdGVHbG9iYWxDb250cm9s
bGVycyk6CisgICAgICAgIChyZWxlYXNlR2xvYmFsQ29udHJvbGxlcnMpOgorICAgICAgICAoZHVt
cFJlbmRlclRyZWUpOgorICAgICAgICAoZHVtcCk6CisgICAgICAgIChyZXNldFdlYlZpZXdUb0Nv
bnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0xvZ2dpbmdXZWJBbmFseXNpc0RlbGVnYXRlLmg6IEFkZGVk
LgorICAgICAgICAoUGVuZGluZ0V2ZW50OjpQZW5kaW5nRXZlbnQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9Mb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tbTogQWRkZWQuCisgICAg
ICAgICgtW0xvZ2dpbmdXZWJBbmFseXNpc0RlbGVnYXRlIGluaXRdKToKKyAgICAgICAgKC1bTG9n
Z2luZ1dlYkFuYWx5c2lzRGVsZWdhdGUgZGVhbGxvY10pOgorICAgICAgICAoLVtMb2dnaW5nV2Vi
QW5hbHlzaXNEZWxlZ2F0ZSBsYXlvdXRTdGFydGluZzpdKToKKyAgICAgICAgKC1bTG9nZ2luZ1dl
YkFuYWx5c2lzRGVsZWdhdGUgcmVjYWxjU3R5bGVTdGFydGluZzpdKToKKyAgICAgICAgKC1bTG9n
Z2luZ1dlYkFuYWx5c2lzRGVsZWdhdGUgcGFpbnRTdGFydGluZzpdKToKKyAgICAgICAgKC1bTG9n
Z2luZ1dlYkFuYWx5c2lzRGVsZWdhdGUgaHRtbFdyaXRlU3RhcnRpbmc6XSk6CisgICAgICAgICgt
W0xvZ2dpbmdXZWJBbmFseXNpc0RlbGVnYXRlIGZpbmlzaGVkOl0pOgorICAgICAgICAoLVtMb2dn
aW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZSBkdW1wQWdncmVnYXRlRGF0YV0pOgorICAgICAgICAqIFNj
cmlwdHMvcnVuLXdlYmtpdC10ZXN0czoKKwogMjAwOS0wNC0yOCAgUGllcnJlIGQnSGVyYmVtb250
ICA8cGRoZXJiZW1vbnRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtp
bHplci4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYyZWE0MDEu
LmM0Y2FkMjkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzQs
NiArMzQsNyBAQAogCQkxQUM2Qzg0QTBEMDc2Mzg2MDBDRDMxNjEgLyogUGx1Z2luT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQzZDNzgw
MEQwNzU4OUIwMENEMzE2MSAvKiBQbHVnaW5PYmplY3QuY3BwICovOyB9OwogCQkxQUM2Qzg0QjBE
MDc2Mzg2MDBDRDMxNjEgLyogVGVzdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUM2Qzc4MTBEMDc1ODlCMDBDRDMxNjEgLyogVGVzdE9i
amVjdC5jcHAgKi87IH07CiAJCTIzQkNCODkwMEVBNTc2MjMwMDNDNjI4OSAvKiBPcGVuR0wuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjNCQ0I4OEYwRUE1NzYyMzAwM0M2Mjg5IC8qIE9wZW5HTC5mcmFtZXdvcmsgKi87IH07CisJCTM4
RTc2MzA0MEY4NkNEMjkwMDA0ODQ4NyAvKiBMb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4RTc2MzAxMEY4
NkNDRjUwMDA0ODQ4NyAvKiBMb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJ
NURCOUFDOTcwRjcyMkMzNjAwNjg0NjQxIC8qIEFIRU1fX19fLlRURiBpbiBDb3B5IEZvbnQgRmls
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE3RjEwQzIwQ0IzQzEwMzAw
MDNCREM5IC8qIEFIRU1fX19fLlRURiAqLzsgfTsKIAkJNURCOUFDOTgwRjcyMkMzNjAwNjg0NjQx
IC8qIFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3MTBEQUMzQ0I2MDBDOEI0RTUgLyog
V2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGYgKi87IH07CiAJCTVEQjlBQzk5MEY3MjJDMzYwMDY4
NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMjAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzIwREFDM0NCNjAwQzhCNEU1
IC8qIFdlYktpdFdlaWdodFdhdGNoZXIyMDAudHRmICovOyB9OwpAQCAtMTc4LDYgKzE3OSw4IEBA
CiAJCTM3NUYwOTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0
ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7
IG5hbWUgPSBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZjsgcGF0aCA9IGZvbnRzL1dlYktpdFdl
aWdodFdhdGNoZXI3MDAudHRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzVGMDk3
ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50dGYgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gV2Vi
S2l0V2VpZ2h0V2F0Y2hlcjgwMC50dGY7IHBhdGggPSBmb250cy9XZWJLaXRXZWlnaHRXYXRjaGVy
ODAwLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc1RjA5NzkwREFDM0NCNjAw
QzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI5MDAudHRmICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IFdlYktpdFdlaWdodFdh
dGNoZXI5MDAudHRmOyBwYXRoID0gZm9udHMvV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGY7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM4RTc2MzAwMEY4NkNDRjUwMDA0ODQ4NyAvKiBM
b2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5oOyBwYXRoID0gbWFjL0xvZ2dpbmdXZWJB
bmFseXNpc0RlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM4RTc2MzAx
MEY4NkNDRjUwMDA0ODQ4NyAvKiBMb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IExvZ2dpbmdXZWJBbmFseXNpc0RlbGVn
YXRlLm1tOyBwYXRoID0gbWFjL0xvZ2dpbmdXZWJBbmFseXNpc0RlbGVnYXRlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzM1NDM1RjAzRDc1NTAyMDA4NjM1Q0UgLyogV2ViS2l0
LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gV2ViS2l0LmZyYW1ld29yazsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTMzQkY1QTkwRjkzRkE1QzAwMEYwNDQxIC8q
IFBsYWluVGV4dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
UGxhaW5UZXh0Q29udHJvbGxlci5oOyBwYXRoID0gbWFjL1BsYWluVGV4dENvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzQkY1QUEwRjkzRkE1QzAwMEYwNDQxIC8q
IFBsYWluVGV4dENvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBQbGFpblRleHRDb250cm9sbGVyLm1tOyBwYXRoID0gbWFjL1BsYWluVGV4dENvbnRy
b2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjgsNiArMzcxLDggQEAK
IAkJMTQyMkEyNzUwQUY2RjRCRDAwRTFBODgzIC8qIERlbGVnYXRlcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMzhFNzYzMDAwRjg2Q0NGNTAwMDQ4NDg3
IC8qIExvZ2dpbmdXZWJBbmFseXNpc0RlbGVnYXRlLmggKi8sCisJCQkJMzhFNzYzMDEwRjg2Q0NG
NTAwMDQ4NDg3IC8qIExvZ2dpbmdXZWJBbmFseXNpc0RlbGVnYXRlLm1tICovLAogCQkJCUJDQTE4
QjU3MEM5QjA4QzIwMDExNDM2OSAvKiBFZGl0aW5nRGVsZWdhdGUuaCAqLywKIAkJCQlCQ0ExOEI1
ODBDOUIwOEMyMDAxMTQzNjkgLyogRWRpdGluZ0RlbGVnYXRlLm1tICovLAogCQkJCUJDQTE4QjU5
MEM5QjA4QzIwMDExNDM2OSAvKiBGcmFtZUxvYWREZWxlZ2F0ZS5oICovLApAQCAtNjI3LDYgKzYz
Miw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkzOEU3NjMwNDBGODZDRDI5MDAwNDg0
ODcgLyogTG9nZ2luZ1dlYkFuYWx5c2lzRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlC
Q0QwOEIzQTBFMTA1N0VGMDBBN0QwQzEgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNEMDhCNzEwRTEwNTlEMjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTI0RTEwRTJEOTQ1MTAw
MUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0g
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXgg
NWIyZmYzMC4uMTQ5YjY5NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAiRnJhbWVMb2Fk
RGVsZWdhdGUuaCIKICNpbXBvcnQgIkphdmFTY3JpcHRUaHJlYWRpbmcuaCIKICNpbXBvcnQgIkxh
eW91dFRlc3RDb250cm9sbGVyLmgiCisjaW1wb3J0ICJMb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiTmF2aWdhdGlvbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIk9iakNQbHVn
aW4uaCIKICNpbXBvcnQgIk9iakNQbHVnaW5GdW5jdGlvbi5oIgpAQCAtMTEzLDYgKzExNCw3IEBA
IHN0YXRpYyBGcmFtZUxvYWREZWxlZ2F0ZSAqZnJhbWVMb2FkRGVsZWdhdGU7CiBzdGF0aWMgVUlE
ZWxlZ2F0ZSAqdWlEZWxlZ2F0ZTsKIHN0YXRpYyBFZGl0aW5nRGVsZWdhdGUgKmVkaXRpbmdEZWxl
Z2F0ZTsKIHN0YXRpYyBSZXNvdXJjZUxvYWREZWxlZ2F0ZSAqcmVzb3VyY2VMb2FkRGVsZWdhdGU7
CitzdGF0aWMgTG9nZ2luZ1dlYkFuYWx5c2lzRGVsZWdhdGUgKmFuYWx5c2lzRGVsZWdhdGU7CiBQ
b2xpY3lEZWxlZ2F0ZSAqcG9saWN5RGVsZWdhdGU7CiAKIHN0YXRpYyBpbnQgZHVtcFBpeGVsczsK
QEAgLTQyNiw2ICs0MjgsNyBAQCBzdGF0aWMgdm9pZCBhbGxvY2F0ZUdsb2JhbENvbnRyb2xsZXJz
KCkKICAgICBlZGl0aW5nRGVsZWdhdGUgPSBbW0VkaXRpbmdEZWxlZ2F0ZSBhbGxvY10gaW5pdF07
CiAgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBbW1Jlc291cmNlTG9hZERlbGVnYXRlIGFsbG9j
XSBpbml0XTsKICAgICBwb2xpY3lEZWxlZ2F0ZSA9IFtbUG9saWN5RGVsZWdhdGUgYWxsb2NdIGlu
aXRdOworICAgIGFuYWx5c2lzRGVsZWdhdGUgPSBbW0xvZ2dpbmdXZWJBbmFseXNpc0RlbGVnYXRl
IGFsbG9jXSBpbml0XTsKIH0KIAogLy8gT2JqQysrIGRvZW5zJ3Qgc2VlbSB0byBsZXQgbWUgcGFz
cyBOU09iamVjdComIHNhZGx5LgpAQCAtNDQzLDYgKzQ0Niw3IEBAIHN0YXRpYyB2b2lkIHJlbGVh
c2VHbG9iYWxDb250cm9sbGVycygpCiAgICAgcmVsZWFzZUFuZFplcm8oJnJlc291cmNlTG9hZERl
bGVnYXRlKTsKICAgICByZWxlYXNlQW5kWmVybygmdWlEZWxlZ2F0ZSk7CiAgICAgcmVsZWFzZUFu
ZFplcm8oJnBvbGljeURlbGVnYXRlKTsKKyAgICByZWxlYXNlQW5kWmVybygmYW5hbHlzaXNEZWxl
Z2F0ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVHbG9iYWxzRnJvbUNvbW1hbmRMaW5l
T3B0aW9ucyhpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQpAQCAtNTQxLDggKzU0NSw5IEBA
IHZvaWQgZHVtcFJlbmRlclRyZWUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKICAgICAg
ICAgcnVuVGVzdGluZ1NlcnZlckxvb3AoKTsKICAgICB9IGVsc2UgewogICAgICAgICBwcmludFNl
cGFyYXRvcnMgPSAob3B0aW5kIDwgYXJnYy0xIHx8IChkdW1wUGl4ZWxzICYmIGR1bXBUcmVlKSk7
Ci0gICAgICAgIGZvciAoaW50IGkgPSBvcHRpbmQ7IGkgIT0gYXJnYzsgKytpKQorICAgICAgICBm
b3IgKGludCBpID0gb3B0aW5kOyBpICE9IGFyZ2M7ICsraSkgewogICAgICAgICAgICAgcnVuVGVz
dChhcmd2W2ldKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmICh0aHJlYWRlZCkKQEAgLTk5
NSw3ICsxMDAwLDkgQEAgdm9pZCBkdW1wKCkKICAgICAKICAgICBpZiAoZHVtcFBpeGVscyAmJiAh
ZHVtcEFzVGV4dCkKICAgICAgICAgZHVtcFdlYlZpZXdBc1BpeGVsc0FuZENvbXBhcmVXaXRoRXhw
ZWN0ZWQoZ0xheW91dFRlc3RDb250cm9sbGVyLT5leHBlY3RlZFBpeGVsSGFzaCgpKTsKLSAgICAK
KworICAgIFthbmFseXNpc0RlbGVnYXRlIGR1bXBBZ2dyZWdhdGVEYXRhXTsKKwogICAgIHB1dHMo
IiNFT0YiKTsgICAvLyB0ZXJtaW5hdGUgdGhlIChwb3NzaWJseSBlbXB0eSkgcGl4ZWxzIGJsb2Nr
CiAKICAgICBmZmx1c2goc3Rkb3V0KTsKQEAgLTEwMzksNiArMTA0Niw4IEBAIHN0YXRpYyB2b2lk
IHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpCiAgICAgW1ttYWlu
RnJhbWUgd2ViVmlld10gc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOllFU107CiAgICAgW1tb
bWFpbkZyYW1lIHdlYlZpZXddIGluc3BlY3Rvcl0gc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJs
ZWQ6Tk9dOwogCisgICAgW21haW5GcmFtZSBzZXRXZWJBbmFseXNpc0RlbGVnYXRlOiAoV2ViQW5h
bHlzaXNEZWxlZ2F0ZSopYW5hbHlzaXNEZWxlZ2F0ZV07CisKICAgICBbV2ViVmlldyBfc2V0VXNl
c1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3I6WUVTXTsKIH0KIApAQCAtMTEwNSw2ICsxMTE0LDcgQEAg
c3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RQYXRoT3JVUkwpCiAgICAgTlNB
dXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsK
ICAgICBbbWFpbkZyYW1lIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
dXJsXV07CiAgICAgW3Bvb2wgcmVsZWFzZV07CisKICAgICB3aGlsZSAoIWRvbmUpIHsKICAgICAg
ICAgcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwogICAgICAgICBbW05T
UnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZv
cmVEYXRlOltOU0RhdGUgZGlzdGFudFBhc3RdXTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9Mb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5oIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0xvZ2dpbmdXZWJBbmFseXNpc0RlbGVnYXRlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJkOWE1MQotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Mb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0
ZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPHZlY3Rvcj4KKworZW51bSBFVkVOVF9U
WVBFIHsKKwlMQVlPVVQgPSAwLAorCVJFQ0FMQ19TVFlMRSwKKwlQQUlOVCwKKwlIVE1MX1dSSVRF
LAorCU5VTV9FVkVOVF9UWVBFUworfTsKKworc3RydWN0IFBlbmRpbmdFdmVudCB7CisJUGVuZGlu
Z0V2ZW50KGRvdWJsZSBzdGFydFRpbWVfLCBFVkVOVF9UWVBFIHR5cGVfKQorCTogc3RhcnRUaW1l
KHN0YXJ0VGltZV8pLAorCWR1cmF0aW9uKDAuMCksCisJdHlwZSh0eXBlXykgeworICAgIH0KKwkK
Kwlkb3VibGUgc3RhcnRUaW1lOworCWRvdWJsZSBkdXJhdGlvbjsKKwlFVkVOVF9UWVBFIHR5cGU7
Cit9OworCitAaW50ZXJmYWNlIExvZ2dpbmdXZWJBbmFseXNpc0RlbGVnYXRlIDogTlNPYmplY3Qg
eworCXN0ZDo6dmVjdG9yPFBlbmRpbmdFdmVudD4qIHBlbmRpbmc7CisJZG91YmxlIHRvdGFsRHVy
YXRpb25zW05VTV9FVkVOVF9UWVBFU107CisJaW50IGNvdW50W05VTV9FVkVOVF9UWVBFU107Cit9
CistICh2b2lkKWxheW91dFN0YXJ0aW5nOihkb3VibGUpIHRpbWVzdGFtcDsKKy0gKHZvaWQpcmVj
YWxjU3R5bGVTdGFydGluZzooZG91YmxlKSB0aW1lc3RhbXA7CistICh2b2lkKXBhaW50U3RhcnRp
bmc6KGRvdWJsZSkgdGltZXN0YW1wOworLSAodm9pZClodG1sV3JpdGVTdGFydGluZzooZG91Ymxl
KSB0aW1lc3RhbXA7CistICh2b2lkKWZpbmlzaGVkOihkb3VibGUpIHRpbWVzdGFtcDsKKy0gKHZv
aWQpZHVtcEFnZ3JlZ2F0ZURhdGE7CisKK0BlbmQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9Mb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tbSBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Mb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmViMzgzCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xvZ2dpbmdXZWJBbmFseXNpc0RlbGVn
YXRlLm1tCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJMb2dnaW5nV2ViQW5hbHlzaXNE
ZWxlZ2F0ZS5oIgorI2ltcG9ydCA8dmVjdG9yPgorCitzdGF0aWMgY29uc3QgY2hhciogZXZlbnRU
eXBlU3RyaW5nc1tdID0geworICAgICJsYXlvdXQiLAorCSJyZWNhbGNfc3R5bGUiLAorICAgICJw
YWludCIsCisJImh0bWxfd3JpdGUiCit9OworCitAaW1wbGVtZW50YXRpb24gTG9nZ2luZ1dlYkFu
YWx5c2lzRGVsZWdhdGUKKworLSAoaWQpaW5pdAoreworCXNlbGYgPSBbc3VwZXIgaW5pdF07CisJ
cGVuZGluZyA9IG5ldyBzdGQ6OnZlY3RvcjxQZW5kaW5nRXZlbnQ+KCk7CisJZm9yIChpbnQgaT0w
OyBpPE5VTV9FVkVOVF9UWVBFUzsgKytpKSB7CisJCXRvdGFsRHVyYXRpb25zW2ldID0gMC4wOwor
CQljb3VudFtpXSA9IDA7CisJfQorCXJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MK
K3sKKwlkZWxldGUgcGVuZGluZzsKKwlbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpbGF5
b3V0U3RhcnRpbmc6KGRvdWJsZSkgdGltZXN0YW1wCit7CisJUGVuZGluZ0V2ZW50IGV2dCh0aW1l
c3RhbXAsIExBWU9VVCk7CisJcGVuZGluZy0+cHVzaF9iYWNrKGV2dCk7CisJY291bnRbTEFZT1VU
XSsrOworfQorCistICh2b2lkKXJlY2FsY1N0eWxlU3RhcnRpbmc6KGRvdWJsZSkgdGltZXN0YW1w
Cit7CisJUGVuZGluZ0V2ZW50IGV2dCh0aW1lc3RhbXAsIFJFQ0FMQ19TVFlMRSk7CisJcGVuZGlu
Zy0+cHVzaF9iYWNrKGV2dCk7CisJY291bnRbUkVDQUxDX1NUWUxFXSsrOworfQorCistICh2b2lk
KXBhaW50U3RhcnRpbmc6KGRvdWJsZSkgdGltZXN0YW1wCit7CisJUGVuZGluZ0V2ZW50IGV2dCh0
aW1lc3RhbXAsIFBBSU5UKTsKKwlwZW5kaW5nLT5wdXNoX2JhY2soZXZ0KTsKKwljb3VudFtQQUlO
VF0rKzsKK30KKworLSAodm9pZClodG1sV3JpdGVTdGFydGluZzooZG91YmxlKSB0aW1lc3RhbXAK
K3sKKwlQZW5kaW5nRXZlbnQgZXZ0KHRpbWVzdGFtcCwgSFRNTF9XUklURSk7CisJcGVuZGluZy0+
cHVzaF9iYWNrKGV2dCk7CisJY291bnRbSFRNTF9XUklURV0rKzsKK30KKworLSAodm9pZClmaW5p
c2hlZDooZG91YmxlKSB0aW1lc3RhbXAKK3sKKwlQZW5kaW5nRXZlbnQgZXZ0ID0gcGVuZGluZy0+
YmFjaygpOworCXBlbmRpbmctPnBvcF9iYWNrKCk7CisJZG91YmxlIGR1cmF0aW9uID0gZXZ0LmR1
cmF0aW9uICsgdGltZXN0YW1wIC0gZXZ0LnN0YXJ0VGltZTsKKwl0b3RhbER1cmF0aW9uc1tldnQu
dHlwZV0gKz0gZHVyYXRpb247CisJY291bnRbZXZ0LnR5cGVdKys7CisJaWYgKCFwZW5kaW5nLT5l
bXB0eSgpKSB7CisJCXBlbmRpbmctPmJhY2soKS5kdXJhdGlvbiAtPSBkdXJhdGlvbjsKKwl9Cit9
CisKKy0gKHZvaWQpZHVtcEFnZ3JlZ2F0ZURhdGEKK3sKKwlwcmludGYoIlN0YXRzOiAiKTsKKwlm
b3IgKGludCBpPTA7IGk8TlVNX0VWRU5UX1RZUEVTOyArK2kpIHsKKwkJcHJpbnRmKCIlc1x0JWZc
dCVkfCIsIGV2ZW50VHlwZVN0cmluZ3NbaV0sIHRvdGFsRHVyYXRpb25zW2ldICogMTAwMC4wLCBj
b3VudFtpXSk7CisJCXRvdGFsRHVyYXRpb25zW2ldID0gMC4wOworCQljb3VudFtpXSA9IDA7CisJ
fQorCXByaW50ZigiXG4iKTsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9ydW4td2Via2l0LXRlc3RzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRl
c3RzCmluZGV4IDczMDBkZjMuLjNkZGZhZTMgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvcnVuLXdlYmtpdC10ZXN0cworKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQt
dGVzdHMKQEAgLTg4LDYgKzg4LDcgQEAgc3ViIHN0cmlwRXh0ZW5zaW9uKCQpOwogc3ViIGlzVGV4
dE9ubHlUZXN0KCQpOwogc3ViIGV4cGVjdGVkRGlyZWN0b3J5Rm9yVGVzdCgkOyQ7JCk7CiBzdWIg
Y291bnRGaW5pc2hlZFRlc3QoJCQkJCk7CitzdWIgYWdncmVnYXRlU3RhdHMoJCk7CiBzdWIgdGVz
dENyYXNoZWRPclRpbWVkT3V0KCQkJCQkKTsKIHN1YiBzYW1wbGVEdW1wVG9vbCgpOwogc3ViIHBy
aW50RmFpbHVyZU1lc3NhZ2VGb3JUZXN0KCQkKTsKQEAgLTE0MCw2ICsxNDEsNyBAQCBteSAkcmFu
ZG9taXplVGVzdHMgPSAwOwogbXkgJG1lcmdlRGVwdGg7CiBteSAkdGltZW91dFNlY29uZHMgPSAx
NTsKIG15ICR1c2VSZW1vdGVMaW5rc1RvVGVzdHMgPSAwOworbXkgJHNob3VsZER1bXBTdGF0cyA9
IDA7CiBteSBAbGVha3NGaWxlbmFtZXM7CiAKICMgRGVmYXVsdCB0byAtLW5vLWh0dHAgZm9yIFF0
LCBHdGsgYW5kIHd4IGZvciBub3cuCkBAIC0yMjAsNiArMjIyLDcgQEAgVXNhZ2U6ICRwcm9ncmFt
TmFtZSBbb3B0aW9uc10gW3Rlc3RkaXJ8dGVzdHBhdGggLi4uXQogICAtdnwtLXZlcmJvc2UgICAg
ICAgICAgICAgICAgICAgIE1vcmUgdmVyYm9zZSBvdXRwdXQgKG92ZXJyaWRlcyAtLXF1aWV0KQog
ICAtbXwtLW1lcmdlLWxlYWstZGVwdGggYXJnICAgICAgIE1lcmdlcyBsZWFrIGNhbGxTdGFja3Mg
YW5kIHByaW50cyB0aGUgbnVtYmVyIG9mIHVuaXF1ZSBsZWFrcyBiZW5lYXRoIGEgY2FsbHN0YWNr
IGRlcHRoIG9mIGFyZy4gIERlZmF1bHRzIHRvIDUuCiAgIC0tdXNlLXJlbW90ZS1saW5rcy10by10
ZXN0cyAgICAgTGluayB0byB0ZXN0IGZpbGVzIHdpdGhpbiB0aGUgU1ZOIHJlcG9zaXRvcnkgaW4g
dGhlIHJlc3VsdHMuCisgIC0tZHVtcC1zdGF0cyAgICAgICAgICAgICAgICAgICAgRHVtcCBhZ2dy
ZWdhdGUgc3RhdHMgaW5mb3JtYXRpb24gZnJvbSB0aGUgcmVuZGVyZXIKIEVPRgogCiBzZXRDb25m
aWd1cmF0aW9uKCk7CkBAIC0yNTcsNiArMjYwLDcgQEAgbXkgJGdldE9wdGlvbnNSZXN1bHQgPSBH
ZXRPcHRpb25zKAogICAgICdtZXJnZS1sZWFrLWRlcHRofG06NScgPT4gXCRtZXJnZURlcHRoLAog
ICAgICd0aW1lb3V0PWknID0+IFwkdGltZW91dFNlY29uZHMsCiAgICAgJ3VzZS1yZW1vdGUtbGlu
a3MtdG8tdGVzdHMnID0+IFwkdXNlUmVtb3RlTGlua3NUb1Rlc3RzLAorICAgICdkdW1wLXN0YXRz
JyA9PiBcJHNob3VsZER1bXBTdGF0cywKICk7CiAKIGlmICghJGdldE9wdGlvbnNSZXN1bHQgfHwg
JHNob3dIZWxwKSB7CkBAIC0zNDIsNiArMzQ2LDkgQEAgaWYgKCRwaXhlbFRlc3RzKSB7CiBteSBA
dGVzdHMgPSAoKTsKIG15ICV0ZXN0VHlwZSA9ICgpOwogCitteSAlc3RhdHNUaW1lID0gKCk7Citt
eSAlc3RhdHNDb3VudCA9ICgpOworCiBzeXN0ZW0gImxuIiwgIi1zIiwgJHRlc3REaXJlY3Rvcnks
ICIvdG1wL0xheW91dFRlc3RzIiB1bmxlc3MgLXggIi90bXAvTGF5b3V0VGVzdHMiOwogCiBteSAl
aWdub3JlZEZpbGVzID0gKCk7CkBAIC02ODEsNiArNjg4LDggQEAgZm9yIG15ICR0ZXN0IChAdGVz
dHMpIHsKICAgICAgICAgfSBlbHNpZiAoL0NvbnRlbnQtTGVuZ3RoOiAoXGQrKVxzKi8pIHsKICAg
ICAgICAgICAgICRhY3R1YWxQTkdTaXplID0gJDE7CiAgICAgICAgICAgICByZWFkKElOLCAkYWN0
dWFsUE5HLCAkYWN0dWFsUE5HU2l6ZSk7CisgICAgICAgIH0gZWxzaWYgKC9TdGF0czogKC4qKS8p
IHsKKyAgICAgICAgICAgIGFnZ3JlZ2F0ZVN0YXRzKCQxKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtOTM1LDYgKzk0NCwxMiBAQCBmb3IgbXkgJHRlc3QgKEB0ZXN0cykgewogfQogcHJpbnRmICJc
biUwLjJmcyB0b3RhbCB0ZXN0aW5nIHRpbWVcbiIsICh0aW1lIC0gJG92ZXJhbGxTdGFydFRpbWUp
IC4gIiI7CiAKK2lmICgkc2hvdWxkRHVtcFN0YXRzKSB7CisgICAgZm9yZWFjaCBteSAkdHlwZSAo
a2V5cyAlc3RhdHNUaW1lKSB7CisgICAgICAgIHByaW50ZiAiJXMgdGltZSA9ICVmbXMgY291bnQg
PSAlZFxuIiwgJHR5cGUsICRzdGF0c1RpbWV7JHR5cGV9LCAkc3RhdHNDb3VudHskdHlwZX07Cisg
ICAgfQorfQorCiAhJGlzRHVtcFRvb2xPcGVuIHx8IGRpZSAiRmFpbGVkIHRvIGNsb3NlICRkdW1w
VG9vbE5hbWUuXG4iOwogCiBjbG9zZUhUVFBEKCk7CkBAIC0xMjkzLDcgKzEzMDgsNyBAQCBzdWIg
b3BlbkR1bXBUb29sKCkKICAgICBpZiAoJHVzZVZhbGdyaW5kKSB7CiAgICAgICAgIHVuc2hpZnQg
QGFyZ3MsICJ2YWxncmluZCI7CiAgICAgfSAKLSAgICAKKwogICAgICRFTlZ7TWFsbG9jU3RhY2tM
b2dnaW5nfSA9IDEgaWYgJHNob3VsZENoZWNrTGVha3M7CiAgICAgJGR1bXBUb29sUElEID0gb3Bl
bjMoXCpPVVQsIFwqSU4sIFwqRVJST1IsIGxhdW5jaFdpdGhDdXJyZW50RW52KEBhcmdzKSkgb3Ig
ZGllICJGYWlsZWQgdG8gc3RhcnQgdG9vbDogJGR1bXBUb29sXG4iOwogICAgICRFTlZ7TWFsbG9j
U3RhY2tMb2dnaW5nfSA9IDAgaWYgJHNob3VsZENoZWNrTGVha3M7CkBAIC0xNTIyLDYgKzE1Mzcs
MTcgQEAgc3ViIGNvdW50RmluaXNoZWRUZXN0KCQkJCQpIHsKICAgICAkdGVzdFR5cGV7JHRlc3R9
ID0gJGlzVGV4dDsKIH0KIAorc3ViIGFnZ3JlZ2F0ZVN0YXRzKCQpCit7CisgICAgbXkgKCRzdGF0
cykgPSBAXzsKKworICAgIGZvciBteSAkZ3JwIChzcGxpdCgvXHwvLCAkc3RhdHMpKSB7CisgICAg
ICAgbXkgKCR0eXBlLCAkdGltZSwgJGNvdW50KSA9ICgkZ3JwID1+IC8oXHcrKVx0KFxkK1wuXGQr
KVx0KFxkKykvKTsKKyAgICAgICAkc3RhdHNUaW1leyR0eXBlfSArPSAkdGltZTsKKyAgICAgICAk
c3RhdHNDb3VudHskdHlwZX0gKz0gJGNvdW50OworICAgIH0KK30KKwogc3ViIHRlc3RDcmFzaGVk
T3JUaW1lZE91dCgkJCQkJCkKIHsKICAgICBteSAoJHRlc3QsICRiYXNlLCAkZGlkQ3Jhc2gsICRh
Y3R1YWwsICRlcnJvcikgPSBAXzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30205</attachid>
            <date>2009-05-11 15:07:23 -0700</date>
            <delta_ts>2009-08-25 09:46:24 -0700</delta_ts>
            <desc>Addresses some comments and rebases against r43514</desc>
            <filename>a_c_r43514.diff</filename>
            <type>text/plain</type>
            <size>53007</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGNhYTFlOC4uYzA4ZGE0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0wNC0zMCAgSmFtZXMgUm9iaW5z
b24gIDxqYW1lc3JAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRzIEFuYWx5c2lzQ2xpZW50IGluc3RydW1lbnRhdGlvbiBpbnRl
cmZhY2UgdG8gV2ViQ29yZSBhbmQgaW5zdHJ1bWVudHMgbGF5b3V0LCBzdHlsZSByZWNhbGN1bGF0
aW9uLCBwYWludGluZyBhbmQgaHRtbCB0b2tlbml6ZXIuICBBbHNvIHByb3ZpZGVzIGEgYmFzaWMg
Y29uc3VtZXIgb2YgdGhlIGRhdGEgaW4gRFJUIGFuZCBydW4td2Via2l0LXRlc3RzIHN1cHBvcnQg
Zm9yIGFnZ3JlZ2F0aW5nIHRpbWVzIHNwZW50IGluIHZhcmlvdXMgZmFjZXRzIHdoaWxlIHJ1bm5p
bmcgbGF5b3V0IHRlc3RzLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQg
T1IgQ0hBTkdFRAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6YW5hbHlzaXNDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0
eWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUb2tl
bml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6d3JpdGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9BbmFseXNpc0NsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFuYWx5c2lzQ2xpZW50Ojp+QW5hbHlzaXNDbGllbnQpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmFuYWx5c2lzQ2xpZW50KToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpzZXRBbmFseXNpc0NsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjphbmFseXNpc0NsaWVudCk6CisKIDIwMDktMDUtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBXaW5kb3dzIGJ1aWxkCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBhNWQzNTMuLjgwMjNiYjUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MTQsNiArNjE0LDcgQEAK
IAkJMzdBQ0NGNjkwREE0MTRFNzAwODlFNjAyIC8qIEZvbnREZXNjcmlwdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0FDQ0U2MjBEQTJBQTk2
MDA4OUU2MDIgLyogRm9udERlc2NyaXB0aW9uLmNwcCAqLzsgfTsKIAkJMzdGODE4RkQwRDY1NzYw
NjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGODE4RkIwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNv
cmVVUkxSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTM3RjgxOEZFMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2Uu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0Y4MThG
QzBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNlLm1tICovOyB9OworCQkzOEFG
N0Q3QzBGODNGOEM2MDBBN0JBOUEgLyogQW5hbHlzaXNDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4QUY3RDdCMEY4M0Y4QzYwMEE3QkE5QSAv
KiBBbmFseXNpc0NsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQxMDAyQ0NEMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNh
bGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAy
Q0NCMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsgfTsKIAkJNDEw
MDJDQ0UwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQzBGNjZFREVGMDA5
RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLzsgfTsKIAkJNDExMDQ2NDEwRkEyMjJB
NjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTA0NjNGMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3Jp
cHRFdmVudExpc3RlbmVyLmggKi87IH07CkBAIC01NTMzLDYgKzU1MzQsNyBAQAogCQkzN0FDQ0U2
MjBEQTJBQTk2MDA4OUU2MDIgLyogRm9udERlc2NyaXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnREZXNjcmlwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTM3RjgxOEZCMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVz
cG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVVSTFJlc3Bv
bnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RjgxOEZDMEQ2NTc2MDYwMDVF
MUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJDb3JlVVJMUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTM4QUY3RDdCMEY4M0Y4QzYwMEE3QkE5QSAvKiBBbmFseXNpc0NsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmFseXNpc0NsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0
RnVuY3Rpb25DYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZ1
bmN0aW9uQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQzBGNjZF
REVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMTA0NjNGMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExp
c3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEV2ZW50TGlz
dGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk3MTMsNiArOTcxNSw3IEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFDODFCOTU5MEU5NzMz
MDgwMDI2NkUwNyAvKiBmcm9udC1lbmQgKi8sCisJCQkJMzhBRjdEN0IwRjgzRjhDNjAwQTdCQTlB
IC8qIEFuYWx5c2lzQ2xpZW50LmggKi8sCiAJCQkJNDFGMDYxOEQwRjVGMDY5ODAwQTA3RUFDIC8q
IENvbnNvbGVNZXNzYWdlLmNwcCAqLywKIAkJCQk0MUYwNjE4QzBGNUYwNjk4MDBBMDdFQUMgLyog
Q29uc29sZU1lc3NhZ2UuaCAqLywKIAkJCQkxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5z
cGVjdG9yQ2xpZW50LmggKi8sCkBAIC0xNDYyOCw2ICsxNDYzMSw3IEBACiAJCQkJMjlBQUM1MUYw
RTUzOTYzQjAwOEY5QjNCIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjk4MDBDOTUwRTUyNEM4QjAwMDI1NTM2IC8qIEFjY2Vzc2liaWxp
dHlUYWJsZVJvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNERFNjkwRUE3NUMxRTAwMjNDQ0Q2
IC8qIEFjdGl2ZURPTU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzhBRjdEN0MwRjgzRjhD
NjAwQTdCQTlBIC8qIEFuYWx5c2lzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJB
QjBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTZG
RTExMjBFNkUxREE3MDBCRjYwODggLyogQW5pbWF0aW9uQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzE2RkUxMTQwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDhkMDVhMjIuLjU5OGZjYzUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogCisjaW5jbHVkZSAiQW5hbHlzaXNDbGllbnQuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkF0dHIuaCIK
QEAgLTEwNjEsNiArMTA2MiwxMSBAQCBQYWdlKiBEb2N1bWVudDo6cGFnZSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlKCkgOiAwOyAgICAKIH0KIAorQW5hbHlzaXND
bGllbnQqIERvY3VtZW50OjphbmFseXNpc0NsaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
ZnJhbWUgPyBtX2ZyYW1lLT5hbmFseXNpc0NsaWVudCgpIDogMDsKK30KKwogU2V0dGluZ3MqIERv
Y3VtZW50OjpzZXR0aW5ncygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZnJhbWUgPyBtX2ZyYW1l
LT5zZXR0aW5ncygpIDogMDsKQEAgLTExMzcsNiArMTE0Myw5IEBAIHZvaWQgRG9jdW1lbnQ6OnJl
Y2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICBpZiAobV9pblN0eWxlUmVjYWxjKQog
ICAgICAgICByZXR1cm47IC8vIEd1YXJkIGFnYWluc3QgcmUtZW50cmFuY3kuIC1kd2gKIAorICAg
IGlmIChhbmFseXNpc0NsaWVudCgpKQorICAgICAgICBhbmFseXNpc0NsaWVudCgpLT53aWxsUmVj
YWxjU3R5bGUoKTsKKwogICAgIG1faW5TdHlsZVJlY2FsYyA9IHRydWU7CiAgICAgc3VzcGVuZFBv
c3RBdHRhY2hDYWxsYmFja3MoKTsKICAgICBpZiAodmlldygpKQpAQCAtMTIwOSw2ICsxMjE4LDkg
QEAgYmFpbF9vdXQ6CiAgICAgICAgIG1fY2xvc2VBZnRlclN0eWxlUmVjYWxjID0gZmFsc2U7CiAg
ICAgICAgIGltcGxpY2l0Q2xvc2UoKTsKICAgICB9CisKKyAgICBpZiAoYW5hbHlzaXNDbGllbnQo
KSkKKyAgICAgICAgYW5hbHlzaXNDbGllbnQoKS0+ZGlkUmVjYWxjU3R5bGUoKTsKIH0KIAogdm9p
ZCBEb2N1bWVudDo6dXBkYXRlU3R5bGVJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAwNzY4MDkzLi42MWVk
NTkxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
Y2xhc3MgQXR0cjsKICAgICBjbGFzcyBBWE9iamVjdENhY2hlOworICAgIGNsYXNzIEFuYWx5c2lz
Q2xpZW50OwogICAgIGNsYXNzIENEQVRBU2VjdGlvbjsKICAgICBjbGFzcyBDYWNoZWRDU1NTdHls
ZVNoZWV0OwogICAgIGNsYXNzIENhY2hlZFNjcmlwdDsKQEAgLTM4NSw2ICszODYsNyBAQCBwdWJs
aWM6CiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfSAvLyBjYW4g
YmUgTlVMTAogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKICAgICBTZXR0
aW5ncyogc2V0dGluZ3MoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKKyAgICBBbmFseXNpc0NsaWVu
dCogYW5hbHlzaXNDbGllbnQoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKIAogICAgIFBhc3NSZWZQ
dHI8UmFuZ2U+IGNyZWF0ZVJhbmdlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
VG9rZW5pemVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAppbmRleCAyZWQ3
MmYyLi4yYTJmOGYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogCisjaW5jbHVk
ZSAiQW5hbHlzaXNDbGllbnQuaCIKICNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJD
YWNoZS5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgpAQCAtMTYyOCw2ICsxNjI5LDkgQEAg
dm9pZCBIVE1MVG9rZW5pemVyOjp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHN0ciwgYm9v
bCBhcHBlbmREYXRhKQogICAgICAgICBwcmludGYoIkJlZ2lubmluZyB3cml0ZSBhdCB0aW1lICVk
XG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKICAgICAKKyAgICBpZiAobV9kb2Mt
PmFuYWx5c2lzQ2xpZW50KCkpCisgICAgICAgIG1fZG9jLT5hbmFseXNpc0NsaWVudCgpLT53aWxs
SHRtbFdyaXRlKCk7CisKICAgICBpbnQgcHJvY2Vzc2VkQ291bnQgPSAwOwogICAgIGRvdWJsZSBz
dGFydFRpbWUgPSBjdXJyZW50VGltZSgpOwogCkBAIC0xNzUxLDcgKzE3NTUsMTAgQEAgdm9pZCBI
VE1MVG9rZW5pemVyOjp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHN0ciwgYm9vbCBhcHBl
bmREYXRhKQogICAgIGlmICghbV9kb2MtPm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYo
IkVuZGluZyB3cml0ZSBhdCB0aW1lICVkXG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5k
aWYKLSAgICAKKworICAgIGlmIChtX2RvYy0+YW5hbHlzaXNDbGllbnQoKSkKKyAgICAgICAgbV9k
b2MtPmFuYWx5c2lzQ2xpZW50KCktPmRpZEh0bWxXcml0ZSgpOworCiAgICAgbV9pbldyaXRlID0g
d2FzSW5Xcml0ZTsKIAogICAgIG1fc3RhdGUgPSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0FuYWx5c2lzQ2xpZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9BbmFseXNpc0Ns
aWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYmY2M2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9BbmFseXNpc0NsaWVudC5oCkBAIC0wLDAg
KzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEFuYWx5c2lzQ2xpZW50X2gKKyNkZWZpbmUgQW5hbHlzaXNDbGllbnRf
aAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgQW5hbHlzaXNDbGllbnQgeworICAg
IHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+QW5hbHlzaXNDbGllbnQoKSB7fQorCisgICAgICAg
IHZpcnR1YWwgdm9pZCB3aWxsTGF5b3V0KCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
TGF5b3V0KCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlY2FsY1N0eWxlKCkgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjYWxjU3R5bGUoKSA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsUGFpbnQoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQYWlu
dCgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxIdG1sV3JpdGUoKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRIdG1sV3JpdGUoKSA9IDA7CisgICAgfTsKK30KKworI2VuZGlm
IC8vICFkZWZpbmVkKEFuYWx5c2lzQ2xpZW50X2gpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBlMWI3OGFmLi5jODQ5OTA2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKQEAgLTE1NjQsNiArMTU2NCwxMSBAQCBQYWdlKiBGcmFtZTo6cGFnZSgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fcGFnZTsKIH0KIAorQW5hbHlzaXNDbGllbnQqIEZyYW1lOjphbmFseXNp
c0NsaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZSA/IG1fcGFnZS0+YW5hbHlzaXND
bGllbnQoKSA6IDA7Cit9CisKIEV2ZW50SGFuZGxlciogRnJhbWU6OmV2ZW50SGFuZGxlcigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuICZtX2V2ZW50SGFuZGxlcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9GcmFtZS5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggZDI4MmRhZC4uZDgwMTg1
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKQEAgLTYyLDYgKzYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSEJJVE1BUF9fKiBIQklUTUFQ
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFuYWx5c2lzQ2xpZW50OwogY2xhc3Mg
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBFZGl0b3I7CiBjbGFzcyBFdmVudEhh
bmRsZXI7CkBAIC05OCw2ICs5OSw3IEBAIHB1YmxpYzoKIAogICAgIFBhZ2UqIHBhZ2UoKSBjb25z
dDsKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCgpIGNvbnN0OworICAg
IEFuYWx5c2lzQ2xpZW50KiBhbmFseXNpc0NsaWVudCgpIGNvbnN0OwogCiAgICAgdm9pZCBwYWdl
RGVzdHJveWVkKCk7CiAgICAgdm9pZCBkaXNjb25uZWN0T3duZXJFbGVtZW50KCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCmluZGV4IDcyOTE1MDcuLjI1ZmNlZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgi
CisjaW5jbHVkZSAiQW5hbHlzaXNDbGllbnQuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9y
LmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCkBA
IC00NjgsNiArNDY5LDkgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJl
ZSkKICAgICBpZiAoaXNQYWludGluZygpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9m
cmFtZS0+YW5hbHlzaXNDbGllbnQoKSkKKyAgICAgICAgbV9mcmFtZS0+YW5hbHlzaXNDbGllbnQo
KS0+d2lsbExheW91dCgpOworCiAgICAgaWYgKCFhbGxvd1N1YnRyZWUgJiYgbV9sYXlvdXRSb290
KSB7CiAgICAgICAgIG1fbGF5b3V0Um9vdC0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQo
ZmFsc2UpOwogICAgICAgICBtX2xheW91dFJvb3QgPSAwOwpAQCAtNjQ5LDYgKzY1Myw5IEBAIHZv
aWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgICAgIEFTU0VSVCht
X2VucXVldWVFdmVudHMpOwogICAgIH0KIAorICAgIGlmIChtX2ZyYW1lLT5hbmFseXNpc0NsaWVu
dCgpKQorICAgICAgICBtX2ZyYW1lLT5hbmFseXNpc0NsaWVudCgpLT5kaWRMYXlvdXQoKTsKKwog
ICAgIG1fbmVzdGVkTGF5b3V0Q291bnQtLTsKIH0KIApAQCAtMTMyOCw2ICsxMzM1LDkgQEAgdm9p
ZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQogICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAorICAg
IGlmIChtX2ZyYW1lLT5hbmFseXNpc0NsaWVudCgpKQorICAgICAgICBtX2ZyYW1lLT5hbmFseXNp
c0NsaWVudCgpLT53aWxsUGFpbnQoKTsKKwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1l
KCktPmRvY3VtZW50KCk7CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xMzg0LDYgKzEzOTQsOSBAQCB2
b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiAKICAgICBpZiAoaXNUb3BMZXZlbFBhaW50ZXIpCiAgICAgICAgIHNDdXJy
ZW50UGFpbnRUaW1lU3RhbXAgPSAwOworCisgICAgaWYgKG1fZnJhbWUtPmFuYWx5c2lzQ2xpZW50
KCkpCisgICAgICAgIG1fZnJhbWUtPmFuYWx5c2lzQ2xpZW50KCktPmRpZFBhaW50KCk7CiB9CiAK
IHZvaWQgRnJhbWVWaWV3OjpzZXRQYWludFJlc3RyaWN0aW9uKFBhaW50UmVzdHJpY3Rpb24gcHIp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggMjE2NjBlZC4uNzAxMDcxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTI5LDYgKzEyOSw3IEBAIFBhZ2U6
OlBhZ2UoQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQsIENvbnRleHRNZW51Q2xpZW50KiBjb250
ZXh0TWVudUNsaWVudCwgRWRpCiAgICAgLCBtX2RlYnVnZ2VyKDApCiAgICAgLCBtX2N1c3RvbUhU
TUxUb2tlbml6ZXJUaW1lRGVsYXkoLTEpCiAgICAgLCBtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVu
a1NpemUoLTEpCisgICAgLCBtX2FuYWx5c2lzQ2xpZW50KDApCiB7CiAgICAgaWYgKCFhbGxQYWdl
cykgewogICAgICAgICBhbGxQYWdlcyA9IG5ldyBIYXNoU2V0PFBhZ2UqPjsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGVlZGQyNGMu
LjVhZmIxNWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvV2ViQ29yZS9w
YWdlL1BhZ2UuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCisgICAgY2xhc3MgQW5hbHlzaXNDbGllbnQ7CiAgICAgY2xhc3MgQ2hyb21l
OwogICAgIGNsYXNzIENocm9tZUNsaWVudDsKICAgICBjbGFzcyBDb250ZXh0TWVudUNsaWVudDsK
QEAgLTE5OCw2ICsxOTksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0
SmF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkKGJvb2wpOwogICAgICAgICBib29sIGphdmFTY3JpcHRV
UkxzQXJlQWxsb3dlZCgpIGNvbnN0OwogCisgICAgICAgIHZvaWQgc2V0QW5hbHlzaXNDbGllbnQo
QW5hbHlzaXNDbGllbnQqIGNsaWVudCkgeyBtX2FuYWx5c2lzQ2xpZW50ID0gY2xpZW50OyB9Cisg
ICAgICAgIEFuYWx5c2lzQ2xpZW50KiBhbmFseXNpc0NsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
YW5hbHlzaXNDbGllbnQ7IH0KICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRHcm91cCgp
OwogCkBAIC0yNTgsNiArMjYxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShX
TUwpCiAgICAgICAgIE93blB0cjxXTUxQYWdlU3RhdGU+IG1fd21sUGFnZVN0YXRlOwogI2VuZGlm
CisKKyAgICAgICAgQW5hbHlzaXNDbGllbnQqIG1fYW5hbHlzaXNDbGllbnQ7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L0NoYW5nZUxvZyBiL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggOWFkNjM2Ni4uMWUwY2I5NSAxMDA2NDQKLS0tIGEvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDkt
MDQtMzAgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBBbmFseXNpc0NsaWVudCBp
bnN0cnVtZW50YXRpb24gaW50ZXJmYWNlIHRvIFdlYkNvcmUgYW5kIGluc3RydW1lbnRzIGxheW91
dCwgc3R5bGUgcmVjYWxjdWxhdGlvbiwgcGFpbnRpbmcgYW5kIGh0bWwgdG9rZW5pemVyLiAgQWxz
byBwcm92aWRlcyBhIGJhc2ljIGNvbnN1bWVyIG9mIHRoZSBkYXRhIGluIERSVCBhbmQgcnVuLXdl
YmtpdC10ZXN0cyBzdXBwb3J0IGZvciBhZ2dyZWdhdGluZyB0aW1lcyBzcGVudCBpbiB2YXJpb3Vz
IGZhY2V0cyB3aGlsZSBydW5uaW5nIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDA5LTA1LTEwICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWlu
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIxMWMwYmQuLjNj
NTEwZjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTczLDYg
KzczLDEwIEBACiAJCTIyNkU5RTZBMDlEMEFBODIwMEYzQTJCQyAvKiBXZWJOZXRzY2FwZURlcHJl
Y2F0ZWRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDIyNkU5RTY4MDlEMEFBODIwMEYzQTJCQyAvKiBXZWJOZXRzY2FwZURlcHJlY2F0ZWRG
dW5jdGlvbnMuaCAqLzsgfTsKIAkJMjI2RTlFNkIwOUQwQUE4MjAwRjNBMkJDIC8qIFdlYk5ldHNj
YXBlRGVwcmVjYXRlZEZ1bmN0aW9ucy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjI2RTlFNjkwOUQwQUE4MjAwRjNBMkJDIC8qIFdlYk5ldHNjYXBlRGVw
cmVjYXRlZEZ1bmN0aW9ucy5jICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25v
LWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIjsgfTsgfTsKIAkJMjJGMjE5Q0MwOEQyMzY3MzAwMzBF
MDc4IC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyRjIxOUNCMDhEMjM2NzMwMDMwRTA3OCAvKiBXZWJC
YWNrRm9yd2FyZExpc3RQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMzhFNzVGREQwRjg0NEE0QTAwMDQ4NDg3IC8qIFdlYkFuYWx5c2lz
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
OEU3NUZEQzBGODQ0QTRBMDAwNDg0ODcgLyogV2ViQW5hbHlzaXNDbGllbnQuaCAqLzsgfTsKKwkJ
MzhFNzVGRTYwRjg0NTAzRjAwMDQ4NDg3IC8qIFdlYkFuYWx5c2lzRGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM4RTc1RkU1MEY4NDUwM0Yw
MDA0ODQ4NyAvKiBXZWJBbmFseXNpc0RlbGVnYXRlLmggKi87IH07CisJCTM4RTc2MDJDMEY4NDU0
NjMwMDA0ODQ4NyAvKiBXZWJBbmFseXNpc0RlbGVnYXRlLm0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzOEU3NjAyQjBGODQ1NDYzMDAwNDg0ODcgLyogV2Vi
QW5hbHlzaXNEZWxlZ2F0ZS5tICovOyB9OworCQkzOEU3NjAyRjBGODQ1ODExMDAwNDg0ODcgLyog
V2ViQW5hbHlzaXNDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzOEU3NjAyRTBGODQ1ODExMDAwNDg0ODcgLyogV2ViQW5hbHlzaXNDbGllbnQu
bW0gKi87IH07CiAJCTQ0MTc5M0E2MEUzNEVFMTUwMDU1RTFBRSAvKiBXZWJIVE1MUmVwcmVzZW50
YXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDQxNzkzQTUwRTM0RUUxNTAwNTVFMUFFIC8qIFdlYkhUTUxSZXByZXNlbnRhdGlvbklu
dGVybmFsLmggKi87IH07CiAJCTRCRjk5RjkwMEFFMDUwQkMwMDgxNUMyQiAvKiBXZWJFZGl0b3JD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRC
Rjk5RjhFMEFFMDUwQkMwMDgxNUMyQiAvKiBXZWJFZGl0b3JDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk0QkY5OUY5MTBBRTA1MEJDMDA4MTVDMkIgLyog
V2ViRWRpdG9yQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEJGOTlGOEYwQUUwNTBCQzAwODE1QzJCIC8qIFdlYkVkaXRvckNsaWVudC5tbSAq
LzsgfTsKQEAgLTQwMyw2ICs0MDcsMTAgQEAKIAkJMzUwODFEOTUwMkI2RDREODBBQ0EyQUNBIC8q
IFdlYkhUTUxWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJIVE1MVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTM1MDgxRDk2MDJCNkQ0RDgwQUNBMkFD
QSAvKiBXZWJIVE1MVmlld1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJIVE1MVmlld1ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTM1MDgxREFFMDJCNkQ0
RjUwQUNBMkFDQSAvKiBXZWJEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQkzOEU3NUZEQzBGODQ0QTRBMDAw
NDg0ODcgLyogV2ViQW5hbHlzaXNDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQW5hbHlzaXNDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzhFNzVGRTUwRjg0NTAzRjAwMDQ4NDg3IC8qIFdlYkFuYWx5c2lzRGVsZWdhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQW5hbHlzaXNEZWxlZ2F0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzOEU3NjAyQjBGODQ1NDYzMDAwNDg0ODcgLyogV2ViQW5h
bHlzaXNEZWxlZ2F0ZS5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJB
bmFseXNpc0RlbGVnYXRlLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM4RTc2MDJF
MEY4NDU4MTEwMDA0ODQ4NyAvKiBXZWJBbmFseXNpc0NsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFuYWx5c2lzQ2xpZW50Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzOTQ0NjA2QjAyMEY1MEVEMEVDQTE3NjcgLyogV2ViRHluYW1p
Y1Njcm9sbEJhcnNWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQkzOTQ0NjA2QzAyMEY1MEVE
MEVDQTE3NjcgLyogV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmls
ZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBwYXRoID0gV2ViRHluYW1pY1Njcm9sbEJh
cnNWaWV3Lm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwogCQkzOTQ0NjA2RTAyMEY1MEVEMEVDQTE3NjcgLyogV2ViUHJlZmVyZW5jZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcmVm
ZXJlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKQEAgLTEwMTUsNiArMTAyMyw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlGNTJD
QTZCRDAyREY5RDBGMDE4NjM1Q0EgLyogSFRNTCAqLywKIAkJCQk1MUU5NEMwNzA2QzAyQ0EzMDBB
OUIwOUUgLyogUERGICovLAorCQkJCTM4RTc1RkU1MEY4NDUwM0YwMDA0ODQ4NyAvKiBXZWJBbmFs
eXNpc0RlbGVnYXRlLmggKi8sCisJCQkJMzhFNzYwMkIwRjg0NTQ2MzAwMDQ4NDg3IC8qIFdlYkFu
YWx5c2lzRGVsZWdhdGUubSAqLywKIAkJCQk4MzczNDM1QTA2MjRFRTBEMDBGM0IyODkgLyogV2Vi
QXJjaGl2ZS5oICovLAogCQkJCTgzNzM0MzVCMDYyNEVFMEQwMEYzQjI4OSAvKiBXZWJBcmNoaXZl
Lm1tICovLAogCQkJCTkzM0Q2NTk5MDM0MTNGRjIwMDg2MzVDRSAvKiBXZWJDbGlwVmlldy5oICov
LApAQCAtMTExMSw2ICsxMTIxLDggQEAKIAkJRjVCMzZCNDAwMjgxREU4NzAxODYzNUNCIC8qIFdl
YkNvcmVTdXBwb3J0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQkzOEU3NUZEQzBGODQ0QTRBMDAwNDg0ODcgLyogV2ViQW5hbHlzaXNDbGllbnQuaCAqLywK
KwkJCQkzOEU3NjAyRTBGODQ1ODExMDAwNDg0ODcgLyogV2ViQW5hbHlzaXNDbGllbnQubW0gKi8s
CiAJCQkJNTFDQkZDQUMwRDEwRTZDNTAwMkRCRjUxIC8qIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhLmggKi8sCiAJCQkJMTREODI1MkQwQUY5NTUwOTAwMDRGMDU3IC8qIFdlYkNocm9tZUNsaWVu
dC5oICovLAogCQkJCTE0RDgyNTJFMEFGOTU1MDkwMDA0RjA1NyAvKiBXZWJDaHJvbWVDbGllbnQu
bW0gKi8sCkBAIC0xNDE2LDYgKzE0MjgsOCBAQAogCQkJCUFCOUZCQkJCMEY4NTgyQjAwMDZBREM0
MyAvKiBXZWJET01PcGVyYXRpb25zSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBBRUJG
RjYzMEY5RkE4QkUwMDBENDg2QiAvKiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEFCNzUyMzcwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNj
YXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzhFNzVG
REQwRjg0NEE0QTAwMDQ4NDg3IC8qIFdlYkFuYWx5c2lzQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQkzOEU3NUZFNjBGODQ1MDNGMDAwNDg0ODcgLyogV2ViQW5hbHlzaXNEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0xNzI2LDYgKzE3NDAsOCBAQAogCQkJCTBBRUJGRjY0MEY5RkE4QkUw
MDBENDg2QiAvKiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrUHJpdmF0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBBQjc1MjM4MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRzY2FwZUNvbnRhaW5l
ckNoZWNrQ29udGV4dEluZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMTU2NjMxOTBGQjYxQzFG
MDBDMTk5Q0EgLyogV2ViRG93bmxvYWQubW0gaW4gU291cmNlcyAqLywKKwkJCQkzOEU3NjAyQzBG
ODQ1NDYzMDAwNDg0ODcgLyogV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tIGluIFNvdXJjZXMgKi8sCisJ
CQkJMzhFNzYwMkYwRjg0NTgxMTAwMDQ4NDg3IC8qIFdlYkFuYWx5c2lzQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDE1ZWU5NmIuLmMyMTgxYTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MDktMDQtMzAgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBBbmFseXNpc0NsaWVu
dCBpbnN0cnVtZW50YXRpb24gaW50ZXJmYWNlIHRvIFdlYkNvcmUgYW5kIGluc3RydW1lbnRzIGxh
eW91dCwgc3R5bGUgcmVjYWxjdWxhdGlvbiwgcGFpbnRpbmcgYW5kIGh0bWwgdG9rZW5pemVyLiAg
QWxzbyBwcm92aWRlcyBhIGJhc2ljIGNvbnN1bWVyIG9mIHRoZSBkYXRhIGluIERSVCBhbmQgcnVu
LXdlYmtpdC10ZXN0cyBzdXBwb3J0IGZvciBhZ2dyZWdhdGluZyB0aW1lcyBzcGVudCBpbiB2YXJp
b3VzIGZhY2V0cyB3aGlsZSBydW5uaW5nIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkFuYWx5c2lzQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQW5hbHlz
aXNDbGllbnQ6On5XZWJBbmFseXNpc0NsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQW5hbHlzaXNDbGllbnQubW06IEFkZGVkLgorICAgICAgICAoV2ViQW5hbHlzaXNDbGllbnQ6
OldlYkFuYWx5c2lzQ2xpZW50KToKKyAgICAgICAgKFdlYkFuYWx5c2lzQ2xpZW50OjpzZXRXZWJB
bmFseXNpc0RlbGVnYXRlKToKKyAgICAgICAgKFdlYkFuYWx5c2lzQ2xpZW50OjpsYXlvdXRTdGFy
dGluZyk6CisgICAgICAgIChXZWJBbmFseXNpc0NsaWVudDo6cmVjYWxjU3R5bGVTdGFydGluZyk6
CisgICAgICAgIChXZWJBbmFseXNpc0NsaWVudDo6cGFpbnRTdGFydGluZyk6CisgICAgICAgIChX
ZWJBbmFseXNpc0NsaWVudDo6aHRtbFdyaXRlU3RhcnRpbmcpOgorICAgICAgICAoV2ViQW5hbHlz
aXNDbGllbnQ6OmZpbmlzaGVkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkFuYWx5c2lzRGVsZWdh
dGUuaDogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9XZWJBbmFseXNpc0RlbGVnYXRlLm06IEFk
ZGVkLgorICAgICAgICAoLVtXZWJBbmFseXNpc0RlbGVnYXRlIGxheW91dFN0YXJ0aW5nOl0pOgor
ICAgICAgICAoLVtXZWJBbmFseXNpc0RlbGVnYXRlIHJlY2FsY1N0eWxlU3RhcnRpbmc6XSk6Cisg
ICAgICAgICgtW1dlYkFuYWx5c2lzRGVsZWdhdGUgcGFpbnRTdGFydGluZzpdKToKKyAgICAgICAg
KC1bV2ViQW5hbHlzaXNEZWxlZ2F0ZSBodG1sV3JpdGVTdGFydGluZzpdKToKKyAgICAgICAgKC1b
V2ViQW5hbHlzaXNEZWxlZ2F0ZSBmaW5pc2hlZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZy
YW1lLmg6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKCtbV2ViRnJh
bWUgX2NyZWF0ZUZyYW1lV2l0aFBhZ2U6ZnJhbWVOYW1lOmZyYW1lVmlldzpvd25lckVsZW1lbnQ6
XSk6CisgICAgICAgICgtW1dlYkZyYW1lIHNldFdlYkFuYWx5c2lzRGVsZWdhdGU6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmg6CisKIDIwMDktMDUtMTAgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBC
ZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFuYWx5
c2lzQ2xpZW50LmggYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFuYWx5c2lzQ2xpZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFlNDEzNwotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQW5hbHlzaXNDbGllbnQuaApA
QCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8V2ViQ29yZS9BbmFseXNpc0NsaWVudC5o
PgorCisjaW1wb3J0ICJXZWJBbmFseXNpc0RlbGVnYXRlLmgiCisKK2NsYXNzIFdlYkFuYWx5c2lz
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFuYWx5c2lzQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBX
ZWJBbmFseXNpc0NsaWVudCgpOworICAgIHZpcnR1YWwgfldlYkFuYWx5c2lzQ2xpZW50KCkge30K
KworICAgIHZvaWQgc2V0V2ViQW5hbHlzaXNEZWxlZ2F0ZShXZWJBbmFseXNpc0RlbGVnYXRlKiBk
ZWxlZ2F0ZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExheW91dCgpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRMYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlY2FsY1N0eWxlKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2FsY1N0eWxlKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxQ
YWludCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYWludCgpOworICAgIHZpcnR1YWwgdm9pZCB3
aWxsSHRtbFdyaXRlKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEh0bWxXcml0ZSgpOworCitwcml2
YXRlOgorICAgIFdlYkFuYWx5c2lzRGVsZWdhdGUqIG1fZGVsZWdhdGU7Cit9OwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbmFseXNpc0NsaWVudC5tbSBiL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQW5hbHlzaXNDbGllbnQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNjUzZjYyYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQW5hbHlzaXNDbGllbnQubW0KQEAgLTAsMCArMSw4MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiV2ViQW5hbHlzaXNDbGllbnQuaCIKKyNpbXBvcnQgIldlYkFuYWx5c2lz
RGVsZWdhdGUuaCIKKyNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgorCitXZWJBbmFseXNpc0Ns
aWVudDo6V2ViQW5hbHlzaXNDbGllbnQoKSA6IG1fZGVsZWdhdGUobmlsKQoreworfQorCit2b2lk
IFdlYkFuYWx5c2lzQ2xpZW50OjpzZXRXZWJBbmFseXNpc0RlbGVnYXRlKFdlYkFuYWx5c2lzRGVs
ZWdhdGUqIGRlbGVnYXRlKQoreworICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKK30KKwordm9p
ZCBXZWJBbmFseXNpc0NsaWVudDo6d2lsbExheW91dCgpCit7CisgICAgW21fZGVsZWdhdGUgd2ls
bExheW91dDogV1RGOjpjdXJyZW50VGltZSgpXTsKK30KKwordm9pZCBXZWJBbmFseXNpc0NsaWVu
dDo6ZGlkTGF5b3V0KCkKK3sKKyAgICBbbV9kZWxlZ2F0ZSBkaWRMYXlvdXQ6IFdURjo6Y3VycmVu
dFRpbWUoKV07Cit9CisKK3ZvaWQgV2ViQW5hbHlzaXNDbGllbnQ6OndpbGxSZWNhbGNTdHlsZSgp
Cit7CisgICAgW21fZGVsZWdhdGUgd2lsbFJlY2FsY1N0eWxlOiBXVEY6OmN1cnJlbnRUaW1lKCld
OworfQorCit2b2lkIFdlYkFuYWx5c2lzQ2xpZW50OjpkaWRSZWNhbGNTdHlsZSgpCit7CisgICAg
W21fZGVsZWdhdGUgZGlkUmVjYWxjU3R5bGU6IFdURjo6Y3VycmVudFRpbWUoKV07Cit9CisKK3Zv
aWQgV2ViQW5hbHlzaXNDbGllbnQ6OndpbGxQYWludCgpCit7CisgICAgW21fZGVsZWdhdGUgd2ls
bFBhaW50OiBXVEY6OmN1cnJlbnRUaW1lKCldOworfQorCit2b2lkIFdlYkFuYWx5c2lzQ2xpZW50
OjpkaWRQYWludCgpCit7CisgICAgW21fZGVsZWdhdGUgZGlkUGFpbnQ6IFdURjo6Y3VycmVudFRp
bWUoKV07Cit9CisKK3ZvaWQgV2ViQW5hbHlzaXNDbGllbnQ6OndpbGxIdG1sV3JpdGUoKQorewor
ICAgIFttX2RlbGVnYXRlIHdpbGxIdG1sV3JpdGU6IFdURjo6Y3VycmVudFRpbWUoKV07Cit9CisK
K3ZvaWQgV2ViQW5hbHlzaXNDbGllbnQ6OmRpZEh0bWxXcml0ZSgpCit7CisgICAgW21fZGVsZWdh
dGUgZGlkSHRtbFdyaXRlOiBXVEY6OmN1cnJlbnRUaW1lKCldOworfQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkFuYWx5c2lzRGVsZWdhdGUuaCBiL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJBbmFseXNpc0RlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNjM5ZmNiNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBbmFs
eXNpc0RlbGVnYXRlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKy8qIQorIEBwcm90b2NvbCAg
V2ViQW5hbHlzaXNEZWxlZ2F0ZQorICovCitAcHJvdG9jb2wgV2ViQW5hbHlzaXNEZWxlZ2F0ZSA8
TlNPYmplY3Q+CisKKy8vIE1pcnJvcnMgV2ViQW5hbHlzaXNDbGllbnQuaAorCistICh2b2lkKXdp
bGxMYXlvdXQ6KGRvdWJsZSl0aW1lc3RhbXA7CistICh2b2lkKWRpZExheW91dDooZG91YmxlKXRp
bWVzdGFtcDsKKy0gKHZvaWQpd2lsbFJlY2FsY1N0eWxlOihkb3VibGUpdGltZXN0YW1wOworLSAo
dm9pZClkaWRSZWNhbGNTdHlsZTooZG91YmxlKXRpbWVzdGFtcDsKKy0gKHZvaWQpd2lsbFBhaW50
Oihkb3VibGUpdGltZXN0YW1wOworLSAodm9pZClkaWRQYWludDooZG91YmxlKXRpbWVzdGFtcDsK
Ky0gKHZvaWQpd2lsbEh0bWxXcml0ZTooZG91YmxlKXRpbWVzdGFtcDsKKy0gKHZvaWQpZGlkSHRt
bFdyaXRlOihkb3VibGUpdGltZXN0YW1wOworCitAZW5kCisKKworLyohCisgQGNsYXNzIFdlYkFu
YWx5c2lzRGVsZWdhdGUKKyBAZGlzY3Vzc2lvbiBUaGUgV2ViQW5hbHlzaXNEZWxlZ2F0ZSBjbGFz
cyByZXNwb25kcyB0byBhbGwgV2ViQW5hbHlzaXNEZWxlZ2F0ZSBwcm90b2NvbAorIG1ldGhvZHMg
YnkgZG9pbmcgbm90aGluZy4gSXQncyBwcm92aWRlZCBmb3IgdGhlIGNvbnZlbmllbmNlIG9mIGNs
aWVudHMgd2hvIG9ubHkgd2FudAorIHRvIGltcGxlbWVudCBzb21lIG9mIHRoZSBhYm92ZSBtZXRo
b2RzIGFuZCBpZ25vcmUgb3RoZXJzLgorICovCitAaW50ZXJmYWNlIFdlYkFuYWx5c2lzRGVsZWdh
dGUgOiBOU09iamVjdCA8V2ViQW5hbHlzaXNEZWxlZ2F0ZT4KK0BlbmQKZGlmZiAtLWdpdCBhL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJBbmFseXNpc0RlbGVnYXRlLm0gYi9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjU5MDYzN2YKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQW5h
bHlzaXNEZWxlZ2F0ZS5tCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAK
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAK
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViQW5hbHlz
aXNEZWxlZ2F0ZS5oIgorCitAaW1wbGVtZW50YXRpb24gV2ViQW5hbHlzaXNEZWxlZ2F0ZQorCist
ICh2b2lkKXdpbGxMYXlvdXQ6KGRvdWJsZSl0aW1lc3RhbXAKK3sKK30KKworLSAodm9pZClkaWRM
YXlvdXQ6KGRvdWJsZSl0aW1lc3RhbXA7Cit7Cit9CisKKy0gKHZvaWQpd2lsbFJlY2FsY1N0eWxl
Oihkb3VibGUpdGltZXN0YW1wOworeworfQorCistICh2b2lkKWRpZFJlY2FsY1N0eWxlOihkb3Vi
bGUpdGltZXN0YW1wOworeworfQorCistICh2b2lkKXdpbGxQYWludDooZG91YmxlKXRpbWVzdGFt
cDsKK3sKK30KKworLSAodm9pZClkaWRQYWludDooZG91YmxlKXRpbWVzdGFtcDsKK3sKK30KKwor
LSAodm9pZCl3aWxsSHRtbFdyaXRlOihkb3VibGUpdGltZXN0YW1wOworeworfQorCistICh2b2lk
KWRpZEh0bWxXcml0ZTooZG91YmxlKXRpbWVzdGFtcDsKK3sKK30KKworQGVuZApkaWZmIC0tZ2l0
IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLmggYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUuaAppbmRleCBhNmNkZWJiLi5jYzZmYzcxIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUuaAorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUuaApAQCAt
MzIsNiArMzIsNyBAQAogQGNsYXNzIERPTURvY3VtZW50OwogQGNsYXNzIERPTUhUTUxFbGVtZW50
OwogQGNsYXNzIE5TVVJMUmVxdWVzdDsKK0BjbGFzcyBXZWJBbmFseXNpc0RlbGVnYXRlOwogQGNs
YXNzIFdlYkFyY2hpdmU7CiBAY2xhc3MgV2ViRGF0YVNvdXJjZTsKIEBjbGFzcyBXZWJGcmFtZVBy
aXZhdGU7CkBAIC0yMTQsNCArMjE1LDExIEBACiAqLwogLSAoSlNHbG9iYWxDb250ZXh0UmVmKWds
b2JhbENvbnRleHQ7CiAKKy8qIQorICAgIEBtZXRob2Qgc2V0V2ViQW5hbHlzaXNEZWxlZ2F0ZQor
ICAgIEBkaXNjdXNzaW9uIEFsbCBXZWJBbmFseXNpc0NsaWVudCBjYWxscyBhcmUgZm9yd2FyZGVk
IHRvIHRoZSBkZWxlZ2F0ZSwgaWYgb25lIGlzIHNldC4KKyAgICBAcGFyYW0gZGVsZWdhdGUgVGhl
IGRlbGVnYXRlIHRvIGZvcndhcmQgY2FsbHMgdG8uCisqLworLSAodm9pZClzZXRXZWJBbmFseXNp
c0RlbGVnYXRlOihXZWJBbmFseXNpc0RlbGVnYXRlICopZGVsZWdhdGU7CisKIEBlbmQKZGlmZiAt
LWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQppbmRleCBlOTMyODRhLi5kMjQ4YzBiIDEwMDY0NAotLS0gYS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJET01IVE1MRWxlbWVudEludGVybmFsLmgi
CiAjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwu
aCIKKyNpbXBvcnQgIldlYkFuYWx5c2lzQ2xpZW50LmgiCiAjaW1wb3J0ICJXZWJBcmNoaXZlSW50
ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNocm9tZUNsaWVudC5oIgogI2ltcG9ydCAiV2ViRGF0YVNv
dXJjZUludGVybmFsLmgiCkBAIC0yNDIsNiArMjQzLDkgQEAgV2ViVmlldyAqZ2V0V2ViVmlldyhX
ZWJGcmFtZSAqd2ViRnJhbWUpCiAKICAgICBbd2ViVmlldyBfc2V0Wm9vbU11bHRpcGxpZXI6W3dl
YlZpZXcgX3JlYWxab29tTXVsdGlwbGllcl0gaXNUZXh0T25seTpbd2ViVmlldyBfcmVhbFpvb21N
dWx0aXBsaWVySXNUZXh0T25seV1dOwogCisgICAgZnJhbWUtPl9wcml2YXRlLT53ZWJBbmFseXNp
c0NsaWVudCA9IG5ldyBXZWJBbmFseXNpc0NsaWVudCgpOworICAgIHBhZ2UtPnNldEFuYWx5c2lz
Q2xpZW50KGZyYW1lLT5fcHJpdmF0ZS0+d2ViQW5hbHlzaXNDbGllbnQpOworCiAgICAgcmV0dXJu
IGNvcmVGcmFtZS5yZWxlYXNlKCk7CiB9CiAKQEAgLTEzNjUsNCArMTM2OSw5IEBAIHN0YXRpYyBO
U1VSTCAqY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCgpCiAgICAgcmV0dXJuIHRvR2xvYmFsUmVmKGNv
cmVGcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpOwogfQogCist
ICh2b2lkKXNldFdlYkFuYWx5c2lzRGVsZWdhdGU6KFdlYkFuYWx5c2lzRGVsZWdhdGUgKilkZWxl
Z2F0ZQoreworICAgIF9wcml2YXRlLT53ZWJBbmFseXNpc0NsaWVudC0+c2V0V2ViQW5hbHlzaXNE
ZWxlZ2F0ZShkZWxlZ2F0ZSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZUludGVybmFsLmggYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRl
cm5hbC5oCmluZGV4IDEwYTMwMTUuLmExN2JhYzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZUludGVybmFsLmgKKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
SW50ZXJuYWwuaApAQCAtNDQsNiArNDQsNyBAQAogQGNsYXNzIFdlYkZyYW1lVmlldzsKIEBjbGFz
cyBXZWJIaXN0b3J5SXRlbTsKIAorY2xhc3MgV2ViQW5hbHlzaXNDbGllbnQ7CiBjbGFzcyBXZWJT
Y3JpcHREZWJ1Z2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzksNiArODAsNyBAQCBX
ZWJWaWV3ICpnZXRXZWJWaWV3KFdlYkZyYW1lICp3ZWJGcmFtZSk7CiAgICAgV2ViQ29yZTo6RnJh
bWUqIGNvcmVGcmFtZTsKICAgICBXZWJGcmFtZVZpZXcgKndlYkZyYW1lVmlldzsKICAgICBXZWJT
Y3JpcHREZWJ1Z2dlciogc2NyaXB0RGVidWdnZXI7CisgICAgV2ViQW5hbHlzaXNDbGllbnQqIHdl
YkFuYWx5c2lzQ2xpZW50OwogICAgIGlkIGludGVybmFsTG9hZERlbGVnYXRlOwogICAgIEJPT0wg
c2hvdWxkQ3JlYXRlUmVuZGVyZXJzOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU3MDhlNjEuLjUwZDEyMmMgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMCBAQAorMjAwOS0wNC0zMCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRzIEFuYWx5c2lzQ2xpZW50IGluc3RydW1lbnRhdGlvbiBpbnRlcmZhY2UgdG8gV2ViQ29y
ZSBhbmQgaW5zdHJ1bWVudHMgbGF5b3V0LCBzdHlsZSByZWNhbGN1bGF0aW9uLCBwYWludGluZyBh
bmQgaHRtbCB0b2tlbml6ZXIuICBBbHNvIHByb3ZpZGVzIGEgYmFzaWMgY29uc3VtZXIgb2YgdGhl
IGRhdGEgaW4gRFJUIGFuZCBydW4td2Via2l0LXRlc3RzIHN1cHBvcnQgZm9yIGFnZ3JlZ2F0aW5n
IHRpbWVzIHNwZW50IGluIHZhcmlvdXMgZmFjZXRzIHdoaWxlIHJ1bm5pbmcgbGF5b3V0IHRlc3Rz
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW06CisgICAgICAgIChhbGxvY2F0ZUdsb2JhbENvbnRyb2xsZXJzKToKKyAgICAgICAgKHJl
bGVhc2VHbG9iYWxDb250cm9sbGVycyk6CisgICAgICAgIChkdW1wUmVuZGVyVHJlZSk6CisgICAg
ICAgIChkdW1wKToKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3Jl
VGVzdGluZyk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvTG9nZ2luZ1dlYkFuYWx5c2lzRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgIChQZW5kaW5n
RXZlbnQ6OlBlbmRpbmdFdmVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xvZ2dp
bmdXZWJBbmFseXNpc0RlbGVnYXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bTG9nZ2luZ1dlYkFu
YWx5c2lzRGVsZWdhdGUgaW5pdF0pOgorICAgICAgICAoLVtMb2dnaW5nV2ViQW5hbHlzaXNEZWxl
Z2F0ZSBkZWFsbG9jXSk6CisgICAgICAgICgtW0xvZ2dpbmdXZWJBbmFseXNpc0RlbGVnYXRlIGxh
eW91dFN0YXJ0aW5nOl0pOgorICAgICAgICAoLVtMb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZSBy
ZWNhbGNTdHlsZVN0YXJ0aW5nOl0pOgorICAgICAgICAoLVtMb2dnaW5nV2ViQW5hbHlzaXNEZWxl
Z2F0ZSBwYWludFN0YXJ0aW5nOl0pOgorICAgICAgICAoLVtMb2dnaW5nV2ViQW5hbHlzaXNEZWxl
Z2F0ZSBodG1sV3JpdGVTdGFydGluZzpdKToKKyAgICAgICAgKC1bTG9nZ2luZ1dlYkFuYWx5c2lz
RGVsZWdhdGUgZmluaXNoZWQ6XSk6CisgICAgICAgICgtW0xvZ2dpbmdXZWJBbmFseXNpc0RlbGVn
YXRlIGR1bXBBZ2dyZWdhdGVEYXRhXSk6CisgICAgICAgICogU2NyaXB0cy9ydW4td2Via2l0LXRl
c3RzOgorCiAyMDA5LTA1LTExICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MmVhNDAxLi5jNGNhZDI5IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0LDYgKzM0LDcgQEAKIAkJMUFD
NkM4NEEwRDA3NjM4NjAwQ0QzMTYxIC8qIFBsdWdpbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUM2Qzc4MDBEMDc1ODlCMDBDRDMxNjEg
LyogUGx1Z2luT2JqZWN0LmNwcCAqLzsgfTsKIAkJMUFDNkM4NEIwRDA3NjM4NjAwQ0QzMTYxIC8q
IFRlc3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFDNkM3ODEwRDA3NTg5QjAwQ0QzMTYxIC8qIFRlc3RPYmplY3QuY3BwICovOyB9Owog
CQkyM0JDQjg5MDBFQTU3NjIzMDAzQzYyODkgLyogT3BlbkdMLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIzQkNCODhGMEVBNTc2MjMw
MDNDNjI4OSAvKiBPcGVuR0wuZnJhbWV3b3JrICovOyB9OworCQkzOEU3NjMwNDBGODZDRDI5MDAw
NDg0ODcgLyogTG9nZ2luZ1dlYkFuYWx5c2lzRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzOEU3NjMwMTBGODZDQ0Y1MDAwNDg0ODcgLyog
TG9nZ2luZ1dlYkFuYWx5c2lzRGVsZWdhdGUubW0gKi87IH07CiAJCTVEQjlBQzk3MEY3MjJDMzYw
MDY4NDY0MSAvKiBBSEVNX19fXy5UVEYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBN0YxMEMyMENCM0MxMDMwMDAzQkRDOSAvKiBBSEVNX19f
Xy5UVEYgKi87IH07CiAJCTVEQjlBQzk4MEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRX
YXRjaGVyMTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzc1RjA5NzEwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNo
ZXIxMDAudHRmICovOyB9OwogCQk1REI5QUM5OTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2Vp
Z2h0V2F0Y2hlcjIwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3NUYwOTcyMERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRX
YXRjaGVyMjAwLnR0ZiAqLzsgfTsKQEAgLTE3OCw2ICsxNzksOCBAQAogCQkzNzVGMDk3NzBEQUMz
Q0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50dGYgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gV2ViS2l0V2Vp
Z2h0V2F0Y2hlcjcwMC50dGY7IHBhdGggPSBmb250cy9XZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0
Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc1RjA5NzgwREFDM0NCNjAwQzhCNEU1
IC8qIFdlYktpdFdlaWdodFdhdGNoZXI4MDAudHRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IFdlYktpdFdlaWdodFdhdGNoZXI4
MDAudHRmOyBwYXRoID0gZm9udHMvV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50dGY7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NUYwOTc5MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRX
ZWlnaHRXYXRjaGVyOTAwLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBXZWJLaXRXZWlnaHRXYXRjaGVyOTAwLnR0ZjsgcGF0
aCA9IGZvbnRzL1dlYktpdFdlaWdodFdhdGNoZXI5MDAudHRmOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzOEU3NjMwMDBGODZDQ0Y1MDAwNDg0ODcgLyogTG9nZ2luZ1dlYkFuYWx5c2lz
RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG9nZ2luZ1dlYkFu
YWx5c2lzRGVsZWdhdGUuaDsgcGF0aCA9IG1hYy9Mb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzOEU3NjMwMTBGODZDQ0Y1MDAwNDg0ODcg
LyogTG9nZ2luZ1dlYkFuYWx5c2lzRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBMb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tbTsgcGF0aCA9IG1h
Yy9Mb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTMzNTQzNUYwM0Q3NTUwMjAwODYzNUNFIC8qIFdlYktpdC5mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1l
d29yazsgcGF0aCA9IFdlYktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTkzM0JGNUE5MEY5M0ZBNUMwMDBGMDQ0MSAvKiBQbGFpblRleHRDb250cm9s
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYWluVGV4dENvbnRyb2xs
ZXIuaDsgcGF0aCA9IG1hYy9QbGFpblRleHRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzM0JGNUFBMEY5M0ZBNUMwMDBGMDQ0MSAvKiBQbGFpblRleHRDb250cm9s
bGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUGxhaW5UZXh0
Q29udHJvbGxlci5tbTsgcGF0aCA9IG1hYy9QbGFpblRleHRDb250cm9sbGVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzY4LDYgKzM3MSw4IEBACiAJCTE0MjJBMjc1MEFGNkY0
QkQwMEUxQTg4MyAvKiBEZWxlZ2F0ZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTM4RTc2MzAwMEY4NkNDRjUwMDA0ODQ4NyAvKiBMb2dnaW5nV2ViQW5h
bHlzaXNEZWxlZ2F0ZS5oICovLAorCQkJCTM4RTc2MzAxMEY4NkNDRjUwMDA0ODQ4NyAvKiBMb2dn
aW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5tbSAqLywKIAkJCQlCQ0ExOEI1NzBDOUIwOEMyMDAxMTQz
NjkgLyogRWRpdGluZ0RlbGVnYXRlLmggKi8sCiAJCQkJQkNBMThCNTgwQzlCMDhDMjAwMTE0MzY5
IC8qIEVkaXRpbmdEZWxlZ2F0ZS5tbSAqLywKIAkJCQlCQ0ExOEI1OTBDOUIwOEMyMDAxMTQzNjkg
LyogRnJhbWVMb2FkRGVsZWdhdGUuaCAqLywKQEAgLTYyNyw2ICs2MzIsNyBAQAogCQkJaXNhID0g
UEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owog
CQkJZmlsZXMgPSAoCisJCQkJMzhFNzYzMDQwRjg2Q0QyOTAwMDQ4NDg3IC8qIExvZ2dpbmdXZWJB
bmFseXNpc0RlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEMDhCM0EwRTEwNTdFRjAw
QTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDRDA4QjcxMEUxMDU5RDIwMEE3RDBDMSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUJDMEUyNEUxMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDViMmZmMzAuLmRkMjJlMDgg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIkZyYW1lTG9hZERlbGVnYXRlLmgiCiAjaW1w
b3J0ICJKYXZhU2NyaXB0VGhyZWFkaW5nLmgiCiAjaW1wb3J0ICJMYXlvdXRUZXN0Q29udHJvbGxl
ci5oIgorI2ltcG9ydCAiTG9nZ2luZ1dlYkFuYWx5c2lzRGVsZWdhdGUuaCIKICNpbXBvcnQgIk5h
dmlnYXRpb25Db250cm9sbGVyLmgiCiAjaW1wb3J0ICJPYmpDUGx1Z2luLmgiCiAjaW1wb3J0ICJP
YmpDUGx1Z2luRnVuY3Rpb24uaCIKQEAgLTExMyw2ICsxMTQsNyBAQCBzdGF0aWMgRnJhbWVMb2Fk
RGVsZWdhdGUgKmZyYW1lTG9hZERlbGVnYXRlOwogc3RhdGljIFVJRGVsZWdhdGUgKnVpRGVsZWdh
dGU7CiBzdGF0aWMgRWRpdGluZ0RlbGVnYXRlICplZGl0aW5nRGVsZWdhdGU7CiBzdGF0aWMgUmVz
b3VyY2VMb2FkRGVsZWdhdGUgKnJlc291cmNlTG9hZERlbGVnYXRlOworc3RhdGljIExvZ2dpbmdX
ZWJBbmFseXNpc0RlbGVnYXRlICphbmFseXNpc0RlbGVnYXRlOwogUG9saWN5RGVsZWdhdGUgKnBv
bGljeURlbGVnYXRlOwogCiBzdGF0aWMgaW50IGR1bXBQaXhlbHM7CkBAIC00MjYsNiArNDI4LDcg
QEAgc3RhdGljIHZvaWQgYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycygpCiAgICAgZWRpdGluZ0Rl
bGVnYXRlID0gW1tFZGl0aW5nRGVsZWdhdGUgYWxsb2NdIGluaXRdOwogICAgIHJlc291cmNlTG9h
ZERlbGVnYXRlID0gW1tSZXNvdXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF07CiAgICAgcG9s
aWN5RGVsZWdhdGUgPSBbW1BvbGljeURlbGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICBhbmFseXNp
c0RlbGVnYXRlID0gW1tMb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF07CiB9
CiAKIC8vIE9iakMrKyBkb2Vucyd0IHNlZW0gdG8gbGV0IG1lIHBhc3MgTlNPYmplY3QqJiBzYWRs
eS4KQEAgLTQ0Myw2ICs0NDYsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlR2xvYmFsQ29udHJvbGxl
cnMoKQogICAgIHJlbGVhc2VBbmRaZXJvKCZyZXNvdXJjZUxvYWREZWxlZ2F0ZSk7CiAgICAgcmVs
ZWFzZUFuZFplcm8oJnVpRGVsZWdhdGUpOwogICAgIHJlbGVhc2VBbmRaZXJvKCZwb2xpY3lEZWxl
Z2F0ZSk7CisgICAgcmVsZWFzZUFuZFplcm8oJmFuYWx5c2lzRGVsZWdhdGUpOwogfQogCiBzdGF0
aWMgdm9pZCBpbml0aWFsaXplR2xvYmFsc0Zyb21Db21tYW5kTGluZU9wdGlvbnMoaW50IGFyZ2Ms
IGNvbnN0IGNoYXIgKmFyZ3ZbXSkKQEAgLTk5NSw3ICs5OTksOSBAQCB2b2lkIGR1bXAoKQogICAg
IAogICAgIGlmIChkdW1wUGl4ZWxzICYmICFkdW1wQXNUZXh0KQogICAgICAgICBkdW1wV2ViVmll
d0FzUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmV4
cGVjdGVkUGl4ZWxIYXNoKCkpOwotICAgIAorCisgICAgW2FuYWx5c2lzRGVsZWdhdGUgZHVtcEFn
Z3JlZ2F0ZURhdGFdOworCiAgICAgcHV0cygiI0VPRiIpOyAgIC8vIHRlcm1pbmF0ZSB0aGUgKHBv
c3NpYmx5IGVtcHR5KSBwaXhlbHMgYmxvY2sKIAogICAgIGZmbHVzaChzdGRvdXQpOwpAQCAtMTAz
OSw2ICsxMDQ1LDggQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVC
ZWZvcmVUZXN0aW5nKCkKICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQ6WUVTXTsKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gaW5zcGVjdG9yXSBz
ZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZDpOT107CiAKKyAgICBbbWFpbkZyYW1lIHNldFdl
YkFuYWx5c2lzRGVsZWdhdGU6IChXZWJBbmFseXNpc0RlbGVnYXRlKilhbmFseXNpc0RlbGVnYXRl
XTsKKwogICAgIFtXZWJWaWV3IF9zZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcjpZRVNdOwog
fQogCkBAIC0xMTA1LDYgKzExMTMsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmlu
ZyYgdGVzdFBhdGhPclVSTCkKICAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRv
cmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwogICAgIFttYWluRnJhbWUgbG9hZFJlcXVlc3Q6W05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsKICAgICBbcG9vbCByZWxlYXNlXTsKKwog
ICAgIHdoaWxlICghZG9uZSkgewogICAgICAgICBwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBh
bGxvY10gaW5pdF07CiAgICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBydW5Nb2Rl
Ok5TRGVmYXVsdFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBkaXN0YW50UGFzdF1dOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xvZ2dpbmdXZWJBbmFs
eXNpc0RlbGVnYXRlLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTG9nZ2luZ1dl
YkFuYWx5c2lzRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
M2ExODUyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xvZ2dpbmdXZWJBbmFseXNpc0RlbGVnYXRlLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCA8dmVjdG9yPgorCitlbnVtIEVWRU5UX1RZUEUgeworCUxBWU9VVCA9IDAsCisJUkVDQUxDX1NU
WUxFLAorCVBBSU5ULAorCUhUTUxfV1JJVEUsCisJTlVNX0VWRU5UX1RZUEVTCit9OworCitzdHJ1
Y3QgUGVuZGluZ0V2ZW50IHsKKwlQZW5kaW5nRXZlbnQoZG91YmxlIHN0YXJ0VGltZV8sIEVWRU5U
X1RZUEUgdHlwZV8pCisJOiBzdGFydFRpbWUoc3RhcnRUaW1lXyksCisJZHVyYXRpb24oMC4wKSwK
Kwl0eXBlKHR5cGVfKSB7CisgICAgfQorCisJZG91YmxlIHN0YXJ0VGltZTsKKwlkb3VibGUgZHVy
YXRpb247CisJRVZFTlRfVFlQRSB0eXBlOworfTsKKworQGludGVyZmFjZSBMb2dnaW5nV2ViQW5h
bHlzaXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IHsKKwlzdGQ6OnZlY3RvcjxQZW5kaW5nRXZlbnQ+KiBw
ZW5kaW5nOworCWRvdWJsZSB0b3RhbER1cmF0aW9uc1tOVU1fRVZFTlRfVFlQRVNdOworCWludCBj
b3VudFtOVU1fRVZFTlRfVFlQRVNdOworfQorCistICh2b2lkKXdpbGxMYXlvdXQ6KGRvdWJsZSl0
aW1lc3RhbXA7CistICh2b2lkKWRpZExheW91dDooZG91YmxlKXRpbWVzdGFtcDsKKy0gKHZvaWQp
d2lsbFJlY2FsY1N0eWxlOihkb3VibGUpdGltZXN0YW1wOworLSAodm9pZClkaWRSZWNhbGNTdHls
ZTooZG91YmxlKXRpbWVzdGFtcDsKKy0gKHZvaWQpd2lsbFBhaW50Oihkb3VibGUpdGltZXN0YW1w
OworLSAodm9pZClkaWRQYWludDooZG91YmxlKXRpbWVzdGFtcDsKKy0gKHZvaWQpd2lsbEh0bWxX
cml0ZTooZG91YmxlKXRpbWVzdGFtcDsKKy0gKHZvaWQpZGlkSHRtbFdyaXRlOihkb3VibGUpdGlt
ZXN0YW1wOworLSAodm9pZClmaW5pc2hlZDooZG91YmxlKSB0aW1lc3RhbXA7CistICh2b2lkKWR1
bXBBZ2dyZWdhdGVEYXRhOworCitAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvTG9nZ2luZ1dlYkFuYWx5c2lzRGVsZWdhdGUubW0gYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTG9nZ2luZ1dlYkFuYWx5c2lzRGVsZWdhdGUubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIzMDU5OQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Mb2dnaW5nV2ViQW5hbHlzaXNEZWxlZ2F0ZS5t
bQpAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiTG9nZ2luZ1dlYkFuYWx5c2lzRGVsZWdh
dGUuaCIKKyNpbXBvcnQgPHZlY3Rvcj4KKyNpbXBvcnQgPGFzc2VydC5oPgorCitzdGF0aWMgY29u
c3QgY2hhciogZXZlbnRUeXBlU3RyaW5nc1tdID0geworICAgICJsYXlvdXQiLAorCSJyZWNhbGNf
c3R5bGUiLAorICAgICJwYWludCIsCisJImh0bWxfd3JpdGUiCit9OworCitAaW1wbGVtZW50YXRp
b24gTG9nZ2luZ1dlYkFuYWx5c2lzRGVsZWdhdGUKKworLSAoaWQpaW5pdAoreworCXNlbGYgPSBb
c3VwZXIgaW5pdF07CisJcGVuZGluZyA9IG5ldyBzdGQ6OnZlY3RvcjxQZW5kaW5nRXZlbnQ+KCk7
CisJZm9yIChpbnQgaT0wOyBpPE5VTV9FVkVOVF9UWVBFUzsgKytpKSB7CisJCXRvdGFsRHVyYXRp
b25zW2ldID0gMC4wOworCQljb3VudFtpXSA9IDA7CisJfQorCXJldHVybiBzZWxmOworfQorCist
ICh2b2lkKWRlYWxsb2MKK3sKKwlkZWxldGUgcGVuZGluZzsKKwlbc3VwZXIgZGVhbGxvY107Cit9
CisKKy0gKHZvaWQpd2lsbExheW91dDooZG91YmxlKSB0aW1lc3RhbXAKK3sKKwlQZW5kaW5nRXZl
bnQgZXZ0KHRpbWVzdGFtcCwgTEFZT1VUKTsKKwlwZW5kaW5nLT5wdXNoX2JhY2soZXZ0KTsKKwlj
b3VudFtMQVlPVVRdKys7Cit9CisKKy0gKHZvaWQpZGlkTGF5b3V0Oihkb3VibGUpIHRpbWVzdGFt
cAoreworCWFzc2VydCghcGVuZGluZy0+ZW1wdHkoKSk7CisJYXNzZXJ0KHBlbmRpbmctPmJhY2so
KS50eXBlID09IExBWU9VVCk7CisJW3NlbGYgZmluaXNoZWQ6IHRpbWVzdGFtcF07Cit9CisKKy0g
KHZvaWQpd2lsbFJlY2FsY1N0eWxlOihkb3VibGUpIHRpbWVzdGFtcAoreworCVBlbmRpbmdFdmVu
dCBldnQodGltZXN0YW1wLCBSRUNBTENfU1RZTEUpOworCXBlbmRpbmctPnB1c2hfYmFjayhldnQp
OworCWNvdW50W1JFQ0FMQ19TVFlMRV0rKzsKK30KKworLSAodm9pZClkaWRSZWNhbGNTdHlsZToo
ZG91YmxlKSB0aW1lc3RhbXAKK3sKKwlhc3NlcnQoIXBlbmRpbmctPmVtcHR5KCkpOworCWFzc2Vy
dChwZW5kaW5nLT5iYWNrKCkudHlwZSA9PSBSRUNBTENfU1RZTEUpOworCVtzZWxmIGZpbmlzaGVk
OiB0aW1lc3RhbXBdOworfQorCistICh2b2lkKXdpbGxQYWludDooZG91YmxlKSB0aW1lc3RhbXAK
K3sKKwlQZW5kaW5nRXZlbnQgZXZ0KHRpbWVzdGFtcCwgUEFJTlQpOworCXBlbmRpbmctPnB1c2hf
YmFjayhldnQpOworCWNvdW50W1BBSU5UXSsrOworfQorCistICh2b2lkKWRpZFBhaW50Oihkb3Vi
bGUpIHRpbWVzdGFtcAoreworCWFzc2VydCghcGVuZGluZy0+ZW1wdHkoKSk7CisJYXNzZXJ0KHBl
bmRpbmctPmJhY2soKS50eXBlID09IFBBSU5UKTsKKwlbc2VsZiBmaW5pc2hlZDogdGltZXN0YW1w
XTsKK30KKworLSAodm9pZCl3aWxsSHRtbFdyaXRlOihkb3VibGUpIHRpbWVzdGFtcAoreworCVBl
bmRpbmdFdmVudCBldnQodGltZXN0YW1wLCBIVE1MX1dSSVRFKTsKKwlwZW5kaW5nLT5wdXNoX2Jh
Y2soZXZ0KTsKKwljb3VudFtIVE1MX1dSSVRFXSsrOworfQorCistICh2b2lkKWRpZEh0bWxXcml0
ZTooZG91YmxlKSB0aW1lc3RhbXAKK3sKKwlhc3NlcnQoIXBlbmRpbmctPmVtcHR5KCkpOworCWFz
c2VydChwZW5kaW5nLT5iYWNrKCkudHlwZSA9PSBIVE1MX1dSSVRFKTsKKwlbc2VsZiBmaW5pc2hl
ZDogdGltZXN0YW1wXTsKK30KKworLSAodm9pZClmaW5pc2hlZDooZG91YmxlKSB0aW1lc3RhbXAK
K3sKKwlQZW5kaW5nRXZlbnQgZXZ0ID0gcGVuZGluZy0+YmFjaygpOworCXBlbmRpbmctPnBvcF9i
YWNrKCk7CisJZG91YmxlIGR1cmF0aW9uID0gZXZ0LmR1cmF0aW9uICsgdGltZXN0YW1wIC0gZXZ0
LnN0YXJ0VGltZTsKKwl0b3RhbER1cmF0aW9uc1tldnQudHlwZV0gKz0gZHVyYXRpb247CisJY291
bnRbZXZ0LnR5cGVdKys7CisJaWYgKCFwZW5kaW5nLT5lbXB0eSgpKSB7CisJCXBlbmRpbmctPmJh
Y2soKS5kdXJhdGlvbiAtPSBkdXJhdGlvbjsKKwl9Cit9CisKKy0gKHZvaWQpZHVtcEFnZ3JlZ2F0
ZURhdGEKK3sKKwlwcmludGYoIlN0YXRzOiAiKTsKKwlmb3IgKGludCBpPTA7IGk8TlVNX0VWRU5U
X1RZUEVTOyArK2kpIHsKKwkJcHJpbnRmKCIlc1x0JWZcdCVkfCIsIGV2ZW50VHlwZVN0cmluZ3Nb
aV0sIHRvdGFsRHVyYXRpb25zW2ldICogMTAwMC4wLCBjb3VudFtpXSk7CisJCXRvdGFsRHVyYXRp
b25zW2ldID0gMC4wOworCQljb3VudFtpXSA9IDA7CisJfQorCXByaW50ZigiXG4iKTsKK30KKwor
QGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCmluZGV4IDVlODAyNjkuLjdmMTk4
ZjAgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cworKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKQEAgLTg4LDYgKzg4LDcgQEAg
c3ViIHN0cmlwRXh0ZW5zaW9uKCQpOwogc3ViIGlzVGV4dE9ubHlUZXN0KCQpOwogc3ViIGV4cGVj
dGVkRGlyZWN0b3J5Rm9yVGVzdCgkOyQ7JCk7CiBzdWIgY291bnRGaW5pc2hlZFRlc3QoJCQkJCk7
CitzdWIgYWdncmVnYXRlU3RhdHMoJCk7CiBzdWIgdGVzdENyYXNoZWRPclRpbWVkT3V0KCQkJCQk
KTsKIHN1YiBzYW1wbGVEdW1wVG9vbCgpOwogc3ViIHByaW50RmFpbHVyZU1lc3NhZ2VGb3JUZXN0
KCQkKTsKQEAgLTE0MCw2ICsxNDEsNyBAQCBteSAkcmFuZG9taXplVGVzdHMgPSAwOwogbXkgJG1l
cmdlRGVwdGg7CiBteSAkdGltZW91dFNlY29uZHMgPSAxNTsKIG15ICR1c2VSZW1vdGVMaW5rc1Rv
VGVzdHMgPSAwOworbXkgJHNob3VsZER1bXBTdGF0cyA9IDA7CiBteSBAbGVha3NGaWxlbmFtZXM7
CiAKICMgRGVmYXVsdCB0byAtLW5vLWh0dHAgZm9yIFF0LCBHdGsgYW5kIHd4IGZvciBub3cuCkBA
IC0yMjMsNiArMjI1LDcgQEAgVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10gW3Rlc3RkaXJ8
dGVzdHBhdGggLi4uXQogICAtdnwtLXZlcmJvc2UgICAgICAgICAgICAgICAgICAgIE1vcmUgdmVy
Ym9zZSBvdXRwdXQgKG92ZXJyaWRlcyAtLXF1aWV0KQogICAtbXwtLW1lcmdlLWxlYWstZGVwdGgg
YXJnICAgICAgIE1lcmdlcyBsZWFrIGNhbGxTdGFja3MgYW5kIHByaW50cyB0aGUgbnVtYmVyIG9m
IHVuaXF1ZSBsZWFrcyBiZW5lYXRoIGEgY2FsbHN0YWNrIGRlcHRoIG9mIGFyZy4gIERlZmF1bHRz
IHRvIDUuCiAgIC0tdXNlLXJlbW90ZS1saW5rcy10by10ZXN0cyAgICAgTGluayB0byB0ZXN0IGZp
bGVzIHdpdGhpbiB0aGUgU1ZOIHJlcG9zaXRvcnkgaW4gdGhlIHJlc3VsdHMuCisgIC0tZHVtcC1z
dGF0cyAgICAgICAgICAgICAgICAgICAgRHVtcCBhZ2dyZWdhdGUgc3RhdHMgaW5mb3JtYXRpb24g
ZnJvbSB0aGUgcmVuZGVyZXIKIEVPRgogCiBzZXRDb25maWd1cmF0aW9uKCk7CkBAIC0yNjAsNiAr
MjYzLDcgQEAgbXkgJGdldE9wdGlvbnNSZXN1bHQgPSBHZXRPcHRpb25zKAogICAgICdtZXJnZS1s
ZWFrLWRlcHRofG06NScgPT4gXCRtZXJnZURlcHRoLAogICAgICd0aW1lb3V0PWknID0+IFwkdGlt
ZW91dFNlY29uZHMsCiAgICAgJ3VzZS1yZW1vdGUtbGlua3MtdG8tdGVzdHMnID0+IFwkdXNlUmVt
b3RlTGlua3NUb1Rlc3RzLAorICAgICdkdW1wLXN0YXRzJyA9PiBcJHNob3VsZER1bXBTdGF0cywK
ICk7CiAKIGlmICghJGdldE9wdGlvbnNSZXN1bHQgfHwgJHNob3dIZWxwKSB7CkBAIC0zNDgsNiAr
MzUyLDkgQEAgaWYgKCRwaXhlbFRlc3RzKSB7CiBteSBAdGVzdHMgPSAoKTsKIG15ICV0ZXN0VHlw
ZSA9ICgpOwogCitteSAlc3RhdHNUaW1lID0gKCk7CitteSAlc3RhdHNDb3VudCA9ICgpOworCiBz
eXN0ZW0gImxuIiwgIi1zIiwgJHRlc3REaXJlY3RvcnksICIvdG1wL0xheW91dFRlc3RzIiB1bmxl
c3MgLXggIi90bXAvTGF5b3V0VGVzdHMiOwogCiBteSAlaWdub3JlZEZpbGVzID0gKCk7CkBAIC02
ODcsNiArNjk0LDggQEAgZm9yIG15ICR0ZXN0IChAdGVzdHMpIHsKICAgICAgICAgfSBlbHNpZiAo
L0NvbnRlbnQtTGVuZ3RoOiAoXGQrKVxzKi8pIHsKICAgICAgICAgICAgICRhY3R1YWxQTkdTaXpl
ID0gJDE7CiAgICAgICAgICAgICByZWFkKElOLCAkYWN0dWFsUE5HLCAkYWN0dWFsUE5HU2l6ZSk7
CisgICAgICAgIH0gZWxzaWYgKC9TdGF0czogKC4qKS8pIHsKKyAgICAgICAgICAgIGFnZ3JlZ2F0
ZVN0YXRzKCQxKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTQxLDYgKzk1MCwxMiBAQCBmb3Ig
bXkgJHRlc3QgKEB0ZXN0cykgewogfQogcHJpbnRmICJcbiUwLjJmcyB0b3RhbCB0ZXN0aW5nIHRp
bWVcbiIsICh0aW1lIC0gJG92ZXJhbGxTdGFydFRpbWUpIC4gIiI7CiAKK2lmICgkc2hvdWxkRHVt
cFN0YXRzKSB7CisgICAgZm9yZWFjaCBteSAkdHlwZSAoa2V5cyAlc3RhdHNUaW1lKSB7CisgICAg
ICAgIHByaW50ZiAiJXMgdGltZSA9ICVmbXMgY291bnQgPSAlZFxuIiwgJHR5cGUsICRzdGF0c1Rp
bWV7JHR5cGV9LCAkc3RhdHNDb3VudHskdHlwZX07CisgICAgfQorfQorCiAhJGlzRHVtcFRvb2xP
cGVuIHx8IGRpZSAiRmFpbGVkIHRvIGNsb3NlICRkdW1wVG9vbE5hbWUuXG4iOwogCiBjbG9zZUhU
VFBEKCk7CkBAIC0xMjk5LDcgKzEzMTQsNyBAQCBzdWIgb3BlbkR1bXBUb29sKCkKICAgICBpZiAo
JHVzZVZhbGdyaW5kKSB7CiAgICAgICAgIHVuc2hpZnQgQGFyZ3MsICJ2YWxncmluZCI7CiAgICAg
fSAKLSAgICAKKwogICAgICRFTlZ7TWFsbG9jU3RhY2tMb2dnaW5nfSA9IDEgaWYgJHNob3VsZENo
ZWNrTGVha3M7CiAgICAgJGR1bXBUb29sUElEID0gb3BlbjMoXCpPVVQsIFwqSU4sIFwqRVJST1Is
IGxhdW5jaFdpdGhDdXJyZW50RW52KEBhcmdzKSkgb3IgZGllICJGYWlsZWQgdG8gc3RhcnQgdG9v
bDogJGR1bXBUb29sXG4iOwogICAgICRFTlZ7TWFsbG9jU3RhY2tMb2dnaW5nfSA9IDAgaWYgJHNo
b3VsZENoZWNrTGVha3M7CkBAIC0xNTI4LDYgKzE1NDMsMTcgQEAgc3ViIGNvdW50RmluaXNoZWRU
ZXN0KCQkJCQpIHsKICAgICAkdGVzdFR5cGV7JHRlc3R9ID0gJGlzVGV4dDsKIH0KIAorc3ViIGFn
Z3JlZ2F0ZVN0YXRzKCQpCit7CisgICAgbXkgKCRzdGF0cykgPSBAXzsKKworICAgIGZvciBteSAk
Z3JwIChzcGxpdCgvXHwvLCAkc3RhdHMpKSB7CisgICAgICAgbXkgKCR0eXBlLCAkdGltZSwgJGNv
dW50KSA9ICgkZ3JwID1+IC8oXHcrKVx0KFxkK1wuXGQrKVx0KFxkKykvKTsKKyAgICAgICAkc3Rh
dHNUaW1leyR0eXBlfSArPSAkdGltZTsKKyAgICAgICAkc3RhdHNDb3VudHskdHlwZX0gKz0gJGNv
dW50OworICAgIH0KK30KKwogc3ViIHRlc3RDcmFzaGVkT3JUaW1lZE91dCgkJCQkJCkKIHsKICAg
ICBteSAoJHRlc3QsICRiYXNlLCAkZGlkQ3Jhc2gsICRhY3R1YWwsICRlcnJvcikgPSBAXzsK
</data>
<flag name="review"
          id="15188"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38382</attachid>
            <date>2009-08-21 11:21:56 -0700</date>
            <delta_ts>2009-08-31 15:37:25 -0700</delta_ts>
            <desc>Similar instrumentation points, but this time it goes to an agent in InspectorController.</desc>
            <filename>timeline-agent.patch</filename>
            <type>text/plain</type>
            <size>38609</size>
            <attacher name="Kelly Norton">knorton</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzYzMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODUgQEAKKzIwMDktMDgtMjEgIEtlbGx5IE5vcnRvbiAgPGtub3J0b25AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWJJbnNwZWN0b3I6IEFkZHMgYSB0aW1lbGluZSBhZ2VudCB0byBJbnNwZWN0b3JDb250cm9sbGVy
IHRoYXQgY29sbGVjdHMKKyAgICAgICAgaGlnaC1sZXZlbCB0aW1pbmcgZGF0YSBhYm91dCBldmVu
dCBkaXNwYXRjaCwgbGF5b3V0LCBwYWludGluZyBhbmQgSFRNTAorICAgICAgICBwYXJzaW5nIGFu
ZCBtYWtlcyBpdCBhdmFpbGFibGUgdG8gSW5zcGVjdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1MDMKKworICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbnNwZWN0
b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWNhbGNTdHls
ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQpOgorICAgICAgICAq
IGh0bWwvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVy
Ojp3cml0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6ZW5hYmxlVGltZWxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6ZGlzYWJsZVRpbWVsaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OnRpbWVsaW5lRW5hYmxlZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0RnJvbnRlbmRQ
cm94eU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNldFNjcmlwdE9i
amVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlVGlt
ZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZVRp
bWVsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnRpbWVsaW5l
RW5hYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnRpbWVsaW5lQWdlbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZDo6dGltZWxpbmVXYXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kOjp0aW1lbGluZVdhc0Rpc2FibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjpkaWRDb21wbGV0ZVRpbWVsaW5lUmVjb3JkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGlzcGF0
Y2hET01FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpk
aWREaXNwYXRjaERPTUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OndpbGxMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6ZGlkTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OndpbGxSZWNhbGN1bGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmRpZFJlY2FsY3VsYXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OndpbGxXcml0ZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6ZGlkV3JpdGVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6Om5ld1RpbWVsaW5lSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXNzaW9uVGltZUlu
TWlsbGlzZWNvbmRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OlRpbWVsaW5lSXRlbTo6VGltZWxpbmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OlRpbWVsaW5lSXRlbTo6YWRkSXRlbVByb3BlcnRpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6VGltZWxpbmVJdGVtOjphZGRET01F
dmVudFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6VGltZWxpbmVJdGVtOjphZGRDaGlsZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjopOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
VGltZWxpbmVJdGVtOjp+VGltZWxpbmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OlRpbWVsaW5lSXRlbTo6cHJldmlvdXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6VGltZWxpbmVJdGVtOjpyZWxlYXNlUHJldmlvdXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6VGltZWxpbmVJdGVt
OjpzY3JpcHRfb2JqZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5l
QWdlbnQuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmRpZENvbXBsZXRlVGltZWxpbmVSZWNvcmQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLnRpbWVsaW5lV2FzRW5hYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IudGltZWxpbmVXYXNEaXNhYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjppbnNwZWN0b3JU
aW1lbGluZUFnZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBh
Z2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppbnNwZWN0b3JUaW1lbGluZUFn
ZW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKwogMjAwOS0wOC0yMSAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4K
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS5neXBpCShyZXZpc2lvbiA0NzU3NSkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDMwLDYgKzE0MzAsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2UuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaCcsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwJywKKyAgICAg
ICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9KYXZh
U2NyaXB0RGVidWdMaXN0ZW5lci5oJywKQEAgLTM0ODYsNiArMzQ4OCw3IEBACiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdGF0dXNCYXJCdXR0b24uanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qcycsCisgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZUFnZW50LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcycsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNDc1NzUpCisrKyBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA2NSw2ICsxMDY1
LDggQEAKIAkJNzI2MjZFMDIwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAy
MkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAqLzsgfTsKIAkJNzI4NEFEREQwRTZGRUIz
MTAwMkVFRkJEIC8qIFVzZXJTdHlsZVNoZWV0TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyODRBRERCMEU2RkVCMzEwMDJFRUZCRCAvKiBV
c2VyU3R5bGVTaGVldExvYWRlci5jcHAgKi87IH07CiAJCTcyODRBRERFMEU2RkVCMzEwMDJFRUZC
RCAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI4NEFEREMwRTZGRUIzMTAwMkVFRkJEIC8qIFVzZXJTdHlsZVNo
ZWV0TG9hZGVyLmggKi87IH07CisJCTc1NDEzM0E4MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0
b3JUaW1lbGluZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oICovOyB9OworCQk3NTQxMzNBQTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3NTQxMzNBOTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAg
Ki87IH07CiAJCTc1NzkzRTgzMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFODAwRDBD
RTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5jcHAgKi87IH07CiAJCTc1NzkzRTg0MEQwQ0Uw
QjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZl
bnQuaCAqLzsgfTsKIAkJNzU3OTNFQzgwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1Nzkz
RUM2MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVudC5jcHAgKi87IH07CkBAIC02MTU0
LDYgKzYxNTYsOCBAQAogCQk3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRo
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYXN0UGF0aC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyODRBRERCMEU2RkVCMzEwMDJFRUZC
RCAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBVc2VyU3R5bGVTaGVldExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyODRBRERDMEU2RkVCMzEwMDJFRUZCRCAvKiBVc2VyU3R5bGVTaGVldExvYWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyU3R5bGVTaGVldExvYWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NTQxMzNBNzEwMkUwMEU4MDAwNzVE
MDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTc5M0U4MDBEMENF
MEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBNZXNzYWdlRXZlbnQuY3BwOyBwYXRoID0gZG9tL01lc3NhZ2VFdmVudC5j
cHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNzU3OTNFODEwRDBDRTBCMzAwN0ZD
MEFDIC8qIE1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TWVzc2FnZUV2ZW50Lmg7IHBhdGggPSBkb20vTWVzc2FnZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKIAkJNzU3OTNFODIwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lc3NhZ2VFdmVudC5pZGw7IHBhdGggPSBk
b20vTWVzc2FnZUV2ZW50LmlkbDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtOTk2
MSw2ICs5OTY1LDggQEAKIAkJMUM4MUI5NEQwRTk3MzJEOTAwMjY2RTA3IC8qIGluc3BlY3RvciAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzU0MTMzQTkx
MDJFMDBGNDAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwICovLAorCQkJCTc1
NDEzM0E3MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi8sCiAJ
CQkJMUM4MUI5NTkwRTk3MzMwODAwMjY2RTA3IC8qIGZyb250LWVuZCAqLywKIAkJCQk0MUYwNjE4
RDBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwICovLAogCQkJCTQxRjA2MThD
MEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5oICovLApAQCAtMTczMTMsNiArMTcz
MTksNyBAQAogCQkJCTBGRjUwMjYzMTAyQkE5MkMwMDY2RjM5QSAvKiBET01NZWRpYUludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY1MDI2QTEwMkJBOTQzMDA2NkYzOUEgLyogSlNNZWRp
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNTAyNzIxMDJCQTk2QTAwNjZGMzlBIC8qIE1lZGlh
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3NTQxMzNBODEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQzIxMDJDRjIzQzAw
MTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDNTEw
MkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0
ODRGQzgxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BpeGVsQXJyYXkuaCBpbiBIZWFkZXJzICov
LApAQCAtMTkzODEsNiArMTkzODgsNyBAQAogCQkJCTBGRjUwMjVDMTAyQkE5MDEwMDY2RjM5QSAv
KiBET01NZWRpYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjUwMjY5MTAyQkE5NDMwMDY2RjM5
QSAvKiBKU01lZGlhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjUwMjcxMTAyQkE5NkEwMDY2
RjM5QSAvKiBNZWRpYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3NTQxMzNBQTEwMkUwMEY0MDAw
NzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OTQ4NEZDMTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDk0ODRGQzQxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BhdHRlcm4uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDk0ODRGQzcxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BpeGVs
QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA0NzU3NSkK
KysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAs
NyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZUxvYWRlci5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JU
aW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUuaCIKQEAgLTEwNzAsNiArMTA3MSwx
MSBAQCBQYWdlKiBEb2N1bWVudDo6cGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZnJhbWUgPyBt
X2ZyYW1lLT5wYWdlKCkgOiAwOyAgICAKIH0KIAorSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogRG9j
dW1lbnQ6Omluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdAoreworICAgIHJldHVybiBwYWdl
KCkgPyBwYWdlKCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSA6IDA7Cit9CisKIFNldHRpbmdz
KiBEb2N1bWVudDo6c2V0dGluZ3MoKSBjb25zdAogewogICAgIHJldHVybiBtX2ZyYW1lID8gbV9m
cmFtZS0+c2V0dGluZ3MoKSA6IDA7CkBAIC0xMTUxLDYgKzExNTcsOSBAQCB2b2lkIERvY3VtZW50
OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjCiAgICAgaWYgKG1faW5TdHlsZVJlY2FsYykKICAg
ICAgICAgcmV0dXJuOyAvLyBHdWFyZCBhZ2FpbnN0IHJlLWVudHJhbmN5LiAtZHdoCiAKKyAgICBp
ZiAoaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgICAgICBpbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCktPndpbGxSZWNhbGN1bGF0ZVN0eWxlKCk7CisKICAgICBtX2luU3R5bGVSZWNhbGMgPSB0
cnVlOwogICAgIHN1c3BlbmRQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7CiAgICAgaWYgKHZpZXcoKSkK
QEAgLTEyMjMsNiArMTIzMiw5IEBAIGJhaWxfb3V0OgogICAgICAgICBtX2Nsb3NlQWZ0ZXJTdHls
ZVJlY2FsYyA9IGZhbHNlOwogICAgICAgICBpbXBsaWNpdENsb3NlKCk7CiAgICAgfQorCisgICAg
aWYgKGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICAgICAgaW5zcGVjdG9yVGltZWxpbmVB
Z2VudCgpLT5kaWRSZWNhbGN1bGF0ZVN0eWxlKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0
ZVN0eWxlSWZOZWVkZWQoKQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA0NzU3NSkKKysrIFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIEhUTUxIZWFkRWxlbWVudDsKICAgICBjbGFzcyBIVE1MSW5w
dXRFbGVtZW50OwogICAgIGNsYXNzIEhUTUxNYXBFbGVtZW50OworICAgIGNsYXNzIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ7CiAgICAgY2xhc3MgSW50UG9pbnQ7CiAgICAgY2xhc3MgSlNOb2RlOwog
ICAgIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7CkBAIC0zODMsNiArMzg0LDcg
QEAgcHVibGljOgogICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0g
Ly8gY2FuIGJlIE5VTEwKICAgICBQYWdlKiBwYWdlKCkgY29uc3Q7IC8vIGNhbiBiZSBOVUxMCiAg
ICAgU2V0dGluZ3MqIHNldHRpbmdzKCkgY29uc3Q7IC8vIGNhbiBiZSBOVUxMCisgICAgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIGNvbnN0OyAvLyBjYW4g
YmUgTlVMTAogCiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gY3JlYXRlUmFuZ2UoKTsKIApJbmRleDog
V2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZS5jcHAJ
KHJldmlzaW9uIDQ3NTc1KQorKysgV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5l
QWdlbnQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKQEAgLTI1MjgsNiArMjUyOSw5IEBAIGJvb2wgTm9k
ZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQoUGFzc1JlZlAKICAgICBBU1NFUlQoZXZlbnQtPnRhcmdl
dCgpKTsKICAgICBBU1NFUlQoIWV2ZW50LT50eXBlKCkuaXNOdWxsKCkpOyAvLyBKYXZhU2NyaXB0
IGNvZGUgY2FuIGNyZWF0ZSBhbiBldmVudCB3aXRoIGFuIGVtcHR5IG5hbWUsIGJ1dCBub3QgbnVs
bC4KIAorICAgIGlmIChkb2N1bWVudCgpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAg
ICAgIGRvY3VtZW50KCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKS0+d2lsbERpc3BhdGNoRE9N
RXZlbnQoKmV2ZW50KTsKKwogICAgIC8vIE1ha2UgYSB2ZWN0b3Igb2YgYW5jZXN0b3JzIHRvIHNl
bmQgdGhlIGV2ZW50IHRvLgogICAgIC8vIElmIHRoZSBub2RlIGlzIG5vdCBpbiBhIGRvY3VtZW50
IGp1c3Qgc2VuZCB0aGUgZXZlbnQgdG8gaXQuCiAgICAgLy8gQmUgc3VyZSB0byByZWYgYWxsIG9m
IG5vZGVzIHNpbmNlIGV2ZW50IGhhbmRsZXJzIGNvdWxkIHJlc3VsdCBpbiB0aGUgbGFzdCByZWZl
cmVuY2UgZ29pbmcgYXdheS4KQEAgLTI2MzksNiArMjY0Myw5IEBAIGRvbmVEaXNwYXRjaGluZzoK
ICAgICB9CiAKIGRvbmVXaXRoRGVmYXVsdDoKKyAgICBpZiAoZG9jdW1lbnQoKS0+aW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpKQorICAgICAgICBkb2N1bWVudCgpLT5pbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCktPmRpZERpc3BhdGNoRE9NRXZlbnQoKTsKKwogICAgIERvY3VtZW50Ojp1cGRhdGVTdHls
ZUZvckFsbERvY3VtZW50cygpOwogCiAgICAgcmV0dXJuICFldmVudC0+ZGVmYXVsdFByZXZlbnRl
ZCgpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAkocmV2aXNpb24gNDc1NzUpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJIVE1MUGFyc2VyLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MVmlld1NvdXJjZURvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcmVsb2FkU2Nhbm5lci5oIgpAQCAtMTY1NywxMCArMTY1
OCwxMyBAQCB2b2lkIEhUTUxUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlCiAgICAgaWYg
KCFtX2RvYy0+b3duZXJFbGVtZW50KCkpCiAgICAgICAgIHByaW50ZigiQmVnaW5uaW5nIHdyaXRl
IGF0IHRpbWUgJWRcbiIsIG1fZG9jLT5lbGFwc2VkVGltZSgpKTsKICNlbmRpZgotICAgIAorCiAg
ICAgaW50IHByb2Nlc3NlZENvdW50ID0gMDsKICAgICBkb3VibGUgc3RhcnRUaW1lID0gY3VycmVu
dFRpbWUoKTsKIAorICAgIGlmIChtX2RvYy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAg
ICAgICBtX2RvYy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpLT53aWxsV3JpdGVIVE1MKCk7Cisg
IAogICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jLT5mcmFtZSgpOwogCiAgICAgU3RhdGUgc3RhdGUg
PSBtX3N0YXRlOwpAQCAtMTc4MSw3ICsxNzg1LDEwIEBAIHZvaWQgSFRNTFRva2VuaXplcjo6d3Jp
dGUoY29uc3QgU2VnbWVudGUKICAgICBpZiAoIW1fZG9jLT5vd25lckVsZW1lbnQoKSkKICAgICAg
ICAgcHJpbnRmKCJFbmRpbmcgd3JpdGUgYXQgdGltZSAlZFxuIiwgbV9kb2MtPmVsYXBzZWRUaW1l
KCkpOwogI2VuZGlmCi0gICAgCisKKyAgICBpZiAobV9kb2MtPmluc3BlY3RvclRpbWVsaW5lQWdl
bnQoKSkKKyAgICAgICAgbV9kb2MtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKS0+ZGlkV3JpdGVI
VE1MKCk7CisKICAgICBtX2luV3JpdGUgPSB3YXNJbldyaXRlOwogCiAgICAgbV9zdGF0ZSA9IHN0
YXRlOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAJKHJldmlzaW9u
IDQ3NTc1KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1MSw2ICsyNTEsMjUgQEAgY29uc3QgU3RyaW5nJiBJbnNwZWN0b3JCYWNr
ZW5kOjpwbGF0Zm9ybQogICAgIHJldHVybiBwbGF0Zm9ybTsKIH0KIAordm9pZCBJbnNwZWN0b3JC
YWNrZW5kOjplbmFibGVUaW1lbGluZShib29sIGFsd2F5cykKK3sKKyAgICBpZiAobV9pbnNwZWN0
b3JDb250cm9sbGVyKQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmVuYWJsZVRpbWVs
aW5lKGFsd2F5cyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6ZGlzYWJsZVRpbWVsaW5l
KGJvb2wgYWx3YXlzKQoreworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAg
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGlzYWJsZVRpbWVsaW5lKGFsd2F5cyk7Cit9CisKK2Jv
b2wgSW5zcGVjdG9yQmFja2VuZDo6dGltZWxpbmVFbmFibGVkKCkgY29uc3QKK3sKKyAgICBpZiAo
bV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9s
bGVyLT50aW1lbGluZUVuYWJsZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIGNvbnN0IFByb2ZpbGVzQXJyYXkmIEluc3BlY3RvckJh
Y2tlbmQ6OnByb2ZpbGVzKCkgY29uc3QKIHsgICAgCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZC5oCShyZXZpc2lvbiA0NzU3NSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsMTAgQEAgcHVibGljOgog
CiAgICAgY29uc3QgU3RyaW5nJiBwbGF0Zm9ybSgpIGNvbnN0OwogCisgICAgdm9pZCBlbmFibGVU
aW1lbGluZShib29sIGFsd2F5cyk7CisgICAgdm9pZCBkaXNhYmxlVGltZWxpbmUoYm9vbCBhbHdh
eXMpOworICAgIGJvb2wgdGltZWxpbmVFbmFibGVkKCkgY29uc3Q7CisKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKICAgICBjb25zdCBQcm9maWxlc0FycmF5JiBwcm9maWxlcygpIGNv
bnN0OwogCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAkocmV2aXNp
b24gNDc1NzUpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIERPTVN0
cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCk7CiAgICAgICAgIERPTVN0cmluZyBoaWRkZW5QYW5l
bHMoKTsKICAgICAgICAgRE9NU3RyaW5nIHBsYXRmb3JtKCk7CisgICAgICAgIHZvaWQgZW5hYmxl
VGltZWxpbmUoaW4gYm9vbGVhbiBhbHdheXMpOworICAgICAgICB2b2lkIGRpc2FibGVUaW1lbGlu
ZShpbiBib29sZWFuIGFsd2F5cyk7CisgICAgICAgIGJvb2xlYW4gdGltZWxpbmVFbmFibGVkKCk7
CiAgICAgICAgIFtJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uPW1vdmVXaW5kb3dCeV0gdm9pZCBtb3Zl
QnlVbnJlc3RyaWN0ZWQoaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSk7CiAgICAgICAgIHZvaWQgc2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQoaW4gdW5zaWduZWQgbG9uZyBoZWlnaHQpOwogICAgICAgICBb
Q3VzdG9tXSBET01PYmplY3Qgd3JhcENhbGxiYWNrKGluIERPTU9iamVjdCBjYWxsYmFjayk7Cklu
ZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
NDc1NzUpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5l
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkphdmFT
Y3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTA1LDYgKzEwNiw3IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBkZWJ1Z2dlckVuYWJsZWQKIHN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCBwcm9maWxlckVuYWJsZWRTZXR0aW5nTmFtZSA9ICJwcm9maWxlckVuYWJsZWQiOwog
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGluc3BlY3RvckF0dGFjaGVkSGVpZ2h0TmFtZSA9ICJp
bnNwZWN0b3JBdHRhY2hlZEhlaWdodCI7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgbGFzdEFj
dGl2ZVBhbmVsU2V0dGluZ05hbWUgPSAibGFzdEFjdGl2ZVBhbmVsIjsKK3N0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCB0aW1lbGluZUVuYWJsZWRTZXR0aW5nTmFtZSA9ICJ0aW1lbGluZUVuYWJsZWQi
OwogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdEF0dGFjaGVkSGVpZ2h0ID0gMzAwOwog
c3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1MC4wZjsKQEAgLTU0
Nyw2ICs1NDksMTAgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRGcm9udGVuZFBybwog
ICAgIG1faW5qZWN0ZWRTY3JpcHRPYmogPSBpbmplY3RlZFNjcmlwdE9iajsKICAgICBtX2Zyb250
ZW5kLnNldChuZXcgSW5zcGVjdG9yRnJvbnRlbmQodGhpcywgc2NyaXB0U3RhdGUsIHdlYkluc3Bl
Y3Rvck9iaikpOwogICAgIG1fZG9tQWdlbnQgPSBuZXcgSW5zcGVjdG9yRE9NQWdlbnQobV9mcm9u
dGVuZC5nZXQoKSk7CisKKyAgICBTZXR0aW5nIHRpbWVsaW5lRW5hYmxlZCA9IHNldHRpbmcodGlt
ZWxpbmVFbmFibGVkU2V0dGluZ05hbWUpOworICAgIGlmICh0aW1lbGluZUVuYWJsZWQudHlwZSgp
ID09IFNldHRpbmc6OkJvb2xlYW5UeXBlICYmIHRpbWVsaW5lRW5hYmxlZC5ib29sZWFuVmFsdWUo
KSkKKyAgICAgICAgbV90aW1lbGluZUFnZW50ID0gbmV3IEluc3BlY3RvclRpbWVsaW5lQWdlbnQo
bV9mcm9udGVuZC5nZXQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygp
CkBAIC02MDEsNyArNjA3LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSgpCiAK
ICAgICBtX2Zyb250ZW5kLnNldCgwKTsKICAgICBtX2luamVjdGVkU2NyaXB0T2JqID0gU2NyaXB0
T2JqZWN0KCk7CisKICAgICBtX2RvbUFnZW50ID0gMDsKKyAgICBtX3RpbWVsaW5lQWdlbnQgPSAw
OwogICAgIG1fc2NyaXB0U3RhdGUgPSAwOwogfQogCkBAIC02NzcsNiArNjg1LDkgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpyZXNldFNjcmlwdE9iagogICAgICAgICAoKml0KS0+dW5iaW5k
KCk7CiAjZW5kaWYKIAorICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCisgICAgICAgIG1fdGltZWxp
bmVBZ2VudC0+cmVzZXQoKTsKKwogICAgIG1fZnJvbnRlbmQtPnJlc2V0KCk7CiB9CiAKQEAgLTEw
MjIsNiArMTAzMyw0NiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZVJlc291cmNl
CiAgICAgICAgIG1fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQgPSB0cnVlOwogfQogCit2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmVuYWJsZVRpbWVsaW5lKGJvb2wgYWx3YXlzKQoreworICAgIGlm
ICghZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYWx3YXlzKQorICAgICAg
ICBzZXRTZXR0aW5nKHRpbWVsaW5lRW5hYmxlZFNldHRpbmdOYW1lLCBTZXR0aW5nKHRydWUpKTsK
KworICAgIGlmIChtX3RpbWVsaW5lQWdlbnQuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fdGltZWxpbmVBZ2VudCA9IG5ldyBJbnNwZWN0b3JUaW1lbGluZUFnZW50KG1fZnJvbnRlbmQu
Z2V0KCkpOworICAgIGlmIChtX2Zyb250ZW5kKQorICAgICAgICBtX2Zyb250ZW5kLT50aW1lbGlu
ZVdhc0VuYWJsZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNhYmxlVGlt
ZWxpbmUoYm9vbCBhbHdheXMpCit7CisgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChhbHdheXMpCisgICAgICAgIHNldFNldHRpbmcodGltZWxpbmVFbmFibGVk
U2V0dGluZ05hbWUsIFNldHRpbmcoZmFsc2UpKTsKKworICAgIGlmICghbV90aW1lbGluZUFnZW50
LmdldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RpbWVsaW5lQWdlbnQuc2V0KDApOwor
ICAgIGlmIChtX2Zyb250ZW5kKQorICAgICAgICBtX2Zyb250ZW5kLT50aW1lbGluZVdhc0Rpc2Fi
bGVkKCk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6dGltZWxpbmVFbmFibGVkKCkg
Y29uc3QKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIG1fdGltZWxpbmVBZ2VudC5nZXQoKTsKK30KKwogI2lmIEVOQUJMRShEQVRBQkFT
RSkKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkT3BlbkRhdGFiYXNlKERhdGFiYXNlKiBk
YXRhYmFzZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uKQogewpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaAkocmV2aXNpb24gNDc1NzUpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSW5zcGVj
dG9yQmFja2VuZDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckRPTUFn
ZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CitjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OwogY2xhc3MgSmF2YVNjcmlwdENhbGxGcmFtZTsKIGNsYXNzIEtVUkw7CiBjbGFzcyBOb2Rl
OwpAQCAtMjIwLDYgKzIyMSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXNvdXJjZVRyYWNraW5n
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQ7IH0KICAg
ICB2b2lkIGVuc3VyZVJlc291cmNlVHJhY2tpbmdTZXR0aW5nc0xvYWRlZCgpOwogCisgICAgdm9p
ZCBlbmFibGVUaW1lbGluZShib29sIGFsd2F5cyA9IGZhbHNlKTsKKyAgICB2b2lkIGRpc2FibGVU
aW1lbGluZShib29sIGFsd2F5cyA9IGZhbHNlKTsKKyAgICBib29sIHRpbWVsaW5lRW5hYmxlZCgp
IGNvbnN0OworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQoKSB7IHJl
dHVybiBtX3RpbWVsaW5lQWdlbnQuZ2V0KCk7IH0KKwogI2lmIEVOQUJMRShEQVRBQkFTRSkKICAg
ICB2b2lkIGRpZE9wZW5EYXRhYmFzZShEYXRhYmFzZSosIGNvbnN0IFN0cmluZyYgZG9tYWluLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAjZW5kaWYKQEAgLTMx
NSw2ICszMjEsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAg
ICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kPiBtX2Zyb250ZW5kOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3JET01BZ2VudD4gbV9kb21BZ2VudDsKKyAgICBPd25QdHI8SW5zcGVjdG9yVGltZWxpbmVB
Z2VudD4gbV90aW1lbGluZUFnZW50OwogICAgIFNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0
T2JqOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsK
SW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAJKHJldmlzaW9uIDQ3
NTc1KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODMsNiArMTgzLDIzIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnJlc291
cmNlVHJhY2tpbmcKICAgICBjYWxsU2ltcGxlRnVuY3Rpb24oInJlc291cmNlVHJhY2tpbmdXYXNE
aXNhYmxlZCIpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjp0aW1lbGluZVdhc0VuYWJs
ZWQoKQoreworICAgIGNhbGxTaW1wbGVGdW5jdGlvbigidGltZWxpbmVXYXNFbmFibGVkIik7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnRpbWVsaW5lV2FzRGlzYWJsZWQoKQoreworICAg
IGNhbGxTaW1wbGVGdW5jdGlvbigidGltZWxpbmVXYXNEaXNhYmxlZCIpOworfQorCit2b2lkIElu
c3BlY3RvckZyb250ZW5kOjpkaWRDb21wbGV0ZVRpbWVsaW5lUmVjb3JkKGNvbnN0IFNjcmlwdE9i
amVjdCYgcmVjb3JkT2JqKQoreworICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0
aW9uKG5ld0Z1bmN0aW9uQ2FsbCgiZGlkQ29tcGxldGVUaW1lbGluZVJlY29yZCIpKTsKKyAgICBm
dW5jdGlvbi0+YXBwZW5kQXJndW1lbnQocmVjb3JkT2JqKTsKKyAgICBmdW5jdGlvbi0+Y2FsbCgp
OworfQorCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiB2b2lkIEluc3BlY3RvckZy
b250ZW5kOjphdHRhY2hEZWJ1Z2dlcldoZW5TaG93bigpCiB7CkluZGV4OiBXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kLmgJKHJldmlzaW9uIDQ3NTc1KQorKysgV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZGlkR2V0Q2hpbGROb2RlcyhpbnQg
Y2FsbElkKTsKICAgICAgICAgdm9pZCBkaWRBcHBseURvbUNoYW5nZShpbnQgY2FsbElkLCBib29s
IHN1Y2Nlc3MpOwogCisgICAgICAgIHZvaWQgdGltZWxpbmVXYXNFbmFibGVkKCk7CisgICAgICAg
IHZvaWQgdGltZWxpbmVXYXNEaXNhYmxlZCgpOworCisgICAgICAgIHZvaWQgZGlkQ29tcGxldGVU
aW1lbGluZVJlY29yZChjb25zdCBTY3JpcHRPYmplY3QmIHJlY29yZE9iaik7CiAgICAgICAgIHZv
aWQgYWRkTm9kZXNUb1NlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIG5vZGVJZHMpOwogCiAgICAg
cHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY4IEBACisvKgorKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlvbi4KKyogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5oIgorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZC5oIgorCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCisgICAgOiBtX3Nlc3Npb25TdGFydFRpbWUo
Y3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpKQorICAgICwgbV9mcm9udGVuZChmcm9udGVuZCkK
KyAgICAsIG1fY3VycmVudFRpbWVsaW5lSXRlbSgwKQoreworICAgIEFTU0VSVChtX2Zyb250ZW5k
KTsKK30KKworSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6fkluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KQoreworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEaXNwYXRjaERPTUV2
ZW50KGNvbnN0IEV2ZW50JiBldmVudCkKK3sKKyAgICBUaW1lbGluZUl0ZW0qIG5ld0l0ZW0gPSBu
ZXdUaW1lbGluZUl0ZW0oRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW1UeXBlKTsKKyAgICBuZXdJdGVt
LT5hZGRET01FdmVudFByb3BlcnRpZXMobV9mcm9udGVuZCwgZXZlbnQpOworfQorCit2b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZERpc3BhdGNoRE9NRXZlbnQoKQoreworICAgIGRpZENv
bXBsZXRlQ3VycmVudFJlY29yZCgpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OndpbGxMYXlvdXQoKQoreworICAgIG5ld1RpbWVsaW5lSXRlbShMYXlvdXRUaW1lbGluZUl0ZW1U
eXBlKTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRMYXlvdXQoKQorewor
ICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZCgpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OndpbGxSZWNhbGN1bGF0ZVN0eWxlKCkKK3sKKyAgICBuZXdUaW1lbGluZUl0ZW0o
UmVjYWxjdWxhdGVTdHlsZXNUaW1lbGluZUl0ZW1UeXBlKTsKK30KKwordm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpkaWRSZWNhbGN1bGF0ZVN0eWxlKCkKK3sKKyAgICBkaWRDb21wbGV0ZUN1
cnJlbnRSZWNvcmQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsUGFp
bnQoKQoreworICAgIG5ld1RpbWVsaW5lSXRlbShQYWludFRpbWVsaW5lSXRlbVR5cGUpOworfQor
Cit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFBhaW50KCkKK3sKKyAgICBkaWRDb21w
bGV0ZUN1cnJlbnRSZWNvcmQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3
aWxsV3JpdGVIVE1MKCkKK3sKKyAgICBuZXdUaW1lbGluZUl0ZW0oUGFyc2VIVE1MVGltZWxpbmVJ
dGVtVHlwZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkV3JpdGVIVE1M
KCkKK3sKKyAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoKTsKK30KKwordm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpyZXNldCgpCit7CisgICAgbV9zZXNzaW9uU3RhcnRUaW1lID0gY3Vy
cmVudFRpbWVJbk1pbGxpc2Vjb25kcygpOworICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbS5zZXQo
MCk7Cit9CisKK0luc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlRpbWVsaW5lSXRlbSogSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6bmV3VGltZWxpbmVJdGVtKFRpbWVsaW5lSXRlbVR5cGUgdHlwZSkKK3sK
KyAgICBtX2N1cnJlbnRUaW1lbGluZUl0ZW0gPSBuZXcgVGltZWxpbmVJdGVtKG1fZnJvbnRlbmQs
IG1fY3VycmVudFRpbWVsaW5lSXRlbS5yZWxlYXNlKCksIHNlc3Npb25UaW1lSW5NaWxsaXNlY29u
ZHMoKSwgdHlwZSk7CisgICAgcmV0dXJuIG1fY3VycmVudFRpbWVsaW5lSXRlbS5nZXQoKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQo
KQoreworICAgIE93blB0cjxUaW1lbGluZUl0ZW0+IGl0ZW0obV9jdXJyZW50VGltZWxpbmVJdGVt
LnJlbGVhc2UoKSk7CisgICAgbV9jdXJyZW50VGltZWxpbmVJdGVtID0gaXRlbS0+cmVsZWFzZVBy
ZXZpb3VzKCk7CisKKyAgICBpdGVtLT5hZGRJdGVtUHJvcGVydGllcyhzZXNzaW9uVGltZUluTWls
bGlzZWNvbmRzKCkpOworICAgIGlmIChtX2N1cnJlbnRUaW1lbGluZUl0ZW0uZ2V0KCkpCisgICAg
ICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbS0+YWRkQ2hpbGQoaXRlbS0+c2NyaXB0X29iamVjdCgp
KTsKKyAgICBlbHNlCisgICAgICAgIG1fZnJvbnRlbmQtPmRpZENvbXBsZXRlVGltZWxpbmVSZWNv
cmQoaXRlbS0+c2NyaXB0X29iamVjdCgpKTsKK30KKworZG91YmxlIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmN1cnJlbnRUaW1lSW5NaWxsaXNlY29uZHMoKQoreworICAgIHJldHVybiBjdXJyZW50
VGltZSgpICogMTAwMC4wOworfQorCitkb3VibGUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2Vz
c2lvblRpbWVJbk1pbGxpc2Vjb25kcygpCit7CisgICAgcmV0dXJuIGN1cnJlbnRUaW1lSW5NaWxs
aXNlY29uZHMoKSAtIG1fc2Vzc2lvblN0YXJ0VGltZTsKK30KKworSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6VGltZWxpbmVJdGVtOjpUaW1lbGluZUl0ZW0oSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250
ZW5kLCBQYXNzT3duUHRyPFRpbWVsaW5lSXRlbT4gcHJldmlvdXMsIGRvdWJsZSBzdGFydFRpbWUs
IFRpbWVsaW5lSXRlbVR5cGUgaXRlbVR5cGUpCisgICAgOiBtX3N0YXJ0VGltZShzdGFydFRpbWUp
CisgICAgLCBtX2l0ZW1UeXBlKGl0ZW1UeXBlKQorICAgICwgbV9zY3JpcHRPYmplY3QoZnJvbnRl
bmQtPm5ld1NjcmlwdE9iamVjdCgpKQorICAgICwgbV9jaGlsZE9iamVjdHMoZnJvbnRlbmQtPm5l
d1NjcmlwdEFycmF5KCkpCisgICAgLCBtX3ByZXZpb3VzKHByZXZpb3VzKQoreworfQorCit2b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlRpbWVsaW5lSXRlbTo6YWRkSXRlbVByb3BlcnRpZXMo
ZG91YmxlIGVuZFRpbWUpCit7CisgICAgbV9zY3JpcHRPYmplY3Quc2V0KCJ0aW1lIiwgbV9zdGFy
dFRpbWUpOworICAgIG1fc2NyaXB0T2JqZWN0LnNldCgidHlwZSIsIHN0YXRpY19jYXN0PGludD4o
bV9pdGVtVHlwZSkpOworICAgIG1fc2NyaXB0T2JqZWN0LnNldCgiZHVyYXRpb24iLCBlbmRUaW1l
IC0gbV9zdGFydFRpbWUpOworICAgIGlmIChtX2NoaWxkT2JqZWN0cy5sZW5ndGgoKSkKKyAgICAg
ICAgbV9zY3JpcHRPYmplY3Quc2V0KCJjaGlsZHJlbiIsIG1fY2hpbGRPYmplY3RzKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpUaW1lbGluZUl0ZW06OmFkZERPTUV2ZW50UHJv
cGVydGllcyhJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIGNvbnN0IEV2ZW50JiBldmVudCkK
K3sKKyAgICBTY3JpcHRPYmplY3QgZGF0YSA9IGZyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsK
KyAgICBkYXRhLnNldCgidHlwZSIsIGV2ZW50LnR5cGUoKS5zdHJpbmcoKSk7CisgICAgbV9zY3Jp
cHRPYmplY3Quc2V0KCJkYXRhIiwgZGF0YSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6VGltZWxpbmVJdGVtOjphZGRDaGlsZChTY3JpcHRPYmplY3QmIGNoaWxkT2JqZWN0KQor
eworICAgIG1fY2hpbGRPYmplY3RzLnNldChtX2NoaWxkT2JqZWN0cy5sZW5ndGgoKSwgY2hpbGRP
YmplY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDExMyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyoKKyog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiBk
aXN0cmlidXRpb24uCisqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBJbnNwZWN0b3JUaW1l
bGluZUFnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudF9oCisKKyNpbmNsdWRl
ICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRBcnJheS5oIgorCisjaW5jbHVkZSA8
V1RGL093blB0ci5oPgorI2luY2x1ZGUgPFdURi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKyAgICBjbGFzcyBFdmVudDsKKyAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsK
KworICAgIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgLy8gTXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBUaW1lbGluZS5qcworICAgICAgICBlbnVt
IFRpbWVsaW5lSXRlbVR5cGUgeworICAgICAgICAgICAgRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW1U
eXBlID0gMCwKKyAgICAgICAgICAgIExheW91dFRpbWVsaW5lSXRlbVR5cGUgPSAxLAorICAgICAg
ICAgICAgUmVjYWxjdWxhdGVTdHlsZXNUaW1lbGluZUl0ZW1UeXBlID0gMiwKKyAgICAgICAgICAg
IFBhaW50VGltZWxpbmVJdGVtVHlwZSA9IDMsCisgICAgICAgICAgICBQYXJzZUhUTUxUaW1lbGlu
ZUl0ZW1UeXBlID0gNCwKKyAgICAgICAgfTsKKworICAgICAgICBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCk7CisgICAgICAgIH5JbnNwZWN0b3JUaW1l
bGluZUFnZW50KCk7CisKKyAgICAgICAgdm9pZCByZXNldCgpOworCisgICAgICAgIC8vIE1ldGhv
ZHMgY2FsbGVkIGZyb20gV2ViQ29yZS4KKyAgICAgICAgdm9pZCB3aWxsRGlzcGF0Y2hET01FdmVu
dChjb25zdCBFdmVudCYpOworICAgICAgICB2b2lkIGRpZERpc3BhdGNoRE9NRXZlbnQoKTsKKyAg
ICAgICAgdm9pZCB3aWxsTGF5b3V0KCk7CisgICAgICAgIHZvaWQgZGlkTGF5b3V0KCk7CisgICAg
ICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKKyAgICAgICAgdm9pZCBkaWRSZWNhbGN1
bGF0ZVN0eWxlKCk7CisgICAgICAgIHZvaWQgd2lsbFBhaW50KCk7CisgICAgICAgIHZvaWQgZGlk
UGFpbnQoKTsKKyAgICAgICAgdm9pZCBkaWRXcml0ZUhUTUwoKTsKKyAgICAgICAgdm9pZCB3aWxs
V3JpdGVIVE1MKCk7CisgICAgcHJpdmF0ZToKKworICAgICAgICBjbGFzcyBUaW1lbGluZUl0ZW0g
eworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgVGltZWxpbmVJdGVtKEluc3BlY3RvckZyb250
ZW5kKiwgUGFzc093blB0cjxUaW1lbGluZUl0ZW0+LCBkb3VibGUgc3RhcnRUaW1lLCBUaW1lbGlu
ZUl0ZW1UeXBlIGl0ZW1UeXBlKTsKKworICAgICAgICAgIH5UaW1lbGluZUl0ZW0oKSB7IH0KKwor
ICAgICAgICAgIFRpbWVsaW5lSXRlbSogcHJldmlvdXMoKSBjb25zdCB7IHJldHVybiBtX3ByZXZp
b3VzLmdldCgpOyB9CisKKyAgICAgICAgICBQYXNzT3duUHRyPFRpbWVsaW5lSXRlbSo+IHJlbGVh
c2VQcmV2aW91cygpIHsgcmV0dXJuIG1fcHJldmlvdXMucmVsZWFzZSgpOyB9CisKKyAgICAgICAg
ICBTY3JpcHRPYmplY3QmIHNjcmlwdF9vYmplY3QoKSB7IHJldHVybiBtX3NjcmlwdE9iamVjdDsg
fQorCisgICAgICAgICAgdm9pZCBhZGRDaGlsZChTY3JpcHRPYmplY3QmIGNoaWxkT2JqZWN0KTsK
KyAgICAgICAgICAKKyAgICAgICAgICB2b2lkIGFkZERPTUV2ZW50UHJvcGVydGllcyhJbnNwZWN0
b3JGcm9udGVuZCosIGNvbnN0IEV2ZW50Jik7CisKKyAgICAgICAgICB2b2lkIGFkZEl0ZW1Qcm9w
ZXJ0aWVzKGRvdWJsZSBlbmRUaW1lKTsKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICBkb3Vi
bGUgbV9zdGFydFRpbWU7CisgICAgICAgICAgVGltZWxpbmVJdGVtVHlwZSBtX2l0ZW1UeXBlOwor
ICAgICAgICAgIFNjcmlwdE9iamVjdCBtX3NjcmlwdE9iamVjdDsKKyAgICAgICAgICBTY3JpcHRB
cnJheSBtX2NoaWxkT2JqZWN0czsKKyAgICAgICAgICBPd25QdHI8VGltZWxpbmVJdGVtPiBtX3By
ZXZpb3VzOworICAgICAgICB9OworCisgICAgICAgIFRpbWVsaW5lSXRlbSogbmV3VGltZWxpbmVJ
dGVtKFRpbWVsaW5lSXRlbVR5cGUpOworCisgICAgICAgIHZvaWQgZGlkQ29tcGxldGVDdXJyZW50
UmVjb3JkKCk7CisKKyAgICAgICAgZG91YmxlIHNlc3Npb25UaW1lSW5NaWxsaXNlY29uZHMoKTsK
KworICAgICAgICBzdGF0aWMgZG91YmxlIGN1cnJlbnRUaW1lSW5NaWxsaXNlY29uZHMoKTsKKwor
ICAgICAgICBkb3VibGUgbV9zZXNzaW9uU3RhcnRUaW1lOworICAgICAgICBJbnNwZWN0b3JGcm9u
dGVuZCogbV9mcm9udGVuZDsKKyAgICAgICAgT3duUHRyPFRpbWVsaW5lSXRlbT4gbV9jdXJyZW50
VGltZWxpbmVJdGVtOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vICFkZWZpbmVkKEluc3BlY3RvclRpbWVsaW5lQWdlbnRfaCkKSW5kZXg6IFdlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZUFnZW50LmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZUFnZW50LmpzCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lQWdlbnQuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudCA9IGZ1bmN0aW9uKCkgewor
ICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KK30KKworLy8gTXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0
aCBJbnNwZWN0b3JUaW1lbGluZS5oCitXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5JdGVtVHlw
ZSA9IHsKKyAgICBET01EaXNwYXRjaCAgICAgICA6IDAsCisgICAgTGF5b3V0ICAgICAgICAgICAg
OiAxLAorICAgIFJlY2FsY3VsYXRlU3R5bGVzIDogMiwKKyAgICBQYWludCAgICAgICAgICAgICA6
IDMsCisgICAgUGFyc2VIVE1MICAgICAgICAgOiA0Cit9OworCitXZWJJbnNwZWN0b3IuZGlkQ29t
cGxldGVUaW1lbGluZVJlY29yZCA9IGZ1bmN0aW9uKHJlY29yZCkgeworICAgIC8vIE5vdCBpbXBs
ZW1lbnRlZC4KK30KKworV2ViSW5zcGVjdG9yLnRpbWVsaW5lV2FzRW5hYmxlZCA9IGZ1bmN0aW9u
KCkgeworICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KK30KKworV2ViSW5zcGVjdG9yLnRpbWVsaW5l
V2FzRGlzYWJsZWQgPSBmdW5jdGlvbigpIHsKKyAgICAvLyBOb3QgaW1wbGVtZW50ZWQuCit9Cklu
ZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCShyZXZpc2lv
biA0NzU3NSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
UHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkRPTUFnZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJJbmplY3RlZFNjcmlwdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGltZWxpbmVBZ2VudC5qcyI+PC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keSBjbGFzcz0iZGV0YWNoZWQiPgogICAgIDxkaXYgaWQ9InRvb2xiYXIi
PgpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDQ3NTc1KQorKysgV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJI
VE1MRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIK
ICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlJlbmRlclBhcnQuaCIKQEAgLTUyMSw2ICs1MjIsOSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0
KGJvb2wgYWxsb3dTdWJ0cmVlCiAgICAgaWYgKGlzUGFpbnRpbmcoKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgaWYgKGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICAgICAgaW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpLT53aWxsTGF5b3V0KCk7CisKICAgICBpZiAoIWFsbG93U3VidHJlZSAm
JiBtX2xheW91dFJvb3QpIHsKICAgICAgICAgbV9sYXlvdXRSb290LT5tYXJrQ29udGFpbmluZ0Js
b2Nrc0ZvckxheW91dChmYWxzZSk7CiAgICAgICAgIG1fbGF5b3V0Um9vdCA9IDA7CkBAIC03MDQs
NiArNzA4LDkgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZQogICAg
ICAgICBBU1NFUlQobV9lbnF1ZXVlRXZlbnRzKTsKICAgICB9CiAKKyAgICBpZiAoaW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpKQorICAgICAgICBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCktPmRpZExh
eW91dCgpOworCiAgICAgbV9uZXN0ZWRMYXlvdXRDb3VudC0tOwogfQogCkBAIC0xNTI2LDcgKzE1
MzMsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDbwogewogICAg
IGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgaWYgKGluc3BlY3Rv
clRpbWVsaW5lQWdlbnQoKSkKKyAgICAgICAgaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpLT53aWxs
UGFpbnQoKTsKKwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lKCktPmRvY3VtZW50KCk7
CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xNTkwLDYgKzE2MDAsOSBAQCB2b2lkIEZyYW1lVmlldzo6
cGFpbnRDb250ZW50cyhHcmFwaGljc0NvCiAKICAgICBpZiAoaXNUb3BMZXZlbFBhaW50ZXIpCiAg
ICAgICAgIHNDdXJyZW50UGFpbnRUaW1lU3RhbXAgPSAwOworCisgICAgaWYgKGluc3BlY3RvclRp
bWVsaW5lQWdlbnQoKSkKKyAgICAgICAgaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpLT5kaWRQYWlu
dCgpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6c2V0UGFpbnRSZXN0cmljdGlvbihQYWludFJlc3Ry
aWN0aW9uIHByKQpAQCAtMTgzMSw0ICsxODQ0LDkgQEAgSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252
ZXJ0RnJvbUNvbnRhaW5pbgogICAgIHJldHVybiBwYXJlbnRQb2ludDsKIH0KIAorSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogRnJhbWVWaWV3OjppbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgpID8gbV9mcmFtZS0+cGFnZSgpLT5pbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkgOiAwOworfQorICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgJKHJldmlzaW9uIDQ3NTc1KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIENvbG9yOwogY2xhc3MgRXZl
bnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlld1ByaXZhdGU7CitjbGFzcyBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQbGF0
Zm9ybU1vdXNlRXZlbnQ7CkBAIC0yMzUsNiArMjM2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
dXBkYXRlV2lkZ2V0cygpOwogICAgIHZvaWQgc2Nyb2xsVG9BbmNob3IoKTsKKworICAgIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdDsKICAgICAK
ICAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhcnMoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNp
b24gNDc1NzUpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDYgKzQwLDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpc3RvcnlJ
dGVtLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmF2
aWdhdG9yLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKQEAgLTYzMiw0ICs2
MzMsOSBAQCBib29sIFBhZ2U6OmphdmFTY3JpcHRVUkxzQXJlQWxsb3dlZCgpIGNvCiAgICAgcmV0
dXJuIG1famF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkOwogfQogCitJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiBQYWdlOjppbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pbnNwZWN0b3JDb250cm9sbGVyLT50aW1lbGluZUFnZW50KCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNDc1NzUpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiAgICAgY2xhc3MgSW5z
cGVjdG9yQ29udHJvbGxlcjsKKyAgICBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogICAg
IGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgUGFnZUdyb3VwOwogICAgIGNsYXNzIFBsdWdpbkRhdGE7
CkBAIC0yMTAsNiArMjExLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNl
dEphdmFTY3JpcHRVUkxzQXJlQWxsb3dlZChib29sKTsKICAgICAgICAgYm9vbCBqYXZhU2NyaXB0
VVJMc0FyZUFsbG93ZWQoKSBjb25zdDsKIAorICAgICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3Q7CiAgICAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCBpbml0R3JvdXAoKTsKIAo=
</data>
<flag name="review"
          id="19418"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38838</attachid>
            <date>2009-08-31 15:37:25 -0700</date>
            <delta_ts>2009-09-03 13:56:52 -0700</delta_ts>
            <desc>Addresses review suggestions and updates to r47896</desc>
            <filename>TimelineAgent.diff</filename>
            <type>text/plain</type>
            <size>54404</size>
            <attacher name="Kelly Norton">knorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWIyMzkwOC4uMzFhY2Q3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MyBAQAorMjAwOS0wOC0zMSAgS2VsbHkgTm9ydG9u
ICA8a25vcnRvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogQWRkcyBhIHRpbWVsaW5lIGFnZW50IHRvIElu
c3BlY3RvckNvbnRyb2xsZXIgdGhhdCBjb2xsZWN0cworICAgICAgICBoaWdoLWxldmVsIHRpbWlu
ZyBkYXRhIGFib3V0IGV2ZW50IGRpc3BhdGNoLCBsYXlvdXQsIHBhaW50aW5nIGFuZCBIVE1MCisg
ICAgICAgIHBhcnNpbmcgYW5kIG1ha2VzIGl0IGF2YWlsYWJsZSB0byBJbnNwZWN0b3IuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTUwMworCisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEdlbmVyaWNF
dmVudCk6CisgICAgICAgICogaHRtbC9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlbml6ZXI6OndyaXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRGlzcGF0
Y2hUaW1lbGluZUl0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTURpc3BhdGNo
VGltZWxpbmVJdGVtOjpET01EaXNwYXRjaFRpbWVsaW5lSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01EaXNwYXRjaFRpbWVsaW5lSXRlbTo6Y29udmVydFRvU2NyaXB0T2JqZWN0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpET01EaXNwYXRjaFRpbWVsaW5lSXRlbTo6fkRPTURpc3BhdGNoVGltZWxpbmVJ
dGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjplbmFibGVUaW1lbGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpkaXNhYmxlVGltZWxpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQmFja2VuZDo6dGltZWxpbmVFbmFibGVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRGcm9udGVuZFByb3h5
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlc2V0U2NyaXB0T2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVUaW1lbGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNhYmxlVGltZWxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dGltZWxpbmVFbmFi
bGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dGltZWxpbmVBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kOjp0aW1lbGluZVdhc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmQ6OnRpbWVsaW5lV2FzRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZEl0ZW1Ub1RpbWVsaW5lKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGlzcGF0Y2hET01FdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWREaXNwYXRjaERP
TUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxM
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTGF5
b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxSZWNh
bGN1bGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZFJlY2FsY3VsYXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6d2lsbFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OndpbGxXcml0ZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6ZGlkV3JpdGVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpjdXJyZW50VGltZUluTWlsbGlzZWNvbmRzKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNlc3Npb25UaW1lSW5NaWxsaXNlY29uZHMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlRpbWVsaW5lSXRlbTo6VGltZWxpbmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVs
aW5lSXRlbTo6YWRkVG9UaW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZUl0ZW06
OmNvbnZlcnRUb1NjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZUl0ZW06
OmNvbnZlcnRDaGlsZHJlblRvU2NyaXB0QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxp
bmVJdGVtOjphZGRDaGlsZEl0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW0u
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxp
bmVJdGVtOjp+VGltZWxpbmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lSXRlbTo6
cHJldmlvdXMpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVJdGVtOjpyZWxlYXNlUHJldmlv
dXMpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVJdGVtOjpzZXRFbmRUaW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbWVsaW5lSXRlbTo6dHlwZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZUFnZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
aW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5hZGRJdGVtVG9UaW1lbGluZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IudGltZWxpbmVXYXNFbmFibGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci50aW1lbGluZVdhc0Rpc2FibGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAg
ICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omluc3BlY3RvclRp
bWVsaW5lQWdlbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDA5LTA4LTMxICBUb3Ig
QXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBcml5YSBIaWRheWF0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmMGJkZDU4Li41ZTA4Yjk1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTQy
NSw2ICsxNDI1LDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmgn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3Iv
RE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvRE9N
RGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5o
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAnLApAQCAt
MTQzOSw2ICsxNDQxLDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCcsCisgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNj
cmlwdENhbGxGcmFtZS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVn
TGlzdGVuZXIuaCcsCkBAIC0xNDQ4LDYgKzE0NTIsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9KYXZhU2NyaXB0UHJvZmlsZS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlw
dFByb2ZpbGVOb2RlLmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9m
aWxlTm9kZS5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvVGltZWxpbmVJdGVtLmNwcCcsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL1RpbWVsaW5lSXRlbS5oJywKICAgICAgICAgICAgICdsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwJywKQEAgLTM1MDEsNiArMzUwNyw3IEBACiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdW1tYXJ5QmFyLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMnLAorICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGltZWxpbmVBZ2VudC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBiNDFiNjhiLi5iYWFlNzNkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEyMiw2ICsxMTIyLDEwIEBACiAJCTcyNjI2
RTAyMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8q
IEZvbnRGYXN0UGF0aC5jcHAgKi87IH07CiAJCTcyODRBREREMEU2RkVCMzEwMDJFRUZCRCAvKiBV
c2VyU3R5bGVTaGVldExvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Mjg0QUREQjBFNkZFQjMxMDAyRUVGQkQgLyogVXNlclN0eWxlU2hlZXRM
b2FkZXIuY3BwICovOyB9OwogCQk3Mjg0QURERTBFNkZFQjMxMDAyRUVGQkQgLyogVXNlclN0eWxl
U2hlZXRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyODRBRERDMEU2RkVCMzEwMDJFRUZCRCAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5oICov
OyB9OworCQk3NTA5MkJGRTEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0
ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzUw
OTJCRkMxMDRCODBGOTAwM0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmNwcCAqLzsg
fTsKKwkJNzUwOTJCRkYxMDRCODBGOTAwM0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVt
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTA5MkJG
RDEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCAqLzsgfTsKKwkJ
NzU0MTMzQTgxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E3MTAyRTAw
RTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi87IH07CisJCTc1NDEzM0FB
MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E5MTAyRTAwRjQwMDA3
NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCAqLzsgfTsKIAkJNzU3OTNFODMwRDBD
RTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2Fn
ZUV2ZW50LmNwcCAqLzsgfTsKIAkJNzU3OTNFODQwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VF
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3
OTNFODEwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk3NTc5M0VD
ODBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFQzYwRDBDRTcyRDAwN0ZDMEFDIC8q
IEpTTWVzc2FnZUV2ZW50LmNwcCAqLzsgfTsKQEAgLTExMjksNiArMTEzMyw4IEBACiAJCTc1Nzkz
RUQzMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRUQwMEQwQ0U4NUIwMDdGQzBBQyAv
KiBET01NZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJNzU3OTNFRDQwRDBDRTg1QjAwN0ZDMEFDIC8q
IERPTU1lc3NhZ2VFdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1NzkzRUQxMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnQubW0g
Ki87IH07CiAJCTc1NzkzRUQ1MEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3
OTNFRDIwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggKi87IH07
CisJCTc1QTk0QTAzMTA0Qjc0RkIwMDA2NjczQyAvKiBUaW1lbGluZUl0ZW0uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzVBOTRBMDExMDRCNzRGQjAw
MDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5jcHAgKi87IH07CisJCTc1QTk0QTA0MTA0Qjc0RkIwMDA2
NjczQyAvKiBUaW1lbGluZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc1QTk0QTAyMTA0Qjc0RkIwMDA2NjczQyAvKiBUaW1lbGluZUl0ZW0uaCAq
LzsgfTsKIAkJN0ExRTg4RjUxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUU4OEYzMTAxQ0Mz
ODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5jcHAgKi87IH07CiAJCTdBMUU4OEY2MTAxQ0MzODQw
MDBDNERGNSAvKiBTY3JpcHRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0ExRTg4RjQxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5Lmgg
Ki87IH07CiAJCTdBMjQ1ODdCMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTI0NTg3
OTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuY3BwICovOyB9OwpAQCAtNjI5
MCw2ICs2Mjk2LDEwIEBACiAJCTcyNjI2RTAxMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBh
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhc3RQYXRo
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4NEFEREIwRTZGRUIzMTAwMkVF
RkJEIC8qIFVzZXJTdHlsZVNoZWV0TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVzZXJTdHlsZVNoZWV0TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI4NEFEREMwRTZGRUIzMTAwMkVFRkJEIC8qIFVzZXJTdHlsZVNoZWV0TG9h
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJTdHlsZVNoZWV0TG9h
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1MDkyQkZDMTA0QjgwRjkwMDNE
RDE2OCAvKiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTc1MDkyQkZEMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRj
aFRpbWVsaW5lSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01EaXNw
YXRjaFRpbWVsaW5lSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NTQxMzNB
NzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NTc5M0U4MDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZXNzYWdlRXZlbnQuY3BwOyBwYXRoID0gZG9t
L01lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNzU3OTNF
ODEwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTWVzc2FnZUV2ZW50Lmg7IHBhdGggPSBkb20vTWVzc2FnZUV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNzU3OTNFODIwRDBDRTBCMzAwN0ZDMEFD
IC8qIE1lc3NhZ2VFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lc3NhZ2VFdmVu
dC5pZGw7IHBhdGggPSBkb20vTWVzc2FnZUV2ZW50LmlkbDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwpAQCAtNjI5OCw2ICs2MzA4LDggQEAKIAkJNzU3OTNFRDAwRDBDRTg1QjAwN0ZDMEFD
IC8qIERPTU1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NTWVzc2FnZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NzkzRUQx
MEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2
ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU1lc3Nh
Z2VFdmVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1QTk0QTAx
MTA0Qjc0RkIwMDA2NjczQyAvKiBUaW1lbGluZUl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGltZWxpbmVJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzVBOTRBMDIxMDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lbGluZUl0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0ExRTg4RjMxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEFycmF5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0ExRTg4RjQxMDFDQzM4NDAwMEM0REY1
IC8qIFNjcmlwdEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBMjQ1ODc5MTAyMUVBRjQw
MDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JET01BZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMDEwOSw2ICsxMDEyMSwxMiBAQAogCQkxQzgxQjk0RDBFOTczMkQ5MDAyNjZF
MDcgLyogaW5zcGVjdG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQk3NTA5MkJGQzEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0
ZW0uY3BwICovLAorCQkJCTc1MDkyQkZEMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRjaFRp
bWVsaW5lSXRlbS5oICovLAorCQkJCTc1QTk0QTAxMTA0Qjc0RkIwMDA2NjczQyAvKiBUaW1lbGlu
ZUl0ZW0uY3BwICovLAorCQkJCTc1QTk0QTAyMTA0Qjc0RkIwMDA2NjczQyAvKiBUaW1lbGluZUl0
ZW0uaCAqLywKKwkJCQk3NTQxMzNBOTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAgKi8sCisJCQkJNzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQuaCAqLywKIAkJCQkxQzgxQjk1OTBFOTczMzA4MDAyNjZFMDcgLyogZnJv
bnQtZW5kICovLAogCQkJCTQxRjA2MThEMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2Fn
ZS5jcHAgKi8sCiAJCQkJNDFGMDYxOEMwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdl
LmggKi8sCkBAIC0xNzUzOCw2ICsxNzU1Niw3IEBACiAJCQkJMEZGNTAyNjMxMDJCQTkyQzAwNjZG
MzlBIC8qIERPTU1lZGlhSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjUwMjZBMTAy
QkE5NDMwMDY2RjM5QSAvKiBKU01lZGlhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY1MDI3MjEw
MkJBOTZBMDA2NkYzOUEgLyogTWVkaWEuaCBpbiBIZWFkZXJzICovLAorCQkJCTc1NDEzM0E4MTAy
RTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTQ4NEZDMjEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5NDg0RkM1MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDODEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGl4
ZWxBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNzU3OSw2ICsxNzU5OCw4IEBACiAJCQkJNTEw
RDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFBQkFFMUIxMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVy
cm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29j
a2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3NUE5NEEwNDEwNEI3NEZCMDAw
NjY3M0MgLyogVGltZWxpbmVJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQk3NTA5MkJGRjEwNEI4
MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMTk2MzQsNiArMTk2NTUsNyBAQAogCQkJCTBGRjUwMjVDMTAyQkE5MDEwMDY2RjM5QSAvKiBE
T01NZWRpYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjUwMjY5MTAyQkE5NDMwMDY2RjM5QSAv
KiBKU01lZGlhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjUwMjcxMTAyQkE5NkEwMDY2RjM5
QSAvKiBNZWRpYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3NTQxMzNBQTEwMkUwMEY0MDAwNzVE
MDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4
NEZDMTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDk0ODRGQzQxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BhdHRlcm4uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDk0ODRGQzcxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BpeGVsQXJy
YXkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xOTY3Nyw2ICsxOTY5OSw4IEBACiAJCQkJNTEwRDRB
MzMxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxl
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyog
U29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzVBOTRBMDMx
MDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3
NTA5MkJGRTEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOWZlMzBiYi4uMzYxZTM0OSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtODAsNiArODAsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJ
bWFnZUxvYWRlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUuaCIKQEAgLTEx
NTcsNiArMTE1OCwxMCBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBj
aGFuZ2UpCiAgICAgaWYgKG1faW5TdHlsZVJlY2FsYykKICAgICAgICAgcmV0dXJuOyAvLyBHdWFy
ZCBhZ2FpbnN0IHJlLWVudHJhbmN5LiAtZHdoCiAKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOworICAgIGlmICh0aW1l
bGluZUFnZW50KQorICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUmVjYWxjdWxhdGVTdHlsZSgp
OworCiAgICAgbV9pblN0eWxlUmVjYWxjID0gdHJ1ZTsKICAgICBzdXNwZW5kUG9zdEF0dGFjaENh
bGxiYWNrcygpOwogICAgIGlmICh2aWV3KCkpCkBAIC0xMjI5LDYgKzEyMzQsOSBAQCBiYWlsX291
dDoKICAgICAgICAgbV9jbG9zZUFmdGVyU3R5bGVSZWNhbGMgPSBmYWxzZTsKICAgICAgICAgaW1w
bGljaXRDbG9zZSgpOwogICAgIH0KKworICAgIGlmICh0aW1lbGluZUFnZW50KQorICAgICAgICB0
aW1lbGluZUFnZW50LT5kaWRSZWNhbGN1bGF0ZVN0eWxlKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6
OnVwZGF0ZVN0eWxlSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYTc3Yjg3My4uNTg1MjAxMSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIKICNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyLmgiCisjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgpAQCAtODMsMTIgKzg0LDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBIVE1MSGVhZEVsZW1lbnQ7CiAgICAgY2xhc3Mg
SFRNTElucHV0RWxlbWVudDsKICAgICBjbGFzcyBIVE1MTWFwRWxlbWVudDsKKyAgICBjbGFzcyBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OwogICAgIGNsYXNzIEludFBvaW50OwogICAgIGNsYXNzIEpT
Tm9kZTsKICAgICBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwogICAgIGNsYXNz
IE5vZGVGaWx0ZXI7CiAgICAgY2xhc3MgTm9kZUl0ZXJhdG9yOwotICAgIGNsYXNzIFBhZ2U7CiAg
ICAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogICAgIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVj
dGlvbjsKICAgICBjbGFzcyBSYW5nZTsKQEAgLTM4Myw2ICszODQsNyBAQCBwdWJsaWM6CiAgICAg
RnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfSAvLyBjYW4gYmUgTlVMTAog
ICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKICAgICBTZXR0aW5ncyogc2V0
dGluZ3MoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3Q7IC8vIGNhbiBiZSBOVUxMCiAKICAgICBQ
YXNzUmVmUHRyPFJhbmdlPiBjcmVhdGVSYW5nZSgpOwogCkBAIC0xMTI3LDYgKzExMjksMTAgQEAg
aW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAogICAgIHJldHVybiB0aGlz
ID09IG1fZG9jdW1lbnQ7CiB9CiAKK2lubGluZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBEb2N1
bWVudDo6aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIGNvbnN0IHsKKyAgICByZXR1cm4gcGFnZSgp
ID8gcGFnZSgpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgOiAwOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBEb2N1bWVudF9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGU1YjhkM2UuLjhkNDY5
OTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JU
aW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCkBAIC0yNTI4LDYgKzI1MjksMTAgQEAg
Ym9vbCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVu
dCkKICAgICBBU1NFUlQoZXZlbnQtPnRhcmdldCgpKTsKICAgICBBU1NFUlQoIWV2ZW50LT50eXBl
KCkuaXNOdWxsKCkpOyAvLyBKYXZhU2NyaXB0IGNvZGUgY2FuIGNyZWF0ZSBhbiBldmVudCB3aXRo
IGFuIGVtcHR5IG5hbWUsIGJ1dCBub3QgbnVsbC4KIAorICAgIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSBkb2N1bWVudCgpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7
CisgICAgaWYgKHRpbWVsaW5lQWdlbnQpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxEaXNw
YXRjaERPTUV2ZW50KCpldmVudCk7CisKICAgICAvLyBNYWtlIGEgdmVjdG9yIG9mIGFuY2VzdG9y
cyB0byBzZW5kIHRoZSBldmVudCB0by4KICAgICAvLyBJZiB0aGUgbm9kZSBpcyBub3QgaW4gYSBk
b2N1bWVudCBqdXN0IHNlbmQgdGhlIGV2ZW50IHRvIGl0LgogICAgIC8vIEJlIHN1cmUgdG8gcmVm
IGFsbCBvZiBub2RlcyBzaW5jZSBldmVudCBoYW5kbGVycyBjb3VsZCByZXN1bHQgaW4gdGhlIGxh
c3QgcmVmZXJlbmNlIGdvaW5nIGF3YXkuCkBAIC0yNjM5LDYgKzI2NDQsOSBAQCBkb25lRGlzcGF0
Y2hpbmc6CiAgICAgfQogCiBkb25lV2l0aERlZmF1bHQ6CisgICAgaWYgKHRpbWVsaW5lQWdlbnQp
CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZERpc3BhdGNoRE9NRXZlbnQoKTsKKwogICAgIERv
Y3VtZW50Ojp1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50cygpOwogCiAgICAgcmV0dXJuICFldmVu
dC0+ZGVmYXVsdFByZXZlbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tl
bml6ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCmluZGV4IGU0ZTQ2YzUu
LmM1YjEzZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJIVE1MUGFyc2VyLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MVmlld1NvdXJjZURvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIgogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQcmVsb2FkU2Nhbm5lci5oIgpAQCAtMTY1NywxMCArMTY1OCwxNCBAQCB2
b2lkIEhUTUxUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc3RyLCBib29s
IGFwcGVuZERhdGEpCiAgICAgaWYgKCFtX2RvYy0+b3duZXJFbGVtZW50KCkpCiAgICAgICAgIHBy
aW50ZigiQmVnaW5uaW5nIHdyaXRlIGF0IHRpbWUgJWRcbiIsIG1fZG9jLT5lbGFwc2VkVGltZSgp
KTsKICNlbmRpZgotICAgIAorCiAgICAgaW50IHByb2Nlc3NlZENvdW50ID0gMDsKICAgICBkb3Vi
bGUgc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKIAorICAgIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSBtX2RvYy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOworICAg
IGlmICh0aW1lbGluZUFnZW50KQorICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsV3JpdGVIVE1M
KCk7CisgIAogICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jLT5mcmFtZSgpOwogCiAgICAgU3RhdGUg
c3RhdGUgPSBtX3N0YXRlOwpAQCAtMTc4MSw3ICsxNzg2LDEwIEBAIHZvaWQgSFRNTFRva2VuaXpl
cjo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzdHIsIGJvb2wgYXBwZW5kRGF0YSkKICAg
ICBpZiAoIW1fZG9jLT5vd25lckVsZW1lbnQoKSkKICAgICAgICAgcHJpbnRmKCJFbmRpbmcgd3Jp
dGUgYXQgdGltZSAlZFxuIiwgbV9kb2MtPmVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCi0gICAgCisK
KyAgICBpZiAodGltZWxpbmVBZ2VudCkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkV3JpdGVI
VE1MKCk7CisKICAgICBtX2luV3JpdGUgPSB3YXNJbldyaXRlOwogCiAgICAgbV9zdGF0ZSA9IHN0
YXRlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0
ZW0uY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YzRjYTUKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9ET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHAKQEAgLTAs
MCArMSw1NSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyoK
KyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
KiBkaXN0cmlidXRpb24uCisqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkRPTURpc3BhdGNoVGltZWxpbmVJdGVtLmgiCisKKyNpbmNsdWRlICJFdmVu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW06OkRPTURpc3BhdGNoVGltZWxpbmVJdGVtKFBh
c3NPd25QdHI8VGltZWxpbmVJdGVtPiBwcmV2aW91cywgZG91YmxlIHN0YXJ0VGltZSwgY29uc3Qg
RXZlbnQmIGV2ZW50KQorICAgIDogVGltZWxpbmVJdGVtKHByZXZpb3VzLCBzdGFydFRpbWUsIERP
TURpc3BhdGNoVGltZWxpbmVJdGVtVHlwZSkKKyAgICAsIG1fZXZlbnRUeXBlKGV2ZW50LnR5cGUo
KS5zdHJpbmcoKSkKK3sKK30KKworU2NyaXB0T2JqZWN0IERPTURpc3BhdGNoVGltZWxpbmVJdGVt
Ojpjb252ZXJ0VG9TY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQorewor
ICAgIFNjcmlwdE9iamVjdCBzZWxmT2JqID0gVGltZWxpbmVJdGVtOjpjb252ZXJ0VG9TY3JpcHRP
YmplY3QoZnJvbnRlbmQpOworICAgIFNjcmlwdE9iamVjdCBkYXRhT2JqID0gZnJvbnRlbmQtPm5l
d1NjcmlwdE9iamVjdCgpOworICAgIGRhdGFPYmouc2V0KCJ0eXBlIiwgbV9ldmVudFR5cGUpOwor
ICAgIHNlbGZPYmouc2V0KCJkYXRhIiwgZGF0YU9iaik7CisgICAgcmV0dXJuIHNlbGZPYmo7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0RPTURpc3Bh
dGNoVGltZWxpbmVJdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg0
Y2UyNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0RPTURpc3BhdGNoVGlt
ZWxpbmVJdGVtLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisqIG1ldDoKKyoKKyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorKiBkaXN0cmlidXRpb24uCisqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKwor
I2lmbmRlZiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbV9oCisjZGVmaW5lIERPTURpc3BhdGNoVGlt
ZWxpbmVJdGVtX2gKKworI2luY2x1ZGUgIlRpbWVsaW5lSXRlbS5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEV2ZW50Owor
ICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOworCisgICAgY2xhc3MgRE9NRGlzcGF0Y2hUaW1l
bGluZUl0ZW0gOiBwdWJsaWMgVGltZWxpbmVJdGVtIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERP
TURpc3BhdGNoVGltZWxpbmVJdGVtKFBhc3NPd25QdHI8VGltZWxpbmVJdGVtPiBwcmV2aW91cywg
ZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgRXZlbnQmKTsKKworICAgICAgICB2aXJ0dWFsIH5ET01E
aXNwYXRjaFRpbWVsaW5lSXRlbSgpIHsgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0
dWFsIFNjcmlwdE9iamVjdCBjb252ZXJ0VG9TY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQq
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFN0cmluZyBtX2V2ZW50VHlwZTsKKyAgICB9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhZGVmaW5lZChET01EaXNwYXRj
aFRpbWVsaW5lSXRlbV9oKQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCmlu
ZGV4IDBkYjVhYzMuLjhjOGM3Y2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQu
Y3BwCkBAIC0yNTEsNiArMjUxLDI1IEBAIGNvbnN0IFN0cmluZyYgSW5zcGVjdG9yQmFja2VuZDo6
cGxhdGZvcm0oKSBjb25zdAogICAgIHJldHVybiBwbGF0Zm9ybTsKIH0KIAordm9pZCBJbnNwZWN0
b3JCYWNrZW5kOjplbmFibGVUaW1lbGluZShib29sIGFsd2F5cykKK3sKKyAgICBpZiAobV9pbnNw
ZWN0b3JDb250cm9sbGVyKQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmVuYWJsZVRp
bWVsaW5lKGFsd2F5cyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6ZGlzYWJsZVRpbWVs
aW5lKGJvb2wgYWx3YXlzKQoreworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAg
ICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGlzYWJsZVRpbWVsaW5lKGFsd2F5cyk7Cit9CisK
K2Jvb2wgSW5zcGVjdG9yQmFja2VuZDo6dGltZWxpbmVFbmFibGVkKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gbV9pbnNwZWN0b3JDb250
cm9sbGVyLT50aW1lbGluZUVuYWJsZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQg
SW5zcGVjdG9yQmFja2VuZDo6Z2V0Q29va2llcyhsb25nIGNhbGxJZCkKIHsKICAgICBpZiAoIW1f
aW5zcGVjdG9yQ29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAppbmRl
eCA1NWY3ODIwLi42NmExY2Q2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCkBA
IC05NSw2ICs5NSwxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIHBsYXRmb3JtKCkg
Y29uc3Q7CiAKKyAgICB2b2lkIGVuYWJsZVRpbWVsaW5lKGJvb2wgYWx3YXlzKTsKKyAgICB2b2lk
IGRpc2FibGVUaW1lbGluZShib29sIGFsd2F5cyk7CisgICAgYm9vbCB0aW1lbGluZUVuYWJsZWQo
KSBjb25zdDsKKwogICAgIHZvaWQgZ2V0Q29va2llcyhsb25nIGNhbGxJZCk7CiAgICAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmlkbAppbmRleCA4N2U3OWZmLi41Njc2MjFiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtNjAsNiArNjAsOSBAQCBtb2R1bGUgY29yZSB7
CiAgICAgICAgIERPTVN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCk7CiAgICAgICAgIERPTVN0
cmluZyBoaWRkZW5QYW5lbHMoKTsKICAgICAgICAgRE9NU3RyaW5nIHBsYXRmb3JtKCk7CisgICAg
ICAgIHZvaWQgZW5hYmxlVGltZWxpbmUoaW4gYm9vbGVhbiBhbHdheXMpOworICAgICAgICB2b2lk
IGRpc2FibGVUaW1lbGluZShpbiBib29sZWFuIGFsd2F5cyk7CisgICAgICAgIGJvb2xlYW4gdGlt
ZWxpbmVFbmFibGVkKCk7CiAgICAgICAgIFtJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uPW1vdmVXaW5k
b3dCeV0gdm9pZCBtb3ZlQnlVbnJlc3RyaWN0ZWQoaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSk7CiAg
ICAgICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaW4gdW5zaWduZWQgbG9uZyBoZWln
aHQpOwogICAgICAgICBbQ3VzdG9tXSBET01PYmplY3Qgd3JhcENhbGxiYWNrKGluIERPTU9iamVj
dCBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGFiOGVlYTUuLmI5NTc1YTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlLmgiCiAjaW5jbHVkZSAiSmF2YVNj
cmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xMDYsNiArMTA3LDcgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGRlYnVnZ2VyRW5hYmxlZFNldHRpbmdOYW1lID0gImRlYnVn
Z2VyRW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcHJvZmlsZXJFbmFibGVkU2V0
dGluZ05hbWUgPSAicHJvZmlsZXJFbmFibGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBp
bnNwZWN0b3JBdHRhY2hlZEhlaWdodE5hbWUgPSAiaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQiOwog
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGxhc3RBY3RpdmVQYW5lbFNldHRpbmdOYW1lID0gImxh
c3RBY3RpdmVQYW5lbCI7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdGltZWxpbmVFbmFibGVk
U2V0dGluZ05hbWUgPSAidGltZWxpbmVFbmFibGVkIjsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGRlZmF1bHRBdHRhY2hlZEhlaWdodCA9IDMwMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVt
QXR0YWNoZWRIZWlnaHQgPSAyNTAuMGY7CkBAIC01NDcsNiArNTQ5LDEwIEBAIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6c2V0RnJvbnRlbmRQcm94eU9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIFNjcmlwCiAgICAgbV9pbmplY3RlZFNjcmlwdE9iaiA9IGluamVjdGVkU2NyaXB0T2Jq
OwogICAgIG1fZnJvbnRlbmQuc2V0KG5ldyBJbnNwZWN0b3JGcm9udGVuZCh0aGlzLCBzY3JpcHRT
dGF0ZSwgd2ViSW5zcGVjdG9yT2JqKSk7CiAgICAgbV9kb21BZ2VudCA9IG5ldyBJbnNwZWN0b3JE
T01BZ2VudChtX2Zyb250ZW5kLmdldCgpKTsKKworICAgIFNldHRpbmcgdGltZWxpbmVFbmFibGVk
ID0gc2V0dGluZyh0aW1lbGluZUVuYWJsZWRTZXR0aW5nTmFtZSk7CisgICAgaWYgKHRpbWVsaW5l
RW5hYmxlZC50eXBlKCkgPT0gU2V0dGluZzo6Qm9vbGVhblR5cGUgJiYgdGltZWxpbmVFbmFibGVk
LmJvb2xlYW5WYWx1ZSgpKQorICAgICAgICBtX3RpbWVsaW5lQWdlbnQgPSBuZXcgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudChtX2Zyb250ZW5kLmdldCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpzaG93KCkKQEAgLTYwNiw2ICs2MTIsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmNsb3NlKCkKICAgICBpZiAobV9kb21BZ2VudCkKICAgICAgICAgbV9kb21BZ2VudC0+c2V0
RG9jdW1lbnQoMCk7CiAgICAgbV9kb21BZ2VudCA9IDA7CisgICAgbV90aW1lbGluZUFnZW50ID0g
MDsKICAgICBtX3NjcmlwdFN0YXRlID0gMDsKIH0KIApAQCAtNjgxLDYgKzY4OCw5IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzZXRTY3JpcHRPYmplY3RzKCkKICAgICAgICAgKCppdCkt
PnVuYmluZCgpOwogI2VuZGlmCiAKKyAgICBpZiAobV90aW1lbGluZUFnZW50KQorICAgICAgICBt
X3RpbWVsaW5lQWdlbnQtPnJlc2V0KCk7CisKICAgICBtX2Zyb250ZW5kLT5yZXNldCgpOwogfQog
CkBAIC0xMDI2LDYgKzEwMzYsNDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVS
ZXNvdXJjZVRyYWNraW5nU2V0dGluZ3NMb2FkZWQoKQogICAgICAgICBtX3Jlc291cmNlVHJhY2tp
bmdFbmFibGVkID0gdHJ1ZTsKIH0KIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVU
aW1lbGluZShib29sIGFsd2F5cykKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGFsd2F5cykKKyAgICAgICAgc2V0U2V0dGluZyh0aW1lbGluZUVuYWJs
ZWRTZXR0aW5nTmFtZSwgU2V0dGluZyh0cnVlKSk7CisKKyAgICBpZiAobV90aW1lbGluZUFnZW50
LmdldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RpbWVsaW5lQWdlbnQgPSBuZXcgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICBpZiAobV9mcm9udGVu
ZCkKKyAgICAgICAgbV9mcm9udGVuZC0+dGltZWxpbmVXYXNFbmFibGVkKCk7Cit9CisKK3ZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZVRpbWVsaW5lKGJvb2wgYWx3YXlzKQoreworICAg
IGlmICghZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYWx3YXlzKQorICAg
ICAgICBzZXRTZXR0aW5nKHRpbWVsaW5lRW5hYmxlZFNldHRpbmdOYW1lLCBTZXR0aW5nKGZhbHNl
KSk7CisKKyAgICBpZiAoIW1fdGltZWxpbmVBZ2VudC5nZXQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV90aW1lbGluZUFnZW50LnNldCgwKTsKKyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAg
ICAgbV9mcm9udGVuZC0+dGltZWxpbmVXYXNEaXNhYmxlZCgpOworfQorCitib29sIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OnRpbWVsaW5lRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFlbmFibGVk
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3RpbWVsaW5lQWdlbnQu
Z2V0KCk7Cit9CisKICNpZiBFTkFCTEUoREFUQUJBU0UpCiB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZE9wZW5EYXRhYmFzZShEYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgZG9t
YWluLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAyN2NkMDA0Li5mM2UyMzBlIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC02Myw2ICs2Myw3IEBA
IGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOworY2xhc3MgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDsKIGNsYXNzIEphdmFTY3JpcHRDYWxsRnJhbWU7CiBjbGFzcyBLVVJM
OwogY2xhc3MgTm9kZTsKQEAgLTIyMSw2ICsyMjIsMTEgQEAgcHVibGljOgogICAgIGJvb2wgcmVz
b3VyY2VUcmFja2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlVHJhY2tpbmdF
bmFibGVkOyB9CiAgICAgdm9pZCBlbnN1cmVSZXNvdXJjZVRyYWNraW5nU2V0dGluZ3NMb2FkZWQo
KTsKIAorICAgIHZvaWQgZW5hYmxlVGltZWxpbmUoYm9vbCBhbHdheXMgPSBmYWxzZSk7CisgICAg
dm9pZCBkaXNhYmxlVGltZWxpbmUoYm9vbCBhbHdheXMgPSBmYWxzZSk7CisgICAgYm9vbCB0aW1l
bGluZUVuYWJsZWQoKSBjb25zdDsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50KCkgeyByZXR1cm4gbV90aW1lbGluZUFnZW50LmdldCgpOyB9CisKICNpZiBFTkFCTEUo
REFUQUJBU0UpCiAgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UqLCBjb25zdCBTdHJp
bmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwog
I2VuZGlmCkBAIC0zMTcsNiArMzIzLDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDbGllbnQq
IG1fY2xpZW50OwogICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZD4gbV9mcm9udGVuZDsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IG1fZG9tQWdlbnQ7CisgICAgT3duUHRyPEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ+IG1fdGltZWxpbmVBZ2VudDsKICAgICBTY3JpcHRPYmplY3QgbV9p
bmplY3RlZFNjcmlwdE9iajsKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgUmVmUHRyPE5vZGU+IG1f
bm9kZVRvRm9jdXM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKaW5kZXgg
NDU3Zjc1NS4uNWFkZWMxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNw
cApAQCAtMTgzLDYgKzE4MywyMyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpyZXNvdXJjZVRy
YWNraW5nV2FzRGlzYWJsZWQoKQogICAgIGNhbGxTaW1wbGVGdW5jdGlvbigicmVzb3VyY2VUcmFj
a2luZ1dhc0Rpc2FibGVkIik7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnRpbWVsaW5l
V2FzRW5hYmxlZCgpCit7CisgICAgY2FsbFNpbXBsZUZ1bmN0aW9uKCJ0aW1lbGluZVdhc0VuYWJs
ZWQiKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6dGltZWxpbmVXYXNEaXNhYmxlZCgp
Cit7CisgICAgY2FsbFNpbXBsZUZ1bmN0aW9uKCJ0aW1lbGluZVdhc0Rpc2FibGVkIik7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZEl0ZW1Ub1RpbWVsaW5lKGNvbnN0IFNjcmlwdE9i
amVjdCYgaXRlbU9iaikKK3sKKyAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlv
bihuZXdGdW5jdGlvbkNhbGwoImFkZEl0ZW1Ub1RpbWVsaW5lIikpOworICAgIGZ1bmN0aW9uLT5h
cHBlbmRBcmd1bWVudChpdGVtT2JqKTsKKyAgICBmdW5jdGlvbi0+Y2FsbCgpOworfQorCiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiB2b2lkIEluc3BlY3RvckZyb250ZW5kOjphdHRh
Y2hEZWJ1Z2dlcldoZW5TaG93bigpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQu
aAppbmRleCAzYWRhNTg3Li5kZTY5OTBkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmgKQEAgLTExMiw2ICsxMTIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIGRpZEdldENoaWxkTm9kZXMoaW50IGNhbGxJZCk7CiAgICAgICAgIHZvaWQgZGlkQXBwbHlE
b21DaGFuZ2UoaW50IGNhbGxJZCwgYm9vbCBzdWNjZXNzKTsKIAorICAgICAgICB2b2lkIHRpbWVs
aW5lV2FzRW5hYmxlZCgpOworICAgICAgICB2b2lkIHRpbWVsaW5lV2FzRGlzYWJsZWQoKTsKKyAg
ICAgICAgdm9pZCBhZGRJdGVtVG9UaW1lbGluZShjb25zdCBTY3JpcHRPYmplY3QmIGl0ZW1PYmop
OworCiAgICAgICAgIHZvaWQgZGlkR2V0Q29va2llcyhpbnQgY2FsbElkLCBjb25zdCBTY3JpcHRB
cnJheSYgY29va2llcywgY29uc3QgU3RyaW5nJiBjb29raWVzU3RyaW5nKTsKIAogICAgICAgICB2
b2lkIGFkZE5vZGVzVG9TZWFyY2hSZXN1bHQoY29uc3QgU3RyaW5nJiBub2RlSWRzKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZTlkMjBlMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC0wLDAgKzEsMTM4IEBACisv
KgorKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlv
bi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgorCisjaW5jbHVkZSAiRE9NRGlzcGF0Y2hUaW1lbGlu
ZUl0ZW0uaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
LmgiCisjaW5jbHVkZSAiVGltZWxpbmVJdGVtLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKKyAgICA6
IG1fc2Vzc2lvblN0YXJ0VGltZShjdXJyZW50VGltZUluTWlsbGlzZWNvbmRzKCkpCisgICAgLCBt
X2Zyb250ZW5kKGZyb250ZW5kKQorICAgICwgbV9jdXJyZW50VGltZWxpbmVJdGVtKDApCit7Cisg
ICAgQVNTRVJUKG1fZnJvbnRlbmQpOworfQorCitJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpCit7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6d2lsbERpc3BhdGNoRE9NRXZlbnQoY29uc3QgRXZlbnQmIGV2ZW50KQoreworICAgIG1fY3Vy
cmVudFRpbWVsaW5lSXRlbSA9IG5ldyBET01EaXNwYXRjaFRpbWVsaW5lSXRlbShtX2N1cnJlbnRU
aW1lbGluZUl0ZW0ucmVsZWFzZSgpLCBzZXNzaW9uVGltZUluTWlsbGlzZWNvbmRzKCksIGV2ZW50
KTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWREaXNwYXRjaERPTUV2ZW50
KCkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50VGltZWxpbmVJdGVtLT50eXBlKCkgPT0gRE9NRGlz
cGF0Y2hUaW1lbGluZUl0ZW1UeXBlKTsKKyAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoKTsK
K30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsTGF5b3V0KCkKK3sKKyAgICBt
X2N1cnJlbnRUaW1lbGluZUl0ZW0gPSBuZXcgVGltZWxpbmVJdGVtKG1fY3VycmVudFRpbWVsaW5l
SXRlbS5yZWxlYXNlKCksIHNlc3Npb25UaW1lSW5NaWxsaXNlY29uZHMoKSwgTGF5b3V0VGltZWxp
bmVJdGVtVHlwZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTGF5b3V0
KCkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50VGltZWxpbmVJdGVtLT50eXBlKCkgPT0gTGF5b3V0
VGltZWxpbmVJdGVtVHlwZSk7CisgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKCk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFJlY2FsY3VsYXRlU3R5bGUoKQorewor
ICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbSA9IG5ldyBUaW1lbGluZUl0ZW0obV9jdXJyZW50VGlt
ZWxpbmVJdGVtLnJlbGVhc2UoKSwgc2Vzc2lvblRpbWVJbk1pbGxpc2Vjb25kcygpLCBSZWNhbGN1
bGF0ZVN0eWxlc1RpbWVsaW5lSXRlbVR5cGUpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpZFJlY2FsY3VsYXRlU3R5bGUoKQoreworICAgIEFTU0VSVChtX2N1cnJlbnRUaW1l
bGluZUl0ZW0tPnR5cGUoKSA9PSBSZWNhbGN1bGF0ZVN0eWxlc1RpbWVsaW5lSXRlbVR5cGUpOwor
ICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZCgpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OndpbGxQYWludCgpCit7CisgICAgbV9jdXJyZW50VGltZWxpbmVJdGVtID0gbmV3
IFRpbWVsaW5lSXRlbShtX2N1cnJlbnRUaW1lbGluZUl0ZW0ucmVsZWFzZSgpLCBzZXNzaW9uVGlt
ZUluTWlsbGlzZWNvbmRzKCksIFBhaW50VGltZWxpbmVJdGVtVHlwZSk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkUGFpbnQoKQoreworICAgIEFTU0VSVChtX2N1cnJlbnRU
aW1lbGluZUl0ZW0tPnR5cGUoKSA9PSBQYWludFRpbWVsaW5lSXRlbVR5cGUpOworICAgIGRpZENv
bXBsZXRlQ3VycmVudFJlY29yZCgpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OndpbGxXcml0ZUhUTUwoKQoreworICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbSA9IG5ldyBUaW1l
bGluZUl0ZW0obV9jdXJyZW50VGltZWxpbmVJdGVtLnJlbGVhc2UoKSwgc2Vzc2lvblRpbWVJbk1p
bGxpc2Vjb25kcygpLCBQYXJzZUhUTUxUaW1lbGluZUl0ZW1UeXBlKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpkaWRXcml0ZUhUTUwoKQoreworICAgIEFTU0VSVChtX2N1cnJl
bnRUaW1lbGluZUl0ZW0tPnR5cGUoKSA9PSBQYXJzZUhUTUxUaW1lbGluZUl0ZW1UeXBlKTsKKyAg
ICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpyZXNldCgpCit7CisgICAgbV9zZXNzaW9uU3RhcnRUaW1lID0gY3VycmVudFRpbWVJ
bk1pbGxpc2Vjb25kcygpOworICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbS5zZXQoMCk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKCkK
K3sKKyAgICBPd25QdHI8VGltZWxpbmVJdGVtPiBpdGVtKG1fY3VycmVudFRpbWVsaW5lSXRlbS5y
ZWxlYXNlKCkpOworICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbSA9IGl0ZW0tPnJlbGVhc2VQcmV2
aW91cygpOworCisgICAgaXRlbS0+c2V0RW5kVGltZShzZXNzaW9uVGltZUluTWlsbGlzZWNvbmRz
KCkpOworICAgIGlmIChtX2N1cnJlbnRUaW1lbGluZUl0ZW0uZ2V0KCkpCisgICAgICAgIG1fY3Vy
cmVudFRpbWVsaW5lSXRlbS0+YWRkQ2hpbGRJdGVtKGl0ZW0ucmVsZWFzZSgpKTsKKyAgICBlbHNl
CisgICAgICAgIGl0ZW0tPmFkZFRvVGltZWxpbmUobV9mcm9udGVuZCk7Cit9CisKK2RvdWJsZSBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpjdXJyZW50VGltZUluTWlsbGlzZWNvbmRzKCkKK3sKKyAg
ICByZXR1cm4gY3VycmVudFRpbWUoKSAqIDEwMDAuMDsKK30KKworZG91YmxlIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OnNlc3Npb25UaW1lSW5NaWxsaXNlY29uZHMoKQoreworICAgIHJldHVybiBj
dXJyZW50VGltZUluTWlsbGlzZWNvbmRzKCkgLSBtX3Nlc3Npb25TdGFydFRpbWU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDk1ZmVkCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
CkBAIC0wLDAgKzEsNzcgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKiBt
ZXQ6CisqCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyogZGlzdHJpYnV0aW9uLgorKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisqCisqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudF9oCisjZGVmaW5lIEluc3BlY3RvclRpbWVsaW5lQWdlbnRfaAor
CisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0QXJyYXkuaCIKKwor
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgRXZlbnQ7CisgICAgY2xhc3MgSW5zcGVjdG9y
RnJvbnRlbmQ7CisgICAgY2xhc3MgVGltZWxpbmVJdGVtOworCisgICAgY2xhc3MgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCB7CisgICAgcHVibGljOgorICAgICAgICBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCk7CisgICAgICAgIH5JbnNwZWN0b3JUaW1l
bGluZUFnZW50KCk7CisKKyAgICAgICAgdm9pZCByZXNldCgpOworCisgICAgICAgIC8vIE1ldGhv
ZHMgY2FsbGVkIGZyb20gV2ViQ29yZS4KKyAgICAgICAgdm9pZCB3aWxsRGlzcGF0Y2hET01FdmVu
dChjb25zdCBFdmVudCYpOworICAgICAgICB2b2lkIGRpZERpc3BhdGNoRE9NRXZlbnQoKTsKKyAg
ICAgICAgdm9pZCB3aWxsTGF5b3V0KCk7CisgICAgICAgIHZvaWQgZGlkTGF5b3V0KCk7CisgICAg
ICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKKyAgICAgICAgdm9pZCBkaWRSZWNhbGN1
bGF0ZVN0eWxlKCk7CisgICAgICAgIHZvaWQgd2lsbFBhaW50KCk7CisgICAgICAgIHZvaWQgZGlk
UGFpbnQoKTsKKyAgICAgICAgdm9pZCBkaWRXcml0ZUhUTUwoKTsKKyAgICAgICAgdm9pZCB3aWxs
V3JpdGVIVE1MKCk7CisgICAgcHJpdmF0ZToKKyAgICAgICAgZG91YmxlIHNlc3Npb25UaW1lSW5N
aWxsaXNlY29uZHMoKTsKKworICAgICAgICBzdGF0aWMgZG91YmxlIGN1cnJlbnRUaW1lSW5NaWxs
aXNlY29uZHMoKTsKKworICAgICAgICB2b2lkIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZCgpOwor
CisgICAgICAgIGRvdWJsZSBtX3Nlc3Npb25TdGFydFRpbWU7CisgICAgICAgIEluc3BlY3RvckZy
b250ZW5kKiBtX2Zyb250ZW5kOworICAgICAgICBPd25QdHI8VGltZWxpbmVJdGVtPiBtX2N1cnJl
bnRUaW1lbGluZUl0ZW07CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGltZWxpbmVBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVs
aW5lSXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMyYTBhMAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lSXRlbS5jcHAKQEAg
LTAsMCArMSw4MSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoK
KyoKKyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorKiBkaXN0cmlidXRpb24uCisqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlRpbWVsaW5lSXRlbS5oIgorCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmQuaCIKKyNpbmNsdWRlICJTY3JpcHRBcnJheS5oIgorI2luY2x1ZGUgIlNjcmlwdE9iamVj
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RpbWVsaW5lSXRlbTo6VGltZWxpbmVJdGVt
KFBhc3NPd25QdHI8VGltZWxpbmVJdGVtPiBwcmV2aW91cywgZG91YmxlIHN0YXJ0VGltZSwgVGlt
ZWxpbmVJdGVtVHlwZSBpdGVtVHlwZSkKKyAgICA6IG1fc3RhcnRUaW1lKHN0YXJ0VGltZSkKKyAg
ICAsIG1fZW5kVGltZSgwLjApCisgICAgLCBtX2l0ZW1UeXBlKGl0ZW1UeXBlKQorICAgICwgbV9w
cmV2aW91cyhwcmV2aW91cykKK3sKK30KKwordm9pZCBUaW1lbGluZUl0ZW06OmFkZFRvVGltZWxp
bmUoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQoreworICAgIGZyb250ZW5kLT5hZGRJdGVt
VG9UaW1lbGluZShjb252ZXJ0VG9TY3JpcHRPYmplY3QoZnJvbnRlbmQpKTsKK30KKworU2NyaXB0
T2JqZWN0IFRpbWVsaW5lSXRlbTo6Y29udmVydFRvU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250
ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBTY3JpcHRPYmplY3Qgc2VsZk9iaiA9IGZyb250ZW5kLT5u
ZXdTY3JpcHRPYmplY3QoKTsKKyAgICBzZWxmT2JqLnNldCgidGltZSIsIG1fc3RhcnRUaW1lKTsK
KyAgICBzZWxmT2JqLnNldCgidHlwZSIsIHN0YXRpY19jYXN0PGludD4obV9pdGVtVHlwZSkpOwor
ICAgIHNlbGZPYmouc2V0KCJkdXJhdGlvbiIsIG1fZW5kVGltZSAtIG1fc3RhcnRUaW1lKTsKKyAg
ICBTY3JpcHRBcnJheSBjaGlsZHJlbiA9IGNvbnZlcnRDaGlsZHJlblRvU2NyaXB0QXJyYXkoZnJv
bnRlbmQpOworICAgIHNlbGZPYmouc2V0KCJjaGlsZHJlbiIsIGNoaWxkcmVuKTsKKyAgICByZXR1
cm4gc2VsZk9iajsKK30KKworU2NyaXB0QXJyYXkgVGltZWxpbmVJdGVtOjpjb252ZXJ0Q2hpbGRy
ZW5Ub1NjcmlwdEFycmF5KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBTY3Jp
cHRBcnJheSBjaGlsZHJlbiA9IGZyb250ZW5kLT5uZXdTY3JpcHRBcnJheSgpOworICAgIGludCBp
ID0gMDsKKyAgICBmb3IgKFRpbWVsaW5lSXRlbXM6OmNvbnN0X2l0ZXJhdG9yIGl0KG1fY2hpbGRy
ZW4uYmVnaW4oKSk7IGl0ICE9IG1fY2hpbGRyZW4uZW5kKCk7ICsraXQpIHsKKyAgICAgICAgU2Ny
aXB0T2JqZWN0IGNoaWxkT2JqZWN0ID0gKCppdCktPmNvbnZlcnRUb1NjcmlwdE9iamVjdChmcm9u
dGVuZCk7CisgICAgICAgIGNoaWxkcmVuLnNldChpKyssIGNoaWxkT2JqZWN0KTsKKyAgICB9Cisg
ICAgcmV0dXJuIGNoaWxkcmVuOworfQorCit2b2lkIFRpbWVsaW5lSXRlbTo6YWRkQ2hpbGRJdGVt
KFBhc3NPd25QdHI8VGltZWxpbmVJdGVtPiB0aW1lbGluZUl0ZW0pCit7CisgICAgbV9jaGlsZHJl
bi5hcHBlbmQodGltZWxpbmVJdGVtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZUl0ZW0uaCBiL1dlYkNvcmUvaW5z
cGVjdG9yL1RpbWVsaW5lSXRlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjE5MDkyMzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZUl0
ZW0uaApAQCAtMCwwICsxLDg4IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyogbWV0OgorKgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisqIGRpc3RyaWJ1dGlvbi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVm
IFRpbWVsaW5lSXRlbV9oCisjZGVmaW5lIFRpbWVsaW5lSXRlbV9oCisKKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEluc3BlY3RvckZyb250
ZW5kOworICAgIGNsYXNzIFRpbWVsaW5lSXRlbTsKKyAgICBjbGFzcyBTY3JpcHRBcnJheTsKKyAg
ICBjbGFzcyBTY3JpcHRPYmplY3Q7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8VGltZWxp
bmVJdGVtPiA+IFRpbWVsaW5lSXRlbXM7CisKKyAgICAvLyBNdXN0IGJlIGtlcHQgaW4gc3luYyB3
aXRoIFRpbWVsaW5lQWdlbnQuanMKKyAgICBlbnVtIFRpbWVsaW5lSXRlbVR5cGUgeworICAgICAg
ICBET01EaXNwYXRjaFRpbWVsaW5lSXRlbVR5cGUgPSAwLAorICAgICAgICBMYXlvdXRUaW1lbGlu
ZUl0ZW1UeXBlID0gMSwKKyAgICAgICAgUmVjYWxjdWxhdGVTdHlsZXNUaW1lbGluZUl0ZW1UeXBl
ID0gMiwKKyAgICAgICAgUGFpbnRUaW1lbGluZUl0ZW1UeXBlID0gMywKKyAgICAgICAgUGFyc2VI
VE1MVGltZWxpbmVJdGVtVHlwZSA9IDQsCisgICAgfTsKKworICAgIGNsYXNzIFRpbWVsaW5lSXRl
bSB7CisgICAgcHVibGljOgorICAgICAgICBUaW1lbGluZUl0ZW0oUGFzc093blB0cjxUaW1lbGlu
ZUl0ZW0+LCBkb3VibGUgc3RhcnRUaW1lLCBUaW1lbGluZUl0ZW1UeXBlKTsKKworICAgICAgICB2
aXJ0dWFsIH5UaW1lbGluZUl0ZW0oKSB7IH0KKworICAgICAgICBUaW1lbGluZUl0ZW0qIHByZXZp
b3VzKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQorCisgICAgICAgIFBhc3NP
d25QdHI8VGltZWxpbmVJdGVtKj4gcmVsZWFzZVByZXZpb3VzKCkgeyByZXR1cm4gbV9wcmV2aW91
cy5yZWxlYXNlKCk7IH0KKworICAgICAgICB2b2lkIGFkZFRvVGltZWxpbmUoSW5zcGVjdG9yRnJv
bnRlbmQqKTsKKworICAgICAgICB2b2lkIGFkZENoaWxkSXRlbShQYXNzT3duUHRyPFRpbWVsaW5l
SXRlbT4pOworCisgICAgICAgIHZvaWQgc2V0RW5kVGltZShkb3VibGUgZW5kVGltZSkgeyBtX2Vu
ZFRpbWUgPSBlbmRUaW1lOyB9CisKKyAgICAgICAgVGltZWxpbmVJdGVtVHlwZSB0eXBlKCkgeyBy
ZXR1cm4gbV9pdGVtVHlwZTsgfQorICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCBTY3Jp
cHRPYmplY3QgY29udmVydFRvU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKik7CisKKyAg
ICAgICAgU2NyaXB0QXJyYXkgY29udmVydENoaWxkcmVuVG9TY3JpcHRBcnJheShJbnNwZWN0b3JG
cm9udGVuZCopOworICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgZG91YmxlIG1fc3RhcnRU
aW1lOworICAgICAgICBkb3VibGUgbV9lbmRUaW1lOworICAgICAgICBUaW1lbGluZUl0ZW1UeXBl
IG1faXRlbVR5cGU7CisgICAgICAgIE93blB0cjxUaW1lbGluZUl0ZW0+IG1fcHJldmlvdXM7Cisg
ICAgICAgIFRpbWVsaW5lSXRlbXMgbV9jaGlsZHJlbjsKKyAgICB9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhZGVmaW5lZChUaW1lbGluZUl0ZW1faCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZUFnZW50LmpzIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lQWdlbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNmQxODczMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZUFnZW50LmpzCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNw
ZWN0b3IuVGltZWxpbmVBZ2VudCA9IGZ1bmN0aW9uKCkgeworICAgIC8vIE5vdCBpbXBsZW1lbnRl
ZC4KK30KKworLy8gTXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBUaW1lbGluZUl0ZW0uaAorV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuSXRlbVR5cGUgPSB7CisgICAgRE9NRGlzcGF0Y2ggICAg
ICAgOiAwLAorICAgIExheW91dCAgICAgICAgICAgIDogMSwKKyAgICBSZWNhbGN1bGF0ZVN0eWxl
cyA6IDIsCisgICAgUGFpbnQgICAgICAgICAgICAgOiAzLAorICAgIFBhcnNlSFRNTCAgICAgICAg
IDogNAorfTsKKworV2ViSW5zcGVjdG9yLmFkZEl0ZW1Ub1RpbWVsaW5lID0gZnVuY3Rpb24ocmVj
b3JkKSB7CisgICAgLy8gTm90IGltcGxlbWVudGVkLgorfQorCitXZWJJbnNwZWN0b3IudGltZWxp
bmVXYXNFbmFibGVkID0gZnVuY3Rpb24oKSB7CisgICAgLy8gTm90IGltcGxlbWVudGVkLgorfQor
CitXZWJJbnNwZWN0b3IudGltZWxpbmVXYXNEaXNhYmxlZCA9IGZ1bmN0aW9uKCkgeworICAgIC8v
IE5vdCBpbXBsZW1lbnRlZC4KK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbAppbmRleCA0YTUzNmQxLi4xZDc5N2UyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC04OCw2ICs4OCw3IEBAIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTUFnZW50LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbmplY3Rl
ZFNjcmlwdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iVGltZWxpbmVBZ2VudC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBjbGFzcz0i
ZGV0YWNoZWQiPgogICAgIDxkaXYgaWQ9InRvb2xiYXIiPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAxYzI4
NGMxLi5iYjNiMjE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNDMsOCArNDMsOCBAQAogI2luY2x1ZGUg
IkhUTUxGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVTZXRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
IgogI2luY2x1ZGUgIk92ZXJmbG93RXZlbnQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyUGFydC5oIgogI2luY2x1ZGUgIlJlbmRlclBhcnRPYmplY3QuaCIKICNpbmNsdWRl
ICJSZW5kZXJTY3JvbGxiYXIuaCIKQEAgLTUyNiw2ICs1MjYsMTAgQEAgdm9pZCBGcmFtZVZpZXc6
OmxheW91dChib29sIGFsbG93U3VidHJlZSkKICAgICBpZiAoaXNQYWludGluZygpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOworICAgIGlmICh0aW1lbGluZUFnZW50KQorICAgICAg
ICB0aW1lbGluZUFnZW50LT53aWxsTGF5b3V0KCk7CisKICAgICBpZiAoIWFsbG93U3VidHJlZSAm
JiBtX2xheW91dFJvb3QpIHsKICAgICAgICAgbV9sYXlvdXRSb290LT5tYXJrQ29udGFpbmluZ0Js
b2Nrc0ZvckxheW91dChmYWxzZSk7CiAgICAgICAgIG1fbGF5b3V0Um9vdCA9IDA7CkBAIC03MDks
NiArNzEzLDkgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZSkKICAg
ICAgICAgQVNTRVJUKG1fZW5xdWV1ZUV2ZW50cyk7CiAgICAgfQogCisgICAgaWYgKHRpbWVsaW5l
QWdlbnQpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZExheW91dCgpOworCiAgICAgbV9uZXN0
ZWRMYXlvdXRDb3VudC0tOwogfQogCkBAIC0xNTMxLDcgKzE1MzgsMTEgQEAgdm9pZCBGcmFtZVZp
ZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByZWN0
KQogewogICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvclRpbWVsaW5lQWdl
bnQoKTsKKyAgICBpZiAodGltZWxpbmVBZ2VudCkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2ls
bFBhaW50KCk7CisKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgpLT5kb2N1bWVudCgp
OwogCiAjaWZuZGVmIE5ERUJVRwpAQCAtMTU5NSw2ICsxNjA2LDkgQEAgdm9pZCBGcmFtZVZpZXc6
OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByZWN0KQog
CiAgICAgaWYgKGlzVG9wTGV2ZWxQYWludGVyKQogICAgICAgICBzQ3VycmVudFBhaW50VGltZVN0
YW1wID0gMDsKKworICAgIGlmICh0aW1lbGluZUFnZW50KQorICAgICAgICB0aW1lbGluZUFnZW50
LT5kaWRQYWludCgpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6c2V0UGFpbnRSZXN0cmljdGlvbihQ
YWludFJlc3RyaWN0aW9uIHByKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
IGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDljMmNjYWIuLmUzNjY0NTUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKQEAgLTI1LDcgKzI1LDkgQEAKICNpZm5kZWYgRnJhbWVWaWV3X2gKICNkZWZpbmUgRnJh
bWVWaWV3X2gKIAorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlNjcm9s
bFZpZXcuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzcsNiArMzksNyBAQCBjbGFz
cyBDb2xvcjsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVZpZXdQcml2
YXRlOworY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFz
cyBOb2RlOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwpAQCAtMjM2LDYgKzIzOSw4IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIHVwZGF0ZVdpZGdldHMoKTsKICAgICB2b2lkIHNjcm9sbFRvQW5j
aG9yKCk7CisKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBpbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJzKCkgY29uc3Q7
CiAKQEAgLTMxNiw2ICszMjEsMTEgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0
KiBtX3Njcm9sbENvcm5lcjsKIH07CiAKK2lubGluZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBG
cmFtZVZpZXc6Omluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdAoreworICAgIHJldHVybiBt
X2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSA6IDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEZyYW1lVmll
d19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKaW5kZXggYTEzNDk2Yi4uNDY0MTI4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNs
dWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgpAQCAtNjMyLDQgKzYzMyw5IEBAIGJvb2wgUGFn
ZTo6amF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkKCkgY29uc3QKICAgICByZXR1cm4gbV9qYXZhU2Ny
aXB0VVJMc0FyZUFsbG93ZWQ7CiB9CiAKK0luc3BlY3RvclRpbWVsaW5lQWdlbnQqIFBhZ2U6Omlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2luc3BlY3RvckNv
bnRyb2xsZXItPnRpbWVsaW5lQWdlbnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggZmIyMTJhNC4uM2M4YWFmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysg
Yi9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiAgICAgY2xh
c3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgUGFnZUdyb3VwOwogICAgIGNsYXNzIFBsdWdp
bkRhdGE7CkBAIC0yMTAsNiArMjExLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHNldEphdmFTY3JpcHRVUkxzQXJlQWxsb3dlZChib29sKTsKICAgICAgICAgYm9vbCBqYXZh
U2NyaXB0VVJMc0FyZUFsbG93ZWQoKSBjb25zdDsKIAorICAgICAgICBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3Q7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIAo=
</data>
<flag name="review"
          id="19826"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39009</attachid>
            <date>2009-09-03 13:56:52 -0700</date>
            <delta_ts>2009-09-04 15:51:13 -0700</delta_ts>
            <desc>Fixes the remaining iterator nit.</desc>
            <filename>TimelineAgent-2.diff</filename>
            <type>text/plain</type>
            <size>54296</size>
            <attacher name="Kelly Norton">knorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWIyMzkwOC4uMzFhY2Q3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MyBAQAorMjAwOS0wOC0zMSAgS2VsbHkgTm9ydG9u
ICA8a25vcnRvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogQWRkcyBhIHRpbWVsaW5lIGFnZW50IHRvIElu
c3BlY3RvckNvbnRyb2xsZXIgdGhhdCBjb2xsZWN0cworICAgICAgICBoaWdoLWxldmVsIHRpbWlu
ZyBkYXRhIGFib3V0IGV2ZW50IGRpc3BhdGNoLCBsYXlvdXQsIHBhaW50aW5nIGFuZCBIVE1MCisg
ICAgICAgIHBhcnNpbmcgYW5kIG1ha2VzIGl0IGF2YWlsYWJsZSB0byBJbnNwZWN0b3IuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTUwMworCisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEdlbmVyaWNF
dmVudCk6CisgICAgICAgICogaHRtbC9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlbml6ZXI6OndyaXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRGlzcGF0
Y2hUaW1lbGluZUl0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTURpc3BhdGNo
VGltZWxpbmVJdGVtOjpET01EaXNwYXRjaFRpbWVsaW5lSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01EaXNwYXRjaFRpbWVsaW5lSXRlbTo6Y29udmVydFRvU2NyaXB0T2JqZWN0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpET01EaXNwYXRjaFRpbWVsaW5lSXRlbTo6fkRPTURpc3BhdGNoVGltZWxpbmVJ
dGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjplbmFibGVUaW1lbGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpkaXNhYmxlVGltZWxpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQmFja2VuZDo6dGltZWxpbmVFbmFibGVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRGcm9udGVuZFByb3h5
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlc2V0U2NyaXB0T2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVUaW1lbGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNhYmxlVGltZWxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dGltZWxpbmVFbmFi
bGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dGltZWxpbmVBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kOjp0aW1lbGluZVdhc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmQ6OnRpbWVsaW5lV2FzRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZEl0ZW1Ub1RpbWVsaW5lKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGlzcGF0Y2hET01FdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWREaXNwYXRjaERP
TUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxM
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTGF5
b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxSZWNh
bGN1bGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZFJlY2FsY3VsYXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6d2lsbFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OndpbGxXcml0ZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6ZGlkV3JpdGVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpjdXJyZW50VGltZUluTWlsbGlzZWNvbmRzKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNlc3Npb25UaW1lSW5NaWxsaXNlY29uZHMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlRpbWVsaW5lSXRlbTo6VGltZWxpbmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVs
aW5lSXRlbTo6YWRkVG9UaW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZUl0ZW06
OmNvbnZlcnRUb1NjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZUl0ZW06
OmNvbnZlcnRDaGlsZHJlblRvU2NyaXB0QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxp
bmVJdGVtOjphZGRDaGlsZEl0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW0u
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxp
bmVJdGVtOjp+VGltZWxpbmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lSXRlbTo6
cHJldmlvdXMpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVJdGVtOjpyZWxlYXNlUHJldmlv
dXMpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVJdGVtOjpzZXRFbmRUaW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbWVsaW5lSXRlbTo6dHlwZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZUFnZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
aW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5hZGRJdGVtVG9UaW1lbGluZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IudGltZWxpbmVXYXNFbmFibGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci50aW1lbGluZVdhc0Rpc2FibGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAg
ICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omluc3BlY3RvclRp
bWVsaW5lQWdlbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDA5LTA4LTMxICBUb3Ig
QXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBcml5YSBIaWRheWF0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmMGJkZDU4Li41ZTA4Yjk1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTQy
NSw2ICsxNDI1LDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmgn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3Iv
RE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvRE9N
RGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5o
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAnLApAQCAt
MTQzOSw2ICsxNDQxLDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCcsCisgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNj
cmlwdENhbGxGcmFtZS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVn
TGlzdGVuZXIuaCcsCkBAIC0xNDQ4LDYgKzE0NTIsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9KYXZhU2NyaXB0UHJvZmlsZS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlw
dFByb2ZpbGVOb2RlLmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9m
aWxlTm9kZS5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvVGltZWxpbmVJdGVtLmNwcCcsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL1RpbWVsaW5lSXRlbS5oJywKICAgICAgICAgICAgICdsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwJywKQEAgLTM1MDEsNiArMzUwNyw3IEBACiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdW1tYXJ5QmFyLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMnLAorICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGltZWxpbmVBZ2VudC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBiNDFiNjhiLi5iYWFlNzNkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEyMiw2ICsxMTIyLDEwIEBACiAJCTcyNjI2
RTAyMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8q
IEZvbnRGYXN0UGF0aC5jcHAgKi87IH07CiAJCTcyODRBREREMEU2RkVCMzEwMDJFRUZCRCAvKiBV
c2VyU3R5bGVTaGVldExvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Mjg0QUREQjBFNkZFQjMxMDAyRUVGQkQgLyogVXNlclN0eWxlU2hlZXRM
b2FkZXIuY3BwICovOyB9OwogCQk3Mjg0QURERTBFNkZFQjMxMDAyRUVGQkQgLyogVXNlclN0eWxl
U2hlZXRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyODRBRERDMEU2RkVCMzEwMDJFRUZCRCAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5oICov
OyB9OworCQk3NTA5MkJGRTEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0
ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzUw
OTJCRkMxMDRCODBGOTAwM0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmNwcCAqLzsg
fTsKKwkJNzUwOTJCRkYxMDRCODBGOTAwM0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVt
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTA5MkJG
RDEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCAqLzsgfTsKKwkJ
NzU0MTMzQTgxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E3MTAyRTAw
RTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi87IH07CisJCTc1NDEzM0FB
MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E5MTAyRTAwRjQwMDA3
NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCAqLzsgfTsKIAkJNzU3OTNFODMwRDBD
RTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2Fn
ZUV2ZW50LmNwcCAqLzsgfTsKIAkJNzU3OTNFODQwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VF
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3
OTNFODEwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk3NTc5M0VD
ODBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFQzYwRDBDRTcyRDAwN0ZDMEFDIC8q
IEpTTWVzc2FnZUV2ZW50LmNwcCAqLzsgfTsKQEAgLTExMjksNiArMTEzMyw4IEBACiAJCTc1Nzkz
RUQzMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRUQwMEQwQ0U4NUIwMDdGQzBBQyAv
KiBET01NZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJNzU3OTNFRDQwRDBDRTg1QjAwN0ZDMEFDIC8q
IERPTU1lc3NhZ2VFdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1NzkzRUQxMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnQubW0g
Ki87IH07CiAJCTc1NzkzRUQ1MEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3
OTNFRDIwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggKi87IH07
CisJCTc1QTk0QTAzMTA0Qjc0RkIwMDA2NjczQyAvKiBUaW1lbGluZUl0ZW0uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzVBOTRBMDExMDRCNzRGQjAw
MDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5jcHAgKi87IH07CisJCTc1QTk0QTA0MTA0Qjc0RkIwMDA2
NjczQyAvKiBUaW1lbGluZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc1QTk0QTAyMTA0Qjc0RkIwMDA2NjczQyAvKiBUaW1lbGluZUl0ZW0uaCAq
LzsgfTsKIAkJN0ExRTg4RjUxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMUU4OEYzMTAxQ0Mz
ODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5jcHAgKi87IH07CiAJCTdBMUU4OEY2MTAxQ0MzODQw
MDBDNERGNSAvKiBTY3JpcHRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0ExRTg4RjQxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5Lmgg
Ki87IH07CiAJCTdBMjQ1ODdCMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTI0NTg3
OTEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuY3BwICovOyB9OwpAQCAtNjI5
MCw2ICs2Mjk2LDEwIEBACiAJCTcyNjI2RTAxMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBh
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhc3RQYXRo
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4NEFEREIwRTZGRUIzMTAwMkVF
RkJEIC8qIFVzZXJTdHlsZVNoZWV0TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVzZXJTdHlsZVNoZWV0TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI4NEFEREMwRTZGRUIzMTAwMkVFRkJEIC8qIFVzZXJTdHlsZVNoZWV0TG9h
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJTdHlsZVNoZWV0TG9h
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1MDkyQkZDMTA0QjgwRjkwMDNE
RDE2OCAvKiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTc1MDkyQkZEMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRj
aFRpbWVsaW5lSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01EaXNw
YXRjaFRpbWVsaW5lSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NTQxMzNB
NzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NTc5M0U4MDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZXNzYWdlRXZlbnQuY3BwOyBwYXRoID0gZG9t
L01lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNzU3OTNF
ODEwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTWVzc2FnZUV2ZW50Lmg7IHBhdGggPSBkb20vTWVzc2FnZUV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNzU3OTNFODIwRDBDRTBCMzAwN0ZDMEFD
IC8qIE1lc3NhZ2VFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE1lc3NhZ2VFdmVu
dC5pZGw7IHBhdGggPSBkb20vTWVzc2FnZUV2ZW50LmlkbDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwpAQCAtNjI5OCw2ICs2MzA4LDggQEAKIAkJNzU3OTNFRDAwRDBDRTg1QjAwN0ZDMEFD
IC8qIERPTU1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NTWVzc2FnZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NzkzRUQx
MEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2
ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU1lc3Nh
Z2VFdmVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1QTk0QTAx
MTA0Qjc0RkIwMDA2NjczQyAvKiBUaW1lbGluZUl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGltZWxpbmVJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzVBOTRBMDIxMDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lbGluZUl0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0ExRTg4RjMxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEFycmF5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0ExRTg4RjQxMDFDQzM4NDAwMEM0REY1
IC8qIFNjcmlwdEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBMjQ1ODc5MTAyMUVBRjQw
MDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JET01BZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMDEwOSw2ICsxMDEyMSwxMiBAQAogCQkxQzgxQjk0RDBFOTczMkQ5MDAyNjZF
MDcgLyogaW5zcGVjdG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQk3NTA5MkJGQzEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0
ZW0uY3BwICovLAorCQkJCTc1MDkyQkZEMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRjaFRp
bWVsaW5lSXRlbS5oICovLAorCQkJCTc1QTk0QTAxMTA0Qjc0RkIwMDA2NjczQyAvKiBUaW1lbGlu
ZUl0ZW0uY3BwICovLAorCQkJCTc1QTk0QTAyMTA0Qjc0RkIwMDA2NjczQyAvKiBUaW1lbGluZUl0
ZW0uaCAqLywKKwkJCQk3NTQxMzNBOTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAgKi8sCisJCQkJNzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQuaCAqLywKIAkJCQkxQzgxQjk1OTBFOTczMzA4MDAyNjZFMDcgLyogZnJv
bnQtZW5kICovLAogCQkJCTQxRjA2MThEMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2Fn
ZS5jcHAgKi8sCiAJCQkJNDFGMDYxOEMwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdl
LmggKi8sCkBAIC0xNzUzOCw2ICsxNzU1Niw3IEBACiAJCQkJMEZGNTAyNjMxMDJCQTkyQzAwNjZG
MzlBIC8qIERPTU1lZGlhSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjUwMjZBMTAy
QkE5NDMwMDY2RjM5QSAvKiBKU01lZGlhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY1MDI3MjEw
MkJBOTZBMDA2NkYzOUEgLyogTWVkaWEuaCBpbiBIZWFkZXJzICovLAorCQkJCTc1NDEzM0E4MTAy
RTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTQ4NEZDMjEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5NDg0RkM1MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDODEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGl4
ZWxBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNzU3OSw2ICsxNzU5OCw4IEBACiAJCQkJNTEw
RDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFBQkFFMUIxMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVy
cm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29j
a2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3NUE5NEEwNDEwNEI3NEZCMDAw
NjY3M0MgLyogVGltZWxpbmVJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQk3NTA5MkJGRjEwNEI4
MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMTk2MzQsNiArMTk2NTUsNyBAQAogCQkJCTBGRjUwMjVDMTAyQkE5MDEwMDY2RjM5QSAvKiBE
T01NZWRpYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjUwMjY5MTAyQkE5NDMwMDY2RjM5QSAv
KiBKU01lZGlhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjUwMjcxMTAyQkE5NkEwMDY2RjM5
QSAvKiBNZWRpYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3NTQxMzNBQTEwMkUwMEY0MDAwNzVE
MDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4
NEZDMTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDk0ODRGQzQxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BhdHRlcm4uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDk0ODRGQzcxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BpeGVsQXJy
YXkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xOTY3Nyw2ICsxOTY5OSw4IEBACiAJCQkJNTEwRDRB
MzMxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxl
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyog
U29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzVBOTRBMDMx
MDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3
NTA5MkJGRTEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOWZlMzBiYi4uMzYxZTM0OSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtODAsNiArODAsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJ
bWFnZUxvYWRlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUuaCIKQEAgLTEx
NTcsNiArMTE1OCwxMCBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBj
aGFuZ2UpCiAgICAgaWYgKG1faW5TdHlsZVJlY2FsYykKICAgICAgICAgcmV0dXJuOyAvLyBHdWFy
ZCBhZ2FpbnN0IHJlLWVudHJhbmN5LiAtZHdoCiAKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOworICAgIGlmICh0aW1l
bGluZUFnZW50KQorICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUmVjYWxjdWxhdGVTdHlsZSgp
OworCiAgICAgbV9pblN0eWxlUmVjYWxjID0gdHJ1ZTsKICAgICBzdXNwZW5kUG9zdEF0dGFjaENh
bGxiYWNrcygpOwogICAgIGlmICh2aWV3KCkpCkBAIC0xMjI5LDYgKzEyMzQsOSBAQCBiYWlsX291
dDoKICAgICAgICAgbV9jbG9zZUFmdGVyU3R5bGVSZWNhbGMgPSBmYWxzZTsKICAgICAgICAgaW1w
bGljaXRDbG9zZSgpOwogICAgIH0KKworICAgIGlmICh0aW1lbGluZUFnZW50KQorICAgICAgICB0
aW1lbGluZUFnZW50LT5kaWRSZWNhbGN1bGF0ZVN0eWxlKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6
OnVwZGF0ZVN0eWxlSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYTc3Yjg3My4uNTg1MjAxMSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIKICNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyLmgiCisjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgpAQCAtODMsMTIgKzg0LDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBIVE1MSGVhZEVsZW1lbnQ7CiAgICAgY2xhc3Mg
SFRNTElucHV0RWxlbWVudDsKICAgICBjbGFzcyBIVE1MTWFwRWxlbWVudDsKKyAgICBjbGFzcyBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OwogICAgIGNsYXNzIEludFBvaW50OwogICAgIGNsYXNzIEpT
Tm9kZTsKICAgICBjbGFzcyBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzOwogICAgIGNsYXNz
IE5vZGVGaWx0ZXI7CiAgICAgY2xhc3MgTm9kZUl0ZXJhdG9yOwotICAgIGNsYXNzIFBhZ2U7CiAg
ICAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogICAgIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVj
dGlvbjsKICAgICBjbGFzcyBSYW5nZTsKQEAgLTM4Myw2ICszODQsNyBAQCBwdWJsaWM6CiAgICAg
RnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfSAvLyBjYW4gYmUgTlVMTAog
ICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKICAgICBTZXR0aW5ncyogc2V0
dGluZ3MoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3Q7IC8vIGNhbiBiZSBOVUxMCiAKICAgICBQ
YXNzUmVmUHRyPFJhbmdlPiBjcmVhdGVSYW5nZSgpOwogCkBAIC0xMTI3LDYgKzExMjksMTAgQEAg
aW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAogICAgIHJldHVybiB0aGlz
ID09IG1fZG9jdW1lbnQ7CiB9CiAKK2lubGluZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBEb2N1
bWVudDo6aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIGNvbnN0IHsKKyAgICByZXR1cm4gcGFnZSgp
ID8gcGFnZSgpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgOiAwOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBEb2N1bWVudF9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGU1YjhkM2UuLjhkNDY5
OTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JU
aW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCkBAIC0yNTI4LDYgKzI1MjksMTAgQEAg
Ym9vbCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVu
dCkKICAgICBBU1NFUlQoZXZlbnQtPnRhcmdldCgpKTsKICAgICBBU1NFUlQoIWV2ZW50LT50eXBl
KCkuaXNOdWxsKCkpOyAvLyBKYXZhU2NyaXB0IGNvZGUgY2FuIGNyZWF0ZSBhbiBldmVudCB3aXRo
IGFuIGVtcHR5IG5hbWUsIGJ1dCBub3QgbnVsbC4KIAorICAgIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSBkb2N1bWVudCgpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7
CisgICAgaWYgKHRpbWVsaW5lQWdlbnQpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxEaXNw
YXRjaERPTUV2ZW50KCpldmVudCk7CisKICAgICAvLyBNYWtlIGEgdmVjdG9yIG9mIGFuY2VzdG9y
cyB0byBzZW5kIHRoZSBldmVudCB0by4KICAgICAvLyBJZiB0aGUgbm9kZSBpcyBub3QgaW4gYSBk
b2N1bWVudCBqdXN0IHNlbmQgdGhlIGV2ZW50IHRvIGl0LgogICAgIC8vIEJlIHN1cmUgdG8gcmVm
IGFsbCBvZiBub2RlcyBzaW5jZSBldmVudCBoYW5kbGVycyBjb3VsZCByZXN1bHQgaW4gdGhlIGxh
c3QgcmVmZXJlbmNlIGdvaW5nIGF3YXkuCkBAIC0yNjM5LDYgKzI2NDQsOSBAQCBkb25lRGlzcGF0
Y2hpbmc6CiAgICAgfQogCiBkb25lV2l0aERlZmF1bHQ6CisgICAgaWYgKHRpbWVsaW5lQWdlbnQp
CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZERpc3BhdGNoRE9NRXZlbnQoKTsKKwogICAgIERv
Y3VtZW50Ojp1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50cygpOwogCiAgICAgcmV0dXJuICFldmVu
dC0+ZGVmYXVsdFByZXZlbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tl
bml6ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCmluZGV4IGU0ZTQ2YzUu
LmM1YjEzZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJIVE1MUGFyc2VyLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MVmlld1NvdXJjZURvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIgogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQcmVsb2FkU2Nhbm5lci5oIgpAQCAtMTY1NywxMCArMTY1OCwxNCBAQCB2
b2lkIEhUTUxUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc3RyLCBib29s
IGFwcGVuZERhdGEpCiAgICAgaWYgKCFtX2RvYy0+b3duZXJFbGVtZW50KCkpCiAgICAgICAgIHBy
aW50ZigiQmVnaW5uaW5nIHdyaXRlIGF0IHRpbWUgJWRcbiIsIG1fZG9jLT5lbGFwc2VkVGltZSgp
KTsKICNlbmRpZgotICAgIAorCiAgICAgaW50IHByb2Nlc3NlZENvdW50ID0gMDsKICAgICBkb3Vi
bGUgc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKIAorICAgIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSBtX2RvYy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOworICAg
IGlmICh0aW1lbGluZUFnZW50KQorICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsV3JpdGVIVE1M
KCk7CisgIAogICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jLT5mcmFtZSgpOwogCiAgICAgU3RhdGUg
c3RhdGUgPSBtX3N0YXRlOwpAQCAtMTc4MSw3ICsxNzg2LDEwIEBAIHZvaWQgSFRNTFRva2VuaXpl
cjo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzdHIsIGJvb2wgYXBwZW5kRGF0YSkKICAg
ICBpZiAoIW1fZG9jLT5vd25lckVsZW1lbnQoKSkKICAgICAgICAgcHJpbnRmKCJFbmRpbmcgd3Jp
dGUgYXQgdGltZSAlZFxuIiwgbV9kb2MtPmVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCi0gICAgCisK
KyAgICBpZiAodGltZWxpbmVBZ2VudCkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkV3JpdGVI
VE1MKCk7CisKICAgICBtX2luV3JpdGUgPSB3YXNJbldyaXRlOwogCiAgICAgbV9zdGF0ZSA9IHN0
YXRlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0
ZW0uY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YzRjYTUKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9ET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHAKQEAgLTAs
MCArMSw1NSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyoK
KyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
KiBkaXN0cmlidXRpb24uCisqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkRPTURpc3BhdGNoVGltZWxpbmVJdGVtLmgiCisKKyNpbmNsdWRlICJFdmVu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW06OkRPTURpc3BhdGNoVGltZWxpbmVJdGVtKFBh
c3NPd25QdHI8VGltZWxpbmVJdGVtPiBwcmV2aW91cywgZG91YmxlIHN0YXJ0VGltZSwgY29uc3Qg
RXZlbnQmIGV2ZW50KQorICAgIDogVGltZWxpbmVJdGVtKHByZXZpb3VzLCBzdGFydFRpbWUsIERP
TURpc3BhdGNoVGltZWxpbmVJdGVtVHlwZSkKKyAgICAsIG1fZXZlbnRUeXBlKGV2ZW50LnR5cGUo
KS5zdHJpbmcoKSkKK3sKK30KKworU2NyaXB0T2JqZWN0IERPTURpc3BhdGNoVGltZWxpbmVJdGVt
Ojpjb252ZXJ0VG9TY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQorewor
ICAgIFNjcmlwdE9iamVjdCBzZWxmT2JqID0gVGltZWxpbmVJdGVtOjpjb252ZXJ0VG9TY3JpcHRP
YmplY3QoZnJvbnRlbmQpOworICAgIFNjcmlwdE9iamVjdCBkYXRhT2JqID0gZnJvbnRlbmQtPm5l
d1NjcmlwdE9iamVjdCgpOworICAgIGRhdGFPYmouc2V0KCJ0eXBlIiwgbV9ldmVudFR5cGUpOwor
ICAgIHNlbGZPYmouc2V0KCJkYXRhIiwgZGF0YU9iaik7CisgICAgcmV0dXJuIHNlbGZPYmo7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0RPTURpc3Bh
dGNoVGltZWxpbmVJdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg0
Y2UyNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0RPTURpc3BhdGNoVGlt
ZWxpbmVJdGVtLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisqIG1ldDoKKyoKKyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorKiBkaXN0cmlidXRpb24uCisqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKwor
I2lmbmRlZiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbV9oCisjZGVmaW5lIERPTURpc3BhdGNoVGlt
ZWxpbmVJdGVtX2gKKworI2luY2x1ZGUgIlRpbWVsaW5lSXRlbS5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEV2ZW50Owor
ICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOworCisgICAgY2xhc3MgRE9NRGlzcGF0Y2hUaW1l
bGluZUl0ZW0gOiBwdWJsaWMgVGltZWxpbmVJdGVtIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERP
TURpc3BhdGNoVGltZWxpbmVJdGVtKFBhc3NPd25QdHI8VGltZWxpbmVJdGVtPiBwcmV2aW91cywg
ZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgRXZlbnQmKTsKKworICAgICAgICB2aXJ0dWFsIH5ET01E
aXNwYXRjaFRpbWVsaW5lSXRlbSgpIHsgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0
dWFsIFNjcmlwdE9iamVjdCBjb252ZXJ0VG9TY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQq
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFN0cmluZyBtX2V2ZW50VHlwZTsKKyAgICB9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhZGVmaW5lZChET01EaXNwYXRj
aFRpbWVsaW5lSXRlbV9oKQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCmlu
ZGV4IDBkYjVhYzMuLjhjOGM3Y2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQu
Y3BwCkBAIC0yNTEsNiArMjUxLDI1IEBAIGNvbnN0IFN0cmluZyYgSW5zcGVjdG9yQmFja2VuZDo6
cGxhdGZvcm0oKSBjb25zdAogICAgIHJldHVybiBwbGF0Zm9ybTsKIH0KIAordm9pZCBJbnNwZWN0
b3JCYWNrZW5kOjplbmFibGVUaW1lbGluZShib29sIGFsd2F5cykKK3sKKyAgICBpZiAobV9pbnNw
ZWN0b3JDb250cm9sbGVyKQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmVuYWJsZVRp
bWVsaW5lKGFsd2F5cyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6ZGlzYWJsZVRpbWVs
aW5lKGJvb2wgYWx3YXlzKQoreworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAg
ICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGlzYWJsZVRpbWVsaW5lKGFsd2F5cyk7Cit9CisK
K2Jvb2wgSW5zcGVjdG9yQmFja2VuZDo6dGltZWxpbmVFbmFibGVkKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gbV9pbnNwZWN0b3JDb250
cm9sbGVyLT50aW1lbGluZUVuYWJsZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQg
SW5zcGVjdG9yQmFja2VuZDo6Z2V0Q29va2llcyhsb25nIGNhbGxJZCkKIHsKICAgICBpZiAoIW1f
aW5zcGVjdG9yQ29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAppbmRl
eCA1NWY3ODIwLi42NmExY2Q2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCkBA
IC05NSw2ICs5NSwxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIHBsYXRmb3JtKCkg
Y29uc3Q7CiAKKyAgICB2b2lkIGVuYWJsZVRpbWVsaW5lKGJvb2wgYWx3YXlzKTsKKyAgICB2b2lk
IGRpc2FibGVUaW1lbGluZShib29sIGFsd2F5cyk7CisgICAgYm9vbCB0aW1lbGluZUVuYWJsZWQo
KSBjb25zdDsKKwogICAgIHZvaWQgZ2V0Q29va2llcyhsb25nIGNhbGxJZCk7CiAgICAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmlkbAppbmRleCA4N2U3OWZmLi41Njc2MjFiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtNjAsNiArNjAsOSBAQCBtb2R1bGUgY29yZSB7
CiAgICAgICAgIERPTVN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCk7CiAgICAgICAgIERPTVN0
cmluZyBoaWRkZW5QYW5lbHMoKTsKICAgICAgICAgRE9NU3RyaW5nIHBsYXRmb3JtKCk7CisgICAg
ICAgIHZvaWQgZW5hYmxlVGltZWxpbmUoaW4gYm9vbGVhbiBhbHdheXMpOworICAgICAgICB2b2lk
IGRpc2FibGVUaW1lbGluZShpbiBib29sZWFuIGFsd2F5cyk7CisgICAgICAgIGJvb2xlYW4gdGlt
ZWxpbmVFbmFibGVkKCk7CiAgICAgICAgIFtJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uPW1vdmVXaW5k
b3dCeV0gdm9pZCBtb3ZlQnlVbnJlc3RyaWN0ZWQoaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSk7CiAg
ICAgICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaW4gdW5zaWduZWQgbG9uZyBoZWln
aHQpOwogICAgICAgICBbQ3VzdG9tXSBET01PYmplY3Qgd3JhcENhbGxiYWNrKGluIERPTU9iamVj
dCBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGFiOGVlYTUuLmI5NTc1YTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlLmgiCiAjaW5jbHVkZSAiSmF2YVNj
cmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xMDYsNiArMTA3LDcgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGRlYnVnZ2VyRW5hYmxlZFNldHRpbmdOYW1lID0gImRlYnVn
Z2VyRW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcHJvZmlsZXJFbmFibGVkU2V0
dGluZ05hbWUgPSAicHJvZmlsZXJFbmFibGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBp
bnNwZWN0b3JBdHRhY2hlZEhlaWdodE5hbWUgPSAiaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQiOwog
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGxhc3RBY3RpdmVQYW5lbFNldHRpbmdOYW1lID0gImxh
c3RBY3RpdmVQYW5lbCI7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdGltZWxpbmVFbmFibGVk
U2V0dGluZ05hbWUgPSAidGltZWxpbmVFbmFibGVkIjsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGRlZmF1bHRBdHRhY2hlZEhlaWdodCA9IDMwMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVt
QXR0YWNoZWRIZWlnaHQgPSAyNTAuMGY7CkBAIC01NDcsNiArNTQ5LDEwIEBAIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6c2V0RnJvbnRlbmRQcm94eU9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIFNjcmlwCiAgICAgbV9pbmplY3RlZFNjcmlwdE9iaiA9IGluamVjdGVkU2NyaXB0T2Jq
OwogICAgIG1fZnJvbnRlbmQuc2V0KG5ldyBJbnNwZWN0b3JGcm9udGVuZCh0aGlzLCBzY3JpcHRT
dGF0ZSwgd2ViSW5zcGVjdG9yT2JqKSk7CiAgICAgbV9kb21BZ2VudCA9IG5ldyBJbnNwZWN0b3JE
T01BZ2VudChtX2Zyb250ZW5kLmdldCgpKTsKKworICAgIFNldHRpbmcgdGltZWxpbmVFbmFibGVk
ID0gc2V0dGluZyh0aW1lbGluZUVuYWJsZWRTZXR0aW5nTmFtZSk7CisgICAgaWYgKHRpbWVsaW5l
RW5hYmxlZC50eXBlKCkgPT0gU2V0dGluZzo6Qm9vbGVhblR5cGUgJiYgdGltZWxpbmVFbmFibGVk
LmJvb2xlYW5WYWx1ZSgpKQorICAgICAgICBtX3RpbWVsaW5lQWdlbnQgPSBuZXcgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudChtX2Zyb250ZW5kLmdldCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpzaG93KCkKQEAgLTYwNiw2ICs2MTIsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmNsb3NlKCkKICAgICBpZiAobV9kb21BZ2VudCkKICAgICAgICAgbV9kb21BZ2VudC0+c2V0
RG9jdW1lbnQoMCk7CiAgICAgbV9kb21BZ2VudCA9IDA7CisgICAgbV90aW1lbGluZUFnZW50ID0g
MDsKICAgICBtX3NjcmlwdFN0YXRlID0gMDsKIH0KIApAQCAtNjgxLDYgKzY4OCw5IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzZXRTY3JpcHRPYmplY3RzKCkKICAgICAgICAgKCppdCkt
PnVuYmluZCgpOwogI2VuZGlmCiAKKyAgICBpZiAobV90aW1lbGluZUFnZW50KQorICAgICAgICBt
X3RpbWVsaW5lQWdlbnQtPnJlc2V0KCk7CisKICAgICBtX2Zyb250ZW5kLT5yZXNldCgpOwogfQog
CkBAIC0xMDI2LDYgKzEwMzYsNDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVS
ZXNvdXJjZVRyYWNraW5nU2V0dGluZ3NMb2FkZWQoKQogICAgICAgICBtX3Jlc291cmNlVHJhY2tp
bmdFbmFibGVkID0gdHJ1ZTsKIH0KIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVU
aW1lbGluZShib29sIGFsd2F5cykKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGFsd2F5cykKKyAgICAgICAgc2V0U2V0dGluZyh0aW1lbGluZUVuYWJs
ZWRTZXR0aW5nTmFtZSwgU2V0dGluZyh0cnVlKSk7CisKKyAgICBpZiAobV90aW1lbGluZUFnZW50
LmdldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RpbWVsaW5lQWdlbnQgPSBuZXcgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICBpZiAobV9mcm9udGVu
ZCkKKyAgICAgICAgbV9mcm9udGVuZC0+dGltZWxpbmVXYXNFbmFibGVkKCk7Cit9CisKK3ZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZVRpbWVsaW5lKGJvb2wgYWx3YXlzKQoreworICAg
IGlmICghZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYWx3YXlzKQorICAg
ICAgICBzZXRTZXR0aW5nKHRpbWVsaW5lRW5hYmxlZFNldHRpbmdOYW1lLCBTZXR0aW5nKGZhbHNl
KSk7CisKKyAgICBpZiAoIW1fdGltZWxpbmVBZ2VudC5nZXQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV90aW1lbGluZUFnZW50LnNldCgwKTsKKyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAg
ICAgbV9mcm9udGVuZC0+dGltZWxpbmVXYXNEaXNhYmxlZCgpOworfQorCitib29sIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OnRpbWVsaW5lRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFlbmFibGVk
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3RpbWVsaW5lQWdlbnQu
Z2V0KCk7Cit9CisKICNpZiBFTkFCTEUoREFUQUJBU0UpCiB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZE9wZW5EYXRhYmFzZShEYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgZG9t
YWluLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAyN2NkMDA0Li5mM2UyMzBlIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC02Myw2ICs2Myw3IEBA
IGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOworY2xhc3MgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDsKIGNsYXNzIEphdmFTY3JpcHRDYWxsRnJhbWU7CiBjbGFzcyBLVVJM
OwogY2xhc3MgTm9kZTsKQEAgLTIyMSw2ICsyMjIsMTEgQEAgcHVibGljOgogICAgIGJvb2wgcmVz
b3VyY2VUcmFja2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlVHJhY2tpbmdF
bmFibGVkOyB9CiAgICAgdm9pZCBlbnN1cmVSZXNvdXJjZVRyYWNraW5nU2V0dGluZ3NMb2FkZWQo
KTsKIAorICAgIHZvaWQgZW5hYmxlVGltZWxpbmUoYm9vbCBhbHdheXMgPSBmYWxzZSk7CisgICAg
dm9pZCBkaXNhYmxlVGltZWxpbmUoYm9vbCBhbHdheXMgPSBmYWxzZSk7CisgICAgYm9vbCB0aW1l
bGluZUVuYWJsZWQoKSBjb25zdDsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50KCkgeyByZXR1cm4gbV90aW1lbGluZUFnZW50LmdldCgpOyB9CisKICNpZiBFTkFCTEUo
REFUQUJBU0UpCiAgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UqLCBjb25zdCBTdHJp
bmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwog
I2VuZGlmCkBAIC0zMTcsNiArMzIzLDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDbGllbnQq
IG1fY2xpZW50OwogICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZD4gbV9mcm9udGVuZDsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IG1fZG9tQWdlbnQ7CisgICAgT3duUHRyPEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ+IG1fdGltZWxpbmVBZ2VudDsKICAgICBTY3JpcHRPYmplY3QgbV9p
bmplY3RlZFNjcmlwdE9iajsKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgUmVmUHRyPE5vZGU+IG1f
bm9kZVRvRm9jdXM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKaW5kZXgg
NDU3Zjc1NS4uNWFkZWMxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNw
cApAQCAtMTgzLDYgKzE4MywyMyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpyZXNvdXJjZVRy
YWNraW5nV2FzRGlzYWJsZWQoKQogICAgIGNhbGxTaW1wbGVGdW5jdGlvbigicmVzb3VyY2VUcmFj
a2luZ1dhc0Rpc2FibGVkIik7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnRpbWVsaW5l
V2FzRW5hYmxlZCgpCit7CisgICAgY2FsbFNpbXBsZUZ1bmN0aW9uKCJ0aW1lbGluZVdhc0VuYWJs
ZWQiKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6dGltZWxpbmVXYXNEaXNhYmxlZCgp
Cit7CisgICAgY2FsbFNpbXBsZUZ1bmN0aW9uKCJ0aW1lbGluZVdhc0Rpc2FibGVkIik7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZEl0ZW1Ub1RpbWVsaW5lKGNvbnN0IFNjcmlwdE9i
amVjdCYgaXRlbU9iaikKK3sKKyAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlv
bihuZXdGdW5jdGlvbkNhbGwoImFkZEl0ZW1Ub1RpbWVsaW5lIikpOworICAgIGZ1bmN0aW9uLT5h
cHBlbmRBcmd1bWVudChpdGVtT2JqKTsKKyAgICBmdW5jdGlvbi0+Y2FsbCgpOworfQorCiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiB2b2lkIEluc3BlY3RvckZyb250ZW5kOjphdHRh
Y2hEZWJ1Z2dlcldoZW5TaG93bigpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQu
aAppbmRleCAzYWRhNTg3Li5kZTY5OTBkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmgKQEAgLTExMiw2ICsxMTIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIGRpZEdldENoaWxkTm9kZXMoaW50IGNhbGxJZCk7CiAgICAgICAgIHZvaWQgZGlkQXBwbHlE
b21DaGFuZ2UoaW50IGNhbGxJZCwgYm9vbCBzdWNjZXNzKTsKIAorICAgICAgICB2b2lkIHRpbWVs
aW5lV2FzRW5hYmxlZCgpOworICAgICAgICB2b2lkIHRpbWVsaW5lV2FzRGlzYWJsZWQoKTsKKyAg
ICAgICAgdm9pZCBhZGRJdGVtVG9UaW1lbGluZShjb25zdCBTY3JpcHRPYmplY3QmIGl0ZW1PYmop
OworCiAgICAgICAgIHZvaWQgZGlkR2V0Q29va2llcyhpbnQgY2FsbElkLCBjb25zdCBTY3JpcHRB
cnJheSYgY29va2llcywgY29uc3QgU3RyaW5nJiBjb29raWVzU3RyaW5nKTsKIAogICAgICAgICB2
b2lkIGFkZE5vZGVzVG9TZWFyY2hSZXN1bHQoY29uc3QgU3RyaW5nJiBub2RlSWRzKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZTlkMjBlMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC0wLDAgKzEsMTM4IEBACisv
KgorKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlv
bi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgorCisjaW5jbHVkZSAiRE9NRGlzcGF0Y2hUaW1lbGlu
ZUl0ZW0uaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
LmgiCisjaW5jbHVkZSAiVGltZWxpbmVJdGVtLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKKyAgICA6
IG1fc2Vzc2lvblN0YXJ0VGltZShjdXJyZW50VGltZUluTWlsbGlzZWNvbmRzKCkpCisgICAgLCBt
X2Zyb250ZW5kKGZyb250ZW5kKQorICAgICwgbV9jdXJyZW50VGltZWxpbmVJdGVtKDApCit7Cisg
ICAgQVNTRVJUKG1fZnJvbnRlbmQpOworfQorCitJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpCit7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6d2lsbERpc3BhdGNoRE9NRXZlbnQoY29uc3QgRXZlbnQmIGV2ZW50KQoreworICAgIG1fY3Vy
cmVudFRpbWVsaW5lSXRlbSA9IG5ldyBET01EaXNwYXRjaFRpbWVsaW5lSXRlbShtX2N1cnJlbnRU
aW1lbGluZUl0ZW0ucmVsZWFzZSgpLCBzZXNzaW9uVGltZUluTWlsbGlzZWNvbmRzKCksIGV2ZW50
KTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWREaXNwYXRjaERPTUV2ZW50
KCkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50VGltZWxpbmVJdGVtLT50eXBlKCkgPT0gRE9NRGlz
cGF0Y2hUaW1lbGluZUl0ZW1UeXBlKTsKKyAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoKTsK
K30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsTGF5b3V0KCkKK3sKKyAgICBt
X2N1cnJlbnRUaW1lbGluZUl0ZW0gPSBuZXcgVGltZWxpbmVJdGVtKG1fY3VycmVudFRpbWVsaW5l
SXRlbS5yZWxlYXNlKCksIHNlc3Npb25UaW1lSW5NaWxsaXNlY29uZHMoKSwgTGF5b3V0VGltZWxp
bmVJdGVtVHlwZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTGF5b3V0
KCkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50VGltZWxpbmVJdGVtLT50eXBlKCkgPT0gTGF5b3V0
VGltZWxpbmVJdGVtVHlwZSk7CisgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKCk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFJlY2FsY3VsYXRlU3R5bGUoKQorewor
ICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbSA9IG5ldyBUaW1lbGluZUl0ZW0obV9jdXJyZW50VGlt
ZWxpbmVJdGVtLnJlbGVhc2UoKSwgc2Vzc2lvblRpbWVJbk1pbGxpc2Vjb25kcygpLCBSZWNhbGN1
bGF0ZVN0eWxlc1RpbWVsaW5lSXRlbVR5cGUpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpZFJlY2FsY3VsYXRlU3R5bGUoKQoreworICAgIEFTU0VSVChtX2N1cnJlbnRUaW1l
bGluZUl0ZW0tPnR5cGUoKSA9PSBSZWNhbGN1bGF0ZVN0eWxlc1RpbWVsaW5lSXRlbVR5cGUpOwor
ICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZCgpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OndpbGxQYWludCgpCit7CisgICAgbV9jdXJyZW50VGltZWxpbmVJdGVtID0gbmV3
IFRpbWVsaW5lSXRlbShtX2N1cnJlbnRUaW1lbGluZUl0ZW0ucmVsZWFzZSgpLCBzZXNzaW9uVGlt
ZUluTWlsbGlzZWNvbmRzKCksIFBhaW50VGltZWxpbmVJdGVtVHlwZSk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkUGFpbnQoKQoreworICAgIEFTU0VSVChtX2N1cnJlbnRU
aW1lbGluZUl0ZW0tPnR5cGUoKSA9PSBQYWludFRpbWVsaW5lSXRlbVR5cGUpOworICAgIGRpZENv
bXBsZXRlQ3VycmVudFJlY29yZCgpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OndpbGxXcml0ZUhUTUwoKQoreworICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbSA9IG5ldyBUaW1l
bGluZUl0ZW0obV9jdXJyZW50VGltZWxpbmVJdGVtLnJlbGVhc2UoKSwgc2Vzc2lvblRpbWVJbk1p
bGxpc2Vjb25kcygpLCBQYXJzZUhUTUxUaW1lbGluZUl0ZW1UeXBlKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpkaWRXcml0ZUhUTUwoKQoreworICAgIEFTU0VSVChtX2N1cnJl
bnRUaW1lbGluZUl0ZW0tPnR5cGUoKSA9PSBQYXJzZUhUTUxUaW1lbGluZUl0ZW1UeXBlKTsKKyAg
ICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpyZXNldCgpCit7CisgICAgbV9zZXNzaW9uU3RhcnRUaW1lID0gY3VycmVudFRpbWVJ
bk1pbGxpc2Vjb25kcygpOworICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbS5zZXQoMCk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKCkK
K3sKKyAgICBPd25QdHI8VGltZWxpbmVJdGVtPiBpdGVtKG1fY3VycmVudFRpbWVsaW5lSXRlbS5y
ZWxlYXNlKCkpOworICAgIG1fY3VycmVudFRpbWVsaW5lSXRlbSA9IGl0ZW0tPnJlbGVhc2VQcmV2
aW91cygpOworCisgICAgaXRlbS0+c2V0RW5kVGltZShzZXNzaW9uVGltZUluTWlsbGlzZWNvbmRz
KCkpOworICAgIGlmIChtX2N1cnJlbnRUaW1lbGluZUl0ZW0uZ2V0KCkpCisgICAgICAgIG1fY3Vy
cmVudFRpbWVsaW5lSXRlbS0+YWRkQ2hpbGRJdGVtKGl0ZW0ucmVsZWFzZSgpKTsKKyAgICBlbHNl
CisgICAgICAgIGl0ZW0tPmFkZFRvVGltZWxpbmUobV9mcm9udGVuZCk7Cit9CisKK2RvdWJsZSBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpjdXJyZW50VGltZUluTWlsbGlzZWNvbmRzKCkKK3sKKyAg
ICByZXR1cm4gY3VycmVudFRpbWUoKSAqIDEwMDAuMDsKK30KKworZG91YmxlIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OnNlc3Npb25UaW1lSW5NaWxsaXNlY29uZHMoKQoreworICAgIHJldHVybiBj
dXJyZW50VGltZUluTWlsbGlzZWNvbmRzKCkgLSBtX3Nlc3Npb25TdGFydFRpbWU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDk1ZmVkCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
CkBAIC0wLDAgKzEsNzcgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKiBt
ZXQ6CisqCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyogZGlzdHJpYnV0aW9uLgorKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisqCisqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudF9oCisjZGVmaW5lIEluc3BlY3RvclRpbWVsaW5lQWdlbnRfaAor
CisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0QXJyYXkuaCIKKwor
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgRXZlbnQ7CisgICAgY2xhc3MgSW5zcGVjdG9y
RnJvbnRlbmQ7CisgICAgY2xhc3MgVGltZWxpbmVJdGVtOworCisgICAgY2xhc3MgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCB7CisgICAgcHVibGljOgorICAgICAgICBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCk7CisgICAgICAgIH5JbnNwZWN0b3JUaW1l
bGluZUFnZW50KCk7CisKKyAgICAgICAgdm9pZCByZXNldCgpOworCisgICAgICAgIC8vIE1ldGhv
ZHMgY2FsbGVkIGZyb20gV2ViQ29yZS4KKyAgICAgICAgdm9pZCB3aWxsRGlzcGF0Y2hET01FdmVu
dChjb25zdCBFdmVudCYpOworICAgICAgICB2b2lkIGRpZERpc3BhdGNoRE9NRXZlbnQoKTsKKyAg
ICAgICAgdm9pZCB3aWxsTGF5b3V0KCk7CisgICAgICAgIHZvaWQgZGlkTGF5b3V0KCk7CisgICAg
ICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKKyAgICAgICAgdm9pZCBkaWRSZWNhbGN1
bGF0ZVN0eWxlKCk7CisgICAgICAgIHZvaWQgd2lsbFBhaW50KCk7CisgICAgICAgIHZvaWQgZGlk
UGFpbnQoKTsKKyAgICAgICAgdm9pZCBkaWRXcml0ZUhUTUwoKTsKKyAgICAgICAgdm9pZCB3aWxs
V3JpdGVIVE1MKCk7CisgICAgcHJpdmF0ZToKKyAgICAgICAgZG91YmxlIHNlc3Npb25UaW1lSW5N
aWxsaXNlY29uZHMoKTsKKworICAgICAgICBzdGF0aWMgZG91YmxlIGN1cnJlbnRUaW1lSW5NaWxs
aXNlY29uZHMoKTsKKworICAgICAgICB2b2lkIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZCgpOwor
CisgICAgICAgIGRvdWJsZSBtX3Nlc3Npb25TdGFydFRpbWU7CisgICAgICAgIEluc3BlY3RvckZy
b250ZW5kKiBtX2Zyb250ZW5kOworICAgICAgICBPd25QdHI8VGltZWxpbmVJdGVtPiBtX2N1cnJl
bnRUaW1lbGluZUl0ZW07CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGltZWxpbmVBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVs
aW5lSXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDViODFiNAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lSXRlbS5jcHAKQEAg
LTAsMCArMSw3OCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoK
KyoKKyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorKiBkaXN0cmlidXRpb24uCisqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlRpbWVsaW5lSXRlbS5oIgorCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmQuaCIKKyNpbmNsdWRlICJTY3JpcHRBcnJheS5oIgorI2luY2x1ZGUgIlNjcmlwdE9iamVj
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RpbWVsaW5lSXRlbTo6VGltZWxpbmVJdGVt
KFBhc3NPd25QdHI8VGltZWxpbmVJdGVtPiBwcmV2aW91cywgZG91YmxlIHN0YXJ0VGltZSwgVGlt
ZWxpbmVJdGVtVHlwZSBpdGVtVHlwZSkKKyAgICA6IG1fc3RhcnRUaW1lKHN0YXJ0VGltZSkKKyAg
ICAsIG1fZW5kVGltZSgwLjApCisgICAgLCBtX2l0ZW1UeXBlKGl0ZW1UeXBlKQorICAgICwgbV9w
cmV2aW91cyhwcmV2aW91cykKK3sKK30KKwordm9pZCBUaW1lbGluZUl0ZW06OmFkZFRvVGltZWxp
bmUoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQoreworICAgIGZyb250ZW5kLT5hZGRJdGVt
VG9UaW1lbGluZShjb252ZXJ0VG9TY3JpcHRPYmplY3QoZnJvbnRlbmQpKTsKK30KKworU2NyaXB0
T2JqZWN0IFRpbWVsaW5lSXRlbTo6Y29udmVydFRvU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250
ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBTY3JpcHRPYmplY3Qgc2VsZk9iaiA9IGZyb250ZW5kLT5u
ZXdTY3JpcHRPYmplY3QoKTsKKyAgICBzZWxmT2JqLnNldCgidGltZSIsIG1fc3RhcnRUaW1lKTsK
KyAgICBzZWxmT2JqLnNldCgidHlwZSIsIHN0YXRpY19jYXN0PGludD4obV9pdGVtVHlwZSkpOwor
ICAgIHNlbGZPYmouc2V0KCJkdXJhdGlvbiIsIG1fZW5kVGltZSAtIG1fc3RhcnRUaW1lKTsKKyAg
ICBTY3JpcHRBcnJheSBjaGlsZHJlbiA9IGNvbnZlcnRDaGlsZHJlblRvU2NyaXB0QXJyYXkoZnJv
bnRlbmQpOworICAgIHNlbGZPYmouc2V0KCJjaGlsZHJlbiIsIGNoaWxkcmVuKTsKKyAgICByZXR1
cm4gc2VsZk9iajsKK30KKworU2NyaXB0QXJyYXkgVGltZWxpbmVJdGVtOjpjb252ZXJ0Q2hpbGRy
ZW5Ub1NjcmlwdEFycmF5KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBTY3Jp
cHRBcnJheSBjaGlsZHJlbiA9IGZyb250ZW5kLT5uZXdTY3JpcHRBcnJheSgpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQorICAgICAgICBjaGls
ZHJlbi5zZXQoaSwgbV9jaGlsZHJlbltpXS0+Y29udmVydFRvU2NyaXB0T2JqZWN0KGZyb250ZW5k
KSk7CisgICAgcmV0dXJuIGNoaWxkcmVuOworfQorCit2b2lkIFRpbWVsaW5lSXRlbTo6YWRkQ2hp
bGRJdGVtKFBhc3NPd25QdHI8VGltZWxpbmVJdGVtPiB0aW1lbGluZUl0ZW0pCit7CisgICAgbV9j
aGlsZHJlbi5hcHBlbmQodGltZWxpbmVJdGVtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZUl0ZW0uaCBiL1dlYkNv
cmUvaW5zcGVjdG9yL1RpbWVsaW5lSXRlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjE5MDkyMzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9UaW1l
bGluZUl0ZW0uaApAQCAtMCwwICsxLDg4IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlvbi4KKyogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
KgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisj
aWZuZGVmIFRpbWVsaW5lSXRlbV9oCisjZGVmaW5lIFRpbWVsaW5lSXRlbV9oCisKKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kOworICAgIGNsYXNzIFRpbWVsaW5lSXRlbTsKKyAgICBjbGFzcyBTY3JpcHRBcnJh
eTsKKyAgICBjbGFzcyBTY3JpcHRPYmplY3Q7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8
VGltZWxpbmVJdGVtPiA+IFRpbWVsaW5lSXRlbXM7CisKKyAgICAvLyBNdXN0IGJlIGtlcHQgaW4g
c3luYyB3aXRoIFRpbWVsaW5lQWdlbnQuanMKKyAgICBlbnVtIFRpbWVsaW5lSXRlbVR5cGUgewor
ICAgICAgICBET01EaXNwYXRjaFRpbWVsaW5lSXRlbVR5cGUgPSAwLAorICAgICAgICBMYXlvdXRU
aW1lbGluZUl0ZW1UeXBlID0gMSwKKyAgICAgICAgUmVjYWxjdWxhdGVTdHlsZXNUaW1lbGluZUl0
ZW1UeXBlID0gMiwKKyAgICAgICAgUGFpbnRUaW1lbGluZUl0ZW1UeXBlID0gMywKKyAgICAgICAg
UGFyc2VIVE1MVGltZWxpbmVJdGVtVHlwZSA9IDQsCisgICAgfTsKKworICAgIGNsYXNzIFRpbWVs
aW5lSXRlbSB7CisgICAgcHVibGljOgorICAgICAgICBUaW1lbGluZUl0ZW0oUGFzc093blB0cjxU
aW1lbGluZUl0ZW0+LCBkb3VibGUgc3RhcnRUaW1lLCBUaW1lbGluZUl0ZW1UeXBlKTsKKworICAg
ICAgICB2aXJ0dWFsIH5UaW1lbGluZUl0ZW0oKSB7IH0KKworICAgICAgICBUaW1lbGluZUl0ZW0q
IHByZXZpb3VzKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQorCisgICAgICAg
IFBhc3NPd25QdHI8VGltZWxpbmVJdGVtKj4gcmVsZWFzZVByZXZpb3VzKCkgeyByZXR1cm4gbV9w
cmV2aW91cy5yZWxlYXNlKCk7IH0KKworICAgICAgICB2b2lkIGFkZFRvVGltZWxpbmUoSW5zcGVj
dG9yRnJvbnRlbmQqKTsKKworICAgICAgICB2b2lkIGFkZENoaWxkSXRlbShQYXNzT3duUHRyPFRp
bWVsaW5lSXRlbT4pOworCisgICAgICAgIHZvaWQgc2V0RW5kVGltZShkb3VibGUgZW5kVGltZSkg
eyBtX2VuZFRpbWUgPSBlbmRUaW1lOyB9CisKKyAgICAgICAgVGltZWxpbmVJdGVtVHlwZSB0eXBl
KCkgeyByZXR1cm4gbV9pdGVtVHlwZTsgfQorICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVh
bCBTY3JpcHRPYmplY3QgY29udmVydFRvU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKik7
CisKKyAgICAgICAgU2NyaXB0QXJyYXkgY29udmVydENoaWxkcmVuVG9TY3JpcHRBcnJheShJbnNw
ZWN0b3JGcm9udGVuZCopOworICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgZG91YmxlIG1f
c3RhcnRUaW1lOworICAgICAgICBkb3VibGUgbV9lbmRUaW1lOworICAgICAgICBUaW1lbGluZUl0
ZW1UeXBlIG1faXRlbVR5cGU7CisgICAgICAgIE93blB0cjxUaW1lbGluZUl0ZW0+IG1fcHJldmlv
dXM7CisgICAgICAgIFRpbWVsaW5lSXRlbXMgbV9jaGlsZHJlbjsKKyAgICB9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhZGVmaW5lZChUaW1lbGluZUl0ZW1faCkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZUFnZW50LmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lQWdlbnQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQxODczMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZUFnZW50LmpzCkBAIC0wLDAgKzEsNTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitX
ZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudCA9IGZ1bmN0aW9uKCkgeworICAgIC8vIE5vdCBpbXBs
ZW1lbnRlZC4KK30KKworLy8gTXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBUaW1lbGluZUl0ZW0u
aAorV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuSXRlbVR5cGUgPSB7CisgICAgRE9NRGlzcGF0
Y2ggICAgICAgOiAwLAorICAgIExheW91dCAgICAgICAgICAgIDogMSwKKyAgICBSZWNhbGN1bGF0
ZVN0eWxlcyA6IDIsCisgICAgUGFpbnQgICAgICAgICAgICAgOiAzLAorICAgIFBhcnNlSFRNTCAg
ICAgICAgIDogNAorfTsKKworV2ViSW5zcGVjdG9yLmFkZEl0ZW1Ub1RpbWVsaW5lID0gZnVuY3Rp
b24ocmVjb3JkKSB7CisgICAgLy8gTm90IGltcGxlbWVudGVkLgorfQorCitXZWJJbnNwZWN0b3Iu
dGltZWxpbmVXYXNFbmFibGVkID0gZnVuY3Rpb24oKSB7CisgICAgLy8gTm90IGltcGxlbWVudGVk
LgorfQorCitXZWJJbnNwZWN0b3IudGltZWxpbmVXYXNEaXNhYmxlZCA9IGZ1bmN0aW9uKCkgewor
ICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuaHRtbAppbmRleCA0YTUzNmQxLi4xZDc5N2UyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC04OCw2ICs4OCw3IEBAIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJvZmlsZVZpZXcuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTUFnZW50
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJ
bmplY3RlZFNjcmlwdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iVGltZWxpbmVBZ2VudC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBj
bGFzcz0iZGV0YWNoZWQiPgogICAgIDxkaXYgaWQ9InRvb2xiYXIiPgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRl
eCAxYzI4NGMxLi5iYjNiMjE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNDMsOCArNDMsOCBAQAogI2lu
Y2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVTZXRFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5oIgogI2luY2x1ZGUgIk92ZXJmbG93RXZlbnQuaCIKLSNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2luY2x1ZGUgIlJlbmRlclBhcnRPYmplY3QuaCIKICNp
bmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKQEAgLTUyNiw2ICs1MjYsMTAgQEAgdm9pZCBGcmFt
ZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZSkKICAgICBpZiAoaXNQYWludGluZygpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOworICAgIGlmICh0aW1lbGluZUFnZW50KQor
ICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsTGF5b3V0KCk7CisKICAgICBpZiAoIWFsbG93U3Vi
dHJlZSAmJiBtX2xheW91dFJvb3QpIHsKICAgICAgICAgbV9sYXlvdXRSb290LT5tYXJrQ29udGFp
bmluZ0Jsb2Nrc0ZvckxheW91dChmYWxzZSk7CiAgICAgICAgIG1fbGF5b3V0Um9vdCA9IDA7CkBA
IC03MDksNiArNzEzLDkgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJl
ZSkKICAgICAgICAgQVNTRVJUKG1fZW5xdWV1ZUV2ZW50cyk7CiAgICAgfQogCisgICAgaWYgKHRp
bWVsaW5lQWdlbnQpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZExheW91dCgpOworCiAgICAg
bV9uZXN0ZWRMYXlvdXRDb3VudC0tOwogfQogCkBAIC0xNTMxLDcgKzE1MzgsMTEgQEAgdm9pZCBG
cmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewogICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCisg
ICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKTsKKyAgICBpZiAodGltZWxpbmVBZ2VudCkKKyAgICAgICAgdGltZWxpbmVBZ2Vu
dC0+d2lsbFBhaW50KCk7CisKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgpLT5kb2N1
bWVudCgpOwogCiAjaWZuZGVmIE5ERUJVRwpAQCAtMTU5NSw2ICsxNjA2LDkgQEAgdm9pZCBGcmFt
ZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogCiAgICAgaWYgKGlzVG9wTGV2ZWxQYWludGVyKQogICAgICAgICBzQ3VycmVudFBhaW50
VGltZVN0YW1wID0gMDsKKworICAgIGlmICh0aW1lbGluZUFnZW50KQorICAgICAgICB0aW1lbGlu
ZUFnZW50LT5kaWRQYWludCgpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6c2V0UGFpbnRSZXN0cmlj
dGlvbihQYWludFJlc3RyaWN0aW9uIHByKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDljMmNjYWIuLmUzNjY0NTUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKQEAgLTI1LDcgKzI1LDkgQEAKICNpZm5kZWYgRnJhbWVWaWV3X2gKICNkZWZp
bmUgRnJhbWVWaWV3X2gKIAorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUg
IlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzcsNiArMzksNyBA
QCBjbGFzcyBDb2xvcjsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVZp
ZXdQcml2YXRlOworY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDsKIGNsYXNzIEludFJlY3Q7
CiBjbGFzcyBOb2RlOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwpAQCAtMjM2LDYgKzIzOSw4
IEBAIHByaXZhdGU6CiAKICAgICBib29sIHVwZGF0ZVdpZGdldHMoKTsKICAgICB2b2lkIHNjcm9s
bFRvQW5jaG9yKCk7CisKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBpbnNwZWN0b3JUaW1l
bGluZUFnZW50KCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJzKCkg
Y29uc3Q7CiAKQEAgLTMxNiw2ICszMjEsMTEgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJTY3JvbGxi
YXJQYXJ0KiBtX3Njcm9sbENvcm5lcjsKIH07CiAKK2lubGluZSBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiBGcmFtZVZpZXc6Omluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPmluc3BlY3RvclRpbWVsaW5l
QWdlbnQoKSA6IDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEZy
YW1lVmlld19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggYTEzNDk2Yi4uNDY0MTI4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNDAsNiArNDAsNyBA
QAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIK
ICNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgpAQCAtNjMyLDQgKzYzMyw5IEBAIGJv
b2wgUGFnZTo6amF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkKCkgY29uc3QKICAgICByZXR1cm4gbV9q
YXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQ7CiB9CiAKK0luc3BlY3RvclRpbWVsaW5lQWdlbnQqIFBh
Z2U6Omluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPnRpbWVsaW5lQWdlbnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1dlYkNvcmUvcGFnZS9QYWdl
LmgKaW5kZXggZmIyMTJhNC4uM2M4YWFmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiAg
ICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICBjbGFzcyBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgUGFnZUdyb3VwOwogICAgIGNsYXNz
IFBsdWdpbkRhdGE7CkBAIC0yMTAsNiArMjExLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldEphdmFTY3JpcHRVUkxzQXJlQWxsb3dlZChib29sKTsKICAgICAgICAgYm9v
bCBqYXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQoKSBjb25zdDsKIAorICAgICAgICBJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3Q7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39093</attachid>
            <date>2009-09-04 15:49:59 -0700</date>
            <delta_ts>2009-09-08 08:55:18 -0700</delta_ts>
            <desc>Adds Windows build changes.</desc>
            <filename>TimelineAgent-3.diff</filename>
            <type>text/plain</type>
            <size>55708</size>
            <attacher name="Kelly Norton">knorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWIyMzkwOC4uMzFhY2Q3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MyBAQAorMjAwOS0wOC0zMSAgS2VsbHkgTm9ydG9u
ICA8a25vcnRvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogQWRkcyBhIHRpbWVsaW5lIGFnZW50IHRvIElu
c3BlY3RvckNvbnRyb2xsZXIgdGhhdCBjb2xsZWN0cworICAgICAgICBoaWdoLWxldmVsIHRpbWlu
ZyBkYXRhIGFib3V0IGV2ZW50IGRpc3BhdGNoLCBsYXlvdXQsIHBhaW50aW5nIGFuZCBIVE1MCisg
ICAgICAgIHBhcnNpbmcgYW5kIG1ha2VzIGl0IGF2YWlsYWJsZSB0byBJbnNwZWN0b3IuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTUwMworCisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEdlbmVyaWNF
dmVudCk6CisgICAgICAgICogaHRtbC9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlbml6ZXI6OndyaXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRGlzcGF0
Y2hUaW1lbGluZUl0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTURpc3BhdGNo
VGltZWxpbmVJdGVtOjpET01EaXNwYXRjaFRpbWVsaW5lSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01EaXNwYXRjaFRpbWVsaW5lSXRlbTo6Y29udmVydFRvU2NyaXB0T2JqZWN0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpET01EaXNwYXRjaFRpbWVsaW5lSXRlbTo6fkRPTURpc3BhdGNoVGltZWxpbmVJ
dGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjplbmFibGVUaW1lbGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpkaXNhYmxlVGltZWxpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQmFja2VuZDo6dGltZWxpbmVFbmFibGVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRGcm9udGVuZFByb3h5
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlc2V0U2NyaXB0T2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVUaW1lbGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNhYmxlVGltZWxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dGltZWxpbmVFbmFi
bGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dGltZWxpbmVBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kOjp0aW1lbGluZVdhc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmQ6OnRpbWVsaW5lV2FzRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZEl0ZW1Ub1RpbWVsaW5lKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGlzcGF0Y2hET01FdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWREaXNwYXRjaERP
TUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxM
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTGF5
b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxSZWNh
bGN1bGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZFJlY2FsY3VsYXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6d2lsbFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OndpbGxXcml0ZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6ZGlkV3JpdGVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpjdXJyZW50VGltZUluTWlsbGlzZWNvbmRzKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNlc3Npb25UaW1lSW5NaWxsaXNlY29uZHMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlRpbWVsaW5lSXRlbTo6VGltZWxpbmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVs
aW5lSXRlbTo6YWRkVG9UaW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZUl0ZW06
OmNvbnZlcnRUb1NjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZUl0ZW06
OmNvbnZlcnRDaGlsZHJlblRvU2NyaXB0QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxp
bmVJdGVtOjphZGRDaGlsZEl0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW0u
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxp
bmVJdGVtOjp+VGltZWxpbmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lSXRlbTo6
cHJldmlvdXMpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVJdGVtOjpyZWxlYXNlUHJldmlv
dXMpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVJdGVtOjpzZXRFbmRUaW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbWVsaW5lSXRlbTo6dHlwZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZUFnZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
aW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5hZGRJdGVtVG9UaW1lbGluZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IudGltZWxpbmVXYXNFbmFibGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci50aW1lbGluZVdhc0Rpc2FibGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAg
ICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omluc3BlY3RvclRp
bWVsaW5lQWdlbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDA5LTA4LTMxICBUb3Ig
QXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBcml5YSBIaWRheWF0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmMGJkZDU4Li41ZTA4Yjk1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTQy
NSw2ICsxNDI1LDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmgn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3Iv
RE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvRE9N
RGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5o
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAnLApAQCAt
MTQzOSw2ICsxNDQxLDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCcsCisgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNj
cmlwdENhbGxGcmFtZS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVn
TGlzdGVuZXIuaCcsCkBAIC0xNDQ4LDYgKzE0NTIsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9KYXZhU2NyaXB0UHJvZmlsZS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlw
dFByb2ZpbGVOb2RlLmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9m
aWxlTm9kZS5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvVGltZWxpbmVJdGVtLmNwcCcsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL1RpbWVsaW5lSXRlbS5oJywKICAgICAgICAgICAgICdsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwJywKQEAgLTM1MDEsNiArMzUwNyw3IEBACiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdW1tYXJ5QmFyLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMnLAorICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGltZWxpbmVBZ2VudC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggM2Y5ZjgxMS4uYmM3ZTMwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC0zMTE0OCw2ICszMTE0OCwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcRE9NRGlzcGF0Y2hUaW1l
bGluZUl0ZW0uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5caW5zcGVjdG9yXERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yQmFja2VuZC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMzEyMDgsNiAr
MzEyMTYsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvclRpbWVsaW5lQWdlbnQuIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0zMTI0Myw2ICszMTI1OSwxNCBAQAogCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXEphdmFTY3JpcHRQcm9maWxlTm9kZS5oIg0KIAkJCQk+DQogCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFRpbWVs
aW5lSXRlbS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcVGltZWxpbmVJdGVtLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQogCQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJmcm9udC1lbmQiDQogCQkJCT4NCkBAIC0zMTQ0Nyw2
ICszMTQ3MSwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxUaW1lbGluZUFnZW50LmpzIg0KKwkJ
CQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3Rvclxmcm9udC1lbmRcVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMiDQogCQkJCQk+
DQogCQkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGI0MWI2OGIuLmJhYWU3M2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMTIyLDYgKzExMjIsMTAgQEAKIAkJNzI2MjZFMDIwRUYwMjJGRTAw
QTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRo
LmNwcCAqLzsgfTsKIAkJNzI4NEFEREQwRTZGRUIzMTAwMkVFRkJEIC8qIFVzZXJTdHlsZVNoZWV0
TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyODRBRERCMEU2RkVCMzEwMDJFRUZCRCAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5jcHAgKi87
IH07CiAJCTcyODRBRERFMEU2RkVCMzEwMDJFRUZCRCAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI4NEFEREMw
RTZGRUIzMTAwMkVFRkJEIC8qIFVzZXJTdHlsZVNoZWV0TG9hZGVyLmggKi87IH07CisJCTc1MDky
QkZFMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTA5MkJGQzEwNEI4MEY5
MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwICovOyB9OworCQk3NTA5MkJG
RjEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1MDkyQkZEMTA0QjgwRjkwMDNE
RDE2OCAvKiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5oICovOyB9OworCQk3NTQxMzNBODEwMkUw
MEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8q
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCAqLzsgfTsKKwkJNzU0MTMzQUExMDJFMDBGNDAwMDc1
RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU0MTMzQTkxMDJFMDBGNDAwMDc1RDAwIC8qIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwICovOyB9OwogCQk3NTc5M0U4MzBEMENFMEIzMDA3RkMwQUMg
LyogTWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1NzkzRTgwMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuY3BwICov
OyB9OwogCQk3NTc5M0U4NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIz
MDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTc1NzkzRUM4MEQwQ0U3MkQwMDdG
QzBBQyAvKiBKU01lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VDNjBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZl
bnQuY3BwICovOyB9OwpAQCAtMTEyOSw2ICsxMTMzLDggQEAKIAkJNzU3OTNFRDMwRDBDRTg1QjAw
N0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFRDAwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VF
dmVudC5oICovOyB9OwogCQk3NTc5M0VENDBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2
ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3
OTNFRDEwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudC5tbSAqLzsgfTsKIAkJNzU3
OTNFRDUwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VEMjBEMENFODVC
MDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAqLzsgfTsKKwkJNzVBOTRBMDMx
MDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NUE5NEEwMTEwNEI3NEZCMDAwNjY3M0MgLyogVGlt
ZWxpbmVJdGVtLmNwcCAqLzsgfTsKKwkJNzVBOTRBMDQxMDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVs
aW5lSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzVBOTRBMDIxMDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5oICovOyB9OwogCQk3QTFF
ODhGNTEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExRTg4RjMxMDFDQzM4NDAwMEM0REY1IC8q
IFNjcmlwdEFycmF5LmNwcCAqLzsgfTsKIAkJN0ExRTg4RjYxMDFDQzM4NDAwMEM0REY1IC8qIFNj
cmlwdEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QTFFODhGNDEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXkuaCAqLzsgfTsKIAkJN0Ey
NDU4N0IxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMjQ1ODc5MTAyMUVBRjQwMDBB
MDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5jcHAgKi87IH07CkBAIC02MjkwLDYgKzYyOTYsMTAg
QEAKIAkJNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFzdFBhdGguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjg0QUREQjBFNkZFQjMxMDAyRUVGQkQgLyogVXNlclN0
eWxlU2hlZXRMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VXNlclN0eWxlU2hlZXRMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
Mjg0QUREQzBFNkZFQjMxMDAyRUVGQkQgLyogVXNlclN0eWxlU2hlZXRMb2FkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlclN0eWxlU2hlZXRMb2FkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzUwOTJCRkMxMDRCODBGOTAwM0REMTY4IC8qIERPTURp
c3BhdGNoVGltZWxpbmVJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzUwOTJCRkQxMDRCODBGOTAwM0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURpc3BhdGNoVGltZWxpbmVJ
dGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1NDEzM0E3MTAyRTAwRTgwMDA3
NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzU0MTMzQTkxMDJFMDBGNDAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NzkzRTgwMEQw
Q0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IE1lc3NhZ2VFdmVudC5jcHA7IHBhdGggPSBkb20vTWVzc2FnZUV2ZW50
LmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk3NTc5M0U4MTBEMENFMEIzMDA3
RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBNZXNzYWdlRXZlbnQuaDsgcGF0aCA9IGRvbS9NZXNzYWdlRXZlbnQuaDsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OwogCQk3NTc5M0U4MjBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2
ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWVzc2FnZUV2ZW50LmlkbDsgcGF0aCA9
IGRvbS9NZXNzYWdlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CkBAIC02
Mjk4LDYgKzYzMDgsOCBAQAogCQk3NTc5M0VEMDBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2Fn
ZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01NZXNzYWdlRXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU3OTNFRDEwRDBDRTg1QjAwN0ZD
MEFDIC8qIERPTU1lc3NhZ2VFdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBET01NZXNzYWdlRXZlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTc1NzkzRUQyMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50SW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzVBOTRBMDExMDRCNzRGQjAwMDY2
NzNDIC8qIFRpbWVsaW5lSXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUaW1lbGluZUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NUE5
NEEwMjEwNEI3NEZCMDAwNjY3M0MgLyogVGltZWxpbmVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRpbWVsaW5lSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QTFFODhGMzEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0QXJyYXkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QTFFODhGNDEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJy
YXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QXJyYXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EyNDU4NzkxMDIxRUFGNDAwMEEwMEFBIC8qIElu
c3BlY3RvckRPTUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvckRPTUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEw
MTA5LDYgKzEwMTIxLDEyIEBACiAJCTFDODFCOTREMEU5NzMyRDkwMDI2NkUwNyAvKiBpbnNwZWN0
b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTc1MDky
QkZDMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHAgKi8sCisJ
CQkJNzUwOTJCRkQxMDRCODBGOTAwM0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmgg
Ki8sCisJCQkJNzVBOTRBMDExMDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5jcHAgKi8s
CisJCQkJNzVBOTRBMDIxMDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5oICovLAorCQkJ
CTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCAq
LywKKwkJCQk3NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oICovLAogCQkJCTFDODFCOTU5MEU5NzMzMDgwMDI2NkUwNyAvKiBmcm9udC1lbmQgKi8sCiAJ
CQkJNDFGMDYxOEQwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCAqLywKIAkJ
CQk0MUYwNjE4QzBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuaCAqLywKQEAgLTE3
NTM4LDYgKzE3NTU2LDcgQEAKIAkJCQkwRkY1MDI2MzEwMkJBOTJDMDA2NkYzOUEgLyogRE9NTWVk
aWFJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNTAyNkExMDJCQTk0MzAwNjZGMzlB
IC8qIEpTTWVkaWEuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjUwMjcyMTAyQkE5NkEwMDY2RjM5
QSAvKiBNZWRpYS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzU0MTMzQTgxMDJFMDBFODAwMDc1RDAw
IC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5NDg0RkMy
MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDk0ODRGQzUxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BhdHRlcm4uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5NDg0RkM4MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQaXhlbEFycmF5LmggaW4g
SGVhZGVycyAqLywKQEAgLTE3NTc5LDYgKzE3NTk4LDggQEAKIAkJCQk1MTBENEEzODEwMzE2NUVF
MDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUFCQUUxQjEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxQUJBRTFFMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5k
bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTc1QTk0QTA0MTA0Qjc0RkIwMDA2NjczQyAvKiBUaW1l
bGluZUl0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTc1MDkyQkZGMTA0QjgwRjkwMDNERDE2OCAv
KiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTYzNCw2ICsx
OTY1NSw3IEBACiAJCQkJMEZGNTAyNUMxMDJCQTkwMTAwNjZGMzlBIC8qIERPTU1lZGlhLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZGNTAyNjkxMDJCQTk0MzAwNjZGMzlBIC8qIEpTTWVkaWEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNTAyNzExMDJCQTk2QTAwNjZGMzlBIC8qIE1lZGlhLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTc1NDEzM0FBMTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5NDg0RkMxMTAyQ0YyM0Mw
MDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4NEZD
NDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OTQ4NEZDNzEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGl4ZWxBcnJheS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTE5Njc3LDYgKzE5Njk5LDggQEAKIAkJCQk1MTBENEEzMzEwMzE2NUVFMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
MEQ0QTM2MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxQUJBRTFGMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1I
YW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3NUE5NEEwMzEwNEI3NEZCMDAwNjY3
M0MgLyogVGltZWxpbmVJdGVtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc1MDkyQkZFMTA0Qjgw
RjkwMDNERDE2OCAvKiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCA5ZmUzMGJiLi4zNjFlMzQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04MCw2ICs4MCw3
IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlTG9hZGVyLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRp
bWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgpAQCAtMTE1Nyw2ICsxMTU4LDEw
IEBAIHZvaWQgRG9jdW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICBp
ZiAobV9pblN0eWxlUmVjYWxjKQogICAgICAgICByZXR1cm47IC8vIEd1YXJkIGFnYWluc3QgcmUt
ZW50cmFuY3kuIC1kd2gKIAorICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdl
bnQgPSBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CisgICAgaWYgKHRpbWVsaW5lQWdlbnQpCisg
ICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxSZWNhbGN1bGF0ZVN0eWxlKCk7CisKICAgICBtX2lu
U3R5bGVSZWNhbGMgPSB0cnVlOwogICAgIHN1c3BlbmRQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7CiAg
ICAgaWYgKHZpZXcoKSkKQEAgLTEyMjksNiArMTIzNCw5IEBAIGJhaWxfb3V0OgogICAgICAgICBt
X2Nsb3NlQWZ0ZXJTdHlsZVJlY2FsYyA9IGZhbHNlOwogICAgICAgICBpbXBsaWNpdENsb3NlKCk7
CiAgICAgfQorCisgICAgaWYgKHRpbWVsaW5lQWdlbnQpCisgICAgICAgIHRpbWVsaW5lQWdlbnQt
PmRpZFJlY2FsY3VsYXRlU3R5bGUoKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6dXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCBhNzdiODczLi41ODUyMDExIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hDb3VudGVkU2V0Lmg+CkBAIC04MywxMiArODQsMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIEhUTUxIZWFkRWxlbWVudDsKICAgICBjbGFzcyBIVE1MSW5wdXRFbGVt
ZW50OwogICAgIGNsYXNzIEhUTUxNYXBFbGVtZW50OworICAgIGNsYXNzIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ7CiAgICAgY2xhc3MgSW50UG9pbnQ7CiAgICAgY2xhc3MgSlNOb2RlOwogICAgIGNs
YXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7CiAgICAgY2xhc3MgTm9kZUZpbHRlcjsK
ICAgICBjbGFzcyBOb2RlSXRlcmF0b3I7Ci0gICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBQbGF0
Zm9ybU1vdXNlRXZlbnQ7CiAgICAgY2xhc3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uOwogICAgIGNs
YXNzIFJhbmdlOwpAQCAtMzgzLDYgKzM4NCw3IEBAIHB1YmxpYzoKICAgICBGcmFtZSogZnJhbWUo
KSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9IC8vIGNhbiBiZSBOVUxMCiAgICAgUGFnZSogcGFn
ZSgpIGNvbnN0OyAvLyBjYW4gYmUgTlVMTAogICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0
OyAvLyBjYW4gYmUgTlVMTAorICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIGluc3BlY3RvclRp
bWVsaW5lQWdlbnQoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKIAogICAgIFBhc3NSZWZQdHI8UmFu
Z2U+IGNyZWF0ZVJhbmdlKCk7CiAKQEAgLTExMjcsNiArMTEyOSwxMCBAQCBpbmxpbmUgYm9vbCBO
b2RlOjppc0RvY3VtZW50Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRoaXMgPT0gbV9kb2N1bWVu
dDsKIH0KIAoraW5saW5lIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIERvY3VtZW50OjppbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkgY29uc3QgeworICAgIHJldHVybiBwYWdlKCkgPyBwYWdlKCktPmlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSA6IDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIERvY3VtZW50X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuY3Bw
IGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZTViOGQzZS4uOGQ0Njk5MSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTUw
LDYgKzUwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQu
aCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk1vdXNlRXZlbnQuaCIKQEAgLTI1MjgsNiArMjUyOSwxMCBAQCBib29sIE5vZGU6OmRp
c3BhdGNoR2VuZXJpY0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQogICAgIEFTU0VS
VChldmVudC0+dGFyZ2V0KCkpOwogICAgIEFTU0VSVCghZXZlbnQtPnR5cGUoKS5pc051bGwoKSk7
IC8vIEphdmFTY3JpcHQgY29kZSBjYW4gY3JlYXRlIGFuIGV2ZW50IHdpdGggYW4gZW1wdHkgbmFt
ZSwgYnV0IG5vdCBudWxsLgogCisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IGRvY3VtZW50KCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKKyAgICBpZiAodGlt
ZWxpbmVBZ2VudCkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbERpc3BhdGNoRE9NRXZlbnQo
KmV2ZW50KTsKKwogICAgIC8vIE1ha2UgYSB2ZWN0b3Igb2YgYW5jZXN0b3JzIHRvIHNlbmQgdGhl
IGV2ZW50IHRvLgogICAgIC8vIElmIHRoZSBub2RlIGlzIG5vdCBpbiBhIGRvY3VtZW50IGp1c3Qg
c2VuZCB0aGUgZXZlbnQgdG8gaXQuCiAgICAgLy8gQmUgc3VyZSB0byByZWYgYWxsIG9mIG5vZGVz
IHNpbmNlIGV2ZW50IGhhbmRsZXJzIGNvdWxkIHJlc3VsdCBpbiB0aGUgbGFzdCByZWZlcmVuY2Ug
Z29pbmcgYXdheS4KQEAgLTI2MzksNiArMjY0NCw5IEBAIGRvbmVEaXNwYXRjaGluZzoKICAgICB9
CiAKIGRvbmVXaXRoRGVmYXVsdDoKKyAgICBpZiAodGltZWxpbmVBZ2VudCkKKyAgICAgICAgdGlt
ZWxpbmVBZ2VudC0+ZGlkRGlzcGF0Y2hET01FdmVudCgpOworCiAgICAgRG9jdW1lbnQ6OnVwZGF0
ZVN0eWxlRm9yQWxsRG9jdW1lbnRzKCk7CiAKICAgICByZXR1cm4gIWV2ZW50LT5kZWZhdWx0UHJl
dmVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAgYi9X
ZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKaW5kZXggZTRlNDZjNS4uYzViMTNkOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MVG9rZW5pemVyLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJz
ZXIuaCIKICNpbmNsdWRlICJIVE1MU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWV3
U291cmNlRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAj
aW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlByZWxvYWRTY2FubmVyLmgiCkBAIC0xNjU3LDEwICsxNjU4LDE0IEBAIHZvaWQgSFRNTFRva2Vu
aXplcjo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzdHIsIGJvb2wgYXBwZW5kRGF0YSkK
ICAgICBpZiAoIW1fZG9jLT5vd25lckVsZW1lbnQoKSkKICAgICAgICAgcHJpbnRmKCJCZWdpbm5p
bmcgd3JpdGUgYXQgdGltZSAlZFxuIiwgbV9kb2MtPmVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCi0g
ICAgCisKICAgICBpbnQgcHJvY2Vzc2VkQ291bnQgPSAwOwogICAgIGRvdWJsZSBzdGFydFRpbWUg
PSBjdXJyZW50VGltZSgpOwogCisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IG1fZG9jLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CisgICAgaWYgKHRpbWVsaW5l
QWdlbnQpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxXcml0ZUhUTUwoKTsKKyAgCiAgICAg
RnJhbWUqIGZyYW1lID0gbV9kb2MtPmZyYW1lKCk7CiAKICAgICBTdGF0ZSBzdGF0ZSA9IG1fc3Rh
dGU7CkBAIC0xNzgxLDcgKzE3ODYsMTAgQEAgdm9pZCBIVE1MVG9rZW5pemVyOjp3cml0ZShjb25z
dCBTZWdtZW50ZWRTdHJpbmcmIHN0ciwgYm9vbCBhcHBlbmREYXRhKQogICAgIGlmICghbV9kb2Mt
Pm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYoIkVuZGluZyB3cml0ZSBhdCB0aW1lICVk
XG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKLSAgICAKKworICAgIGlmICh0aW1l
bGluZUFnZW50KQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRXcml0ZUhUTUwoKTsKKwogICAg
IG1faW5Xcml0ZSA9IHdhc0luV3JpdGU7CiAKICAgICBtX3N0YXRlID0gc3RhdGU7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9ET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHAgYi9XZWJD
b3JlL2luc3BlY3Rvci9ET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNTljNGNhNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0RPTURpc3BhdGNoVGltZWxpbmVJdGVtLmNwcApAQCAtMCwwICsxLDU1IEBACisv
KgorKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlv
bi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
RE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCIKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitET01EaXNw
YXRjaFRpbWVsaW5lSXRlbTo6RE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0oUGFzc093blB0cjxUaW1l
bGluZUl0ZW0+IHByZXZpb3VzLCBkb3VibGUgc3RhcnRUaW1lLCBjb25zdCBFdmVudCYgZXZlbnQp
CisgICAgOiBUaW1lbGluZUl0ZW0ocHJldmlvdXMsIHN0YXJ0VGltZSwgRE9NRGlzcGF0Y2hUaW1l
bGluZUl0ZW1UeXBlKQorICAgICwgbV9ldmVudFR5cGUoZXZlbnQudHlwZSgpLnN0cmluZygpKQor
eworfQorCitTY3JpcHRPYmplY3QgRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW06OmNvbnZlcnRUb1Nj
cmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit7CisgICAgU2NyaXB0T2Jq
ZWN0IHNlbGZPYmogPSBUaW1lbGluZUl0ZW06OmNvbnZlcnRUb1NjcmlwdE9iamVjdChmcm9udGVu
ZCk7CisgICAgU2NyaXB0T2JqZWN0IGRhdGFPYmogPSBmcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0
KCk7CisgICAgZGF0YU9iai5zZXQoInR5cGUiLCBtX2V2ZW50VHlwZSk7CisgICAgc2VsZk9iai5z
ZXQoImRhdGEiLCBkYXRhT2JqKTsKKyAgICByZXR1cm4gc2VsZk9iajsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9ET01EaXNwYXRj
aFRpbWVsaW5lSXRlbS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0
ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODRjZTI1Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaApA
QCAtMCwwICsxLDU4IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0
OgorKgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisqIGRpc3RyaWJ1dGlvbi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIERPTURp
c3BhdGNoVGltZWxpbmVJdGVtX2gKKyNkZWZpbmUgRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW1faAor
CisjaW5jbHVkZSAiVGltZWxpbmVJdGVtLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRXZlbnQ7CisgICAgY2xhc3MgSW5z
cGVjdG9yRnJvbnRlbmQ7CisKKyAgICBjbGFzcyBET01EaXNwYXRjaFRpbWVsaW5lSXRlbSA6IHB1
YmxpYyBUaW1lbGluZUl0ZW0geworICAgIHB1YmxpYzoKKyAgICAgICAgRE9NRGlzcGF0Y2hUaW1l
bGluZUl0ZW0oUGFzc093blB0cjxUaW1lbGluZUl0ZW0+IHByZXZpb3VzLCBkb3VibGUgc3RhcnRU
aW1lLCBjb25zdCBFdmVudCYpOworCisgICAgICAgIHZpcnR1YWwgfkRPTURpc3BhdGNoVGltZWxp
bmVJdGVtKCkgeyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgU2NyaXB0T2Jq
ZWN0IGNvbnZlcnRUb1NjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCopOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgU3RyaW5nIG1fZXZlbnRUeXBlOworICAgIH07CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVkKERPTURpc3BhdGNoVGltZWxpbmVJdGVt
X2gpCisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3Bw
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKaW5kZXggMGRiNWFjMy4u
OGM4YzdjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5j
cHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKQEAgLTI1MSw2
ICsyNTEsMjUgQEAgY29uc3QgU3RyaW5nJiBJbnNwZWN0b3JCYWNrZW5kOjpwbGF0Zm9ybSgpIGNv
bnN0CiAgICAgcmV0dXJuIHBsYXRmb3JtOwogfQogCit2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmVu
YWJsZVRpbWVsaW5lKGJvb2wgYWx3YXlzKQoreworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xs
ZXIpCisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZW5hYmxlVGltZWxpbmUoYWx3YXlz
KTsKK30KKwordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpkaXNhYmxlVGltZWxpbmUoYm9vbCBhbHdh
eXMpCit7CisgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5kaXNhYmxlVGltZWxpbmUoYWx3YXlzKTsKK30KKworYm9vbCBJbnNwZWN0
b3JCYWNrZW5kOjp0aW1lbGluZUVuYWJsZWQoKSBjb25zdAoreworICAgIGlmIChtX2luc3BlY3Rv
ckNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPnRpbWVs
aW5lRW5hYmxlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBJbnNwZWN0b3JCYWNr
ZW5kOjpnZXRDb29raWVzKGxvbmcgY2FsbElkKQogewogICAgIGlmICghbV9pbnNwZWN0b3JDb250
cm9sbGVyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCmluZGV4IDU1Zjc4MjAuLjY2
YTFjZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKQEAgLTk1LDYgKzk1LDEw
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0oKSBjb25zdDsKIAorICAg
IHZvaWQgZW5hYmxlVGltZWxpbmUoYm9vbCBhbHdheXMpOworICAgIHZvaWQgZGlzYWJsZVRpbWVs
aW5lKGJvb2wgYWx3YXlzKTsKKyAgICBib29sIHRpbWVsaW5lRW5hYmxlZCgpIGNvbnN0OworCiAg
ICAgdm9pZCBnZXRDb29raWVzKGxvbmcgY2FsbElkKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmQuaWRsCmluZGV4IDg3ZTc5ZmYuLjU2NzYyMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmQuaWRsCkBAIC02MCw2ICs2MCw5IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgRE9N
U3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKTsKICAgICAgICAgRE9NU3RyaW5nIGhpZGRlblBh
bmVscygpOwogICAgICAgICBET01TdHJpbmcgcGxhdGZvcm0oKTsKKyAgICAgICAgdm9pZCBlbmFi
bGVUaW1lbGluZShpbiBib29sZWFuIGFsd2F5cyk7CisgICAgICAgIHZvaWQgZGlzYWJsZVRpbWVs
aW5lKGluIGJvb2xlYW4gYWx3YXlzKTsKKyAgICAgICAgYm9vbGVhbiB0aW1lbGluZUVuYWJsZWQo
KTsKICAgICAgICAgW0ltcGxlbWVudGF0aW9uRnVuY3Rpb249bW92ZVdpbmRvd0J5XSB2b2lkIG1v
dmVCeVVucmVzdHJpY3RlZChpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KTsKICAgICAgICAgdm9pZCBz
ZXRBdHRhY2hlZFdpbmRvd0hlaWdodChpbiB1bnNpZ25lZCBsb25nIGhlaWdodCk7CiAgICAgICAg
IFtDdXN0b21dIERPTU9iamVjdCB3cmFwQ2FsbGJhY2soaW4gRE9NT2JqZWN0IGNhbGxiYWNrKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYWI4ZWVhNS4u
Yjk1NzVhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAg
LTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9y
YWdlUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yUmVzb3VyY2UuaCIKICNpbmNsdWRlICJKYXZhU2NyaXB0UHJvZmlsZS5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTEwNiw2ICsxMDcsNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgZGVidWdnZXJFbmFibGVkU2V0dGluZ05hbWUgPSAiZGVidWdnZXJFbmFibGVkIjsK
IHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBwcm9maWxlckVuYWJsZWRTZXR0aW5nTmFtZSA9ICJw
cm9maWxlckVuYWJsZWQiOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGluc3BlY3RvckF0dGFj
aGVkSGVpZ2h0TmFtZSA9ICJpbnNwZWN0b3JBdHRhY2hlZEhlaWdodCI7CiBzdGF0aWMgY29uc3Qg
Y2hhciogY29uc3QgbGFzdEFjdGl2ZVBhbmVsU2V0dGluZ05hbWUgPSAibGFzdEFjdGl2ZVBhbmVs
IjsKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0aW1lbGluZUVuYWJsZWRTZXR0aW5nTmFtZSA9
ICJ0aW1lbGluZUVuYWJsZWQiOwogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdEF0dGFj
aGVkSGVpZ2h0ID0gMzAwOwogc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1BdHRhY2hlZEhlaWdo
dCA9IDI1MC4wZjsKQEAgLTU0Nyw2ICs1NDksMTAgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpzZXRGcm9udGVuZFByb3h5T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2NyaXAK
ICAgICBtX2luamVjdGVkU2NyaXB0T2JqID0gaW5qZWN0ZWRTY3JpcHRPYmo7CiAgICAgbV9mcm9u
dGVuZC5zZXQobmV3IEluc3BlY3RvckZyb250ZW5kKHRoaXMsIHNjcmlwdFN0YXRlLCB3ZWJJbnNw
ZWN0b3JPYmopKTsKICAgICBtX2RvbUFnZW50ID0gbmV3IEluc3BlY3RvckRPTUFnZW50KG1fZnJv
bnRlbmQuZ2V0KCkpOworCisgICAgU2V0dGluZyB0aW1lbGluZUVuYWJsZWQgPSBzZXR0aW5nKHRp
bWVsaW5lRW5hYmxlZFNldHRpbmdOYW1lKTsKKyAgICBpZiAodGltZWxpbmVFbmFibGVkLnR5cGUo
KSA9PSBTZXR0aW5nOjpCb29sZWFuVHlwZSAmJiB0aW1lbGluZUVuYWJsZWQuYm9vbGVhblZhbHVl
KCkpCisgICAgICAgIG1fdGltZWxpbmVBZ2VudCA9IG5ldyBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KG1fZnJvbnRlbmQuZ2V0KCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3co
KQpAQCAtNjA2LDYgKzYxMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xvc2UoKQog
ICAgIGlmIChtX2RvbUFnZW50KQogICAgICAgICBtX2RvbUFnZW50LT5zZXREb2N1bWVudCgwKTsK
ICAgICBtX2RvbUFnZW50ID0gMDsKKyAgICBtX3RpbWVsaW5lQWdlbnQgPSAwOwogICAgIG1fc2Ny
aXB0U3RhdGUgPSAwOwogfQogCkBAIC02ODEsNiArNjg4LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpyZXNldFNjcmlwdE9iamVjdHMoKQogICAgICAgICAoKml0KS0+dW5iaW5kKCk7CiAj
ZW5kaWYKIAorICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCisgICAgICAgIG1fdGltZWxpbmVBZ2Vu
dC0+cmVzZXQoKTsKKwogICAgIG1fZnJvbnRlbmQtPnJlc2V0KCk7CiB9CiAKQEAgLTEwMjYsNiAr
MTAzNiw0NiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZVJlc291cmNlVHJhY2tp
bmdTZXR0aW5nc0xvYWRlZCgpCiAgICAgICAgIG1fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQgPSB0
cnVlOwogfQogCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuYWJsZVRpbWVsaW5lKGJvb2wg
YWx3YXlzKQoreworICAgIGlmICghZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoYWx3YXlzKQorICAgICAgICBzZXRTZXR0aW5nKHRpbWVsaW5lRW5hYmxlZFNldHRpbmdOYW1l
LCBTZXR0aW5nKHRydWUpKTsKKworICAgIGlmIChtX3RpbWVsaW5lQWdlbnQuZ2V0KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fdGltZWxpbmVBZ2VudCA9IG5ldyBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgIGlmIChtX2Zyb250ZW5kKQorICAgICAgICBt
X2Zyb250ZW5kLT50aW1lbGluZVdhc0VuYWJsZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpkaXNhYmxlVGltZWxpbmUoYm9vbCBhbHdheXMpCit7CisgICAgaWYgKCFlbmFibGVk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhbHdheXMpCisgICAgICAgIHNldFNldHRp
bmcodGltZWxpbmVFbmFibGVkU2V0dGluZ05hbWUsIFNldHRpbmcoZmFsc2UpKTsKKworICAgIGlm
ICghbV90aW1lbGluZUFnZW50LmdldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RpbWVs
aW5lQWdlbnQuc2V0KDApOworICAgIGlmIChtX2Zyb250ZW5kKQorICAgICAgICBtX2Zyb250ZW5k
LT50aW1lbGluZVdhc0Rpc2FibGVkKCk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6
dGltZWxpbmVFbmFibGVkKCkgY29uc3QKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fdGltZWxpbmVBZ2VudC5nZXQoKTsKK30KKwog
I2lmIEVOQUJMRShEQVRBQkFTRSkKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkT3BlbkRh
dGFiYXNlKERhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDI3Y2QwMDQuLmYzZTIzMGUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSW5zcGVj
dG9yQmFja2VuZDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckRPTUFn
ZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CitjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OwogY2xhc3MgSmF2YVNjcmlwdENhbGxGcmFtZTsKIGNsYXNzIEtVUkw7CiBjbGFzcyBOb2Rl
OwpAQCAtMjIxLDYgKzIyMiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXNvdXJjZVRyYWNraW5n
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQ7IH0KICAg
ICB2b2lkIGVuc3VyZVJlc291cmNlVHJhY2tpbmdTZXR0aW5nc0xvYWRlZCgpOwogCisgICAgdm9p
ZCBlbmFibGVUaW1lbGluZShib29sIGFsd2F5cyA9IGZhbHNlKTsKKyAgICB2b2lkIGRpc2FibGVU
aW1lbGluZShib29sIGFsd2F5cyA9IGZhbHNlKTsKKyAgICBib29sIHRpbWVsaW5lRW5hYmxlZCgp
IGNvbnN0OworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQoKSB7IHJl
dHVybiBtX3RpbWVsaW5lQWdlbnQuZ2V0KCk7IH0KKwogI2lmIEVOQUJMRShEQVRBQkFTRSkKICAg
ICB2b2lkIGRpZE9wZW5EYXRhYmFzZShEYXRhYmFzZSosIGNvbnN0IFN0cmluZyYgZG9tYWluLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAjZW5kaWYKQEAgLTMx
Nyw2ICszMjMsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAg
ICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kPiBtX2Zyb250ZW5kOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3JET01BZ2VudD4gbV9kb21BZ2VudDsKKyAgICBPd25QdHI8SW5zcGVjdG9yVGltZWxpbmVB
Z2VudD4gbV90aW1lbGluZUFnZW50OwogICAgIFNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0
T2JqOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAppbmRleCA0NTdmNzU1Li41YWRl
YzE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCkBAIC0xODMsNiAr
MTgzLDIzIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnJlc291cmNlVHJhY2tpbmdXYXNEaXNh
YmxlZCgpCiAgICAgY2FsbFNpbXBsZUZ1bmN0aW9uKCJyZXNvdXJjZVRyYWNraW5nV2FzRGlzYWJs
ZWQiKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6dGltZWxpbmVXYXNFbmFibGVkKCkK
K3sKKyAgICBjYWxsU2ltcGxlRnVuY3Rpb24oInRpbWVsaW5lV2FzRW5hYmxlZCIpOworfQorCit2
b2lkIEluc3BlY3RvckZyb250ZW5kOjp0aW1lbGluZVdhc0Rpc2FibGVkKCkKK3sKKyAgICBjYWxs
U2ltcGxlRnVuY3Rpb24oInRpbWVsaW5lV2FzRGlzYWJsZWQiKTsKK30KKwordm9pZCBJbnNwZWN0
b3JGcm9udGVuZDo6YWRkSXRlbVRvVGltZWxpbmUoY29uc3QgU2NyaXB0T2JqZWN0JiBpdGVtT2Jq
KQoreworICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9u
Q2FsbCgiYWRkSXRlbVRvVGltZWxpbmUiKSk7CisgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50
KGl0ZW1PYmopOworICAgIGZ1bmN0aW9uLT5jYWxsKCk7Cit9CisKICNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmF0dGFjaERlYnVnZ2VyV2hl
blNob3duKCkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCmluZGV4IDNhZGE1
ODcuLmRlNjk5MGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaApAQCAtMTEy
LDYgKzExMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZGlkR2V0Q2hp
bGROb2RlcyhpbnQgY2FsbElkKTsKICAgICAgICAgdm9pZCBkaWRBcHBseURvbUNoYW5nZShpbnQg
Y2FsbElkLCBib29sIHN1Y2Nlc3MpOwogCisgICAgICAgIHZvaWQgdGltZWxpbmVXYXNFbmFibGVk
KCk7CisgICAgICAgIHZvaWQgdGltZWxpbmVXYXNEaXNhYmxlZCgpOworICAgICAgICB2b2lkIGFk
ZEl0ZW1Ub1RpbWVsaW5lKGNvbnN0IFNjcmlwdE9iamVjdCYgaXRlbU9iaik7CisKICAgICAgICAg
dm9pZCBkaWRHZXRDb29raWVzKGludCBjYWxsSWQsIGNvbnN0IFNjcmlwdEFycmF5JiBjb29raWVz
LCBjb25zdCBTdHJpbmcmIGNvb2tpZXNTdHJpbmcpOwogCiAgICAgICAgIHZvaWQgYWRkTm9kZXNU
b1NlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIG5vZGVJZHMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lOWQyMGUwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTAsMCArMSwxMzggQEAKKy8qCisqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorKiBtZXQ6CisqCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogZGlzdHJpYnV0aW9uLgorKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmgiCisKKyNpbmNsdWRlICJET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5oIgorI2lu
Y2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRl
ICJUaW1lbGluZUl0ZW0uaCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0luc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQorICAgIDogbV9zZXNzaW9uU3Rh
cnRUaW1lKGN1cnJlbnRUaW1lSW5NaWxsaXNlY29uZHMoKSkKKyAgICAsIG1fZnJvbnRlbmQoZnJv
bnRlbmQpCisgICAgLCBtX2N1cnJlbnRUaW1lbGluZUl0ZW0oMCkKK3sKKyAgICBBU1NFUlQobV9m
cm9udGVuZCk7Cit9CisKK0luc3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KCkKK3sKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGlzcGF0
Y2hET01FdmVudChjb25zdCBFdmVudCYgZXZlbnQpCit7CisgICAgbV9jdXJyZW50VGltZWxpbmVJ
dGVtID0gbmV3IERPTURpc3BhdGNoVGltZWxpbmVJdGVtKG1fY3VycmVudFRpbWVsaW5lSXRlbS5y
ZWxlYXNlKCksIHNlc3Npb25UaW1lSW5NaWxsaXNlY29uZHMoKSwgZXZlbnQpOworfQorCit2b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZERpc3BhdGNoRE9NRXZlbnQoKQoreworICAgIEFT
U0VSVChtX2N1cnJlbnRUaW1lbGluZUl0ZW0tPnR5cGUoKSA9PSBET01EaXNwYXRjaFRpbWVsaW5l
SXRlbVR5cGUpOworICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZCgpOworfQorCit2b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxMYXlvdXQoKQoreworICAgIG1fY3VycmVudFRpbWVs
aW5lSXRlbSA9IG5ldyBUaW1lbGluZUl0ZW0obV9jdXJyZW50VGltZWxpbmVJdGVtLnJlbGVhc2Uo
KSwgc2Vzc2lvblRpbWVJbk1pbGxpc2Vjb25kcygpLCBMYXlvdXRUaW1lbGluZUl0ZW1UeXBlKTsK
K30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRMYXlvdXQoKQoreworICAgIEFT
U0VSVChtX2N1cnJlbnRUaW1lbGluZUl0ZW0tPnR5cGUoKSA9PSBMYXlvdXRUaW1lbGluZUl0ZW1U
eXBlKTsKKyAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoKTsKK30KKwordm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50Ojp3aWxsUmVjYWxjdWxhdGVTdHlsZSgpCit7CisgICAgbV9jdXJyZW50
VGltZWxpbmVJdGVtID0gbmV3IFRpbWVsaW5lSXRlbShtX2N1cnJlbnRUaW1lbGluZUl0ZW0ucmVs
ZWFzZSgpLCBzZXNzaW9uVGltZUluTWlsbGlzZWNvbmRzKCksIFJlY2FsY3VsYXRlU3R5bGVzVGlt
ZWxpbmVJdGVtVHlwZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkUmVj
YWxjdWxhdGVTdHlsZSgpCit7CisgICAgQVNTRVJUKG1fY3VycmVudFRpbWVsaW5lSXRlbS0+dHlw
ZSgpID09IFJlY2FsY3VsYXRlU3R5bGVzVGltZWxpbmVJdGVtVHlwZSk7CisgICAgZGlkQ29tcGxl
dGVDdXJyZW50UmVjb3JkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2ls
bFBhaW50KCkKK3sKKyAgICBtX2N1cnJlbnRUaW1lbGluZUl0ZW0gPSBuZXcgVGltZWxpbmVJdGVt
KG1fY3VycmVudFRpbWVsaW5lSXRlbS5yZWxlYXNlKCksIHNlc3Npb25UaW1lSW5NaWxsaXNlY29u
ZHMoKSwgUGFpbnRUaW1lbGluZUl0ZW1UeXBlKTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpkaWRQYWludCgpCit7CisgICAgQVNTRVJUKG1fY3VycmVudFRpbWVsaW5lSXRlbS0+
dHlwZSgpID09IFBhaW50VGltZWxpbmVJdGVtVHlwZSk7CisgICAgZGlkQ29tcGxldGVDdXJyZW50
UmVjb3JkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFdyaXRlSFRN
TCgpCit7CisgICAgbV9jdXJyZW50VGltZWxpbmVJdGVtID0gbmV3IFRpbWVsaW5lSXRlbShtX2N1
cnJlbnRUaW1lbGluZUl0ZW0ucmVsZWFzZSgpLCBzZXNzaW9uVGltZUluTWlsbGlzZWNvbmRzKCks
IFBhcnNlSFRNTFRpbWVsaW5lSXRlbVR5cGUpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpZFdyaXRlSFRNTCgpCit7CisgICAgQVNTRVJUKG1fY3VycmVudFRpbWVsaW5lSXRl
bS0+dHlwZSgpID09IFBhcnNlSFRNTFRpbWVsaW5lSXRlbVR5cGUpOworICAgIGRpZENvbXBsZXRl
Q3VycmVudFJlY29yZCgpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJlc2V0
KCkKK3sKKyAgICBtX3Nlc3Npb25TdGFydFRpbWUgPSBjdXJyZW50VGltZUluTWlsbGlzZWNvbmRz
KCk7CisgICAgbV9jdXJyZW50VGltZWxpbmVJdGVtLnNldCgwKTsKK30KKwordm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoKQoreworICAgIE93blB0
cjxUaW1lbGluZUl0ZW0+IGl0ZW0obV9jdXJyZW50VGltZWxpbmVJdGVtLnJlbGVhc2UoKSk7Cisg
ICAgbV9jdXJyZW50VGltZWxpbmVJdGVtID0gaXRlbS0+cmVsZWFzZVByZXZpb3VzKCk7CisKKyAg
ICBpdGVtLT5zZXRFbmRUaW1lKHNlc3Npb25UaW1lSW5NaWxsaXNlY29uZHMoKSk7CisgICAgaWYg
KG1fY3VycmVudFRpbWVsaW5lSXRlbS5nZXQoKSkKKyAgICAgICAgbV9jdXJyZW50VGltZWxpbmVJ
dGVtLT5hZGRDaGlsZEl0ZW0oaXRlbS5yZWxlYXNlKCkpOworICAgIGVsc2UKKyAgICAgICAgaXRl
bS0+YWRkVG9UaW1lbGluZShtX2Zyb250ZW5kKTsKK30KKworZG91YmxlIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmN1cnJlbnRUaW1lSW5NaWxsaXNlY29uZHMoKQoreworICAgIHJldHVybiBjdXJy
ZW50VGltZSgpICogMTAwMC4wOworfQorCitkb3VibGUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
c2Vzc2lvblRpbWVJbk1pbGxpc2Vjb25kcygpCit7CisgICAgcmV0dXJuIGN1cnJlbnRUaW1lSW5N
aWxsaXNlY29uZHMoKSAtIG1fc2Vzc2lvblN0YXJ0VGltZTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwOTVmZWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTAsMCArMSw3
NyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyoKKyogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiBkaXN0
cmlidXRpb24uCisqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudF9oCisKKyNpbmNsdWRlICJT
Y3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRBcnJheS5oIgorCisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICBjbGFzcyBFdmVudDsKKyAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKKyAg
ICBjbGFzcyBUaW1lbGluZUl0ZW07CisKKyAgICBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zcGVjdG9y
RnJvbnRlbmQqIGZyb250ZW5kKTsKKyAgICAgICAgfkluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsK
KworICAgICAgICB2b2lkIHJlc2V0KCk7CisKKyAgICAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJv
bSBXZWJDb3JlLgorICAgICAgICB2b2lkIHdpbGxEaXNwYXRjaERPTUV2ZW50KGNvbnN0IEV2ZW50
Jik7CisgICAgICAgIHZvaWQgZGlkRGlzcGF0Y2hET01FdmVudCgpOworICAgICAgICB2b2lkIHdp
bGxMYXlvdXQoKTsKKyAgICAgICAgdm9pZCBkaWRMYXlvdXQoKTsKKyAgICAgICAgdm9pZCB3aWxs
UmVjYWxjdWxhdGVTdHlsZSgpOworICAgICAgICB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUoKTsK
KyAgICAgICAgdm9pZCB3aWxsUGFpbnQoKTsKKyAgICAgICAgdm9pZCBkaWRQYWludCgpOworICAg
ICAgICB2b2lkIGRpZFdyaXRlSFRNTCgpOworICAgICAgICB2b2lkIHdpbGxXcml0ZUhUTUwoKTsK
KyAgICBwcml2YXRlOgorICAgICAgICBkb3VibGUgc2Vzc2lvblRpbWVJbk1pbGxpc2Vjb25kcygp
OworCisgICAgICAgIHN0YXRpYyBkb3VibGUgY3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpOwor
CisgICAgICAgIHZvaWQgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKCk7CisKKyAgICAgICAgZG91
YmxlIG1fc2Vzc2lvblN0YXJ0VGltZTsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJv
bnRlbmQ7CisgICAgICAgIE93blB0cjxUaW1lbGluZUl0ZW0+IG1fY3VycmVudFRpbWVsaW5lSXRl
bTsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhZGVmaW5l
ZChJbnNwZWN0b3JUaW1lbGluZUFnZW50X2gpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZUl0ZW0uY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWI4MWI0Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtLmNwcApAQCAtMCwwICsxLDc4IEBA
CisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1
dGlvbi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGltZWxpbmVJdGVtLmgiCisKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEFycmF5LmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworVGltZWxpbmVJdGVtOjpUaW1lbGluZUl0ZW0oUGFzc093blB0cjxU
aW1lbGluZUl0ZW0+IHByZXZpb3VzLCBkb3VibGUgc3RhcnRUaW1lLCBUaW1lbGluZUl0ZW1UeXBl
IGl0ZW1UeXBlKQorICAgIDogbV9zdGFydFRpbWUoc3RhcnRUaW1lKQorICAgICwgbV9lbmRUaW1l
KDAuMCkKKyAgICAsIG1faXRlbVR5cGUoaXRlbVR5cGUpCisgICAgLCBtX3ByZXZpb3VzKHByZXZp
b3VzKQoreworfQorCit2b2lkIFRpbWVsaW5lSXRlbTo6YWRkVG9UaW1lbGluZShJbnNwZWN0b3JG
cm9udGVuZCogZnJvbnRlbmQpCit7CisgICAgZnJvbnRlbmQtPmFkZEl0ZW1Ub1RpbWVsaW5lKGNv
bnZlcnRUb1NjcmlwdE9iamVjdChmcm9udGVuZCkpOworfQorCitTY3JpcHRPYmplY3QgVGltZWxp
bmVJdGVtOjpjb252ZXJ0VG9TY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5k
KQoreworICAgIFNjcmlwdE9iamVjdCBzZWxmT2JqID0gZnJvbnRlbmQtPm5ld1NjcmlwdE9iamVj
dCgpOworICAgIHNlbGZPYmouc2V0KCJ0aW1lIiwgbV9zdGFydFRpbWUpOworICAgIHNlbGZPYmou
c2V0KCJ0eXBlIiwgc3RhdGljX2Nhc3Q8aW50PihtX2l0ZW1UeXBlKSk7CisgICAgc2VsZk9iai5z
ZXQoImR1cmF0aW9uIiwgbV9lbmRUaW1lIC0gbV9zdGFydFRpbWUpOworICAgIFNjcmlwdEFycmF5
IGNoaWxkcmVuID0gY29udmVydENoaWxkcmVuVG9TY3JpcHRBcnJheShmcm9udGVuZCk7CisgICAg
c2VsZk9iai5zZXQoImNoaWxkcmVuIiwgY2hpbGRyZW4pOworICAgIHJldHVybiBzZWxmT2JqOwor
fQorCitTY3JpcHRBcnJheSBUaW1lbGluZUl0ZW06OmNvbnZlcnRDaGlsZHJlblRvU2NyaXB0QXJy
YXkoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQoreworICAgIFNjcmlwdEFycmF5IGNoaWxk
cmVuID0gZnJvbnRlbmQtPm5ld1NjcmlwdEFycmF5KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpCisgICAgICAgIGNoaWxkcmVuLnNldChpLCBt
X2NoaWxkcmVuW2ldLT5jb252ZXJ0VG9TY3JpcHRPYmplY3QoZnJvbnRlbmQpKTsKKyAgICByZXR1
cm4gY2hpbGRyZW47Cit9CisKK3ZvaWQgVGltZWxpbmVJdGVtOjphZGRDaGlsZEl0ZW0oUGFzc093
blB0cjxUaW1lbGluZUl0ZW0+IHRpbWVsaW5lSXRlbSkKK3sKKyAgICBtX2NoaWxkcmVuLmFwcGVu
ZCh0aW1lbGluZUl0ZW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lSXRlbS5oIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
VGltZWxpbmVJdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkwOTIz
MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lSXRlbS5oCkBA
IC0wLDAgKzEsODggQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKiBtZXQ6
CisqCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyogZGlzdHJpYnV0aW9uLgorKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisqCisqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgVGltZWxp
bmVJdGVtX2gKKyNkZWZpbmUgVGltZWxpbmVJdGVtX2gKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7Cisg
ICAgY2xhc3MgVGltZWxpbmVJdGVtOworICAgIGNsYXNzIFNjcmlwdEFycmF5OworICAgIGNsYXNz
IFNjcmlwdE9iamVjdDsKKworICAgIHR5cGVkZWYgVmVjdG9yPE93blB0cjxUaW1lbGluZUl0ZW0+
ID4gVGltZWxpbmVJdGVtczsKKworICAgIC8vIE11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggVGlt
ZWxpbmVBZ2VudC5qcworICAgIGVudW0gVGltZWxpbmVJdGVtVHlwZSB7CisgICAgICAgIERPTURp
c3BhdGNoVGltZWxpbmVJdGVtVHlwZSA9IDAsCisgICAgICAgIExheW91dFRpbWVsaW5lSXRlbVR5
cGUgPSAxLAorICAgICAgICBSZWNhbGN1bGF0ZVN0eWxlc1RpbWVsaW5lSXRlbVR5cGUgPSAyLAor
ICAgICAgICBQYWludFRpbWVsaW5lSXRlbVR5cGUgPSAzLAorICAgICAgICBQYXJzZUhUTUxUaW1l
bGluZUl0ZW1UeXBlID0gNCwKKyAgICB9OworCisgICAgY2xhc3MgVGltZWxpbmVJdGVtIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFRpbWVsaW5lSXRlbShQYXNzT3duUHRyPFRpbWVsaW5lSXRlbT4s
IGRvdWJsZSBzdGFydFRpbWUsIFRpbWVsaW5lSXRlbVR5cGUpOworCisgICAgICAgIHZpcnR1YWwg
flRpbWVsaW5lSXRlbSgpIHsgfQorCisgICAgICAgIFRpbWVsaW5lSXRlbSogcHJldmlvdXMoKSBj
b25zdCB7IHJldHVybiBtX3ByZXZpb3VzLmdldCgpOyB9CisKKyAgICAgICAgUGFzc093blB0cjxU
aW1lbGluZUl0ZW0qPiByZWxlYXNlUHJldmlvdXMoKSB7IHJldHVybiBtX3ByZXZpb3VzLnJlbGVh
c2UoKTsgfQorCisgICAgICAgIHZvaWQgYWRkVG9UaW1lbGluZShJbnNwZWN0b3JGcm9udGVuZCop
OworCisgICAgICAgIHZvaWQgYWRkQ2hpbGRJdGVtKFBhc3NPd25QdHI8VGltZWxpbmVJdGVtPik7
CisKKyAgICAgICAgdm9pZCBzZXRFbmRUaW1lKGRvdWJsZSBlbmRUaW1lKSB7IG1fZW5kVGltZSA9
IGVuZFRpbWU7IH0KKworICAgICAgICBUaW1lbGluZUl0ZW1UeXBlIHR5cGUoKSB7IHJldHVybiBt
X2l0ZW1UeXBlOyB9CisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIFNjcmlwdE9iamVj
dCBjb252ZXJ0VG9TY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqKTsKKworICAgICAgICBT
Y3JpcHRBcnJheSBjb252ZXJ0Q2hpbGRyZW5Ub1NjcmlwdEFycmF5KEluc3BlY3RvckZyb250ZW5k
Kik7CisgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBkb3VibGUgbV9zdGFydFRpbWU7Cisg
ICAgICAgIGRvdWJsZSBtX2VuZFRpbWU7CisgICAgICAgIFRpbWVsaW5lSXRlbVR5cGUgbV9pdGVt
VHlwZTsKKyAgICAgICAgT3duUHRyPFRpbWVsaW5lSXRlbT4gbV9wcmV2aW91czsKKyAgICAgICAg
VGltZWxpbmVJdGVtcyBtX2NoaWxkcmVuOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vICFkZWZpbmVkKFRpbWVsaW5lSXRlbV9oKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lQWdlbnQuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGltZWxpbmVBZ2VudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42ZDE4NzMyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1RpbWVsaW5lQWdlbnQuanMKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5U
aW1lbGluZUFnZW50ID0gZnVuY3Rpb24oKSB7CisgICAgLy8gTm90IGltcGxlbWVudGVkLgorfQor
CisvLyBNdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIFRpbWVsaW5lSXRlbS5oCitXZWJJbnNwZWN0
b3IuVGltZWxpbmVBZ2VudC5JdGVtVHlwZSA9IHsKKyAgICBET01EaXNwYXRjaCAgICAgICA6IDAs
CisgICAgTGF5b3V0ICAgICAgICAgICAgOiAxLAorICAgIFJlY2FsY3VsYXRlU3R5bGVzIDogMiwK
KyAgICBQYWludCAgICAgICAgICAgICA6IDMsCisgICAgUGFyc2VIVE1MICAgICAgICAgOiA0Cit9
OworCitXZWJJbnNwZWN0b3IuYWRkSXRlbVRvVGltZWxpbmUgPSBmdW5jdGlvbihyZWNvcmQpIHsK
KyAgICAvLyBOb3QgaW1wbGVtZW50ZWQuCit9CisKK1dlYkluc3BlY3Rvci50aW1lbGluZVdhc0Vu
YWJsZWQgPSBmdW5jdGlvbigpIHsKKyAgICAvLyBOb3QgaW1wbGVtZW50ZWQuCit9CisKK1dlYklu
c3BlY3Rvci50aW1lbGluZVdhc0Rpc2FibGVkID0gZnVuY3Rpb24oKSB7CisgICAgLy8gTm90IGlt
cGxlbWVudGVkLgorfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5odG1sIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1s
CmluZGV4IDRhNTM2ZDEuLjFkNzk3ZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmh0bWwKQEAgLTg4LDYgKzg4LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRE9NQWdlbnQuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkluamVjdGVkU2NyaXB0
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJU
aW1lbGluZUFnZW50LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IGNsYXNzPSJkZXRhY2hl
ZCI+CiAgICAgPGRpdiBpZD0idG9vbGJhciI+CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDFjMjg0YzEuLmJi
M2IyMTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00Myw4ICs0Myw4IEBACiAjaW5jbHVkZSAiSFRNTEZy
YW1lRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZVNldEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5j
bHVkZSAiT3ZlcmZsb3dFdmVudC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJQYXJ0LmgiCiAjaW5jbHVkZSAiUmVuZGVyUGFydE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRl
clNjcm9sbGJhci5oIgpAQCAtNTI2LDYgKzUyNiwxMCBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0
KGJvb2wgYWxsb3dTdWJ0cmVlKQogICAgIGlmIChpc1BhaW50aW5nKCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0
b3JUaW1lbGluZUFnZW50KCk7CisgICAgaWYgKHRpbWVsaW5lQWdlbnQpCisgICAgICAgIHRpbWVs
aW5lQWdlbnQtPndpbGxMYXlvdXQoKTsKKwogICAgIGlmICghYWxsb3dTdWJ0cmVlICYmIG1fbGF5
b3V0Um9vdCkgewogICAgICAgICBtX2xheW91dFJvb3QtPm1hcmtDb250YWluaW5nQmxvY2tzRm9y
TGF5b3V0KGZhbHNlKTsKICAgICAgICAgbV9sYXlvdXRSb290ID0gMDsKQEAgLTcwOSw2ICs3MTMs
OSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogICAgICAgICBB
U1NFUlQobV9lbnF1ZXVlRXZlbnRzKTsKICAgICB9CiAKKyAgICBpZiAodGltZWxpbmVBZ2VudCkK
KyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkTGF5b3V0KCk7CisKICAgICBtX25lc3RlZExheW91
dENvdW50LS07CiB9CiAKQEAgLTE1MzEsNyArMTUzOCwxMSBAQCB2b2lkIEZyYW1lVmlldzo6cGFp
bnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAg
ICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwor
ICAgIGlmICh0aW1lbGluZUFnZW50KQorICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUGFpbnQo
KTsKKwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lKCktPmRvY3VtZW50KCk7CiAKICNp
Zm5kZWYgTkRFQlVHCkBAIC0xNTk1LDYgKzE2MDYsOSBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAKICAgICBp
ZiAoaXNUb3BMZXZlbFBhaW50ZXIpCiAgICAgICAgIHNDdXJyZW50UGFpbnRUaW1lU3RhbXAgPSAw
OworCisgICAgaWYgKHRpbWVsaW5lQWdlbnQpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFBh
aW50KCk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRQYWludFJlc3RyaWN0aW9uKFBhaW50UmVz
dHJpY3Rpb24gcHIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggOWMyY2NhYi4uZTM2NjQ1NSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApA
QCAtMjUsNyArMjUsOSBAQAogI2lmbmRlZiBGcmFtZVZpZXdfaAogI2RlZmluZSBGcmFtZVZpZXdf
aAogCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0zNyw2ICszOSw3IEBAIGNsYXNzIENvbG9y
OwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlld1ByaXZhdGU7Citj
bGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7
CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CkBAIC0yMzYsNiArMjM5LDggQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgdXBkYXRlV2lkZ2V0cygpOwogICAgIHZvaWQgc2Nyb2xsVG9BbmNob3IoKTsK
KworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBj
b25zdDsKICAgICAKICAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhcnMoKSBjb25zdDsKIApAQCAt
MzE2LDYgKzMyMSwxMSBAQCBwcml2YXRlOgogICAgIFJlbmRlclNjcm9sbGJhclBhcnQqIG1fc2Ny
b2xsQ29ybmVyOwogfTsKIAoraW5saW5lIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIEZyYW1lVmll
dzo6aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWUt
PnBhZ2UoKSA/IG1fZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIDogMDsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRnJhbWVWaWV3X2gKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApp
bmRleCBhMTM0OTZiLi40NjQxMjg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAi
SFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIk5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmgiCkBAIC02MzIsNCArNjMzLDkgQEAgYm9vbCBQYWdlOjpqYXZh
U2NyaXB0VVJMc0FyZUFsbG93ZWQoKSBjb25zdAogICAgIHJldHVybiBtX2phdmFTY3JpcHRVUkxz
QXJlQWxsb3dlZDsKIH0KIAorSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogUGFnZTo6aW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxl
ci0+dGltZWxpbmVBZ2VudCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBmYjIx
MmE0Li4zYzhhYWZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1dlYkNv
cmUvcGFnZS9QYWdlLmgKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEluc3BlY3RvckNsaWVudDsKICAgICBjbGFzcyBJbnNw
ZWN0b3JDb250cm9sbGVyOworICAgIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiAgICAg
Y2xhc3MgTm9kZTsKICAgICBjbGFzcyBQYWdlR3JvdXA7CiAgICAgY2xhc3MgUGx1Z2luRGF0YTsK
QEAgLTIxMCw2ICsyMTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0
SmF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkKGJvb2wpOwogICAgICAgICBib29sIGphdmFTY3JpcHRV
UkxzQXJlQWxsb3dlZCgpIGNvbnN0OwogCisgICAgICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQq
IGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdDsKICAgICBwcml2YXRlOgogICAgICAgICB2
b2lkIGluaXRHcm91cCgpOwogCg==
</data>
<flag name="review"
          id="20129"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="20177"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39191</attachid>
            <date>2009-09-08 08:55:18 -0700</date>
            <delta_ts>2009-09-08 10:55:44 -0700</delta_ts>
            <desc>Same patch updated to r48154.</desc>
            <filename>TimelineAgent-4.diff</filename>
            <type>text/plain</type>
            <size>56784</size>
            <attacher name="Kelly Norton">knorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWI5MDljZC4uZTQ2MGE0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MyBAQAorMjAwOS0wOC0zMSAgS2VsbHkgTm9ydG9u
ICA8a25vcnRvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogQWRkcyBhIHRpbWVsaW5lIGFnZW50IHRvIElu
c3BlY3RvckNvbnRyb2xsZXIgdGhhdCBjb2xsZWN0cworICAgICAgICBoaWdoLWxldmVsIHRpbWlu
ZyBkYXRhIGFib3V0IGV2ZW50IGRpc3BhdGNoLCBsYXlvdXQsIHBhaW50aW5nIGFuZCBIVE1MCisg
ICAgICAgIHBhcnNpbmcgYW5kIG1ha2VzIGl0IGF2YWlsYWJsZSB0byBJbnNwZWN0b3IuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTUwMworCisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEdlbmVyaWNF
dmVudCk6CisgICAgICAgICogaHRtbC9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlbml6ZXI6OndyaXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRGlzcGF0
Y2hUaW1lbGluZUl0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTURpc3BhdGNo
VGltZWxpbmVJdGVtOjpET01EaXNwYXRjaFRpbWVsaW5lSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01EaXNwYXRjaFRpbWVsaW5lSXRlbTo6Y29udmVydFRvU2NyaXB0T2JqZWN0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpET01EaXNwYXRjaFRpbWVsaW5lSXRlbTo6fkRPTURpc3BhdGNoVGltZWxpbmVJ
dGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjplbmFibGVUaW1lbGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpkaXNhYmxlVGltZWxpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQmFja2VuZDo6dGltZWxpbmVFbmFibGVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRGcm9udGVuZFByb3h5
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlc2V0U2NyaXB0T2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVUaW1lbGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNhYmxlVGltZWxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dGltZWxpbmVFbmFi
bGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dGltZWxpbmVBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kOjp0aW1lbGluZVdhc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmQ6OnRpbWVsaW5lV2FzRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZEl0ZW1Ub1RpbWVsaW5lKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGlzcGF0Y2hET01FdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWREaXNwYXRjaERP
TUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxM
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTGF5
b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxSZWNh
bGN1bGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZFJlY2FsY3VsYXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6d2lsbFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OndpbGxXcml0ZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6ZGlkV3JpdGVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpjdXJyZW50VGltZUluTWlsbGlzZWNvbmRzKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNlc3Npb25UaW1lSW5NaWxsaXNlY29uZHMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlRpbWVsaW5lSXRlbTo6VGltZWxpbmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVs
aW5lSXRlbTo6YWRkVG9UaW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZUl0ZW06
OmNvbnZlcnRUb1NjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZUl0ZW06
OmNvbnZlcnRDaGlsZHJlblRvU2NyaXB0QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxp
bmVJdGVtOjphZGRDaGlsZEl0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW0u
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxp
bmVJdGVtOjp+VGltZWxpbmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lSXRlbTo6
cHJldmlvdXMpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVJdGVtOjpyZWxlYXNlUHJldmlv
dXMpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVJdGVtOjpzZXRFbmRUaW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbWVsaW5lSXRlbTo6dHlwZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZUFnZW50LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
aW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5hZGRJdGVtVG9UaW1lbGluZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IudGltZWxpbmVXYXNFbmFibGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci50aW1lbGluZVdhc0Rpc2FibGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAg
ICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omluc3BlY3RvclRp
bWVsaW5lQWdlbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDA5LTA5LTA4ICBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNjliMWQ3MC4uZWFlYmI0MiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTE0MjksNiArMTQyOSw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCcsCisgICAgICAgICAgICAnaW5zcGVj
dG9yL0RPTURpc3BhdGNoVGltZWxpbmVJdGVtLmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9y
L0RPTURpc3BhdGNoVGltZWxpbmVJdGVtLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwJywK
QEAgLTE0NDMsNiArMTQ0NSw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oJywKKyAgICAgICAg
ICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0ph
dmFTY3JpcHRDYWxsRnJhbWUuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHRE
ZWJ1Z0xpc3RlbmVyLmgnLApAQCAtMTQ1Miw2ICsxNDU2LDggQEAKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFT
Y3JpcHRQcm9maWxlTm9kZS5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9KYXZhU2NyaXB0
UHJvZmlsZU5vZGUuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1RpbWVsaW5lSXRlbS5jcHAn
LAorICAgICAgICAgICAgJ2luc3BlY3Rvci9UaW1lbGluZUl0ZW0uaCcsCiAgICAgICAgICAgICAn
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwJywKICAgICAgICAgICAgICdsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oJywKICAgICAgICAgICAgICdsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCcsCkBAIC0zNTA2LDYgKzM1MTIsNyBAQAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU3VtbWFyeUJhci5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lQWdlbnQuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanMnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDYxMTc3MzQuLmJiYTRhMzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtMzExMjQsNiArMzExMjQsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXERPTURpc3BhdGNo
VGltZWxpbmVJdGVtLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5oIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVj
dG9yXEluc3BlY3RvckJhY2tlbmQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTMxMTg0
LDYgKzMxMTkyLDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JUaW1lbGluZUFnZW50LiINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAi
DQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMzEyMTksNiArMzEyMzUsMTQgQEAKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCINCiAJCQkJPg0K
IAkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxU
aW1lbGluZUl0ZW0uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFRpbWVsaW5lSXRlbS5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0iZnJvbnQtZW5kIg0KIAkJCQk+DQpAQCAtMzE0
MjcsNiArMzE0NTEsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcVGltZWxpbmVBZ2VudC5qcyIN
CisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcZnJvbnQtZW5kXFRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzIg0KIAkJ
CQkJPg0KIAkJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBmNWQ2NTQ5Li4zMTk3MjFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTE4Miw2ICsxMTgyLDEyIEBACiAJCTY1REYzMjYxMDlEMUUx
OTkwMDBCRTMyNSAvKiBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxQUYwOUQxNEVFNjAwMEU2MUQ3
IC8qIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgKi87IH07CiAJCTY1RkVBODY5MDk4MzNB
REUwMEJFRDRBQiAvKiBQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLzsgfTsK
IAkJNzI2MjZFMDIwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBB
MDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAqLzsgfTsKKwkJNzI4NEFEREQwRTZGRUIzMTAwMkVF
RkJEIC8qIFVzZXJTdHlsZVNoZWV0TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyODRBRERCMEU2RkVCMzEwMDJFRUZCRCAvKiBVc2VyU3R5
bGVTaGVldExvYWRlci5jcHAgKi87IH07CisJCTcyODRBRERFMEU2RkVCMzEwMDJFRUZCRCAvKiBV
c2VyU3R5bGVTaGVldExvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI4NEFEREMwRTZGRUIzMTAwMkVFRkJEIC8qIFVzZXJTdHlsZVNoZWV0TG9h
ZGVyLmggKi87IH07CisJCTc1MDkyQkZFMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRjaFRp
bWVsaW5lSXRlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3NTA5MkJGQzEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0u
Y3BwICovOyB9OworCQk3NTA5MkJGRjEwNEI4MEY5MDAzREQxNjggLyogRE9NRGlzcGF0Y2hUaW1l
bGluZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc1MDkyQkZEMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5oICov
OyB9OworCQk3NTQxMzNBODEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU0MTMz
QTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCAqLzsgfTsKKwkJ
NzU0MTMzQUExMDJFMDBGNDAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU0MTMzQTkxMDJF
MDBGNDAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwICovOyB9OwogCQk3NTc5
M0U4MzBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgwMEQwQ0UwQjMwMDdGQzBBQyAv
KiBNZXNzYWdlRXZlbnQuY3BwICovOyB9OwogCQk3NTc5M0U4NDBEMENFMEIzMDA3RkMwQUMgLyog
TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggKi87IH07CiAJ
CTc1NzkzRUM4MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VDNjBEMENFNzJEMDA3
RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuY3BwICovOyB9OwpAQCAtMTE4OSw2ICsxMTk1LDggQEAK
IAkJNzU3OTNFRDMwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFRDAwRDBDRTg1QjAw
N0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk3NTc5M0VENDBEMENFODVCMDA3
RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFRDEwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VF
dmVudC5tbSAqLzsgfTsKIAkJNzU3OTNFRDUwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VF
dmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwu
aCAqLzsgfTsKKwkJNzVBOTRBMDMxMDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NUE5NEEwMTEw
NEI3NEZCMDAwNjY3M0MgLyogVGltZWxpbmVJdGVtLmNwcCAqLzsgfTsKKwkJNzVBOTRBMDQxMDRC
NzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzVBOTRBMDIxMDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5l
SXRlbS5oICovOyB9OwogCQk3QTFFODhGNTEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExRTg4
RjMxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmNwcCAqLzsgfTsKIAkJN0ExRTg4RjYx
MDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTFFODhGNDEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0
QXJyYXkuaCAqLzsgfTsKIAkJN0EyNDU4N0IxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRP
TUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBMjQ1ODc5MTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5jcHAgKi87IH07
CkBAIC02NDAyLDYgKzY0MTAsMTIgQEAKIAkJNjVGODA2OTcwNTREOUY4NjAwOEJGNzc2IC8qIEJs
b2NrRXhjZXB0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1RkVBODY4MDk4MzNBREUw
MEJFRDRBQiAvKiBQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2MjZFMDEwRUYwMjJG
RTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGb250RmFzdFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3Mjg0QUREQjBFNkZFQjMxMDAyRUVGQkQgLyogVXNlclN0eWxlU2hlZXRMb2FkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlclN0eWxlU2hlZXRMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Mjg0QUREQzBFNkZFQjMxMDAyRUVG
QkQgLyogVXNlclN0eWxlU2hlZXRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVXNlclN0eWxlU2hlZXRMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzUwOTJCRkMxMDRCODBGOTAwM0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTURpc3BhdGNoVGltZWxp
bmVJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzUwOTJCRkQxMDRCODBG
OTAwM0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTc1NDEzM0E3MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclRp
bWVsaW5lQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzU0MTMzQTkxMDJF
MDBGNDAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NzkzRTgwMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNz
YWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lc3Nh
Z2VFdmVudC5jcHA7IHBhdGggPSBkb20vTWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OwogCQk3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZXNzYWdlRXZlbnQuaDsgcGF0
aCA9IGRvbS9NZXNzYWdlRXZlbnQuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk3
NTc5M0U4MjBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBuYW1lID0gTWVzc2FnZUV2ZW50LmlkbDsgcGF0aCA9IGRvbS9NZXNzYWdlRXZlbnQuaWRs
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CkBAIC02NDEwLDYgKzY0MjQsOCBAQAogCQk3
NTc5M0VEMDBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01NZXNzYWdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzU3OTNFRDEwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01NZXNzYWdl
RXZlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NzkzRUQyMEQwQ0U4NUIw
MDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzVBOTRBMDExMDRCNzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaW1lbGluZUl0ZW0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NUE5NEEwMjEwNEI3NEZCMDAwNjY3M0Mg
LyogVGltZWxpbmVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpbWVs
aW5lSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTFFODhGMzEwMUNDMzg0
MDAwQzRERjUgLyogU2NyaXB0QXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2NyaXB0QXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QTFFODhGNDEwMUNDMzg0MDAwQzRERjUgLyogU2NyaXB0QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0EyNDU4NzkxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckRPTUFnZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMjE1LDYgKzEwMjMxLDEyIEBACiAJ
CTFDODFCOTREMEU5NzMyRDkwMDI2NkUwNyAvKiBpbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTc1MDkyQkZDMTA0QjgwRjkwMDNERDE2OCAv
KiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbS5jcHAgKi8sCisJCQkJNzUwOTJCRkQxMDRCODBGOTAw
M0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmggKi8sCisJCQkJNzVBOTRBMDExMDRC
NzRGQjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5jcHAgKi8sCisJCQkJNzVBOTRBMDIxMDRCNzRG
QjAwMDY2NzNDIC8qIFRpbWVsaW5lSXRlbS5oICovLAorCQkJCTc1NDEzM0E5MTAyRTAwRjQwMDA3
NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCAqLywKKwkJCQk3NTQxMzNBNzEwMkUw
MEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICovLAogCQkJCTFDODFCOTU5
MEU5NzMzMDgwMDI2NkUwNyAvKiBmcm9udC1lbmQgKi8sCiAJCQkJNDFGMDYxOEQwRjVGMDY5ODAw
QTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmNwcCAqLywKIAkJCQk0MUYwNjE4QzBGNUYwNjk4MDBB
MDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuaCAqLywKQEAgLTE3Njk5LDYgKzE3NzIxLDcgQEAKIAkJ
CQkwRkY1MDI2MzEwMkJBOTJDMDA2NkYzOUEgLyogRE9NTWVkaWFJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZGNTAyNkExMDJCQTk0MzAwNjZGMzlBIC8qIEpTTWVkaWEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRjUwMjcyMTAyQkE5NkEwMDY2RjM5QSAvKiBNZWRpYS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNzU0MTMzQTgxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5NDg0RkMyMTAyQ0YyM0MwMDE4N0REMyAvKiBD
YW52YXNHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQzUxMDJDRjIzQzAwMTg3
REQzIC8qIENhbnZhc1BhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5NDg0RkM4MTAyQ0Yy
M0MwMDE4N0REMyAvKiBDYW52YXNQaXhlbEFycmF5LmggaW4gSGVhZGVycyAqLywKQEAgLTE3NzM5
LDYgKzE3NzYyLDggQEAKIAkJCQk1MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUFCQUUxQjEwM0MxOEZGMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQUJBRTFF
MTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTc1QTk0QTA0MTA0Qjc0RkIwMDA2NjczQyAvKiBUaW1lbGluZUl0ZW0uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTc1MDkyQkZGMTA0QjgwRjkwMDNERDE2OCAvKiBET01EaXNwYXRjaFRpbWVsaW5l
SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUNERTAxMDUwM0MyNDAwMDk5RkFCIC8qIENh
bnZhc0FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVFQ0RFMzEwNTAzQzI0MDAwOTlGQUIg
LyogQ2FudmFzQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUVDREU2MTA1MDND
MjQwMDA5OUZBQiAvKiBDYW52YXNGbG9hdEFycmF5LmggaW4gSGVhZGVycyAqLywKQEAgLTE5ODI0
LDYgKzE5ODQ5LDcgQEAKIAkJCQkwRkY1MDI1QzEwMkJBOTAxMDA2NkYzOUEgLyogRE9NTWVkaWEu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkY1MDI2OTEwMkJBOTQzMDA2NkYzOUEgLyogSlNNZWRp
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY1MDI3MTEwMkJBOTZBMDA2NkYzOUEgLyogTWVk
aWEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzU0MTMzQUExMDJFMDBGNDAwMDc1RDAwIC8qIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk0ODRGQzExMDJD
RjIzQzAwMTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5
NDg0RkM0MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ5NDg0RkM3MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQaXhlbEFycmF5LmNwcCBp
biBTb3VyY2VzICovLApAQCAtMTk4NjEsNiArMTk4ODcsOCBAQAogCQkJCTUxMEQ0QTMzMTAzMTY1
RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBQkFFMUYxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0
cmVhbUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc1QTk0QTAzMTA0Qjc0RkIw
MDA2NjczQyAvKiBUaW1lbGluZUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzUwOTJCRkUx
MDRCODBGOTAwM0REMTY4IC8qIERPTURpc3BhdGNoVGltZWxpbmVJdGVtLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ5RUVDRERGMTA1MDNDMjQwMDA5OUZBQiAvKiBDYW52YXNBcnJheS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0OUVFQ0RFMjEwNTAzQzI0MDAwOTlGQUIgLyogQ2FudmFzQXJyYXlC
dWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFRUNERTUxMDUwM0MyNDAwMDk5RkFCIC8q
IENhbnZhc0Zsb2F0QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMzdlMWVh
Ny4uODlkZjY5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODAsNiArODAsNyBAQAogI2luY2x1ZGUgIkhpdFRl
c3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZUxvYWRlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5j
bHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJN
YXBwZWRBdHRyaWJ1dGUuaCIKQEAgLTExNTcsNiArMTE1OCwxMCBAQCB2b2lkIERvY3VtZW50Ojpy
ZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgaWYgKG1faW5TdHlsZVJlY2FsYykK
ICAgICAgICAgcmV0dXJuOyAvLyBHdWFyZCBhZ2FpbnN0IHJlLWVudHJhbmN5LiAtZHdoCiAKKyAg
ICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdG9yVGltZWxp
bmVBZ2VudCgpOworICAgIGlmICh0aW1lbGluZUFnZW50KQorICAgICAgICB0aW1lbGluZUFnZW50
LT53aWxsUmVjYWxjdWxhdGVTdHlsZSgpOworCiAgICAgbV9pblN0eWxlUmVjYWxjID0gdHJ1ZTsK
ICAgICBzdXNwZW5kUG9zdEF0dGFjaENhbGxiYWNrcygpOwogICAgIGlmICh2aWV3KCkpCkBAIC0x
MjI5LDYgKzEyMzQsOSBAQCBiYWlsX291dDoKICAgICAgICAgbV9jbG9zZUFmdGVyU3R5bGVSZWNh
bGMgPSBmYWxzZTsKICAgICAgICAgaW1wbGljaXRDbG9zZSgpOwogICAgIH0KKworICAgIGlmICh0
aW1lbGluZUFnZW50KQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNhbGN1bGF0ZVN0eWxl
KCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlSWZOZWVkZWQoKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
NzI4NGVkNi4uYmE0NzBjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ29s
bGVjdGlvblR5cGUuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFy
a2VyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5o
PgpAQCAtNzQsMTIgKzc1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBIVE1M
SGVhZEVsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTElucHV0RWxlbWVudDsKICAgICBjbGFzcyBIVE1M
TWFwRWxlbWVudDsKKyAgICBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogICAgIGNsYXNz
IEludFBvaW50OwogICAgIGNsYXNzIEpTTm9kZTsKICAgICBjbGFzcyBNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzOwogICAgIGNsYXNzIE5vZGVGaWx0ZXI7CiAgICAgY2xhc3MgTm9kZUl0ZXJh
dG9yOwotICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogICAg
IGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKICAgICBjbGFzcyBSYW5nZTsKQEAgLTM3NCw2
ICszNzUsNyBAQCBwdWJsaWM6CiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZTsgfSAvLyBjYW4gYmUgTlVMTAogICAgIFBhZ2UqIHBhZ2UoKSBjb25zdDsgLy8gY2FuIGJl
IE5VTEwKICAgICBTZXR0aW5ncyogc2V0dGluZ3MoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKKyAg
ICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3Q7
IC8vIGNhbiBiZSBOVUxMCiAKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBjcmVhdGVSYW5nZSgpOwog
CkBAIC0xMTA4LDYgKzExMTAsMTAgQEAgaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUo
KSBjb25zdAogICAgIHJldHVybiB0aGlzID09IG1fZG9jdW1lbnQ7CiB9CiAKK2lubGluZSBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiBEb2N1bWVudDo6aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIGNv
bnN0IHsKKyAgICByZXR1cm4gcGFnZSgpID8gcGFnZSgpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50
KCkgOiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBEb2N1bWVu
dF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCmluZGV4IDBmODQwN2QuLjVhZjg4YWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiS2V5Ym9h
cmRFdmVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50Lmgi
CkBAIC0yNTQ4LDYgKzI1NDksMTAgQEAgYm9vbCBOb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKICAgICBBU1NFUlQoZXZlbnQtPnRhcmdldCgpKTsK
ICAgICBBU1NFUlQoIWV2ZW50LT50eXBlKCkuaXNOdWxsKCkpOyAvLyBKYXZhU2NyaXB0IGNvZGUg
Y2FuIGNyZWF0ZSBhbiBldmVudCB3aXRoIGFuIGVtcHR5IG5hbWUsIGJ1dCBub3QgbnVsbC4KIAor
ICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBkb2N1bWVudCgpLT5p
bnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CisgICAgaWYgKHRpbWVsaW5lQWdlbnQpCisgICAgICAg
IHRpbWVsaW5lQWdlbnQtPndpbGxEaXNwYXRjaERPTUV2ZW50KCpldmVudCk7CisKICAgICAvLyBN
YWtlIGEgdmVjdG9yIG9mIGFuY2VzdG9ycyB0byBzZW5kIHRoZSBldmVudCB0by4KICAgICAvLyBJ
ZiB0aGUgbm9kZSBpcyBub3QgaW4gYSBkb2N1bWVudCBqdXN0IHNlbmQgdGhlIGV2ZW50IHRvIGl0
LgogICAgIC8vIEJlIHN1cmUgdG8gcmVmIGFsbCBvZiBub2RlcyBzaW5jZSBldmVudCBoYW5kbGVy
cyBjb3VsZCByZXN1bHQgaW4gdGhlIGxhc3QgcmVmZXJlbmNlIGdvaW5nIGF3YXkuCkBAIC0yNjU5
LDYgKzI2NjQsOSBAQCBkb25lRGlzcGF0Y2hpbmc6CiAgICAgfQogCiBkb25lV2l0aERlZmF1bHQ6
CisgICAgaWYgKHRpbWVsaW5lQWdlbnQpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZERpc3Bh
dGNoRE9NRXZlbnQoKTsKKwogICAgIERvY3VtZW50Ojp1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50
cygpOwogCiAgICAgcmV0dXJuICFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tl
bml6ZXIuY3BwCmluZGV4IGU0ZTQ2YzUuLmM1YjEzZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MVG9rZW5pemVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAK
QEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VyLmgiCiAjaW5jbHVkZSAiSFRN
TFNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlld1NvdXJjZURvY3VtZW50LmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIk1hcHBlZEF0dHJp
YnV0ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcmVsb2FkU2Nhbm5lci5oIgpA
QCAtMTY1NywxMCArMTY1OCwxNCBAQCB2b2lkIEhUTUxUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYgc3RyLCBib29sIGFwcGVuZERhdGEpCiAgICAgaWYgKCFtX2RvYy0+b3du
ZXJFbGVtZW50KCkpCiAgICAgICAgIHByaW50ZigiQmVnaW5uaW5nIHdyaXRlIGF0IHRpbWUgJWRc
biIsIG1fZG9jLT5lbGFwc2VkVGltZSgpKTsKICNlbmRpZgotICAgIAorCiAgICAgaW50IHByb2Nl
c3NlZENvdW50ID0gMDsKICAgICBkb3VibGUgc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKIAor
ICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBtX2RvYy0+aW5zcGVj
dG9yVGltZWxpbmVBZ2VudCgpOworICAgIGlmICh0aW1lbGluZUFnZW50KQorICAgICAgICB0aW1l
bGluZUFnZW50LT53aWxsV3JpdGVIVE1MKCk7CisgIAogICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9j
LT5mcmFtZSgpOwogCiAgICAgU3RhdGUgc3RhdGUgPSBtX3N0YXRlOwpAQCAtMTc4MSw3ICsxNzg2
LDEwIEBAIHZvaWQgSFRNTFRva2VuaXplcjo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBz
dHIsIGJvb2wgYXBwZW5kRGF0YSkKICAgICBpZiAoIW1fZG9jLT5vd25lckVsZW1lbnQoKSkKICAg
ICAgICAgcHJpbnRmKCJFbmRpbmcgd3JpdGUgYXQgdGltZSAlZFxuIiwgbV9kb2MtPmVsYXBzZWRU
aW1lKCkpOwogI2VuZGlmCi0gICAgCisKKyAgICBpZiAodGltZWxpbmVBZ2VudCkKKyAgICAgICAg
dGltZWxpbmVBZ2VudC0+ZGlkV3JpdGVIVE1MKCk7CisKICAgICBtX2luV3JpdGUgPSB3YXNJbldy
aXRlOwogCiAgICAgbV9zdGF0ZSA9IHN0YXRlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlz
cGF0Y2hUaW1lbGluZUl0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjU5YzRjYTUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9ET01EaXNwYXRj
aFRpbWVsaW5lSXRlbS5jcHAKQEAgLTAsMCArMSw1NSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisqIG1ldDoKKyoKKyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiBkaXN0cmlidXRpb24uCisqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTURpc3BhdGNoVGltZWxpbmVJ
dGVtLmgiCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW06OkRP
TURpc3BhdGNoVGltZWxpbmVJdGVtKFBhc3NPd25QdHI8VGltZWxpbmVJdGVtPiBwcmV2aW91cywg
ZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgRXZlbnQmIGV2ZW50KQorICAgIDogVGltZWxpbmVJdGVt
KHByZXZpb3VzLCBzdGFydFRpbWUsIERPTURpc3BhdGNoVGltZWxpbmVJdGVtVHlwZSkKKyAgICAs
IG1fZXZlbnRUeXBlKGV2ZW50LnR5cGUoKS5zdHJpbmcoKSkKK3sKK30KKworU2NyaXB0T2JqZWN0
IERPTURpc3BhdGNoVGltZWxpbmVJdGVtOjpjb252ZXJ0VG9TY3JpcHRPYmplY3QoSW5zcGVjdG9y
RnJvbnRlbmQqIGZyb250ZW5kKQoreworICAgIFNjcmlwdE9iamVjdCBzZWxmT2JqID0gVGltZWxp
bmVJdGVtOjpjb252ZXJ0VG9TY3JpcHRPYmplY3QoZnJvbnRlbmQpOworICAgIFNjcmlwdE9iamVj
dCBkYXRhT2JqID0gZnJvbnRlbmQtPm5ld1NjcmlwdE9iamVjdCgpOworICAgIGRhdGFPYmouc2V0
KCJ0eXBlIiwgbV9ldmVudFR5cGUpOworICAgIHNlbGZPYmouc2V0KCJkYXRhIiwgZGF0YU9iaik7
CisgICAgcmV0dXJuIHNlbGZPYmo7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0uaCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0RPTURpc3BhdGNoVGltZWxpbmVJdGVtLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMzg0Y2UyNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0RPTURpc3BhdGNoVGltZWxpbmVJdGVtLmgKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisq
CisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyoKKyogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Kyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiBkaXN0cmlidXRpb24u
CisqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBET01EaXNwYXRjaFRpbWVsaW5lSXRlbV9o
CisjZGVmaW5lIERPTURpc3BhdGNoVGltZWxpbmVJdGVtX2gKKworI2luY2x1ZGUgIlRpbWVsaW5l
SXRlbS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIEV2ZW50OworICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOworCisg
ICAgY2xhc3MgRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0gOiBwdWJsaWMgVGltZWxpbmVJdGVtIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIERPTURpc3BhdGNoVGltZWxpbmVJdGVtKFBhc3NPd25QdHI8
VGltZWxpbmVJdGVtPiBwcmV2aW91cywgZG91YmxlIHN0YXJ0VGltZSwgY29uc3QgRXZlbnQmKTsK
KworICAgICAgICB2aXJ0dWFsIH5ET01EaXNwYXRjaFRpbWVsaW5lSXRlbSgpIHsgfQorCisgICAg
cHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIFNjcmlwdE9iamVjdCBjb252ZXJ0VG9TY3JpcHRP
YmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFN0cmlu
ZyBtX2V2ZW50VHlwZTsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyAhZGVmaW5lZChET01EaXNwYXRjaFRpbWVsaW5lSXRlbV9oKQorCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmQuY3BwCmluZGV4IDdiNDAzNGYuLjZkODIxMDkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCkBAIC0yNTIsNiArMjUyLDI1IEBAIGNvbnN0IFN0
cmluZyYgSW5zcGVjdG9yQmFja2VuZDo6cGxhdGZvcm0oKSBjb25zdAogICAgIHJldHVybiBwbGF0
Zm9ybTsKIH0KIAordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjplbmFibGVUaW1lbGluZShib29sIGFs
d2F5cykKK3sKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICBtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPmVuYWJsZVRpbWVsaW5lKGFsd2F5cyk7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yQmFja2VuZDo6ZGlzYWJsZVRpbWVsaW5lKGJvb2wgYWx3YXlzKQoreworICAgIGlmIChtX2lu
c3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGlzYWJs
ZVRpbWVsaW5lKGFsd2F5cyk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yQmFja2VuZDo6dGltZWxpbmVF
bmFibGVkKCkgY29uc3QKK3sKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAg
ICByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyLT50aW1lbGluZUVuYWJsZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Z2V0Q29va2llcyhsb25n
IGNhbGxJZCkKIHsKICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVj
dG9yRE9NQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAppbmRleCAxNGE0
NTU3Li4yMmI0NmJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCkBAIC05NSw2
ICs5NSwxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIHBsYXRmb3JtKCkgY29uc3Q7
CiAKKyAgICB2b2lkIGVuYWJsZVRpbWVsaW5lKGJvb2wgYWx3YXlzKTsKKyAgICB2b2lkIGRpc2Fi
bGVUaW1lbGluZShib29sIGFsd2F5cyk7CisgICAgYm9vbCB0aW1lbGluZUVuYWJsZWQoKSBjb25z
dDsKKwogICAgIHZvaWQgZ2V0Q29va2llcyhsb25nIGNhbGxJZCk7CiAgICAgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmlkbAppbmRleCBmNzlkMjMwLi40NTQwMDAxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtNjAsNiArNjAsOSBAQCBtb2R1bGUgY29yZSB7CiAgICAg
ICAgIERPTVN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCk7CiAgICAgICAgIERPTVN0cmluZyBo
aWRkZW5QYW5lbHMoKTsKICAgICAgICAgRE9NU3RyaW5nIHBsYXRmb3JtKCk7CisgICAgICAgIHZv
aWQgZW5hYmxlVGltZWxpbmUoaW4gYm9vbGVhbiBhbHdheXMpOworICAgICAgICB2b2lkIGRpc2Fi
bGVUaW1lbGluZShpbiBib29sZWFuIGFsd2F5cyk7CisgICAgICAgIGJvb2xlYW4gdGltZWxpbmVF
bmFibGVkKCk7CiAgICAgICAgIFtJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uPW1vdmVXaW5kb3dCeV0g
dm9pZCBtb3ZlQnlVbnJlc3RyaWN0ZWQoaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSk7CiAgICAgICAg
IHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaW4gdW5zaWduZWQgbG9uZyBoZWlnaHQpOwog
ICAgICAgICBbQ3VzdG9tXSBET01PYmplY3Qgd3JhcENhbGxiYWNrKGluIERPTU9iamVjdCBjYWxs
YmFjayk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDUy
NzFlMTkuLmE1ZTgxODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
RE9NU3RvcmFnZVJlc291cmNlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdFBy
b2ZpbGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xMDYsNiArMTA3LDcgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IGRlYnVnZ2VyRW5hYmxlZFNldHRpbmdOYW1lID0gImRlYnVnZ2VyRW5h
YmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcHJvZmlsZXJFbmFibGVkU2V0dGluZ05h
bWUgPSAicHJvZmlsZXJFbmFibGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBpbnNwZWN0
b3JBdHRhY2hlZEhlaWdodE5hbWUgPSAiaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQiOwogc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IGxhc3RBY3RpdmVQYW5lbFNldHRpbmdOYW1lID0gImxhc3RBY3Rp
dmVQYW5lbCI7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdGltZWxpbmVFbmFibGVkU2V0dGlu
Z05hbWUgPSAidGltZWxpbmVFbmFibGVkIjsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1
bHRBdHRhY2hlZEhlaWdodCA9IDMwMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtQXR0YWNo
ZWRIZWlnaHQgPSAyNTAuMGY7CkBAIC01NDQsNiArNTQ2LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2V0RnJvbnRlbmRQcm94eU9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUs
IFNjcmlwCiAgICAgbV9pbmplY3RlZFNjcmlwdE9iaiA9IGluamVjdGVkU2NyaXB0T2JqOwogICAg
IG1fZnJvbnRlbmQuc2V0KG5ldyBJbnNwZWN0b3JGcm9udGVuZCh0aGlzLCBzY3JpcHRTdGF0ZSwg
d2ViSW5zcGVjdG9yT2JqKSk7CiAgICAgbV9kb21BZ2VudCA9IG5ldyBJbnNwZWN0b3JET01BZ2Vu
dChtX2Zyb250ZW5kLmdldCgpKTsKKworICAgIFNldHRpbmcgdGltZWxpbmVFbmFibGVkID0gc2V0
dGluZyh0aW1lbGluZUVuYWJsZWRTZXR0aW5nTmFtZSk7CisgICAgaWYgKHRpbWVsaW5lRW5hYmxl
ZC50eXBlKCkgPT0gU2V0dGluZzo6Qm9vbGVhblR5cGUgJiYgdGltZWxpbmVFbmFibGVkLmJvb2xl
YW5WYWx1ZSgpKQorICAgICAgICBtX3RpbWVsaW5lQWdlbnQgPSBuZXcgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudChtX2Zyb250ZW5kLmdldCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpzaG93KCkKQEAgLTYwMyw2ICs2MDksNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNs
b3NlKCkKICAgICBpZiAobV9kb21BZ2VudCkKICAgICAgICAgbV9kb21BZ2VudC0+c2V0RG9jdW1l
bnQoMCk7CiAgICAgbV9kb21BZ2VudCA9IDA7CisgICAgbV90aW1lbGluZUFnZW50ID0gMDsKICAg
ICBtX3NjcmlwdFN0YXRlID0gMDsKIH0KIApAQCAtNjc4LDYgKzY4NSw5IEBAIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6cmVzZXRTY3JpcHRPYmplY3RzKCkKICAgICAgICAgKCppdCktPnVuYmlu
ZCgpOwogI2VuZGlmCiAKKyAgICBpZiAobV90aW1lbGluZUFnZW50KQorICAgICAgICBtX3RpbWVs
aW5lQWdlbnQtPnJlc2V0KCk7CisKICAgICBtX2Zyb250ZW5kLT5yZXNldCgpOwogfQogCkBAIC0x
MDIzLDYgKzEwMzMsNDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVSZXNvdXJj
ZVRyYWNraW5nU2V0dGluZ3NMb2FkZWQoKQogICAgICAgICBtX3Jlc291cmNlVHJhY2tpbmdFbmFi
bGVkID0gdHJ1ZTsKIH0KIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVUaW1lbGlu
ZShib29sIGFsd2F5cykKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGFsd2F5cykKKyAgICAgICAgc2V0U2V0dGluZyh0aW1lbGluZUVuYWJsZWRTZXR0
aW5nTmFtZSwgU2V0dGluZyh0cnVlKSk7CisKKyAgICBpZiAobV90aW1lbGluZUFnZW50LmdldCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RpbWVsaW5lQWdlbnQgPSBuZXcgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICBpZiAobV9mcm9udGVuZCkKKyAg
ICAgICAgbV9mcm9udGVuZC0+dGltZWxpbmVXYXNFbmFibGVkKCk7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlzYWJsZVRpbWVsaW5lKGJvb2wgYWx3YXlzKQoreworICAgIGlmICgh
ZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYWx3YXlzKQorICAgICAgICBz
ZXRTZXR0aW5nKHRpbWVsaW5lRW5hYmxlZFNldHRpbmdOYW1lLCBTZXR0aW5nKGZhbHNlKSk7CisK
KyAgICBpZiAoIW1fdGltZWxpbmVBZ2VudC5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV90aW1lbGluZUFnZW50LnNldCgwKTsKKyAgICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgbV9m
cm9udGVuZC0+dGltZWxpbmVXYXNEaXNhYmxlZCgpOworfQorCitib29sIEluc3BlY3RvckNvbnRy
b2xsZXI6OnRpbWVsaW5lRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFlbmFibGVkKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3RpbWVsaW5lQWdlbnQuZ2V0KCk7
Cit9CisKICNpZiBFTkFCTEUoREFUQUJBU0UpCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRp
ZE9wZW5EYXRhYmFzZShEYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAyN2NkMDA0Li5mM2UyMzBlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNz
IEluc3BlY3RvckJhY2tlbmQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0
b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOworY2xhc3MgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDsKIGNsYXNzIEphdmFTY3JpcHRDYWxsRnJhbWU7CiBjbGFzcyBLVVJMOwogY2xh
c3MgTm9kZTsKQEAgLTIyMSw2ICsyMjIsMTEgQEAgcHVibGljOgogICAgIGJvb2wgcmVzb3VyY2VU
cmFja2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlVHJhY2tpbmdFbmFibGVk
OyB9CiAgICAgdm9pZCBlbnN1cmVSZXNvdXJjZVRyYWNraW5nU2V0dGluZ3NMb2FkZWQoKTsKIAor
ICAgIHZvaWQgZW5hYmxlVGltZWxpbmUoYm9vbCBhbHdheXMgPSBmYWxzZSk7CisgICAgdm9pZCBk
aXNhYmxlVGltZWxpbmUoYm9vbCBhbHdheXMgPSBmYWxzZSk7CisgICAgYm9vbCB0aW1lbGluZUVu
YWJsZWQoKSBjb25zdDsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
KCkgeyByZXR1cm4gbV90aW1lbGluZUFnZW50LmdldCgpOyB9CisKICNpZiBFTkFCTEUoREFUQUJB
U0UpCiAgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UqLCBjb25zdCBTdHJpbmcmIGRv
bWFpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwogI2VuZGlm
CkBAIC0zMTcsNiArMzIzLDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xp
ZW50OwogICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZD4gbV9mcm9udGVuZDsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yRE9NQWdlbnQ+IG1fZG9tQWdlbnQ7CisgICAgT3duUHRyPEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ+IG1fdGltZWxpbmVBZ2VudDsKICAgICBTY3JpcHRPYmplY3QgbV9pbmplY3Rl
ZFNjcmlwdE9iajsKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZVRv
Rm9jdXM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5j
cHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKaW5kZXggMGM0Mjc5
OS4uYmIzNjliZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcApAQCAt
MTgzLDYgKzE4MywyMyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpyZXNvdXJjZVRyYWNraW5n
V2FzRGlzYWJsZWQoKQogICAgIGNhbGxTaW1wbGVGdW5jdGlvbigicmVzb3VyY2VUcmFja2luZ1dh
c0Rpc2FibGVkIik7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnRpbWVsaW5lV2FzRW5h
YmxlZCgpCit7CisgICAgY2FsbFNpbXBsZUZ1bmN0aW9uKCJ0aW1lbGluZVdhc0VuYWJsZWQiKTsK
K30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6dGltZWxpbmVXYXNEaXNhYmxlZCgpCit7Cisg
ICAgY2FsbFNpbXBsZUZ1bmN0aW9uKCJ0aW1lbGluZVdhc0Rpc2FibGVkIik7Cit9CisKK3ZvaWQg
SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZEl0ZW1Ub1RpbWVsaW5lKGNvbnN0IFNjcmlwdE9iamVjdCYg
aXRlbU9iaikKK3sKKyAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdG
dW5jdGlvbkNhbGwoImFkZEl0ZW1Ub1RpbWVsaW5lIikpOworICAgIGZ1bmN0aW9uLT5hcHBlbmRB
cmd1bWVudChpdGVtT2JqKTsKKyAgICBmdW5jdGlvbi0+Y2FsbCgpOworfQorCiAjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCiB2b2lkIEluc3BlY3RvckZyb250ZW5kOjphdHRhY2hEZWJ1
Z2dlcldoZW5TaG93bigpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAppbmRl
eCAzMjAyMWFkLi40Mjc2OGU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgK
QEAgLTExMiw2ICsxMTIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRp
ZEdldENoaWxkTm9kZXMoaW50IGNhbGxJZCk7CiAgICAgICAgIHZvaWQgZGlkQXBwbHlEb21DaGFu
Z2UoaW50IGNhbGxJZCwgYm9vbCBzdWNjZXNzKTsKIAorICAgICAgICB2b2lkIHRpbWVsaW5lV2Fz
RW5hYmxlZCgpOworICAgICAgICB2b2lkIHRpbWVsaW5lV2FzRGlzYWJsZWQoKTsKKyAgICAgICAg
dm9pZCBhZGRJdGVtVG9UaW1lbGluZShjb25zdCBTY3JpcHRPYmplY3QmIGl0ZW1PYmopOworCiAg
ICAgICAgIHZvaWQgZGlkR2V0Q29va2llcyhpbnQgY2FsbElkLCBjb25zdCBTY3JpcHRBcnJheSYg
Y29va2llcywgY29uc3QgU3RyaW5nJiBjb29raWVzU3RyaW5nKTsKICAgICAgICAgdm9pZCBkaWRE
aXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQoaW50IGNhbGxJZCwgY29uc3QgU3RyaW5nJiByZXN1bHQs
IGJvb2wgaXNFeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZDIwZTAK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisqIG1ldDoKKyoKKyogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorKiBkaXN0cmlidXRpb24uCisqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoK
KyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKKwor
I2luY2x1ZGUgIkRPTURpc3BhdGNoVGltZWxpbmVJdGVtLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIlRpbWVsaW5lSXRlbS5o
IgorCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnNwZWN0
b3JGcm9udGVuZCogZnJvbnRlbmQpCisgICAgOiBtX3Nlc3Npb25TdGFydFRpbWUoY3VycmVudFRp
bWVJbk1pbGxpc2Vjb25kcygpKQorICAgICwgbV9mcm9udGVuZChmcm9udGVuZCkKKyAgICAsIG1f
Y3VycmVudFRpbWVsaW5lSXRlbSgwKQoreworICAgIEFTU0VSVChtX2Zyb250ZW5kKTsKK30KKwor
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6fkluc3BlY3RvclRpbWVsaW5lQWdlbnQoKQoreworfQor
Cit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEaXNwYXRjaERPTUV2ZW50KGNvbnN0
IEV2ZW50JiBldmVudCkKK3sKKyAgICBtX2N1cnJlbnRUaW1lbGluZUl0ZW0gPSBuZXcgRE9NRGlz
cGF0Y2hUaW1lbGluZUl0ZW0obV9jdXJyZW50VGltZWxpbmVJdGVtLnJlbGVhc2UoKSwgc2Vzc2lv
blRpbWVJbk1pbGxpc2Vjb25kcygpLCBldmVudCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6ZGlkRGlzcGF0Y2hET01FdmVudCgpCit7CisgICAgQVNTRVJUKG1fY3VycmVudFRp
bWVsaW5lSXRlbS0+dHlwZSgpID09IERPTURpc3BhdGNoVGltZWxpbmVJdGVtVHlwZSk7CisgICAg
ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6d2lsbExheW91dCgpCit7CisgICAgbV9jdXJyZW50VGltZWxpbmVJdGVtID0gbmV3IFRp
bWVsaW5lSXRlbShtX2N1cnJlbnRUaW1lbGluZUl0ZW0ucmVsZWFzZSgpLCBzZXNzaW9uVGltZUlu
TWlsbGlzZWNvbmRzKCksIExheW91dFRpbWVsaW5lSXRlbVR5cGUpOworfQorCit2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZExheW91dCgpCit7CisgICAgQVNTRVJUKG1fY3VycmVudFRp
bWVsaW5lSXRlbS0+dHlwZSgpID09IExheW91dFRpbWVsaW5lSXRlbVR5cGUpOworICAgIGRpZENv
bXBsZXRlQ3VycmVudFJlY29yZCgpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OndpbGxSZWNhbGN1bGF0ZVN0eWxlKCkKK3sKKyAgICBtX2N1cnJlbnRUaW1lbGluZUl0ZW0gPSBu
ZXcgVGltZWxpbmVJdGVtKG1fY3VycmVudFRpbWVsaW5lSXRlbS5yZWxlYXNlKCksIHNlc3Npb25U
aW1lSW5NaWxsaXNlY29uZHMoKSwgUmVjYWxjdWxhdGVTdHlsZXNUaW1lbGluZUl0ZW1UeXBlKTsK
K30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRSZWNhbGN1bGF0ZVN0eWxlKCkK
K3sKKyAgICBBU1NFUlQobV9jdXJyZW50VGltZWxpbmVJdGVtLT50eXBlKCkgPT0gUmVjYWxjdWxh
dGVTdHlsZXNUaW1lbGluZUl0ZW1UeXBlKTsKKyAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQo
KTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsUGFpbnQoKQoreworICAg
IG1fY3VycmVudFRpbWVsaW5lSXRlbSA9IG5ldyBUaW1lbGluZUl0ZW0obV9jdXJyZW50VGltZWxp
bmVJdGVtLnJlbGVhc2UoKSwgc2Vzc2lvblRpbWVJbk1pbGxpc2Vjb25kcygpLCBQYWludFRpbWVs
aW5lSXRlbVR5cGUpOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFBhaW50
KCkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50VGltZWxpbmVJdGVtLT50eXBlKCkgPT0gUGFpbnRU
aW1lbGluZUl0ZW1UeXBlKTsKKyAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsV3JpdGVIVE1MKCkKK3sKKyAgICBtX2N1
cnJlbnRUaW1lbGluZUl0ZW0gPSBuZXcgVGltZWxpbmVJdGVtKG1fY3VycmVudFRpbWVsaW5lSXRl
bS5yZWxlYXNlKCksIHNlc3Npb25UaW1lSW5NaWxsaXNlY29uZHMoKSwgUGFyc2VIVE1MVGltZWxp
bmVJdGVtVHlwZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkV3JpdGVI
VE1MKCkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50VGltZWxpbmVJdGVtLT50eXBlKCkgPT0gUGFy
c2VIVE1MVGltZWxpbmVJdGVtVHlwZSk7CisgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKCk7
Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cmVzZXQoKQoreworICAgIG1fc2Vz
c2lvblN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lSW5NaWxsaXNlY29uZHMoKTsKKyAgICBtX2N1cnJl
bnRUaW1lbGluZUl0ZW0uc2V0KDApOworfQorCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZCgpCit7CisgICAgT3duUHRyPFRpbWVsaW5lSXRlbT4g
aXRlbShtX2N1cnJlbnRUaW1lbGluZUl0ZW0ucmVsZWFzZSgpKTsKKyAgICBtX2N1cnJlbnRUaW1l
bGluZUl0ZW0gPSBpdGVtLT5yZWxlYXNlUHJldmlvdXMoKTsKKworICAgIGl0ZW0tPnNldEVuZFRp
bWUoc2Vzc2lvblRpbWVJbk1pbGxpc2Vjb25kcygpKTsKKyAgICBpZiAobV9jdXJyZW50VGltZWxp
bmVJdGVtLmdldCgpKQorICAgICAgICBtX2N1cnJlbnRUaW1lbGluZUl0ZW0tPmFkZENoaWxkSXRl
bShpdGVtLnJlbGVhc2UoKSk7CisgICAgZWxzZQorICAgICAgICBpdGVtLT5hZGRUb1RpbWVsaW5l
KG1fZnJvbnRlbmQpOworfQorCitkb3VibGUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6Y3VycmVu
dFRpbWVJbk1pbGxpc2Vjb25kcygpCit7CisgICAgcmV0dXJuIGN1cnJlbnRUaW1lKCkgKiAxMDAw
LjA7Cit9CisKK2RvdWJsZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXNzaW9uVGltZUluTWls
bGlzZWNvbmRzKCkKK3sKKyAgICByZXR1cm4gY3VycmVudFRpbWVJbk1pbGxpc2Vjb25kcygpIC0g
bV9zZXNzaW9uU3RhcnRUaW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNDA5NWZlZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtMCwwICsxLDc3IEBACisvKgorKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyogbWV0OgorKgorKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqIGRpc3RyaWJ1dGlvbi4KKyogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisqLworCisjaWZuZGVmIEluc3BlY3RvclRpbWVsaW5lQWdlbnRfaAorI2RlZmlu
ZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50X2gKKworI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgor
I2luY2x1ZGUgIlNjcmlwdEFycmF5LmgiCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNz
IEV2ZW50OworICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOworICAgIGNsYXNzIFRpbWVsaW5l
SXRlbTsKKworICAgIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgeworICAgIHB1YmxpYzoK
KyAgICAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRl
bmQpOworICAgICAgICB+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOworCisgICAgICAgIHZvaWQg
cmVzZXQoKTsKKworICAgICAgICAvLyBNZXRob2RzIGNhbGxlZCBmcm9tIFdlYkNvcmUuCisgICAg
ICAgIHZvaWQgd2lsbERpc3BhdGNoRE9NRXZlbnQoY29uc3QgRXZlbnQmKTsKKyAgICAgICAgdm9p
ZCBkaWREaXNwYXRjaERPTUV2ZW50KCk7CisgICAgICAgIHZvaWQgd2lsbExheW91dCgpOworICAg
ICAgICB2b2lkIGRpZExheW91dCgpOworICAgICAgICB2b2lkIHdpbGxSZWNhbGN1bGF0ZVN0eWxl
KCk7CisgICAgICAgIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZSgpOworICAgICAgICB2b2lkIHdp
bGxQYWludCgpOworICAgICAgICB2b2lkIGRpZFBhaW50KCk7CisgICAgICAgIHZvaWQgZGlkV3Jp
dGVIVE1MKCk7CisgICAgICAgIHZvaWQgd2lsbFdyaXRlSFRNTCgpOworICAgIHByaXZhdGU6Cisg
ICAgICAgIGRvdWJsZSBzZXNzaW9uVGltZUluTWlsbGlzZWNvbmRzKCk7CisKKyAgICAgICAgc3Rh
dGljIGRvdWJsZSBjdXJyZW50VGltZUluTWlsbGlzZWNvbmRzKCk7CisKKyAgICAgICAgdm9pZCBk
aWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoKTsKKworICAgICAgICBkb3VibGUgbV9zZXNzaW9uU3Rh
cnRUaW1lOworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKKyAgICAgICAg
T3duUHRyPFRpbWVsaW5lSXRlbT4gbV9jdXJyZW50VGltZWxpbmVJdGVtOworICAgIH07CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclRpbWVs
aW5lQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lSXRlbS5j
cHAgYi9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZUl0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjA1YjgxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9UaW1lbGluZUl0ZW0uY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorKiBtZXQ6CisqCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogZGlzdHJpYnV0aW9uLgorKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUaW1lbGluZUl0ZW0u
aCIKKworI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiU2NyaXB0QXJy
YXkuaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitUaW1lbGluZUl0ZW06OlRpbWVsaW5lSXRlbShQYXNzT3duUHRyPFRpbWVsaW5lSXRlbT4gcHJl
dmlvdXMsIGRvdWJsZSBzdGFydFRpbWUsIFRpbWVsaW5lSXRlbVR5cGUgaXRlbVR5cGUpCisgICAg
OiBtX3N0YXJ0VGltZShzdGFydFRpbWUpCisgICAgLCBtX2VuZFRpbWUoMC4wKQorICAgICwgbV9p
dGVtVHlwZShpdGVtVHlwZSkKKyAgICAsIG1fcHJldmlvdXMocHJldmlvdXMpCit7Cit9CisKK3Zv
aWQgVGltZWxpbmVJdGVtOjphZGRUb1RpbWVsaW5lKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVu
ZCkKK3sKKyAgICBmcm9udGVuZC0+YWRkSXRlbVRvVGltZWxpbmUoY29udmVydFRvU2NyaXB0T2Jq
ZWN0KGZyb250ZW5kKSk7Cit9CisKK1NjcmlwdE9iamVjdCBUaW1lbGluZUl0ZW06OmNvbnZlcnRU
b1NjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit7CisgICAgU2NyaXB0
T2JqZWN0IHNlbGZPYmogPSBmcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0KCk7CisgICAgc2VsZk9i
ai5zZXQoInRpbWUiLCBtX3N0YXJ0VGltZSk7CisgICAgc2VsZk9iai5zZXQoInR5cGUiLCBzdGF0
aWNfY2FzdDxpbnQ+KG1faXRlbVR5cGUpKTsKKyAgICBzZWxmT2JqLnNldCgiZHVyYXRpb24iLCBt
X2VuZFRpbWUgLSBtX3N0YXJ0VGltZSk7CisgICAgU2NyaXB0QXJyYXkgY2hpbGRyZW4gPSBjb252
ZXJ0Q2hpbGRyZW5Ub1NjcmlwdEFycmF5KGZyb250ZW5kKTsKKyAgICBzZWxmT2JqLnNldCgiY2hp
bGRyZW4iLCBjaGlsZHJlbik7CisgICAgcmV0dXJuIHNlbGZPYmo7Cit9CisKK1NjcmlwdEFycmF5
IFRpbWVsaW5lSXRlbTo6Y29udmVydENoaWxkcmVuVG9TY3JpcHRBcnJheShJbnNwZWN0b3JGcm9u
dGVuZCogZnJvbnRlbmQpCit7CisgICAgU2NyaXB0QXJyYXkgY2hpbGRyZW4gPSBmcm9udGVuZC0+
bmV3U2NyaXB0QXJyYXkoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jaGlsZHJl
bi5zaXplKCk7ICsraSkKKyAgICAgICAgY2hpbGRyZW4uc2V0KGksIG1fY2hpbGRyZW5baV0tPmNv
bnZlcnRUb1NjcmlwdE9iamVjdChmcm9udGVuZCkpOworICAgIHJldHVybiBjaGlsZHJlbjsKK30K
Kwordm9pZCBUaW1lbGluZUl0ZW06OmFkZENoaWxkSXRlbShQYXNzT3duUHRyPFRpbWVsaW5lSXRl
bT4gdGltZWxpbmVJdGVtKQoreworICAgIG1fY2hpbGRyZW4uYXBwZW5kKHRpbWVsaW5lSXRlbSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvVGltZWxpbmVJdGVtLmggYi9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZUl0ZW0uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTA5MjMwCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVJdGVtLmgKQEAgLTAsMCArMSw4OCBAQAor
LyoKKyogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisqIG1ldDoKKyoKKyogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiBkaXN0cmlidXRp
b24uCisqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBUaW1lbGluZUl0ZW1faAorI2RlZmlu
ZSBUaW1lbGluZUl0ZW1faAorCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKKyAgICBjbGFzcyBUaW1lbGlu
ZUl0ZW07CisgICAgY2xhc3MgU2NyaXB0QXJyYXk7CisgICAgY2xhc3MgU2NyaXB0T2JqZWN0Owor
CisgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPFRpbWVsaW5lSXRlbT4gPiBUaW1lbGluZUl0ZW1z
OworCisgICAgLy8gTXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBUaW1lbGluZUFnZW50LmpzCisg
ICAgZW51bSBUaW1lbGluZUl0ZW1UeXBlIHsKKyAgICAgICAgRE9NRGlzcGF0Y2hUaW1lbGluZUl0
ZW1UeXBlID0gMCwKKyAgICAgICAgTGF5b3V0VGltZWxpbmVJdGVtVHlwZSA9IDEsCisgICAgICAg
IFJlY2FsY3VsYXRlU3R5bGVzVGltZWxpbmVJdGVtVHlwZSA9IDIsCisgICAgICAgIFBhaW50VGlt
ZWxpbmVJdGVtVHlwZSA9IDMsCisgICAgICAgIFBhcnNlSFRNTFRpbWVsaW5lSXRlbVR5cGUgPSA0
LAorICAgIH07CisKKyAgICBjbGFzcyBUaW1lbGluZUl0ZW0geworICAgIHB1YmxpYzoKKyAgICAg
ICAgVGltZWxpbmVJdGVtKFBhc3NPd25QdHI8VGltZWxpbmVJdGVtPiwgZG91YmxlIHN0YXJ0VGlt
ZSwgVGltZWxpbmVJdGVtVHlwZSk7CisKKyAgICAgICAgdmlydHVhbCB+VGltZWxpbmVJdGVtKCkg
eyB9CisKKyAgICAgICAgVGltZWxpbmVJdGVtKiBwcmV2aW91cygpIGNvbnN0IHsgcmV0dXJuIG1f
cHJldmlvdXMuZ2V0KCk7IH0KKworICAgICAgICBQYXNzT3duUHRyPFRpbWVsaW5lSXRlbSo+IHJl
bGVhc2VQcmV2aW91cygpIHsgcmV0dXJuIG1fcHJldmlvdXMucmVsZWFzZSgpOyB9CisKKyAgICAg
ICAgdm9pZCBhZGRUb1RpbWVsaW5lKEluc3BlY3RvckZyb250ZW5kKik7CisKKyAgICAgICAgdm9p
ZCBhZGRDaGlsZEl0ZW0oUGFzc093blB0cjxUaW1lbGluZUl0ZW0+KTsKKworICAgICAgICB2b2lk
IHNldEVuZFRpbWUoZG91YmxlIGVuZFRpbWUpIHsgbV9lbmRUaW1lID0gZW5kVGltZTsgfQorCisg
ICAgICAgIFRpbWVsaW5lSXRlbVR5cGUgdHlwZSgpIHsgcmV0dXJuIG1faXRlbVR5cGU7IH0KKyAg
ICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgU2NyaXB0T2JqZWN0IGNvbnZlcnRUb1Njcmlw
dE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCopOworCisgICAgICAgIFNjcmlwdEFycmF5IGNvbnZl
cnRDaGlsZHJlblRvU2NyaXB0QXJyYXkoSW5zcGVjdG9yRnJvbnRlbmQqKTsKKyAgICAgIAorICAg
IHByaXZhdGU6CisgICAgICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKKyAgICAgICAgZG91YmxlIG1f
ZW5kVGltZTsKKyAgICAgICAgVGltZWxpbmVJdGVtVHlwZSBtX2l0ZW1UeXBlOworICAgICAgICBP
d25QdHI8VGltZWxpbmVJdGVtPiBtX3ByZXZpb3VzOworICAgICAgICBUaW1lbGluZUl0ZW1zIG1f
Y2hpbGRyZW47CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
IWRlZmluZWQoVGltZWxpbmVJdGVtX2gpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGltZWxpbmVBZ2VudC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
aW1lbGluZUFnZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkMTg3
MzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxp
bmVBZ2VudC5qcwpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQgPSBm
dW5jdGlvbigpIHsKKyAgICAvLyBOb3QgaW1wbGVtZW50ZWQuCit9CisKKy8vIE11c3QgYmUga2Vw
dCBpbiBzeW5jIHdpdGggVGltZWxpbmVJdGVtLmgKK1dlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50
Lkl0ZW1UeXBlID0geworICAgIERPTURpc3BhdGNoICAgICAgIDogMCwKKyAgICBMYXlvdXQgICAg
ICAgICAgICA6IDEsCisgICAgUmVjYWxjdWxhdGVTdHlsZXMgOiAyLAorICAgIFBhaW50ICAgICAg
ICAgICAgIDogMywKKyAgICBQYXJzZUhUTUwgICAgICAgICA6IDQKK307CisKK1dlYkluc3BlY3Rv
ci5hZGRJdGVtVG9UaW1lbGluZSA9IGZ1bmN0aW9uKHJlY29yZCkgeworICAgIC8vIE5vdCBpbXBs
ZW1lbnRlZC4KK30KKworV2ViSW5zcGVjdG9yLnRpbWVsaW5lV2FzRW5hYmxlZCA9IGZ1bmN0aW9u
KCkgeworICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KK30KKworV2ViSW5zcGVjdG9yLnRpbWVsaW5l
V2FzRGlzYWJsZWQgPSBmdW5jdGlvbigpIHsKKyAgICAvLyBOb3QgaW1wbGVtZW50ZWQuCit9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggNmY1ZGE0My4u
MmQzYTNmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApA
QCAtODksNiArODksNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkRPTUFnZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJJbmplY3RlZFNjcmlwdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRpbWVsaW5l
QWdlbnQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgY2xhc3M9ImRldGFjaGVkIj4KICAg
ICA8ZGl2IGlkPSJ0b29sYmFyIj4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNzQ4YjE3MC4uYzhhMGUxZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKQEAgLTQzLDggKzQzLDggQEAKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJP
dmVyZmxvd0V2ZW50LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclBhcnQu
aCIKICNpbmNsdWRlICJSZW5kZXJQYXJ0T2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xs
YmFyLmgiCkBAIC00OTIsNiArNDkyLDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBh
bGxvd1N1YnRyZWUpCiAgICAgaWYgKGlzUGFpbnRpbmcoKSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKTsKKyAgICBpZiAodGltZWxpbmVBZ2VudCkKKyAgICAgICAgdGltZWxpbmVBZ2Vu
dC0+d2lsbExheW91dCgpOworCiAgICAgaWYgKCFhbGxvd1N1YnRyZWUgJiYgbV9sYXlvdXRSb290
KSB7CiAgICAgICAgIG1fbGF5b3V0Um9vdC0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQo
ZmFsc2UpOwogICAgICAgICBtX2xheW91dFJvb3QgPSAwOwpAQCAtNjc2LDYgKzY4MCw5IEBAIHZv
aWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgICAgIEFTU0VSVCht
X2VucXVldWVFdmVudHMpOwogICAgIH0KIAorICAgIGlmICh0aW1lbGluZUFnZW50KQorICAgICAg
ICB0aW1lbGluZUFnZW50LT5kaWRMYXlvdXQoKTsKKwogICAgIG1fbmVzdGVkTGF5b3V0Q291bnQt
LTsKIH0KIApAQCAtMTQ5OCw3ICsxNTA1LDExIEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRl
bnRzKEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAo
IWZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CisgICAgaWYg
KHRpbWVsaW5lQWdlbnQpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxQYWludCgpOworCiAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUoKS0+ZG9jdW1lbnQoKTsKIAogI2lmbmRlZiBO
REVCVUcKQEAgLTE1NjIsNiArMTU3Myw5IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIAogICAgIGlmIChpc1Rv
cExldmVsUGFpbnRlcikKICAgICAgICAgc0N1cnJlbnRQYWludFRpbWVTdGFtcCA9IDA7CisKKyAg
ICBpZiAodGltZWxpbmVBZ2VudCkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUGFpbnQoKTsK
IH0KIAogdm9pZCBGcmFtZVZpZXc6OnNldFBhaW50UmVzdHJpY3Rpb24oUGFpbnRSZXN0cmljdGlv
biBwcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAppbmRleCA0ZTgwOWE0Li4wNGMzNmI0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0yNSw3
ICsyNSw5IEBACiAjaWZuZGVmIEZyYW1lVmlld19oCiAjZGVmaW5lIEZyYW1lVmlld19oCiAKKyNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM3LDYgKzM5LDcgQEAgY2xhc3MgQ29sb3I7CiBjbGFz
cyBFdmVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVWaWV3UHJpdmF0ZTsKK2NsYXNzIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTm9kZTsKIGNsYXNz
IFBsYXRmb3JtTW91c2VFdmVudDsKQEAgLTIzMiw2ICsyMzUsOCBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCB1cGRhdGVXaWRnZXRzKCk7CiAgICAgdm9pZCBzY3JvbGxUb0FuY2hvcigpOworCisgICAg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCogaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIGNvbnN0Owog
ICAgIAogICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFycygpIGNvbnN0OwogCkBAIC0zMDksNiAr
MzE0LDExIEBAIHByaXZhdGU6CiAgICAgUmVuZGVyU2Nyb2xsYmFyUGFydCogbV9zY3JvbGxDb3Ju
ZXI7CiB9OwogCitpbmxpbmUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogRnJhbWVWaWV3OjppbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgp
ID8gbV9mcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgOiAwOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBGcmFtZVZpZXdfaApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDBh
N2VhOWYuLmI5NTllYzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0
YXRlTm90aWZpZXIuaCIKQEAgLTY0Nyw0ICs2NDgsOSBAQCBib29sIFBhZ2U6OmphdmFTY3JpcHRV
UkxzQXJlQWxsb3dlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1famF2YVNjcmlwdFVSTHNBcmVBbGxv
d2VkOwogfQogCitJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBQYWdlOjppbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyLT50aW1l
bGluZUFnZW50KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9QYWdlLmggYi9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGZiMjEyYTQuLjNj
OGFhZmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvV2ViQ29yZS9wYWdl
L1BhZ2UuaApAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
RnJhbWU7CiAgICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogICAgIGNsYXNzIEluc3BlY3RvckNv
bnRyb2xsZXI7CisgICAgY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDsKICAgICBjbGFzcyBO
b2RlOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKICAgICBjbGFzcyBQbHVnaW5EYXRhOwpAQCAtMjEw
LDYgKzIxMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRKYXZhU2Ny
aXB0VVJMc0FyZUFsbG93ZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgamF2YVNjcmlwdFVSTHNBcmVB
bGxvd2VkKCkgY29uc3Q7CiAKKyAgICAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogaW5zcGVj
dG9yVGltZWxpbmVBZ2VudCgpIGNvbnN0OwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5p
dEdyb3VwKCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>