<?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>87863</bug_id>
          
          <creation_ts>2012-05-30 09:41:32 -0700</creation_ts>
          <short_desc>Web Inspector: speed up _calculateRetainedSizes function</short_desc>
          <delta_ts>2012-06-04 05:38:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Alexei Filippov">alph</reporter>
          <assigned_to name="Alexei Filippov">alph</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</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>637319</commentid>
    <comment_count>0</comment_count>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-05-30 09:41:32 -0700</bug_when>
    <thetext>Rewrite the algorithm to be O(n) instead of O(n*log(n)).

Before:
RESULT heap-snapshot: _calculateRetainedSizes= 86 ms

After:
RESULT heap-snapshot: _calculateRetainedSizes= 31 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637338</commentid>
    <comment_count>1</comment_count>
      <attachid>144845</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-05-30 10:00:05 -0700</bug_when>
    <thetext>Created attachment 144845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638080</commentid>
    <comment_count>2</comment_count>
      <attachid>144845</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-31 00:59:00 -0700</bug_when>
    <thetext>Comment on attachment 144845
Patch

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

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1253
&gt; +        var nodesSelfSize = this._nodes.subarray(this._nodeSelfSizeOffset);

You don&apos;t need subarray here, adding this._nodeSelfSizeOffset would probably be more clear to the reader.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1263
&gt; +        nodeStack[nodeStackTop] = rootNodeOrdinal;

Now that we anyways have postorder index we could go though it and update each nodes retained size sequentially. This way you wouldn&apos;t need this stack. WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638081</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-31 00:59:17 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Rewrite the algorithm to be O(n) instead of O(n*log(n)).
&gt; 
&gt; Before:
&gt; RESULT heap-snapshot: _calculateRetainedSizes= 86 ms
&gt; 
&gt; After:
&gt; RESULT heap-snapshot: _calculateRetainedSizes= 31 ms

What&apos;s the point in optimizing this given that it is such a small fraction of the overall time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638238</commentid>
    <comment_count>4</comment_count>
      <attachid>144845</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-31 04:50:35 -0700</bug_when>
    <thetext>Comment on attachment 144845
Patch

Clearing r? until the comments are addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638270</commentid>
    <comment_count>5</comment_count>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-05-31 05:25:51 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 144845 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144845&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1253
&gt; &gt; +        var nodesSelfSize = this._nodes.subarray(this._nodeSelfSizeOffset);
&gt; 
&gt; You don&apos;t need subarray here, adding this._nodeSelfSizeOffset would probably be more clear to the reader.

I&apos;ve done that to eliminate extra addition from the loop. But if you think the code became too complicated, I&apos;ll change it back.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1263
&gt; &gt; +        nodeStack[nodeStackTop] = rootNodeOrdinal;
&gt; 
&gt; Now that we anyways have postorder index we could go though it and update each nodes retained size sequentially. This way you wouldn&apos;t need this stack. WDYT?

Cool idea. Done that. The time has reduced to 10ms.

