<?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>95445</bug_id>
          
          <creation_ts>2012-08-30 04:48:13 -0700</creation_ts>
          <short_desc>Web Inspector: Implement search and filtering on Timeline panel</short_desc>
          <delta_ts>2012-09-12 04:25:41 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>95731</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter>eustas.bug</reporter>
          <assigned_to>eustas.bug</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eustas.bug</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>peter+ews</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>708501</commentid>
    <comment_count>0</comment_count>
    <who name="">eustas.bug</who>
    <bug_when>2012-08-30 04:48:13 -0700</bug_when>
    <thetext>Implement textual search/filtering on Timeline panel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708530</commentid>
    <comment_count>1</comment_count>
      <attachid>161453</attachid>
    <who name="">eustas.bug</who>
    <bug_when>2012-08-30 05:42:07 -0700</bug_when>
    <thetext>Created attachment 161453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708534</commentid>
    <comment_count>2</comment_count>
      <attachid>161453</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-08-30 05:51:15 -0700</bug_when>
    <thetext>Comment on attachment 161453
Patch

Attachment 161453 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13690670</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708552</commentid>
    <comment_count>3</comment_count>
      <attachid>161453</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-08-30 06:10:27 -0700</bug_when>
    <thetext>Comment on attachment 161453
Patch

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

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:724
&gt; +        function findRecordToReveal(record) {

{ =&gt; new line.

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1044
&gt; +        if (this._searchFilter.enabled) {
&gt; +            return;
&gt; +        }

drop {}

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1048
&gt; +        if (!record) {
&gt; +            return;
&gt; +        }

ditto

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1051
&gt; +        do {

for (var element = ... ; element; element = element.nextSibling)

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1089
&gt; +        if (selectedIndex == -1)

===

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1486
&gt; +            if (this._matchedRecords)
&gt; +                this._matchedRecords.push(record);

can we avoid abusing this filter to also perform collection of the records? Apparently, it should only be a part of filter chain when we&apos;re in &quot;filter&quot; mode, and we could perhaps run it separately upon all records within the window when we&apos;re in &quot;search&quot; mode?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708629</commentid>
    <comment_count>4</comment_count>
      <attachid>161453</attachid>
    <who name="">eustas.bug</who>
    <bug_when>2012-08-30 08:09:46 -0700</bug_when>
    <thetext>Comment on attachment 161453
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:724
&gt;&gt; +        function findRecordToReveal(record) {
&gt; 
&gt; { =&gt; new line.

Fixed.

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1044
&gt;&gt; +        }
&gt; 
&gt; drop {}

Fixed

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1048
&gt;&gt; +        }
&gt; 
&gt; ditto

Fixed

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1051
&gt;&gt; +        do {
&gt; 
&gt; for (var element = ... ; element; element = element.nextSibling)

Done

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1089
&gt;&gt; +        if (selectedIndex == -1)
&gt; 
&gt; ===

Fixed

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1486
&gt;&gt; +                this._matchedRecords.push(record);
&gt; 
&gt; can we avoid abusing this filter to also perform collection of the records? Apparently, it should only be a part of filter chain when we&apos;re in &quot;filter&quot; mode, and we could perhaps run it separately upon all records within the window when we&apos;re in &quot;search&quot; mode?

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708631</commentid>
    <comment_count>5</comment_count>
      <attachid>161472</attachid>
    <who name="">eustas.bug</who>
    <bug_when>2012-08-30 08:11:44 -0700</bug_when>
    <thetext>Created attachment 161472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709434</commentid>
    <comment_count>6</comment_count>
      <attachid>161472</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-08-31 02:53:31 -0700</bug_when>
    <thetext>Comment on attachment 161472
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709517</commentid>
    <comment_count>7</comment_count>
      <attachid>161472</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-31 05:38:18 -0700</bug_when>
    <thetext>Comment on attachment 161472
Patch

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

&gt; Source/WebCore/inspector/front-end/TimelineOverviewPane.js:1232
&gt; +WebInspector.TimelineWindowFilter = function(pane)

Why did this change?

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:149
&gt; +    this._clearSearchResults();

No need to clear things - we don&apos;t have results yet.

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:150
&gt; +    this._searchFilter = new WebInspector.TimelineSearchFilter(this);

We should create things lazily.

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:753
&gt; +            this._scheduleRefresh(true);

Do you want to refresh instantly?

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1018
&gt; +        var index = this._searchResults.indexOf(this._selectedSearchResult) + 1;

Why not to store this._selectedSearchResultIndex instead to make things faster and simpler ?

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1035
&gt; +        WebInspector.searchController.updateCurrentMatchIndex(index, this);

You want to reveal it here?

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1048
&gt; +        for (var element = this._sidebarListElement.firstChild; element; element = element.nextSibling) {

This woun&apos;t work: _sidebarListElement is a viewport, it does not have all elements in it.

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1065
&gt; +    _updateSearchResults: function(revealRecord)

Please annotate the revealRecord parameter.

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1293
&gt; +            WebInspector.highlightSearchResult(this._typeElement, matchInfo.index, matchInfo[0].length, domChanges);

You want a regex that can span across type and data (&quot;Paint 800&quot;)

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1468
&gt; +        return this._panel._searchRegExp.test(record.title) || this._panel._searchRegExp.test(record.details());

What do we do when TimelineRecordListRow changes? You should move this method into TimelineRecordListRow (could be static).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709577</commentid>
    <comment_count>8</comment_count>
      <attachid>161472</attachid>
    <who name="">eustas.bug</who>
    <bug_when>2012-08-31 06:40:32 -0700</bug_when>
    <thetext>Comment on attachment 161472
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/TimelineOverviewPane.js:1232
&gt;&gt; +WebInspector.TimelineWindowFilter = function(pane)
&gt; 
&gt; Why did this change?

To improve readability.
Method name (&quot;accept&quot;) is somewhat ambiguous when occurs outside of filtering context.

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:149
&gt;&gt; +    this._clearSearchResults();
&gt; 
&gt; No need to clear things - we don&apos;t have results yet.

surely.

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:150
&gt;&gt; +    this._searchFilter = new WebInspector.TimelineSearchFilter(this);
&gt; 
&gt; We should create things lazily.

OK

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:753
&gt;&gt; +            this._scheduleRefresh(true);
&gt; 
&gt; Do you want to refresh instantly?

No, because setting scrollTop also could cause (deferred) refresh.

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1018
&gt;&gt; +        var index = this._searchResults.indexOf(this._selectedSearchResult) + 1;
&gt; 
&gt; Why not to store this._selectedSearchResultIndex instead to make things faster and simpler ?

I have been doing so before refactoring.
Using index makes things are less simpler, by contraries.

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1035
&gt;&gt; +        WebInspector.searchController.updateCurrentMatchIndex(index, this);
&gt; 
&gt; You want to reveal it here?

No. Revealing record is costly. We are forcing revealing record only if it is off-screen.
&quot;_highlightSelectedSearchResult&quot; actually checks, if selected record is visible or off-screen.

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1048
&gt;&gt; +        for (var element = this._sidebarListElement.firstChild; element; element = element.nextSibling) {
&gt; 
&gt; This woun&apos;t work: _sidebarListElement is a viewport, it does not have all elements in it.

This actually works: we highlight record if it is in viewport, and reveal record if it is off-screen.

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1065
&gt;&gt; +    _updateSearchResults: function(revealRecord)
&gt; 
&gt; Please annotate the revealRecord parameter.

OK

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1293
&gt;&gt; +            WebInspector.highlightSearchResult(this._typeElement, matchInfo.index, matchInfo[0].length, domChanges);
&gt; 
&gt; You want a regex that can span across type and data (&quot;Paint 800&quot;)

We can easily do that; but is that what we really want?

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1468
&gt;&gt; +        return this._panel._searchRegExp.test(record.title) || this._panel._searchRegExp.test(record.details());
&gt; 
&gt; What do we do when TimelineRecordListRow changes? You should move this method into TimelineRecordListRow (could be static).

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709636</commentid>
    <comment_count>9</comment_count>
      <attachid>161703</attachid>
    <who name="">eustas.bug</who>
    <bug_when>2012-08-31 08:07:36 -0700</bug_when>
    <thetext>Created attachment 161703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710509</commentid>
    <comment_count>10</comment_count>
      <attachid>161703</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-03 02:33:03 -0700</bug_when>
    <thetext>Comment on attachment 161703
Patch

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

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1306
&gt; +WebInspector.TimelineRecordListRow.testContentMatching = function(record, regExp) {

{ =&gt; next line

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1307
&gt; +    return regExp.test(record.title) || regExp.test(record.details());

Let&apos;s have something like regExp.test(record.title + &quot; (&quot; + record.details + &quot;)&quot;) instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710512</commentid>
    <comment_count>11</comment_count>
      <attachid>161703</attachid>
    <who name="">eustas.bug</who>
    <bug_when>2012-09-03 02:49:34 -0700</bug_when>
    <thetext>Comment on attachment 161703
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1306
&gt;&gt; +WebInspector.TimelineRecordListRow.testContentMatching = function(record, regExp) {
&gt; 
&gt; { =&gt; next line

Fixed.

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1307
&gt;&gt; +    return regExp.test(record.title) || regExp.test(record.details());
&gt; 
&gt; Let&apos;s have something like regExp.test(record.title + &quot; (&quot; + record.details + &quot;)&quot;) instead?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710515</commentid>
    <comment_count>12</comment_count>
      <attachid>161887</attachid>
    <who name="">eustas.bug</who>
    <bug_when>2012-09-03 02:54:10 -0700</bug_when>
    <thetext>Created attachment 161887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710693</commentid>
    <comment_count>13</comment_count>
      <attachid>161887</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-03 09:22:07 -0700</bug_when>
    <thetext>Comment on attachment 161887
Patch

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

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:838
&gt; +        this._updateSearchResults(false);

So we would do a search upon every screen update, including scroll/resize? This looks a bit suboptimal.

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1058
&gt; +        if (this._highlightDomChanges)

nit: initialize in constructor instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714337</commentid>
    <comment_count>14</comment_count>
      <attachid>162722</attachid>
    <who name="">eustas.bug</who>
    <bug_when>2012-09-07 03:01:28 -0700</bug_when>
    <thetext>Created attachment 162722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714339</commentid>
    <comment_count>15</comment_count>
      <attachid>161887</attachid>
    <who name="">eustas.bug</who>
    <bug_when>2012-09-07 03:04:01 -0700</bug_when>
    <thetext>Comment on attachment 161887
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1058
&gt;&gt; +        if (this._highlightDomChanges)
&gt; 
&gt; nit: initialize in constructor instead?

&quot;We should create things lazily.&quot; (C) Pavel Feldman (see previous patch review)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714412</commentid>
    <comment_count>16</comment_count>
      <attachid>162722</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-07 04:59:37 -0700</bug_when>
    <thetext>Comment on attachment 162722
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Fixed &quot;revealRecordAt&quot; - now it searches scans all records in window,

typo: searches scans -&gt; scans

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1035
&gt; +        var index = this._searchResults.indexOf(this._selectedSearchResult) + this._searchResults.length + offset;

We can store _selectedSearchResultIndex instead of the record itself. It would be updated every time search results change, you already do it in _updateSearchResults. That way you want need to do indexOf on each jump.

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1036
&gt; +        this._selectSearchResult(index % this._searchResults.length);

nit: please extract index = (index + this._searchResults.length) % this._searchResults.length in a separate statement.

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1093
&gt; +    _updateSearchResults: function(searchRegExp) {

Why do you need to pass searchRegExp as a parameter while it is always stored in this._searchRegExp?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714446</commentid>
    <comment_count>17</comment_count>
      <attachid>162722</attachid>
    <who name="">eustas.bug</who>
    <bug_when>2012-09-07 06:13:51 -0700</bug_when>
    <thetext>Comment on attachment 162722
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        Fixed &quot;revealRecordAt&quot; - now it searches scans all records in window,
&gt; 
&gt; typo: searches scans -&gt; scans

Fixed.

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1035
&gt;&gt; +        var index = this._searchResults.indexOf(this._selectedSearchResult) + this._searchResults.length + offset;
&gt; 
&gt; We can store _selectedSearchResultIndex instead of the record itself. It would be updated every time search results change, you already do it in _updateSearchResults. That way you want need to do indexOf on each jump.

I&apos;ve stored index in my take-one patch.
It looked clumsy.
Actually, indexOf is very cheap: 17K+ searches per second for last element in 10K element array.
Holding just record makes the code clean and straightforward, especially in cases of cache invalidation.

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1036
&gt;&gt; +        this._selectSearchResult(index % this._searchResults.length);
&gt; 
&gt; nit: please extract index = (index + this._searchResults.length) % this._searchResults.length in a separate statement.

fixed

&gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1093
&gt;&gt; +    _updateSearchResults: function(searchRegExp) {
&gt; 
&gt; Why do you need to pass searchRegExp as a parameter while it is always stored in this._searchRegExp?

We need regExp to be accessible for current scope - so it must be either variable or parameter.
In this case using parameter makes code more clear - with type annotation we see that regExp is not null.
Actually, the caller (_updateSearchHighlight) makes that check for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714458</commentid>
    <comment_count>18</comment_count>
      <attachid>162756</attachid>
    <who name="">eustas.bug</who>
    <bug_when>2012-09-07 06:36:50 -0700</bug_when>
    <thetext>Created attachment 162756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718013</commentid>
    <comment_count>19</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-12 00:50:52 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 162722 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162722&amp;action=review
&gt; &gt;&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1093
&gt; &gt;&gt; +    _updateSearchResults: function(searchRegExp) {
&gt; &gt; 
&gt; &gt; Why do you need to pass searchRegExp as a parameter while it is always stored in this._searchRegExp?
&gt; 
&gt; We need regExp to be accessible for current scope - so it must be either variable or parameter.
&gt; In this case using parameter makes code more clear - with type annotation we see that regExp is not null.
&gt; Actually, the caller (_updateSearchHighlight) makes that check for us.

You can move the check inside the method then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718030</commentid>
    <comment_count>20</comment_count>
    <who name="">eustas.bug</who>
    <bug_when>2012-09-12 01:10:36 -0700</bug_when>
    <thetext>&gt; &gt; Actually, the caller (_updateSearchHighlight) makes that check for us.
&gt; You can move the check inside the method then.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718080</commentid>
    <comment_count>21</comment_count>
      <attachid>163553</attachid>
    <who name="">eustas.bug</who>
    <bug_when>2012-09-12 02:11:00 -0700</bug_when>
    <thetext>Created attachment 163553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718094</commentid>
    <comment_count>22</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-09-12 02:33:31 -0700</bug_when>
    <thetext>Committed r128281: &lt;http://trac.webkit.org/changeset/128281&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161453</attachid>
            <date>2012-08-30 05:42:07 -0700</date>
            <delta_ts>2012-08-30 08:11:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95445-20120830164155.patch</filename>
            <type>text/plain</type>
            <size>15237</size>
            <attacher>eustas.bug</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTkxMTE4ODViYmM2YThk
MTYzNmVkODY3NWY5MzkzY2U2ZGE0Mzg4OC4uMzc3YzY4NGU3ZDhjNzcyYjI4MDkyMTE4ZDg5YTM0
NTc1ZGU2OTY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA4LTMwICBFdWdl
bmUgS2x5dWNobmlrb3YgIDxldXN0YXMuYmlnQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBJbXBsZW1lbnQgc2VhcmNoIGFuZCBmaWx0ZXJpbmcgb24gVGltZWxpbmUgcGFuZWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
ZWQgdGV4dHVhbCBzZWFyY2gvZmlsdGVyaW5nIG9uIFRpbWVsaW5lIHBhbmVsLgorICAgICAgICBG
aXhlZCAicmV2ZWFsUmVjb3JkQXQiIC0gbm93IGl0IHNlYXJjaGVzIHNjYW5zIGFsbCByZWNvcmRz
IGluIHdpbmRvdywKKyAgICAgICAgbm93IG9ubHkgdmlzaWJsZSBvbmVzLiAKKworICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVXaW5kb3dGaWx0ZXIpOgorICAgICAgICBFeHRyYWN0ZWQgZnJv
bSBUaW1lbGluZU92ZXJ2aWV3UGFuZSBjbGFzcy4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUucmV2ZWFs
UmVjb3JkQXQpOgorICAgICAgICBVc2VkIERGUyB0byBzY2FuIHJlY29yZHMuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3JldmVhbFJlY29yZCk6CisgICAg
ICAgIEV4dHJhY3RlZCBjb21tb24gY29kZS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNlYXJjaEZpbHRlcik6CisgICAgICAgIEltcGxlbWVudGVkIHNlYXJjaCBhbmQgZmlsdHJhdGlv
bi4KKwogMjAxMi0wOC0yOSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW05ldyBNdWx0aWNvbHVtbl0gUmVuYW1lIG1ldGhvZHMgdG8gcHJlcGFyZSBmb3IgcHJvcGVy
IHBhZ2luYXRpb24gb2YgY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanMKaW5kZXggNzk3ZGYyMDhi
NTQyOGMyMDc2N2ZiYTA2MDdhN2I2N2NiZjE4MThkOC4uZWNkZmE4MjBmNGU1Njc1OGU3MjhlMjE4
MjcxMGM0MTkyYjJlNjVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzCkBAIC0zMSw3ICszMSw2IEBA
CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQot
ICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLkZp
bHRlcn0KICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWx9IG1vZGVsCiAgKi8K
IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZSA9IGZ1bmN0aW9uKG1vZGVsKQpAQCAt
Mjc0LDE0ICsyNzMsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9
IHJlY29yZAotICAgICAqLwotICAgIGFjY2VwdDogZnVuY3Rpb24ocmVjb3JkKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHJlY29yZC5sYXN0Q2hpbGRFbmRUaW1lID49IHRoaXMuX3dpbmRvd1N0YXJ0
VGltZSAmJiByZWNvcmQuc3RhcnRUaW1lIDw9IHRoaXMuX3dpbmRvd0VuZFRpbWU7Ci0gICAgfSwK
LQogICAgIHdpbmRvd1N0YXJ0VGltZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3dpbmRvd1N0YXJ0VGltZSB8fCB0aGlzLl9tb2RlbC5taW5pbXVtUmVjb3JkVGltZSgp
OwpAQCAtMTIzMiwzICsxMjIzLDI0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUZyYW1lT3ZlcnZp
ZXcucHJvdG90eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVGcmFtZU92ZXJ2aWV3
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CisKKy8q
KgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmV9IHBhbmUKKyAq
IEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNl
bnRhdGlvbk1vZGVsLkZpbHRlcn0KKyAqLworV2ViSW5zcGVjdG9yLlRpbWVsaW5lV2luZG93Rmls
dGVyID0gZnVuY3Rpb24ocGFuZSkKK3sKKyAgICB0aGlzLl9wYW5lID0gcGFuZTsKK30KKworV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lV2luZG93RmlsdGVyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNv
cmR9IHJlY29yZAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgYWNjZXB0
OiBmdW5jdGlvbihyZWNvcmQpCisgICAgeworICAgICAgICByZXR1cm4gcmVjb3JkLmxhc3RDaGls
ZEVuZFRpbWUgPj0gdGhpcy5fcGFuZS5fd2luZG93U3RhcnRUaW1lICYmIHJlY29yZC5zdGFydFRp
bWUgPD0gdGhpcy5fcGFuZS5fd2luZG93RW5kVGltZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggMjFl
Y2NmMTUzNTQ1NzQ2NTU1N2YwODUzM2M5MWI4NzcxNjk4NjBiMy4uMDhkOWUyYTFkZWM3OWQ3YjA1
ZDJiYTI4MGFkMjNhMmZjNTJhZTIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMTQ1LDkgKzE0NSwxNSBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQYW5lbCA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMuX2FsbFJlY29y
ZHNDb3VudCA9IDA7CiAKLSAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRGaWx0ZXIodGhp
cy5fb3ZlcnZpZXdQYW5lKTsKKyAgICB0aGlzLl9oaWdobGlnaHREb21DaGFuZ2VzID0gW107Cisg
ICAgdGhpcy5fY2xlYXJTZWFyY2hSZXN1bHRzKCk7CisgICAgdGhpcy5fc2VhcmNoRmlsdGVyID0g
bmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVNlYXJjaEZpbHRlcih0aGlzKTsKKworICAgIHRoaXMu
X3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZpbHRlcihuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lV2lu
ZG93RmlsdGVyKHRoaXMuX292ZXJ2aWV3UGFuZSkpOwogICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1v
ZGVsLmFkZEZpbHRlcihuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnlGaWx0ZXIoKSk7
IAotICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZpbHRlcihuZXcgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lSXNMb25nRmlsdGVyKHRoaXMpKTsgCisgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9k
ZWwuYWRkRmlsdGVyKG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVJc0xvbmdGaWx0ZXIodGhpcykp
OworICAgIC8vIFNlYXJjaCBmaWx0ZXIgbXVzdCBiZSB0aGUgbGFzdCBpbiBmaWx0ZXIgY2hhaW4u
CisgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRmlsdGVyKHRoaXMuX3NlYXJjaEZpbHRl
cik7CiB9CiAKIC8vIERlZmluZSByb3cgaGVpZ2h0LCBzaG91bGQgYmUgaW4gc3luYyB3aXRoIHN0
eWxlcyBmb3IgdGltZWxpbmUgZ3JhcGhzLgpAQCAtNzE0LDE4ICs3MjAsMTggQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgcmV2ZWFsUmVjb3JkQXQ6IGZ1
bmN0aW9uKHRpbWUpCiAgICAgewotICAgICAgICB2YXIgcmVjb3Jkc0luV2luZG93ID0gdGhpcy5f
cHJlc2VudGF0aW9uTW9kZWwuZmlsdGVyZWRSZWNvcmRzKCk7CiAgICAgICAgIHZhciByZWNvcmRU
b1JldmVhbDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWNvcmRzSW5XaW5kb3cubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciByZWNvcmQgPSByZWNvcmRzSW5XaW5kb3dbaV07
CisgICAgICAgIGZ1bmN0aW9uIGZpbmRSZWNvcmRUb1JldmVhbChyZWNvcmQpIHsKICAgICAgICAg
ICAgIGlmIChyZWNvcmQuY29udGFpbnNUaW1lKHRpbWUpKSB7CiAgICAgICAgICAgICAgICAgcmVj
b3JkVG9SZXZlYWwgPSByZWNvcmQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBubyByZWNvcmQgY29udGFpbmluZyB0aGUgdGltZSB0aGFuIHVzZSB0aGUgbGF0ZXN0IG9u
ZSBiZWZvcmUgdGhhdCB0aW1lLgogICAgICAgICAgICAgaWYgKCFyZWNvcmRUb1JldmVhbCB8fCBy
ZWNvcmQuZW5kVGltZSA8IHRpbWUgJiYgcmVjb3JkVG9SZXZlYWwuZW5kVGltZSA8IHJlY29yZC5l
bmRUaW1lKQogICAgICAgICAgICAgICAgIHJlY29yZFRvUmV2ZWFsID0gcmVjb3JkOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIFdlYkluc3BlY3Rvci5UaW1l
bGluZVByZXNlbnRhdGlvbk1vZGVsLmZvckFsbFJlY29yZHModGhpcy5fcHJlc2VudGF0aW9uTW9k
ZWwucm9vdFJlY29yZCgpLmNoaWxkcmVuLCBudWxsLCBmaW5kUmVjb3JkVG9SZXZlYWwpOwogCiAg
ICAgICAgIC8vIFRoZSByZWNvcmQgZW5kcyBiZWZvcmUgdGhlIHdpbmRvdyBsZWZ0IGJvdW5kIHNv
IHNjcm9sbCB0byB0aGUgdG9wLgogICAgICAgICBpZiAoIXJlY29yZFRvUmV2ZWFsKSB7CkBAIC03
MzMsMTYgKzczOSwyOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICB0aGlzLl9yZXZlYWxS
ZWNvcmQocmVjb3JkVG9SZXZlYWwpOworICAgIH0sCisKKyAgICBfcmV2ZWFsUmVjb3JkOiBmdW5j
dGlvbihyZWNvcmRUb1JldmVhbCkKKyAgICB7CiAgICAgICAgIC8vIEV4cGFuZCBhbGwgYW5jZXN0
b3JzLgotICAgICAgICBmb3IgKHZhciBwYXJlbnQgPSByZWNvcmRUb1JldmVhbC5wYXJlbnQ7IHBh
cmVudCAhPT0gdGhpcy5fcm9vdFJlY29yZCgpOyBwYXJlbnQgPSBwYXJlbnQucGFyZW50KQorICAg
ICAgICB2YXIgdHJlZVVwZGF0ZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgcGFyZW50ID0g
cmVjb3JkVG9SZXZlYWwucGFyZW50OyBwYXJlbnQgIT09IHRoaXMuX3Jvb3RSZWNvcmQoKTsgcGFy
ZW50ID0gcGFyZW50LnBhcmVudCkgeworICAgICAgICAgICAgdHJlZVVwZGF0ZWQgPSB0cmVlVXBk
YXRlZCB8fCBwYXJlbnQuY29sbGFwc2VkOwogICAgICAgICAgICAgcGFyZW50LmNvbGxhcHNlZCA9
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmICh0cmVlVXBkYXRlZCkKKyAgICAgICAgICAg
IHRoaXMuX3NjaGVkdWxlUmVmcmVzaCh0cnVlKTsKKworICAgICAgICB2YXIgcmVjb3Jkc0luV2lu
ZG93ID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuZmlsdGVyZWRSZWNvcmRzKCk7CiAgICAgICAg
IHZhciBpbmRleCA9IHJlY29yZHNJbldpbmRvdy5pbmRleE9mKHJlY29yZFRvUmV2ZWFsKTsKICAg
ICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3AgPSBpbmRleCAqIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnJvd0hlaWdodDsKICAgICB9LAogCiAgICAgX3JlZnJlc2hSZWNv
cmRzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgcmVjb3Jkc0luV2luZG93ID0gdGhp
cy5fcHJlc2VudGF0aW9uTW9kZWwuZmlsdGVyZWRSZWNvcmRzKCk7CisgICAgICAgIHZhciByZWNv
cmRzSW5XaW5kb3cgPSB0aGlzLl9maWx0ZXJSZWNvcmRzQW5kVXBkYXRlU2VhcmNoUmVzdWx0cygp
OwogCiAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgdmlzaWJsZSBhcmVhLgogICAgICAgICB2YXIg
dmlzaWJsZVRvcCA9IHRoaXMuX3Njcm9sbFRvcDsKQEAgLTc1OSw3ICs3NzcsNyBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSdy
ZSBhdCB0aGUgdG9wLCBhbHdheXMgdXNlIHJlYWwgdGltZWxpbmUgc3RhcnQgYXMgYSBsZWZ0IHdp
bmRvdyBib3VuZCBzbyB0aGF0IGV4cGFuc2lvbiBhcnJvdyBwYWRkaW5nIGxvZ2ljIHdvcmtzLgog
ICAgICAgICAgICAgdmFyIHdpbmRvd1N0YXJ0VGltZSA9IHN0YXJ0SW5kZXggPyByZWNvcmRzSW5X
aW5kb3dbc3RhcnRJbmRleF0uc3RhcnRUaW1lIDogdGhpcy5fbW9kZWwubWluaW11bVJlY29yZFRp
bWUoKTsKICAgICAgICAgICAgIHRoaXMuX292ZXJ2aWV3UGFuZS5zZXRXaW5kb3dUaW1lcyh3aW5k
b3dTdGFydFRpbWUsIHJlY29yZHNJbldpbmRvd1tNYXRoLm1heCgwLCBsYXN0VmlzaWJsZUxpbmUg
LSAxKV0uZW5kVGltZSk7Ci0gICAgICAgICAgICByZWNvcmRzSW5XaW5kb3cgPSB0aGlzLl9wcmVz
ZW50YXRpb25Nb2RlbC5maWx0ZXJlZFJlY29yZHMoKTsKKyAgICAgICAgICAgIHJlY29yZHNJbldp
bmRvdyA9IHRoaXMuX2ZpbHRlclJlY29yZHNBbmRVcGRhdGVTZWFyY2hSZXN1bHRzKCk7CiAgICAg
ICAgICAgICBlbmRJbmRleCA9IE1hdGgubWluKHJlY29yZHNJbldpbmRvdy5sZW5ndGgsIGxhc3RW
aXNpYmxlTGluZSk7CiAgICAgICAgIH0KIApAQCAtODIyLDYgKzg0MCw3IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faXRlbXNHcmFwaHNF
bGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9ncmFwaFJvd3NFbGVtZW50LCB0aGlzLl9ib3R0b21H
YXBFbGVtZW50KTsKICAgICAgICAgdGhpcy5faXRlbXNHcmFwaHNFbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX2V4cGFuZEVsZW1lbnRzKTsKICAgICAgICAgdGhpcy5fYWRqdXN0U2Nyb2xsUG9zaXRp
b24oKHJlY29yZHNJbldpbmRvdy5sZW5ndGggKyB0aGlzLl9oZWFkZXJMaW5lQ291bnQpICogcm93
SGVpZ2h0KTsKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VsZWN0ZWRTZWFyY2hSZXN1bHQoZmFs
c2UpOwogCiAgICAgICAgIHJldHVybiByZWNvcmRzSW5XaW5kb3cubGVuZ3RoOwogICAgIH0sCkBA
IC05OTEsNiArMTAxMCwxMjUgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBl
ID0gewogCiAgICAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gT2JqZWN0LnZhbHVlcyhjYXRlZ29y
aWVzKS5tYXAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlU3R5
bGVSdWxlRm9yQ2F0ZWdvcnkpLmpvaW4oIlxuIik7CiAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBw
ZW5kQ2hpbGQoc3R5bGUpOworICAgIH0sCisKKyAgICBqdW1wVG9OZXh0U2VhcmNoUmVzdWx0OiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRo
aXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2
YXIgaW5kZXggPSB0aGlzLl9zZWFyY2hSZXN1bHRzLmluZGV4T2YodGhpcy5fc2VsZWN0ZWRTZWFy
Y2hSZXN1bHQpICsgMTsKKyAgICAgICAgdGhpcy5fc2VsZWN0U2VhcmNoUmVzdWx0KGluZGV4ICUg
dGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpOworICAgICAgICB0aGlzLl9oaWdobGlnaHRTZWxl
Y3RlZFNlYXJjaFJlc3VsdCh0cnVlKTsKKyAgICB9LAorCisgICAganVtcFRvUHJldmlvdXNTZWFy
Y2hSZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVz
dWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3NlYXJjaFJlc3VsdHMuaW5kZXhPZih0aGlzLl9z
ZWxlY3RlZFNlYXJjaFJlc3VsdCkgKyB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCAtIDE7Cisg
ICAgICAgIHRoaXMuX3NlbGVjdFNlYXJjaFJlc3VsdChpbmRleCAlIHRoaXMuX3NlYXJjaFJlc3Vs
dHMubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VsZWN0ZWRTZWFyY2hSZXN1bHQo
dHJ1ZSk7CisgICAgfSwKKworICAgIF9zZWxlY3RTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGluZGV4
KQorICAgIHsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRTZWFyY2hSZXN1bHQgPSB0aGlzLl9zZWFy
Y2hSZXN1bHRzW2luZGV4XTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIu
dXBkYXRlQ3VycmVudE1hdGNoSW5kZXgoaW5kZXgsIHRoaXMpOworICAgIH0sCisKKyAgICBfaGln
aGxpZ2h0U2VsZWN0ZWRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKHJldmVhbFJlY29yZCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2NsZWFySGlnaGxpZ2h0KCk7CisgICAgICAgIGlmICh0aGlzLl9zZWFy
Y2hGaWx0ZXIuZW5hYmxlZCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIHZhciByZWNvcmQgPSB0aGlzLl9zZWxlY3RlZFNlYXJjaFJlc3VsdDsKKyAgICAgICAgaWYg
KCFyZWNvcmQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZh
ciBlbGVtZW50ID0gdGhpcy5fc2lkZWJhckxpc3RFbGVtZW50LmZpcnN0Q2hpbGQ7CisgICAgICAg
IGRvIHsKKyAgICAgICAgICAgIGlmIChlbGVtZW50LnJvdy5fcmVjb3JkID09PSByZWNvcmQpIHsK
KyAgICAgICAgICAgICAgICBlbGVtZW50LnJvdy5oaWdobGlnaHQodGhpcy5fc2VhcmNoUmVnRXhw
LCB0aGlzLl9oaWdobGlnaHREb21DaGFuZ2VzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5uZXh0U2libGluZzsK
KyAgICAgICAgfSB3aGlsZSAoZWxlbWVudCk7CisKKyAgICAgICAgaWYgKHJldmVhbFJlY29yZCkK
KyAgICAgICAgICAgIHRoaXMuX3JldmVhbFJlY29yZChyZWNvcmQpOworICAgIH0sCisKKyAgICBf
Y2xlYXJIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5y
ZXZlcnREb21DaGFuZ2VzKHRoaXMuX2hpZ2hsaWdodERvbUNoYW5nZXMpOworICAgICAgICB0aGlz
Ll9oaWdobGlnaHREb21DaGFuZ2VzID0gW107CisgICAgfSwKKworICAgIF9maWx0ZXJSZWNvcmRz
QW5kVXBkYXRlU2VhcmNoUmVzdWx0czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNl
bGVjdGVkU2VhcmNoUmVzdWx0ID0gdGhpcy5fc2VsZWN0ZWRTZWFyY2hSZXN1bHQ7CisgICAgICAg
IHRoaXMuX2NsZWFyU2VhcmNoUmVzdWx0cygpOworCisgICAgICAgIHZhciBtYXRjaGVzID0gW107
CisgICAgICAgIHRoaXMuX3NlYXJjaEZpbHRlci5yZWNvcmRNYXRjaGVzVG8obWF0Y2hlcyk7Cisg
ICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5maWx0ZXJlZFJlY29y
ZHMoKTsKKyAgICAgICAgdGhpcy5fc2VhcmNoRmlsdGVyLnN0b3BSZWNvcmQoKTsKKworICAgICAg
ICB2YXIgbWF0Y2hlc0NvdW50ID0gbWF0Y2hlcy5sZW5ndGg7CisgICAgICAgIGlmICghbWF0Y2hl
c0NvdW50KSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRh
dGVTZWFyY2hNYXRjaGVzQ291bnQoMCwgdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IG1hdGNoZXM7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5zZWFyY2hDb250cm9sbGVyLnVwZGF0ZVNlYXJjaE1hdGNoZXND
b3VudChtYXRjaGVzQ291bnQsIHRoaXMpOworCisgICAgICAgIHZhciBzZWxlY3RlZEluZGV4ID0g
bWF0Y2hlcy5pbmRleE9mKHNlbGVjdGVkU2VhcmNoUmVzdWx0KTsKKyAgICAgICAgaWYgKHNlbGVj
dGVkSW5kZXggPT0gLTEpCisgICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gMDsKKyAgICAgICAg
dGhpcy5fc2VsZWN0U2VhcmNoUmVzdWx0KHNlbGVjdGVkSW5kZXgpOworCisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfSwKKworICAgIF9jbGVhclNlYXJjaFJlc3VsdHM6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHRoaXMuX2NsZWFySGlnaGxpZ2h0KCk7CisgICAgICAgIHRoaXMuX3Nl
YXJjaFJlc3VsdHMgPSBbXTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NlbGVjdGVkU2VhcmNoUmVz
dWx0OworICAgIH0sCisKKyAgICBzZWFyY2hDYW5jZWxlZDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fY2xlYXJTZWFyY2hSZXN1bHRzKCk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9z
ZWFyY2hSZWdFeHA7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59
CisgICAgICovCisgICAgY2FuRmlsdGVyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgcGVyZm9ybUZpbHRlcjogZnVuY3Rpb24oc2VhcmNoUXVl
cnkpCisgICAgeworICAgICAgICB0aGlzLl9zZWFyY2hGaWx0ZXIuZW5hYmxlZCA9IHRydWU7Cisg
ICAgICAgIHRoaXMuc2VhcmNoQ2FuY2VsZWQoKTsKKyAgICAgICAgaWYgKHNlYXJjaFF1ZXJ5KQor
ICAgICAgICAgICAgdGhpcy5fc2VhcmNoUmVnRXhwID0gY3JlYXRlUGxhaW5UZXh0U2VhcmNoUmVn
ZXgoc2VhcmNoUXVlcnksICJpIik7CisgICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaCh0cnVl
KTsKKyAgICB9LAorCisgICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24oc2VhcmNoUXVlcnkpCisg
ICAgeworICAgICAgICB0aGlzLl9zZWFyY2hGaWx0ZXIuZW5hYmxlZCA9IGZhbHNlOworICAgICAg
ICB0aGlzLl9zZWFyY2hSZWdFeHAgPSBjcmVhdGVQbGFpblRleHRTZWFyY2hSZWdleChzZWFyY2hR
dWVyeSwgImkiKTsKKyAgICAgICAgdGhpcy5fZmlsdGVyUmVjb3Jkc0FuZFVwZGF0ZVNlYXJjaFJl
c3VsdHMoKTsKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VsZWN0ZWRTZWFyY2hSZXN1bHQodHJ1
ZSk7CiAgICAgfQogfQogCkBAIC0xMTQwLDYgKzEyNzgsMTcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkTGlzdFJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisgICAg
aGlnaGxpZ2h0OiBmdW5jdGlvbihyZWdFeHAsIGRvbUNoYW5nZXMpCisgICAgeworICAgICAgICB2
YXIgbWF0Y2hJbmZvID0gdGhpcy5fdHlwZUVsZW1lbnQudGV4dENvbnRlbnQubWF0Y2gocmVnRXhw
KTsKKyAgICAgICAgaWYgKG1hdGNoSW5mbykKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5oaWdo
bGlnaHRTZWFyY2hSZXN1bHQodGhpcy5fdHlwZUVsZW1lbnQsIG1hdGNoSW5mby5pbmRleCwgbWF0
Y2hJbmZvWzBdLmxlbmd0aCwgZG9tQ2hhbmdlcyk7CisKKyAgICAgICAgbWF0Y2hJbmZvID0gdGhp
cy5fZGF0YUVsZW1lbnQudGV4dENvbnRlbnQubWF0Y2gocmVnRXhwKTsKKyAgICAgICAgaWYgKG1h
dGNoSW5mbykKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5oaWdobGlnaHRTZWFyY2hSZXN1bHQo
dGhpcy5fZGF0YUVsZW1lbnQsIG1hdGNoSW5mby5pbmRleCwgbWF0Y2hJbmZvWzBdLmxlbmd0aCwg
ZG9tQ2hhbmdlcyk7CisgICAgfSwKKwogICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVu
dCk7CkBAIC0xMjYwLDcgKzE0MDksOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeUZp
bHRlciA9IGZ1bmN0aW9uKCkKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnlGaWx0ZXIu
cHJvdG90eXBlID0gewogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVs
aW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQKKyAgICAgKiBAcGFyYW0geyFXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJlY29yZAorICAgICAq
IEByZXR1cm4ge2Jvb2xlYW59CiAgICAgICovCiAgICAgYWNjZXB0OiBmdW5jdGlvbihyZWNvcmQp
CiAgICAgewpAQCAtMTI4MCwxMCArMTQzMCw2MyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVJc0xv
bmdGaWx0ZXIgPSBmdW5jdGlvbihwYW5lbCkKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lSXNMb25n
RmlsdGVyLnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgICAgICogQHBhcmFt
IHshV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQK
KyAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAqLwogICAgIGFjY2VwdDogZnVuY3Rpb24o
cmVjb3JkKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhbmVsLl9zaG93U2hvcnRFdmVu
dHMgfHwgcmVjb3JkLmlzTG9uZygpOwogICAgIH0KIH0KKworLyoqCisgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsfSBwYW5lbAorICogQGNvbnN0cnVjdG9yCisgKiBAaW1wbGVt
ZW50cyB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuRmlsdGVyfQorICov
CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTZWFyY2hGaWx0ZXIgPSBmdW5jdGlvbihwYW5lbCkKK3sK
KyAgICB0aGlzLl9wYW5lbCA9IHBhbmVsOworICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsKK30K
KworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2VhcmNoRmlsdGVyLnByb3RvdHlwZSA9IHsKKyAgICBz
ZXQgZW5hYmxlZChlbmFibGVkKQorICAgIHsKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGVuYWJs
ZWQ7CisgICAgfSwKKworICAgIGdldCBlbmFibGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9lbmFibGVkOworICAgIH0sCisKKyAgICByZWNvcmRNYXRjaGVzVG86IGZ1bmN0aW9uKG1h
dGNoZXMpCisgICAgeworICAgICAgICB0aGlzLl9tYXRjaGVkUmVjb3JkcyA9IG1hdGNoZXM7Cisg
ICAgfSwKKworICAgIHN0b3BSZWNvcmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlbGV0
ZSB0aGlzLl9tYXRjaGVkUmVjb3JkczsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHshV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQK
KyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGFjY2VwdDogZnVuY3Rpb24o
cmVjb3JkKQorICAgIHsKKyAgICAgICAgdmFyIHNlYXJjaFJlZ0V4cCA9IHRoaXMuX3BhbmVsLl9z
ZWFyY2hSZWdFeHA7CisgICAgICAgIGlmICghc2VhcmNoUmVnRXhwKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAgICAgaWYgKHNlYXJjaFJlZ0V4cC50ZXN0KHJlY29yZC50aXRsZSkg
fHwgc2VhcmNoUmVnRXhwLnRlc3QocmVjb3JkLmRldGFpbHMoKSkpIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9tYXRjaGVkUmVjb3JkcykKKyAgICAgICAgICAgICAgICB0aGlzLl9tYXRjaGVkUmVj
b3Jkcy5wdXNoKHJlY29yZCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiAhdGhpcy5fZW5hYmxlZDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9uTW9k
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwuanMKaW5kZXggZTAyNGFhMTQ5NjNjYTdlNjdjMGE0YWM5MzVjNmUxOGRjOWU4
MmU1Ni4uNjk4MzIzOTQxYTEwM2UxYzk1Zjg4NmIzNTllMDI1NDRlNjY2MTA1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlv
bk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxp
bmVQcmVzZW50YXRpb25Nb2RlbC5qcwpAQCAtMjIwLDcgKzIyMCw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUV2ZW50RGl2aWRlciA9IGZ1bmN0aW9uKHJl
Y29yZFR5cGUsCiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZVBy
ZXNlbnRhdGlvbk1vZGVsLkZpbHRlcn0gZmlsdGVyCisgICAgICogQHBhcmFtIHshV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuRmlsdGVyfSBmaWx0ZXIKICAgICAgKi8KICAg
ICBhZGRGaWx0ZXI6IGZ1bmN0aW9uKGZpbHRlcikKICAgICB7CkBAIC0xMDk4LDcgKzEwOTgsOCBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5GaWx0ZXIgPSBmdW5jdGlv
bigpCiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLkZpbHRlci5wcm90
b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
cmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJlY29yZAorICAgICAqIEBwYXJhbSB7IVdlYkluc3Bl
Y3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgICAgICogQHJl
dHVybiB7Ym9vbGVhbn0KICAgICAgKi8KICAgICBhY2NlcHQ6IGZ1bmN0aW9uKHJlY29yZCkgeyBy
ZXR1cm4gZmFsc2U7IH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161472</attachid>
            <date>2012-08-30 08:11:44 -0700</date>
            <delta_ts>2012-08-31 08:07:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95445-20120830191132.patch</filename>
            <type>text/plain</type>
            <size>14410</size>
            <attacher>eustas.bug</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTkxMTE4ODViYmM2YThk
MTYzNmVkODY3NWY5MzkzY2U2ZGE0Mzg4OC4uMzc3YzY4NGU3ZDhjNzcyYjI4MDkyMTE4ZDg5YTM0
NTc1ZGU2OTY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA4LTMwICBFdWdl
bmUgS2x5dWNobmlrb3YgIDxldXN0YXMuYmlnQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBJbXBsZW1lbnQgc2VhcmNoIGFuZCBmaWx0ZXJpbmcgb24gVGltZWxpbmUgcGFuZWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
ZWQgdGV4dHVhbCBzZWFyY2gvZmlsdGVyaW5nIG9uIFRpbWVsaW5lIHBhbmVsLgorICAgICAgICBG
aXhlZCAicmV2ZWFsUmVjb3JkQXQiIC0gbm93IGl0IHNlYXJjaGVzIHNjYW5zIGFsbCByZWNvcmRz
IGluIHdpbmRvdywKKyAgICAgICAgbm93IG9ubHkgdmlzaWJsZSBvbmVzLiAKKworICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVXaW5kb3dGaWx0ZXIpOgorICAgICAgICBFeHRyYWN0ZWQgZnJv
bSBUaW1lbGluZU92ZXJ2aWV3UGFuZSBjbGFzcy4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUucmV2ZWFs
UmVjb3JkQXQpOgorICAgICAgICBVc2VkIERGUyB0byBzY2FuIHJlY29yZHMuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3JldmVhbFJlY29yZCk6CisgICAg
ICAgIEV4dHJhY3RlZCBjb21tb24gY29kZS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNlYXJjaEZpbHRlcik6CisgICAgICAgIEltcGxlbWVudGVkIHNlYXJjaCBhbmQgZmlsdHJhdGlv
bi4KKwogMjAxMi0wOC0yOSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW05ldyBNdWx0aWNvbHVtbl0gUmVuYW1lIG1ldGhvZHMgdG8gcHJlcGFyZSBmb3IgcHJvcGVy
IHBhZ2luYXRpb24gb2YgY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanMKaW5kZXggNzk3ZGYyMDhi
NTQyOGMyMDc2N2ZiYTA2MDdhN2I2N2NiZjE4MThkOC4uZWNkZmE4MjBmNGU1Njc1OGU3MjhlMjE4
MjcxMGM0MTkyYjJlNjVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzCkBAIC0zMSw3ICszMSw2IEBA
CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQot
ICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLkZp
bHRlcn0KICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWx9IG1vZGVsCiAgKi8K
IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZSA9IGZ1bmN0aW9uKG1vZGVsKQpAQCAt
Mjc0LDE0ICsyNzMsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9
IHJlY29yZAotICAgICAqLwotICAgIGFjY2VwdDogZnVuY3Rpb24ocmVjb3JkKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHJlY29yZC5sYXN0Q2hpbGRFbmRUaW1lID49IHRoaXMuX3dpbmRvd1N0YXJ0
VGltZSAmJiByZWNvcmQuc3RhcnRUaW1lIDw9IHRoaXMuX3dpbmRvd0VuZFRpbWU7Ci0gICAgfSwK
LQogICAgIHdpbmRvd1N0YXJ0VGltZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3dpbmRvd1N0YXJ0VGltZSB8fCB0aGlzLl9tb2RlbC5taW5pbXVtUmVjb3JkVGltZSgp
OwpAQCAtMTIzMiwzICsxMjIzLDI0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUZyYW1lT3ZlcnZp
ZXcucHJvdG90eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVGcmFtZU92ZXJ2aWV3
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CisKKy8q
KgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmV9IHBhbmUKKyAq
IEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNl
bnRhdGlvbk1vZGVsLkZpbHRlcn0KKyAqLworV2ViSW5zcGVjdG9yLlRpbWVsaW5lV2luZG93Rmls
dGVyID0gZnVuY3Rpb24ocGFuZSkKK3sKKyAgICB0aGlzLl9wYW5lID0gcGFuZTsKK30KKworV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lV2luZG93RmlsdGVyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNv
cmR9IHJlY29yZAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgYWNjZXB0
OiBmdW5jdGlvbihyZWNvcmQpCisgICAgeworICAgICAgICByZXR1cm4gcmVjb3JkLmxhc3RDaGls
ZEVuZFRpbWUgPj0gdGhpcy5fcGFuZS5fd2luZG93U3RhcnRUaW1lICYmIHJlY29yZC5zdGFydFRp
bWUgPD0gdGhpcy5fcGFuZS5fd2luZG93RW5kVGltZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggMjFl
Y2NmMTUzNTQ1NzQ2NTU1N2YwODUzM2M5MWI4NzcxNjk4NjBiMy4uZTQwMThlYzRkYzEyYmQ2NzAx
ZTZlZDkwOTk3MGE4NDM2NGIxYjViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMTQ1LDkgKzE0NSwxMyBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQYW5lbCA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMuX2FsbFJlY29y
ZHNDb3VudCA9IDA7CiAKLSAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRGaWx0ZXIodGhp
cy5fb3ZlcnZpZXdQYW5lKTsKKyAgICB0aGlzLl9oaWdobGlnaHREb21DaGFuZ2VzID0gW107Cisg
ICAgdGhpcy5fY2xlYXJTZWFyY2hSZXN1bHRzKCk7CisgICAgdGhpcy5fc2VhcmNoRmlsdGVyID0g
bmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVNlYXJjaEZpbHRlcih0aGlzKTsKKworICAgIHRoaXMu
X3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZpbHRlcihuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lV2lu
ZG93RmlsdGVyKHRoaXMuX292ZXJ2aWV3UGFuZSkpOwogICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1v
ZGVsLmFkZEZpbHRlcihuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnlGaWx0ZXIoKSk7
IAotICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZpbHRlcihuZXcgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lSXNMb25nRmlsdGVyKHRoaXMpKTsgCisgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9k
ZWwuYWRkRmlsdGVyKG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVJc0xvbmdGaWx0ZXIodGhpcykp
OwogfQogCiAvLyBEZWZpbmUgcm93IGhlaWdodCwgc2hvdWxkIGJlIGluIHN5bmMgd2l0aCBzdHls
ZXMgZm9yIHRpbWVsaW5lIGdyYXBocy4KQEAgLTcxNCwxOCArNzE4LDE5IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIHJldmVhbFJlY29yZEF0OiBmdW5j
dGlvbih0aW1lKQogICAgIHsKLSAgICAgICAgdmFyIHJlY29yZHNJbldpbmRvdyA9IHRoaXMuX3By
ZXNlbnRhdGlvbk1vZGVsLmZpbHRlcmVkUmVjb3JkcygpOwogICAgICAgICB2YXIgcmVjb3JkVG9S
ZXZlYWw7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVjb3Jkc0luV2luZG93Lmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgcmVjb3JkID0gcmVjb3Jkc0luV2luZG93W2ldOwor
ICAgICAgICBmdW5jdGlvbiBmaW5kUmVjb3JkVG9SZXZlYWwocmVjb3JkKQorICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAocmVjb3JkLmNvbnRhaW5zVGltZSh0aW1lKSkgewogICAgICAgICAgICAg
ICAgIHJlY29yZFRvUmV2ZWFsID0gcmVjb3JkOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8g
SWYgdGhlcmUgaXMgbm8gcmVjb3JkIGNvbnRhaW5pbmcgdGhlIHRpbWUgdGhhbiB1c2UgdGhlIGxh
dGVzdCBvbmUgYmVmb3JlIHRoYXQgdGltZS4KICAgICAgICAgICAgIGlmICghcmVjb3JkVG9SZXZl
YWwgfHwgcmVjb3JkLmVuZFRpbWUgPCB0aW1lICYmIHJlY29yZFRvUmV2ZWFsLmVuZFRpbWUgPCBy
ZWNvcmQuZW5kVGltZSkKICAgICAgICAgICAgICAgICByZWNvcmRUb1JldmVhbCA9IHJlY29yZDsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0
b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5mb3JBbGxSZWNvcmRzKHRoaXMuX3ByZXNlbnRh
dGlvbk1vZGVsLnJvb3RSZWNvcmQoKS5jaGlsZHJlbiwgbnVsbCwgZmluZFJlY29yZFRvUmV2ZWFs
KTsKIAogICAgICAgICAvLyBUaGUgcmVjb3JkIGVuZHMgYmVmb3JlIHRoZSB3aW5kb3cgbGVmdCBi
b3VuZCBzbyBzY3JvbGwgdG8gdGhlIHRvcC4KICAgICAgICAgaWYgKCFyZWNvcmRUb1JldmVhbCkg
ewpAQCAtNzMzLDkgKzczOCwyMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICB0aGlzLl9y
ZXZlYWxSZWNvcmQocmVjb3JkVG9SZXZlYWwpOworICAgIH0sCisKKyAgICBfcmV2ZWFsUmVjb3Jk
OiBmdW5jdGlvbihyZWNvcmRUb1JldmVhbCkKKyAgICB7CiAgICAgICAgIC8vIEV4cGFuZCBhbGwg
YW5jZXN0b3JzLgotICAgICAgICBmb3IgKHZhciBwYXJlbnQgPSByZWNvcmRUb1JldmVhbC5wYXJl
bnQ7IHBhcmVudCAhPT0gdGhpcy5fcm9vdFJlY29yZCgpOyBwYXJlbnQgPSBwYXJlbnQucGFyZW50
KQorICAgICAgICB2YXIgdHJlZVVwZGF0ZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgcGFy
ZW50ID0gcmVjb3JkVG9SZXZlYWwucGFyZW50OyBwYXJlbnQgIT09IHRoaXMuX3Jvb3RSZWNvcmQo
KTsgcGFyZW50ID0gcGFyZW50LnBhcmVudCkgeworICAgICAgICAgICAgdHJlZVVwZGF0ZWQgPSB0
cmVlVXBkYXRlZCB8fCBwYXJlbnQuY29sbGFwc2VkOwogICAgICAgICAgICAgcGFyZW50LmNvbGxh
cHNlZCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmICh0cmVlVXBkYXRlZCkKKyAgICAg
ICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaCh0cnVlKTsKKworICAgICAgICB2YXIgcmVjb3Jk
c0luV2luZG93ID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuZmlsdGVyZWRSZWNvcmRzKCk7CiAg
ICAgICAgIHZhciBpbmRleCA9IHJlY29yZHNJbldpbmRvdy5pbmRleE9mKHJlY29yZFRvUmV2ZWFs
KTsKICAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3AgPSBpbmRleCAqIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJvd0hlaWdodDsKICAgICB9LApAQCAtODIyLDYgKzgz
OSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5faXRlbXNHcmFwaHNFbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9ncmFwaFJvd3NFbGVt
ZW50LCB0aGlzLl9ib3R0b21HYXBFbGVtZW50KTsKICAgICAgICAgdGhpcy5faXRlbXNHcmFwaHNF
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2V4cGFuZEVsZW1lbnRzKTsKICAgICAgICAgdGhpcy5f
YWRqdXN0U2Nyb2xsUG9zaXRpb24oKHJlY29yZHNJbldpbmRvdy5sZW5ndGggKyB0aGlzLl9oZWFk
ZXJMaW5lQ291bnQpICogcm93SGVpZ2h0KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlU2VhcmNoUmVz
dWx0cyhmYWxzZSk7CiAKICAgICAgICAgcmV0dXJuIHJlY29yZHNJbldpbmRvdy5sZW5ndGg7CiAg
ICAgfSwKQEAgLTk5MSw2ICsxMDA5LDEzNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSBPYmplY3QudmFsdWVz
KGNhdGVnb3JpZXMpLm1hcChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5j
cmVhdGVTdHlsZVJ1bGVGb3JDYXRlZ29yeSkuam9pbigiXG4iKTsKICAgICAgICAgZG9jdW1lbnQu
aGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAgfSwKKworICAgIGp1bXBUb05leHRTZWFyY2hS
ZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVzdWx0
cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3NlYXJjaFJlc3VsdHMuaW5kZXhPZih0aGlzLl9zZWxl
Y3RlZFNlYXJjaFJlc3VsdCkgKyAxOworICAgICAgICB0aGlzLl9zZWxlY3RTZWFyY2hSZXN1bHQo
aW5kZXggJSB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCk7CisgICAgICAgIHRoaXMuX2hpZ2hs
aWdodFNlbGVjdGVkU2VhcmNoUmVzdWx0KHRydWUpOworICAgIH0sCisKKyAgICBqdW1wVG9QcmV2
aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9z
ZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fc2VhcmNoUmVzdWx0cy5pbmRleE9m
KHRoaXMuX3NlbGVjdGVkU2VhcmNoUmVzdWx0KSArIHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3Ro
IC0gMTsKKyAgICAgICAgdGhpcy5fc2VsZWN0U2VhcmNoUmVzdWx0KGluZGV4ICUgdGhpcy5fc2Vh
cmNoUmVzdWx0cy5sZW5ndGgpOworICAgICAgICB0aGlzLl9oaWdobGlnaHRTZWxlY3RlZFNlYXJj
aFJlc3VsdCh0cnVlKTsKKyAgICB9LAorCisgICAgX3NlbGVjdFNlYXJjaFJlc3VsdDogZnVuY3Rp
b24oaW5kZXgpCisgICAgeworICAgICAgICB0aGlzLl9zZWxlY3RlZFNlYXJjaFJlc3VsdCA9IHRo
aXMuX3NlYXJjaFJlc3VsdHNbaW5kZXhdOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29u
dHJvbGxlci51cGRhdGVDdXJyZW50TWF0Y2hJbmRleChpbmRleCwgdGhpcyk7CisgICAgfSwKKwor
ICAgIF9oaWdobGlnaHRTZWxlY3RlZFNlYXJjaFJlc3VsdDogZnVuY3Rpb24ocmV2ZWFsUmVjb3Jk
KQorICAgIHsKKyAgICAgICAgdGhpcy5fY2xlYXJIaWdobGlnaHQoKTsKKyAgICAgICAgaWYgKHRo
aXMuX3NlYXJjaEZpbHRlckVuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dmFyIHJlY29yZCA9IHRoaXMuX3NlbGVjdGVkU2VhcmNoUmVzdWx0OworICAgICAgICBpZiAoIXJl
Y29yZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBlbGVtZW50ID0g
dGhpcy5fc2lkZWJhckxpc3RFbGVtZW50LmZpcnN0Q2hpbGQ7IGVsZW1lbnQ7IGVsZW1lbnQgPSBl
bGVtZW50Lm5leHRTaWJsaW5nKSB7CisgICAgICAgICAgICBpZiAoZWxlbWVudC5yb3cuX3JlY29y
ZCA9PT0gcmVjb3JkKSB7CisgICAgICAgICAgICAgICAgZWxlbWVudC5yb3cuaGlnaGxpZ2h0KHRo
aXMuX3NlYXJjaFJlZ0V4cCwgdGhpcy5faGlnaGxpZ2h0RG9tQ2hhbmdlcyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHJl
dmVhbFJlY29yZCkKKyAgICAgICAgICAgIHRoaXMuX3JldmVhbFJlY29yZChyZWNvcmQpOworICAg
IH0sCisKKyAgICBfY2xlYXJIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdl
Ykluc3BlY3Rvci5yZXZlcnREb21DaGFuZ2VzKHRoaXMuX2hpZ2hsaWdodERvbUNoYW5nZXMpOwor
ICAgICAgICB0aGlzLl9oaWdobGlnaHREb21DaGFuZ2VzID0gW107CisgICAgfSwKKworICAgIF91
cGRhdGVTZWFyY2hSZXN1bHRzOiBmdW5jdGlvbihyZXZlYWxSZWNvcmQpCisgICAgeworICAgICAg
ICB2YXIgc2VsZWN0ZWRTZWFyY2hSZXN1bHQgPSB0aGlzLl9zZWxlY3RlZFNlYXJjaFJlc3VsdDsK
KyAgICAgICAgdGhpcy5fY2xlYXJTZWFyY2hSZXN1bHRzKCk7CisKKyAgICAgICAgaWYgKHRoaXMu
X3NlYXJjaEZpbHRlckVuYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYg
KCF0aGlzLl9zZWFyY2hSZWdFeHApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFy
IG1hdGNoZXMgPSBbXTsKKyAgICAgICAgdmFyIHByZXNlbnRhdGlvbk1vZGVsID0gdGhpcy5fcHJl
c2VudGF0aW9uTW9kZWw7CisgICAgICAgIHZhciBzZWFyY2hGaWx0ZXIgPSB0aGlzLl9zZWFyY2hG
aWx0ZXI7CisgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWNvcmQocmVjb3JkKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAocHJlc2VudGF0aW9uTW9kZWwuaXNWaXNpYmxlKHJlY29yZCkgJiYg
c2VhcmNoRmlsdGVyLmFjY2VwdChyZWNvcmQpKQorICAgICAgICAgICAgICAgIG1hdGNoZXMucHVz
aChyZWNvcmQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmZvckFsbFJlY29yZHMocHJl
c2VudGF0aW9uTW9kZWwucm9vdFJlY29yZCgpLmNoaWxkcmVuLCBwcm9jZXNzUmVjb3JkKTsKKwor
ICAgICAgICB2YXIgbWF0Y2hlc0NvdW50ID0gbWF0Y2hlcy5sZW5ndGg7CisgICAgICAgIGlmICht
YXRjaGVzQ291bnQpIHsKKyAgICAgICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMgPSBtYXRjaGVz
OworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRlU2VhcmNo
TWF0Y2hlc0NvdW50KG1hdGNoZXNDb3VudCwgdGhpcyk7CisKKyAgICAgICAgICAgIHZhciBzZWxl
Y3RlZEluZGV4ID0gbWF0Y2hlcy5pbmRleE9mKHNlbGVjdGVkU2VhcmNoUmVzdWx0KTsKKyAgICAg
ICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID09PSAtMSkKKyAgICAgICAgICAgICAgICBzZWxlY3Rl
ZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdFNlYXJjaFJlc3VsdChzZWxlY3Rl
ZEluZGV4KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNo
Q29udHJvbGxlci51cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQoMCwgdGhpcyk7CisKKyAgICAgICAg
dGhpcy5faGlnaGxpZ2h0U2VsZWN0ZWRTZWFyY2hSZXN1bHQocmV2ZWFsUmVjb3JkKTsKKyAgICB9
LAorCisgICAgX2NsZWFyU2VhcmNoUmVzdWx0czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dGhpcy5fY2xlYXJIaWdobGlnaHQoKTsKKyAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IFtd
OworICAgICAgICBkZWxldGUgdGhpcy5fc2VsZWN0ZWRTZWFyY2hSZXN1bHQ7CisgICAgfSwKKwor
ICAgIHNlYXJjaENhbmNlbGVkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9jbGVh
clNlYXJjaFJlc3VsdHMoKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NlYXJjaFJlZ0V4cDsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBj
YW5GaWx0ZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0s
CisKKyAgICBwZXJmb3JtRmlsdGVyOiBmdW5jdGlvbihzZWFyY2hRdWVyeSkKKyAgICB7CisgICAg
ICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJlbW92ZUZpbHRlcih0aGlzLl9zZWFyY2hGaWx0
ZXIpOworICAgICAgICB0aGlzLl9zZWFyY2hGaWx0ZXJFbmFibGVkID0gZmFsc2U7CisgICAgICAg
IHRoaXMuc2VhcmNoQ2FuY2VsZWQoKTsKKyAgICAgICAgaWYgKHNlYXJjaFF1ZXJ5KSB7CisgICAg
ICAgICAgICB0aGlzLl9zZWFyY2hSZWdFeHAgPSBjcmVhdGVQbGFpblRleHRTZWFyY2hSZWdleChz
ZWFyY2hRdWVyeSwgImkiKTsKKyAgICAgICAgICAgIHRoaXMuX3NlYXJjaEZpbHRlckVuYWJsZWQg
PSB0cnVlOworICAgICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRmlsdGVyKHRo
aXMuX3NlYXJjaEZpbHRlcik7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fc2NoZWR1bGVSZWZy
ZXNoKHRydWUpOworICAgIH0sCisKKyAgICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbihzZWFyY2hR
dWVyeSkKKyAgICB7CisgICAgICAgIHRoaXMuX3NlYXJjaFJlZ0V4cCA9IGNyZWF0ZVBsYWluVGV4
dFNlYXJjaFJlZ2V4KHNlYXJjaFF1ZXJ5LCAiaSIpOworICAgICAgICB0aGlzLl91cGRhdGVTZWFy
Y2hSZXN1bHRzKHRydWUpOwogICAgIH0KIH0KIApAQCAtMTE0MCw2ICsxMjg2LDE3IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZExpc3RSb3cucHJvdG90eXBlID0gewogICAgICAgICB9CiAg
ICAgfSwKIAorICAgIGhpZ2hsaWdodDogZnVuY3Rpb24ocmVnRXhwLCBkb21DaGFuZ2VzKQorICAg
IHsKKyAgICAgICAgdmFyIG1hdGNoSW5mbyA9IHRoaXMuX3R5cGVFbGVtZW50LnRleHRDb250ZW50
Lm1hdGNoKHJlZ0V4cCk7CisgICAgICAgIGlmIChtYXRjaEluZm8pCisgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuaGlnaGxpZ2h0U2VhcmNoUmVzdWx0KHRoaXMuX3R5cGVFbGVtZW50LCBtYXRjaElu
Zm8uaW5kZXgsIG1hdGNoSW5mb1swXS5sZW5ndGgsIGRvbUNoYW5nZXMpOworCisgICAgICAgIG1h
dGNoSW5mbyA9IHRoaXMuX2RhdGFFbGVtZW50LnRleHRDb250ZW50Lm1hdGNoKHJlZ0V4cCk7Cisg
ICAgICAgIGlmIChtYXRjaEluZm8pCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0
U2VhcmNoUmVzdWx0KHRoaXMuX2RhdGFFbGVtZW50LCBtYXRjaEluZm8uaW5kZXgsIG1hdGNoSW5m
b1swXS5sZW5ndGgsIGRvbUNoYW5nZXMpOworICAgIH0sCisKICAgICBkaXNwb3NlOiBmdW5jdGlv
bigpCiAgICAgewogICAgICAgICB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVDaGls
ZCh0aGlzLmVsZW1lbnQpOwpAQCAtMTI2MCw3ICsxNDE3LDggQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQ2F0ZWdvcnlGaWx0ZXIgPSBmdW5jdGlvbigpCiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZUNh
dGVnb3J5RmlsdGVyLnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgICAgICog
QHBhcmFtIHshV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkfSBy
ZWNvcmQKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAqLwogICAgIGFjY2VwdDogZnVu
Y3Rpb24ocmVjb3JkKQogICAgIHsKQEAgLTEyODAsMTAgKzE0MzgsMzMgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lSXNMb25nRmlsdGVyID0gZnVuY3Rpb24ocGFuZWwpCiAKIFdlYkluc3BlY3Rvci5U
aW1lbGluZUlzTG9uZ0ZpbHRlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJlY29yZAor
ICAgICAqIEBwYXJhbSB7IVdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJl
Y29yZH0gcmVjb3JkCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgKi8KICAgICBhY2Nl
cHQ6IGZ1bmN0aW9uKHJlY29yZCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYW5lbC5f
c2hvd1Nob3J0RXZlbnRzIHx8IHJlY29yZC5pc0xvbmcoKTsKICAgICB9CiB9CisKKy8qKgorICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbH0gcGFuZWwKKyAqIEBjb25zdHJ1Y3Rv
cgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LkZpbHRlcn0KKyAqLworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2VhcmNoRmlsdGVyID0gZnVuY3Rp
b24ocGFuZWwpCit7CisgICAgdGhpcy5fcGFuZWwgPSBwYW5lbDsKK30KKworV2ViSW5zcGVjdG9y
LlRpbWVsaW5lU2VhcmNoRmlsdGVyLnByb3RvdHlwZSA9IHsKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7IVdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVj
b3JkCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBhY2NlcHQ6IGZ1bmN0
aW9uKHJlY29yZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wYW5lbC5fc2VhcmNoUmVn
RXhwLnRlc3QocmVjb3JkLnRpdGxlKSB8fCB0aGlzLl9wYW5lbC5fc2VhcmNoUmVnRXhwLnRlc3Qo
cmVjb3JkLmRldGFpbHMoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmpz
CmluZGV4IGUwMjRhYTE0OTYzY2E3ZTY3YzBhNGFjOTM1YzZlMThkYzllODJlNTYuLmM0MWNhZmJm
NjFjZGFmNGQxNWRjMzBlZDlkNWYwMzg3MTNiNWI3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9u
TW9kZWwuanMKQEAgLTIyMCwxMyArMjIwLDIzIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNl
bnRhdGlvbk1vZGVsLmNyZWF0ZUV2ZW50RGl2aWRlciA9IGZ1bmN0aW9uKHJlY29yZFR5cGUsCiAK
IFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1v
ZGVsLkZpbHRlcn0gZmlsdGVyCisgICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwuRmlsdGVyfSBmaWx0ZXIKICAgICAgKi8KICAgICBhZGRGaWx0ZXI6
IGZ1bmN0aW9uKGZpbHRlcikKICAgICB7CiAgICAgICAgIHRoaXMuX2ZpbHRlcnMucHVzaChmaWx0
ZXIpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5GaWx0ZXJ9IGZpbHRlcgorICAgICAqLworICAgIHJlbW92
ZUZpbHRlcjogZnVuY3Rpb24oZmlsdGVyKQorICAgIHsKKyAgICAgICAgdmFyIGluZGV4ID0gdGhp
cy5fZmlsdGVycy5pbmRleE9mKGZpbHRlcik7CisgICAgICAgIGlmIChpbmRleCAhPT0gLTEpCisg
ICAgICAgICAgICB0aGlzLl9maWx0ZXJzLnNwbGljZShpbmRleCwgMSk7CisgICAgfSwKKwogICAg
IHJvb3RSZWNvcmQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yb290
UmVjb3JkOwpAQCAtMTA5OCw3ICsxMTA4LDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwuRmlsdGVyID0gZnVuY3Rpb24oKQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
cmVzZW50YXRpb25Nb2RlbC5GaWx0ZXIucHJvdG90eXBlID0gewogICAgIC8qKgotICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkfSByZWNv
cmQKKyAgICAgKiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2Rl
bC5SZWNvcmR9IHJlY29yZAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgICovCiAgICAg
YWNjZXB0OiBmdW5jdGlvbihyZWNvcmQpIHsgcmV0dXJuIGZhbHNlOyB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161703</attachid>
            <date>2012-08-31 08:07:36 -0700</date>
            <delta_ts>2012-09-03 02:54:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95445-20120831190722.patch</filename>
            <type>text/plain</type>
            <size>14991</size>
            <attacher>eustas.bug</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTkxMTE4ODViYmM2YThk
MTYzNmVkODY3NWY5MzkzY2U2ZGE0Mzg4OC4uMWQ4NzA2OGEwNTJhODk2ZDYxNTdlZDE3MzY4OGEz
NWZmZjNhNzJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA4LTMxICBFdWdl
bmUgS2x5dWNobmlrb3YgIDxldXN0YXMuYmlnQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBJbXBsZW1lbnQgc2VhcmNoIGFuZCBmaWx0ZXJpbmcgb24gVGltZWxpbmUgcGFuZWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
ZWQgdGV4dHVhbCBzZWFyY2gvZmlsdGVyaW5nIG9uIFRpbWVsaW5lIHBhbmVsLgorICAgICAgICBG
aXhlZCAicmV2ZWFsUmVjb3JkQXQiIC0gbm93IGl0IHNlYXJjaGVzIHNjYW5zIGFsbCByZWNvcmRz
IGluIHdpbmRvdywKKyAgICAgICAgbm93IG9ubHkgdmlzaWJsZSBvbmVzLiAKKworICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVXaW5kb3dGaWx0ZXIpOgorICAgICAgICBFeHRyYWN0ZWQgZnJv
bSBUaW1lbGluZU92ZXJ2aWV3UGFuZSBjbGFzcy4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUucmV2ZWFs
UmVjb3JkQXQpOgorICAgICAgICBVc2VkIERGUyB0byBzY2FuIHJlY29yZHMuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3JldmVhbFJlY29yZCk6CisgICAg
ICAgIEV4dHJhY3RlZCBjb21tb24gY29kZS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNlYXJjaEZpbHRlcik6CisgICAgICAgIEltcGxlbWVudGVkIHNlYXJjaCBhbmQgZmlsdHJhdGlv
bi4KKwogMjAxMi0wOC0yOSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW05ldyBNdWx0aWNvbHVtbl0gUmVuYW1lIG1ldGhvZHMgdG8gcHJlcGFyZSBmb3IgcHJvcGVy
IHBhZ2luYXRpb24gb2YgY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanMKaW5kZXggNzk3ZGYyMDhi
NTQyOGMyMDc2N2ZiYTA2MDdhN2I2N2NiZjE4MThkOC4uZWNkZmE4MjBmNGU1Njc1OGU3MjhlMjE4
MjcxMGM0MTkyYjJlNjVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzCkBAIC0zMSw3ICszMSw2IEBA
CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQot
ICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLkZp
bHRlcn0KICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWx9IG1vZGVsCiAgKi8K
IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZSA9IGZ1bmN0aW9uKG1vZGVsKQpAQCAt
Mjc0LDE0ICsyNzMsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9
IHJlY29yZAotICAgICAqLwotICAgIGFjY2VwdDogZnVuY3Rpb24ocmVjb3JkKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHJlY29yZC5sYXN0Q2hpbGRFbmRUaW1lID49IHRoaXMuX3dpbmRvd1N0YXJ0
VGltZSAmJiByZWNvcmQuc3RhcnRUaW1lIDw9IHRoaXMuX3dpbmRvd0VuZFRpbWU7Ci0gICAgfSwK
LQogICAgIHdpbmRvd1N0YXJ0VGltZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3dpbmRvd1N0YXJ0VGltZSB8fCB0aGlzLl9tb2RlbC5taW5pbXVtUmVjb3JkVGltZSgp
OwpAQCAtMTIzMiwzICsxMjIzLDI0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUZyYW1lT3ZlcnZp
ZXcucHJvdG90eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVGcmFtZU92ZXJ2aWV3
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CisKKy8q
KgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmV9IHBhbmUKKyAq
IEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNl
bnRhdGlvbk1vZGVsLkZpbHRlcn0KKyAqLworV2ViSW5zcGVjdG9yLlRpbWVsaW5lV2luZG93Rmls
dGVyID0gZnVuY3Rpb24ocGFuZSkKK3sKKyAgICB0aGlzLl9wYW5lID0gcGFuZTsKK30KKworV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lV2luZG93RmlsdGVyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNv
cmR9IHJlY29yZAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgYWNjZXB0
OiBmdW5jdGlvbihyZWNvcmQpCisgICAgeworICAgICAgICByZXR1cm4gcmVjb3JkLmxhc3RDaGls
ZEVuZFRpbWUgPj0gdGhpcy5fcGFuZS5fd2luZG93U3RhcnRUaW1lICYmIHJlY29yZC5zdGFydFRp
bWUgPD0gdGhpcy5fcGFuZS5fd2luZG93RW5kVGltZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggMjFl
Y2NmMTUzNTQ1NzQ2NTU1N2YwODUzM2M5MWI4NzcxNjk4NjBiMy4uOTUzMTYxNmI3ZjkwMmRiZWIy
YjM2Yzc2MmMzOTVmM2M0YWM3NGYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMTQ1LDkgKzE0NSw5IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5fYWxsUmVjb3Jk
c0NvdW50ID0gMDsKIAotICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZpbHRlcih0aGlz
Ll9vdmVydmlld1BhbmUpOworICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZpbHRlcihu
ZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lV2luZG93RmlsdGVyKHRoaXMuX292ZXJ2aWV3UGFuZSkp
OwogICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZpbHRlcihuZXcgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lQ2F0ZWdvcnlGaWx0ZXIoKSk7IAotICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVs
LmFkZEZpbHRlcihuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lSXNMb25nRmlsdGVyKHRoaXMpKTsg
CisgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRmlsdGVyKG5ldyBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVJc0xvbmdGaWx0ZXIodGhpcykpOwogfQogCiAvLyBEZWZpbmUgcm93IGhlaWdodCwg
c2hvdWxkIGJlIGluIHN5bmMgd2l0aCBzdHlsZXMgZm9yIHRpbWVsaW5lIGdyYXBocy4KQEAgLTcx
NCwxOCArNzE0LDE5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsK
IAogICAgIHJldmVhbFJlY29yZEF0OiBmdW5jdGlvbih0aW1lKQogICAgIHsKLSAgICAgICAgdmFy
IHJlY29yZHNJbldpbmRvdyA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmZpbHRlcmVkUmVjb3Jk
cygpOwogICAgICAgICB2YXIgcmVjb3JkVG9SZXZlYWw7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcmVjb3Jkc0luV2luZG93Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgcmVj
b3JkID0gcmVjb3Jkc0luV2luZG93W2ldOworICAgICAgICBmdW5jdGlvbiBmaW5kUmVjb3JkVG9S
ZXZlYWwocmVjb3JkKQorICAgICAgICB7CiAgICAgICAgICAgICBpZiAocmVjb3JkLmNvbnRhaW5z
VGltZSh0aW1lKSkgewogICAgICAgICAgICAgICAgIHJlY29yZFRvUmV2ZWFsID0gcmVjb3JkOwot
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmVjb3JkIGNvbnRhaW5p
bmcgdGhlIHRpbWUgdGhhbiB1c2UgdGhlIGxhdGVzdCBvbmUgYmVmb3JlIHRoYXQgdGltZS4KICAg
ICAgICAgICAgIGlmICghcmVjb3JkVG9SZXZlYWwgfHwgcmVjb3JkLmVuZFRpbWUgPCB0aW1lICYm
IHJlY29yZFRvUmV2ZWFsLmVuZFRpbWUgPCByZWNvcmQuZW5kVGltZSkKICAgICAgICAgICAgICAg
ICByZWNvcmRUb1JldmVhbCA9IHJlY29yZDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5m
b3JBbGxSZWNvcmRzKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJvb3RSZWNvcmQoKS5jaGlsZHJl
biwgbnVsbCwgZmluZFJlY29yZFRvUmV2ZWFsKTsKIAogICAgICAgICAvLyBUaGUgcmVjb3JkIGVu
ZHMgYmVmb3JlIHRoZSB3aW5kb3cgbGVmdCBib3VuZCBzbyBzY3JvbGwgdG8gdGhlIHRvcC4KICAg
ICAgICAgaWYgKCFyZWNvcmRUb1JldmVhbCkgewpAQCAtNzMzLDkgKzczNCwyMSBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAorICAgICAgICB0aGlzLl9yZXZlYWxSZWNvcmQocmVjb3JkVG9SZXZlYWwpOwor
ICAgIH0sCisKKyAgICBfcmV2ZWFsUmVjb3JkOiBmdW5jdGlvbihyZWNvcmRUb1JldmVhbCkKKyAg
ICB7CiAgICAgICAgIC8vIEV4cGFuZCBhbGwgYW5jZXN0b3JzLgotICAgICAgICBmb3IgKHZhciBw
YXJlbnQgPSByZWNvcmRUb1JldmVhbC5wYXJlbnQ7IHBhcmVudCAhPT0gdGhpcy5fcm9vdFJlY29y
ZCgpOyBwYXJlbnQgPSBwYXJlbnQucGFyZW50KQorICAgICAgICB2YXIgdHJlZVVwZGF0ZWQgPSBm
YWxzZTsKKyAgICAgICAgZm9yICh2YXIgcGFyZW50ID0gcmVjb3JkVG9SZXZlYWwucGFyZW50OyBw
YXJlbnQgIT09IHRoaXMuX3Jvb3RSZWNvcmQoKTsgcGFyZW50ID0gcGFyZW50LnBhcmVudCkgewor
ICAgICAgICAgICAgdHJlZVVwZGF0ZWQgPSB0cmVlVXBkYXRlZCB8fCBwYXJlbnQuY29sbGFwc2Vk
OwogICAgICAgICAgICAgcGFyZW50LmNvbGxhcHNlZCA9IGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIGlmICh0cmVlVXBkYXRlZCkKKyAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaCh0
cnVlKTsKKworICAgICAgICB2YXIgcmVjb3Jkc0luV2luZG93ID0gdGhpcy5fcHJlc2VudGF0aW9u
TW9kZWwuZmlsdGVyZWRSZWNvcmRzKCk7CiAgICAgICAgIHZhciBpbmRleCA9IHJlY29yZHNJbldp
bmRvdy5pbmRleE9mKHJlY29yZFRvUmV2ZWFsKTsKICAgICAgICAgdGhpcy5fY29udGFpbmVyRWxl
bWVudC5zY3JvbGxUb3AgPSBpbmRleCAqIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJvd0hl
aWdodDsKICAgICB9LApAQCAtODIyLDYgKzgzNSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faXRlbXNHcmFwaHNFbGVtZW50Lmluc2Vy
dEJlZm9yZSh0aGlzLl9ncmFwaFJvd3NFbGVtZW50LCB0aGlzLl9ib3R0b21HYXBFbGVtZW50KTsK
ICAgICAgICAgdGhpcy5faXRlbXNHcmFwaHNFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2V4cGFu
ZEVsZW1lbnRzKTsKICAgICAgICAgdGhpcy5fYWRqdXN0U2Nyb2xsUG9zaXRpb24oKHJlY29yZHNJ
bldpbmRvdy5sZW5ndGggKyB0aGlzLl9oZWFkZXJMaW5lQ291bnQpICogcm93SGVpZ2h0KTsKKyAg
ICAgICAgdGhpcy5fdXBkYXRlU2VhcmNoUmVzdWx0cyhmYWxzZSk7CiAKICAgICAgICAgcmV0dXJu
IHJlY29yZHNJbldpbmRvdy5sZW5ndGg7CiAgICAgfSwKQEAgLTk5MSw2ICsxMDA1LDEzOCBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgc3R5bGUu
dGV4dENvbnRlbnQgPSBPYmplY3QudmFsdWVzKGNhdGVnb3JpZXMpLm1hcChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5jcmVhdGVTdHlsZVJ1bGVGb3JDYXRlZ29yeSkuam9p
bigiXG4iKTsKICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAg
fSwKKworICAgIGp1bXBUb05leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2p1bXBUb0luY2lkZW50UmVjb3JkKDEpOworICAgIH0sCisKKyAgICBqdW1wVG9Q
cmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fanVt
cFRvSW5jaWRlbnRSZWNvcmQoLTEpOworICAgIH0sCisKKyAgICBfanVtcFRvSW5jaWRlbnRSZWNv
cmQ6IGZ1bmN0aW9uKG9mZnNldCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVz
dWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3NlYXJjaFJlc3VsdHMuaW5kZXhPZih0aGlzLl9z
ZWxlY3RlZFNlYXJjaFJlc3VsdCkgKyB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCArIG9mZnNl
dDsKKyAgICAgICAgdGhpcy5fc2VsZWN0U2VhcmNoUmVzdWx0KGluZGV4ICUgdGhpcy5fc2VhcmNo
UmVzdWx0cy5sZW5ndGgpOworICAgICAgICB0aGlzLl9oaWdobGlnaHRTZWxlY3RlZFNlYXJjaFJl
c3VsdCh0cnVlKTsKKyAgICB9LAorCisgICAgX3NlbGVjdFNlYXJjaFJlc3VsdDogZnVuY3Rpb24o
aW5kZXgpCisgICAgeworICAgICAgICB0aGlzLl9zZWxlY3RlZFNlYXJjaFJlc3VsdCA9IHRoaXMu
X3NlYXJjaFJlc3VsdHNbaW5kZXhdOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJv
bGxlci51cGRhdGVDdXJyZW50TWF0Y2hJbmRleChpbmRleCwgdGhpcyk7CisgICAgfSwKKworICAg
IF9oaWdobGlnaHRTZWxlY3RlZFNlYXJjaFJlc3VsdDogZnVuY3Rpb24ocmV2ZWFsUmVjb3JkKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fY2xlYXJIaWdobGlnaHQoKTsKKyAgICAgICAgaWYgKHRoaXMu
X3NlYXJjaEZpbHRlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgcmVjb3Jk
ID0gdGhpcy5fc2VsZWN0ZWRTZWFyY2hSZXN1bHQ7CisgICAgICAgIGlmICghcmVjb3JkKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAodmFyIGVsZW1lbnQgPSB0aGlzLl9zaWRl
YmFyTGlzdEVsZW1lbnQuZmlyc3RDaGlsZDsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQubmV4
dFNpYmxpbmcpIHsKKyAgICAgICAgICAgIGlmIChlbGVtZW50LnJvdy5fcmVjb3JkID09PSByZWNv
cmQpIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50LnJvdy5oaWdobGlnaHQodGhpcy5fc2VhcmNo
UmVnRXhwLCB0aGlzLl9oaWdobGlnaHREb21DaGFuZ2VzKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocmV2ZWFsUmVjb3Jk
KQorICAgICAgICAgICAgdGhpcy5fcmV2ZWFsUmVjb3JkKHJlY29yZCk7CisgICAgfSwKKworICAg
IF9jbGVhckhpZ2hsaWdodDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2hp
Z2hsaWdodERvbUNoYW5nZXMpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucmV2ZXJ0RG9tQ2hh
bmdlcyh0aGlzLl9oaWdobGlnaHREb21DaGFuZ2VzKTsKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0
RG9tQ2hhbmdlcyA9IFtdOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Jvb2xl
YW59IHJldmVhbFJlY29yZAorICAgICAqLworICAgIF91cGRhdGVTZWFyY2hSZXN1bHRzOiBmdW5j
dGlvbihyZXZlYWxSZWNvcmQpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0ZWRTZWFyY2hSZXN1
bHQgPSB0aGlzLl9zZWxlY3RlZFNlYXJjaFJlc3VsdDsKKyAgICAgICAgdGhpcy5fY2xlYXJTZWFy
Y2hSZXN1bHRzKCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3NlYXJjaEZpbHRlcikKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlZ0V4cCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB2YXIgbWF0Y2hlcyA9IFtdOworICAgICAgICB2YXIgcHJl
c2VudGF0aW9uTW9kZWwgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbDsKKyAgICAgICAgdmFyIHNl
YXJjaFJlZ0V4cCA9IHRoaXMuX3NlYXJjaFJlZ0V4cDsKKyAgICAgICAgZnVuY3Rpb24gcHJvY2Vz
c1JlY29yZChyZWNvcmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwcmVzZW50YXRpb25N
b2RlbC5pc1Zpc2libGUocmVjb3JkKSAmJiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0
Um93LnRlc3RDb250ZW50TWF0Y2hpbmcocmVjb3JkLCBzZWFyY2hSZWdFeHApKQorICAgICAgICAg
ICAgICAgIG1hdGNoZXMucHVzaChyZWNvcmQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LmZvckFsbFJlY29yZHMocHJlc2VudGF0aW9uTW9kZWwucm9vdFJlY29yZCgpLmNoaWxkcmVuLCBw
cm9jZXNzUmVjb3JkKTsKKworICAgICAgICB2YXIgbWF0Y2hlc0NvdW50ID0gbWF0Y2hlcy5sZW5n
dGg7CisgICAgICAgIGlmIChtYXRjaGVzQ291bnQpIHsKKyAgICAgICAgICAgIHRoaXMuX3NlYXJj
aFJlc3VsdHMgPSBtYXRjaGVzOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENvbnRy
b2xsZXIudXBkYXRlU2VhcmNoTWF0Y2hlc0NvdW50KG1hdGNoZXNDb3VudCwgdGhpcyk7CisKKyAg
ICAgICAgICAgIHZhciBzZWxlY3RlZEluZGV4ID0gbWF0Y2hlcy5pbmRleE9mKHNlbGVjdGVkU2Vh
cmNoUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID09PSAtMSkKKyAgICAg
ICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdFNl
YXJjaFJlc3VsdChzZWxlY3RlZEluZGV4KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBX
ZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQoMCwg
dGhpcyk7CisKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VsZWN0ZWRTZWFyY2hSZXN1bHQocmV2
ZWFsUmVjb3JkKTsKKyAgICB9LAorCisgICAgX2NsZWFyU2VhcmNoUmVzdWx0czogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5fY2xlYXJIaWdobGlnaHQoKTsKKyAgICAgICAgdGhpcy5f
c2VhcmNoUmVzdWx0cyA9IFtdOworICAgICAgICBkZWxldGUgdGhpcy5fc2VsZWN0ZWRTZWFyY2hS
ZXN1bHQ7CisgICAgfSwKKworICAgIHNlYXJjaENhbmNlbGVkOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB0aGlzLl9jbGVhclNlYXJjaFJlc3VsdHMoKTsKKyAgICAgICAgZGVsZXRlIHRoaXMu
X3NlYXJjaFJlZ0V4cDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVh
bn0KKyAgICAgKi8KKyAgICBjYW5GaWx0ZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0sCisKKyAgICBwZXJmb3JtRmlsdGVyOiBmdW5jdGlvbihzZWFyY2hR
dWVyeSkKKyAgICB7CisgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJlbW92ZUZpbHRl
cih0aGlzLl9zZWFyY2hGaWx0ZXIpOworICAgICAgICBkZWxldGUgdGhpcy5fc2VhcmNoRmlsdGVy
OworICAgICAgICB0aGlzLnNlYXJjaENhbmNlbGVkKCk7CisgICAgICAgIGlmIChzZWFyY2hRdWVy
eSkgeworICAgICAgICAgICAgdGhpcy5fc2VhcmNoRmlsdGVyID0gbmV3IFdlYkluc3BlY3Rvci5U
aW1lbGluZVNlYXJjaEZpbHRlcihjcmVhdGVQbGFpblRleHRTZWFyY2hSZWdleChzZWFyY2hRdWVy
eSwgImkiKSk7CisgICAgICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRGaWx0ZXIo
dGhpcy5fc2VhcmNoRmlsdGVyKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9zY2hlZHVsZVJl
ZnJlc2godHJ1ZSk7CisgICAgfSwKKworICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHNlYXJj
aFF1ZXJ5KQorICAgIHsKKyAgICAgICAgdGhpcy5fc2VhcmNoUmVnRXhwID0gY3JlYXRlUGxhaW5U
ZXh0U2VhcmNoUmVnZXgoc2VhcmNoUXVlcnksICJpIik7CisgICAgICAgIHRoaXMuX3VwZGF0ZVNl
YXJjaFJlc3VsdHModHJ1ZSk7CiAgICAgfQogfQogCkBAIC0xMTQwLDYgKzEyODYsMTMgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
ICAgICB9LAogCisgICAgaGlnaGxpZ2h0OiBmdW5jdGlvbihyZWdFeHAsIGRvbUNoYW5nZXMpCisg
ICAgeworICAgICAgICB2YXIgbWF0Y2hJbmZvID0gdGhpcy5lbGVtZW50LnRleHRDb250ZW50Lm1h
dGNoKHJlZ0V4cCk7CisgICAgICAgIGlmIChtYXRjaEluZm8pCisgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuaGlnaGxpZ2h0U2VhcmNoUmVzdWx0KHRoaXMuZWxlbWVudCwgbWF0Y2hJbmZvLmluZGV4
LCBtYXRjaEluZm9bMF0ubGVuZ3RoLCBkb21DaGFuZ2VzKTsKKyAgICB9LAorCiAgICAgZGlzcG9z
ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQu
cmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTsKQEAgLTExNDcsNiArMTMwMCwxNCBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93LnByb3RvdHlwZSA9IHsKIH0KIAogLyoqCisgKiBA
cGFyYW0geyFXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJl
Y29yZAorICogQHBhcmFtIHshUmVnRXhwfSByZWdFeHAKKyAqLworV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkTGlzdFJvdy50ZXN0Q29udGVudE1hdGNoaW5nID0gZnVuY3Rpb24ocmVjb3JkLCBy
ZWdFeHApIHsKKyAgICByZXR1cm4gcmVnRXhwLnRlc3QocmVjb3JkLnRpdGxlKSB8fCByZWdFeHAu
dGVzdChyZWNvcmQuZGV0YWlscygpKTsKK30KKworLyoqCiAgKiBAY29uc3RydWN0b3IKICAqLwog
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3cgPSBmdW5jdGlvbihncmFwaENvbnRh
aW5lciwgc2NoZWR1bGVSZWZyZXNoKQpAQCAtMTI2MCw3ICsxNDIxLDggQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lQ2F0ZWdvcnlGaWx0ZXIgPSBmdW5jdGlvbigpCiAKIFdlYkluc3BlY3Rvci5UaW1l
bGluZUNhdGVnb3J5RmlsdGVyLnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisg
ICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVj
b3JkfSByZWNvcmQKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAqLwogICAgIGFjY2Vw
dDogZnVuY3Rpb24ocmVjb3JkKQogICAgIHsKQEAgLTEyODAsMTAgKzE0NDIsMzMgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lSXNMb25nRmlsdGVyID0gZnVuY3Rpb24ocGFuZWwpCiAKIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZUlzTG9uZ0ZpbHRlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJl
Y29yZAorICAgICAqIEBwYXJhbSB7IVdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1v
ZGVsLlJlY29yZH0gcmVjb3JkCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgKi8KICAg
ICBhY2NlcHQ6IGZ1bmN0aW9uKHJlY29yZCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9w
YW5lbC5fc2hvd1Nob3J0RXZlbnRzIHx8IHJlY29yZC5pc0xvbmcoKTsKICAgICB9CiB9CisKKy8q
KgorICogQHBhcmFtIHshUmVnRXhwfSByZWdFeHAKKyAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxl
bWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLkZpbHRlcn0KKyAq
LworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2VhcmNoRmlsdGVyID0gZnVuY3Rpb24ocmVnRXhwKQor
eworICAgIHRoaXMuX3JlZ0V4cCA9IHJlZ0V4cDsKK30KKworV2ViSW5zcGVjdG9yLlRpbWVsaW5l
U2VhcmNoRmlsdGVyLnByb3RvdHlwZSA9IHsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IVdl
Ykluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgICAg
ICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBhY2NlcHQ6IGZ1bmN0aW9uKHJlY29y
ZCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0
Um93LnRlc3RDb250ZW50TWF0Y2hpbmcocmVjb3JkLCB0aGlzLl9yZWdFeHApOworICAgIH0KK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQ
cmVzZW50YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qcwppbmRleCBlMDI0YWExNDk2M2NhN2U2N2MwYTRh
YzkzNWM2ZTE4ZGM5ZTgyZTU2Li5jNDFjYWZiZjYxY2RhZjRkMTVkYzMwZWQ5ZDVmMDM4NzEzYjVi
N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lUHJlc2VudGF0aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0yMjAsMTMgKzIyMCwyMyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5jcmVhdGVFdmVudERpdmlk
ZXIgPSBmdW5jdGlvbihyZWNvcmRUeXBlLAogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5GaWx0ZXJ9IGZpbHRlcgorICAgICAqIEBw
YXJhbSB7IVdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLkZpbHRlcn0gZmls
dGVyCiAgICAgICovCiAgICAgYWRkRmlsdGVyOiBmdW5jdGlvbihmaWx0ZXIpCiAgICAgewogICAg
ICAgICB0aGlzLl9maWx0ZXJzLnB1c2goZmlsdGVyKTsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuRmlsdGVy
fSBmaWx0ZXIKKyAgICAgKi8KKyAgICByZW1vdmVGaWx0ZXI6IGZ1bmN0aW9uKGZpbHRlcikKKyAg
ICB7CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbHRlcnMuaW5kZXhPZihmaWx0ZXIpOwor
ICAgICAgICBpZiAoaW5kZXggIT09IC0xKQorICAgICAgICAgICAgdGhpcy5fZmlsdGVycy5zcGxp
Y2UoaW5kZXgsIDEpOworICAgIH0sCisKICAgICByb290UmVjb3JkOiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fcm9vdFJlY29yZDsKQEAgLTEwOTgsNyArMTEwOCw4IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLkZpbHRlciA9IGZ1bmN0aW9u
KCkKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuRmlsdGVyLnByb3Rv
dHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZVBy
ZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgICAgICogQHBhcmFtIHshV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQKKyAgICAgKiBAcmV0
dXJuIHtib29sZWFufQogICAgICAqLwogICAgIGFjY2VwdDogZnVuY3Rpb24ocmVjb3JkKSB7IHJl
dHVybiBmYWxzZTsgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC91dGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L3V0aWxpdGllcy5qcwppbmRleCBkNDlkNTJmZTk4YWM1NDdlODAwNDJkMGE4YTdiMmVlNjRlODQw
ZTA0Li5jYTcxZmM5YmJmYmU0MDRiNmI0ZjQxMWQ3MjRjM2I2Mzc3ZWUzZTg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpAQCAtNjMxLDcg
KzYzMSw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVNlYXJjaFJlZ2V4KHF1ZXJ5LCBjYXNlU2Vuc2l0aXZl
LCBpc1JlZ2V4KQogLyoqCiAgKiBAcGFyYW0ge3N0cmluZ30gcXVlcnkKICAqIEBwYXJhbSB7c3Ry
aW5nPX0gZmxhZ3MKLSAqIEByZXR1cm4ge1JlZ0V4cH0KKyAqIEByZXR1cm4geyFSZWdFeHB9CiAg
Ki8KIGZ1bmN0aW9uIGNyZWF0ZVBsYWluVGV4dFNlYXJjaFJlZ2V4KHF1ZXJ5LCBmbGFncykKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161887</attachid>
            <date>2012-09-03 02:54:10 -0700</date>
            <delta_ts>2012-09-07 03:04:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95445-20120903135353.patch</filename>
            <type>text/plain</type>
            <size>15003</size>
            <attacher>eustas.bug</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg3YWNjYzRiNDI5N2Zh
ZWYzMTcwOTEwZjQxZGZiMWI4NjhkMTkxNy4uZmM3ZjU0MTE4Nzg1YmE3Y2ViMzYwNGY1MjNhMTFi
NzU3ZDI2YjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA5LTAzICBFdWdl
bmUgS2x5dWNobmlrb3YgIDxldXN0YXMuYmlnQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBJbXBsZW1lbnQgc2VhcmNoIGFuZCBmaWx0ZXJpbmcgb24gVGltZWxpbmUgcGFuZWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
ZWQgdGV4dHVhbCBzZWFyY2gvZmlsdGVyaW5nIG9uIFRpbWVsaW5lIHBhbmVsLgorICAgICAgICBG
aXhlZCAicmV2ZWFsUmVjb3JkQXQiIC0gbm93IGl0IHNlYXJjaGVzIHNjYW5zIGFsbCByZWNvcmRz
IGluIHdpbmRvdywKKyAgICAgICAgbm93IG9ubHkgdmlzaWJsZSBvbmVzLiAKKworICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVXaW5kb3dGaWx0ZXIpOgorICAgICAgICBFeHRyYWN0ZWQgZnJv
bSBUaW1lbGluZU92ZXJ2aWV3UGFuZSBjbGFzcy4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUucmV2ZWFs
UmVjb3JkQXQpOgorICAgICAgICBVc2VkIERGUyB0byBzY2FuIHJlY29yZHMuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3JldmVhbFJlY29yZCk6CisgICAg
ICAgIEV4dHJhY3RlZCBjb21tb24gY29kZS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNlYXJjaEZpbHRlcik6CisgICAgICAgIEltcGxlbWVudGVkIHNlYXJjaCBhbmQgZmlsdHJhdGlv
bi4KKwogMjAxMi0wOC0zMCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gUHV0IGNvbXBvc2l0b3IgY2xpZW50IGludGVyZmFjZXMgaW4g
c2VwYXJhdGUgaGVhZGVycywgbm9ybWFsaXplIG5hbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanMKaW5k
ZXggNzk3ZGYyMDhiNTQyOGMyMDc2N2ZiYTA2MDdhN2I2N2NiZjE4MThkOC4uZWNkZmE4MjBmNGU1
Njc1OGU3MjhlMjE4MjcxMGM0MTkyYjJlNjVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzCkBAIC0z
MSw3ICszMSw2IEBACiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5WaWV3fQotICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRh
dGlvbk1vZGVsLkZpbHRlcn0KICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWx9
IG1vZGVsCiAgKi8KIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZSA9IGZ1bmN0aW9u
KG1vZGVsKQpAQCAtMjc0LDE0ICsyNzMsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmll
d1BhbmUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICB9LAogCi0g
ICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25N
b2RlbC5SZWNvcmR9IHJlY29yZAotICAgICAqLwotICAgIGFjY2VwdDogZnVuY3Rpb24ocmVjb3Jk
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlY29yZC5sYXN0Q2hpbGRFbmRUaW1lID49IHRoaXMu
X3dpbmRvd1N0YXJ0VGltZSAmJiByZWNvcmQuc3RhcnRUaW1lIDw9IHRoaXMuX3dpbmRvd0VuZFRp
bWU7Ci0gICAgfSwKLQogICAgIHdpbmRvd1N0YXJ0VGltZTogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3dpbmRvd1N0YXJ0VGltZSB8fCB0aGlzLl9tb2RlbC5taW5pbXVt
UmVjb3JkVGltZSgpOwpAQCAtMTIzMiwzICsxMjIzLDI0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZUZyYW1lT3ZlcnZpZXcucHJvdG90eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVG
cmFtZU92ZXJ2aWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90
b3R5cGU7CisKKy8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1Bh
bmV9IHBhbmUKKyAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5U
aW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLkZpbHRlcn0KKyAqLworV2ViSW5zcGVjdG9yLlRpbWVs
aW5lV2luZG93RmlsdGVyID0gZnVuY3Rpb24ocGFuZSkKK3sKKyAgICB0aGlzLl9wYW5lID0gcGFu
ZTsKK30KKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lV2luZG93RmlsdGVyLnByb3RvdHlwZSA9IHsK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRp
b25Nb2RlbC5SZWNvcmR9IHJlY29yZAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICov
CisgICAgYWNjZXB0OiBmdW5jdGlvbihyZWNvcmQpCisgICAgeworICAgICAgICByZXR1cm4gcmVj
b3JkLmxhc3RDaGlsZEVuZFRpbWUgPj0gdGhpcy5fcGFuZS5fd2luZG93U3RhcnRUaW1lICYmIHJl
Y29yZC5zdGFydFRpbWUgPD0gdGhpcy5fcGFuZS5fd2luZG93RW5kVGltZTsKKyAgICB9Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwu
anMKaW5kZXggMjFlY2NmMTUzNTQ1NzQ2NTU1N2YwODUzM2M5MWI4NzcxNjk4NjBiMy4uOTE4Yzlh
NGViOWVjYjQ0YjgyNTY2NmY5YzU5MmMxOTMyZTRhNDM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMTQ1LDkgKzE0
NSw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgdGhp
cy5fYWxsUmVjb3Jkc0NvdW50ID0gMDsKIAotICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFk
ZEZpbHRlcih0aGlzLl9vdmVydmlld1BhbmUpOworICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVs
LmFkZEZpbHRlcihuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lV2luZG93RmlsdGVyKHRoaXMuX292
ZXJ2aWV3UGFuZSkpOwogICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZpbHRlcihuZXcg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnlGaWx0ZXIoKSk7IAotICAgIHRoaXMuX3ByZXNl
bnRhdGlvbk1vZGVsLmFkZEZpbHRlcihuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lSXNMb25nRmls
dGVyKHRoaXMpKTsgCisgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRmlsdGVyKG5ldyBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVJc0xvbmdGaWx0ZXIodGhpcykpOwogfQogCiAvLyBEZWZpbmUg
cm93IGhlaWdodCwgc2hvdWxkIGJlIGluIHN5bmMgd2l0aCBzdHlsZXMgZm9yIHRpbWVsaW5lIGdy
YXBocy4KQEAgLTcxNCwxOCArNzE0LDE5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnBy
b3RvdHlwZSA9IHsKIAogICAgIHJldmVhbFJlY29yZEF0OiBmdW5jdGlvbih0aW1lKQogICAgIHsK
LSAgICAgICAgdmFyIHJlY29yZHNJbldpbmRvdyA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmZp
bHRlcmVkUmVjb3JkcygpOwogICAgICAgICB2YXIgcmVjb3JkVG9SZXZlYWw7Ci0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgcmVjb3Jkc0luV2luZG93Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICB2YXIgcmVjb3JkID0gcmVjb3Jkc0luV2luZG93W2ldOworICAgICAgICBmdW5jdGlvbiBm
aW5kUmVjb3JkVG9SZXZlYWwocmVjb3JkKQorICAgICAgICB7CiAgICAgICAgICAgICBpZiAocmVj
b3JkLmNvbnRhaW5zVGltZSh0aW1lKSkgewogICAgICAgICAgICAgICAgIHJlY29yZFRvUmV2ZWFs
ID0gcmVjb3JkOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmVj
b3JkIGNvbnRhaW5pbmcgdGhlIHRpbWUgdGhhbiB1c2UgdGhlIGxhdGVzdCBvbmUgYmVmb3JlIHRo
YXQgdGltZS4KICAgICAgICAgICAgIGlmICghcmVjb3JkVG9SZXZlYWwgfHwgcmVjb3JkLmVuZFRp
bWUgPCB0aW1lICYmIHJlY29yZFRvUmV2ZWFsLmVuZFRpbWUgPCByZWNvcmQuZW5kVGltZSkKICAg
ICAgICAgICAgICAgICByZWNvcmRUb1JldmVhbCA9IHJlY29yZDsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50
YXRpb25Nb2RlbC5mb3JBbGxSZWNvcmRzKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJvb3RSZWNv
cmQoKS5jaGlsZHJlbiwgbnVsbCwgZmluZFJlY29yZFRvUmV2ZWFsKTsKIAogICAgICAgICAvLyBU
aGUgcmVjb3JkIGVuZHMgYmVmb3JlIHRoZSB3aW5kb3cgbGVmdCBib3VuZCBzbyBzY3JvbGwgdG8g
dGhlIHRvcC4KICAgICAgICAgaWYgKCFyZWNvcmRUb1JldmVhbCkgewpAQCAtNzMzLDkgKzczNCwy
MSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICB0aGlzLl9yZXZlYWxSZWNvcmQocmVjb3Jk
VG9SZXZlYWwpOworICAgIH0sCisKKyAgICBfcmV2ZWFsUmVjb3JkOiBmdW5jdGlvbihyZWNvcmRU
b1JldmVhbCkKKyAgICB7CiAgICAgICAgIC8vIEV4cGFuZCBhbGwgYW5jZXN0b3JzLgotICAgICAg
ICBmb3IgKHZhciBwYXJlbnQgPSByZWNvcmRUb1JldmVhbC5wYXJlbnQ7IHBhcmVudCAhPT0gdGhp
cy5fcm9vdFJlY29yZCgpOyBwYXJlbnQgPSBwYXJlbnQucGFyZW50KQorICAgICAgICB2YXIgdHJl
ZVVwZGF0ZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgcGFyZW50ID0gcmVjb3JkVG9SZXZl
YWwucGFyZW50OyBwYXJlbnQgIT09IHRoaXMuX3Jvb3RSZWNvcmQoKTsgcGFyZW50ID0gcGFyZW50
LnBhcmVudCkgeworICAgICAgICAgICAgdHJlZVVwZGF0ZWQgPSB0cmVlVXBkYXRlZCB8fCBwYXJl
bnQuY29sbGFwc2VkOwogICAgICAgICAgICAgcGFyZW50LmNvbGxhcHNlZCA9IGZhbHNlOworICAg
ICAgICB9CisgICAgICAgIGlmICh0cmVlVXBkYXRlZCkKKyAgICAgICAgICAgIHRoaXMuX3NjaGVk
dWxlUmVmcmVzaCh0cnVlKTsKKworICAgICAgICB2YXIgcmVjb3Jkc0luV2luZG93ID0gdGhpcy5f
cHJlc2VudGF0aW9uTW9kZWwuZmlsdGVyZWRSZWNvcmRzKCk7CiAgICAgICAgIHZhciBpbmRleCA9
IHJlY29yZHNJbldpbmRvdy5pbmRleE9mKHJlY29yZFRvUmV2ZWFsKTsKICAgICAgICAgdGhpcy5f
Y29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3AgPSBpbmRleCAqIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVBhbmVsLnJvd0hlaWdodDsKICAgICB9LApAQCAtODIyLDYgKzgzNSw3IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faXRlbXNHcmFwaHNF
bGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9ncmFwaFJvd3NFbGVtZW50LCB0aGlzLl9ib3R0b21H
YXBFbGVtZW50KTsKICAgICAgICAgdGhpcy5faXRlbXNHcmFwaHNFbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX2V4cGFuZEVsZW1lbnRzKTsKICAgICAgICAgdGhpcy5fYWRqdXN0U2Nyb2xsUG9zaXRp
b24oKHJlY29yZHNJbldpbmRvdy5sZW5ndGggKyB0aGlzLl9oZWFkZXJMaW5lQ291bnQpICogcm93
SGVpZ2h0KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlU2VhcmNoUmVzdWx0cyhmYWxzZSk7CiAKICAg
ICAgICAgcmV0dXJuIHJlY29yZHNJbldpbmRvdy5sZW5ndGg7CiAgICAgfSwKQEAgLTk5MSw2ICsx
MDA1LDEzOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSBPYmplY3QudmFsdWVzKGNhdGVnb3JpZXMpLm1hcChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5jcmVhdGVTdHlsZVJ1bGVGb3JD
YXRlZ29yeSkuam9pbigiXG4iKTsKICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChz
dHlsZSk7CisgICAgfSwKKworICAgIGp1bXBUb05leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHRoaXMuX2p1bXBUb0FkamFjZW50UmVjb3JkKDEpOworICAgIH0sCisK
KyAgICBqdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fanVtcFRvQWRqYWNlbnRSZWNvcmQoLTEpOworICAgIH0sCisKKyAgICBfanVtcFRv
QWRqYWNlbnRSZWNvcmQ6IGZ1bmN0aW9uKG9mZnNldCkKKyAgICB7CisgICAgICAgIGlmICghdGhp
cy5fc2VhcmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3NlYXJjaFJlc3VsdHMuaW5k
ZXhPZih0aGlzLl9zZWxlY3RlZFNlYXJjaFJlc3VsdCkgKyB0aGlzLl9zZWFyY2hSZXN1bHRzLmxl
bmd0aCArIG9mZnNldDsKKyAgICAgICAgdGhpcy5fc2VsZWN0U2VhcmNoUmVzdWx0KGluZGV4ICUg
dGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpOworICAgICAgICB0aGlzLl9oaWdobGlnaHRTZWxl
Y3RlZFNlYXJjaFJlc3VsdCh0cnVlKTsKKyAgICB9LAorCisgICAgX3NlbGVjdFNlYXJjaFJlc3Vs
dDogZnVuY3Rpb24oaW5kZXgpCisgICAgeworICAgICAgICB0aGlzLl9zZWxlY3RlZFNlYXJjaFJl
c3VsdCA9IHRoaXMuX3NlYXJjaFJlc3VsdHNbaW5kZXhdOworICAgICAgICBXZWJJbnNwZWN0b3Iu
c2VhcmNoQ29udHJvbGxlci51cGRhdGVDdXJyZW50TWF0Y2hJbmRleChpbmRleCwgdGhpcyk7Cisg
ICAgfSwKKworICAgIF9oaWdobGlnaHRTZWxlY3RlZFNlYXJjaFJlc3VsdDogZnVuY3Rpb24ocmV2
ZWFsUmVjb3JkKQorICAgIHsKKyAgICAgICAgdGhpcy5fY2xlYXJIaWdobGlnaHQoKTsKKyAgICAg
ICAgaWYgKHRoaXMuX3NlYXJjaEZpbHRlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB2YXIgcmVjb3JkID0gdGhpcy5fc2VsZWN0ZWRTZWFyY2hSZXN1bHQ7CisgICAgICAgIGlmICgh
cmVjb3JkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAodmFyIGVsZW1lbnQg
PSB0aGlzLl9zaWRlYmFyTGlzdEVsZW1lbnQuZmlyc3RDaGlsZDsgZWxlbWVudDsgZWxlbWVudCA9
IGVsZW1lbnQubmV4dFNpYmxpbmcpIHsKKyAgICAgICAgICAgIGlmIChlbGVtZW50LnJvdy5fcmVj
b3JkID09PSByZWNvcmQpIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50LnJvdy5oaWdobGlnaHQo
dGhpcy5fc2VhcmNoUmVnRXhwLCB0aGlzLl9oaWdobGlnaHREb21DaGFuZ2VzKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAo
cmV2ZWFsUmVjb3JkKQorICAgICAgICAgICAgdGhpcy5fcmV2ZWFsUmVjb3JkKHJlY29yZCk7Cisg
ICAgfSwKKworICAgIF9jbGVhckhpZ2hsaWdodDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuX2hpZ2hsaWdodERvbUNoYW5nZXMpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
cmV2ZXJ0RG9tQ2hhbmdlcyh0aGlzLl9oaWdobGlnaHREb21DaGFuZ2VzKTsKKyAgICAgICAgdGhp
cy5faGlnaGxpZ2h0RG9tQ2hhbmdlcyA9IFtdOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge2Jvb2xlYW59IHJldmVhbFJlY29yZAorICAgICAqLworICAgIF91cGRhdGVTZWFyY2hS
ZXN1bHRzOiBmdW5jdGlvbihyZXZlYWxSZWNvcmQpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0
ZWRTZWFyY2hSZXN1bHQgPSB0aGlzLl9zZWxlY3RlZFNlYXJjaFJlc3VsdDsKKyAgICAgICAgdGhp
cy5fY2xlYXJTZWFyY2hSZXN1bHRzKCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3NlYXJjaEZpbHRl
cikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlZ0V4
cCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgbWF0Y2hlcyA9IFtdOworICAg
ICAgICB2YXIgcHJlc2VudGF0aW9uTW9kZWwgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbDsKKyAg
ICAgICAgdmFyIHNlYXJjaFJlZ0V4cCA9IHRoaXMuX3NlYXJjaFJlZ0V4cDsKKyAgICAgICAgZnVu
Y3Rpb24gcHJvY2Vzc1JlY29yZChyZWNvcmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChw
cmVzZW50YXRpb25Nb2RlbC5pc1Zpc2libGUocmVjb3JkKSAmJiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRMaXN0Um93LnRlc3RDb250ZW50TWF0Y2hpbmcocmVjb3JkLCBzZWFyY2hSZWdFeHAp
KQorICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaChyZWNvcmQpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNl
bnRhdGlvbk1vZGVsLmZvckFsbFJlY29yZHMocHJlc2VudGF0aW9uTW9kZWwucm9vdFJlY29yZCgp
LmNoaWxkcmVuLCBwcm9jZXNzUmVjb3JkKTsKKworICAgICAgICB2YXIgbWF0Y2hlc0NvdW50ID0g
bWF0Y2hlcy5sZW5ndGg7CisgICAgICAgIGlmIChtYXRjaGVzQ291bnQpIHsKKyAgICAgICAgICAg
IHRoaXMuX3NlYXJjaFJlc3VsdHMgPSBtYXRjaGVzOworICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LnNlYXJjaENvbnRyb2xsZXIudXBkYXRlU2VhcmNoTWF0Y2hlc0NvdW50KG1hdGNoZXNDb3VudCwg
dGhpcyk7CisKKyAgICAgICAgICAgIHZhciBzZWxlY3RlZEluZGV4ID0gbWF0Y2hlcy5pbmRleE9m
KHNlbGVjdGVkU2VhcmNoUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID09
PSAtMSkKKyAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHRo
aXMuX3NlbGVjdFNlYXJjaFJlc3VsdChzZWxlY3RlZEluZGV4KTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRhdGVTZWFyY2hNYXRj
aGVzQ291bnQoMCwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VsZWN0ZWRTZWFy
Y2hSZXN1bHQocmV2ZWFsUmVjb3JkKTsKKyAgICB9LAorCisgICAgX2NsZWFyU2VhcmNoUmVzdWx0
czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fY2xlYXJIaWdobGlnaHQoKTsKKyAg
ICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IFtdOworICAgICAgICBkZWxldGUgdGhpcy5fc2Vs
ZWN0ZWRTZWFyY2hSZXN1bHQ7CisgICAgfSwKKworICAgIHNlYXJjaENhbmNlbGVkOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB0aGlzLl9jbGVhclNlYXJjaFJlc3VsdHMoKTsKKyAgICAgICAg
ZGVsZXRlIHRoaXMuX3NlYXJjaFJlZ0V4cDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJl
dHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBjYW5GaWx0ZXI6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICBwZXJmb3JtRmlsdGVyOiBmdW5j
dGlvbihzZWFyY2hRdWVyeSkKKyAgICB7CisgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVs
LnJlbW92ZUZpbHRlcih0aGlzLl9zZWFyY2hGaWx0ZXIpOworICAgICAgICBkZWxldGUgdGhpcy5f
c2VhcmNoRmlsdGVyOworICAgICAgICB0aGlzLnNlYXJjaENhbmNlbGVkKCk7CisgICAgICAgIGlm
IChzZWFyY2hRdWVyeSkgeworICAgICAgICAgICAgdGhpcy5fc2VhcmNoRmlsdGVyID0gbmV3IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVNlYXJjaEZpbHRlcihjcmVhdGVQbGFpblRleHRTZWFyY2hSZWdl
eChzZWFyY2hRdWVyeSwgImkiKSk7CisgICAgICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2Rl
bC5hZGRGaWx0ZXIodGhpcy5fc2VhcmNoRmlsdGVyKTsKKyAgICAgICAgfQorICAgICAgICB0aGlz
Ll9zY2hlZHVsZVJlZnJlc2godHJ1ZSk7CisgICAgfSwKKworICAgIHBlcmZvcm1TZWFyY2g6IGZ1
bmN0aW9uKHNlYXJjaFF1ZXJ5KQorICAgIHsKKyAgICAgICAgdGhpcy5fc2VhcmNoUmVnRXhwID0g
Y3JlYXRlUGxhaW5UZXh0U2VhcmNoUmVnZXgoc2VhcmNoUXVlcnksICJpIik7CisgICAgICAgIHRo
aXMuX3VwZGF0ZVNlYXJjaFJlc3VsdHModHJ1ZSk7CiAgICAgfQogfQogCkBAIC0xMTQwLDYgKzEy
ODYsMTMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KICAgICB9LAogCisgICAgaGlnaGxpZ2h0OiBmdW5jdGlvbihyZWdFeHAsIGRv
bUNoYW5nZXMpCisgICAgeworICAgICAgICB2YXIgbWF0Y2hJbmZvID0gdGhpcy5lbGVtZW50LnRl
eHRDb250ZW50Lm1hdGNoKHJlZ0V4cCk7CisgICAgICAgIGlmIChtYXRjaEluZm8pCisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0U2VhcmNoUmVzdWx0KHRoaXMuZWxlbWVudCwgbWF0
Y2hJbmZvLmluZGV4LCBtYXRjaEluZm9bMF0ubGVuZ3RoLCBkb21DaGFuZ2VzKTsKKyAgICB9LAor
CiAgICAgZGlzcG9zZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LnBh
cmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTsKQEAgLTExNDcsNiArMTMwMCwx
NSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93LnByb3RvdHlwZSA9IHsKIH0K
IAogLyoqCisgKiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2Rl
bC5SZWNvcmR9IHJlY29yZAorICogQHBhcmFtIHshUmVnRXhwfSByZWdFeHAKKyAqLworV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdy50ZXN0Q29udGVudE1hdGNoaW5nID0gZnVuY3Rp
b24ocmVjb3JkLCByZWdFeHApCit7CisgICAgcmV0dXJuIHJlZ0V4cC50ZXN0KHJlY29yZC50aXRs
ZSArICIgKCIgKyByZWNvcmQuZGV0YWlscygpICsgIikiKTsKK30KKworLyoqCiAgKiBAY29uc3Ry
dWN0b3IKICAqLwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3cgPSBmdW5jdGlv
bihncmFwaENvbnRhaW5lciwgc2NoZWR1bGVSZWZyZXNoKQpAQCAtMTI2MCw3ICsxNDIyLDggQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnlGaWx0ZXIgPSBmdW5jdGlvbigpCiAKIFdlYklu
c3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5RmlsdGVyLnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29y
ZH0gcmVjb3JkCisgICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0
aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAq
LwogICAgIGFjY2VwdDogZnVuY3Rpb24ocmVjb3JkKQogICAgIHsKQEAgLTEyODAsMTAgKzE0NDMs
MzMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lSXNMb25nRmlsdGVyID0gZnVuY3Rpb24ocGFuZWwp
CiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZUlzTG9uZ0ZpbHRlci5wcm90b3R5cGUgPSB7CiAgICAg
LyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2Rl
bC5SZWNvcmR9IHJlY29yZAorICAgICAqIEBwYXJhbSB7IVdlYkluc3BlY3Rvci5UaW1lbGluZVBy
ZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0K
ICAgICAgKi8KICAgICBhY2NlcHQ6IGZ1bmN0aW9uKHJlY29yZCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9wYW5lbC5fc2hvd1Nob3J0RXZlbnRzIHx8IHJlY29yZC5pc0xvbmcoKTsKICAg
ICB9CiB9CisKKy8qKgorICogQHBhcmFtIHshUmVnRXhwfSByZWdFeHAKKyAqIEBjb25zdHJ1Y3Rv
cgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LkZpbHRlcn0KKyAqLworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2VhcmNoRmlsdGVyID0gZnVuY3Rp
b24ocmVnRXhwKQoreworICAgIHRoaXMuX3JlZ0V4cCA9IHJlZ0V4cDsKK30KKworV2ViSW5zcGVj
dG9yLlRpbWVsaW5lU2VhcmNoRmlsdGVyLnByb3RvdHlwZSA9IHsKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7IVdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0g
cmVjb3JkCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBhY2NlcHQ6IGZ1
bmN0aW9uKHJlY29yZCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRMaXN0Um93LnRlc3RDb250ZW50TWF0Y2hpbmcocmVjb3JkLCB0aGlzLl9yZWdFeHAp
OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qcwppbmRleCBlMDI0YWExNDk2
M2NhN2U2N2MwYTRhYzkzNWM2ZTE4ZGM5ZTgyZTU2Li5jNDFjYWZiZjYxY2RhZjRkMTVkYzMwZWQ5
ZDVmMDM4NzEzYjViN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0yMjAs
MTMgKzIyMCwyMyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5jcmVh
dGVFdmVudERpdmlkZXIgPSBmdW5jdGlvbihyZWNvcmRUeXBlLAogCiBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5GaWx0ZXJ9IGZpbHRl
cgorICAgICAqIEBwYXJhbSB7IVdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LkZpbHRlcn0gZmlsdGVyCiAgICAgICovCiAgICAgYWRkRmlsdGVyOiBmdW5jdGlvbihmaWx0ZXIp
CiAgICAgewogICAgICAgICB0aGlzLl9maWx0ZXJzLnB1c2goZmlsdGVyKTsKICAgICB9LAogCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9u
TW9kZWwuRmlsdGVyfSBmaWx0ZXIKKyAgICAgKi8KKyAgICByZW1vdmVGaWx0ZXI6IGZ1bmN0aW9u
KGZpbHRlcikKKyAgICB7CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbHRlcnMuaW5kZXhP
ZihmaWx0ZXIpOworICAgICAgICBpZiAoaW5kZXggIT09IC0xKQorICAgICAgICAgICAgdGhpcy5f
ZmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpOworICAgIH0sCisKICAgICByb290UmVjb3JkOiBmdW5j
dGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcm9vdFJlY29yZDsKQEAgLTEwOTgs
NyArMTEwOCw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLkZpbHRl
ciA9IGZ1bmN0aW9uKCkKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwu
RmlsdGVyLnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgICAgICogQHBhcmFt
IHshV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQK
KyAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAqLwogICAgIGFjY2VwdDogZnVuY3Rpb24o
cmVjb3JkKSB7IHJldHVybiBmYWxzZTsgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCBkNDlkNTJmZTk4YWM1NDdlODAwNDJkMGE4
YTdiMmVlNjRlODQwZTA0Li5jYTcxZmM5YmJmYmU0MDRiNmI0ZjQxMWQ3MjRjM2I2Mzc3ZWUzZTg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGll
cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5q
cwpAQCAtNjMxLDcgKzYzMSw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVNlYXJjaFJlZ2V4KHF1ZXJ5LCBj
YXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KQogLyoqCiAgKiBAcGFyYW0ge3N0cmluZ30gcXVlcnkKICAq
IEBwYXJhbSB7c3RyaW5nPX0gZmxhZ3MKLSAqIEByZXR1cm4ge1JlZ0V4cH0KKyAqIEByZXR1cm4g
eyFSZWdFeHB9CiAgKi8KIGZ1bmN0aW9uIGNyZWF0ZVBsYWluVGV4dFNlYXJjaFJlZ2V4KHF1ZXJ5
LCBmbGFncykKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162722</attachid>
            <date>2012-09-07 03:01:28 -0700</date>
            <delta_ts>2012-09-07 06:36:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95445-20120907140107.patch</filename>
            <type>text/plain</type>
            <size>15437</size>
            <attacher>eustas.bug</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVmNDQyZjc1NzcwODU5
YzZkYTgzZGMzMThlNzlmY2ViMzljZDI2NC4uYmQ0ZDliOTdkNTE0OGUyNDJjOTM5NmFiMGUwYWZk
YmZkMjBiODIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA5LTA3ICBFdWdl
bmUgS2x5dWNobmlrb3YgIDxldXN0YXMuYmlnQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBJbXBsZW1lbnQgc2VhcmNoIGFuZCBmaWx0ZXJpbmcgb24gVGltZWxpbmUgcGFuZWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
ZWQgdGV4dHVhbCBzZWFyY2gvZmlsdGVyaW5nIG9uIFRpbWVsaW5lIHBhbmVsLgorICAgICAgICBG
aXhlZCAicmV2ZWFsUmVjb3JkQXQiIC0gbm93IGl0IHNlYXJjaGVzIHNjYW5zIGFsbCByZWNvcmRz
IGluIHdpbmRvdywKKyAgICAgICAgbm93IG9ubHkgdmlzaWJsZSBvbmVzLiAKKworICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVXaW5kb3dGaWx0ZXIpOgorICAgICAgICBFeHRyYWN0ZWQgZnJv
bSBUaW1lbGluZU92ZXJ2aWV3UGFuZSBjbGFzcy4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUucmV2ZWFs
UmVjb3JkQXQpOgorICAgICAgICBVc2VkIERGUyB0byBzY2FuIHJlY29yZHMuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3JldmVhbFJlY29yZCk6CisgICAg
ICAgIEV4dHJhY3RlZCBjb21tb24gY29kZS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNlYXJjaEZpbHRlcik6CisgICAgICAgIEltcGxlbWVudGVkIHNlYXJjaCBhbmQgZmlsdHJhdGlv
bi4KKwogMjAxMi0wOS0wNyAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlIHNob3VsZCBoYXZlIGEgbG9jYWxpemVkIHN0cmluZyBvZiBlbXB0eSBmb3Ig
ZGF0ZSB0aW1lIGZpZWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcwppbmRleCA3OTdkZjIwOGI1NDI4YzIw
NzY3ZmJhMDYwN2E3YjY3Y2JmMTgxOGQ4Li5lY2RmYTgyMGY0ZTU2NzU4ZTcyOGUyMTgyNzEwYzQx
OTJiMmU2NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanMKQEAgLTMxLDcgKzMxLDYgQEAKIC8qKgog
ICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9Ci0gKiBAaW1w
bGVtZW50cyB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuRmlsdGVyfQog
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbH0gbW9kZWwKICAqLwogV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lID0gZnVuY3Rpb24obW9kZWwpCkBAIC0yNzQsMTQg
KzI3Myw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3VwZGF0ZSgpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3Jk
Ci0gICAgICovCi0gICAgYWNjZXB0OiBmdW5jdGlvbihyZWNvcmQpCi0gICAgewotICAgICAgICBy
ZXR1cm4gcmVjb3JkLmxhc3RDaGlsZEVuZFRpbWUgPj0gdGhpcy5fd2luZG93U3RhcnRUaW1lICYm
IHJlY29yZC5zdGFydFRpbWUgPD0gdGhpcy5fd2luZG93RW5kVGltZTsKLSAgICB9LAotCiAgICAg
d2luZG93U3RhcnRUaW1lOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
d2luZG93U3RhcnRUaW1lIHx8IHRoaXMuX21vZGVsLm1pbmltdW1SZWNvcmRUaW1lKCk7CkBAIC0x
MjMyLDMgKzEyMjMsMjQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRnJhbWVPdmVydmlldy5wcm90
b3R5cGUgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZUZyYW1lT3ZlcnZpZXcucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKKworLyoqCisgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZX0gcGFuZQorICogQGNvbnN0
cnVjdG9yCisgKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9u
TW9kZWwuRmlsdGVyfQorICovCitXZWJJbnNwZWN0b3IuVGltZWxpbmVXaW5kb3dGaWx0ZXIgPSBm
dW5jdGlvbihwYW5lKQoreworICAgIHRoaXMuX3BhbmUgPSBwYW5lOworfQorCitXZWJJbnNwZWN0
b3IuVGltZWxpbmVXaW5kb3dGaWx0ZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7IVdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVj
b3JkCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBhY2NlcHQ6IGZ1bmN0
aW9uKHJlY29yZCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWNvcmQubGFzdENoaWxkRW5kVGlt
ZSA+PSB0aGlzLl9wYW5lLl93aW5kb3dTdGFydFRpbWUgJiYgcmVjb3JkLnN0YXJ0VGltZSA8PSB0
aGlzLl9wYW5lLl93aW5kb3dFbmRUaW1lOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwppbmRleCBkNGMwY2U2ZmVm
Y2EzN2QyYTYxOTg1NjA0NTlhNGVmYzVhYjE4ZWVlLi45ODBiNDFiODNjMTY5NGZmZTgyNTBhZGY4
ZjZjZTAzYzNhNTgwY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZVBhbmVsLmpzCkBAIC0xNDUsOSArMTQ1LDkgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLl9hbGxSZWNvcmRzQ291bnQg
PSAwOwogCi0gICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRmlsdGVyKHRoaXMuX292ZXJ2
aWV3UGFuZSk7CisgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRmlsdGVyKG5ldyBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVXaW5kb3dGaWx0ZXIodGhpcy5fb3ZlcnZpZXdQYW5lKSk7CiAgICAg
dGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRmlsdGVyKG5ldyBXZWJJbnNwZWN0b3IuVGltZWxp
bmVDYXRlZ29yeUZpbHRlcigpKTsgCi0gICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRmls
dGVyKG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVJc0xvbmdGaWx0ZXIodGhpcykpOyAKKyAgICB0
aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRGaWx0ZXIobmV3IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZUlzTG9uZ0ZpbHRlcih0aGlzKSk7CiB9CiAKIC8vIERlZmluZSByb3cgaGVpZ2h0LCBzaG91bGQg
YmUgaW4gc3luYyB3aXRoIHN0eWxlcyBmb3IgdGltZWxpbmUgZ3JhcGhzLgpAQCAtNjcxLDYgKzY3
MSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICBfaW52
YWxpZGF0ZUFuZFNjaGVkdWxlUmVmcmVzaDogZnVuY3Rpb24ocHJlc2VydmVCb3VuZGFyaWVzKQog
ICAgIHsKICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuaW52YWxpZGF0ZUZpbHRlcmVk
UmVjb3JkcygpOworICAgICAgICBkZWxldGUgdGhpcy5fc2VhcmNoUmVzdWx0czsKICAgICAgICAg
dGhpcy5fc2NoZWR1bGVSZWZyZXNoKHByZXNlcnZlQm91bmRhcmllcyk7CiAgICAgfSwKIApAQCAt
NzI0LDE4ICs3MjUsMTkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0g
ewogCiAgICAgcmV2ZWFsUmVjb3JkQXQ6IGZ1bmN0aW9uKHRpbWUpCiAgICAgewotICAgICAgICB2
YXIgcmVjb3Jkc0luV2luZG93ID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuZmlsdGVyZWRSZWNv
cmRzKCk7CiAgICAgICAgIHZhciByZWNvcmRUb1JldmVhbDsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCByZWNvcmRzSW5XaW5kb3cubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBy
ZWNvcmQgPSByZWNvcmRzSW5XaW5kb3dbaV07CisgICAgICAgIGZ1bmN0aW9uIGZpbmRSZWNvcmRU
b1JldmVhbChyZWNvcmQpCisgICAgICAgIHsKICAgICAgICAgICAgIGlmIChyZWNvcmQuY29udGFp
bnNUaW1lKHRpbWUpKSB7CiAgICAgICAgICAgICAgICAgcmVjb3JkVG9SZXZlYWwgPSByZWNvcmQ7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyByZWNvcmQgY29udGFp
bmluZyB0aGUgdGltZSB0aGFuIHVzZSB0aGUgbGF0ZXN0IG9uZSBiZWZvcmUgdGhhdCB0aW1lLgog
ICAgICAgICAgICAgaWYgKCFyZWNvcmRUb1JldmVhbCB8fCByZWNvcmQuZW5kVGltZSA8IHRpbWUg
JiYgcmVjb3JkVG9SZXZlYWwuZW5kVGltZSA8IHJlY29yZC5lbmRUaW1lKQogICAgICAgICAgICAg
ICAgIHJlY29yZFRvUmV2ZWFsID0gcmVjb3JkOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CisgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LmZvckFsbFJlY29yZHModGhpcy5fcHJlc2VudGF0aW9uTW9kZWwucm9vdFJlY29yZCgpLmNoaWxk
cmVuLCBudWxsLCBmaW5kUmVjb3JkVG9SZXZlYWwpOwogCiAgICAgICAgIC8vIFRoZSByZWNvcmQg
ZW5kcyBiZWZvcmUgdGhlIHdpbmRvdyBsZWZ0IGJvdW5kIHNvIHNjcm9sbCB0byB0aGUgdG9wLgog
ICAgICAgICBpZiAoIXJlY29yZFRvUmV2ZWFsKSB7CkBAIC03NDMsOSArNzQ1LDIxIEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCisgICAgICAgIHRoaXMuX3JldmVhbFJlY29yZChyZWNvcmRUb1JldmVhbCk7
CisgICAgfSwKKworICAgIF9yZXZlYWxSZWNvcmQ6IGZ1bmN0aW9uKHJlY29yZFRvUmV2ZWFsKQor
ICAgIHsKICAgICAgICAgLy8gRXhwYW5kIGFsbCBhbmNlc3RvcnMuCi0gICAgICAgIGZvciAodmFy
IHBhcmVudCA9IHJlY29yZFRvUmV2ZWFsLnBhcmVudDsgcGFyZW50ICE9PSB0aGlzLl9yb290UmVj
b3JkKCk7IHBhcmVudCA9IHBhcmVudC5wYXJlbnQpCisgICAgICAgIHZhciB0cmVlVXBkYXRlZCA9
IGZhbHNlOworICAgICAgICBmb3IgKHZhciBwYXJlbnQgPSByZWNvcmRUb1JldmVhbC5wYXJlbnQ7
IHBhcmVudCAhPT0gdGhpcy5fcm9vdFJlY29yZCgpOyBwYXJlbnQgPSBwYXJlbnQucGFyZW50KSB7
CisgICAgICAgICAgICB0cmVlVXBkYXRlZCA9IHRyZWVVcGRhdGVkIHx8IHBhcmVudC5jb2xsYXBz
ZWQ7CiAgICAgICAgICAgICBwYXJlbnQuY29sbGFwc2VkID0gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHRyZWVVcGRhdGVkKQorICAgICAgICAgICAgdGhpcy5faW52YWxpZGF0ZUFuZFNj
aGVkdWxlUmVmcmVzaCh0cnVlKTsKKworICAgICAgICB2YXIgcmVjb3Jkc0luV2luZG93ID0gdGhp
cy5fcHJlc2VudGF0aW9uTW9kZWwuZmlsdGVyZWRSZWNvcmRzKCk7CiAgICAgICAgIHZhciBpbmRl
eCA9IHJlY29yZHNJbldpbmRvdy5pbmRleE9mKHJlY29yZFRvUmV2ZWFsKTsKICAgICAgICAgdGhp
cy5fY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3AgPSBpbmRleCAqIFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsLnJvd0hlaWdodDsKICAgICB9LApAQCAtODMyLDYgKzg0Niw3IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faXRlbXNHcmFw
aHNFbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9ncmFwaFJvd3NFbGVtZW50LCB0aGlzLl9ib3R0
b21HYXBFbGVtZW50KTsKICAgICAgICAgdGhpcy5faXRlbXNHcmFwaHNFbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX2V4cGFuZEVsZW1lbnRzKTsKICAgICAgICAgdGhpcy5fYWRqdXN0U2Nyb2xsUG9z
aXRpb24oKHJlY29yZHNJbldpbmRvdy5sZW5ndGggKyB0aGlzLl9oZWFkZXJMaW5lQ291bnQpICog
cm93SGVpZ2h0KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlU2VhcmNoSGlnaGxpZ2h0KGZhbHNlKTsK
IAogICAgICAgICByZXR1cm4gcmVjb3Jkc0luV2luZG93Lmxlbmd0aDsKICAgICB9LApAQCAtMTAw
MSw2ICsxMDE2LDE0MCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSBPYmplY3QudmFsdWVzKGNhdGVnb3JpZXMp
Lm1hcChXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5jcmVhdGVTdHlsZVJ1
bGVGb3JDYXRlZ29yeSkuam9pbigiXG4iKTsKICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRD
aGlsZChzdHlsZSk7CisgICAgfSwKKworICAgIGp1bXBUb05leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2p1bXBUb0FkamFjZW50UmVjb3JkKDEpOworICAg
IH0sCisKKyAgICBqdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5fanVtcFRvQWRqYWNlbnRSZWNvcmQoLTEpOworICAgIH0sCisKKyAgICBf
anVtcFRvQWRqYWNlbnRSZWNvcmQ6IGZ1bmN0aW9uKG9mZnNldCkKKyAgICB7CisgICAgICAgIGlm
ICghdGhpcy5fc2VhcmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggfHwg
IXRoaXMuX3NlbGVjdGVkU2VhcmNoUmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB2YXIgaW5kZXggPSB0aGlzLl9zZWFyY2hSZXN1bHRzLmluZGV4T2YodGhpcy5fc2VsZWN0ZWRT
ZWFyY2hSZXN1bHQpICsgdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggKyBvZmZzZXQ7CisgICAg
ICAgIHRoaXMuX3NlbGVjdFNlYXJjaFJlc3VsdChpbmRleCAlIHRoaXMuX3NlYXJjaFJlc3VsdHMu
bGVuZ3RoKTsKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VsZWN0ZWRTZWFyY2hSZXN1bHQodHJ1
ZSk7CisgICAgfSwKKworICAgIF9zZWxlY3RTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGluZGV4KQor
ICAgIHsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRTZWFyY2hSZXN1bHQgPSB0aGlzLl9zZWFyY2hS
ZXN1bHRzW2luZGV4XTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBk
YXRlQ3VycmVudE1hdGNoSW5kZXgoaW5kZXgsIHRoaXMpOworICAgIH0sCisKKyAgICBfaGlnaGxp
Z2h0U2VsZWN0ZWRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKHJldmVhbFJlY29yZCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2NsZWFySGlnaGxpZ2h0KCk7CisgICAgICAgIGlmICh0aGlzLl9zZWFyY2hG
aWx0ZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHJlY29yZCA9IHRoaXMu
X3NlbGVjdGVkU2VhcmNoUmVzdWx0OworICAgICAgICBpZiAoIXJlY29yZCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBlbGVtZW50ID0gdGhpcy5fc2lkZWJhckxpc3RF
bGVtZW50LmZpcnN0Q2hpbGQ7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50Lm5leHRTaWJsaW5n
KSB7CisgICAgICAgICAgICBpZiAoZWxlbWVudC5yb3cuX3JlY29yZCA9PT0gcmVjb3JkKSB7Cisg
ICAgICAgICAgICAgICAgZWxlbWVudC5yb3cuaGlnaGxpZ2h0KHRoaXMuX3NlYXJjaFJlZ0V4cCwg
dGhpcy5faGlnaGxpZ2h0RG9tQ2hhbmdlcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHJldmVhbFJlY29yZCkKKyAgICAg
ICAgICAgIHRoaXMuX3JldmVhbFJlY29yZChyZWNvcmQpOworICAgIH0sCisKKyAgICBfY2xlYXJI
aWdobGlnaHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9oaWdobGlnaHRE
b21DaGFuZ2VzKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnJldmVydERvbUNoYW5nZXModGhp
cy5faGlnaGxpZ2h0RG9tQ2hhbmdlcyk7CisgICAgICAgIHRoaXMuX2hpZ2hsaWdodERvbUNoYW5n
ZXMgPSBbXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtib29sZWFufSByZXZl
YWxSZWNvcmQKKyAgICAgKi8KKyAgICBfdXBkYXRlU2VhcmNoSGlnaGxpZ2h0OiBmdW5jdGlvbihy
ZXZlYWxSZWNvcmQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fc2VhcmNoRmlsdGVyIHx8ICF0
aGlzLl9zZWFyY2hSZWdFeHApIHsKKyAgICAgICAgICAgIHRoaXMuX2NsZWFySGlnaGxpZ2h0KCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuX3Nl
YXJjaFJlc3VsdHMpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVTZWFyY2hSZXN1bHRzKHRoaXMu
X3NlYXJjaFJlZ0V4cCk7CisKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VsZWN0ZWRTZWFyY2hS
ZXN1bHQocmV2ZWFsUmVjb3JkKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHsh
UmVnRXhwfSBzZWFyY2hSZWdFeHAKKyAgICAgKi8KKyAgICBfdXBkYXRlU2VhcmNoUmVzdWx0czog
ZnVuY3Rpb24oc2VhcmNoUmVnRXhwKSB7CisgICAgICAgIHZhciBtYXRjaGVzID0gW107CisgICAg
ICAgIHZhciBwcmVzZW50YXRpb25Nb2RlbCA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsOworCisg
ICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWNvcmQocmVjb3JkKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAocHJlc2VudGF0aW9uTW9kZWwuaXNWaXNpYmxlKHJlY29yZCkgJiYgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdy50ZXN0Q29udGVudE1hdGNoaW5nKHJlY29yZCwgc2Vh
cmNoUmVnRXhwKSkKKyAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2gocmVjb3JkKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5mb3JBbGxSZWNvcmRzKHByZXNlbnRhdGlvbk1vZGVsLnJv
b3RSZWNvcmQoKS5jaGlsZHJlbiwgcHJvY2Vzc1JlY29yZCk7CisKKyAgICAgICAgdmFyIG1hdGNo
ZXNDb3VudCA9IG1hdGNoZXMubGVuZ3RoOworICAgICAgICBpZiAobWF0Y2hlc0NvdW50KSB7Cisg
ICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzID0gbWF0Y2hlczsKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5zZWFyY2hDb250cm9sbGVyLnVwZGF0ZVNlYXJjaE1hdGNoZXNDb3VudChtYXRj
aGVzQ291bnQsIHRoaXMpOworCisgICAgICAgICAgICB2YXIgc2VsZWN0ZWRJbmRleCA9IG1hdGNo
ZXMuaW5kZXhPZih0aGlzLl9zZWxlY3RlZFNlYXJjaFJlc3VsdCk7CisgICAgICAgICAgICBpZiAo
c2VsZWN0ZWRJbmRleCA9PT0gLTEpCisgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCA9IDA7
CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RTZWFyY2hSZXN1bHQoc2VsZWN0ZWRJbmRleCk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxl
ci51cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQoMCwgdGhpcyk7CisgICAgICAgICAgICBkZWxldGUg
dGhpcy5fc2VsZWN0ZWRTZWFyY2hSZXN1bHQ7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgc2Vh
cmNoQ2FuY2VsZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NsZWFySGlnaGxp
Z2h0KCk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWFyY2hSZXN1bHRzOworICAgICAgICBkZWxl
dGUgdGhpcy5fc2VsZWN0ZWRTZWFyY2hSZXN1bHQ7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWFy
Y2hSZWdFeHA7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Cisg
ICAgICovCisgICAgY2FuRmlsdGVyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9LAorCisgICAgcGVyZm9ybUZpbHRlcjogZnVuY3Rpb24oc2VhcmNoUXVlcnkp
CisgICAgeworICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5yZW1vdmVGaWx0ZXIodGhp
cy5fc2VhcmNoRmlsdGVyKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NlYXJjaEZpbHRlcjsKKyAg
ICAgICAgdGhpcy5zZWFyY2hDYW5jZWxlZCgpOworICAgICAgICBpZiAoc2VhcmNoUXVlcnkpIHsK
KyAgICAgICAgICAgIHRoaXMuX3NlYXJjaEZpbHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxp
bmVTZWFyY2hGaWx0ZXIoY3JlYXRlUGxhaW5UZXh0U2VhcmNoUmVnZXgoc2VhcmNoUXVlcnksICJp
IikpOworICAgICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRmlsdGVyKHRoaXMu
X3NlYXJjaEZpbHRlcik7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5faW52YWxpZGF0ZUFuZFNj
aGVkdWxlUmVmcmVzaCh0cnVlKTsKKyAgICB9LAorCisgICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rp
b24oc2VhcmNoUXVlcnkpCisgICAgeworICAgICAgICB0aGlzLl9zZWFyY2hSZWdFeHAgPSBjcmVh
dGVQbGFpblRleHRTZWFyY2hSZWdleChzZWFyY2hRdWVyeSwgImkiKTsKKyAgICAgICAgZGVsZXRl
IHRoaXMuX3NlYXJjaFJlc3VsdHM7CisgICAgICAgIHRoaXMuX3VwZGF0ZVNlYXJjaEhpZ2hsaWdo
dCh0cnVlKTsKICAgICB9CiB9CiAKQEAgLTExNTAsNiArMTI5OSwxMyBAQCBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmRMaXN0Um93LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAK
KyAgICBoaWdobGlnaHQ6IGZ1bmN0aW9uKHJlZ0V4cCwgZG9tQ2hhbmdlcykKKyAgICB7CisgICAg
ICAgIHZhciBtYXRjaEluZm8gPSB0aGlzLmVsZW1lbnQudGV4dENvbnRlbnQubWF0Y2gocmVnRXhw
KTsKKyAgICAgICAgaWYgKG1hdGNoSW5mbykKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5oaWdo
bGlnaHRTZWFyY2hSZXN1bHQodGhpcy5lbGVtZW50LCBtYXRjaEluZm8uaW5kZXgsIG1hdGNoSW5m
b1swXS5sZW5ndGgsIGRvbUNoYW5nZXMpOworICAgIH0sCisKICAgICBkaXNwb3NlOiBmdW5jdGlv
bigpCiAgICAgewogICAgICAgICB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVDaGls
ZCh0aGlzLmVsZW1lbnQpOwpAQCAtMTE1Nyw2ICsxMzEzLDE1IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZExpc3RSb3cucHJvdG90eXBlID0gewogfQogCiAvKioKKyAqIEBwYXJhbSB7IVdl
Ykluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgKiBA
cGFyYW0geyFSZWdFeHB9IHJlZ0V4cAorICovCitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRM
aXN0Um93LnRlc3RDb250ZW50TWF0Y2hpbmcgPSBmdW5jdGlvbihyZWNvcmQsIHJlZ0V4cCkKK3sK
KyAgICByZXR1cm4gcmVnRXhwLnRlc3QocmVjb3JkLnRpdGxlICsgIiAoIiArIHJlY29yZC5kZXRh
aWxzKCkgKyAiKSIpOworfQorCisvKioKICAqIEBjb25zdHJ1Y3RvcgogICovCiBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRHcmFwaFJvdyA9IGZ1bmN0aW9uKGdyYXBoQ29udGFpbmVyLCBzY2hl
ZHVsZVJlZnJlc2gpCkBAIC0xMjcwLDcgKzE0MzUsOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVD
YXRlZ29yeUZpbHRlciA9IGZ1bmN0aW9uKCkKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdv
cnlGaWx0ZXIucHJvdG90eXBlID0gewogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQKKyAgICAgKiBAcGFy
YW0geyFXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJlY29y
ZAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgICovCiAgICAgYWNjZXB0OiBmdW5jdGlv
bihyZWNvcmQpCiAgICAgewpAQCAtMTI5MCwxMCArMTQ1NiwzMyBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVJc0xvbmdGaWx0ZXIgPSBmdW5jdGlvbihwYW5lbCkKIAogV2ViSW5zcGVjdG9yLlRpbWVs
aW5lSXNMb25nRmlsdGVyLnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgICAg
ICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3Jk
fSByZWNvcmQKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAqLwogICAgIGFjY2VwdDog
ZnVuY3Rpb24ocmVjb3JkKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhbmVsLl9zaG93
U2hvcnRFdmVudHMgfHwgcmVjb3JkLmlzTG9uZygpOwogICAgIH0KIH0KKworLyoqCisgKiBAcGFy
YW0geyFSZWdFeHB9IHJlZ0V4cAorICogQGNvbnN0cnVjdG9yCisgKiBAaW1wbGVtZW50cyB7V2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuRmlsdGVyfQorICovCitXZWJJbnNw
ZWN0b3IuVGltZWxpbmVTZWFyY2hGaWx0ZXIgPSBmdW5jdGlvbihyZWdFeHApCit7CisgICAgdGhp
cy5fcmVnRXhwID0gcmVnRXhwOworfQorCitXZWJJbnNwZWN0b3IuVGltZWxpbmVTZWFyY2hGaWx0
ZXIucHJvdG90eXBlID0geworCisgICAgLyoqCisgICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQKKyAgICAgKiBAcmV0dXJu
IHtib29sZWFufQorICAgICAqLworICAgIGFjY2VwdDogZnVuY3Rpb24ocmVjb3JkKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZExpc3RSb3cudGVzdENv
bnRlbnRNYXRjaGluZyhyZWNvcmQsIHRoaXMuX3JlZ0V4cCk7CisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlv
bk1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBy
ZXNlbnRhdGlvbk1vZGVsLmpzCmluZGV4IDZiOWVhNWQyODFjYTE5NGIyMTdhMWJhYmRmZjhhYzNh
OTZkOGRmNWIuLjI5ODFhZjNjM2UwYTVkYmU2N2RjZmRhOWNjMThjZmU3ZGRkYjQxNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50
YXRpb25Nb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rp
bWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuanMKQEAgLTIyMCwxMyArMjIwLDIzIEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUV2ZW50RGl2aWRlciA9IGZ1bmN0
aW9uKHJlY29yZFR5cGUsCiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1l
bGluZVByZXNlbnRhdGlvbk1vZGVsLkZpbHRlcn0gZmlsdGVyCisgICAgICogQHBhcmFtIHshV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuRmlsdGVyfSBmaWx0ZXIKICAgICAg
Ki8KICAgICBhZGRGaWx0ZXI6IGZ1bmN0aW9uKGZpbHRlcikKICAgICB7CiAgICAgICAgIHRoaXMu
X2ZpbHRlcnMucHVzaChmaWx0ZXIpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
eyFXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5GaWx0ZXJ9IGZpbHRlcgor
ICAgICAqLworICAgIHJlbW92ZUZpbHRlcjogZnVuY3Rpb24oZmlsdGVyKQorICAgIHsKKyAgICAg
ICAgdmFyIGluZGV4ID0gdGhpcy5fZmlsdGVycy5pbmRleE9mKGZpbHRlcik7CisgICAgICAgIGlm
IChpbmRleCAhPT0gLTEpCisgICAgICAgICAgICB0aGlzLl9maWx0ZXJzLnNwbGljZShpbmRleCwg
MSk7CisgICAgfSwKKwogICAgIHJvb3RSZWNvcmQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9yb290UmVjb3JkOwpAQCAtMTEwNiw3ICsxMTE2LDggQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuRmlsdGVyID0gZnVuY3Rpb24oKQogCiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5GaWx0ZXIucHJvdG90eXBlID0gewog
ICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9u
TW9kZWwuUmVjb3JkfSByZWNvcmQKKyAgICAgKiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuVGltZWxp
bmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJlY29yZAorICAgICAqIEByZXR1cm4ge2Jvb2xl
YW59CiAgICAgICovCiAgICAgYWNjZXB0OiBmdW5jdGlvbihyZWNvcmQpIHsgcmV0dXJuIGZhbHNl
OyB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0
aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVz
LmpzCmluZGV4IGQ0OWQ1MmZlOThhYzU0N2U4MDA0MmQwYThhN2IyZWU2NGU4NDBlMDQuLmNhNzFm
YzliYmZiZTQwNGI2YjRmNDExZDcyNGMzYjYzNzdlZTNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCkBAIC02MzEsNyArNjMxLDcgQEAg
ZnVuY3Rpb24gY3JlYXRlU2VhcmNoUmVnZXgocXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgp
CiAvKioKICAqIEBwYXJhbSB7c3RyaW5nfSBxdWVyeQogICogQHBhcmFtIHtzdHJpbmc9fSBmbGFn
cwotICogQHJldHVybiB7UmVnRXhwfQorICogQHJldHVybiB7IVJlZ0V4cH0KICAqLwogZnVuY3Rp
b24gY3JlYXRlUGxhaW5UZXh0U2VhcmNoUmVnZXgocXVlcnksIGZsYWdzKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162756</attachid>
            <date>2012-09-07 06:36:50 -0700</date>
            <delta_ts>2012-09-12 02:10:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95445-20120907173629.patch</filename>
            <type>text/plain</type>
            <size>15422</size>
            <attacher>eustas.bug</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc2YzM1NDk0NDU1NjE3
NmI1OGI4YjhjZTMzZWZiNzAyYjQwOGEzZi4uNjVkZjIyZTZlMWEwYmMyMDIyNjkyMmVlMmM0ZTY3
YTU5YjZkZTY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA5LTA3ICBFdWdl
bmUgS2x5dWNobmlrb3YgIDxldXN0YXMuYmlnQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBJbXBsZW1lbnQgc2VhcmNoIGFuZCBmaWx0ZXJpbmcgb24gVGltZWxpbmUgcGFuZWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
ZWQgdGV4dHVhbCBzZWFyY2gvZmlsdGVyaW5nIG9uIFRpbWVsaW5lIHBhbmVsLgorICAgICAgICBG
aXhlZCAicmV2ZWFsUmVjb3JkQXQiIC0gbm93IGl0IHNjYW5zIGFsbCByZWNvcmRzIGluIHdpbmRv
dywKKyAgICAgICAgbm93IG9ubHkgdmlzaWJsZSBvbmVzLiAKKworICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVXaW5kb3dGaWx0ZXIpOgorICAgICAgICBFeHRyYWN0ZWQgZnJvbSBUaW1lbGlu
ZU92ZXJ2aWV3UGFuZSBjbGFzcy4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUucmV2ZWFsUmVjb3JkQXQp
OgorICAgICAgICBVc2VkIERGUyB0byBzY2FuIHJlY29yZHMuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3JldmVhbFJlY29yZCk6CisgICAgICAgIEV4dHJh
Y3RlZCBjb21tb24gY29kZS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVNlYXJjaEZp
bHRlcik6CisgICAgICAgIEltcGxlbWVudGVkIHNlYXJjaCBhbmQgZmlsdHJhdGlvbi4KKwogMjAx
Mi0wOS0wNyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4K
IAogICAgICAgICBYMTEgR2xvYmFsIFNlbGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanMKaW5kZXgg
Nzk3ZGYyMDhiNTQyOGMyMDc2N2ZiYTA2MDdhN2I2N2NiZjE4MThkOC4uZWNkZmE4MjBmNGU1Njc1
OGU3MjhlMjE4MjcxMGM0MTkyYjJlNjVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzCkBAIC0zMSw3
ICszMSw2IEBACiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5WaWV3fQotICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlv
bk1vZGVsLkZpbHRlcn0KICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWx9IG1v
ZGVsCiAgKi8KIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZSA9IGZ1bmN0aW9uKG1v
ZGVsKQpAQCAtMjc0LDE0ICsyNzMsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1Bh
bmUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICB9LAogCi0gICAg
LyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2Rl
bC5SZWNvcmR9IHJlY29yZAotICAgICAqLwotICAgIGFjY2VwdDogZnVuY3Rpb24ocmVjb3JkKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHJlY29yZC5sYXN0Q2hpbGRFbmRUaW1lID49IHRoaXMuX3dp
bmRvd1N0YXJ0VGltZSAmJiByZWNvcmQuc3RhcnRUaW1lIDw9IHRoaXMuX3dpbmRvd0VuZFRpbWU7
Ci0gICAgfSwKLQogICAgIHdpbmRvd1N0YXJ0VGltZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3dpbmRvd1N0YXJ0VGltZSB8fCB0aGlzLl9tb2RlbC5taW5pbXVtUmVj
b3JkVGltZSgpOwpAQCAtMTIzMiwzICsxMjIzLDI0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUZy
YW1lT3ZlcnZpZXcucHJvdG90eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVGcmFt
ZU92ZXJ2aWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5
cGU7CisKKy8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmV9
IHBhbmUKKyAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1l
bGluZVByZXNlbnRhdGlvbk1vZGVsLkZpbHRlcn0KKyAqLworV2ViSW5zcGVjdG9yLlRpbWVsaW5l
V2luZG93RmlsdGVyID0gZnVuY3Rpb24ocGFuZSkKK3sKKyAgICB0aGlzLl9wYW5lID0gcGFuZTsK
K30KKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lV2luZG93RmlsdGVyLnByb3RvdHlwZSA9IHsKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25N
b2RlbC5SZWNvcmR9IHJlY29yZAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisg
ICAgYWNjZXB0OiBmdW5jdGlvbihyZWNvcmQpCisgICAgeworICAgICAgICByZXR1cm4gcmVjb3Jk
Lmxhc3RDaGlsZEVuZFRpbWUgPj0gdGhpcy5fcGFuZS5fd2luZG93U3RhcnRUaW1lICYmIHJlY29y
ZC5zdGFydFRpbWUgPD0gdGhpcy5fcGFuZS5fd2luZG93RW5kVGltZTsKKyAgICB9Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMK
aW5kZXggZDRjMGNlNmZlZmNhMzdkMmE2MTk4NTYwNDU5YTRlZmM1YWIxOGVlZS4uNDAyY2U0ZThi
NGEwYzkwMWViN2VhYzk0MzMwMGM5ZDM0OGU4Y2RiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMTQ1LDkgKzE0NSw5
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5f
YWxsUmVjb3Jkc0NvdW50ID0gMDsKIAotICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZp
bHRlcih0aGlzLl9vdmVydmlld1BhbmUpOworICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFk
ZEZpbHRlcihuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lV2luZG93RmlsdGVyKHRoaXMuX292ZXJ2
aWV3UGFuZSkpOwogICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZpbHRlcihuZXcgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnlGaWx0ZXIoKSk7IAotICAgIHRoaXMuX3ByZXNlbnRh
dGlvbk1vZGVsLmFkZEZpbHRlcihuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lSXNMb25nRmlsdGVy
KHRoaXMpKTsgCisgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRmlsdGVyKG5ldyBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVJc0xvbmdGaWx0ZXIodGhpcykpOwogfQogCiAvLyBEZWZpbmUgcm93
IGhlaWdodCwgc2hvdWxkIGJlIGluIHN5bmMgd2l0aCBzdHlsZXMgZm9yIHRpbWVsaW5lIGdyYXBo
cy4KQEAgLTY3MSw2ICs2NzEsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgX2ludmFsaWRhdGVBbmRTY2hlZHVsZVJlZnJlc2g6IGZ1bmN0aW9uKHByZXNl
cnZlQm91bmRhcmllcykKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmlu
dmFsaWRhdGVGaWx0ZXJlZFJlY29yZHMoKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NlYXJjaFJl
c3VsdHM7CiAgICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaChwcmVzZXJ2ZUJvdW5kYXJpZXMp
OwogICAgIH0sCiAKQEAgLTcyNCwxOCArNzI1LDE5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgIHJldmVhbFJlY29yZEF0OiBmdW5jdGlvbih0aW1lKQog
ICAgIHsKLSAgICAgICAgdmFyIHJlY29yZHNJbldpbmRvdyA9IHRoaXMuX3ByZXNlbnRhdGlvbk1v
ZGVsLmZpbHRlcmVkUmVjb3JkcygpOwogICAgICAgICB2YXIgcmVjb3JkVG9SZXZlYWw7Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVjb3Jkc0luV2luZG93Lmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICB2YXIgcmVjb3JkID0gcmVjb3Jkc0luV2luZG93W2ldOworICAgICAgICBmdW5j
dGlvbiBmaW5kUmVjb3JkVG9SZXZlYWwocmVjb3JkKQorICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAocmVjb3JkLmNvbnRhaW5zVGltZSh0aW1lKSkgewogICAgICAgICAgICAgICAgIHJlY29yZFRv
UmV2ZWFsID0gcmVjb3JkOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMg
bm8gcmVjb3JkIGNvbnRhaW5pbmcgdGhlIHRpbWUgdGhhbiB1c2UgdGhlIGxhdGVzdCBvbmUgYmVm
b3JlIHRoYXQgdGltZS4KICAgICAgICAgICAgIGlmICghcmVjb3JkVG9SZXZlYWwgfHwgcmVjb3Jk
LmVuZFRpbWUgPCB0aW1lICYmIHJlY29yZFRvUmV2ZWFsLmVuZFRpbWUgPCByZWNvcmQuZW5kVGlt
ZSkKICAgICAgICAgICAgICAgICByZWNvcmRUb1JldmVhbCA9IHJlY29yZDsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
cmVzZW50YXRpb25Nb2RlbC5mb3JBbGxSZWNvcmRzKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJv
b3RSZWNvcmQoKS5jaGlsZHJlbiwgbnVsbCwgZmluZFJlY29yZFRvUmV2ZWFsKTsKIAogICAgICAg
ICAvLyBUaGUgcmVjb3JkIGVuZHMgYmVmb3JlIHRoZSB3aW5kb3cgbGVmdCBib3VuZCBzbyBzY3Jv
bGwgdG8gdGhlIHRvcC4KICAgICAgICAgaWYgKCFyZWNvcmRUb1JldmVhbCkgewpAQCAtNzQzLDkg
Kzc0NSwyMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICB0aGlzLl9yZXZlYWxSZWNvcmQo
cmVjb3JkVG9SZXZlYWwpOworICAgIH0sCisKKyAgICBfcmV2ZWFsUmVjb3JkOiBmdW5jdGlvbihy
ZWNvcmRUb1JldmVhbCkKKyAgICB7CiAgICAgICAgIC8vIEV4cGFuZCBhbGwgYW5jZXN0b3JzLgot
ICAgICAgICBmb3IgKHZhciBwYXJlbnQgPSByZWNvcmRUb1JldmVhbC5wYXJlbnQ7IHBhcmVudCAh
PT0gdGhpcy5fcm9vdFJlY29yZCgpOyBwYXJlbnQgPSBwYXJlbnQucGFyZW50KQorICAgICAgICB2
YXIgdHJlZVVwZGF0ZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgcGFyZW50ID0gcmVjb3Jk
VG9SZXZlYWwucGFyZW50OyBwYXJlbnQgIT09IHRoaXMuX3Jvb3RSZWNvcmQoKTsgcGFyZW50ID0g
cGFyZW50LnBhcmVudCkgeworICAgICAgICAgICAgdHJlZVVwZGF0ZWQgPSB0cmVlVXBkYXRlZCB8
fCBwYXJlbnQuY29sbGFwc2VkOwogICAgICAgICAgICAgcGFyZW50LmNvbGxhcHNlZCA9IGZhbHNl
OworICAgICAgICB9CisgICAgICAgIGlmICh0cmVlVXBkYXRlZCkKKyAgICAgICAgICAgIHRoaXMu
X2ludmFsaWRhdGVBbmRTY2hlZHVsZVJlZnJlc2godHJ1ZSk7CisKKyAgICAgICAgdmFyIHJlY29y
ZHNJbldpbmRvdyA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmZpbHRlcmVkUmVjb3JkcygpOwog
ICAgICAgICB2YXIgaW5kZXggPSByZWNvcmRzSW5XaW5kb3cuaW5kZXhPZihyZWNvcmRUb1JldmVh
bCk7CiAgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuc2Nyb2xsVG9wID0gaW5kZXggKiBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5yb3dIZWlnaHQ7CiAgICAgfSwKQEAgLTgzMiw2ICs4
NDYsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX2l0ZW1zR3JhcGhzRWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fZ3JhcGhSb3dzRWxl
bWVudCwgdGhpcy5fYm90dG9tR2FwRWxlbWVudCk7CiAgICAgICAgIHRoaXMuX2l0ZW1zR3JhcGhz
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9leHBhbmRFbGVtZW50cyk7CiAgICAgICAgIHRoaXMu
X2FkanVzdFNjcm9sbFBvc2l0aW9uKChyZWNvcmRzSW5XaW5kb3cubGVuZ3RoICsgdGhpcy5faGVh
ZGVyTGluZUNvdW50KSAqIHJvd0hlaWdodCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZVNlYXJjaEhp
Z2hsaWdodChmYWxzZSk7CiAKICAgICAgICAgcmV0dXJuIHJlY29yZHNJbldpbmRvdy5sZW5ndGg7
CiAgICAgfSwKQEAgLTEwMDEsNiArMTAxNiwxNDEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gT2JqZWN0LnZh
bHVlcyhjYXRlZ29yaWVzKS5tYXAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9k
ZWwuY3JlYXRlU3R5bGVSdWxlRm9yQ2F0ZWdvcnkpLmpvaW4oIlxuIik7CiAgICAgICAgIGRvY3Vt
ZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOworICAgIH0sCisKKyAgICBqdW1wVG9OZXh0U2Vh
cmNoUmVzdWx0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9qdW1wVG9BZGphY2Vu
dFJlY29yZCgxKTsKKyAgICB9LAorCisgICAganVtcFRvUHJldmlvdXNTZWFyY2hSZXN1bHQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2p1bXBUb0FkamFjZW50UmVjb3JkKC0xKTsK
KyAgICB9LAorCisgICAgX2p1bXBUb0FkamFjZW50UmVjb3JkOiBmdW5jdGlvbihvZmZzZXQpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJl
c3VsdHMubGVuZ3RoIHx8ICF0aGlzLl9zZWxlY3RlZFNlYXJjaFJlc3VsdCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fc2VhcmNoUmVzdWx0cy5pbmRleE9m
KHRoaXMuX3NlbGVjdGVkU2VhcmNoUmVzdWx0KTsKKyAgICAgICAgaW5kZXggPSAoaW5kZXggKyBv
ZmZzZXQgKyB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkgJSB0aGlzLl9zZWFyY2hSZXN1bHRz
Lmxlbmd0aDsKKyAgICAgICAgdGhpcy5fc2VsZWN0U2VhcmNoUmVzdWx0KGluZGV4KTsKKyAgICAg
ICAgdGhpcy5faGlnaGxpZ2h0U2VsZWN0ZWRTZWFyY2hSZXN1bHQodHJ1ZSk7CisgICAgfSwKKwor
ICAgIF9zZWxlY3RTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGluZGV4KQorICAgIHsKKyAgICAgICAg
dGhpcy5fc2VsZWN0ZWRTZWFyY2hSZXN1bHQgPSB0aGlzLl9zZWFyY2hSZXN1bHRzW2luZGV4XTsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRlQ3VycmVudE1hdGNo
SW5kZXgoaW5kZXgsIHRoaXMpOworICAgIH0sCisKKyAgICBfaGlnaGxpZ2h0U2VsZWN0ZWRTZWFy
Y2hSZXN1bHQ6IGZ1bmN0aW9uKHJldmVhbFJlY29yZCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Ns
ZWFySGlnaGxpZ2h0KCk7CisgICAgICAgIGlmICh0aGlzLl9zZWFyY2hGaWx0ZXIpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHJlY29yZCA9IHRoaXMuX3NlbGVjdGVkU2VhcmNo
UmVzdWx0OworICAgICAgICBpZiAoIXJlY29yZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBmb3IgKHZhciBlbGVtZW50ID0gdGhpcy5fc2lkZWJhckxpc3RFbGVtZW50LmZpcnN0Q2hp
bGQ7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50Lm5leHRTaWJsaW5nKSB7CisgICAgICAgICAg
ICBpZiAoZWxlbWVudC5yb3cuX3JlY29yZCA9PT0gcmVjb3JkKSB7CisgICAgICAgICAgICAgICAg
ZWxlbWVudC5yb3cuaGlnaGxpZ2h0KHRoaXMuX3NlYXJjaFJlZ0V4cCwgdGhpcy5faGlnaGxpZ2h0
RG9tQ2hhbmdlcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHJldmVhbFJlY29yZCkKKyAgICAgICAgICAgIHRoaXMuX3Jl
dmVhbFJlY29yZChyZWNvcmQpOworICAgIH0sCisKKyAgICBfY2xlYXJIaWdobGlnaHQ6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9oaWdobGlnaHREb21DaGFuZ2VzKQorICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnJldmVydERvbUNoYW5nZXModGhpcy5faGlnaGxpZ2h0RG9t
Q2hhbmdlcyk7CisgICAgICAgIHRoaXMuX2hpZ2hsaWdodERvbUNoYW5nZXMgPSBbXTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtib29sZWFufSByZXZlYWxSZWNvcmQKKyAgICAg
Ki8KKyAgICBfdXBkYXRlU2VhcmNoSGlnaGxpZ2h0OiBmdW5jdGlvbihyZXZlYWxSZWNvcmQpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5fc2VhcmNoRmlsdGVyIHx8ICF0aGlzLl9zZWFyY2hSZWdF
eHApIHsKKyAgICAgICAgICAgIHRoaXMuX2NsZWFySGlnaGxpZ2h0KCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMpCisg
ICAgICAgICAgICB0aGlzLl91cGRhdGVTZWFyY2hSZXN1bHRzKHRoaXMuX3NlYXJjaFJlZ0V4cCk7
CisKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VsZWN0ZWRTZWFyY2hSZXN1bHQocmV2ZWFsUmVj
b3JkKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHshUmVnRXhwfSBzZWFyY2hS
ZWdFeHAKKyAgICAgKi8KKyAgICBfdXBkYXRlU2VhcmNoUmVzdWx0czogZnVuY3Rpb24oc2VhcmNo
UmVnRXhwKSB7CisgICAgICAgIHZhciBtYXRjaGVzID0gW107CisgICAgICAgIHZhciBwcmVzZW50
YXRpb25Nb2RlbCA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsOworCisgICAgICAgIGZ1bmN0aW9u
IHByb2Nlc3NSZWNvcmQocmVjb3JkKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocHJlc2Vu
dGF0aW9uTW9kZWwuaXNWaXNpYmxlKHJlY29yZCkgJiYgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkTGlzdFJvdy50ZXN0Q29udGVudE1hdGNoaW5nKHJlY29yZCwgc2VhcmNoUmVnRXhwKSkKKyAg
ICAgICAgICAgICAgICBtYXRjaGVzLnB1c2gocmVjb3JkKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRp
b25Nb2RlbC5mb3JBbGxSZWNvcmRzKHByZXNlbnRhdGlvbk1vZGVsLnJvb3RSZWNvcmQoKS5jaGls
ZHJlbiwgcHJvY2Vzc1JlY29yZCk7CisKKyAgICAgICAgdmFyIG1hdGNoZXNDb3VudCA9IG1hdGNo
ZXMubGVuZ3RoOworICAgICAgICBpZiAobWF0Y2hlc0NvdW50KSB7CisgICAgICAgICAgICB0aGlz
Ll9zZWFyY2hSZXN1bHRzID0gbWF0Y2hlczsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZWFy
Y2hDb250cm9sbGVyLnVwZGF0ZVNlYXJjaE1hdGNoZXNDb3VudChtYXRjaGVzQ291bnQsIHRoaXMp
OworCisgICAgICAgICAgICB2YXIgc2VsZWN0ZWRJbmRleCA9IG1hdGNoZXMuaW5kZXhPZih0aGlz
Ll9zZWxlY3RlZFNlYXJjaFJlc3VsdCk7CisgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA9
PT0gLTEpCisgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCA9IDA7CisgICAgICAgICAgICB0
aGlzLl9zZWxlY3RTZWFyY2hSZXN1bHQoc2VsZWN0ZWRJbmRleCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRhdGVTZWFyY2hN
YXRjaGVzQ291bnQoMCwgdGhpcyk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2VsZWN0ZWRT
ZWFyY2hSZXN1bHQ7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgc2VhcmNoQ2FuY2VsZWQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NsZWFySGlnaGxpZ2h0KCk7CisgICAgICAg
IGRlbGV0ZSB0aGlzLl9zZWFyY2hSZXN1bHRzOworICAgICAgICBkZWxldGUgdGhpcy5fc2VsZWN0
ZWRTZWFyY2hSZXN1bHQ7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWFyY2hSZWdFeHA7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgY2Fu
RmlsdGVyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAor
CisgICAgcGVyZm9ybUZpbHRlcjogZnVuY3Rpb24oc2VhcmNoUXVlcnkpCisgICAgeworICAgICAg
ICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5yZW1vdmVGaWx0ZXIodGhpcy5fc2VhcmNoRmlsdGVy
KTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NlYXJjaEZpbHRlcjsKKyAgICAgICAgdGhpcy5zZWFy
Y2hDYW5jZWxlZCgpOworICAgICAgICBpZiAoc2VhcmNoUXVlcnkpIHsKKyAgICAgICAgICAgIHRo
aXMuX3NlYXJjaEZpbHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVTZWFyY2hGaWx0ZXIo
Y3JlYXRlUGxhaW5UZXh0U2VhcmNoUmVnZXgoc2VhcmNoUXVlcnksICJpIikpOworICAgICAgICAg
ICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRmlsdGVyKHRoaXMuX3NlYXJjaEZpbHRlcik7
CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5faW52YWxpZGF0ZUFuZFNjaGVkdWxlUmVmcmVzaCh0
cnVlKTsKKyAgICB9LAorCisgICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24oc2VhcmNoUXVlcnkp
CisgICAgeworICAgICAgICB0aGlzLl9zZWFyY2hSZWdFeHAgPSBjcmVhdGVQbGFpblRleHRTZWFy
Y2hSZWdleChzZWFyY2hRdWVyeSwgImkiKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NlYXJjaFJl
c3VsdHM7CisgICAgICAgIHRoaXMuX3VwZGF0ZVNlYXJjaEhpZ2hsaWdodCh0cnVlKTsKICAgICB9
CiB9CiAKQEAgLTExNTAsNiArMTMwMCwxMyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRM
aXN0Um93LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICBoaWdobGlnaHQ6
IGZ1bmN0aW9uKHJlZ0V4cCwgZG9tQ2hhbmdlcykKKyAgICB7CisgICAgICAgIHZhciBtYXRjaElu
Zm8gPSB0aGlzLmVsZW1lbnQudGV4dENvbnRlbnQubWF0Y2gocmVnRXhwKTsKKyAgICAgICAgaWYg
KG1hdGNoSW5mbykKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5oaWdobGlnaHRTZWFyY2hSZXN1
bHQodGhpcy5lbGVtZW50LCBtYXRjaEluZm8uaW5kZXgsIG1hdGNoSW5mb1swXS5sZW5ndGgsIGRv
bUNoYW5nZXMpOworICAgIH0sCisKICAgICBkaXNwb3NlOiBmdW5jdGlvbigpCiAgICAgewogICAg
ICAgICB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQp
OwpAQCAtMTE1Nyw2ICsxMzE0LDE1IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZExpc3RS
b3cucHJvdG90eXBlID0gewogfQogCiAvKioKKyAqIEBwYXJhbSB7IVdlYkluc3BlY3Rvci5UaW1l
bGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgKiBAcGFyYW0geyFSZWdFeHB9
IHJlZ0V4cAorICovCitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93LnRlc3RDb250
ZW50TWF0Y2hpbmcgPSBmdW5jdGlvbihyZWNvcmQsIHJlZ0V4cCkKK3sKKyAgICByZXR1cm4gcmVn
RXhwLnRlc3QocmVjb3JkLnRpdGxlICsgIiAoIiArIHJlY29yZC5kZXRhaWxzKCkgKyAiKSIpOwor
fQorCisvKioKICAqIEBjb25zdHJ1Y3RvcgogICovCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRHcmFwaFJvdyA9IGZ1bmN0aW9uKGdyYXBoQ29udGFpbmVyLCBzY2hlZHVsZVJlZnJlc2gpCkBA
IC0xMjcwLDcgKzE0MzYsOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeUZpbHRlciA9
IGZ1bmN0aW9uKCkKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnlGaWx0ZXIucHJvdG90
eXBlID0gewogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJl
c2VudGF0aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQKKyAgICAgKiBAcGFyYW0geyFXZWJJbnNwZWN0
b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJlY29yZAorICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CiAgICAgICovCiAgICAgYWNjZXB0OiBmdW5jdGlvbihyZWNvcmQpCiAgICAg
ewpAQCAtMTI5MCwxMCArMTQ1NywzMyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVJc0xvbmdGaWx0
ZXIgPSBmdW5jdGlvbihwYW5lbCkKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lSXNMb25nRmlsdGVy
LnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1l
bGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgICAgICogQHBhcmFtIHshV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQKKyAgICAg
KiBAcmV0dXJuIHtib29sZWFufQogICAgICAqLwogICAgIGFjY2VwdDogZnVuY3Rpb24ocmVjb3Jk
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhbmVsLl9zaG93U2hvcnRFdmVudHMgfHwg
cmVjb3JkLmlzTG9uZygpOwogICAgIH0KIH0KKworLyoqCisgKiBAcGFyYW0geyFSZWdFeHB9IHJl
Z0V4cAorICogQGNvbnN0cnVjdG9yCisgKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLlRpbWVs
aW5lUHJlc2VudGF0aW9uTW9kZWwuRmlsdGVyfQorICovCitXZWJJbnNwZWN0b3IuVGltZWxpbmVT
ZWFyY2hGaWx0ZXIgPSBmdW5jdGlvbihyZWdFeHApCit7CisgICAgdGhpcy5fcmVnRXhwID0gcmVn
RXhwOworfQorCitXZWJJbnNwZWN0b3IuVGltZWxpbmVTZWFyY2hGaWx0ZXIucHJvdG90eXBlID0g
eworCisgICAgLyoqCisgICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2Vu
dGF0aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAg
ICAqLworICAgIGFjY2VwdDogZnVuY3Rpb24ocmVjb3JkKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZExpc3RSb3cudGVzdENvbnRlbnRNYXRjaGluZyhy
ZWNvcmQsIHRoaXMuX3JlZ0V4cCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVs
LmpzCmluZGV4IDZiOWVhNWQyODFjYTE5NGIyMTdhMWJhYmRmZjhhYzNhOTZkOGRmNWIuLjI5ODFh
ZjNjM2UwYTVkYmU2N2RjZmRhOWNjMThjZmU3ZGRkYjQxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0
aW9uTW9kZWwuanMKQEAgLTIyMCwxMyArMjIwLDIzIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBy
ZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUV2ZW50RGl2aWRlciA9IGZ1bmN0aW9uKHJlY29yZFR5cGUs
CiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsK
ICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlv
bk1vZGVsLkZpbHRlcn0gZmlsdGVyCisgICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUHJlc2VudGF0aW9uTW9kZWwuRmlsdGVyfSBmaWx0ZXIKICAgICAgKi8KICAgICBhZGRGaWx0
ZXI6IGZ1bmN0aW9uKGZpbHRlcikKICAgICB7CiAgICAgICAgIHRoaXMuX2ZpbHRlcnMucHVzaChm
aWx0ZXIpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyFXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5GaWx0ZXJ9IGZpbHRlcgorICAgICAqLworICAgIHJl
bW92ZUZpbHRlcjogZnVuY3Rpb24oZmlsdGVyKQorICAgIHsKKyAgICAgICAgdmFyIGluZGV4ID0g
dGhpcy5fZmlsdGVycy5pbmRleE9mKGZpbHRlcik7CisgICAgICAgIGlmIChpbmRleCAhPT0gLTEp
CisgICAgICAgICAgICB0aGlzLl9maWx0ZXJzLnNwbGljZShpbmRleCwgMSk7CisgICAgfSwKKwog
ICAgIHJvb3RSZWNvcmQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9y
b290UmVjb3JkOwpAQCAtMTEwNiw3ICsxMTE2LDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJl
c2VudGF0aW9uTW9kZWwuRmlsdGVyID0gZnVuY3Rpb24oKQogCiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVQcmVzZW50YXRpb25Nb2RlbC5GaWx0ZXIucHJvdG90eXBlID0gewogICAgIC8qKgotICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkfSBy
ZWNvcmQKKyAgICAgKiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25N
b2RlbC5SZWNvcmR9IHJlY29yZAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgICovCiAg
ICAgYWNjZXB0OiBmdW5jdGlvbihyZWNvcmQpIHsgcmV0dXJuIGZhbHNlOyB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCmluZGV4IGQ0OWQ1
MmZlOThhYzU0N2U4MDA0MmQwYThhN2IyZWU2NGU4NDBlMDQuLmNhNzFmYzliYmZiZTQwNGI2YjRm
NDExZDcyNGMzYjYzNzdlZTNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvdXRpbGl0aWVzLmpzCkBAIC02MzEsNyArNjMxLDcgQEAgZnVuY3Rpb24gY3JlYXRl
U2VhcmNoUmVnZXgocXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgpCiAvKioKICAqIEBwYXJh
bSB7c3RyaW5nfSBxdWVyeQogICogQHBhcmFtIHtzdHJpbmc9fSBmbGFncwotICogQHJldHVybiB7
UmVnRXhwfQorICogQHJldHVybiB7IVJlZ0V4cH0KICAqLwogZnVuY3Rpb24gY3JlYXRlUGxhaW5U
ZXh0U2VhcmNoUmVnZXgocXVlcnksIGZsYWdzKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163553</attachid>
            <date>2012-09-12 02:11:00 -0700</date>
            <delta_ts>2012-09-12 04:25:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95445-20120912131033.patch</filename>
            <type>text/plain</type>
            <size>15477</size>
            <attacher>eustas.bug</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU2YTA4Nzg4ZTc3ZWU5
M2Y3MTlhZmFhODI5NzdkN2ZhNDA4ZTVmMi4uNzcyYzNhMzcyNDdiNjdkZTE0MmVjZDc2Y2RiYmQ1
OTBmNWQ2ODA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA5LTEyICBFdWdl
bmUgS2x5dWNobmlrb3YgIDxldXN0YXMuYnVnQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBJbXBsZW1lbnQgc2VhcmNoIGFuZCBmaWx0ZXJpbmcgb24gVGltZWxpbmUgcGFuZWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
ZWQgdGV4dHVhbCBzZWFyY2gvZmlsdGVyaW5nIG9uIFRpbWVsaW5lIHBhbmVsLgorICAgICAgICBG
aXhlZCAicmV2ZWFsUmVjb3JkQXQiIC0gbm93IGl0IHNjYW5zIGFsbCByZWNvcmRzIGluIHdpbmRv
dywKKyAgICAgICAgbm93IG9ubHkgdmlzaWJsZSBvbmVzLgorCisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVdpbmRvd0ZpbHRlcik6CisgICAgICAgIEV4dHJhY3RlZCBmcm9tIFRpbWVsaW5l
T3ZlcnZpZXdQYW5lIGNsYXNzLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxp
bmVQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5yZXZlYWxSZWNvcmRBdCk6
CisgICAgICAgIFVzZWQgREZTIHRvIHNjYW4gcmVjb3Jkcy4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fcmV2ZWFsUmVjb3JkKToKKyAgICAgICAgRXh0cmFj
dGVkIGNvbW1vbiBjb2RlLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2VhcmNoRmls
dGVyKToKKyAgICAgICAgSW1wbGVtZW50ZWQgc2VhcmNoIGFuZCBmaWx0cmF0aW9uLgorCiAyMDEy
LTA5LTEyICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gRmxpcCBZIGFuZCBzd2l6emxlIGluc2lkZSBjb21wb3NpdGVBbmRSZWFkYmFj
ayBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUuanMKaW5kZXggNzk3ZGYyMDhiNTQyOGMy
MDc2N2ZiYTA2MDdhN2I2N2NiZjE4MThkOC4uZWNkZmE4MjBmNGU1Njc1OGU3MjhlMjE4MjcxMGM0
MTkyYjJlNjVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5lLmpzCkBAIC0zMSw3ICszMSw2IEBACiAvKioK
ICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQotICogQGlt
cGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLkZpbHRlcn0K
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWx9IG1vZGVsCiAgKi8KIFdlYklu
c3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFuZSA9IGZ1bmN0aW9uKG1vZGVsKQpAQCAtMjc0LDE0
ICsyNzMsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmUucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJlY29y
ZAotICAgICAqLwotICAgIGFjY2VwdDogZnVuY3Rpb24ocmVjb3JkKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHJlY29yZC5sYXN0Q2hpbGRFbmRUaW1lID49IHRoaXMuX3dpbmRvd1N0YXJ0VGltZSAm
JiByZWNvcmQuc3RhcnRUaW1lIDw9IHRoaXMuX3dpbmRvd0VuZFRpbWU7Ci0gICAgfSwKLQogICAg
IHdpbmRvd1N0YXJ0VGltZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3dpbmRvd1N0YXJ0VGltZSB8fCB0aGlzLl9tb2RlbC5taW5pbXVtUmVjb3JkVGltZSgpOwpAQCAt
MTIzMiwzICsxMjIzLDI0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUZyYW1lT3ZlcnZpZXcucHJv
dG90eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVGcmFtZU92ZXJ2aWV3LnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CisKKy8qKgorICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld1BhbmV9IHBhbmUKKyAqIEBjb25z
dHJ1Y3RvcgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlv
bk1vZGVsLkZpbHRlcn0KKyAqLworV2ViSW5zcGVjdG9yLlRpbWVsaW5lV2luZG93RmlsdGVyID0g
ZnVuY3Rpb24ocGFuZSkKK3sKKyAgICB0aGlzLl9wYW5lID0gcGFuZTsKK30KKworV2ViSW5zcGVj
dG9yLlRpbWVsaW5lV2luZG93RmlsdGVyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0geyFXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJl
Y29yZAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgYWNjZXB0OiBmdW5j
dGlvbihyZWNvcmQpCisgICAgeworICAgICAgICByZXR1cm4gcmVjb3JkLmxhc3RDaGlsZEVuZFRp
bWUgPj0gdGhpcy5fcGFuZS5fd2luZG93U3RhcnRUaW1lICYmIHJlY29yZC5zdGFydFRpbWUgPD0g
dGhpcy5fcGFuZS5fd2luZG93RW5kVGltZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggNDcyYWNlMmRk
MTk3OTcxMDFjZmIyNTdhMTlkZmNlYzMxZjY0NmRkZC4uNGNjYjdhNDJjNmJmZmZjZmU0NzgyMTIy
ZjVkY2Y5MTY2YTYyOGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMTQ1LDkgKzE0NSw5IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5fYWxsUmVjb3Jkc0NvdW50
ID0gMDsKIAotICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZpbHRlcih0aGlzLl9vdmVy
dmlld1BhbmUpOworICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZpbHRlcihuZXcgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lV2luZG93RmlsdGVyKHRoaXMuX292ZXJ2aWV3UGFuZSkpOwogICAg
IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZpbHRlcihuZXcgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQ2F0ZWdvcnlGaWx0ZXIoKSk7IAotICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZp
bHRlcihuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lSXNMb25nRmlsdGVyKHRoaXMpKTsgCisgICAg
dGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRmlsdGVyKG5ldyBXZWJJbnNwZWN0b3IuVGltZWxp
bmVJc0xvbmdGaWx0ZXIodGhpcykpOwogfQogCiAvLyBEZWZpbmUgcm93IGhlaWdodCwgc2hvdWxk
IGJlIGluIHN5bmMgd2l0aCBzdHlsZXMgZm9yIHRpbWVsaW5lIGdyYXBocy4KQEAgLTY3MSw2ICs2
NzEsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgX2lu
dmFsaWRhdGVBbmRTY2hlZHVsZVJlZnJlc2g6IGZ1bmN0aW9uKHByZXNlcnZlQm91bmRhcmllcykK
ICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmludmFsaWRhdGVGaWx0ZXJl
ZFJlY29yZHMoKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NlYXJjaFJlc3VsdHM7CiAgICAgICAg
IHRoaXMuX3NjaGVkdWxlUmVmcmVzaChwcmVzZXJ2ZUJvdW5kYXJpZXMpOwogICAgIH0sCiAKQEAg
LTcyNCwxOCArNzI1LDE5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9
IHsKIAogICAgIHJldmVhbFJlY29yZEF0OiBmdW5jdGlvbih0aW1lKQogICAgIHsKLSAgICAgICAg
dmFyIHJlY29yZHNJbldpbmRvdyA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmZpbHRlcmVkUmVj
b3JkcygpOwogICAgICAgICB2YXIgcmVjb3JkVG9SZXZlYWw7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcmVjb3Jkc0luV2luZG93Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIg
cmVjb3JkID0gcmVjb3Jkc0luV2luZG93W2ldOworICAgICAgICBmdW5jdGlvbiBmaW5kUmVjb3Jk
VG9SZXZlYWwocmVjb3JkKQorICAgICAgICB7CiAgICAgICAgICAgICBpZiAocmVjb3JkLmNvbnRh
aW5zVGltZSh0aW1lKSkgewogICAgICAgICAgICAgICAgIHJlY29yZFRvUmV2ZWFsID0gcmVjb3Jk
OwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmVjb3JkIGNvbnRh
aW5pbmcgdGhlIHRpbWUgdGhhbiB1c2UgdGhlIGxhdGVzdCBvbmUgYmVmb3JlIHRoYXQgdGltZS4K
ICAgICAgICAgICAgIGlmICghcmVjb3JkVG9SZXZlYWwgfHwgcmVjb3JkLmVuZFRpbWUgPCB0aW1l
ICYmIHJlY29yZFRvUmV2ZWFsLmVuZFRpbWUgPCByZWNvcmQuZW5kVGltZSkKICAgICAgICAgICAg
ICAgICByZWNvcmRUb1JldmVhbCA9IHJlY29yZDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2Rl
bC5mb3JBbGxSZWNvcmRzKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJvb3RSZWNvcmQoKS5jaGls
ZHJlbiwgbnVsbCwgZmluZFJlY29yZFRvUmV2ZWFsKTsKIAogICAgICAgICAvLyBUaGUgcmVjb3Jk
IGVuZHMgYmVmb3JlIHRoZSB3aW5kb3cgbGVmdCBib3VuZCBzbyBzY3JvbGwgdG8gdGhlIHRvcC4K
ICAgICAgICAgaWYgKCFyZWNvcmRUb1JldmVhbCkgewpAQCAtNzQzLDkgKzc0NSwyMSBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAorICAgICAgICB0aGlzLl9yZXZlYWxSZWNvcmQocmVjb3JkVG9SZXZlYWwp
OworICAgIH0sCisKKyAgICBfcmV2ZWFsUmVjb3JkOiBmdW5jdGlvbihyZWNvcmRUb1JldmVhbCkK
KyAgICB7CiAgICAgICAgIC8vIEV4cGFuZCBhbGwgYW5jZXN0b3JzLgotICAgICAgICBmb3IgKHZh
ciBwYXJlbnQgPSByZWNvcmRUb1JldmVhbC5wYXJlbnQ7IHBhcmVudCAhPT0gdGhpcy5fcm9vdFJl
Y29yZCgpOyBwYXJlbnQgPSBwYXJlbnQucGFyZW50KQorICAgICAgICB2YXIgdHJlZVVwZGF0ZWQg
PSBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgcGFyZW50ID0gcmVjb3JkVG9SZXZlYWwucGFyZW50
OyBwYXJlbnQgIT09IHRoaXMuX3Jvb3RSZWNvcmQoKTsgcGFyZW50ID0gcGFyZW50LnBhcmVudCkg
eworICAgICAgICAgICAgdHJlZVVwZGF0ZWQgPSB0cmVlVXBkYXRlZCB8fCBwYXJlbnQuY29sbGFw
c2VkOwogICAgICAgICAgICAgcGFyZW50LmNvbGxhcHNlZCA9IGZhbHNlOworICAgICAgICB9Cisg
ICAgICAgIGlmICh0cmVlVXBkYXRlZCkKKyAgICAgICAgICAgIHRoaXMuX2ludmFsaWRhdGVBbmRT
Y2hlZHVsZVJlZnJlc2godHJ1ZSk7CisKKyAgICAgICAgdmFyIHJlY29yZHNJbldpbmRvdyA9IHRo
aXMuX3ByZXNlbnRhdGlvbk1vZGVsLmZpbHRlcmVkUmVjb3JkcygpOwogICAgICAgICB2YXIgaW5k
ZXggPSByZWNvcmRzSW5XaW5kb3cuaW5kZXhPZihyZWNvcmRUb1JldmVhbCk7CiAgICAgICAgIHRo
aXMuX2NvbnRhaW5lckVsZW1lbnQuc2Nyb2xsVG9wID0gaW5kZXggKiBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQYW5lbC5yb3dIZWlnaHQ7CiAgICAgfSwKQEAgLTgzMiw2ICs4NDYsNyBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2l0ZW1zR3Jh
cGhzRWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fZ3JhcGhSb3dzRWxlbWVudCwgdGhpcy5fYm90
dG9tR2FwRWxlbWVudCk7CiAgICAgICAgIHRoaXMuX2l0ZW1zR3JhcGhzRWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9leHBhbmRFbGVtZW50cyk7CiAgICAgICAgIHRoaXMuX2FkanVzdFNjcm9sbFBv
c2l0aW9uKChyZWNvcmRzSW5XaW5kb3cubGVuZ3RoICsgdGhpcy5faGVhZGVyTGluZUNvdW50KSAq
IHJvd0hlaWdodCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZVNlYXJjaEhpZ2hsaWdodChmYWxzZSk7
CiAKICAgICAgICAgcmV0dXJuIHJlY29yZHNJbldpbmRvdy5sZW5ndGg7CiAgICAgfSwKQEAgLTEw
MDIsNiArMTAxNywxNDIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gT2JqZWN0LnZhbHVlcyhjYXRlZ29yaWVz
KS5tYXAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlU3R5bGVS
dWxlRm9yQ2F0ZWdvcnkpLmpvaW4oIlxuIik7CiAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5k
Q2hpbGQoc3R5bGUpOworICAgIH0sCisKKyAgICBqdW1wVG9OZXh0U2VhcmNoUmVzdWx0OiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9qdW1wVG9BZGphY2VudFJlY29yZCgxKTsKKyAg
ICB9LAorCisgICAganVtcFRvUHJldmlvdXNTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2p1bXBUb0FkamFjZW50UmVjb3JkKC0xKTsKKyAgICB9LAorCisgICAg
X2p1bXBUb0FkamFjZW50UmVjb3JkOiBmdW5jdGlvbihvZmZzZXQpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoIHx8
ICF0aGlzLl9zZWxlY3RlZFNlYXJjaFJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgdmFyIGluZGV4ID0gdGhpcy5fc2VhcmNoUmVzdWx0cy5pbmRleE9mKHRoaXMuX3NlbGVjdGVk
U2VhcmNoUmVzdWx0KTsKKyAgICAgICAgaW5kZXggPSAoaW5kZXggKyBvZmZzZXQgKyB0aGlzLl9z
ZWFyY2hSZXN1bHRzLmxlbmd0aCkgJSB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aDsKKyAgICAg
ICAgdGhpcy5fc2VsZWN0U2VhcmNoUmVzdWx0KGluZGV4KTsKKyAgICAgICAgdGhpcy5faGlnaGxp
Z2h0U2VsZWN0ZWRTZWFyY2hSZXN1bHQodHJ1ZSk7CisgICAgfSwKKworICAgIF9zZWxlY3RTZWFy
Y2hSZXN1bHQ6IGZ1bmN0aW9uKGluZGV4KQorICAgIHsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRT
ZWFyY2hSZXN1bHQgPSB0aGlzLl9zZWFyY2hSZXN1bHRzW2luZGV4XTsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRlQ3VycmVudE1hdGNoSW5kZXgoaW5kZXgsIHRo
aXMpOworICAgIH0sCisKKyAgICBfaGlnaGxpZ2h0U2VsZWN0ZWRTZWFyY2hSZXN1bHQ6IGZ1bmN0
aW9uKHJldmVhbFJlY29yZCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NsZWFySGlnaGxpZ2h0KCk7
CisgICAgICAgIGlmICh0aGlzLl9zZWFyY2hGaWx0ZXIpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdmFyIHJlY29yZCA9IHRoaXMuX3NlbGVjdGVkU2VhcmNoUmVzdWx0OworICAgICAg
ICBpZiAoIXJlY29yZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBl
bGVtZW50ID0gdGhpcy5fc2lkZWJhckxpc3RFbGVtZW50LmZpcnN0Q2hpbGQ7IGVsZW1lbnQ7IGVs
ZW1lbnQgPSBlbGVtZW50Lm5leHRTaWJsaW5nKSB7CisgICAgICAgICAgICBpZiAoZWxlbWVudC5y
b3cuX3JlY29yZCA9PT0gcmVjb3JkKSB7CisgICAgICAgICAgICAgICAgZWxlbWVudC5yb3cuaGln
aGxpZ2h0KHRoaXMuX3NlYXJjaFJlZ0V4cCwgdGhpcy5faGlnaGxpZ2h0RG9tQ2hhbmdlcyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHJldmVhbFJlY29yZCkKKyAgICAgICAgICAgIHRoaXMuX3JldmVhbFJlY29yZChyZWNv
cmQpOworICAgIH0sCisKKyAgICBfY2xlYXJIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9oaWdobGlnaHREb21DaGFuZ2VzKQorICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLnJldmVydERvbUNoYW5nZXModGhpcy5faGlnaGxpZ2h0RG9tQ2hhbmdlcyk7CisgICAg
ICAgIHRoaXMuX2hpZ2hsaWdodERvbUNoYW5nZXMgPSBbXTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtib29sZWFufSByZXZlYWxSZWNvcmQKKyAgICAgKi8KKyAgICBfdXBkYXRl
U2VhcmNoSGlnaGxpZ2h0OiBmdW5jdGlvbihyZXZlYWxSZWNvcmQpCisgICAgeworICAgICAgICBp
ZiAodGhpcy5fc2VhcmNoRmlsdGVyIHx8ICF0aGlzLl9zZWFyY2hSZWdFeHApIHsKKyAgICAgICAg
ICAgIHRoaXMuX2NsZWFySGlnaGxpZ2h0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMpCisgICAgICAgICAgICB0aGlz
Ll91cGRhdGVTZWFyY2hSZXN1bHRzKCk7CisKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VsZWN0
ZWRTZWFyY2hSZXN1bHQocmV2ZWFsUmVjb3JkKTsKKyAgICB9LAorCisgICAgX3VwZGF0ZVNlYXJj
aFJlc3VsdHM6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc2VhcmNoUmVnRXhwID0gdGhpcy5f
c2VhcmNoUmVnRXhwOworICAgICAgICBpZiAoIXNlYXJjaFJlZ0V4cCkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB2YXIgbWF0Y2hlcyA9IFtdOworICAgICAgICB2YXIgcHJlc2VudGF0
aW9uTW9kZWwgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbDsKKworICAgICAgICBmdW5jdGlvbiBw
cm9jZXNzUmVjb3JkKHJlY29yZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHByZXNlbnRh
dGlvbk1vZGVsLmlzVmlzaWJsZShyZWNvcmQpICYmIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZExpc3RSb3cudGVzdENvbnRlbnRNYXRjaGluZyhyZWNvcmQsIHNlYXJjaFJlZ0V4cCkpCisgICAg
ICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKHJlY29yZCk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9u
TW9kZWwuZm9yQWxsUmVjb3JkcyhwcmVzZW50YXRpb25Nb2RlbC5yb290UmVjb3JkKCkuY2hpbGRy
ZW4sIHByb2Nlc3NSZWNvcmQpOworCisgICAgICAgIHZhciBtYXRjaGVzQ291bnQgPSBtYXRjaGVz
Lmxlbmd0aDsKKyAgICAgICAgaWYgKG1hdGNoZXNDb3VudCkgeworICAgICAgICAgICAgdGhpcy5f
c2VhcmNoUmVzdWx0cyA9IG1hdGNoZXM7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNo
Q29udHJvbGxlci51cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQobWF0Y2hlc0NvdW50LCB0aGlzKTsK
KworICAgICAgICAgICAgdmFyIHNlbGVjdGVkSW5kZXggPSBtYXRjaGVzLmluZGV4T2YodGhpcy5f
c2VsZWN0ZWRTZWFyY2hSZXN1bHQpOworICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPT09
IC0xKQorICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSAwOworICAgICAgICAgICAgdGhp
cy5fc2VsZWN0U2VhcmNoUmVzdWx0KHNlbGVjdGVkSW5kZXgpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRlU2VhcmNoTWF0
Y2hlc0NvdW50KDAsIHRoaXMpOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NlbGVjdGVkU2Vh
cmNoUmVzdWx0OworICAgICAgICB9CisgICAgfSwKKworICAgIHNlYXJjaENhbmNlbGVkOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9jbGVhckhpZ2hsaWdodCgpOworICAgICAgICBk
ZWxldGUgdGhpcy5fc2VhcmNoUmVzdWx0czsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NlbGVjdGVk
U2VhcmNoUmVzdWx0OworICAgICAgICBkZWxldGUgdGhpcy5fc2VhcmNoUmVnRXhwOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGNhbkZp
bHRlcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKwor
ICAgIHBlcmZvcm1GaWx0ZXI6IGZ1bmN0aW9uKHNlYXJjaFF1ZXJ5KQorICAgIHsKKyAgICAgICAg
dGhpcy5fcHJlc2VudGF0aW9uTW9kZWwucmVtb3ZlRmlsdGVyKHRoaXMuX3NlYXJjaEZpbHRlcik7
CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWFyY2hGaWx0ZXI7CisgICAgICAgIHRoaXMuc2VhcmNo
Q2FuY2VsZWQoKTsKKyAgICAgICAgaWYgKHNlYXJjaFF1ZXJ5KSB7CisgICAgICAgICAgICB0aGlz
Ll9zZWFyY2hGaWx0ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2VhcmNoRmlsdGVyKGNy
ZWF0ZVBsYWluVGV4dFNlYXJjaFJlZ2V4KHNlYXJjaFF1ZXJ5LCAiaSIpKTsKKyAgICAgICAgICAg
IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEZpbHRlcih0aGlzLl9zZWFyY2hGaWx0ZXIpOwor
ICAgICAgICB9CisgICAgICAgIHRoaXMuX2ludmFsaWRhdGVBbmRTY2hlZHVsZVJlZnJlc2godHJ1
ZSk7CisgICAgfSwKKworICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHNlYXJjaFF1ZXJ5KQor
ICAgIHsKKyAgICAgICAgdGhpcy5fc2VhcmNoUmVnRXhwID0gY3JlYXRlUGxhaW5UZXh0U2VhcmNo
UmVnZXgoc2VhcmNoUXVlcnksICJpIik7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWFyY2hSZXN1
bHRzOworICAgICAgICB0aGlzLl91cGRhdGVTZWFyY2hIaWdobGlnaHQodHJ1ZSk7CiAgICAgfQog
fQogCkBAIC0xMTUxLDYgKzEzMDIsMTMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkTGlz
dFJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisgICAgaGlnaGxpZ2h0OiBm
dW5jdGlvbihyZWdFeHAsIGRvbUNoYW5nZXMpCisgICAgeworICAgICAgICB2YXIgbWF0Y2hJbmZv
ID0gdGhpcy5lbGVtZW50LnRleHRDb250ZW50Lm1hdGNoKHJlZ0V4cCk7CisgICAgICAgIGlmICht
YXRjaEluZm8pCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0U2VhcmNoUmVzdWx0
KHRoaXMuZWxlbWVudCwgbWF0Y2hJbmZvLmluZGV4LCBtYXRjaEluZm9bMF0ubGVuZ3RoLCBkb21D
aGFuZ2VzKTsKKyAgICB9LAorCiAgICAgZGlzcG9zZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTsK
QEAgLTExNTgsNiArMTMxNiwxNSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93
LnByb3RvdHlwZSA9IHsKIH0KIAogLyoqCisgKiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuVGltZWxp
bmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJlY29yZAorICogQHBhcmFtIHshUmVnRXhwfSBy
ZWdFeHAKKyAqLworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdy50ZXN0Q29udGVu
dE1hdGNoaW5nID0gZnVuY3Rpb24ocmVjb3JkLCByZWdFeHApCit7CisgICAgcmV0dXJuIHJlZ0V4
cC50ZXN0KHJlY29yZC50aXRsZSArICIgKCIgKyByZWNvcmQuZGV0YWlscygpICsgIikiKTsKK30K
KworLyoqCiAgKiBAY29uc3RydWN0b3IKICAqLwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
R3JhcGhSb3cgPSBmdW5jdGlvbihncmFwaENvbnRhaW5lciwgc2NoZWR1bGVSZWZyZXNoKQpAQCAt
MTI3MSw3ICsxNDM4LDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnlGaWx0ZXIgPSBm
dW5jdGlvbigpCiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5RmlsdGVyLnByb3RvdHlw
ZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNl
bnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuUmVjb3JkfSByZWNvcmQKKyAgICAgKiBAcmV0dXJu
IHtib29sZWFufQogICAgICAqLwogICAgIGFjY2VwdDogZnVuY3Rpb24ocmVjb3JkKQogICAgIHsK
QEAgLTEyOTEsMTAgKzE0NTksMzMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lSXNMb25nRmlsdGVy
ID0gZnVuY3Rpb24ocGFuZWwpCiAKIFdlYkluc3BlY3Rvci5UaW1lbGluZUlzTG9uZ0ZpbHRlci5w
cm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxp
bmVQcmVzZW50YXRpb25Nb2RlbC5SZWNvcmR9IHJlY29yZAorICAgICAqIEBwYXJhbSB7IVdlYklu
c3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgICAgICog
QHJldHVybiB7Ym9vbGVhbn0KICAgICAgKi8KICAgICBhY2NlcHQ6IGZ1bmN0aW9uKHJlY29yZCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYW5lbC5fc2hvd1Nob3J0RXZlbnRzIHx8IHJl
Y29yZC5pc0xvbmcoKTsKICAgICB9CiB9CisKKy8qKgorICogQHBhcmFtIHshUmVnRXhwfSByZWdF
eHAKKyAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5UaW1lbGlu
ZVByZXNlbnRhdGlvbk1vZGVsLkZpbHRlcn0KKyAqLworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2Vh
cmNoRmlsdGVyID0gZnVuY3Rpb24ocmVnRXhwKQoreworICAgIHRoaXMuX3JlZ0V4cCA9IHJlZ0V4
cDsKK30KKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2VhcmNoRmlsdGVyLnByb3RvdHlwZSA9IHsK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IVdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRh
dGlvbk1vZGVsLlJlY29yZH0gcmVjb3JkCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAg
Ki8KKyAgICBhY2NlcHQ6IGZ1bmN0aW9uKHJlY29yZCkKKyAgICB7CisgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93LnRlc3RDb250ZW50TWF0Y2hpbmcocmVj
b3JkLCB0aGlzLl9yZWdFeHApOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5q
cwppbmRleCBkMDBjN2NiNWVmYjljNTk1NzIzYjQ2NzY5YmE2Y2M1NjE0NGUxYTNkLi44MDY1ZjVm
YTA2YTYxOTNkOTJjYTExZjQyODFjM2M3MGZkZTRmZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVByZXNlbnRhdGlv
bk1vZGVsLmpzCkBAIC0yMjYsMTMgKzIyNiwyMyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVz
ZW50YXRpb25Nb2RlbC5faGlkZGVuUmVjb3Jkc1tXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbAog
CiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAg
ICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGltZWxpbmVQcmVzZW50YXRpb25N
b2RlbC5GaWx0ZXJ9IGZpbHRlcgorICAgICAqIEBwYXJhbSB7IVdlYkluc3BlY3Rvci5UaW1lbGlu
ZVByZXNlbnRhdGlvbk1vZGVsLkZpbHRlcn0gZmlsdGVyCiAgICAgICovCiAgICAgYWRkRmlsdGVy
OiBmdW5jdGlvbihmaWx0ZXIpCiAgICAgewogICAgICAgICB0aGlzLl9maWx0ZXJzLnB1c2goZmls
dGVyKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUHJlc2VudGF0aW9uTW9kZWwuRmlsdGVyfSBmaWx0ZXIKKyAgICAgKi8KKyAgICByZW1v
dmVGaWx0ZXI6IGZ1bmN0aW9uKGZpbHRlcikKKyAgICB7CisgICAgICAgIHZhciBpbmRleCA9IHRo
aXMuX2ZpbHRlcnMuaW5kZXhPZihmaWx0ZXIpOworICAgICAgICBpZiAoaW5kZXggIT09IC0xKQor
ICAgICAgICAgICAgdGhpcy5fZmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpOworICAgIH0sCisKICAg
ICByb290UmVjb3JkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcm9v
dFJlY29yZDsKQEAgLTExMTIsNyArMTEyMiw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVByZXNl
bnRhdGlvbk1vZGVsLkZpbHRlciA9IGZ1bmN0aW9uKCkKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UHJlc2VudGF0aW9uTW9kZWwuRmlsdGVyLnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5UaW1lbGluZVByZXNlbnRhdGlvbk1vZGVsLlJlY29yZH0gcmVj
b3JkCisgICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlRpbWVsaW5lUHJlc2VudGF0aW9uTW9k
ZWwuUmVjb3JkfSByZWNvcmQKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAqLwogICAg
IGFjY2VwdDogZnVuY3Rpb24ocmVjb3JkKSB7IHJldHVybiBmYWxzZTsgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCAyNmJmNDdl
ZjhhYzY4NjUzZjg0YzFkNmJmNzU0YzcxMTJmYzU3OGZlLi4xMjFmMWVhYjg4MGMxYTNlYjJhNTkx
MDU5ZDc1MDVmMjUwY2Y0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL3V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL3V0aWxpdGllcy5qcwpAQCAtNjMxLDcgKzYzMSw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVNl
YXJjaFJlZ2V4KHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KQogLyoqCiAgKiBAcGFyYW0g
e3N0cmluZ30gcXVlcnkKICAqIEBwYXJhbSB7c3RyaW5nPX0gZmxhZ3MKLSAqIEByZXR1cm4ge1Jl
Z0V4cH0KKyAqIEByZXR1cm4geyFSZWdFeHB9CiAgKi8KIGZ1bmN0aW9uIGNyZWF0ZVBsYWluVGV4
dFNlYXJjaFJlZ2V4KHF1ZXJ5LCBmbGFncykKIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>