(In reply to comment #3)
&gt; (In reply to comment #0)
&gt; &gt; Rewrite the algorithm to be O(n) instead of O(n*log(n)).
&gt; &gt; 
&gt; &gt; Before:
&gt; &gt; RESULT heap-snapshot: _calculateRetainedSizes= 86 ms
&gt; &gt; 
&gt; &gt; After:
&gt; &gt; RESULT heap-snapshot: _calculateRetainedSizes= 31 ms
&gt; 
&gt; What&apos;s the point in optimizing this given that it is such a small fraction of the overall time?

This fraction is small for this particular performance test. You know the current algorithm has O(n*n) for the worst case (e.g. a linked list structure).
I checked it on a worst case test having 50k objects. The time it spends in this function has dropped from 10000ms to 2ms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638275</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-31 05:30:39 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 144845 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144845&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1253
&gt; &gt; &gt; +        var nodesSelfSize = this._nodes.subarray(this._nodeSelfSizeOffset);
&gt; &gt; 
&gt; &gt; You don&apos;t need subarray here, adding this._nodeSelfSizeOffset would probably be more clear to the reader.
&gt; 
&gt; I&apos;ve done that to eliminate extra addition from the loop. But if you think the code became too complicated, I&apos;ll change it back.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1263
&gt; &gt; &gt; +        nodeStack[nodeStackTop] = rootNodeOrdinal;
&gt; &gt; 
&gt; &gt; Now that we anyways have postorder index we could go though it and update each nodes retained size sequentially. This way you wouldn&apos;t need this stack. WDYT?
&gt; 
&gt; Cool idea. Done that. The time has reduced to 10ms.
&gt; 
Mind uploading new patch?

&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #0)
&gt; &gt; &gt; Rewrite the algorithm to be O(n) instead of O(n*log(n)).
&gt; &gt; &gt; 
&gt; &gt; &gt; Before:
&gt; &gt; &gt; RESULT heap-snapshot: _calculateRetainedSizes= 86 ms
&gt; &gt; &gt; 
&gt; &gt; &gt; After:
&gt; &gt; &gt; RESULT heap-snapshot: _calculateRetainedSizes= 31 ms
&gt; &gt; 
&gt; &gt; What&apos;s the point in optimizing this given that it is such a small fraction of the overall time?
&gt; 
&gt; This fraction is small for this particular performance test. You know the current algorithm has O(n*n) for the worst case (e.g. a linked list structure).
&gt; I checked it on a worst case test having 50k objects. The time it spends in this function has dropped from 10000ms to 2ms.
Can you convert that into a layout test/performance test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638276</commentid>
    <comment_count>7</comment_count>
      <attachid>145061</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-05-31 05:30:50 -0700</bug_when>
    <thetext>Created attachment 145061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638346</commentid>
    <comment_count>8</comment_count>
      <attachid>145079</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-05-31 06:42:55 -0700</bug_when>
    <thetext>Created attachment 145079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638347</commentid>
    <comment_count>9</comment_count>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-05-31 06:43:17 -0700</bug_when>
    <thetext>Added the performance test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638357</commentid>
    <comment_count>10</comment_count>
      <attachid>145079</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-31 06:52:57 -0700</bug_when>
    <thetext>Comment on attachment 145079
Patch

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

&gt; PerformanceTests/inspector/performance-test.js:148
&gt; +    InspectorTest.measureFunction(WebInspector.HeapSnapshot.prototype, &quot;_buildRetainers&quot;);

This file is used not only by profiler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638361</commentid>
    <comment_count>11</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-31 06:55:25 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=145079&amp;action=review

&gt; PerformanceTests/inspector/performance-test.js:211
&gt; +            timer.done(&quot;heap-snapshot&quot;);

heap-snapshot is a page name. You have to calculate it from the url or transfer it as an argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639230</commentid>
    <comment_count>12</comment_count>
      <attachid>145276</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-06-01 05:41:25 -0700</bug_when>
    <thetext>Created attachment 145276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639237</commentid>
    <comment_count>13</comment_count>
      <attachid>145276</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-01 05:50:05 -0700</bug_when>
    <thetext>Comment on attachment 145276
Patch

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

&gt; PerformanceTests/inspector/heap-performance-test.js:1
&gt; +function test()

heap-performance-test.js -&gt; heap-profiler-performance-test.js or heap-snapshot-performance-test.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639242</commentid>
    <comment_count>14</comment_count>
      <attachid>145280</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-06-01 05:54:23 -0700</bug_when>
    <thetext>Created attachment 145280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639247</commentid>
    <comment_count>15</comment_count>
      <attachid>145280</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-01 05:57:55 -0700</bug_when>
    <thetext>Comment on attachment 145280
Patch

looks good to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639256</commentid>
    <comment_count>16</comment_count>
      <attachid>145283</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-06-01 06:04:11 -0700</bug_when>
    <thetext>Created attachment 145283
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640506</commentid>
    <comment_count>17</comment_count>
      <attachid>145283</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-04 05:28:54 -0700</bug_when>
    <thetext>Comment on attachment 145283
Patch

Rejecting attachment 145283 from commit-queue.

alexeif@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640511</commentid>
    <comment_count>18</comment_count>
      <attachid>145283</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-04 05:38:45 -0700</bug_when>
    <thetext>Comment on attachment 145283
Patch

Clearing flags on attachment: 145283

Committed r119389: &lt;http://trac.webkit.org/changeset/119389&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640512</commentid>
    <comment_count>19</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-04 05:38:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144845</attachid>
            <date>2012-05-30 10:00:05 -0700</date>
            <delta_ts>2012-05-31 05:30:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87863-20120530210003.patch</filename>
            <type>text/plain</type>
            <size>4274</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4OTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI4ZjEzNDIyMmE3M2Rl
MWRmMDA4MzEzYjJlOTE3M2FlZGU0Njk0My4uZDUzMWVhMDM4M2MyY2U0MjgxM2M5OWViZTI4Zjdm
MDkxODg4YTdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTMwICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBzcGVlZCB1cCBfY2FsY3VsYXRlUmV0YWluZWRTaXplcyBmdW5jdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4NjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUuX2NhbGN1bGF0ZVJldGFpbmVkU2l6ZXMpOgorCiAyMDEyLTA1LTMwICBQZXRlciBS
eWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBk
aXNhYmxlIEV4YWN0bHlJbnQgZmVhdHVyZSBpbiBJbnNwZWN0b3JUeXBlQnVpbGRlciBzaW5jZSBp
dCBicmVha3MgcmVsZWFzZSBXaW5kb3dzIDcgV0syCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCmluZGV4IDQyMDZjZjYyZThmNDVmM2Vk
ZTkzM2FiOTI1OTgwYzMzOWM1MzM4OTguLmI0NzJmNTFmMTc0YjgyOTY4OTlhNTllNTc1NTFjYzBh
OTcyYWEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SGVhcFNuYXBzaG90LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SGVhcFNuYXBzaG90LmpzCkBAIC03MDUsOCArNzA1LDggQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9idWlsZFBvc3RP
cmRlckluZGV4KCk7CiAgICAgICAgIC8vIEFjdHVhbGx5IGl0IGlzIGFycmF5IHRoYXQgbWFwcyBu
b2RlIG9yZGluYWwgbnVtYmVyIHRvIGRvbWluYXRvciBub2RlIG9yZGluYWwgbnVtYmVyLgogICAg
ICAgICB0aGlzLl9kb21pbmF0b3JzVHJlZSA9IHRoaXMuX2J1aWxkRG9taW5hdG9yVHJlZShyZXN1
bHQucG9zdE9yZGVySW5kZXgyTm9kZU9yZGluYWwsIHJlc3VsdC5ub2RlT3JkaW5hbDJQb3N0T3Jk
ZXJJbmRleCk7Ci0gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVJldGFpbmVkU2l6ZXMoKTsKICAgICAg
ICAgdGhpcy5fYnVpbGREb21pbmF0ZWROb2RlcygpOworICAgICAgICB0aGlzLl9jYWxjdWxhdGVS
ZXRhaW5lZFNpemVzKCk7CiAgICAgfSwKIAogICAgIF9idWlsZFJldGFpbmVyczogZnVuY3Rpb24o
KQpAQCAtMTI1MCwyOCArMTI1MCwzMyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZSA9IHsKIAogICAgIF9jYWxjdWxhdGVSZXRhaW5lZFNpemVzOiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICAvLyBBcyBmb3IgdGhlIGRvbWluYXRvcnMgdHJlZSB3ZSBvbmx5IGtub3cgcGFy
ZW50IG5vZGVzLCBub3QKLSAgICAgICAgLy8gY2hpbGRyZW4sIHRvIHN1bSB1cCB0b3RhbCBzaXpl
cyB3ZSAiYnViYmxlIiBub2RlJ3Mgc2VsZiBzaXplCi0gICAgICAgIC8vIGFkZGluZyBpdCB0byBh
bGwgb2YgaXRzIHBhcmVudHMuCi0gICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOwotICAg
ICAgICB2YXIgbm9kZVNlbGZTaXplT2Zmc2V0ID0gdGhpcy5fbm9kZVNlbGZTaXplT2Zmc2V0Owor
ICAgICAgICB2YXIgbm9kZXNTZWxmU2l6ZSA9IHRoaXMuX25vZGVzLnN1YmFycmF5KHRoaXMuX25v
ZGVTZWxmU2l6ZU9mZnNldCk7CiAgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX25v
ZGVGaWVsZENvdW50OwogICAgICAgICB2YXIgZG9taW5hdG9yc1RyZWUgPSB0aGlzLl9kb21pbmF0
b3JzVHJlZTsKLSAgICAgICAgdmFyIHJldGFpbmVkU2l6ZXMgPSBuZXcgVWludDMyQXJyYXkodGhp
cy5ub2RlQ291bnQpOworICAgICAgICB2YXIgcmV0YWluZWRTaXplcyA9IHRoaXMuX3JldGFpbmVk
U2l6ZXMgPSBuZXcgVWludDMyQXJyYXkodGhpcy5ub2RlQ291bnQpOwogICAgICAgICB2YXIgcm9v
dE5vZGVPcmRpbmFsID0gdGhpcy5fcm9vdE5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50OwotCi0g
ICAgICAgIGZvciAodmFyIG5vZGVPcmRpbmFsID0gMCwgbm9kZVNlbGZTaXplSW5kZXggPSBub2Rl
U2VsZlNpemVPZmZzZXQsIGwgPSB0aGlzLm5vZGVDb3VudDsKLSAgICAgICAgICAgICBub2RlT3Jk
aW5hbCA8IGw7Ci0gICAgICAgICAgICAgKytub2RlT3JkaW5hbCwgbm9kZVNlbGZTaXplSW5kZXgg
Kz0gbm9kZUZpZWxkQ291bnQpIHsKLSAgICAgICAgICAgIHZhciBub2RlU2VsZlNpemUgPSBub2Rl
c1tub2RlU2VsZlNpemVJbmRleF07Ci0gICAgICAgICAgICB2YXIgY3VycmVudE5vZGVPcmRpbmFs
ID0gbm9kZU9yZGluYWw7Ci0gICAgICAgICAgICByZXRhaW5lZFNpemVzW2N1cnJlbnROb2RlT3Jk
aW5hbF0gKz0gbm9kZVNlbGZTaXplOwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAg
IGN1cnJlbnROb2RlT3JkaW5hbCA9IGRvbWluYXRvcnNUcmVlW2N1cnJlbnROb2RlT3JkaW5hbF07
Ci0gICAgICAgICAgICAgICAgcmV0YWluZWRTaXplc1tjdXJyZW50Tm9kZU9yZGluYWxdICs9IG5v
ZGVTZWxmU2l6ZTsKLSAgICAgICAgICAgIH0gd2hpbGUgKGN1cnJlbnROb2RlT3JkaW5hbCAhPT0g
cm9vdE5vZGVPcmRpbmFsKTsKKyAgICAgICAgdmFyIGZpcnN0RG9taW5hdGVkTm9kZUluZGV4ID0g
dGhpcy5fZmlyc3REb21pbmF0ZWROb2RlSW5kZXg7CisgICAgICAgIHZhciBkb21pbmF0ZWROb2Rl
cyA9IHRoaXMuX2RvbWluYXRlZE5vZGVzOworICAgICAgICB2YXIgbm9kZVZpc2l0ZWQgPSBuZXcg
VWludDhBcnJheSh0aGlzLm5vZGVDb3VudCk7CisgICAgICAgIHZhciBub2RlU3RhY2sgPSBuZXcg
VWludDMyQXJyYXkodGhpcy5ub2RlQ291bnQpOworICAgICAgICB2YXIgbm9kZVN0YWNrVG9wID0g
MDsKKyAgICAgICAgbm9kZVN0YWNrW25vZGVTdGFja1RvcF0gPSByb290Tm9kZU9yZGluYWw7CisK
KyAgICAgICAgd2hpbGUgKG5vZGVTdGFja1RvcCA+PSAwKSB7CisgICAgICAgICAgICB2YXIgbm9k
ZU9yZGluYWwgPSBub2RlU3RhY2tbbm9kZVN0YWNrVG9wXTsKKyAgICAgICAgICAgIGlmIChub2Rl
VmlzaXRlZFtub2RlT3JkaW5hbF0gPT09IDApIHsKKyAgICAgICAgICAgICAgICBub2RlVmlzaXRl
ZFtub2RlT3JkaW5hbF0gPSAxOworICAgICAgICAgICAgICAgIHJldGFpbmVkU2l6ZXNbbm9kZU9y
ZGluYWxdID0gbm9kZXNTZWxmU2l6ZVtub2RlT3JkaW5hbCAqIG5vZGVGaWVsZENvdW50XTsKKyAg
ICAgICAgICAgICAgICB2YXIgZmlyc3ROb2RlSW5kZXggPSBmaXJzdERvbWluYXRlZE5vZGVJbmRl
eFtub2RlT3JkaW5hbF07CisgICAgICAgICAgICAgICAgdmFyIGxhc3ROb2RlSW5kZXggPSBmaXJz
dERvbWluYXRlZE5vZGVJbmRleFtub2RlT3JkaW5hbCArIDFdOworICAgICAgICAgICAgICAgIGZv
ciAodmFyIGRvbWluYXRlZEluZGV4ID0gZmlyc3ROb2RlSW5kZXg7IGRvbWluYXRlZEluZGV4IDwg
bGFzdE5vZGVJbmRleDsgKytkb21pbmF0ZWRJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgbm9k
ZVN0YWNrWysrbm9kZVN0YWNrVG9wXSA9IGRvbWluYXRlZE5vZGVzW2RvbWluYXRlZEluZGV4XSAv
IG5vZGVGaWVsZENvdW50OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAt
LW5vZGVTdGFja1RvcDsKKyAgICAgICAgICAgICAgICBpZiAobm9kZU9yZGluYWwgIT09IHJvb3RO
b2RlT3JkaW5hbCkKKyAgICAgICAgICAgICAgICAgICAgcmV0YWluZWRTaXplc1tkb21pbmF0b3Jz
VHJlZVtub2RlT3JkaW5hbF1dICs9IHJldGFpbmVkU2l6ZXNbbm9kZU9yZGluYWxdOworICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3JldGFpbmVkU2l6ZXMgPSByZXRhaW5l
ZFNpemVzOwogICAgIH0sCiAKICAgICBfYnVpbGREb21pbmF0ZWROb2RlczogZnVuY3Rpb24oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145061</attachid>
            <date>2012-05-31 05:30:50 -0700</date>
            <delta_ts>2012-05-31 06:42:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87863-20120531163049.patch</filename>
            <type>text/plain</type>
            <size>3682</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI0MWIyMzUxN2I5NTk1
NTkzODBmYmJhZjg2Y2I2Y2QzY2VkODAwMS4uODEzYTMzZjMxZTIyNDUzYTIzYjcxZDMzNmM0MTAw
ZjdiNzBkOGNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTMwICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBzcGVlZCB1cCBfY2FsY3VsYXRlUmV0YWluZWRTaXplcyBmdW5jdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4NjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUuX2NhbGN1bGF0ZVJldGFpbmVkU2l6ZXMpOgorCiAyMDEyLTA1LTMxICBHeXV5b3Vu
ZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0NNQUtFXVtFRkxd
IFJlbW92ZSB1bm5lZWRlZCBpbmNsdWRlIHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKaW5kZXggNDIwNmNmNjJlOGY0NWYzZWRl
OTMzYWI5MjU5ODBjMzM5YzUzMzg5OC4uZjI3MDI4MjJmNmY3YTk2ZmFhYmRmMjY0ZGFmZmE3YzM0
MTZmZWI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3QuanMKQEAgLTcwNSw3ICs3MDUsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2J1aWxkUG9zdE9y
ZGVySW5kZXgoKTsKICAgICAgICAgLy8gQWN0dWFsbHkgaXQgaXMgYXJyYXkgdGhhdCBtYXBzIG5v
ZGUgb3JkaW5hbCBudW1iZXIgdG8gZG9taW5hdG9yIG5vZGUgb3JkaW5hbCBudW1iZXIuCiAgICAg
ICAgIHRoaXMuX2RvbWluYXRvcnNUcmVlID0gdGhpcy5fYnVpbGREb21pbmF0b3JUcmVlKHJlc3Vs
dC5wb3N0T3JkZXJJbmRleDJOb2RlT3JkaW5hbCwgcmVzdWx0Lm5vZGVPcmRpbmFsMlBvc3RPcmRl
ckluZGV4KTsKLSAgICAgICAgdGhpcy5fY2FsY3VsYXRlUmV0YWluZWRTaXplcygpOworICAgICAg
ICB0aGlzLl9jYWxjdWxhdGVSZXRhaW5lZFNpemVzKHJlc3VsdC5wb3N0T3JkZXJJbmRleDJOb2Rl
T3JkaW5hbCk7CiAgICAgICAgIHRoaXMuX2J1aWxkRG9taW5hdGVkTm9kZXMoKTsKICAgICB9LAog
CkBAIC0xMjQ4LDMwICsxMjQ4LDI0IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90
eXBlID0gewogICAgICAgICByZXR1cm4gZG9taW5hdG9yc1RyZWU7CiAgICAgfSwKIAotICAgIF9j
YWxjdWxhdGVSZXRhaW5lZFNpemVzOiBmdW5jdGlvbigpCisgICAgX2NhbGN1bGF0ZVJldGFpbmVk
U2l6ZXM6IGZ1bmN0aW9uKHBvc3RPcmRlckluZGV4Mk5vZGVPcmRpbmFsKQogICAgIHsKLSAgICAg
ICAgLy8gQXMgZm9yIHRoZSBkb21pbmF0b3JzIHRyZWUgd2Ugb25seSBrbm93IHBhcmVudCBub2Rl
cywgbm90Ci0gICAgICAgIC8vIGNoaWxkcmVuLCB0byBzdW0gdXAgdG90YWwgc2l6ZXMgd2UgImJ1
YmJsZSIgbm9kZSdzIHNlbGYgc2l6ZQotICAgICAgICAvLyBhZGRpbmcgaXQgdG8gYWxsIG9mIGl0
cyBwYXJlbnRzLgorICAgICAgICB2YXIgbm9kZUNvdW50ID0gdGhpcy5ub2RlQ291bnQ7CiAgICAg
ICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOwogICAgICAgICB2YXIgbm9kZVNlbGZTaXplT2Zm
c2V0ID0gdGhpcy5fbm9kZVNlbGZTaXplT2Zmc2V0OwogICAgICAgICB2YXIgbm9kZUZpZWxkQ291
bnQgPSB0aGlzLl9ub2RlRmllbGRDb3VudDsKICAgICAgICAgdmFyIGRvbWluYXRvcnNUcmVlID0g
dGhpcy5fZG9taW5hdG9yc1RyZWU7Ci0gICAgICAgIHZhciByZXRhaW5lZFNpemVzID0gbmV3IFVp
bnQzMkFycmF5KHRoaXMubm9kZUNvdW50KTsKKyAgICAgICAgdmFyIHJldGFpbmVkU2l6ZXMgPSB0
aGlzLl9yZXRhaW5lZFNpemVzID0gbmV3IFVpbnQzMkFycmF5KG5vZGVDb3VudCk7CiAgICAgICAg
IHZhciByb290Tm9kZU9yZGluYWwgPSB0aGlzLl9yb290Tm9kZUluZGV4IC8gbm9kZUZpZWxkQ291
bnQ7CiAKLSAgICAgICAgZm9yICh2YXIgbm9kZU9yZGluYWwgPSAwLCBub2RlU2VsZlNpemVJbmRl
eCA9IG5vZGVTZWxmU2l6ZU9mZnNldCwgbCA9IHRoaXMubm9kZUNvdW50OwotICAgICAgICAgICAg
IG5vZGVPcmRpbmFsIDwgbDsKLSAgICAgICAgICAgICArK25vZGVPcmRpbmFsLCBub2RlU2VsZlNp
emVJbmRleCArPSBub2RlRmllbGRDb3VudCkgewotICAgICAgICAgICAgdmFyIG5vZGVTZWxmU2l6
ZSA9IG5vZGVzW25vZGVTZWxmU2l6ZUluZGV4XTsKLSAgICAgICAgICAgIHZhciBjdXJyZW50Tm9k
ZU9yZGluYWwgPSBub2RlT3JkaW5hbDsKLSAgICAgICAgICAgIHJldGFpbmVkU2l6ZXNbY3VycmVu
dE5vZGVPcmRpbmFsXSArPSBub2RlU2VsZlNpemU7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAg
ICAgICAgICAgY3VycmVudE5vZGVPcmRpbmFsID0gZG9taW5hdG9yc1RyZWVbY3VycmVudE5vZGVP
cmRpbmFsXTsKLSAgICAgICAgICAgICAgICByZXRhaW5lZFNpemVzW2N1cnJlbnROb2RlT3JkaW5h
bF0gKz0gbm9kZVNlbGZTaXplOwotICAgICAgICAgICAgfSB3aGlsZSAoY3VycmVudE5vZGVPcmRp
bmFsICE9PSByb290Tm9kZU9yZGluYWwpOworICAgICAgICByZXRhaW5lZFNpemVzW3Jvb3ROb2Rl
T3JkaW5hbF0gPSBub2Rlc1t0aGlzLl9yb290Tm9kZUluZGV4ICsgbm9kZVNlbGZTaXplT2Zmc2V0
XTsKKyAgICAgICAgLy8gUHJvcGFnYXRlIHJldGFpbmVkIHNpemVzIGZvciBlYWNoIG5vZGUgZXhj
bHVkaW5nIHJvb3QsIGFzIGl0IHJlZmVycyB0byBzZWxmLgorICAgICAgICBmb3IgKHZhciBwb3N0
T3JkZXJJbmRleCA9IDA7IHBvc3RPcmRlckluZGV4IDwgbm9kZUNvdW50IC0gMTsgKytwb3N0T3Jk
ZXJJbmRleCkgeworICAgICAgICAgICAgdmFyIG5vZGVPcmRpbmFsID0gcG9zdE9yZGVySW5kZXgy
Tm9kZU9yZGluYWxbcG9zdE9yZGVySW5kZXhdOworICAgICAgICAgICAgdmFyIGRvbWluYXRvck9y
ZGluYWwgPSBkb21pbmF0b3JzVHJlZVtub2RlT3JkaW5hbF07CisgICAgICAgICAgICByZXRhaW5l
ZFNpemVzW25vZGVPcmRpbmFsXSArPSBub2Rlc1tub2RlT3JkaW5hbCAqIG5vZGVGaWVsZENvdW50
ICsgbm9kZVNlbGZTaXplT2Zmc2V0XTsKKyAgICAgICAgICAgIHJldGFpbmVkU2l6ZXNbZG9taW5h
dG9yT3JkaW5hbF0gKz0gcmV0YWluZWRTaXplc1tub2RlT3JkaW5hbF07CiAgICAgICAgIH0KLSAg
ICAgICAgdGhpcy5fcmV0YWluZWRTaXplcyA9IHJldGFpbmVkU2l6ZXM7CiAgICAgfSwKIAogICAg
IF9idWlsZERvbWluYXRlZE5vZGVzOiBmdW5jdGlvbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145079</attachid>
            <date>2012-05-31 06:42:55 -0700</date>
            <delta_ts>2012-06-01 05:41:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87863-20120531174253.patch</filename>
            <type>text/plain</type>
            <size>13032</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhlODI5ZTkxMDVlNDJk
ZWUyYzA1ZDQ4OWRkODQ0MzBkZmYyY2UxYi4uY2IxYzUyZTVhY2JlNjA4MWI0YTMwMTg3MGU4ZmFh
Y2RlMDVlNjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTMxICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBzcGVlZCB1cCBfY2FsY3VsYXRlUmV0YWluZWRTaXplcyBmdW5jdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4NjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUuX2NhbGN1bGF0ZVJldGFpbmVkU2l6ZXMpOgorCiAyMDEyLTA1LTMxICBNaWtlIFdl
c3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4aW5nIGNvbXBpbGF0aW9uIHdp
dGggU1ZHIGRpc2FibGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9IZWFwU25hcHNob3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0hlYXBTbmFwc2hvdC5qcwppbmRleCA0MjA2Y2Y2MmU4ZjQ1ZjNlZGU5MzNhYjkyNTk4MGMz
MzljNTMzODk4Li5mMjcwMjgyMmY2ZjdhOTZmYWFiZGYyNjRkYWZmYTdjMzQxNmZlYjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5q
cwpAQCAtNzA1LDcgKzcwNSw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBl
ID0gewogICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fYnVpbGRQb3N0T3JkZXJJbmRleCgpOwog
ICAgICAgICAvLyBBY3R1YWxseSBpdCBpcyBhcnJheSB0aGF0IG1hcHMgbm9kZSBvcmRpbmFsIG51
bWJlciB0byBkb21pbmF0b3Igbm9kZSBvcmRpbmFsIG51bWJlci4KICAgICAgICAgdGhpcy5fZG9t
aW5hdG9yc1RyZWUgPSB0aGlzLl9idWlsZERvbWluYXRvclRyZWUocmVzdWx0LnBvc3RPcmRlcklu
ZGV4Mk5vZGVPcmRpbmFsLCByZXN1bHQubm9kZU9yZGluYWwyUG9zdE9yZGVySW5kZXgpOwotICAg
ICAgICB0aGlzLl9jYWxjdWxhdGVSZXRhaW5lZFNpemVzKCk7CisgICAgICAgIHRoaXMuX2NhbGN1
bGF0ZVJldGFpbmVkU2l6ZXMocmVzdWx0LnBvc3RPcmRlckluZGV4Mk5vZGVPcmRpbmFsKTsKICAg
ICAgICAgdGhpcy5fYnVpbGREb21pbmF0ZWROb2RlcygpOwogICAgIH0sCiAKQEAgLTEyNDgsMzAg
KzEyNDgsMjQgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiBkb21pbmF0b3JzVHJlZTsKICAgICB9LAogCi0gICAgX2NhbGN1bGF0ZVJldGFp
bmVkU2l6ZXM6IGZ1bmN0aW9uKCkKKyAgICBfY2FsY3VsYXRlUmV0YWluZWRTaXplczogZnVuY3Rp
b24ocG9zdE9yZGVySW5kZXgyTm9kZU9yZGluYWwpCiAgICAgewotICAgICAgICAvLyBBcyBmb3Ig
dGhlIGRvbWluYXRvcnMgdHJlZSB3ZSBvbmx5IGtub3cgcGFyZW50IG5vZGVzLCBub3QKLSAgICAg
ICAgLy8gY2hpbGRyZW4sIHRvIHN1bSB1cCB0b3RhbCBzaXplcyB3ZSAiYnViYmxlIiBub2RlJ3Mg
c2VsZiBzaXplCi0gICAgICAgIC8vIGFkZGluZyBpdCB0byBhbGwgb2YgaXRzIHBhcmVudHMuCisg
ICAgICAgIHZhciBub2RlQ291bnQgPSB0aGlzLm5vZGVDb3VudDsKICAgICAgICAgdmFyIG5vZGVz
ID0gdGhpcy5fbm9kZXM7CiAgICAgICAgIHZhciBub2RlU2VsZlNpemVPZmZzZXQgPSB0aGlzLl9u
b2RlU2VsZlNpemVPZmZzZXQ7CiAgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX25v
ZGVGaWVsZENvdW50OwogICAgICAgICB2YXIgZG9taW5hdG9yc1RyZWUgPSB0aGlzLl9kb21pbmF0
b3JzVHJlZTsKLSAgICAgICAgdmFyIHJldGFpbmVkU2l6ZXMgPSBuZXcgVWludDMyQXJyYXkodGhp
cy5ub2RlQ291bnQpOworICAgICAgICB2YXIgcmV0YWluZWRTaXplcyA9IHRoaXMuX3JldGFpbmVk
U2l6ZXMgPSBuZXcgVWludDMyQXJyYXkobm9kZUNvdW50KTsKICAgICAgICAgdmFyIHJvb3ROb2Rl
T3JkaW5hbCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKIAotICAgICAg
ICBmb3IgKHZhciBub2RlT3JkaW5hbCA9IDAsIG5vZGVTZWxmU2l6ZUluZGV4ID0gbm9kZVNlbGZT
aXplT2Zmc2V0LCBsID0gdGhpcy5ub2RlQ291bnQ7Ci0gICAgICAgICAgICAgbm9kZU9yZGluYWwg
PCBsOwotICAgICAgICAgICAgICsrbm9kZU9yZGluYWwsIG5vZGVTZWxmU2l6ZUluZGV4ICs9IG5v
ZGVGaWVsZENvdW50KSB7Ci0gICAgICAgICAgICB2YXIgbm9kZVNlbGZTaXplID0gbm9kZXNbbm9k
ZVNlbGZTaXplSW5kZXhdOwotICAgICAgICAgICAgdmFyIGN1cnJlbnROb2RlT3JkaW5hbCA9IG5v
ZGVPcmRpbmFsOwotICAgICAgICAgICAgcmV0YWluZWRTaXplc1tjdXJyZW50Tm9kZU9yZGluYWxd
ICs9IG5vZGVTZWxmU2l6ZTsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBjdXJy
ZW50Tm9kZU9yZGluYWwgPSBkb21pbmF0b3JzVHJlZVtjdXJyZW50Tm9kZU9yZGluYWxdOwotICAg
ICAgICAgICAgICAgIHJldGFpbmVkU2l6ZXNbY3VycmVudE5vZGVPcmRpbmFsXSArPSBub2RlU2Vs
ZlNpemU7Ci0gICAgICAgICAgICB9IHdoaWxlIChjdXJyZW50Tm9kZU9yZGluYWwgIT09IHJvb3RO
b2RlT3JkaW5hbCk7CisgICAgICAgIHJldGFpbmVkU2l6ZXNbcm9vdE5vZGVPcmRpbmFsXSA9IG5v
ZGVzW3RoaXMuX3Jvb3ROb2RlSW5kZXggKyBub2RlU2VsZlNpemVPZmZzZXRdOworICAgICAgICAv
LyBQcm9wYWdhdGUgcmV0YWluZWQgc2l6ZXMgZm9yIGVhY2ggbm9kZSBleGNsdWRpbmcgcm9vdCwg
YXMgaXQgcmVmZXJzIHRvIHNlbGYuCisgICAgICAgIGZvciAodmFyIHBvc3RPcmRlckluZGV4ID0g
MDsgcG9zdE9yZGVySW5kZXggPCBub2RlQ291bnQgLSAxOyArK3Bvc3RPcmRlckluZGV4KSB7Cisg
ICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBwb3N0T3JkZXJJbmRleDJOb2RlT3JkaW5hbFtw
b3N0T3JkZXJJbmRleF07CisgICAgICAgICAgICB2YXIgZG9taW5hdG9yT3JkaW5hbCA9IGRvbWlu
YXRvcnNUcmVlW25vZGVPcmRpbmFsXTsKKyAgICAgICAgICAgIHJldGFpbmVkU2l6ZXNbbm9kZU9y
ZGluYWxdICs9IG5vZGVzW25vZGVPcmRpbmFsICogbm9kZUZpZWxkQ291bnQgKyBub2RlU2VsZlNp
emVPZmZzZXRdOworICAgICAgICAgICAgcmV0YWluZWRTaXplc1tkb21pbmF0b3JPcmRpbmFsXSAr
PSByZXRhaW5lZFNpemVzW25vZGVPcmRpbmFsXTsKICAgICAgICAgfQotICAgICAgICB0aGlzLl9y
ZXRhaW5lZFNpemVzID0gcmV0YWluZWRTaXplczsKICAgICB9LAogCiAgICAgX2J1aWxkRG9taW5h
dGVkTm9kZXM6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2ZjZGZiNzJlNWNhZTViODcx
NjNiNmQ1YzU1OTM1MzI1NDljZmFjNS4uM2UyZDJjM2ZlZThiNTdiOTVhYjIxM2MyMDllYjFjN2I1
NGE3YTg2OSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVy
Zm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNS0zMSAgQWxl
eGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3Rvcjogc3BlZWQgdXAgX2NhbGN1bGF0ZVJldGFpbmVkU2l6ZXMgZnVuY3Rpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3ODYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvaGVhcC1z
bmFwc2hvdC1saW5rZWQtbGlzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvaGVh
cC1zbmFwc2hvdC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9wZXJmb3JtYW5jZS10ZXN0Lmpz
OgorICAgICAgICAodGVzdC5wZXJmb3JtYW5jZVRlc3Quc3RlcDApOgorICAgICAgICAodGVzdC5w
ZXJmb3JtYW5jZVRlc3Quc3RlcDEpOgorICAgICAgICAodGVzdC5wZXJmb3JtYW5jZVRlc3Quc3Rl
cDIpOgorICAgICAgICAodGVzdC5wZXJmb3JtYW5jZVRlc3QuY2xlYW51cCk6CisgICAgICAgICh0
ZXN0LnBlcmZvcm1hbmNlVGVzdC5kb25lKToKKyAgICAgICAgKHRlc3QucGVyZm9ybWFuY2VUZXN0
KToKKyAgICAgICAgKHRlc3QpOgorCiAyMDEyLTA1LTMwICBLZW50YXJvIEhhcmEgIDxoYXJha2Vu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbcGVyZi10ZXN0XSBBZGQgYSBiZW5jaG1hcmsgZm9y
IHF1ZXJ5U2VsZWN0b3IoKQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3Iv
aGVhcC1zbmFwc2hvdC1saW5rZWQtbGlzdC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0
b3IvaGVhcC1zbmFwc2hvdC1saW5rZWQtbGlzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzMTQ1ODgwYzg4
ZjdhM2QxYzMxYjRmYzllZWU5NzQ2YTU1Mjk2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBzaG90LWxpbmtlZC1saXN0Lmh0bWwKQEAgLTAs
MCArMSwyMiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
PHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNu
YXBzaG90LXRlc3QuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBtYWtlTGlua2VkTGlzdChuKQor
eworICAgIHZhciBub2RlID0ge307CisgICAgd2hpbGUgKC0tbikKKyAgICAgICAgbm9kZSA9IHsg
bmV4dDogbm9kZSB9OworICAgIHJldHVybiBub2RlOworfQorCit2YXIgbGlzdCA9IG1ha2VMaW5r
ZWRMaXN0KDQwMDAwKTsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL2lu
c3BlY3Rvci9oZWFwLXNuYXBzaG90Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9o
ZWFwLXNuYXBzaG90Lmh0bWwKaW5kZXggYmE1Mzg3NDk1MjMwMGQ3N2Y0ZjcwNTAxZTlmNjNlNGRh
MDU3NjlkNC4uZmJmMzgwZjU1NmJmZGUyMTFjM2Q5ZDZlYzI0ZTJjMDBkMDQxNGRlNiAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRtbApAQCAtNSw3OCAr
NSw2IEBACiAgIDxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+CiAKLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1
bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2J1aWxkUmV0YWlu
ZXJzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUsICJfYnVpbGREb21pbmF0ZWROb2RlcyIpOwotICAgIEluc3Bl
Y3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90
eXBlLCAiX2NhbGN1bGF0ZUZsYWdzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rp
b24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfYnVpbGRBZ2dyZWdhdGVz
Iik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUsICJfY2FsY3VsYXRlQ2xhc3Nlc1JldGFpbmVkU2l6ZSIpOwotICAg
IEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlLCAiX2NhbGN1bGF0ZU9iamVjdFRvV2luZG93RGlzdGFuY2UiKTsKLSAgICBJbnNw
ZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZSwgIl9jYWxjdWxhdGVSZXRhaW5lZFNpemVzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFz
dXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfbWFya0Rl
dGFjaGVkRE9NVHJlZU5vZGVzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24o
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfbWFya1F1ZXJpYWJsZUhlYXBP
YmplY3RzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfbWFya1BhZ2VPd25lZE5vZGVzIik7Ci0gICAgSW5z
cGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUsICJfc3BsaXROb2Rlc0FuZENvbnRhaW5tZW50RWRnZXMiKTsKLSAgICBJbnNwZWN0b3JU
ZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwg
Il9idWlsZFBvc3RPcmRlckluZGV4Iik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rp
b24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfYnVpbGREb21pbmF0b3JU
cmVlIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkLnByb3RvdHlwZSwgIl9hZ2dyZWdhdGVzUmVj
ZWl2ZWQiKTsKLQotICAgIGZ1bmN0aW9uIHBlcmZvcm1hbmNlVGVzdCh0aW1lcikKLSAgICB7Ci0g
ICAgICAgIHZhciB0cmFuc2ZlclRpbWVyQ29va2llOwotICAgICAgICB2YXIgc2hvd1RpbWVyQ29v
a2llOwotICAgICAgICB2YXIgY2hhbmdlVmlld1RpbWVyQ29va2llOwotICAgICAgICB2YXIgY2xl
YXJUaW1lckNvb2tpZTsKLQotICAgICAgICB2YXIgZnVsbFRpbWVyQ29va2llID0gdGltZXIuc3Rh
cnQoImZ1bGwtc3VtbWFyeS1zbmFwc2hvdC10aW1lIik7Ci0gICAgICAgIHZhciBiYWNrZW5kVGlt
ZXJDb29raWUgPSB0aW1lci5zdGFydCgidGFrZS1zbmFwc2hvdCIpOwotICAgICAgICBQcm9maWxl
ckFnZW50LnRha2VIZWFwU25hcHNob3Qoc3RlcDApOwotCi0gICAgICAgIGZ1bmN0aW9uIHN0ZXAw
KCkKLSAgICAgICAgewotICAgICAgICAgICAgdGltZXIuZmluaXNoKGJhY2tlbmRUaW1lckNvb2tp
ZSk7Ci0gICAgICAgICAgICB0cmFuc2ZlclRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoInRyYW5z
ZmVyLXNuYXBzaG90Iik7Ci0gICAgICAgICAgICB2YXIgcHJvZmlsZXMgPSBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnByb2ZpbGVzLmdldFByb2ZpbGVzKCJIRUFQIik7Ci0gICAgICAgICAgICBXZWJJbnNw
ZWN0b3IucGFuZWxzLnByb2ZpbGVzLnNob3dQcm9maWxlKHByb2ZpbGVzW3Byb2ZpbGVzLmxlbmd0
aCAtIDFdKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0
b3IucGFuZWxzLnByb2ZpbGVzLCAiX2ZpbmlzaEhlYXBTbmFwc2hvdCIsIHN0ZXAxKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHN0ZXAxKHVpZCkKLSAgICAgICAgewotICAgICAgICAg
ICAgdGltZXIuZmluaXNoKHRyYW5zZmVyVGltZXJDb29raWUpOwotICAgICAgICAgICAgc2hvd1Rp
bWVyQ29va2llID0gdGltZXIuc3RhcnQoInNob3ctc25hcHNob3QiKTsKLSAgICAgICAgICAgIHZh
ciBwYW5lbCA9IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXM7Ci0gICAgICAgICAgICB2YXIg
cHJvZmlsZSA9IHBhbmVsLl9wcm9maWxlc0lkTWFwW3BhbmVsLl9tYWtlS2V5KHVpZCwgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCldOwotICAgICAgICAgICAgcHJv
ZmlsZS5sb2FkKHN0ZXAyKTsgLy8gQWRkIGxvYWQgY2FsbGJhY2suCi0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRpbWVyLmZpbmlz
aChzaG93VGltZXJDb29raWUpOwotICAgICAgICAgICAgY2hhbmdlVmlld1RpbWVyQ29va2llID0g
dGltZXIuc3RhcnQoInN3aXRjaC10by1jb250YWlubWVudC12aWV3Iik7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1lbnQiLCBjbGVhbnVwKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGNsZWFudXAoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB0aW1lci5maW5pc2goY2hhbmdlVmlld1RpbWVyQ29va2llKTsKLSAgICAgICAgICAgIHRpbWVy
LmZpbmlzaChmdWxsVGltZXJDb29raWUpOwotICAgICAgICAgICAgY2xlYXJUaW1lckNvb2tpZSA9
IHRpbWVyLnN0YXJ0KCJjbGVhci1zbmFwc2hvdCIpOwotICAgICAgICAgICAgUHJvZmlsZXJBZ2Vu
dC5jbGVhclByb2ZpbGVzKGRvbmUpOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5w
cm9maWxlcy5fcmVzZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGRvbmUoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICB0aW1lci5maW5pc2goY2xlYXJUaW1lckNvb2tpZSk7Ci0g
ICAgICAgICAgICB0aW1lci5kb25lKCJoZWFwLXNuYXBzaG90Iik7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBJbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1hbmNlVGVzdChwZXJmb3JtYW5jZVRlc3Qs
IDYwMDAwKTsKLX0KLQogdmFyIGNvdW50ZXIgPSAwOwogCiBmdW5jdGlvbiBtYWtlT2JqZWN0c1Ry
ZWUoZGVlcCkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1h
bmNlLXRlc3QuanMgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9wZXJmb3JtYW5jZS10ZXN0
LmpzCmluZGV4IGZiYjVlYzJkYzE2Nzc1Nzg2MzI2NzFhNDIwMmE5MjlhMTM2OTM1ZjMuLjZjMGQy
NDk0ZDRiMThkOTg4Y2U3YmIwYTExNjIwY2NmZDk2Mzk2OTIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvaW5zcGVjdG9yL3BlcmZvcm1hbmNlLXRlc3QuanMKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9pbnNwZWN0b3IvcGVyZm9ybWFuY2UtdGVzdC5qcwpAQCAtMTQyLDMgKzE0Miw3NSBAQCBJ
bnNwZWN0b3JUZXN0LmFkZEJhY2tlbmRSZXNwb25zZVNuaWZmZXIgPSBmdW5jdGlvbihvYmplY3Qs
IG1ldGhvZE5hbWUsIG92ZXJyaWRlLAogfQogCiB9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlLCAiX2J1aWxkUmV0YWluZXJzIik7CisgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJl
RnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfYnVpbGREb21p
bmF0ZWROb2RlcyIpOworICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1bGF0ZUZsYWdzIik7CisgICAgSW5z
cGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUsICJfYnVpbGRBZ2dyZWdhdGVzIik7CisgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVu
Y3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfY2FsY3VsYXRlQ2xh
c3Nlc1JldGFpbmVkU2l6ZSIpOworICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1bGF0ZU9iamVjdFRvV2lu
ZG93RGlzdGFuY2UiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9jYWxjdWxhdGVSZXRhaW5lZFNpemVzIik7
CisgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUsICJfbWFya0RldGFjaGVkRE9NVHJlZU5vZGVzIik7CisgICAgSW5zcGVj
dG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5
cGUsICJfbWFya1F1ZXJpYWJsZUhlYXBPYmplY3RzIik7CisgICAgSW5zcGVjdG9yVGVzdC5tZWFz
dXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfbWFya1Bh
Z2VPd25lZE5vZGVzIik7CisgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfc3BsaXROb2Rlc0FuZENvbnRhaW5tZW50
RWRnZXMiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9idWlsZFBvc3RPcmRlckluZGV4Iik7CisgICAgSW5z
cGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUsICJfYnVpbGREb21pbmF0b3JUcmVlIik7CisgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJl
RnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkLnBy
b3RvdHlwZSwgIl9hZ2dyZWdhdGVzUmVjZWl2ZWQiKTsKKworICAgIGZ1bmN0aW9uIHBlcmZvcm1h
bmNlVGVzdCh0aW1lcikKKyAgICB7CisgICAgICAgIHZhciB0cmFuc2ZlclRpbWVyQ29va2llOwor
ICAgICAgICB2YXIgc2hvd1RpbWVyQ29va2llOworICAgICAgICB2YXIgY2hhbmdlVmlld1RpbWVy
Q29va2llOworICAgICAgICB2YXIgY2xlYXJUaW1lckNvb2tpZTsKKworICAgICAgICB2YXIgZnVs
bFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoImZ1bGwtc3VtbWFyeS1zbmFwc2hvdC10aW1lIik7
CisgICAgICAgIHZhciBiYWNrZW5kVGltZXJDb29raWUgPSB0aW1lci5zdGFydCgidGFrZS1zbmFw
c2hvdCIpOworICAgICAgICBQcm9maWxlckFnZW50LnRha2VIZWFwU25hcHNob3Qoc3RlcDApOwor
CisgICAgICAgIGZ1bmN0aW9uIHN0ZXAwKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGltZXIu
ZmluaXNoKGJhY2tlbmRUaW1lckNvb2tpZSk7CisgICAgICAgICAgICB0cmFuc2ZlclRpbWVyQ29v
a2llID0gdGltZXIuc3RhcnQoInRyYW5zZmVyLXNuYXBzaG90Iik7CisgICAgICAgICAgICB2YXIg
cHJvZmlsZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLmdldFByb2ZpbGVzKCJIRUFQ
Iik7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLnNob3dQcm9maWxl
KHByb2ZpbGVzW3Byb2ZpbGVzLmxlbmd0aCAtIDFdKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLCAiX2ZpbmlzaEhlYXBT
bmFwc2hvdCIsIHN0ZXAxKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKHVp
ZCkKKyAgICAgICAgeworICAgICAgICAgICAgdGltZXIuZmluaXNoKHRyYW5zZmVyVGltZXJDb29r
aWUpOworICAgICAgICAgICAgc2hvd1RpbWVyQ29va2llID0gdGltZXIuc3RhcnQoInNob3ctc25h
cHNob3QiKTsKKyAgICAgICAgICAgIHZhciBwYW5lbCA9IFdlYkluc3BlY3Rvci5wYW5lbHMucHJv
ZmlsZXM7CisgICAgICAgICAgICB2YXIgcHJvZmlsZSA9IHBhbmVsLl9wcm9maWxlc0lkTWFwW3Bh
bmVsLl9tYWtlS2V5KHVpZCwgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5
cGVJZCldOworICAgICAgICAgICAgcHJvZmlsZS5sb2FkKHN0ZXAyKTsgLy8gQWRkIGxvYWQgY2Fs
bGJhY2suCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHRpbWVyLmZpbmlzaChzaG93VGltZXJDb29raWUpOworICAgICAgICAgICAg
Y2hhbmdlVmlld1RpbWVyQ29va2llID0gdGltZXIuc3RhcnQoInN3aXRjaC10by1jb250YWlubWVu
dC12aWV3Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFp
bm1lbnQiLCBjbGVhbnVwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNsZWFudXAo
KQorICAgICAgICB7CisgICAgICAgICAgICB0aW1lci5maW5pc2goY2hhbmdlVmlld1RpbWVyQ29v
a2llKTsKKyAgICAgICAgICAgIHRpbWVyLmZpbmlzaChmdWxsVGltZXJDb29raWUpOworICAgICAg
ICAgICAgY2xlYXJUaW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJjbGVhci1zbmFwc2hvdCIpOwor
ICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5jbGVhclByb2ZpbGVzKGRvbmUpOworICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5fcmVzZXQoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGRvbmUoKQorICAgICAgICB7CisgICAgICAgICAgICB0aW1lci5maW5p
c2goY2xlYXJUaW1lckNvb2tpZSk7CisgICAgICAgICAgICB0aW1lci5kb25lKCJoZWFwLXNuYXBz
aG90Iik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1blBlcmZvcm1h
bmNlVGVzdChwZXJmb3JtYW5jZVRlc3QsIDYwMDAwKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145276</attachid>
            <date>2012-06-01 05:41:25 -0700</date>
            <delta_ts>2012-06-01 05:54:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87863-20120601164123.patch</filename>
            <type>text/plain</type>
            <size>13602</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk5MzBlM2EzNjQ3Y2I3
NTI4MGI3OWQ5YzIwYTFkOWIzMTI1ZDU3ZS4uNTc1Y2Q3ZDgxZGVmMDAzMTg4ZThhMzM5Y2NiY2Ri
OWE3MmQwYWVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA2LTAxICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBzcGVlZCB1cCBfY2FsY3VsYXRlUmV0YWluZWRTaXplcyBmdW5jdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4NjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUuX2NhbGN1bGF0ZVJldGFpbmVkU2l6ZXMpOgorCiAyMDEyLTA2LTAxICBNT1JJVEEg
SGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIEZyYW1lOjp3aWxsRGV0YWNo
UGFnZSgpIHNob3VsZG4ndCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCmluZGV4IDQyMDZj
ZjYyZThmNDVmM2VkZTkzM2FiOTI1OTgwYzMzOWM1MzM4OTguLmYyNzAyODIyZjZmN2E5NmZhYWJk
ZjI2NGRhZmZhN2MzNDE2ZmViNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCkBAIC03MDUsNyArNzA1LDcgQEAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciByZXN1bHQgPSB0aGlz
Ll9idWlsZFBvc3RPcmRlckluZGV4KCk7CiAgICAgICAgIC8vIEFjdHVhbGx5IGl0IGlzIGFycmF5
IHRoYXQgbWFwcyBub2RlIG9yZGluYWwgbnVtYmVyIHRvIGRvbWluYXRvciBub2RlIG9yZGluYWwg
bnVtYmVyLgogICAgICAgICB0aGlzLl9kb21pbmF0b3JzVHJlZSA9IHRoaXMuX2J1aWxkRG9taW5h
dG9yVHJlZShyZXN1bHQucG9zdE9yZGVySW5kZXgyTm9kZU9yZGluYWwsIHJlc3VsdC5ub2RlT3Jk
aW5hbDJQb3N0T3JkZXJJbmRleCk7Ci0gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVJldGFpbmVkU2l6
ZXMoKTsKKyAgICAgICAgdGhpcy5fY2FsY3VsYXRlUmV0YWluZWRTaXplcyhyZXN1bHQucG9zdE9y
ZGVySW5kZXgyTm9kZU9yZGluYWwpOwogICAgICAgICB0aGlzLl9idWlsZERvbWluYXRlZE5vZGVz
KCk7CiAgICAgfSwKIApAQCAtMTI0OCwzMCArMTI0OCwyNCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGRvbWluYXRvcnNUcmVlOwogICAg
IH0sCiAKLSAgICBfY2FsY3VsYXRlUmV0YWluZWRTaXplczogZnVuY3Rpb24oKQorICAgIF9jYWxj
dWxhdGVSZXRhaW5lZFNpemVzOiBmdW5jdGlvbihwb3N0T3JkZXJJbmRleDJOb2RlT3JkaW5hbCkK
ICAgICB7Ci0gICAgICAgIC8vIEFzIGZvciB0aGUgZG9taW5hdG9ycyB0cmVlIHdlIG9ubHkga25v
dyBwYXJlbnQgbm9kZXMsIG5vdAotICAgICAgICAvLyBjaGlsZHJlbiwgdG8gc3VtIHVwIHRvdGFs
IHNpemVzIHdlICJidWJibGUiIG5vZGUncyBzZWxmIHNpemUKLSAgICAgICAgLy8gYWRkaW5nIGl0
IHRvIGFsbCBvZiBpdHMgcGFyZW50cy4KKyAgICAgICAgdmFyIG5vZGVDb3VudCA9IHRoaXMubm9k
ZUNvdW50OwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKICAgICAgICAgdmFyIG5v
ZGVTZWxmU2l6ZU9mZnNldCA9IHRoaXMuX25vZGVTZWxmU2l6ZU9mZnNldDsKICAgICAgICAgdmFy
IG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZpZWxkQ291bnQ7CiAgICAgICAgIHZhciBkb21p
bmF0b3JzVHJlZSA9IHRoaXMuX2RvbWluYXRvcnNUcmVlOwotICAgICAgICB2YXIgcmV0YWluZWRT
aXplcyA9IG5ldyBVaW50MzJBcnJheSh0aGlzLm5vZGVDb3VudCk7CisgICAgICAgIHZhciByZXRh
aW5lZFNpemVzID0gdGhpcy5fcmV0YWluZWRTaXplcyA9IG5ldyBVaW50MzJBcnJheShub2RlQ291
bnQpOwogICAgICAgICB2YXIgcm9vdE5vZGVPcmRpbmFsID0gdGhpcy5fcm9vdE5vZGVJbmRleCAv
IG5vZGVGaWVsZENvdW50OwogCi0gICAgICAgIGZvciAodmFyIG5vZGVPcmRpbmFsID0gMCwgbm9k
ZVNlbGZTaXplSW5kZXggPSBub2RlU2VsZlNpemVPZmZzZXQsIGwgPSB0aGlzLm5vZGVDb3VudDsK
LSAgICAgICAgICAgICBub2RlT3JkaW5hbCA8IGw7Ci0gICAgICAgICAgICAgKytub2RlT3JkaW5h
bCwgbm9kZVNlbGZTaXplSW5kZXggKz0gbm9kZUZpZWxkQ291bnQpIHsKLSAgICAgICAgICAgIHZh
ciBub2RlU2VsZlNpemUgPSBub2Rlc1tub2RlU2VsZlNpemVJbmRleF07Ci0gICAgICAgICAgICB2
YXIgY3VycmVudE5vZGVPcmRpbmFsID0gbm9kZU9yZGluYWw7Ci0gICAgICAgICAgICByZXRhaW5l
ZFNpemVzW2N1cnJlbnROb2RlT3JkaW5hbF0gKz0gbm9kZVNlbGZTaXplOwotICAgICAgICAgICAg
ZG8gewotICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlT3JkaW5hbCA9IGRvbWluYXRvcnNUcmVl
W2N1cnJlbnROb2RlT3JkaW5hbF07Ci0gICAgICAgICAgICAgICAgcmV0YWluZWRTaXplc1tjdXJy
ZW50Tm9kZU9yZGluYWxdICs9IG5vZGVTZWxmU2l6ZTsKLSAgICAgICAgICAgIH0gd2hpbGUgKGN1
cnJlbnROb2RlT3JkaW5hbCAhPT0gcm9vdE5vZGVPcmRpbmFsKTsKKyAgICAgICAgcmV0YWluZWRT
aXplc1tyb290Tm9kZU9yZGluYWxdID0gbm9kZXNbdGhpcy5fcm9vdE5vZGVJbmRleCArIG5vZGVT
ZWxmU2l6ZU9mZnNldF07CisgICAgICAgIC8vIFByb3BhZ2F0ZSByZXRhaW5lZCBzaXplcyBmb3Ig
ZWFjaCBub2RlIGV4Y2x1ZGluZyByb290LCBhcyBpdCByZWZlcnMgdG8gc2VsZi4KKyAgICAgICAg
Zm9yICh2YXIgcG9zdE9yZGVySW5kZXggPSAwOyBwb3N0T3JkZXJJbmRleCA8IG5vZGVDb3VudCAt
IDE7ICsrcG9zdE9yZGVySW5kZXgpIHsKKyAgICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IHBv
c3RPcmRlckluZGV4Mk5vZGVPcmRpbmFsW3Bvc3RPcmRlckluZGV4XTsKKyAgICAgICAgICAgIHZh
ciBkb21pbmF0b3JPcmRpbmFsID0gZG9taW5hdG9yc1RyZWVbbm9kZU9yZGluYWxdOworICAgICAg
ICAgICAgcmV0YWluZWRTaXplc1tub2RlT3JkaW5hbF0gKz0gbm9kZXNbbm9kZU9yZGluYWwgKiBu
b2RlRmllbGRDb3VudCArIG5vZGVTZWxmU2l6ZU9mZnNldF07CisgICAgICAgICAgICByZXRhaW5l
ZFNpemVzW2RvbWluYXRvck9yZGluYWxdICs9IHJldGFpbmVkU2l6ZXNbbm9kZU9yZGluYWxdOwog
ICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3JldGFpbmVkU2l6ZXMgPSByZXRhaW5lZFNpemVzOwog
ICAgIH0sCiAKICAgICBfYnVpbGREb21pbmF0ZWROb2RlczogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZmNjNTZhMzY5ZmFjMTA0YzUxZjhhNWZkNDE5NGU2ZTQzYzYwNzE5Li5kMWZiYjFj
M2Y1MTE3OGI2ZGNlMTJmYmQ1MWI4YmVjNWRjMmNjNmFjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDEyLTA2LTAxICBBbGV4ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzcGVlZCB1cCBfY2FsY3VsYXRlUmV0YWlu
ZWRTaXplcyBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODc4NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9oZWFwLXBlcmZvcm1hbmNlLXRlc3QuanM6IENvcGllZCBmcm9t
IFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRtbC4KKyAgICAgICAg
KHRlc3QucGVyZm9ybWFuY2VUZXN0LnN0ZXAwKToKKyAgICAgICAgKHRlc3QucGVyZm9ybWFuY2VU
ZXN0LnN0ZXAxKToKKyAgICAgICAgKHRlc3QucGVyZm9ybWFuY2VUZXN0LnN0ZXAyKToKKyAgICAg
ICAgKHRlc3QucGVyZm9ybWFuY2VUZXN0LmNsZWFudXApOgorICAgICAgICAodGVzdC5wZXJmb3Jt
YW5jZVRlc3QuZG9uZSk6CisgICAgICAgICh0ZXN0LnBlcmZvcm1hbmNlVGVzdCk6CisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC1hZHZhbmNlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sOgorCiAyMDEy
LTA2LTAxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBw
dWJsaWMgcGFnZSBsb2FkaW5nIHBlcmZvcm1hbmNlIHRlc3RzIHVzaW5nIHdlYi1wYWdlLXJlcGxh
eQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1wZXJmb3JtYW5j
ZS10ZXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1wZXJmb3JtYW5jZS10
ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkzMTNkNTU1MTRhNjgxM2RiM2FlM2Y4ZmEwZGE4OGE3MzBiODkx
YzIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXBl
cmZvcm1hbmNlLXRlc3QuanMKQEAgLTAsMCArMSw3MiBAQAorZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUsICJfYnVpbGRSZXRhaW5lcnMiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1
cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9idWlsZERv
bWluYXRlZE5vZGVzIik7CisgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfY2FsY3VsYXRlRmxhZ3MiKTsKKyAgICBJ
bnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSwgIl9idWlsZEFnZ3JlZ2F0ZXMiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVG
dW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9jYWxjdWxhdGVD
bGFzc2VzUmV0YWluZWRTaXplIik7CisgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24o
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfY2FsY3VsYXRlT2JqZWN0VG9X
aW5kb3dEaXN0YW5jZSIpOworICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1bGF0ZVJldGFpbmVkU2l6ZXMi
KTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZSwgIl9tYXJrRGV0YWNoZWRET01UcmVlTm9kZXMiKTsKKyAgICBJbnNw
ZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZSwgIl9tYXJrUXVlcmlhYmxlSGVhcE9iamVjdHMiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1l
YXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9tYXJr
UGFnZU93bmVkTm9kZXMiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9zcGxpdE5vZGVzQW5kQ29udGFpbm1l
bnRFZGdlcyIpOworICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2J1aWxkUG9zdE9yZGVySW5kZXgiKTsKKyAgICBJ
bnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSwgIl9idWlsZERvbWluYXRvclRyZWUiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1
cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQu
cHJvdG90eXBlLCAiX2FnZ3JlZ2F0ZXNSZWNlaXZlZCIpOworCisgICAgZnVuY3Rpb24gcGVyZm9y
bWFuY2VUZXN0KHRpbWVyKQorICAgIHsKKyAgICAgICAgdmFyIHRyYW5zZmVyVGltZXJDb29raWU7
CisgICAgICAgIHZhciBzaG93VGltZXJDb29raWU7CisgICAgICAgIHZhciBjaGFuZ2VWaWV3VGlt
ZXJDb29raWU7CisgICAgICAgIHZhciBjbGVhclRpbWVyQ29va2llOworCisgICAgICAgIHZhciB0
ZXN0TmFtZSA9IC8oW15cL10rKVwuaHRtbCQvLmV4ZWMoV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBh
Z2VVUkwpWzFdOworICAgICAgICB2YXIgZnVsbFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoImZ1
bGwtc3VtbWFyeS1zbmFwc2hvdC10aW1lIik7CisgICAgICAgIHZhciBiYWNrZW5kVGltZXJDb29r
aWUgPSB0aW1lci5zdGFydCh0ZXN0TmFtZSk7CisgICAgICAgIFByb2ZpbGVyQWdlbnQudGFrZUhl
YXBTbmFwc2hvdChzdGVwMCk7CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDAoKQorICAgICAgICB7
CisgICAgICAgICAgICB0aW1lci5maW5pc2goYmFja2VuZFRpbWVyQ29va2llKTsKKyAgICAgICAg
ICAgIHRyYW5zZmVyVGltZXJDb29raWUgPSB0aW1lci5zdGFydCgidHJhbnNmZXItc25hcHNob3Qi
KTsKKyAgICAgICAgICAgIHZhciBwcm9maWxlcyA9IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmls
ZXMuZ2V0UHJvZmlsZXMoIkhFQVAiKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
cHJvZmlsZXMuc2hvd1Byb2ZpbGUocHJvZmlsZXNbcHJvZmlsZXMubGVuZ3RoIC0gMV0pOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5wYW5lbHMucHJv
ZmlsZXMsICJfZmluaXNoSGVhcFNuYXBzaG90Iiwgc3RlcDEpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc3RlcDEodWlkKQorICAgICAgICB7CisgICAgICAgICAgICB0aW1lci5maW5p
c2godHJhbnNmZXJUaW1lckNvb2tpZSk7CisgICAgICAgICAgICBzaG93VGltZXJDb29raWUgPSB0
aW1lci5zdGFydCgic2hvdy1zbmFwc2hvdCIpOworICAgICAgICAgICAgdmFyIHBhbmVsID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5wcm9maWxlczsKKyAgICAgICAgICAgIHZhciBwcm9maWxlID0gcGFu
ZWwuX3Byb2ZpbGVzSWRNYXBbcGFuZWwuX21ha2VLZXkodWlkLCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkKV07CisgICAgICAgICAgICBwcm9maWxlLmxvYWQoc3Rl
cDIpOyAvLyBBZGQgbG9hZCBjYWxsYmFjay4KKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHN0ZXAyKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGltZXIuZmluaXNoKHNob3dUaW1lckNv
b2tpZSk7CisgICAgICAgICAgICBjaGFuZ2VWaWV3VGltZXJDb29raWUgPSB0aW1lci5zdGFydCgi
c3dpdGNoLXRvLWNvbnRhaW5tZW50LXZpZXciKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
c3dpdGNoVG9WaWV3KCJDb250YWlubWVudCIsIGNsZWFudXApOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2xlYW51cCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRpbWVyLmZpbmlz
aChjaGFuZ2VWaWV3VGltZXJDb29raWUpOworICAgICAgICAgICAgdGltZXIuZmluaXNoKGZ1bGxU
aW1lckNvb2tpZSk7CisgICAgICAgICAgICBjbGVhclRpbWVyQ29va2llID0gdGltZXIuc3RhcnQo
ImNsZWFyLXNuYXBzaG90Iik7CisgICAgICAgICAgICBQcm9maWxlckFnZW50LmNsZWFyUHJvZmls
ZXMoZG9uZSk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLl9yZXNl
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZG9uZSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHRpbWVyLmZpbmlzaChjbGVhclRpbWVyQ29va2llKTsKKyAgICAgICAgICAgIHRp
bWVyLmRvbmUodGVzdE5hbWUpOworICAgICAgICB9CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVz
dC5ydW5QZXJmb3JtYW5jZVRlc3QocGVyZm9ybWFuY2VUZXN0LCA2MDAwMCk7Cit9CmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBzaG90LWFkdmFuY2VkLmh0
bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBzaG90LWFkdmFuY2VkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODczMTI0ODNiN2RlNTMzZTljMDljOTYyYTE1MDZiNzgyNjM4N2FlOQot
LS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNo
b3QtYWR2YW5jZWQuaHRtbApAQCAtMCwwICsxLDM1IEBACis8aHRtbD4KKzxoZWFkPgorICA8c2Ny
aXB0IHNyYz0iLi4vLi4vTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcyI+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQgc3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Imhl
YXAtcGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBt
YWtlTGlua2VkTGlzdChuKQoreworICAgIHZhciBub2RlID0ge307CisgICAgd2hpbGUgKC0tbikK
KyAgICAgICAgbm9kZSA9IHsgbmV4dDogbm9kZSB9OworICAgIHJldHVybiBub2RlOworfQorCitm
dW5jdGlvbiBtYWtlRG91YmxlTGlua2VkTGlzdChuKQoreworICB2YXIgdGFpbCA9IHt9OworICB2
YXIgaGVhZCA9IHRhaWw7CisgIHdoaWxlICgtLW4pIHsKKyAgICBoZWFkID0geyBuZXh0OiBoZWFk
IH07CisgICAgaGVhZC5uZXh0LnByZXYgPSBoZWFkOworICB9CisgIHJldHVybiB7IGhlYWQ6IGhl
YWQsIHRhaWw6IHRhaWwgfTsKK30KKwordmFyIGxpc3QgPSBtYWtlTGlua2VkTGlzdCgyMDAwMCk7
Cit2YXIgZG91YmxlX2xpc3QgPSBtYWtlRG91YmxlTGlua2VkTGlzdCg1MDAwKTsKKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBzaG90Lmh0
bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBzaG90Lmh0bWwKaW5kZXgg
YmE1Mzg3NDk1MjMwMGQ3N2Y0ZjcwNTAxZTlmNjNlNGRhMDU3NjlkNC4uOGFhZTk5NjZlMTAxMGNl
NjRlZWY3M2ZkNjY1ZjVhNGFhMmU0Y2NiNiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9p
bnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVj
dG9yL2hlYXAtc25hcHNob3QuaHRtbApAQCAtMyw4MCArMyw5IEBACiAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+CiAgIDxzY3JpcHQgc3JjPSIuLi8uLi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzIj48L3NjcmlwdD4KICAgPHNjcmlwdCBzcmM9InBl
cmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iaGVhcC1wZXJmb3Jt
YW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3QucHJvdG90eXBlLCAiX2J1aWxkUmV0YWluZXJzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFz
dXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfYnVpbGRE
b21pbmF0ZWROb2RlcyIpOwotICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1bGF0ZUZsYWdzIik7Ci0gICAg
SW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUsICJfYnVpbGRBZ2dyZWdhdGVzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJl
RnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfY2FsY3VsYXRl
Q2xhc3Nlc1JldGFpbmVkU2l6ZSIpOwotICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9u
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1bGF0ZU9iamVjdFRv
V2luZG93RGlzdGFuY2UiKTsKLSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9jYWxjdWxhdGVSZXRhaW5lZFNpemVz
Iik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUsICJfbWFya0RldGFjaGVkRE9NVHJlZU5vZGVzIik7Ci0gICAgSW5z
cGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUsICJfbWFya1F1ZXJpYWJsZUhlYXBPYmplY3RzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5t
ZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfbWFy
a1BhZ2VPd25lZE5vZGVzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfc3BsaXROb2Rlc0FuZENvbnRhaW5t
ZW50RWRnZXMiKTsKLSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9idWlsZFBvc3RPcmRlckluZGV4Iik7Ci0gICAg
SW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUsICJfYnVpbGREb21pbmF0b3JUcmVlIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFz
dXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yc0RhdGFHcmlk
LnByb3RvdHlwZSwgIl9hZ2dyZWdhdGVzUmVjZWl2ZWQiKTsKLQotICAgIGZ1bmN0aW9uIHBlcmZv
cm1hbmNlVGVzdCh0aW1lcikKLSAgICB7Ci0gICAgICAgIHZhciB0cmFuc2ZlclRpbWVyQ29va2ll
OwotICAgICAgICB2YXIgc2hvd1RpbWVyQ29va2llOwotICAgICAgICB2YXIgY2hhbmdlVmlld1Rp
bWVyQ29va2llOwotICAgICAgICB2YXIgY2xlYXJUaW1lckNvb2tpZTsKLQotICAgICAgICB2YXIg
ZnVsbFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoImZ1bGwtc3VtbWFyeS1zbmFwc2hvdC10aW1l
Iik7Ci0gICAgICAgIHZhciBiYWNrZW5kVGltZXJDb29raWUgPSB0aW1lci5zdGFydCgidGFrZS1z
bmFwc2hvdCIpOwotICAgICAgICBQcm9maWxlckFnZW50LnRha2VIZWFwU25hcHNob3Qoc3RlcDAp
OwotCi0gICAgICAgIGZ1bmN0aW9uIHN0ZXAwKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGlt
ZXIuZmluaXNoKGJhY2tlbmRUaW1lckNvb2tpZSk7Ci0gICAgICAgICAgICB0cmFuc2ZlclRpbWVy
Q29va2llID0gdGltZXIuc3RhcnQoInRyYW5zZmVyLXNuYXBzaG90Iik7Ci0gICAgICAgICAgICB2
YXIgcHJvZmlsZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLmdldFByb2ZpbGVzKCJI
RUFQIik7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLnNob3dQcm9m
aWxlKHByb2ZpbGVzW3Byb2ZpbGVzLmxlbmd0aCAtIDFdKTsKLSAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLCAiX2ZpbmlzaEhl
YXBTbmFwc2hvdCIsIHN0ZXAxKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHN0ZXAx
KHVpZCkKLSAgICAgICAgewotICAgICAgICAgICAgdGltZXIuZmluaXNoKHRyYW5zZmVyVGltZXJD
b29raWUpOwotICAgICAgICAgICAgc2hvd1RpbWVyQ29va2llID0gdGltZXIuc3RhcnQoInNob3ct
c25hcHNob3QiKTsKLSAgICAgICAgICAgIHZhciBwYW5lbCA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
cHJvZmlsZXM7Ci0gICAgICAgICAgICB2YXIgcHJvZmlsZSA9IHBhbmVsLl9wcm9maWxlc0lkTWFw
W3BhbmVsLl9tYWtlS2V5KHVpZCwgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBl
LlR5cGVJZCldOwotICAgICAgICAgICAgcHJvZmlsZS5sb2FkKHN0ZXAyKTsgLy8gQWRkIGxvYWQg
Y2FsbGJhY2suCi0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzdGVwMigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHRpbWVyLmZpbmlzaChzaG93VGltZXJDb29raWUpOwotICAgICAgICAg
ICAgY2hhbmdlVmlld1RpbWVyQ29va2llID0gdGltZXIuc3RhcnQoInN3aXRjaC10by1jb250YWlu
bWVudC12aWV3Iik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnN3aXRjaFRvVmlldygiQ29u
dGFpbm1lbnQiLCBjbGVhbnVwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGNsZWFu
dXAoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aW1lci5maW5pc2goY2hhbmdlVmlld1RpbWVy
Q29va2llKTsKLSAgICAgICAgICAgIHRpbWVyLmZpbmlzaChmdWxsVGltZXJDb29raWUpOwotICAg
ICAgICAgICAgY2xlYXJUaW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJjbGVhci1zbmFwc2hvdCIp
OwotICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5jbGVhclByb2ZpbGVzKGRvbmUpOwotICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5fcmVzZXQoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZ1bmN0aW9uIGRvbmUoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aW1lci5m
aW5pc2goY2xlYXJUaW1lckNvb2tpZSk7Ci0gICAgICAgICAgICB0aW1lci5kb25lKCJoZWFwLXNu
YXBzaG90Iik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBJbnNwZWN0b3JUZXN0LnJ1blBlcmZv
cm1hbmNlVGVzdChwZXJmb3JtYW5jZVRlc3QsIDYwMDAwKTsKLX0KLQogdmFyIGNvdW50ZXIgPSAw
OwogCiBmdW5jdGlvbiBtYWtlT2JqZWN0c1RyZWUoZGVlcCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145280</attachid>
            <date>2012-06-01 05:54:23 -0700</date>
            <delta_ts>2012-06-01 06:04:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87863-20120601165421.patch</filename>
            <type>text/plain</type>
            <size>13609</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk5MzBlM2EzNjQ3Y2I3
NTI4MGI3OWQ5YzIwYTFkOWIzMTI1ZDU3ZS4uNTc1Y2Q3ZDgxZGVmMDAzMTg4ZThhMzM5Y2NiY2Ri
OWE3MmQwYWVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA2LTAxICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBzcGVlZCB1cCBfY2FsY3VsYXRlUmV0YWluZWRTaXplcyBmdW5jdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4NjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUuX2NhbGN1bGF0ZVJldGFpbmVkU2l6ZXMpOgorCiAyMDEyLTA2LTAxICBNT1JJVEEg
SGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIEZyYW1lOjp3aWxsRGV0YWNo
UGFnZSgpIHNob3VsZG4ndCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCmluZGV4IDQyMDZj
ZjYyZThmNDVmM2VkZTkzM2FiOTI1OTgwYzMzOWM1MzM4OTguLmYyNzAyODIyZjZmN2E5NmZhYWJk
ZjI2NGRhZmZhN2MzNDE2ZmViNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCkBAIC03MDUsNyArNzA1LDcgQEAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciByZXN1bHQgPSB0aGlz
Ll9idWlsZFBvc3RPcmRlckluZGV4KCk7CiAgICAgICAgIC8vIEFjdHVhbGx5IGl0IGlzIGFycmF5
IHRoYXQgbWFwcyBub2RlIG9yZGluYWwgbnVtYmVyIHRvIGRvbWluYXRvciBub2RlIG9yZGluYWwg
bnVtYmVyLgogICAgICAgICB0aGlzLl9kb21pbmF0b3JzVHJlZSA9IHRoaXMuX2J1aWxkRG9taW5h
dG9yVHJlZShyZXN1bHQucG9zdE9yZGVySW5kZXgyTm9kZU9yZGluYWwsIHJlc3VsdC5ub2RlT3Jk
aW5hbDJQb3N0T3JkZXJJbmRleCk7Ci0gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVJldGFpbmVkU2l6
ZXMoKTsKKyAgICAgICAgdGhpcy5fY2FsY3VsYXRlUmV0YWluZWRTaXplcyhyZXN1bHQucG9zdE9y
ZGVySW5kZXgyTm9kZU9yZGluYWwpOwogICAgICAgICB0aGlzLl9idWlsZERvbWluYXRlZE5vZGVz
KCk7CiAgICAgfSwKIApAQCAtMTI0OCwzMCArMTI0OCwyNCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGRvbWluYXRvcnNUcmVlOwogICAg
IH0sCiAKLSAgICBfY2FsY3VsYXRlUmV0YWluZWRTaXplczogZnVuY3Rpb24oKQorICAgIF9jYWxj
dWxhdGVSZXRhaW5lZFNpemVzOiBmdW5jdGlvbihwb3N0T3JkZXJJbmRleDJOb2RlT3JkaW5hbCkK
ICAgICB7Ci0gICAgICAgIC8vIEFzIGZvciB0aGUgZG9taW5hdG9ycyB0cmVlIHdlIG9ubHkga25v
dyBwYXJlbnQgbm9kZXMsIG5vdAotICAgICAgICAvLyBjaGlsZHJlbiwgdG8gc3VtIHVwIHRvdGFs
IHNpemVzIHdlICJidWJibGUiIG5vZGUncyBzZWxmIHNpemUKLSAgICAgICAgLy8gYWRkaW5nIGl0
IHRvIGFsbCBvZiBpdHMgcGFyZW50cy4KKyAgICAgICAgdmFyIG5vZGVDb3VudCA9IHRoaXMubm9k
ZUNvdW50OwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKICAgICAgICAgdmFyIG5v
ZGVTZWxmU2l6ZU9mZnNldCA9IHRoaXMuX25vZGVTZWxmU2l6ZU9mZnNldDsKICAgICAgICAgdmFy
IG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZpZWxkQ291bnQ7CiAgICAgICAgIHZhciBkb21p
bmF0b3JzVHJlZSA9IHRoaXMuX2RvbWluYXRvcnNUcmVlOwotICAgICAgICB2YXIgcmV0YWluZWRT
aXplcyA9IG5ldyBVaW50MzJBcnJheSh0aGlzLm5vZGVDb3VudCk7CisgICAgICAgIHZhciByZXRh
aW5lZFNpemVzID0gdGhpcy5fcmV0YWluZWRTaXplcyA9IG5ldyBVaW50MzJBcnJheShub2RlQ291
bnQpOwogICAgICAgICB2YXIgcm9vdE5vZGVPcmRpbmFsID0gdGhpcy5fcm9vdE5vZGVJbmRleCAv
IG5vZGVGaWVsZENvdW50OwogCi0gICAgICAgIGZvciAodmFyIG5vZGVPcmRpbmFsID0gMCwgbm9k
ZVNlbGZTaXplSW5kZXggPSBub2RlU2VsZlNpemVPZmZzZXQsIGwgPSB0aGlzLm5vZGVDb3VudDsK
LSAgICAgICAgICAgICBub2RlT3JkaW5hbCA8IGw7Ci0gICAgICAgICAgICAgKytub2RlT3JkaW5h
bCwgbm9kZVNlbGZTaXplSW5kZXggKz0gbm9kZUZpZWxkQ291bnQpIHsKLSAgICAgICAgICAgIHZh
ciBub2RlU2VsZlNpemUgPSBub2Rlc1tub2RlU2VsZlNpemVJbmRleF07Ci0gICAgICAgICAgICB2
YXIgY3VycmVudE5vZGVPcmRpbmFsID0gbm9kZU9yZGluYWw7Ci0gICAgICAgICAgICByZXRhaW5l
ZFNpemVzW2N1cnJlbnROb2RlT3JkaW5hbF0gKz0gbm9kZVNlbGZTaXplOwotICAgICAgICAgICAg
ZG8gewotICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlT3JkaW5hbCA9IGRvbWluYXRvcnNUcmVl
W2N1cnJlbnROb2RlT3JkaW5hbF07Ci0gICAgICAgICAgICAgICAgcmV0YWluZWRTaXplc1tjdXJy
ZW50Tm9kZU9yZGluYWxdICs9IG5vZGVTZWxmU2l6ZTsKLSAgICAgICAgICAgIH0gd2hpbGUgKGN1
cnJlbnROb2RlT3JkaW5hbCAhPT0gcm9vdE5vZGVPcmRpbmFsKTsKKyAgICAgICAgcmV0YWluZWRT
aXplc1tyb290Tm9kZU9yZGluYWxdID0gbm9kZXNbdGhpcy5fcm9vdE5vZGVJbmRleCArIG5vZGVT
ZWxmU2l6ZU9mZnNldF07CisgICAgICAgIC8vIFByb3BhZ2F0ZSByZXRhaW5lZCBzaXplcyBmb3Ig
ZWFjaCBub2RlIGV4Y2x1ZGluZyByb290LCBhcyBpdCByZWZlcnMgdG8gc2VsZi4KKyAgICAgICAg
Zm9yICh2YXIgcG9zdE9yZGVySW5kZXggPSAwOyBwb3N0T3JkZXJJbmRleCA8IG5vZGVDb3VudCAt
IDE7ICsrcG9zdE9yZGVySW5kZXgpIHsKKyAgICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IHBv
c3RPcmRlckluZGV4Mk5vZGVPcmRpbmFsW3Bvc3RPcmRlckluZGV4XTsKKyAgICAgICAgICAgIHZh
ciBkb21pbmF0b3JPcmRpbmFsID0gZG9taW5hdG9yc1RyZWVbbm9kZU9yZGluYWxdOworICAgICAg
ICAgICAgcmV0YWluZWRTaXplc1tub2RlT3JkaW5hbF0gKz0gbm9kZXNbbm9kZU9yZGluYWwgKiBu
b2RlRmllbGRDb3VudCArIG5vZGVTZWxmU2l6ZU9mZnNldF07CisgICAgICAgICAgICByZXRhaW5l
ZFNpemVzW2RvbWluYXRvck9yZGluYWxdICs9IHJldGFpbmVkU2l6ZXNbbm9kZU9yZGluYWxdOwog
ICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3JldGFpbmVkU2l6ZXMgPSByZXRhaW5lZFNpemVzOwog
ICAgIH0sCiAKICAgICBfYnVpbGREb21pbmF0ZWROb2RlczogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZmNjNTZhMzY5ZmFjMTA0YzUxZjhhNWZkNDE5NGU2ZTQzYzYwNzE5Li5kMWZiYjFj
M2Y1MTE3OGI2ZGNlMTJmYmQ1MWI4YmVjNWRjMmNjNmFjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDEyLTA2LTAxICBBbGV4ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzcGVlZCB1cCBfY2FsY3VsYXRlUmV0YWlu
ZWRTaXplcyBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODc4NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9oZWFwLXBlcmZvcm1hbmNlLXRlc3QuanM6IENvcGllZCBmcm9t
IFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRtbC4KKyAgICAgICAg
KHRlc3QucGVyZm9ybWFuY2VUZXN0LnN0ZXAwKToKKyAgICAgICAgKHRlc3QucGVyZm9ybWFuY2VU
ZXN0LnN0ZXAxKToKKyAgICAgICAgKHRlc3QucGVyZm9ybWFuY2VUZXN0LnN0ZXAyKToKKyAgICAg
ICAgKHRlc3QucGVyZm9ybWFuY2VUZXN0LmNsZWFudXApOgorICAgICAgICAodGVzdC5wZXJmb3Jt
YW5jZVRlc3QuZG9uZSk6CisgICAgICAgICh0ZXN0LnBlcmZvcm1hbmNlVGVzdCk6CisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC1hZHZhbmNlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sOgorCiAyMDEy
LTA2LTAxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBw
dWJsaWMgcGFnZSBsb2FkaW5nIHBlcmZvcm1hbmNlIHRlc3RzIHVzaW5nIHdlYi1wYWdlLXJlcGxh
eQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1wZXJmb3JtYW5j
ZS10ZXN0LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1wZXJmb3JtYW5jZS10
ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJmYmNjOTcxYjZmZWIyZGZkMWYyYmU2MWE3YjQzNGM5ZmEyNGY4
ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXBl
cmZvcm1hbmNlLXRlc3QuanMKQEAgLTAsMCArMSw3MiBAQAorZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUsICJfYnVpbGRSZXRhaW5lcnMiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1
cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9idWlsZERv
bWluYXRlZE5vZGVzIik7CisgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfY2FsY3VsYXRlRmxhZ3MiKTsKKyAgICBJ
bnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSwgIl9idWlsZEFnZ3JlZ2F0ZXMiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVG
dW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9jYWxjdWxhdGVD
bGFzc2VzUmV0YWluZWRTaXplIik7CisgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24o
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfY2FsY3VsYXRlT2JqZWN0VG9X
aW5kb3dEaXN0YW5jZSIpOworICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1bGF0ZVJldGFpbmVkU2l6ZXMi
KTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZSwgIl9tYXJrRGV0YWNoZWRET01UcmVlTm9kZXMiKTsKKyAgICBJbnNw
ZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZSwgIl9tYXJrUXVlcmlhYmxlSGVhcE9iamVjdHMiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1l
YXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9tYXJr
UGFnZU93bmVkTm9kZXMiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9zcGxpdE5vZGVzQW5kQ29udGFpbm1l
bnRFZGdlcyIpOworICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2J1aWxkUG9zdE9yZGVySW5kZXgiKTsKKyAgICBJ
bnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSwgIl9idWlsZERvbWluYXRvclRyZWUiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1
cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQu
cHJvdG90eXBlLCAiX2FnZ3JlZ2F0ZXNSZWNlaXZlZCIpOworCisgICAgZnVuY3Rpb24gcGVyZm9y
bWFuY2VUZXN0KHRpbWVyKQorICAgIHsKKyAgICAgICAgdmFyIHRyYW5zZmVyVGltZXJDb29raWU7
CisgICAgICAgIHZhciBzaG93VGltZXJDb29raWU7CisgICAgICAgIHZhciBjaGFuZ2VWaWV3VGlt
ZXJDb29raWU7CisgICAgICAgIHZhciBjbGVhclRpbWVyQ29va2llOworCisgICAgICAgIHZhciB0
ZXN0TmFtZSA9IC8oW15cL10rKVwuaHRtbCQvLmV4ZWMoV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBh
Z2VVUkwpWzFdOworICAgICAgICB2YXIgZnVsbFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoImZ1
bGwtc3VtbWFyeS1zbmFwc2hvdC10aW1lIik7CisgICAgICAgIHZhciBiYWNrZW5kVGltZXJDb29r
aWUgPSB0aW1lci5zdGFydCgidGFrZS1zbmFwc2hvdCIpOworICAgICAgICBQcm9maWxlckFnZW50
LnRha2VIZWFwU25hcHNob3Qoc3RlcDApOworCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAwKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdGltZXIuZmluaXNoKGJhY2tlbmRUaW1lckNvb2tpZSk7Cisg
ICAgICAgICAgICB0cmFuc2ZlclRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoInRyYW5zZmVyLXNu
YXBzaG90Iik7CisgICAgICAgICAgICB2YXIgcHJvZmlsZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxz
LnByb2ZpbGVzLmdldFByb2ZpbGVzKCJIRUFQIik7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnByb2ZpbGVzLnNob3dQcm9maWxlKHByb2ZpbGVzW3Byb2ZpbGVzLmxlbmd0aCAtIDFd
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IucGFu
ZWxzLnByb2ZpbGVzLCAiX2ZpbmlzaEhlYXBTbmFwc2hvdCIsIHN0ZXAxKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKHVpZCkKKyAgICAgICAgeworICAgICAgICAgICAgdGlt
ZXIuZmluaXNoKHRyYW5zZmVyVGltZXJDb29raWUpOworICAgICAgICAgICAgc2hvd1RpbWVyQ29v
a2llID0gdGltZXIuc3RhcnQoInNob3ctc25hcHNob3QiKTsKKyAgICAgICAgICAgIHZhciBwYW5l
bCA9IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXM7CisgICAgICAgICAgICB2YXIgcHJvZmls
ZSA9IHBhbmVsLl9wcm9maWxlc0lkTWFwW3BhbmVsLl9tYWtlS2V5KHVpZCwgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCldOworICAgICAgICAgICAgcHJvZmlsZS5s
b2FkKHN0ZXAyKTsgLy8gQWRkIGxvYWQgY2FsbGJhY2suCisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzdGVwMigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRpbWVyLmZpbmlzaChzaG93
VGltZXJDb29raWUpOworICAgICAgICAgICAgY2hhbmdlVmlld1RpbWVyQ29va2llID0gdGltZXIu
c3RhcnQoInN3aXRjaC10by1jb250YWlubWVudC12aWV3Iik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1lbnQiLCBjbGVhbnVwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNsZWFudXAoKQorICAgICAgICB7CisgICAgICAgICAgICB0aW1l
ci5maW5pc2goY2hhbmdlVmlld1RpbWVyQ29va2llKTsKKyAgICAgICAgICAgIHRpbWVyLmZpbmlz
aChmdWxsVGltZXJDb29raWUpOworICAgICAgICAgICAgY2xlYXJUaW1lckNvb2tpZSA9IHRpbWVy
LnN0YXJ0KCJjbGVhci1zbmFwc2hvdCIpOworICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5jbGVh
clByb2ZpbGVzKGRvbmUpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxl
cy5fcmVzZXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRvbmUoKQorICAgICAg
ICB7CisgICAgICAgICAgICB0aW1lci5maW5pc2goY2xlYXJUaW1lckNvb2tpZSk7CisgICAgICAg
ICAgICB0aW1lci5kb25lKHRlc3ROYW1lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEluc3Bl
Y3RvclRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHBlcmZvcm1hbmNlVGVzdCwgNjAwMDApOworfQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC1hZHZh
bmNlZC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC1hZHZh
bmNlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3MzEyNDgzYjdkZTUzM2U5YzA5Yzk2MmExNTA2Yjc4MjYz
ODdhZTkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFw
LXNuYXBzaG90LWFkdmFuY2VkLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8aGVhZD4K
KyAgPHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMiPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQg
c3JjPSJoZWFwLXBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVu
Y3Rpb24gbWFrZUxpbmtlZExpc3QobikKK3sKKyAgICB2YXIgbm9kZSA9IHt9OworICAgIHdoaWxl
ICgtLW4pCisgICAgICAgIG5vZGUgPSB7IG5leHQ6IG5vZGUgfTsKKyAgICByZXR1cm4gbm9kZTsK
K30KKworZnVuY3Rpb24gbWFrZURvdWJsZUxpbmtlZExpc3QobikKK3sKKyAgdmFyIHRhaWwgPSB7
fTsKKyAgdmFyIGhlYWQgPSB0YWlsOworICB3aGlsZSAoLS1uKSB7CisgICAgaGVhZCA9IHsgbmV4
dDogaGVhZCB9OworICAgIGhlYWQubmV4dC5wcmV2ID0gaGVhZDsKKyAgfQorICByZXR1cm4geyBo
ZWFkOiBoZWFkLCB0YWlsOiB0YWlsIH07Cit9CisKK3ZhciBsaXN0ID0gbWFrZUxpbmtlZExpc3Qo
MjAwMDApOwordmFyIGRvdWJsZV9saXN0ID0gbWFrZURvdWJsZUxpbmtlZExpc3QoNTAwMCk7CisK
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFw
c2hvdC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1s
CmluZGV4IGJhNTM4NzQ5NTIzMDBkNzdmNGY3MDUwMWU5ZjYzZTRkYTA1NzY5ZDQuLjhhYWU5OTY2
ZTEwMTBjZTY0ZWVmNzNmZDY2NWY1YTRhYTJlNGNjYjYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L2luc3BlY3Rvci9oZWFwLXNuYXBzaG90Lmh0bWwKQEAgLTMsODAgKzMsOSBAQAogICA8c2NyaXB0
IHNyYz0iLi4vLi4vTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgogICA8c2NyaXB0IHNyYz0iLi4vLi4vTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcyI+PC9zY3JpcHQ+CiAgIDxzY3JpcHQg
c3JjPSJwZXJmb3JtYW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9ImhlYXAt
cGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiB0ZXN0
KCkKLXsKLSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90LnByb3RvdHlwZSwgIl9idWlsZFJldGFpbmVycyIpOwotICAgIEluc3BlY3RvclRl
c3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAi
X2J1aWxkRG9taW5hdGVkTm9kZXMiKTsKLSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlv
bihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9jYWxjdWxhdGVGbGFncyIp
OwotICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QucHJvdG90eXBlLCAiX2J1aWxkQWdncmVnYXRlcyIpOwotICAgIEluc3BlY3RvclRlc3Qu
bWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2Nh
bGN1bGF0ZUNsYXNzZXNSZXRhaW5lZFNpemUiKTsKLSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVG
dW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9jYWxjdWxhdGVP
YmplY3RUb1dpbmRvd0Rpc3RhbmNlIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rp
b24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfY2FsY3VsYXRlUmV0YWlu
ZWRTaXplcyIpOwotICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX21hcmtEZXRhY2hlZERPTVRyZWVOb2RlcyIpOwot
ICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3QucHJvdG90eXBlLCAiX21hcmtRdWVyaWFibGVIZWFwT2JqZWN0cyIpOwotICAgIEluc3BlY3Rv
clRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBl
LCAiX21hcmtQYWdlT3duZWROb2RlcyIpOwotICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0
aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX3NwbGl0Tm9kZXNBbmRD
b250YWlubWVudEVkZ2VzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfYnVpbGRQb3N0T3JkZXJJbmRleCIp
OwotICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QucHJvdG90eXBlLCAiX2J1aWxkRG9taW5hdG9yVHJlZSIpOwotICAgIEluc3BlY3RvclRl
c3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3RvcnNE
YXRhR3JpZC5wcm90b3R5cGUsICJfYWdncmVnYXRlc1JlY2VpdmVkIik7Ci0KLSAgICBmdW5jdGlv
biBwZXJmb3JtYW5jZVRlc3QodGltZXIpCi0gICAgewotICAgICAgICB2YXIgdHJhbnNmZXJUaW1l
ckNvb2tpZTsKLSAgICAgICAgdmFyIHNob3dUaW1lckNvb2tpZTsKLSAgICAgICAgdmFyIGNoYW5n
ZVZpZXdUaW1lckNvb2tpZTsKLSAgICAgICAgdmFyIGNsZWFyVGltZXJDb29raWU7Ci0KLSAgICAg
ICAgdmFyIGZ1bGxUaW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJmdWxsLXN1bW1hcnktc25hcHNo
b3QtdGltZSIpOwotICAgICAgICB2YXIgYmFja2VuZFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQo
InRha2Utc25hcHNob3QiKTsKLSAgICAgICAgUHJvZmlsZXJBZ2VudC50YWtlSGVhcFNuYXBzaG90
KHN0ZXAwKTsKLQotICAgICAgICBmdW5jdGlvbiBzdGVwMCgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHRpbWVyLmZpbmlzaChiYWNrZW5kVGltZXJDb29raWUpOwotICAgICAgICAgICAgdHJhbnNm
ZXJUaW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJ0cmFuc2Zlci1zbmFwc2hvdCIpOwotICAgICAg
ICAgICAgdmFyIHByb2ZpbGVzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5nZXRQcm9m
aWxlcygiSEVBUCIpOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5z
aG93UHJvZmlsZShwcm9maWxlc1twcm9maWxlcy5sZW5ndGggLSAxXSk7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcywgIl9m
aW5pc2hIZWFwU25hcHNob3QiLCBzdGVwMSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBzdGVwMSh1aWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRpbWVyLmZpbmlzaCh0cmFuc2Zl
clRpbWVyQ29va2llKTsKLSAgICAgICAgICAgIHNob3dUaW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0
KCJzaG93LXNuYXBzaG90Iik7Ci0gICAgICAgICAgICB2YXIgcGFuZWwgPSBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnByb2ZpbGVzOwotICAgICAgICAgICAgdmFyIHByb2ZpbGUgPSBwYW5lbC5fcHJvZmls
ZXNJZE1hcFtwYW5lbC5fbWFrZUtleSh1aWQsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9m
aWxlVHlwZS5UeXBlSWQpXTsKLSAgICAgICAgICAgIHByb2ZpbGUubG9hZChzdGVwMik7IC8vIEFk
ZCBsb2FkIGNhbGxiYWNrLgotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICB0aW1lci5maW5pc2goc2hvd1RpbWVyQ29va2llKTsKLSAg
ICAgICAgICAgIGNoYW5nZVZpZXdUaW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJzd2l0Y2gtdG8t
Y29udGFpbm1lbnQtdmlldyIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1Zp
ZXcoIkNvbnRhaW5tZW50IiwgY2xlYW51cCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBjbGVhbnVwKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGltZXIuZmluaXNoKGNoYW5nZVZp
ZXdUaW1lckNvb2tpZSk7Ci0gICAgICAgICAgICB0aW1lci5maW5pc2goZnVsbFRpbWVyQ29va2ll
KTsKLSAgICAgICAgICAgIGNsZWFyVGltZXJDb29raWUgPSB0aW1lci5zdGFydCgiY2xlYXItc25h
cHNob3QiKTsKLSAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuY2xlYXJQcm9maWxlcyhkb25lKTsK
LSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuX3Jlc2V0KCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBkb25lKCkKLSAgICAgICAgewotICAgICAgICAgICAg
dGltZXIuZmluaXNoKGNsZWFyVGltZXJDb29raWUpOwotICAgICAgICAgICAgdGltZXIuZG9uZSgi
aGVhcC1zbmFwc2hvdCIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC5y
dW5QZXJmb3JtYW5jZVRlc3QocGVyZm9ybWFuY2VUZXN0LCA2MDAwMCk7Ci19Ci0KIHZhciBjb3Vu
dGVyID0gMDsKIAogZnVuY3Rpb24gbWFrZU9iamVjdHNUcmVlKGRlZXApCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145283</attachid>
            <date>2012-06-01 06:04:11 -0700</date>
            <delta_ts>2012-06-04 05:38:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87863-20120601170410.patch</filename>
            <type>text/plain</type>
            <size>13663</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk5MzBlM2EzNjQ3Y2I3
NTI4MGI3OWQ5YzIwYTFkOWIzMTI1ZDU3ZS4uNTc1Y2Q3ZDgxZGVmMDAzMTg4ZThhMzM5Y2NiY2Ri
OWE3MmQwYWVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA2LTAxICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBzcGVlZCB1cCBfY2FsY3VsYXRlUmV0YWluZWRTaXplcyBmdW5jdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc4NjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUuX2NhbGN1bGF0ZVJldGFpbmVkU2l6ZXMpOgorCiAyMDEyLTA2LTAxICBNT1JJVEEg
SGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIEZyYW1lOjp3aWxsRGV0YWNo
UGFnZSgpIHNob3VsZG4ndCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCmluZGV4IDQyMDZj
ZjYyZThmNDVmM2VkZTkzM2FiOTI1OTgwYzMzOWM1MzM4OTguLmYyNzAyODIyZjZmN2E5NmZhYWJk
ZjI2NGRhZmZhN2MzNDE2ZmViNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCkBAIC03MDUsNyArNzA1LDcgQEAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciByZXN1bHQgPSB0aGlz
Ll9idWlsZFBvc3RPcmRlckluZGV4KCk7CiAgICAgICAgIC8vIEFjdHVhbGx5IGl0IGlzIGFycmF5
IHRoYXQgbWFwcyBub2RlIG9yZGluYWwgbnVtYmVyIHRvIGRvbWluYXRvciBub2RlIG9yZGluYWwg
bnVtYmVyLgogICAgICAgICB0aGlzLl9kb21pbmF0b3JzVHJlZSA9IHRoaXMuX2J1aWxkRG9taW5h
dG9yVHJlZShyZXN1bHQucG9zdE9yZGVySW5kZXgyTm9kZU9yZGluYWwsIHJlc3VsdC5ub2RlT3Jk
aW5hbDJQb3N0T3JkZXJJbmRleCk7Ci0gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVJldGFpbmVkU2l6
ZXMoKTsKKyAgICAgICAgdGhpcy5fY2FsY3VsYXRlUmV0YWluZWRTaXplcyhyZXN1bHQucG9zdE9y
ZGVySW5kZXgyTm9kZU9yZGluYWwpOwogICAgICAgICB0aGlzLl9idWlsZERvbWluYXRlZE5vZGVz
KCk7CiAgICAgfSwKIApAQCAtMTI0OCwzMCArMTI0OCwyNCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGRvbWluYXRvcnNUcmVlOwogICAg
IH0sCiAKLSAgICBfY2FsY3VsYXRlUmV0YWluZWRTaXplczogZnVuY3Rpb24oKQorICAgIF9jYWxj
dWxhdGVSZXRhaW5lZFNpemVzOiBmdW5jdGlvbihwb3N0T3JkZXJJbmRleDJOb2RlT3JkaW5hbCkK
ICAgICB7Ci0gICAgICAgIC8vIEFzIGZvciB0aGUgZG9taW5hdG9ycyB0cmVlIHdlIG9ubHkga25v
dyBwYXJlbnQgbm9kZXMsIG5vdAotICAgICAgICAvLyBjaGlsZHJlbiwgdG8gc3VtIHVwIHRvdGFs
IHNpemVzIHdlICJidWJibGUiIG5vZGUncyBzZWxmIHNpemUKLSAgICAgICAgLy8gYWRkaW5nIGl0
IHRvIGFsbCBvZiBpdHMgcGFyZW50cy4KKyAgICAgICAgdmFyIG5vZGVDb3VudCA9IHRoaXMubm9k
ZUNvdW50OwogICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKICAgICAgICAgdmFyIG5v
ZGVTZWxmU2l6ZU9mZnNldCA9IHRoaXMuX25vZGVTZWxmU2l6ZU9mZnNldDsKICAgICAgICAgdmFy
IG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZpZWxkQ291bnQ7CiAgICAgICAgIHZhciBkb21p
bmF0b3JzVHJlZSA9IHRoaXMuX2RvbWluYXRvcnNUcmVlOwotICAgICAgICB2YXIgcmV0YWluZWRT
aXplcyA9IG5ldyBVaW50MzJBcnJheSh0aGlzLm5vZGVDb3VudCk7CisgICAgICAgIHZhciByZXRh
aW5lZFNpemVzID0gdGhpcy5fcmV0YWluZWRTaXplcyA9IG5ldyBVaW50MzJBcnJheShub2RlQ291
bnQpOwogICAgICAgICB2YXIgcm9vdE5vZGVPcmRpbmFsID0gdGhpcy5fcm9vdE5vZGVJbmRleCAv
IG5vZGVGaWVsZENvdW50OwogCi0gICAgICAgIGZvciAodmFyIG5vZGVPcmRpbmFsID0gMCwgbm9k
ZVNlbGZTaXplSW5kZXggPSBub2RlU2VsZlNpemVPZmZzZXQsIGwgPSB0aGlzLm5vZGVDb3VudDsK
LSAgICAgICAgICAgICBub2RlT3JkaW5hbCA8IGw7Ci0gICAgICAgICAgICAgKytub2RlT3JkaW5h
bCwgbm9kZVNlbGZTaXplSW5kZXggKz0gbm9kZUZpZWxkQ291bnQpIHsKLSAgICAgICAgICAgIHZh
ciBub2RlU2VsZlNpemUgPSBub2Rlc1tub2RlU2VsZlNpemVJbmRleF07Ci0gICAgICAgICAgICB2
YXIgY3VycmVudE5vZGVPcmRpbmFsID0gbm9kZU9yZGluYWw7Ci0gICAgICAgICAgICByZXRhaW5l
ZFNpemVzW2N1cnJlbnROb2RlT3JkaW5hbF0gKz0gbm9kZVNlbGZTaXplOwotICAgICAgICAgICAg
ZG8gewotICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlT3JkaW5hbCA9IGRvbWluYXRvcnNUcmVl
W2N1cnJlbnROb2RlT3JkaW5hbF07Ci0gICAgICAgICAgICAgICAgcmV0YWluZWRTaXplc1tjdXJy
ZW50Tm9kZU9yZGluYWxdICs9IG5vZGVTZWxmU2l6ZTsKLSAgICAgICAgICAgIH0gd2hpbGUgKGN1
cnJlbnROb2RlT3JkaW5hbCAhPT0gcm9vdE5vZGVPcmRpbmFsKTsKKyAgICAgICAgcmV0YWluZWRT
aXplc1tyb290Tm9kZU9yZGluYWxdID0gbm9kZXNbdGhpcy5fcm9vdE5vZGVJbmRleCArIG5vZGVT
ZWxmU2l6ZU9mZnNldF07CisgICAgICAgIC8vIFByb3BhZ2F0ZSByZXRhaW5lZCBzaXplcyBmb3Ig
ZWFjaCBub2RlIGV4Y2x1ZGluZyByb290LCBhcyBpdCByZWZlcnMgdG8gc2VsZi4KKyAgICAgICAg
Zm9yICh2YXIgcG9zdE9yZGVySW5kZXggPSAwOyBwb3N0T3JkZXJJbmRleCA8IG5vZGVDb3VudCAt
IDE7ICsrcG9zdE9yZGVySW5kZXgpIHsKKyAgICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IHBv
c3RPcmRlckluZGV4Mk5vZGVPcmRpbmFsW3Bvc3RPcmRlckluZGV4XTsKKyAgICAgICAgICAgIHZh
ciBkb21pbmF0b3JPcmRpbmFsID0gZG9taW5hdG9yc1RyZWVbbm9kZU9yZGluYWxdOworICAgICAg
ICAgICAgcmV0YWluZWRTaXplc1tub2RlT3JkaW5hbF0gKz0gbm9kZXNbbm9kZU9yZGluYWwgKiBu
b2RlRmllbGRDb3VudCArIG5vZGVTZWxmU2l6ZU9mZnNldF07CisgICAgICAgICAgICByZXRhaW5l
ZFNpemVzW2RvbWluYXRvck9yZGluYWxdICs9IHJldGFpbmVkU2l6ZXNbbm9kZU9yZGluYWxdOwog
ICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3JldGFpbmVkU2l6ZXMgPSByZXRhaW5lZFNpemVzOwog
ICAgIH0sCiAKICAgICBfYnVpbGREb21pbmF0ZWROb2RlczogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZmNjNTZhMzY5ZmFjMTA0YzUxZjhhNWZkNDE5NGU2ZTQzYzYwNzE5Li44NzA3ZjA0
NDQ0MjViOWU0NjAzYmI4MjQ5Yjc3NDAzMGM0NjIzOTljIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDEyLTA2LTAxICBBbGV4ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzcGVlZCB1cCBfY2FsY3VsYXRlUmV0YWlu
ZWRTaXplcyBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODc4NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9oZWFwLXNuYXBzaG90LWFkdmFuY2VkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9oZWFwLXNuYXBzaG90LXBlcmZvcm1hbmNlLXRlc3QuanM6IENv
cGllZCBmcm9tIFBlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL2hlYXAtc25hcHNob3QuaHRtbC4K
KyAgICAgICAgKHRlc3QucGVyZm9ybWFuY2VUZXN0LnN0ZXAwKToKKyAgICAgICAgKHRlc3QucGVy
Zm9ybWFuY2VUZXN0LnN0ZXAxKToKKyAgICAgICAgKHRlc3QucGVyZm9ybWFuY2VUZXN0LnN0ZXAy
KToKKyAgICAgICAgKHRlc3QucGVyZm9ybWFuY2VUZXN0LmNsZWFudXApOgorICAgICAgICAodGVz
dC5wZXJmb3JtYW5jZVRlc3QuZG9uZSk6CisgICAgICAgICh0ZXN0LnBlcmZvcm1hbmNlVGVzdCk6
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1s
OgorCiAyMDEyLTA2LTAxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEFkZCBwdWJsaWMgcGFnZSBsb2FkaW5nIHBlcmZvcm1hbmNlIHRlc3RzIHVzaW5nIHdlYi1w
YWdlLXJlcGxheQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1z
bmFwc2hvdC1hZHZhbmNlZC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1z
bmFwc2hvdC1hZHZhbmNlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4YjQ4ZjAxOTQwNWViMTk4MWZiNTBm
ZGQ5MGI0ZjgxZWY4YzJmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL2lu
c3BlY3Rvci9oZWFwLXNuYXBzaG90LWFkdmFuY2VkLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPGh0
bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMi
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgIDxzY3JpcHQgc3JjPSJoZWFwLXNuYXBzaG90LXBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gbWFrZUxpbmtlZExpc3QobikKK3sKKyAgICB2YXIg
bm9kZSA9IHt9OworICAgIHdoaWxlICgtLW4pCisgICAgICAgIG5vZGUgPSB7IG5leHQ6IG5vZGUg
fTsKKyAgICByZXR1cm4gbm9kZTsKK30KKworZnVuY3Rpb24gbWFrZURvdWJsZUxpbmtlZExpc3Qo
bikKK3sKKyAgdmFyIHRhaWwgPSB7fTsKKyAgdmFyIGhlYWQgPSB0YWlsOworICB3aGlsZSAoLS1u
KSB7CisgICAgaGVhZCA9IHsgbmV4dDogaGVhZCB9OworICAgIGhlYWQubmV4dC5wcmV2ID0gaGVh
ZDsKKyAgfQorICByZXR1cm4geyBoZWFkOiBoZWFkLCB0YWlsOiB0YWlsIH07Cit9CisKK3ZhciBs
aXN0ID0gbWFrZUxpbmtlZExpc3QoMjAwMDApOwordmFyIGRvdWJsZV9saXN0ID0gbWFrZURvdWJs
ZUxpbmtlZExpc3QoNTAwMCk7CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC1wZXJmb3JtYW5jZS10ZXN0LmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC1wZXJmb3JtYW5jZS10ZXN0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJmYmNjOTcxYjZmZWIyZGZkMWYyYmU2MWE3YjQzNGM5ZmEyNGY4ZTYKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBzaG90LXBlcmZv
cm1hbmNlLXRlc3QuanMKQEAgLTAsMCArMSw3MiBAQAorZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
SW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUsICJfYnVpbGRSZXRhaW5lcnMiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVG
dW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9idWlsZERvbWlu
YXRlZE5vZGVzIik7CisgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfY2FsY3VsYXRlRmxhZ3MiKTsKKyAgICBJbnNw
ZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZSwgIl9idWlsZEFnZ3JlZ2F0ZXMiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5j
dGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9jYWxjdWxhdGVDbGFz
c2VzUmV0YWluZWRTaXplIik7CisgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfY2FsY3VsYXRlT2JqZWN0VG9XaW5k
b3dEaXN0YW5jZSIpOworICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1bGF0ZVJldGFpbmVkU2l6ZXMiKTsK
KyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90LnByb3RvdHlwZSwgIl9tYXJrRGV0YWNoZWRET01UcmVlTm9kZXMiKTsKKyAgICBJbnNwZWN0
b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlw
ZSwgIl9tYXJrUXVlcmlhYmxlSGVhcE9iamVjdHMiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1
cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9tYXJrUGFn
ZU93bmVkTm9kZXMiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9zcGxpdE5vZGVzQW5kQ29udGFpbm1lbnRF
ZGdlcyIpOworICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2J1aWxkUG9zdE9yZGVySW5kZXgiKTsKKyAgICBJbnNw
ZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZSwgIl9idWlsZERvbWluYXRvclRyZWUiKTsKKyAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVG
dW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JzRGF0YUdyaWQucHJv
dG90eXBlLCAiX2FnZ3JlZ2F0ZXNSZWNlaXZlZCIpOworCisgICAgZnVuY3Rpb24gcGVyZm9ybWFu
Y2VUZXN0KHRpbWVyKQorICAgIHsKKyAgICAgICAgdmFyIHRyYW5zZmVyVGltZXJDb29raWU7Cisg
ICAgICAgIHZhciBzaG93VGltZXJDb29raWU7CisgICAgICAgIHZhciBjaGFuZ2VWaWV3VGltZXJD
b29raWU7CisgICAgICAgIHZhciBjbGVhclRpbWVyQ29va2llOworCisgICAgICAgIHZhciB0ZXN0
TmFtZSA9IC8oW15cL10rKVwuaHRtbCQvLmV4ZWMoV2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VV
UkwpWzFdOworICAgICAgICB2YXIgZnVsbFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoImZ1bGwt
c3VtbWFyeS1zbmFwc2hvdC10aW1lIik7CisgICAgICAgIHZhciBiYWNrZW5kVGltZXJDb29raWUg
PSB0aW1lci5zdGFydCgidGFrZS1zbmFwc2hvdCIpOworICAgICAgICBQcm9maWxlckFnZW50LnRh
a2VIZWFwU25hcHNob3Qoc3RlcDApOworCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAwKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdGltZXIuZmluaXNoKGJhY2tlbmRUaW1lckNvb2tpZSk7CisgICAg
ICAgICAgICB0cmFuc2ZlclRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoInRyYW5zZmVyLXNuYXBz
aG90Iik7CisgICAgICAgICAgICB2YXIgcHJvZmlsZXMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnBy
b2ZpbGVzLmdldFByb2ZpbGVzKCJIRUFQIik7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLnByb2ZpbGVzLnNob3dQcm9maWxlKHByb2ZpbGVzW3Byb2ZpbGVzLmxlbmd0aCAtIDFdKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IucGFuZWxz
LnByb2ZpbGVzLCAiX2ZpbmlzaEhlYXBTbmFwc2hvdCIsIHN0ZXAxKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHN0ZXAxKHVpZCkKKyAgICAgICAgeworICAgICAgICAgICAgdGltZXIu
ZmluaXNoKHRyYW5zZmVyVGltZXJDb29raWUpOworICAgICAgICAgICAgc2hvd1RpbWVyQ29va2ll
ID0gdGltZXIuc3RhcnQoInNob3ctc25hcHNob3QiKTsKKyAgICAgICAgICAgIHZhciBwYW5lbCA9
IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXM7CisgICAgICAgICAgICB2YXIgcHJvZmlsZSA9
IHBhbmVsLl9wcm9maWxlc0lkTWFwW3BhbmVsLl9tYWtlS2V5KHVpZCwgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCldOworICAgICAgICAgICAgcHJvZmlsZS5sb2Fk
KHN0ZXAyKTsgLy8gQWRkIGxvYWQgY2FsbGJhY2suCisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzdGVwMigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRpbWVyLmZpbmlzaChzaG93VGlt
ZXJDb29raWUpOworICAgICAgICAgICAgY2hhbmdlVmlld1RpbWVyQ29va2llID0gdGltZXIuc3Rh
cnQoInN3aXRjaC10by1jb250YWlubWVudC12aWV3Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LnN3aXRjaFRvVmlldygiQ29udGFpbm1lbnQiLCBjbGVhbnVwKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNsZWFudXAoKQorICAgICAgICB7CisgICAgICAgICAgICB0aW1lci5m
aW5pc2goY2hhbmdlVmlld1RpbWVyQ29va2llKTsKKyAgICAgICAgICAgIHRpbWVyLmZpbmlzaChm
dWxsVGltZXJDb29raWUpOworICAgICAgICAgICAgY2xlYXJUaW1lckNvb2tpZSA9IHRpbWVyLnN0
YXJ0KCJjbGVhci1zbmFwc2hvdCIpOworICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5jbGVhclBy
b2ZpbGVzKGRvbmUpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5f
cmVzZXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRvbmUoKQorICAgICAgICB7
CisgICAgICAgICAgICB0aW1lci5maW5pc2goY2xlYXJUaW1lckNvb2tpZSk7CisgICAgICAgICAg
ICB0aW1lci5kb25lKHRlc3ROYW1lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEluc3BlY3Rv
clRlc3QucnVuUGVyZm9ybWFuY2VUZXN0KHBlcmZvcm1hbmNlVGVzdCwgNjAwMDApOworfQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sIGIv
UGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC5odG1sCmluZGV4IGJhNTM4
NzQ5NTIzMDBkNzdmNGY3MDUwMWU5ZjYzZTRkYTA1NzY5ZDQuLjBmYWJiMjE5NWIyOTYyNjZhYTk4
YTI5MTZhNTBlZjA2MzFjNjJmNGEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVj
dG9yL2hlYXAtc25hcHNob3QuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9o
ZWFwLXNuYXBzaG90Lmh0bWwKQEAgLTMsODAgKzMsOSBAQAogICA8c2NyaXB0IHNyYz0iLi4vLi4v
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgogICA8c2NyaXB0IHNyYz0iLi4vLi4vTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVy
L2hlYXAtc25hcHNob3QtdGVzdC5qcyI+PC9zY3JpcHQ+CiAgIDxzY3JpcHQgc3JjPSJwZXJmb3Jt
YW5jZS10ZXN0LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9ImhlYXAtc25hcHNob3QtcGVy
Zm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZSwgIl9idWlsZFJldGFpbmVycyIpOwotICAgIEluc3BlY3RvclRlc3Qu
bWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2J1
aWxkRG9taW5hdGVkTm9kZXMiKTsKLSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9jYWxjdWxhdGVGbGFncyIpOwot
ICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3QucHJvdG90eXBlLCAiX2J1aWxkQWdncmVnYXRlcyIpOwotICAgIEluc3BlY3RvclRlc3QubWVh
c3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1
bGF0ZUNsYXNzZXNSZXRhaW5lZFNpemUiKTsKLSAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5j
dGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9jYWxjdWxhdGVPYmpl
Y3RUb1dpbmRvd0Rpc3RhbmNlIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24o
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfY2FsY3VsYXRlUmV0YWluZWRT
aXplcyIpOwotICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QucHJvdG90eXBlLCAiX21hcmtEZXRhY2hlZERPTVRyZWVOb2RlcyIpOwotICAg
IEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlLCAiX21hcmtRdWVyaWFibGVIZWFwT2JqZWN0cyIpOwotICAgIEluc3BlY3RvclRl
c3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAi
X21hcmtQYWdlT3duZWROb2RlcyIpOwotICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9u
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX3NwbGl0Tm9kZXNBbmRDb250
YWlubWVudEVkZ2VzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfYnVpbGRQb3N0T3JkZXJJbmRleCIpOwot
ICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3QucHJvdG90eXBlLCAiX2J1aWxkRG9taW5hdG9yVHJlZSIpOwotICAgIEluc3BlY3RvclRlc3Qu
bWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3RvcnNEYXRh
R3JpZC5wcm90b3R5cGUsICJfYWdncmVnYXRlc1JlY2VpdmVkIik7Ci0KLSAgICBmdW5jdGlvbiBw
ZXJmb3JtYW5jZVRlc3QodGltZXIpCi0gICAgewotICAgICAgICB2YXIgdHJhbnNmZXJUaW1lckNv
b2tpZTsKLSAgICAgICAgdmFyIHNob3dUaW1lckNvb2tpZTsKLSAgICAgICAgdmFyIGNoYW5nZVZp
ZXdUaW1lckNvb2tpZTsKLSAgICAgICAgdmFyIGNsZWFyVGltZXJDb29raWU7Ci0KLSAgICAgICAg
dmFyIGZ1bGxUaW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJmdWxsLXN1bW1hcnktc25hcHNob3Qt
dGltZSIpOwotICAgICAgICB2YXIgYmFja2VuZFRpbWVyQ29va2llID0gdGltZXIuc3RhcnQoInRh
a2Utc25hcHNob3QiKTsKLSAgICAgICAgUHJvZmlsZXJBZ2VudC50YWtlSGVhcFNuYXBzaG90KHN0
ZXAwKTsKLQotICAgICAgICBmdW5jdGlvbiBzdGVwMCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHRpbWVyLmZpbmlzaChiYWNrZW5kVGltZXJDb29raWUpOwotICAgICAgICAgICAgdHJhbnNmZXJU
aW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJ0cmFuc2Zlci1zbmFwc2hvdCIpOwotICAgICAgICAg
ICAgdmFyIHByb2ZpbGVzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5nZXRQcm9maWxl
cygiSEVBUCIpOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5zaG93
UHJvZmlsZShwcm9maWxlc1twcm9maWxlcy5sZW5ndGggLSAxXSk7Ci0gICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcywgIl9maW5p
c2hIZWFwU25hcHNob3QiLCBzdGVwMSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBz
dGVwMSh1aWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRpbWVyLmZpbmlzaCh0cmFuc2ZlclRp
bWVyQ29va2llKTsKLSAgICAgICAgICAgIHNob3dUaW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJz
aG93LXNuYXBzaG90Iik7Ci0gICAgICAgICAgICB2YXIgcGFuZWwgPSBXZWJJbnNwZWN0b3IucGFu
ZWxzLnByb2ZpbGVzOwotICAgICAgICAgICAgdmFyIHByb2ZpbGUgPSBwYW5lbC5fcHJvZmlsZXNJ
ZE1hcFtwYW5lbC5fbWFrZUtleSh1aWQsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxl
VHlwZS5UeXBlSWQpXTsKLSAgICAgICAgICAgIHByb2ZpbGUubG9hZChzdGVwMik7IC8vIEFkZCBs
b2FkIGNhbGxiYWNrLgotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICB0aW1lci5maW5pc2goc2hvd1RpbWVyQ29va2llKTsKLSAgICAg
ICAgICAgIGNoYW5nZVZpZXdUaW1lckNvb2tpZSA9IHRpbWVyLnN0YXJ0KCJzd2l0Y2gtdG8tY29u
dGFpbm1lbnQtdmlldyIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1ZpZXco
IkNvbnRhaW5tZW50IiwgY2xlYW51cCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBj
bGVhbnVwKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGltZXIuZmluaXNoKGNoYW5nZVZpZXdU
aW1lckNvb2tpZSk7Ci0gICAgICAgICAgICB0aW1lci5maW5pc2goZnVsbFRpbWVyQ29va2llKTsK
LSAgICAgICAgICAgIGNsZWFyVGltZXJDb29raWUgPSB0aW1lci5zdGFydCgiY2xlYXItc25hcHNo
b3QiKTsKLSAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuY2xlYXJQcm9maWxlcyhkb25lKTsKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuX3Jlc2V0KCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBkb25lKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGlt
ZXIuZmluaXNoKGNsZWFyVGltZXJDb29raWUpOwotICAgICAgICAgICAgdGltZXIuZG9uZSgiaGVh
cC1zbmFwc2hvdCIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVzdC5ydW5Q
ZXJmb3JtYW5jZVRlc3QocGVyZm9ybWFuY2VUZXN0LCA2MDAwMCk7Ci19Ci0KIHZhciBjb3VudGVy
ID0gMDsKIAogZnVuY3Rpb24gbWFrZU9iamVjdHNUcmVlKGRlZXApCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>