<?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>27256</bug_id>
          
          <creation_ts>2009-07-14 05:08:46 -0700</creation_ts>
          <short_desc>Geolocation timeout parameter is not correctly applied</short_desc>
          <delta_ts>2009-09-10 04:33:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>28264</dependson>
    
    <dependson>29027</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Steve Block">steveblock</assigned_to>
          <cc>abarth</cc>
    
    <cc>andreip</cc>
    
    <cc>benm</cc>
    
    <cc>bolsinga</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>131530</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-07-14 05:08:46 -0700</bug_when>
    <thetext>Currently, the Geolocation timeout specified by PositionOptions.timeout is started only when permissions are granted in Geolocation::setIsAllowed(). This means that when a call to getCurrentPosition() or watchPosition() is made ...
- If permissions have already been granted, the timeout is not applied
- If permissions have not yet been granted, the timeout is started after a location has been acquired (and permissions granted).

The intent of the PositionOptions.timeout parameter is to limit the time taken for the implementation to obtain a location. See http://www.w3.org/TR/geolocation-API/#position-options. This means that the timeout should be started as soon as the implementation starts the process of obtaining the position fix.

Note that the timeout should not include any time taken to obtain permissions from the user.  It is this fact that allows the parameter to offer functionality that can not be provided with a JavaScript timer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140722</commentid>
    <comment_count>1</comment_count>
      <attachid>34970</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-08-17 08:55:26 -0700</bug_when>
    <thetext>Created attachment 34970
Patch 1 for bug 27256

Correctly implements Geolocation timeout parameter.

Greg, you mentioned that on iPhone, the call to GeolocationService::startUpdating may trigger UI to obtain system permissions for location. Hence it&apos;s impossible to apply the timeout parameter in a meaningful way through the current GeolocationService interface. Currently, the timeout parameter is not applied at all, so perhaps a reasonable solution is to ignore timeouts on iPhone by skipping the call to maybeStartTimer? Or we could skip the call unless we know that system permissions have already been granted? What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140748</commentid>
    <comment_count>2</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2009-08-17 10:26:23 -0700</bug_when>
    <thetext>There&apos;s going to be lots of iPhone work to get the recent GeoLocation patches back to iPhone. I&apos;m not sure when I&apos;d be able to get to it to work, nor have I been able to fully track all of the recent changes made. Basically I trust your judgement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141874</commentid>
    <comment_count>3</comment_count>
      <attachid>38373</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-08-21 08:38:45 -0700</bug_when>
    <thetext>Created attachment 38373
Patch 2 for bug 27256

&gt; Why are tests impossible?  (I&apos;m not suggesting they aren&apos;t, I just need more
&gt; info as to &apos;why?&apos;)
Writing test for this (and all of the other Geolocation features) requires a mock Geolocation service so that the behavior of the API is predictable for testing. This is being tracked in Bug 28264 (which also needs review!).

&gt; Is it possible that the handlers could do nasty things?
&gt; like start a new request or something?  Anything that could potentially crash
&gt; us when we return back to executing c++ after the JS callback?
Yes, a handler could start a new request, but this shouldn&apos;t be a problem. I&apos;ll add tests for this once we have a mock Geolocation service.

&gt; We only name arguments when they add clarity:
Fixed.

&gt; Are
&gt; there other webkit reviewers who know something about geolocation?
Not that I knew of. Greg Bolsinga wrote the original code, but he&apos;s not a reviewer.

&gt; Who uses
&gt; this code?  Andriod?  Does iPhone use this or do they have their own thing?
Yes, this is used by Android, iPhone and Chrome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141966</commentid>
    <comment_count>4</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2009-08-21 14:05:52 -0700</bug_when>
    <thetext>CC&apos;ing Sam. He was the original Geolocation reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144025</commentid>
    <comment_count>5</comment_count>
      <attachid>38373</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-01 16:01:45 -0700</bug_when>
    <thetext>Comment on attachment 38373
Patch 2 for bug 27256

We need to be able to write test (e.g., fix Bug 28264) before we can move forward with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145703</commentid>
    <comment_count>6</comment_count>
      <attachid>39262</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-09-09 04:25:25 -0700</bug_when>
    <thetext>Created attachment 39262
Patch 3 for bug 27256

Adds LayoutTests.

Note that refactoring to avoid the duplication in getcurrentPosition/watchPosition is included as part of the fix for Bug 27944.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145864</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 11:29:17 -0700</bug_when>
    <thetext>Did you modify this patch by hand?  PrettyPatch has trouble parsing it:
https://bugs.webkit.org/attachment.cgi?id=39262&amp;action=prettypatch
Note the Geolocation.cpp header is missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145894</commentid>
    <comment_count>8</comment_count>
      <attachid>39294</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-09-09 12:45:06 -0700</bug_when>
    <thetext>Created attachment 39294
Patch 4 for bug 27256

&gt; Did you modify this patch by hand?
Yes - I have to manually patch in and out a couple of changes that let me build and run the Geolocation tests on mac.

&gt; Note the Geolocation.cpp header is missing.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146074</commentid>
    <comment_count>9</comment_count>
      <attachid>39294</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-09 22:01:10 -0700</bug_when>
    <thetext>Comment on attachment 39294
Patch 4 for bug 27256

I might be slightly over-stepping my knowledge, but no one else seems to be reviewing geolocation patches.  If you&apos;d like me to be more conservative in this regard, please let me know.

As far as I can tell, this patch looks correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146081</commentid>
    <comment_count>10</comment_count>
      <attachid>39294</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-09 22:25:30 -0700</bug_when>
    <thetext>Comment on attachment 39294
Patch 4 for bug 27256

Rejecting patch 39294 from commit-queue.

This patch will require manual commit. Patch https://bugs.webkit.org/attachment.cgi?id=39294 from bug 27256 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146163</commentid>
    <comment_count>11</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-09-10 04:33:29 -0700</bug_when>
    <thetext>Landed as r48249.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34970</attachid>
            <date>2009-08-17 08:55:26 -0700</date>
            <delta_ts>2009-09-09 04:25:25 -0700</delta_ts>
            <desc>Patch 1 for bug 27256</desc>
            <filename>applyTimeoutCorrectly.txt</filename>
            <type>text/plain</type>
            <size>11309</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzM2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDktMDgtMTcgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvcnJlY3RseSBhcHBsaWVzIHRoZSBHZW9sb2NhdGlvbiB0aW1lb3V0IHByb3BlcnR5LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcyNTYKKworICAg
ICAgICBJZiBhIHRpbWVvdXQgaXMgc3BlY2lmaWVkLCB0aGUgdGltZXIgaXMgc3RhcnRlZCBhcyBz
b29uIGFzIHRoZSBsb2NhdGlvbiBhY3F1aXN0aW9uIHByb2Nlc3Mgc3RhcnRzLgorICAgICAgICBJ
ZiBhIHBvc2l0aW9uIGZpeCBpcyBub3Qgb2J0YWluZWQgd2l0aGluIHRoZSB0aW1lb3V0IGludGVy
dmFsLCB0aGUgcG9zaXRpb24gcmVxdWVzdCBpcyBjYW5jZWxsZWQgCisgICAgICAgIGFuZCB0aGUg
ZXJyb3IgY2FsbGJhY2sgKGlmIHNwZWNpZmllZCkgaXMgaW52b2tlZC4gSWYgYSBwb3NpdGlvbiBm
aXggaXMgb2J0YWluZWQgd2l0aGluIHRoZSB0aW1lb3V0CisgICAgICAgIGludGVydmFsLCB0aGUg
dGltZXIgaXMgc3RvcHBlZC4gUGVybWlzc2lvbnMgYXJlIHRoZW4gcmVxdWVzdGVkIGZyb20gdGhl
IHVzZXIgaWYgcmVxdWlyZWQuIFNlZQorICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9nZW9s
b2NhdGlvbi1BUEkvI3Bvc2l0aW9uLW9wdGlvbnMuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMg
bG9naWMgbWVhbnMgdGhhdCB0aGUgdGltZSByZXF1aXJlZCB0byBvYnRhaW4gcGVybWlzc2lvbnMg
ZnJvbSB0aGUgdXNlciBpcyBub3QKKyAgICAgICAgaW5jbHVkZWQgaW4gdGhlIHRpbWVvdXQgaW50
ZXJ2YWwuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHBvc3NpYmxlLgorCisgICAgICAgICogcGFn
ZS9HZW9sb2NhdGlvbi5jcHA6IE1vZGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcik6IE1vZGlmaWVkLiBUYWtlcyBHZW9sb2NhdGlv
biBvYmplY3QgYXMgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdl
b05vdGlmaWVyOjpzdGFydFRpbWVySWZOZWVkZWQpOiBSZW5hbWVkIGZyb20gc3RhcnRUaW1lci4g
U3RhcnRzIHRoZSB0aW1lciBpZiBhIHRpbWVvdXQgd2FzIHNwZWNpZmllZC4KKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6dGltZXJGaXJlZCk6IE1vZGlmaWVkLiBD
YWxscyB0aGUgZXJyb3IgY2FsbGJhY2sgaWYgc3BlY2lmaWVkLCBhbmQgcmVwb3J0cyB0aGUgdGlt
ZW91dCB0byB0aGUgR2VvbG9jYXRpb24gb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6IE1vZGlmaWVkLiBDYWxscyBtYXliZVN0YXJ0VGlt
ZXIgd2hlbiBzdGFydGluZyB0aGUgbG9jYXRpb24gYWNxdWlzaXRpb24gcHJvY2Vzcy4KKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKTogTW9kaWZpZWQuIENhbGxz
IG1heWJlU3RhcnRUaW1lciB3aGVuIHN0YXJ0aW5nIHRoZSBsb2NhdGlvbiBhY3F1aXNpdGlvbiBw
cm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnJlcXVlc3RUaW1lZE91dCk6
IEFkZGVkLiBDYW5jZWxzIGEgcmVxdWVzdCB3aGVuIGl0IHRpbWVzIG91dC4KKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQpOiBNb2RpZmllZC4gTm8gbG9uZ2VyIHN0
YXJ0cyB0aW1lcnMuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2VuZFBvc2l0aW9u
KTogTW9kaWZpZWQuIE5vIGxvbmdlciBzdG9wcyB0aW1lcnMuCisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6c3RvcFRpbWVyKTogQWRkZWQuIFN0b3BzIHRoZSB0aW1lcnMgZm9yIGEgdmVj
dG9yIG9mIG5vdGlmaWVycy4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9wVGlt
ZXJzRm9yT25lU2hvdHMpOiBBZGRlZC4gU3RvcHMgdGhlIHRpbWVycyBmb3IgYWxsIG9uZS1zaG90
cy4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9wVGltZXJzRm9yV2F0Y2hlcnMp
OiBBZGRlZC4gU3RvcHMgdGhlIHRpbWVycyBmb3IgYWxsIHdhdGNoZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246OnN0b3BUaW1lcnMpOiBBZGRlZC4gU3RvcHMgdGhlIHRpbWVycyBm
b3IgYWxsIHJlcXVlc3RzLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Omdlb2xvY2F0
aW9uU2VydmljZVBvc2l0aW9uQ2hhbmdlZCk6IE1vZGZpZmllZC4gU3RvcHMgdGhlIHRpbWVycyBm
b3IgYWxsIHJlcXVlc3RzLgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uaDogTW9kaWZpZWQu
CisKIDIwMDktMDgtMTMgIE1pa2UgRmVudG9uICA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gVHJlYXQuCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5j
cHAJKHJldmlzaW9uIDQ3MzYwKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsOCArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdl
b2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2VvTm90aWZpZXIoUGFzc1JlZlB0cjxQb3NpdGlvbkNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gb3B0aW9ucykKLSAg
ICA6IG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKK0dlb2xvY2F0aW9uOjpHZW9O
b3RpZmllcjo6R2VvTm90aWZpZXIoR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uLCBQYXNzUmVmUHRy
PFBvc2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBv
cHRpb25zKQorICAgIDogbV9nZW9sb2NhdGlvbihnZW9sb2NhdGlvbikKKyAgICAsIG1fc3VjY2Vz
c0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKICAgICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNh
bGxiYWNrKQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiAgICAgLCBtX3RpbWVyKHRoaXMsICZH
ZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnRpbWVyRmlyZWQpCkBAIC00Nyw5ICs0OCw5IEBAIEdl
b2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2VvTm90aWZpZXIoUGEKICAgICBBU1NFUlQobV9vcHRp
b25zKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnN0YXJ0VGltZXIoKQor
dm9pZCBHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnN0YXJ0VGltZXJJZk5lZWRlZCgpCiB7Ci0g
ICAgaWYgKG1fZXJyb3JDYWxsYmFjayAmJiBtX29wdGlvbnMtPmhhc1RpbWVvdXQoKSkKKyAgICBp
ZiAobV9vcHRpb25zLT5oYXNUaW1lb3V0KCkpCiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90
KG1fb3B0aW9ucy0+dGltZW91dCgpIC8gMTAwMC4wKTsKIH0KIApAQCAtNTksOCArNjAsMTEgQEAg
dm9pZCBHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnRpbWVyRmlyZQogICAgIAogICAgIG1fdGlt
ZXIuc3RvcCgpOwogCi0gICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gUG9zaXRpb25F
cnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlRJTUVPVVQsICJUaW1lZCBvdXQiKTsKLSAgICBt
X2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsKKyAgICBpZiAobV9lcnJv
ckNhbGxiYWNrKSB7CisgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IFBvc2l0
aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpUSU1FT1VULCAiVGltZWQgb3V0Iik7Cisg
ICAgICAgIG1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOworICAgIH0K
KyAgICBtX2dlb2xvY2F0aW9uLT5yZXF1ZXN0VGltZWRPdXQodGhpcyk7CiB9CiAKIEdlb2xvY2F0
aW9uOjpHZW9sb2NhdGlvbihGcmFtZSogZnJhbWUpCkBAIC04NSw5ICs4OSwxMSBAQCB2b2lkIEdl
b2xvY2F0aW9uOjpkaXNjb25uZWN0RnJhbWUoKQogCiB2b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJy
ZW50UG9zaXRpb24oUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQYXNzUmVm
UHRyPFBvc2l0aW9uT3B0aW9ucz4gb3B0aW9ucykKIHsKLSAgICBSZWZQdHI8R2VvTm90aWZpZXI+
IG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2ssIG9wdGlvbnMpOworICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9O
b3RpZmllcjo6Y3JlYXRlKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgb3B0
aW9ucyk7CiAKLSAgICBpZiAoIW1fc2VydmljZS0+c3RhcnRVcGRhdGluZyhub3RpZmllci0+bV9v
cHRpb25zLmdldCgpKSkgeworICAgIGlmIChtX3NlcnZpY2UtPnN0YXJ0VXBkYXRpbmcobm90aWZp
ZXItPm1fb3B0aW9ucy5nZXQoKSkpCisgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVk
ZWQoKTsKKyAgICBlbHNlIHsKICAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2sp
IHsKICAgICAgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IFBvc2l0aW9uRXJy
b3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgIlVuYWJsZSB0byBT
dGFydCIpOwogICAgICAgICAgICAgbm90aWZpZXItPm1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZl
bnQoZXJyb3IuZ2V0KCkpOwpAQCAtMTAwLDkgKzEwNiwxMSBAQCB2b2lkIEdlb2xvY2F0aW9uOjpn
ZXRDdXJyZW50UG9zaXRpb24oUGFzCiAKIGludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihQ
YXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQ
b3NpdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25P
cHRpb25zPiBvcHRpb25zKQogewotICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBH
ZW9Ob3RpZmllcjo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgb3B0aW9u
cyk7CisgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVh
dGUodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25zKTsKIAotICAg
IGlmICghbV9zZXJ2aWNlLT5zdGFydFVwZGF0aW5nKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkp
KSB7CisgICAgaWYgKG1fc2VydmljZS0+c3RhcnRVcGRhdGluZyhub3RpZmllci0+bV9vcHRpb25z
LmdldCgpKSkKKyAgICAgICAgbm90aWZpZXItPnN0YXJ0VGltZXJJZk5lZWRlZCgpOworICAgIGVs
c2UgewogICAgICAgICBpZiAobm90aWZpZXItPm1fZXJyb3JDYWxsYmFjaykgewogICAgICAgICAg
ICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBv
c2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCAiVW5hYmxlIHRvIFN0YXJ0Iik7CiAgICAg
ICAgICAgICBub3RpZmllci0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5nZXQo
KSk7CkBAIC0xMTcsNiArMTI1LDE1IEBAIGludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihQ
YXNzUmVmUHQKICAgICByZXR1cm4gc0lkZW50aWZpZXI7CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb246
OnJlcXVlc3RUaW1lZE91dChHZW9Ob3RpZmllciogbm90aWZpZXIpCit7CisgICAgLy8gSWYgdGhp
cyBpcyBhIG9uZS1zaG90IHJlcXVlc3QsIHN0b3AgaXQuCisgICAgbV9vbmVTaG90cy5yZW1vdmUo
bm90aWZpZXIpOworCisgICAgaWYgKCFoYXNMaXN0ZW5lcnMoKSkKKyAgICAgICAgbV9zZXJ2aWNl
LT5zdG9wVXBkYXRpbmcoKTsKK30KKwogdm9pZCBHZW9sb2NhdGlvbjo6Y2xlYXJXYXRjaChpbnQg
d2F0Y2hJZCkKIHsKICAgICBtX3dhdGNoZXJzLnJlbW92ZSh3YXRjaElkKTsKQEAgLTE0MSwxMCAr
MTU4LDkgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKGJvb2wgYWxsbwogewogICAg
IG1fYWxsb3dHZW9sb2NhdGlvbiA9IGFsbG93ZWQgPyBZZXMgOiBObzsKICAgICAKLSAgICBpZiAo
aXNBbGxvd2VkKCkpIHsKLSAgICAgICAgc3RhcnRUaW1lcnMoKTsKKyAgICBpZiAoaXNBbGxvd2Vk
KCkpCiAgICAgICAgIG1ha2VTdWNjZXNzQ2FsbGJhY2tzKCk7Ci0gICAgfSBlbHNlIHsKKyAgICBl
bHNlIHsKICAgICAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6UG9zaXRpb25FcnJvcj4gZXJyb3Ig
PSBXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lP
Tl9ERU5JRUQsICJVc2VyIGRpc2FsbG93ZWQgR2VvTG9jYXRpb24iKTsKICAgICAgICAgaGFuZGxl
RXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIH0KQEAgLTE4NCw3ICsyMDAsNiBAQCB2b2lkIEdlb2xv
Y2F0aW9uOjpzZW5kUG9zaXRpb24oVmVjdG9yPFJlCiAgICAgICAgIFJlZlB0cjxHZW9Ob3RpZmll
cj4gbm90aWZpZXIgPSAqaXQ7CiAgICAgICAgIEFTU0VSVChub3RpZmllci0+bV9zdWNjZXNzQ2Fs
bGJhY2spOwogICAgICAgICAKLSAgICAgICAgbm90aWZpZXItPm1fdGltZXIuc3RvcCgpOwogICAg
ICAgICBib29sIHNob3VsZENhbGxFcnJvckNhbGxiYWNrID0gZmFsc2U7CiAgICAgICAgIG5vdGlm
aWVyLT5tX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQocG9zaXRpb24sIHNob3VsZENhbGxF
cnJvckNhbGxiYWNrKTsKICAgICAgICAgaWYgKHNob3VsZENhbGxFcnJvckNhbGxiYWNrKSB7CkBA
IC0yMTAsMzUgKzIyNSwzNSBAQCB2b2lkIEdlb2xvY2F0aW9uOjpzZW5kUG9zaXRpb25Ub1dhdGNo
ZXJzCiAgICAgc2VuZFBvc2l0aW9uKGNvcHksIHBvc2l0aW9uKTsKIH0KIAotdm9pZCBHZW9sb2Nh
dGlvbjo6c3RhcnRUaW1lcihWZWN0b3I8UmVmUHRyPEdlb05vdGlmaWVyPiA+JiBub3RpZmllcnMp
Cit2b2lkIEdlb2xvY2F0aW9uOjpzdG9wVGltZXIoVmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4g
PiYgbm90aWZpZXJzKQogewogICAgIFZlY3RvcjxSZWZQdHI8R2VvTm90aWZpZXI+ID46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG5vdGlmaWVycy5lbmQoKTsKICAgICBmb3IgKFZlY3RvcjxSZWZQdHI8
R2VvTm90aWZpZXI+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbm90aWZpZXJzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewogICAgICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0g
Kml0OwotICAgICAgICBub3RpZmllci0+c3RhcnRUaW1lcigpOworICAgICAgICBub3RpZmllci0+
bV90aW1lci5zdG9wKCk7CiAgICAgfQogfQogCi12b2lkIEdlb2xvY2F0aW9uOjpzdGFydFRpbWVy
c0Zvck9uZVNob3RzKCkKK3ZvaWQgR2VvbG9jYXRpb246OnN0b3BUaW1lcnNGb3JPbmVTaG90cygp
CiB7CiAgICAgVmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4gPiBjb3B5OwogICAgIGNvcHlUb1Zl
Y3RvcihtX29uZVNob3RzLCBjb3B5KTsKICAgICAKLSAgICBzdGFydFRpbWVyKGNvcHkpOworICAg
IHN0b3BUaW1lcihjb3B5KTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbjo6c3RhcnRUaW1lcnNGb3JX
YXRjaGVycygpCit2b2lkIEdlb2xvY2F0aW9uOjpzdG9wVGltZXJzRm9yV2F0Y2hlcnMoKQogewog
ICAgIFZlY3RvcjxSZWZQdHI8R2VvTm90aWZpZXI+ID4gY29weTsKICAgICBjb3B5VmFsdWVzVG9W
ZWN0b3IobV93YXRjaGVycywgY29weSk7CiAgICAgCi0gICAgc3RhcnRUaW1lcihjb3B5KTsKKyAg
ICBzdG9wVGltZXIoY29weSk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb246OnN0YXJ0VGltZXJzKCkK
K3ZvaWQgR2VvbG9jYXRpb246OnN0b3BUaW1lcnMoKQogewotICAgIHN0YXJ0VGltZXJzRm9yT25l
U2hvdHMoKTsKLSAgICBzdGFydFRpbWVyc0ZvcldhdGNoZXJzKCk7CisgICAgc3RvcFRpbWVyc0Zv
ck9uZVNob3RzKCk7CisgICAgc3RvcFRpbWVyc0ZvcldhdGNoZXJzKCk7CiB9CiAKIHZvaWQgR2Vv
bG9jYXRpb246OmhhbmRsZUVycm9yKFBvc2l0aW9uRXJyb3IqIGVycm9yKQpAQCAtMjc2LDYgKzI5
MSw5IEBAIHZvaWQgR2VvbG9jYXRpb246Omdlb2xvY2F0aW9uU2VydmljZVBvc2kKIHsKICAgICBB
U1NFUlRfVU5VU0VEKHNlcnZpY2UsIHNlcnZpY2UgPT0gbV9zZXJ2aWNlKTsKICAgICBBU1NFUlQo
bV9zZXJ2aWNlLT5sYXN0UG9zaXRpb24oKSk7CisKKyAgICAvLyBTdG9wIGFsbCBjdXJyZW50bHkg
cnVubmluZyB0aW1lcnMuCisgICAgc3RvcFRpbWVycygpOwogICAgIAogICAgIGlmICghaXNBbGxv
d2VkKCkpIHsKICAgICAgICAgLy8gcmVxdWVzdFBlcm1pc3Npb24oKSB3aWxsIGFzayB0aGUgY2hy
b21lIGZvciBwZXJtaXNzaW9uLiBUaGlzIG1heSBiZQpJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xv
Y2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgJKHJldmlz
aW9uIDQ3MzYwKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTczLDE4ICs3MywxOSBAQCBwcml2YXRlOgogCiAgICAgY2xhc3MgR2VvTm90aWZpZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxHZW9Ob3RpZmllcj4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8R2VvTm90aWZpZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFBvc2l0aW9uQ2Fs
bGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNr
PiBwb3NpdGlvbkVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRp
b25zKSB7IHJldHVybiBhZG9wdFJlZihuZXcgR2VvTm90aWZpZXIocG9zaXRpb25DYWxsYmFjaywg
cG9zaXRpb25FcnJvckNhbGxiYWNrLCBvcHRpb25zKSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8R2VvTm90aWZpZXI+IGNyZWF0ZShHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24sIFBhc3NS
ZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjaywgUGFzc1JlZlB0cjxQb3Np
dGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3Np
dGlvbk9wdGlvbnM+IG9wdGlvbnMpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW9Ob3RpZmllcihn
ZW9sb2NhdGlvbiwgcG9zaXRpb25DYWxsYmFjaywgcG9zaXRpb25FcnJvckNhbGxiYWNrLCBvcHRp
b25zKSk7IH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgc3RhcnRUaW1lcigpOworICAgICAgICB2
b2lkIHN0YXJ0VGltZXJJZk5lZWRlZCgpOwogICAgICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8
R2VvTm90aWZpZXI+Kik7CiAgICAgICAgIAorICAgICAgICBHZW9sb2NhdGlvbiogbV9nZW9sb2Nh
dGlvbjsKICAgICAgICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNr
OwogICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7
CiAgICAgICAgIFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IG1fb3B0aW9uczsKICAgICAgICAgVGlt
ZXI8R2VvTm90aWZpZXI+IG1fdGltZXI7CiAKICAgICBwcml2YXRlOgotICAgICAgICBHZW9Ob3Rp
ZmllcihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJy
b3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPik7CisgICAgICAgIEdlb05v
dGlmaWVyKEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbiwgUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxi
YWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0
aW9uT3B0aW9ucz4pOwogICAgIH07CiAKICAgICBib29sIGhhc0xpc3RlbmVycygpIGNvbnN0IHsg
cmV0dXJuICFtX29uZVNob3RzLmlzRW1wdHkoKSB8fCAhbV93YXRjaGVycy5pc0VtcHR5KCk7IH0K
QEAgLTk3LDEwICs5OCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFBvc2l0aW9uVG9PbmVT
aG90cyhHZW9wb3NpdGlvbiopOwogICAgIHZvaWQgc2VuZFBvc2l0aW9uVG9XYXRjaGVycyhHZW9w
b3NpdGlvbiopOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHN0YXJ0VGltZXIoVmVjdG9yPFJlZlB0
cjxHZW9Ob3RpZmllcj4gPiYpOwotICAgIHZvaWQgc3RhcnRUaW1lcnNGb3JPbmVTaG90cygpOwot
ICAgIHZvaWQgc3RhcnRUaW1lcnNGb3JXYXRjaGVycygpOwotICAgIHZvaWQgc3RhcnRUaW1lcnMo
KTsKKyAgICBzdGF0aWMgdm9pZCBzdG9wVGltZXIoVmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4g
PiYpOworICAgIHZvaWQgc3RvcFRpbWVyc0Zvck9uZVNob3RzKCk7CisgICAgdm9pZCBzdG9wVGlt
ZXJzRm9yV2F0Y2hlcnMoKTsKKyAgICB2b2lkIHN0b3BUaW1lcnMoKTsKICAgICAKICAgICB2b2lk
IG1ha2VTdWNjZXNzQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCBoYW5kbGVFcnJvcihQb3NpdGlvbkVy
cm9yKik7CkBAIC0xMTEsNiArMTEyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2Vv
bG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uU2VydmljZSopOwogICAg
IHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3VycmVkKEdlb2xvY2F0aW9u
U2VydmljZSopOwogCisgICAgdm9pZCByZXF1ZXN0VGltZWRPdXQoR2VvTm90aWZpZXIqIG5vdGlm
aWVyKTsKKwogICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8R2VvTm90aWZpZXI+ID4gR2VvTm90
aWZpZXJTZXQ7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPEdlb05vdGlmaWVyPiA+
IEdlb05vdGlmaWVyTWFwOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38373</attachid>
            <date>2009-08-21 08:38:45 -0700</date>
            <delta_ts>2009-09-09 04:25:25 -0700</delta_ts>
            <desc>Patch 2 for bug 27256</desc>
            <filename>applyTimeoutCorrectly2.txt</filename>
            <type>text/plain</type>
            <size>11327</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzYzMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDktMDgtMjEgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvcnJlY3RseSBhcHBsaWVzIHRoZSBHZW9sb2NhdGlvbiB0aW1lb3V0IHByb3BlcnR5LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcyNTYKKworICAg
ICAgICBJZiBhIHRpbWVvdXQgaXMgc3BlY2lmaWVkLCB0aGUgdGltZXIgaXMgc3RhcnRlZCBhcyBz
b29uIGFzIHRoZSBsb2NhdGlvbiBhY3F1aXN0aW9uIHByb2Nlc3Mgc3RhcnRzLgorICAgICAgICBJ
ZiBhIHBvc2l0aW9uIGZpeCBpcyBub3Qgb2J0YWluZWQgd2l0aGluIHRoZSB0aW1lb3V0IGludGVy
dmFsLCB0aGUgcG9zaXRpb24gcmVxdWVzdCBpcyBjYW5jZWxsZWQgCisgICAgICAgIGFuZCB0aGUg
ZXJyb3IgY2FsbGJhY2sgKGlmIHNwZWNpZmllZCkgaXMgaW52b2tlZC4gSWYgYSBwb3NpdGlvbiBm
aXggaXMgb2J0YWluZWQgd2l0aGluIHRoZSB0aW1lb3V0CisgICAgICAgIGludGVydmFsLCB0aGUg
dGltZXIgaXMgc3RvcHBlZC4gUGVybWlzc2lvbnMgYXJlIHRoZW4gcmVxdWVzdGVkIGZyb20gdGhl
IHVzZXIgaWYgcmVxdWlyZWQuIFNlZQorICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9nZW9s
b2NhdGlvbi1BUEkvI3Bvc2l0aW9uLW9wdGlvbnMuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMg
bG9naWMgbWVhbnMgdGhhdCB0aGUgdGltZSByZXF1aXJlZCB0byBvYnRhaW4gcGVybWlzc2lvbnMg
ZnJvbSB0aGUgdXNlciBpcyBub3QKKyAgICAgICAgaW5jbHVkZWQgaW4gdGhlIHRpbWVvdXQgaW50
ZXJ2YWwuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHBvc3NpYmxlIHVudGlsIGEgbW9jayBHZW9s
b2NhdGlvbiBzZXJ2aWNlIGlzIGltcGxlbWVudGVkLgorCisgICAgICAgICogcGFnZS9HZW9sb2Nh
dGlvbi5jcHA6IE1vZGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb05v
dGlmaWVyOjpHZW9Ob3RpZmllcik6IE1vZGlmaWVkLiBUYWtlcyBHZW9sb2NhdGlvbiBvYmplY3Qg
YXMgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb05vdGlmaWVy
OjpzdGFydFRpbWVySWZOZWVkZWQpOiBSZW5hbWVkIGZyb20gc3RhcnRUaW1lci4gU3RhcnRzIHRo
ZSB0aW1lciBpZiBhIHRpbWVvdXQgd2FzIHNwZWNpZmllZC4KKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6dGltZXJGaXJlZCk6IE1vZGlmaWVkLiBDYWxscyB0aGUg
ZXJyb3IgY2FsbGJhY2sgaWYgc3BlY2lmaWVkLCBhbmQgcmVwb3J0cyB0aGUgdGltZW91dCB0byB0
aGUgR2VvbG9jYXRpb24gb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Omdl
dEN1cnJlbnRQb3NpdGlvbik6IE1vZGlmaWVkLiBDYWxscyBtYXliZVN0YXJ0VGltZXIgd2hlbiBz
dGFydGluZyB0aGUgbG9jYXRpb24gYWNxdWlzaXRpb24gcHJvY2Vzcy4KKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKTogTW9kaWZpZWQuIENhbGxzIG1heWJlU3Rh
cnRUaW1lciB3aGVuIHN0YXJ0aW5nIHRoZSBsb2NhdGlvbiBhY3F1aXNpdGlvbiBwcm9jZXNzLgor
ICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnJlcXVlc3RUaW1lZE91dCk6IEFkZGVkLiBD
YW5jZWxzIGEgcmVxdWVzdCB3aGVuIGl0IHRpbWVzIG91dC4KKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQpOiBNb2RpZmllZC4gTm8gbG9uZ2VyIHN0YXJ0cyB0aW1l
cnMuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2VuZFBvc2l0aW9uKTogTW9kaWZp
ZWQuIE5vIGxvbmdlciBzdG9wcyB0aW1lcnMuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlv
bjo6c3RvcFRpbWVyKTogQWRkZWQuIFN0b3BzIHRoZSB0aW1lcnMgZm9yIGEgdmVjdG9yIG9mIG5v
dGlmaWVycy4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9wVGltZXJzRm9yT25l
U2hvdHMpOiBBZGRlZC4gU3RvcHMgdGhlIHRpbWVycyBmb3IgYWxsIG9uZS1zaG90cy4KKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9wVGltZXJzRm9yV2F0Y2hlcnMpOiBBZGRlZC4g
U3RvcHMgdGhlIHRpbWVycyBmb3IgYWxsIHdhdGNoZXJzLgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb246OnN0b3BUaW1lcnMpOiBBZGRlZC4gU3RvcHMgdGhlIHRpbWVycyBmb3IgYWxsIHJl
cXVlc3RzLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Omdlb2xvY2F0aW9uU2Vydmlj
ZVBvc2l0aW9uQ2hhbmdlZCk6IE1vZGZpZmllZC4gU3RvcHMgdGhlIHRpbWVycyBmb3IgYWxsIHJl
cXVlc3RzLgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uaDogTW9kaWZpZWQuCisKIDIwMDkt
MDgtMjEgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDQ3NjMw
KQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
OCArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdlb2xvY2F0aW9uOjpHZW9Ob3Rp
Zmllcjo6R2VvTm90aWZpZXIoUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQ
YXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gb3B0aW9ucykKLSAgICA6IG1fc3VjY2Vzc0NhbGxi
YWNrKHN1Y2Nlc3NDYWxsYmFjaykKK0dlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2VvTm90aWZp
ZXIoR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uLCBQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRpb25zKQorICAgIDogbV9n
ZW9sb2NhdGlvbihnZW9sb2NhdGlvbikKKyAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3ND
YWxsYmFjaykKICAgICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQogICAgICwgbV9v
cHRpb25zKG9wdGlvbnMpCiAgICAgLCBtX3RpbWVyKHRoaXMsICZHZW9sb2NhdGlvbjo6R2VvTm90
aWZpZXI6OnRpbWVyRmlyZWQpCkBAIC00Nyw5ICs0OCw5IEBAIEdlb2xvY2F0aW9uOjpHZW9Ob3Rp
Zmllcjo6R2VvTm90aWZpZXIoUGEKICAgICBBU1NFUlQobV9vcHRpb25zKTsKIH0KIAotdm9pZCBH
ZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnN0YXJ0VGltZXIoKQordm9pZCBHZW9sb2NhdGlvbjo6
R2VvTm90aWZpZXI6OnN0YXJ0VGltZXJJZk5lZWRlZCgpCiB7Ci0gICAgaWYgKG1fZXJyb3JDYWxs
YmFjayAmJiBtX29wdGlvbnMtPmhhc1RpbWVvdXQoKSkKKyAgICBpZiAobV9vcHRpb25zLT5oYXNU
aW1lb3V0KCkpCiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KG1fb3B0aW9ucy0+dGltZW91
dCgpIC8gMTAwMC4wKTsKIH0KIApAQCAtNTksOCArNjAsMTEgQEAgdm9pZCBHZW9sb2NhdGlvbjo6
R2VvTm90aWZpZXI6OnRpbWVyRmlyZQogICAgIAogICAgIG1fdGltZXIuc3RvcCgpOwogCi0gICAg
UmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0
aW9uRXJyb3I6OlRJTUVPVVQsICJUaW1lZCBvdXQiKTsKLSAgICBtX2Vycm9yQ2FsbGJhY2stPmhh
bmRsZUV2ZW50KGVycm9yLmdldCgpKTsKKyAgICBpZiAobV9lcnJvckNhbGxiYWNrKSB7CisgICAg
ICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQ
b3NpdGlvbkVycm9yOjpUSU1FT1VULCAiVGltZWQgb3V0Iik7CisgICAgICAgIG1fZXJyb3JDYWxs
YmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOworICAgIH0KKyAgICBtX2dlb2xvY2F0aW9u
LT5yZXF1ZXN0VGltZWRPdXQodGhpcyk7CiB9CiAKIEdlb2xvY2F0aW9uOjpHZW9sb2NhdGlvbihG
cmFtZSogZnJhbWUpCkBAIC04NSw5ICs4OSwxMSBAQCB2b2lkIEdlb2xvY2F0aW9uOjpkaXNjb25u
ZWN0RnJhbWUoKQogCiB2b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oUGFzc1Jl
ZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRp
b25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9u
cz4gb3B0aW9ucykKIHsKLSAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gR2VvTm90
aWZpZXI6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIG9wdGlvbnMpOwor
ICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKHRo
aXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgb3B0aW9ucyk7CiAKLSAgICBpZiAo
IW1fc2VydmljZS0+c3RhcnRVcGRhdGluZyhub3RpZmllci0+bV9vcHRpb25zLmdldCgpKSkgewor
ICAgIGlmIChtX3NlcnZpY2UtPnN0YXJ0VXBkYXRpbmcobm90aWZpZXItPm1fb3B0aW9ucy5nZXQo
KSkpCisgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKKyAgICBlbHNlIHsK
ICAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2spIHsKICAgICAgICAgICAgIFJl
ZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlv
bkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgIlVuYWJsZSB0byBTdGFydCIpOwogICAgICAgICAg
ICAgbm90aWZpZXItPm1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOwpA
QCAtMTAwLDkgKzEwNiwxMSBAQCB2b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24o
UGFzCiAKIGludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9u
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRpb25zKQog
ewotICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRl
KHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgb3B0aW9ucyk7CisgICAgUmVmUHRyPEdl
b05vdGlmaWVyPiBub3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUodGhpcywgc3VjY2Vzc0Nh
bGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25zKTsKIAotICAgIGlmICghbV9zZXJ2aWNlLT5z
dGFydFVwZGF0aW5nKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkpKSB7CisgICAgaWYgKG1fc2Vy
dmljZS0+c3RhcnRVcGRhdGluZyhub3RpZmllci0+bV9vcHRpb25zLmdldCgpKSkKKyAgICAgICAg
bm90aWZpZXItPnN0YXJ0VGltZXJJZk5lZWRlZCgpOworICAgIGVsc2UgewogICAgICAgICBpZiAo
bm90aWZpZXItPm1fZXJyb3JDYWxsYmFjaykgewogICAgICAgICAgICAgUmVmUHRyPFBvc2l0aW9u
RXJyb3I+IGVycm9yID0gUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1J
U1NJT05fREVOSUVELCAiVW5hYmxlIHRvIFN0YXJ0Iik7CiAgICAgICAgICAgICBub3RpZmllci0+
bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7CkBAIC0xMTcsNiArMTI1
LDE1IEBAIGludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihQYXNzUmVmUHQKICAgICByZXR1
cm4gc0lkZW50aWZpZXI7CiB9CiAKK3ZvaWQgR2VvbG9jYXRpb246OnJlcXVlc3RUaW1lZE91dChH
ZW9Ob3RpZmllciogbm90aWZpZXIpCit7CisgICAgLy8gSWYgdGhpcyBpcyBhIG9uZS1zaG90IHJl
cXVlc3QsIHN0b3AgaXQuCisgICAgbV9vbmVTaG90cy5yZW1vdmUobm90aWZpZXIpOworCisgICAg
aWYgKCFoYXNMaXN0ZW5lcnMoKSkKKyAgICAgICAgbV9zZXJ2aWNlLT5zdG9wVXBkYXRpbmcoKTsK
K30KKwogdm9pZCBHZW9sb2NhdGlvbjo6Y2xlYXJXYXRjaChpbnQgd2F0Y2hJZCkKIHsKICAgICBt
X3dhdGNoZXJzLnJlbW92ZSh3YXRjaElkKTsKQEAgLTE0MSwxMCArMTU4LDkgQEAgdm9pZCBHZW9s
b2NhdGlvbjo6c2V0SXNBbGxvd2VkKGJvb2wgYWxsbwogewogICAgIG1fYWxsb3dHZW9sb2NhdGlv
biA9IGFsbG93ZWQgPyBZZXMgOiBObzsKICAgICAKLSAgICBpZiAoaXNBbGxvd2VkKCkpIHsKLSAg
ICAgICAgc3RhcnRUaW1lcnMoKTsKKyAgICBpZiAoaXNBbGxvd2VkKCkpCiAgICAgICAgIG1ha2VT
dWNjZXNzQ2FsbGJhY2tzKCk7Ci0gICAgfSBlbHNlIHsKKyAgICBlbHNlIHsKICAgICAgICAgV1RG
OjpSZWZQdHI8V2ViQ29yZTo6UG9zaXRpb25FcnJvcj4gZXJyb3IgPSBXZWJDb3JlOjpQb3NpdGlv
bkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsICJVc2VyIGRp
c2FsbG93ZWQgR2VvTG9jYXRpb24iKTsKICAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IuZ2V0KCkp
OwogICAgIH0KQEAgLTE4NCw3ICsyMDAsNiBAQCB2b2lkIEdlb2xvY2F0aW9uOjpzZW5kUG9zaXRp
b24oVmVjdG9yPFJlCiAgICAgICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSAqaXQ7
CiAgICAgICAgIEFTU0VSVChub3RpZmllci0+bV9zdWNjZXNzQ2FsbGJhY2spOwogICAgICAgICAK
LSAgICAgICAgbm90aWZpZXItPm1fdGltZXIuc3RvcCgpOwogICAgICAgICBib29sIHNob3VsZENh
bGxFcnJvckNhbGxiYWNrID0gZmFsc2U7CiAgICAgICAgIG5vdGlmaWVyLT5tX3N1Y2Nlc3NDYWxs
YmFjay0+aGFuZGxlRXZlbnQocG9zaXRpb24sIHNob3VsZENhbGxFcnJvckNhbGxiYWNrKTsKICAg
ICAgICAgaWYgKHNob3VsZENhbGxFcnJvckNhbGxiYWNrKSB7CkBAIC0yMTAsMzUgKzIyNSwzNSBA
QCB2b2lkIEdlb2xvY2F0aW9uOjpzZW5kUG9zaXRpb25Ub1dhdGNoZXJzCiAgICAgc2VuZFBvc2l0
aW9uKGNvcHksIHBvc2l0aW9uKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbjo6c3RhcnRUaW1lcihW
ZWN0b3I8UmVmUHRyPEdlb05vdGlmaWVyPiA+JiBub3RpZmllcnMpCit2b2lkIEdlb2xvY2F0aW9u
OjpzdG9wVGltZXIoVmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4gPiYgbm90aWZpZXJzKQogewog
ICAgIFZlY3RvcjxSZWZQdHI8R2VvTm90aWZpZXI+ID46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG5v
dGlmaWVycy5lbmQoKTsKICAgICBmb3IgKFZlY3RvcjxSZWZQdHI8R2VvTm90aWZpZXI+ID46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbm90aWZpZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewog
ICAgICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKml0OwotICAgICAgICBub3Rp
Zmllci0+c3RhcnRUaW1lcigpOworICAgICAgICBub3RpZmllci0+bV90aW1lci5zdG9wKCk7CiAg
ICAgfQogfQogCi12b2lkIEdlb2xvY2F0aW9uOjpzdGFydFRpbWVyc0Zvck9uZVNob3RzKCkKK3Zv
aWQgR2VvbG9jYXRpb246OnN0b3BUaW1lcnNGb3JPbmVTaG90cygpCiB7CiAgICAgVmVjdG9yPFJl
ZlB0cjxHZW9Ob3RpZmllcj4gPiBjb3B5OwogICAgIGNvcHlUb1ZlY3RvcihtX29uZVNob3RzLCBj
b3B5KTsKICAgICAKLSAgICBzdGFydFRpbWVyKGNvcHkpOworICAgIHN0b3BUaW1lcihjb3B5KTsK
IH0KIAotdm9pZCBHZW9sb2NhdGlvbjo6c3RhcnRUaW1lcnNGb3JXYXRjaGVycygpCit2b2lkIEdl
b2xvY2F0aW9uOjpzdG9wVGltZXJzRm9yV2F0Y2hlcnMoKQogewogICAgIFZlY3RvcjxSZWZQdHI8
R2VvTm90aWZpZXI+ID4gY29weTsKICAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV93YXRjaGVycywg
Y29weSk7CiAgICAgCi0gICAgc3RhcnRUaW1lcihjb3B5KTsKKyAgICBzdG9wVGltZXIoY29weSk7
CiB9CiAKLXZvaWQgR2VvbG9jYXRpb246OnN0YXJ0VGltZXJzKCkKK3ZvaWQgR2VvbG9jYXRpb246
OnN0b3BUaW1lcnMoKQogewotICAgIHN0YXJ0VGltZXJzRm9yT25lU2hvdHMoKTsKLSAgICBzdGFy
dFRpbWVyc0ZvcldhdGNoZXJzKCk7CisgICAgc3RvcFRpbWVyc0Zvck9uZVNob3RzKCk7CisgICAg
c3RvcFRpbWVyc0ZvcldhdGNoZXJzKCk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb246OmhhbmRsZUVy
cm9yKFBvc2l0aW9uRXJyb3IqIGVycm9yKQpAQCAtMjc2LDYgKzI5MSw5IEBAIHZvaWQgR2VvbG9j
YXRpb246Omdlb2xvY2F0aW9uU2VydmljZVBvc2kKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlcnZp
Y2UsIHNlcnZpY2UgPT0gbV9zZXJ2aWNlKTsKICAgICBBU1NFUlQobV9zZXJ2aWNlLT5sYXN0UG9z
aXRpb24oKSk7CisKKyAgICAvLyBTdG9wIGFsbCBjdXJyZW50bHkgcnVubmluZyB0aW1lcnMuCisg
ICAgc3RvcFRpbWVycygpOwogICAgIAogICAgIGlmICghaXNBbGxvd2VkKCkpIHsKICAgICAgICAg
Ly8gcmVxdWVzdFBlcm1pc3Npb24oKSB3aWxsIGFzayB0aGUgY2hyb21lIGZvciBwZXJtaXNzaW9u
LiBUaGlzIG1heSBiZQpJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgJKHJldmlzaW9uIDQ3NjMwKQorKysgV2Vi
Q29yZS9wYWdlL0dlb2xvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDE4ICs3MywxOSBA
QCBwcml2YXRlOgogCiAgICAgY2xhc3MgR2VvTm90aWZpZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxH
ZW9Ob3RpZmllcj4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8R2Vv
Tm90aWZpZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRpb25zKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgR2VvTm90aWZpZXIocG9zaXRpb25DYWxsYmFjaywgcG9zaXRpb25FcnJvckNhbGxi
YWNrLCBvcHRpb25zKSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8R2VvTm90aWZpZXI+
IGNyZWF0ZShHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24sIFBhc3NSZWZQdHI8UG9zaXRpb25DYWxs
YmFjaz4gcG9zaXRpb25DYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+
IHBvc2l0aW9uRXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IG9wdGlv
bnMpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW9Ob3RpZmllcihnZW9sb2NhdGlvbiwgcG9zaXRp
b25DYWxsYmFjaywgcG9zaXRpb25FcnJvckNhbGxiYWNrLCBvcHRpb25zKSk7IH0KICAgICAgICAg
Ci0gICAgICAgIHZvaWQgc3RhcnRUaW1lcigpOworICAgICAgICB2b2lkIHN0YXJ0VGltZXJJZk5l
ZWRlZCgpOwogICAgICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8R2VvTm90aWZpZXI+Kik7CiAg
ICAgICAgIAorICAgICAgICBHZW9sb2NhdGlvbiogbV9nZW9sb2NhdGlvbjsKICAgICAgICAgUmVm
UHRyPFBvc2l0aW9uQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwogICAgICAgICBSZWZQdHI8
UG9zaXRpb25FcnJvckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7CiAgICAgICAgIFJlZlB0cjxQ
b3NpdGlvbk9wdGlvbnM+IG1fb3B0aW9uczsKICAgICAgICAgVGltZXI8R2VvTm90aWZpZXI+IG1f
dGltZXI7CiAKICAgICBwcml2YXRlOgotICAgICAgICBHZW9Ob3RpZmllcihQYXNzUmVmUHRyPFBv
c2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4sIFBhc3NS
ZWZQdHI8UG9zaXRpb25PcHRpb25zPik7CisgICAgICAgIEdlb05vdGlmaWVyKEdlb2xvY2F0aW9u
KiwgUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9y
Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4pOwogICAgIH07CiAKICAgICBi
b29sIGhhc0xpc3RlbmVycygpIGNvbnN0IHsgcmV0dXJuICFtX29uZVNob3RzLmlzRW1wdHkoKSB8
fCAhbV93YXRjaGVycy5pc0VtcHR5KCk7IH0KQEAgLTk3LDEwICs5OCwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2VuZFBvc2l0aW9uVG9PbmVTaG90cyhHZW9wb3NpdGlvbiopOwogICAgIHZvaWQg
c2VuZFBvc2l0aW9uVG9XYXRjaGVycyhHZW9wb3NpdGlvbiopOwogICAgIAotICAgIHN0YXRpYyB2
b2lkIHN0YXJ0VGltZXIoVmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4gPiYpOwotICAgIHZvaWQg
c3RhcnRUaW1lcnNGb3JPbmVTaG90cygpOwotICAgIHZvaWQgc3RhcnRUaW1lcnNGb3JXYXRjaGVy
cygpOwotICAgIHZvaWQgc3RhcnRUaW1lcnMoKTsKKyAgICBzdGF0aWMgdm9pZCBzdG9wVGltZXIo
VmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4gPiYpOworICAgIHZvaWQgc3RvcFRpbWVyc0Zvck9u
ZVNob3RzKCk7CisgICAgdm9pZCBzdG9wVGltZXJzRm9yV2F0Y2hlcnMoKTsKKyAgICB2b2lkIHN0
b3BUaW1lcnMoKTsKICAgICAKICAgICB2b2lkIG1ha2VTdWNjZXNzQ2FsbGJhY2tzKCk7CiAgICAg
dm9pZCBoYW5kbGVFcnJvcihQb3NpdGlvbkVycm9yKik7CkBAIC0xMTEsNiArMTEyLDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2Vk
KEdlb2xvY2F0aW9uU2VydmljZSopOwogICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvblNlcnZp
Y2VFcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uU2VydmljZSopOwogCisgICAgdm9pZCByZXF1ZXN0
VGltZWRPdXQoR2VvTm90aWZpZXIqKTsKKwogICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8R2Vv
Tm90aWZpZXI+ID4gR2VvTm90aWZpZXJTZXQ7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVm
UHRyPEdlb05vdGlmaWVyPiA+IEdlb05vdGlmaWVyTWFwOwogICAgIAo=
</data>
<flag name="review"
          id="19407"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39262</attachid>
            <date>2009-09-09 04:25:25 -0700</date>
            <delta_ts>2009-09-09 12:45:06 -0700</delta_ts>
            <desc>Patch 3 for bug 27256</desc>
            <filename>applyTimeoutCorrectly3.txt</filename>
            <type>text/plain</type>
            <size>18758</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODIwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDktMDktMDkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvcnJlY3RseSBhcHBsaWVzIHRoZSBHZW9sb2NhdGlvbiB0aW1lb3V0IHByb3BlcnR5LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcyNTYKKworICAg
ICAgICBJZiBhIHRpbWVvdXQgaXMgc3BlY2lmaWVkLCB0aGUgdGltZXIgaXMgc3RhcnRlZCBhcyBz
b29uIGFzIHRoZSBsb2NhdGlvbiBhY3F1aXN0aW9uIHByb2Nlc3Mgc3RhcnRzLgorICAgICAgICBJ
ZiBhIHBvc2l0aW9uIGZpeCBpcyBub3Qgb2J0YWluZWQgd2l0aGluIHRoZSB0aW1lb3V0IGludGVy
dmFsLCB0aGUgcG9zaXRpb24gcmVxdWVzdCBpcyBjYW5jZWxsZWQgCisgICAgICAgIGFuZCB0aGUg
ZXJyb3IgY2FsbGJhY2sgKGlmIHNwZWNpZmllZCkgaXMgaW52b2tlZC4gSWYgYSBwb3NpdGlvbiBm
aXggaXMgb2J0YWluZWQgd2l0aGluIHRoZSB0aW1lb3V0CisgICAgICAgIGludGVydmFsLCB0aGUg
dGltZXIgaXMgc3RvcHBlZC4gUGVybWlzc2lvbnMgYXJlIHRoZW4gcmVxdWVzdGVkIGZyb20gdGhl
IHVzZXIgaWYgcmVxdWlyZWQuIFNlZQorICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi9nZW9s
b2NhdGlvbi1BUEkvI3Bvc2l0aW9uLW9wdGlvbnMuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMg
bG9naWMgbWVhbnMgdGhhdCB0aGUgdGltZSByZXF1aXJlZCB0byBvYnRhaW4gcGVybWlzc2lvbnMg
ZnJvbSB0aGUgdXNlciBpcyBub3QKKyAgICAgICAgaW5jbHVkZWQgaW4gdGhlIHRpbWVvdXQgaW50
ZXJ2YWwuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL0dlb2xvY2F0aW9uL3RpbWVvdXQuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9kb20vR2VvbG9jYXRpb24vdGltZW91dC16ZXJvLmh0bWwK
KworICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uY3BwOiBNb2RpZmllZC4KKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2VvTm90aWZpZXIpOiBNb2RpZmllZC4g
VGFrZXMgR2VvbG9jYXRpb24gb2JqZWN0IGFzIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6aGFzWmVyb1RpbWVvdXQpOiBBZGRlZC4gRGV0ZXJt
aW5lcyB3aGV0aGVyIHRoaXMgcmVxdWVzdCBoYXMgYSB6ZXJvIHRpbWVvdXQuCisgICAgICAgIChX
ZWJDb3JlOjpHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnN0YXJ0VGltZXJJZk5lZWRlZCk6IFJl
bmFtZWQgZnJvbSBzdGFydFRpbWVyLiBTdGFydHMgdGhlIHRpbWVyIGlmIGEgdGltZW91dCB3YXMg
c3BlY2lmaWVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjp0
aW1lckZpcmVkKTogTW9kaWZpZWQuIENhbGxzIHRoZSBlcnJvciBjYWxsYmFjayBpZiBzcGVjaWZp
ZWQsIGFuZCByZXBvcnRzIHRoZSB0aW1lb3V0IHRvIHRoZSBHZW9sb2NhdGlvbiBvYmplY3QuCisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKTogTW9kaWZp
ZWQuIENhbGxzIG1heWJlU3RhcnRUaW1lciB3aGVuIHN0YXJ0aW5nIHRoZSBsb2NhdGlvbiBhY3F1
aXNpdGlvbiBwcm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OndhdGNoUG9z
aXRpb24pOiBNb2RpZmllZC4gQ2FsbHMgbWF5YmVTdGFydFRpbWVyIHdoZW4gc3RhcnRpbmcgdGhl
IGxvY2F0aW9uIGFjcXVpc2l0aW9uIHByb2Nlc3MuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvbjo6cmVxdWVzdFRpbWVkT3V0KTogQWRkZWQuIENhbmNlbHMgYSByZXF1ZXN0IHdoZW4gaXQg
dGltZXMgb3V0LgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnNldElzQWxsb3dlZCk6
IE1vZGlmaWVkLiBObyBsb25nZXIgc3RhcnRzIHRpbWVycy4KKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uOjpzZW5kUG9zaXRpb24pOiBNb2RpZmllZC4gTm8gbG9uZ2VyIHN0b3BzIHRpbWVy
cy4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9wVGltZXIpOiBBZGRlZC4gU3Rv
cHMgdGhlIHRpbWVycyBmb3IgYSB2ZWN0b3Igb2Ygbm90aWZpZXJzLgorICAgICAgICAoV2ViQ29y
ZTo6R2VvbG9jYXRpb246OnN0b3BUaW1lcnNGb3JPbmVTaG90cyk6IEFkZGVkLiBTdG9wcyB0aGUg
dGltZXJzIGZvciBhbGwgb25lLXNob3RzLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
OnN0b3BUaW1lcnNGb3JXYXRjaGVycyk6IEFkZGVkLiBTdG9wcyB0aGUgdGltZXJzIGZvciBhbGwg
d2F0Y2hlcnMuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c3RvcFRpbWVycyk6IEFk
ZGVkLiBTdG9wcyB0aGUgdGltZXJzIGZvciBhbGwgcmVxdWVzdHMuCisgICAgICAgIChXZWJDb3Jl
OjpHZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKTogTW9kZmlm
aWVkLiBTdG9wcyB0aGUgdGltZXJzIGZvciBhbGwgcmVxdWVzdHMuCisgICAgICAgICogcGFnZS9H
ZW9sb2NhdGlvbi5oOiBNb2RpZmllZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpH
ZW9Ob3RpZmllcjo6Y3JlYXRlKTogTW9kaWZpZWQuIFRha2VzIEdlb2xvY2F0aW9uIG9iamVjdCBh
cyBwYXJhbWV0ZXIuCisKIDIwMDktMDktMDkgIFJvaGluaSBBbmFudGggPHJvaGluaS5hbmFudGhA
bm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgotLS0gV2Vi
Q29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkocmV2aXNpb24gNDgxNjcpCisrKyBXZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmll
cihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRp
b25PcHRpb25zPiBvcHRpb25zKQotICAgIDogbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxi
YWNrKQorR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcihHZW9sb2NhdGlvbiog
Z2VvbG9jYXRpb24sIFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxQb3NpdGlvbk9wdGlvbnM+IG9wdGlvbnMpCisgICAgOiBtX2dlb2xvY2F0aW9uKGdlb2xv
Y2F0aW9uKQorICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQogICAgICwg
bV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCiAgICAgLCBtX29wdGlvbnMob3B0aW9ucykK
ICAgICAsIG1fdGltZXIodGhpcywgJkdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6dGltZXJGaXJl
ZCkKQEAgLTQ3LDIwICs0OCwyNiBAQCBHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6Okdlb05vdGlm
aWVyKFBhCiAgICAgQVNTRVJUKG1fb3B0aW9ucyk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb246Okdl
b05vdGlmaWVyOjpzdGFydFRpbWVyKCkKK2Jvb2wgR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpo
YXNaZXJvVGltZW91dCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZXJyb3JDYWxsYmFjayAmJiBtX29w
dGlvbnMtPmhhc1RpbWVvdXQoKSkKKyAgICByZXR1cm4gbV9vcHRpb25zLT5oYXNUaW1lb3V0KCkg
JiYgbV9vcHRpb25zLT50aW1lb3V0KCkgPT0gMDsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6R2Vv
Tm90aWZpZXI6OnN0YXJ0VGltZXJJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fb3B0aW9ucy0+aGFz
VGltZW91dCgpKQogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChtX29wdGlvbnMtPnRpbWVv
dXQoKSAvIDEwMDAuMCk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjp0aW1l
ckZpcmVkKFRpbWVyPEdlb05vdGlmaWVyPiopCiB7Ci0gICAgQVNTRVJUKG1fZXJyb3JDYWxsYmFj
ayk7Ci0gICAgCiAgICAgbV90aW1lci5zdG9wKCk7CiAKLSAgICBSZWZQdHI8UG9zaXRpb25FcnJv
cj4gZXJyb3IgPSBQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6VElNRU9VVCwg
IlRpbWVkIG91dCIpOwotICAgIG1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0
KCkpOworICAgIGlmIChtX2Vycm9yQ2FsbGJhY2spIHsKKyAgICAgICAgUmVmUHRyPFBvc2l0aW9u
RXJyb3I+IGVycm9yID0gUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlRJTUVP
VVQsICJUaW1lb3V0IGV4cGlyZWQiKTsKKyAgICAgICAgbV9lcnJvckNhbGxiYWNrLT5oYW5kbGVF
dmVudChlcnJvci5nZXQoKSk7CisgICAgfQorICAgIG1fZ2VvbG9jYXRpb24tPnJlcXVlc3RUaW1l
ZE91dCh0aGlzKTsKIH0KIAogR2VvbG9jYXRpb246Okdlb2xvY2F0aW9uKEZyYW1lKiBmcmFtZSkK
QEAgLTg1LDkgKzkyLDExIEBAIHZvaWQgR2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSgpCiAK
IHZvaWQgR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9u
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRpb25zKQog
ewotICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRl
KHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgb3B0aW9ucyk7CisgICAgUmVmUHRyPEdl
b05vdGlmaWVyPiBub3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUodGhpcywgc3VjY2Vzc0Nh
bGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25zKTsKIAotICAgIGlmICghbV9zZXJ2aWNlLT5z
dGFydFVwZGF0aW5nKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkpKSB7CisgICAgaWYgKG5vdGlm
aWVyLT5oYXNaZXJvVGltZW91dCgpIHx8IG1fc2VydmljZS0+c3RhcnRVcGRhdGluZyhub3RpZmll
ci0+bV9vcHRpb25zLmdldCgpKSkKKyAgICAgICAgbm90aWZpZXItPnN0YXJ0VGltZXJJZk5lZWRl
ZCgpOworICAgIGVsc2UgewogICAgICAgICBpZiAobm90aWZpZXItPm1fZXJyb3JDYWxsYmFjaykg
ewogICAgICAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gUG9zaXRpb25FcnJv
cjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCAiVW5hYmxlIHRvIFN0
YXJ0Iik7CiAgICAgICAgICAgICBub3RpZmllci0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVu
dChlcnJvci5nZXQoKSk7CkBAIC0xMDAsOSArMTA5LDExIEBAIHZvaWQgR2VvbG9jYXRpb246Omdl
dEN1cnJlbnRQb3NpdGlvbihQYXMKIAogaW50IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFBh
c3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBv
c2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbk9w
dGlvbnM+IG9wdGlvbnMpCiB7Ci0gICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdl
b05vdGlmaWVyOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25z
KTsKKyAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0
ZSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIG9wdGlvbnMpOwogCi0gICAg
aWYgKCFtX3NlcnZpY2UtPnN0YXJ0VXBkYXRpbmcobm90aWZpZXItPm1fb3B0aW9ucy5nZXQoKSkp
IHsKKyAgICBpZiAobm90aWZpZXItPmhhc1plcm9UaW1lb3V0KCkgfHwgbV9zZXJ2aWNlLT5zdGFy
dFVwZGF0aW5nKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkpKQorICAgICAgICBub3RpZmllci0+
c3RhcnRUaW1lcklmTmVlZGVkKCk7CisgICAgZWxzZSB7CiAgICAgICAgIGlmIChub3RpZmllci0+
bV9lcnJvckNhbGxiYWNrKSB7CiAgICAgICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gZXJy
b3IgPSBQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5J
RUQsICJVbmFibGUgdG8gU3RhcnQiKTsKICAgICAgICAgICAgIG5vdGlmaWVyLT5tX2Vycm9yQ2Fs
bGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsKQEAgLTExNyw2ICsxMjgsMTUgQEAgaW50
IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFBhc3NSZWZQdAogICAgIHJldHVybiBzSWRlbnRp
ZmllcjsKIH0KIAordm9pZCBHZW9sb2NhdGlvbjo6cmVxdWVzdFRpbWVkT3V0KEdlb05vdGlmaWVy
KiBub3RpZmllcikKK3sKKyAgICAvLyBJZiB0aGlzIGlzIGEgb25lLXNob3QgcmVxdWVzdCwgc3Rv
cCBpdC4KKyAgICBtX29uZVNob3RzLnJlbW92ZShub3RpZmllcik7CisKKyAgICBpZiAoIWhhc0xp
c3RlbmVycygpKQorICAgICAgICBtX3NlcnZpY2UtPnN0b3BVcGRhdGluZygpOworfQorCiB2b2lk
IEdlb2xvY2F0aW9uOjpjbGVhcldhdGNoKGludCB3YXRjaElkKQogewogICAgIG1fd2F0Y2hlcnMu
cmVtb3ZlKHdhdGNoSWQpOwpAQCAtMTQxLDExICsxNjEsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbjo6
c2V0SXNBbGxvd2VkKGJvb2wgYWxsbwogewogICAgIG1fYWxsb3dHZW9sb2NhdGlvbiA9IGFsbG93
ZWQgPyBZZXMgOiBObzsKICAgICAKLSAgICBpZiAoaXNBbGxvd2VkKCkpIHsKLSAgICAgICAgc3Rh
cnRUaW1lcnMoKTsKKyAgICBpZiAoaXNBbGxvd2VkKCkpCiAgICAgICAgIG1ha2VTdWNjZXNzQ2Fs
bGJhY2tzKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6UG9z
aXRpb25FcnJvcj4gZXJyb3IgPSBXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRp
b25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsICJVc2VyIGRpc2FsbG93ZWQgR2VvbG9jYXRpb24i
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gUG9z
aXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCAiVXNl
ciBkaXNhbGxvd2VkIEdlb2xvY2F0aW9uIik7CiAgICAgICAgIGhhbmRsZUVycm9yKGVycm9yLmdl
dCgpKTsKICAgICB9CiB9CkBAIC0xODQsNyArMjAzLDYgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c2Vu
ZFBvc2l0aW9uKFZlY3RvcjxSZQogICAgICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVy
ID0gKml0OwogICAgICAgICBBU1NFUlQobm90aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNrKTsKICAg
ICAgICAgCi0gICAgICAgIG5vdGlmaWVyLT5tX3RpbWVyLnN0b3AoKTsKICAgICAgICAgYm9vbCBz
aG91bGRDYWxsRXJyb3JDYWxsYmFjayA9IGZhbHNlOwogICAgICAgICBub3RpZmllci0+bV9zdWNj
ZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KHBvc2l0aW9uLCBzaG91bGRDYWxsRXJyb3JDYWxsYmFj
ayk7CiAgICAgICAgIGlmIChzaG91bGRDYWxsRXJyb3JDYWxsYmFjaykgewpAQCAtMjEwLDM1ICsy
MjgsMzUgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c2VuZFBvc2l0aW9uVG9XYXRjaGVycwogICAgIHNl
bmRQb3NpdGlvbihjb3B5LCBwb3NpdGlvbik7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb246OnN0YXJ0
VGltZXIoVmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4gPiYgbm90aWZpZXJzKQordm9pZCBHZW9s
b2NhdGlvbjo6c3RvcFRpbWVyKFZlY3RvcjxSZWZQdHI8R2VvTm90aWZpZXI+ID4mIG5vdGlmaWVy
cykKIHsKICAgICBWZWN0b3I8UmVmUHRyPEdlb05vdGlmaWVyPiA+Ojpjb25zdF9pdGVyYXRvciBl
bmQgPSBub3RpZmllcnMuZW5kKCk7CiAgICAgZm9yIChWZWN0b3I8UmVmUHRyPEdlb05vdGlmaWVy
PiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG5vdGlmaWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKICAgICAgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9ICppdDsKLSAgICAg
ICAgbm90aWZpZXItPnN0YXJ0VGltZXIoKTsKKyAgICAgICAgbm90aWZpZXItPm1fdGltZXIuc3Rv
cCgpOwogICAgIH0KIH0KIAotdm9pZCBHZW9sb2NhdGlvbjo6c3RhcnRUaW1lcnNGb3JPbmVTaG90
cygpCit2b2lkIEdlb2xvY2F0aW9uOjpzdG9wVGltZXJzRm9yT25lU2hvdHMoKQogewogICAgIFZl
Y3RvcjxSZWZQdHI8R2VvTm90aWZpZXI+ID4gY29weTsKICAgICBjb3B5VG9WZWN0b3IobV9vbmVT
aG90cywgY29weSk7CiAgICAgCi0gICAgc3RhcnRUaW1lcihjb3B5KTsKKyAgICBzdG9wVGltZXIo
Y29weSk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb246OnN0YXJ0VGltZXJzRm9yV2F0Y2hlcnMoKQor
dm9pZCBHZW9sb2NhdGlvbjo6c3RvcFRpbWVyc0ZvcldhdGNoZXJzKCkKIHsKICAgICBWZWN0b3I8
UmVmUHRyPEdlb05vdGlmaWVyPiA+IGNvcHk7CiAgICAgY29weVZhbHVlc1RvVmVjdG9yKG1fd2F0
Y2hlcnMsIGNvcHkpOwogICAgIAotICAgIHN0YXJ0VGltZXIoY29weSk7CisgICAgc3RvcFRpbWVy
KGNvcHkpOwogfQogCi12b2lkIEdlb2xvY2F0aW9uOjpzdGFydFRpbWVycygpCit2b2lkIEdlb2xv
Y2F0aW9uOjpzdG9wVGltZXJzKCkKIHsKLSAgICBzdGFydFRpbWVyc0Zvck9uZVNob3RzKCk7Ci0g
ICAgc3RhcnRUaW1lcnNGb3JXYXRjaGVycygpOworICAgIHN0b3BUaW1lcnNGb3JPbmVTaG90cygp
OworICAgIHN0b3BUaW1lcnNGb3JXYXRjaGVycygpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uOjpo
YW5kbGVFcnJvcihQb3NpdGlvbkVycm9yKiBlcnJvcikKQEAgLTI3Niw2ICsyOTQsOSBAQCB2b2lk
IEdlb2xvY2F0aW9uOjpnZW9sb2NhdGlvblNlcnZpY2VQb3NpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChzZXJ2aWNlLCBzZXJ2aWNlID09IG1fc2VydmljZSk7CiAgICAgQVNTRVJUKG1fc2VydmljZS0+
bGFzdFBvc2l0aW9uKCkpOworCisgICAgLy8gU3RvcCBhbGwgY3VycmVudGx5IHJ1bm5pbmcgdGlt
ZXJzLgorICAgIHN0b3BUaW1lcnMoKTsKICAgICAKICAgICBpZiAoIWlzQWxsb3dlZCgpKSB7CiAg
ICAgICAgIC8vIHJlcXVlc3RQZXJtaXNzaW9uKCkgd2lsbCBhc2sgdGhlIGNocm9tZSBmb3IgcGVy
bWlzc2lvbi4gVGhpcyBtYXkgYmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCShyZXZpc2lvbiA0ODE2NykK
KysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03MywxOCAr
NzMsMjAgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIEdlb05vdGlmaWVyIDogcHVibGljIFJlZkNv
dW50ZWQ8R2VvTm90aWZpZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEdlb05vdGlmaWVyPiBjcmVhdGUoUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3Np
dGlvbkNhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25F
cnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gb3B0aW9ucykgeyByZXR1
cm4gYWRvcHRSZWYobmV3IEdlb05vdGlmaWVyKHBvc2l0aW9uQ2FsbGJhY2ssIHBvc2l0aW9uRXJy
b3JDYWxsYmFjaywgb3B0aW9ucykpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlb05v
dGlmaWVyPiBjcmVhdGUoR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uLCBQYXNzUmVmUHRyPFBvc2l0
aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNh
bGxiYWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25z
PiBvcHRpb25zKSB7IHJldHVybiBhZG9wdFJlZihuZXcgR2VvTm90aWZpZXIoZ2VvbG9jYXRpb24s
IHBvc2l0aW9uQ2FsbGJhY2ssIHBvc2l0aW9uRXJyb3JDYWxsYmFjaywgb3B0aW9ucykpOyB9CiAg
ICAgICAgIAotICAgICAgICB2b2lkIHN0YXJ0VGltZXIoKTsKKyAgICAgICAgYm9vbCBoYXNaZXJv
VGltZW91dCgpIGNvbnN0OworICAgICAgICB2b2lkIHN0YXJ0VGltZXJJZk5lZWRlZCgpOwogICAg
ICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8R2VvTm90aWZpZXI+Kik7CiAgICAgICAgIAorICAg
ICAgICBHZW9sb2NhdGlvbiogbV9nZW9sb2NhdGlvbjsKICAgICAgICAgUmVmUHRyPFBvc2l0aW9u
Q2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwogICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJv
ckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7CiAgICAgICAgIFJlZlB0cjxQb3NpdGlvbk9wdGlv
bnM+IG1fb3B0aW9uczsKICAgICAgICAgVGltZXI8R2VvTm90aWZpZXI+IG1fdGltZXI7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBHZW9Ob3RpZmllcihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRp
b25PcHRpb25zPik7CisgICAgICAgIEdlb05vdGlmaWVyKEdlb2xvY2F0aW9uKiwgUGFzc1JlZlB0
cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4pOwogICAgIH07CiAKICAgICBib29sIGhhc0xpc3Rl
bmVycygpIGNvbnN0IHsgcmV0dXJuICFtX29uZVNob3RzLmlzRW1wdHkoKSB8fCAhbV93YXRjaGVy
cy5pc0VtcHR5KCk7IH0KQEAgLTk3LDEwICs5OSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Vu
ZFBvc2l0aW9uVG9PbmVTaG90cyhHZW9wb3NpdGlvbiopOwogICAgIHZvaWQgc2VuZFBvc2l0aW9u
VG9XYXRjaGVycyhHZW9wb3NpdGlvbiopOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHN0YXJ0VGlt
ZXIoVmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4gPiYpOwotICAgIHZvaWQgc3RhcnRUaW1lcnNG
b3JPbmVTaG90cygpOwotICAgIHZvaWQgc3RhcnRUaW1lcnNGb3JXYXRjaGVycygpOwotICAgIHZv
aWQgc3RhcnRUaW1lcnMoKTsKKyAgICBzdGF0aWMgdm9pZCBzdG9wVGltZXIoVmVjdG9yPFJlZlB0
cjxHZW9Ob3RpZmllcj4gPiYpOworICAgIHZvaWQgc3RvcFRpbWVyc0Zvck9uZVNob3RzKCk7Cisg
ICAgdm9pZCBzdG9wVGltZXJzRm9yV2F0Y2hlcnMoKTsKKyAgICB2b2lkIHN0b3BUaW1lcnMoKTsK
ICAgICAKICAgICB2b2lkIG1ha2VTdWNjZXNzQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCBoYW5kbGVF
cnJvcihQb3NpdGlvbkVycm9yKik7CkBAIC0xMTEsNiArMTEzLDggQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9u
U2VydmljZSopOwogICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3Vy
cmVkKEdlb2xvY2F0aW9uU2VydmljZSopOwogCisgICAgdm9pZCByZXF1ZXN0VGltZWRPdXQoR2Vv
Tm90aWZpZXIqKTsKKwogICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8R2VvTm90aWZpZXI+ID4g
R2VvTm90aWZpZXJTZXQ7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPEdlb05vdGlm
aWVyPiA+IEdlb05vdGlmaWVyTWFwOwogICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDgyMDQpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAor
MjAwOS0wOS0wOSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29ycmVjdGx5IGFwcGxp
ZXMgdGhlIEdlb2xvY2F0aW9uIHRpbWVvdXQgcHJvcGVydHkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzI1NgorCisgICAgICAgICogZmFzdC9kb20v
R2VvbG9jYXRpb24vcmVzb3VyY2VzL3RpbWVvdXQuanM6IEFkZGVkLiBUZXN0cyB0aGF0IHdoZW4g
YSBub24temVybyB0aW1lb3V0IGlzIHVzZWQsIHRoZSBzdWNjZXNzIGNhbGxiYWNrIGlzIGludm9r
ZWQgYXMgZXhwZWN0ZWQuCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vdGltZW91dC5o
dG1sOiBBZGRlZC4gV3JhcHBlciBmb3IgYWJvdmUgdGVzdC4KKyAgICAgICAgKiBmYXN0L2RvbS9H
ZW9sb2NhdGlvbi90aW1lb3V0LWV4cGVjdGVkLnR4dDogQWRkZWQuIEV4cGVjdGVkIHJlc3VsdCBm
b3IgYWJvdmUgdGVzdC4KKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMv
dGltZW91dC16ZXJvLmpzOiBBZGRlZC4gVGVzdHMgdGhhdCB3aGVuIGEgemVybyB0aW1lb3V0IGlz
IHVzZWQsIHRoZSBlcnJvciBjYWxsYmFjayBpcyBpbnZva2VkIHdpdGggY29kZSBUSU1FT1VULgor
ICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3RpbWVvdXQtemVyby5odG1sOiBBZGRlZC4g
V3JhcHBlciBmb3IgYWJvdmUgdGVzdC4KKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi90
aW1lb3V0LXplcm8tZXhwZWN0ZWQudHh0OiBBZGRlZC4gRXhwZWN0ZWQgcmVzdWx0IGZvciBhYm92
ZSB0ZXN0LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOiBNb2RpZmllZC4gU2tpcHMg
dGhlIGFib3ZlIHRlc3RzLgorCiAyMDA5LTA5LTA4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi90aW1lb3V0LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi90aW1lb3V0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L3RpbWVvdXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitUZXN0
cyB0aGF0IHdoZW4gdGltZW91dCBpcyBub24temVybywgdGhlIHN1Y2Nlc3MgY2FsbGJhY2sgaXMg
Y2FsbGVkIGFzIGV4cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUgaXMgbW9ja0xhdGl0dWRlCitQQVNTIHBvc2l0aW9u
LmNvb3Jkcy5sb25naXR1ZGUgaXMgbW9ja0xvbmdpdHVkZQorUEFTUyBwb3NpdGlvbi5jb29yZHMu
YWNjdXJhY3kgaXMgbW9ja0FjY3VyYWN5CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vdGltZW91dC16ZXJvLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi90aW1lb3V0LXplcm8t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vdGltZW91dC16ZXJvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB3aGVuIHRpbWVvdXQgaXMgemVybyAoYW5kIG1heGltdW1BZ2UgaXMg
dG9vKSwgdGhlIGVycm9yIGNhbGxiYWNrIGlzIGNhbGxlZCBpbW1lZGlhdGVseSB3aXRoIGNvZGUg
VElNRU9VVC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZXJyb3IuY29k
ZSBpcyBlcnJvci5USU1FT1VUCitQQVNTIGVycm9yLm1lc3NhZ2UgaXMgIlRpbWVvdXQgZXhwaXJl
ZCIKK1BBU1MgZXJyb3IuVU5LTk9XTl9FUlJPUiBpcyAwCitQQVNTIGVycm9yLlBFUk1JU1NJT05f
REVOSUVEIGlzIDEKK1BBU1MgZXJyb3IuUE9TSVRJT05fVU5BVkFJTEFCTEUgaXMgMgorUEFTUyBl
cnJvci5USU1FT1VUIGlzIDMKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi90aW1lb3V0LXplcm8uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi90aW1lb3V0LXplcm8uaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3RpbWVvdXQtemVyby5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RpbWVvdXQtemVyby5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi90aW1lb3V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vdGltZW91dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vdGltZW91dC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rp
bWVvdXQuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL3RpbWVvdXQtemVyby5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvdGltZW91dC16
ZXJvLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
cmVzb3VyY2VzL3RpbWVvdXQtemVyby5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAor
ZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2hlbiB0aW1lb3V0IGlzIHplcm8gKGFuZCBtYXhpbXVt
QWdlIGlzIHRvbyksIHRoZSBlcnJvciBjYWxsYmFjayBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgd2l0
aCBjb2RlIFRJTUVPVVQuIik7CisKK2xheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAuMCk7CisKK3ZhciBlcnJvcjsKK25hdmln
YXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgeworICAgIHRl
c3RGYWlsZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfSwgZnVuY3Rpb24oZSkg
eworICAgIGVycm9yID0gZQorICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlRJTUVP
VVQnKTsKKyAgICBzaG91bGRCZSgnZXJyb3IubWVzc2FnZScsICciVGltZW91dCBleHBpcmVkIicp
OworICAgIHNob3VsZEJlKCdlcnJvci5VTktOT1dOX0VSUk9SJywgJzAnKTsKKyAgICBzaG91bGRC
ZSgnZXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQnLCAnMScpOworICAgIHNob3VsZEJlKCdlcnJvci5Q
T1NJVElPTl9VTkFWQUlMQUJMRScsICcyJyk7CisgICAgc2hvdWxkQmUoJ2Vycm9yLlRJTUVPVVQn
LCAnMycpOworICAgIGRlYnVnKCc8YnIgLz48c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01QTEVU
RTwvc3Bhbj4nKTsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworfSwgeworICAgIHRpbWVvdXQ6IDAKK30pOword2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L3Jlc291cmNlcy90aW1lb3V0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3Jlc291cmNlcy90aW1lb3V0LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL3RpbWVvdXQuanMJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjYgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdoZW4gdGltZW91
dCBpcyBub24temVybywgdGhlIHN1Y2Nlc3MgY2FsbGJhY2sgaXMgY2FsbGVkIGFzIGV4cGVjdGVk
LiIpOworCit2YXIgbW9ja0xhdGl0dWRlID0gNTEuNDc4OwordmFyIG1vY2tMb25naXR1ZGUgPSAt
MC4xNjY7Cit2YXIgbW9ja0FjY3VyYWN5ID0gMTAwLjA7CisKK3dpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Cit3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obW9ja0xhdGl0dWRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tM
b25naXR1ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9ja0FjY3VyYWN5KTsKKwordmFyIHBvc2l0aW9uOworbmF2aWdhdG9yLmdlb2xv
Y2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CisgICAgcG9zaXRpb24gPSBw
OworICAgIHNob3VsZEJlKCdwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUnLCAnbW9ja0xhdGl0dWRl
Jyk7CisgICAgc2hvdWxkQmUoJ3Bvc2l0aW9uLmNvb3Jkcy5sb25naXR1ZGUnLCAnbW9ja0xvbmdp
dHVkZScpOworICAgIHNob3VsZEJlKCdwb3NpdGlvbi5jb29yZHMuYWNjdXJhY3knLCAnbW9ja0Fj
Y3VyYWN5Jyk7CisgICAgZGVidWcoJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBM
RVRFPC9zcGFuPicpOworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7Cit9LCBmdW5jdGlvbihlKSB7CisgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52
b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfSwgeworICAgIHRpbWVvdXQ6IDEwMDAKK30pOword2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkCShyZXZpc2lvbiA0ODE2NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVk
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTcyLDYgKzE1NzIsOCBAQCBmYXN0L2RvbS9mcmFtZS1sb2Fk
aW5nLXZpYS1kb2N1bWVudC13cml0CiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci5odG1sCiBm
YXN0L2RvbS9HZW9sb2NhdGlvbi9wZXJtaXNzaW9uLWRlbmllZC5odG1sCiBmYXN0L2RvbS9HZW9s
b2NhdGlvbi9zdWNjZXNzLmh0bWwKK2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3RpbWVvdXQtemVyby5o
dG1sCitmYXN0L2RvbS9HZW9sb2NhdGlvbi90aW1lb3V0Lmh0bWwKIGZhc3QvZG9tL2dldEJvdW5k
aW5nQ2xpZW50UmVjdC5odG1sCiBmYXN0L2RvbS9udWxsLWRvY3VtZW50LWxvY2F0aW9uLXB1dC1j
cmFzaC5odG1sCiBmYXN0L2RvbS9udWxsLWRvY3VtZW50LWxvY2F0aW9uLXJlcGxhY2UtY3Jhc2gu
aHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39294</attachid>
            <date>2009-09-09 12:45:06 -0700</date>
            <delta_ts>2009-09-09 22:25:30 -0700</delta_ts>
            <desc>Patch 4 for bug 27256</desc>
            <filename>applyTimeoutCorrectly4.txt</filename>
            <type>text/plain</type>
            <size>18729</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODIxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDktMDktMDkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvcnJlY3RseSBhcHBsaWVzIHRoZSBHZW9sb2NhdGlvbiB0aW1lb3V0IHByb3BlcnR5LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcyNTYKKworICAg
ICAgICBJZiBhIHRpbWVvdXQgaXMgc3BlY2lmaWVkLCB0aGUgdGltZXIgaXMgc3RhcnRlZCBhcyBz
b29uIGFzIHRoZSBsb2NhdGlvbiBhY3F1aXN0aW9uIHByb2Nlc3Mgc3RhcnRzLgorICAgICAgICBJ
ZiBhIHBvc2l0aW9uIGZpeCBpcyBub3Qgb2J0YWluZWQgd2l0aGluIHRoZSB0aW1lb3V0IGludGVy
dmFsLCB0aGUgcG9zaXRpb24gcmVxdWVzdCBpcyBjYW5jZWxsZWQKKyAgICAgICAgYW5kIHRoZSBl
cnJvciBjYWxsYmFjayAoaWYgc3BlY2lmaWVkKSBpcyBpbnZva2VkLiBJZiBhIHBvc2l0aW9uIGZp
eCBpcyBvYnRhaW5lZCB3aXRoaW4gdGhlIHRpbWVvdXQKKyAgICAgICAgaW50ZXJ2YWwsIHRoZSB0
aW1lciBpcyBzdG9wcGVkLiBQZXJtaXNzaW9ucyBhcmUgdGhlbiByZXF1ZXN0ZWQgZnJvbSB0aGUg
dXNlciBpZiByZXF1aXJlZC4gU2VlCisgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL2dlb2xv
Y2F0aW9uLUFQSS8jcG9zaXRpb24tb3B0aW9ucy4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBs
b2dpYyBtZWFucyB0aGF0IHRoZSB0aW1lIHJlcXVpcmVkIHRvIG9idGFpbiBwZXJtaXNzaW9ucyBm
cm9tIHRoZSB1c2VyIGlzIG5vdAorICAgICAgICBpbmNsdWRlZCBpbiB0aGUgdGltZW91dCBpbnRl
cnZhbC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vR2VvbG9jYXRpb24vdGltZW91dC5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9HZW9sb2NhdGlvbi90aW1lb3V0LXplcm8uaHRtbAor
CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbi5jcHA6IE1vZGlmaWVkLgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcik6IE1vZGlmaWVkLiBU
YWtlcyBHZW9sb2NhdGlvbiBvYmplY3QgYXMgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6
R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpoYXNaZXJvVGltZW91dCk6IEFkZGVkLiBEZXRlcm1p
bmVzIHdoZXRoZXIgdGhpcyByZXF1ZXN0IGhhcyBhIHplcm8gdGltZW91dC4KKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6c3RhcnRUaW1lcklmTmVlZGVkKTogUmVu
YW1lZCBmcm9tIHN0YXJ0VGltZXIuIFN0YXJ0cyB0aGUgdGltZXIgaWYgYSB0aW1lb3V0IHdhcyBz
cGVjaWZpZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnRp
bWVyRmlyZWQpOiBNb2RpZmllZC4gQ2FsbHMgdGhlIGVycm9yIGNhbGxiYWNrIGlmIHNwZWNpZmll
ZCwgYW5kIHJlcG9ydHMgdGhlIHRpbWVvdXQgdG8gdGhlIEdlb2xvY2F0aW9uIG9iamVjdC4KKyAg
ICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24pOiBNb2RpZmll
ZC4gQ2FsbHMgbWF5YmVTdGFydFRpbWVyIHdoZW4gc3RhcnRpbmcgdGhlIGxvY2F0aW9uIGFjcXVp
c2l0aW9uIHByb2Nlc3MuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3Np
dGlvbik6IE1vZGlmaWVkLiBDYWxscyBtYXliZVN0YXJ0VGltZXIgd2hlbiBzdGFydGluZyB0aGUg
bG9jYXRpb24gYWNxdWlzaXRpb24gcHJvY2Vzcy4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uOjpyZXF1ZXN0VGltZWRPdXQpOiBBZGRlZC4gQ2FuY2VscyBhIHJlcXVlc3Qgd2hlbiBpdCB0
aW1lcyBvdXQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKTog
TW9kaWZpZWQuIE5vIGxvbmdlciBzdGFydHMgdGltZXJzLgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb246OnNlbmRQb3NpdGlvbik6IE1vZGlmaWVkLiBObyBsb25nZXIgc3RvcHMgdGltZXJz
LgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0b3BUaW1lcik6IEFkZGVkLiBTdG9w
cyB0aGUgdGltZXJzIGZvciBhIHZlY3RvciBvZiBub3RpZmllcnMuCisgICAgICAgIChXZWJDb3Jl
OjpHZW9sb2NhdGlvbjo6c3RvcFRpbWVyc0Zvck9uZVNob3RzKTogQWRkZWQuIFN0b3BzIHRoZSB0
aW1lcnMgZm9yIGFsbCBvbmUtc2hvdHMuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6
c3RvcFRpbWVyc0ZvcldhdGNoZXJzKTogQWRkZWQuIFN0b3BzIHRoZSB0aW1lcnMgZm9yIGFsbCB3
YXRjaGVycy4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9wVGltZXJzKTogQWRk
ZWQuIFN0b3BzIHRoZSB0aW1lcnMgZm9yIGFsbCByZXF1ZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uOjpnZW9sb2NhdGlvblNlcnZpY2VQb3NpdGlvbkNoYW5nZWQpOiBNb2RmaWZp
ZWQuIFN0b3BzIHRoZSB0aW1lcnMgZm9yIGFsbCByZXF1ZXN0cy4KKyAgICAgICAgKiBwYWdlL0dl
b2xvY2F0aW9uLmg6IE1vZGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdl
b05vdGlmaWVyOjpjcmVhdGUpOiBNb2RpZmllZC4gVGFrZXMgR2VvbG9jYXRpb24gb2JqZWN0IGFz
IHBhcmFtZXRlci4KKwogMjAwOS0wOS0wOCAgS2V2aW4gV2F0dGVycyAgPGtldmlud2F0dGVyc0Bn
bWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9H
ZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDQ4MjA5KQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2VvTm90aWZpZXIoUGFzc1JlZlB0
cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25F
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4g
b3B0aW9ucykKLSAgICA6IG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKK0dlb2xv
Y2F0aW9uOjpHZW9Ob3RpZmllcjo6R2VvTm90aWZpZXIoR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9u
LCBQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRp
b25PcHRpb25zPiBvcHRpb25zKQorICAgIDogbV9nZW9sb2NhdGlvbihnZW9sb2NhdGlvbikKKyAg
ICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKICAgICAsIG1fZXJyb3JDYWxs
YmFjayhlcnJvckNhbGxiYWNrKQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiAgICAgLCBtX3Rp
bWVyKHRoaXMsICZHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnRpbWVyRmlyZWQpCkBAIC00Nywy
MCArNDgsMjYgQEAgR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcihQYQogICAg
IEFTU0VSVChtX29wdGlvbnMpOwogfQogCi12b2lkIEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6
c3RhcnRUaW1lcigpCitib29sIEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6aGFzWmVyb1RpbWVv
dXQoKSBjb25zdAogewotICAgIGlmIChtX2Vycm9yQ2FsbGJhY2sgJiYgbV9vcHRpb25zLT5oYXNU
aW1lb3V0KCkpCisgICAgcmV0dXJuIG1fb3B0aW9ucy0+aGFzVGltZW91dCgpICYmIG1fb3B0aW9u
cy0+dGltZW91dCgpID09IDA7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpz
dGFydFRpbWVySWZOZWVkZWQoKQoreworICAgIGlmIChtX29wdGlvbnMtPmhhc1RpbWVvdXQoKSkK
ICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QobV9vcHRpb25zLT50aW1lb3V0KCkgLyAxMDAw
LjApOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6dGltZXJGaXJlZChUaW1l
cjxHZW9Ob3RpZmllcj4qKQogewotICAgIEFTU0VSVChtX2Vycm9yQ2FsbGJhY2spOwotICAgIAog
ICAgIG1fdGltZXIuc3RvcCgpOwogCi0gICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0g
UG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlRJTUVPVVQsICJUaW1lZCBvdXQi
KTsKLSAgICBtX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsKKyAgICBp
ZiAobV9lcnJvckNhbGxiYWNrKSB7CisgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJv
ciA9IFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpUSU1FT1VULCAiVGltZW91
dCBleHBpcmVkIik7CisgICAgICAgIG1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3Iu
Z2V0KCkpOworICAgIH0KKyAgICBtX2dlb2xvY2F0aW9uLT5yZXF1ZXN0VGltZWRPdXQodGhpcyk7
CiB9CiAKIEdlb2xvY2F0aW9uOjpHZW9sb2NhdGlvbihGcmFtZSogZnJhbWUpCkBAIC04NSw5ICs5
MiwxMSBAQCB2b2lkIEdlb2xvY2F0aW9uOjpkaXNjb25uZWN0RnJhbWUoKQogCiB2b2lkIEdlb2xv
Y2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gb3B0aW9ucykKIHsKLSAgICBSZWZQ
dHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZShzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2ssIG9wdGlvbnMpOworICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4g
bm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaywgb3B0aW9ucyk7CiAKLSAgICBpZiAoIW1fc2VydmljZS0+c3RhcnRVcGRhdGlu
Zyhub3RpZmllci0+bV9vcHRpb25zLmdldCgpKSkgeworICAgIGlmIChub3RpZmllci0+aGFzWmVy
b1RpbWVvdXQoKSB8fCBtX3NlcnZpY2UtPnN0YXJ0VXBkYXRpbmcobm90aWZpZXItPm1fb3B0aW9u
cy5nZXQoKSkpCisgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKKyAgICBl
bHNlIHsKICAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2spIHsKICAgICAgICAg
ICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQ
b3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgIlVuYWJsZSB0byBTdGFydCIpOwogICAg
ICAgICAgICAgbm90aWZpZXItPm1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0
KCkpOwpAQCAtMTAwLDkgKzEwOSwxMSBAQCB2b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9z
aXRpb24oUGFzCiAKIGludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihQYXNzUmVmUHRyPFBv
c2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRp
b25zKQogewotICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6
Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgb3B0aW9ucyk7CisgICAgUmVm
UHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUodGhpcywgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25zKTsKIAotICAgIGlmICghbV9zZXJ2
aWNlLT5zdGFydFVwZGF0aW5nKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkpKSB7CisgICAgaWYg
KG5vdGlmaWVyLT5oYXNaZXJvVGltZW91dCgpIHx8IG1fc2VydmljZS0+c3RhcnRVcGRhdGluZyhu
b3RpZmllci0+bV9vcHRpb25zLmdldCgpKSkKKyAgICAgICAgbm90aWZpZXItPnN0YXJ0VGltZXJJ
Zk5lZWRlZCgpOworICAgIGVsc2UgewogICAgICAgICBpZiAobm90aWZpZXItPm1fZXJyb3JDYWxs
YmFjaykgewogICAgICAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gUG9zaXRp
b25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCAiVW5hYmxl
IHRvIFN0YXJ0Iik7CiAgICAgICAgICAgICBub3RpZmllci0+bV9lcnJvckNhbGxiYWNrLT5oYW5k
bGVFdmVudChlcnJvci5nZXQoKSk7CkBAIC0xMTcsNiArMTI4LDE1IEBAIGludCBHZW9sb2NhdGlv
bjo6d2F0Y2hQb3NpdGlvbihQYXNzUmVmUHQKICAgICByZXR1cm4gc0lkZW50aWZpZXI7CiB9CiAK
K3ZvaWQgR2VvbG9jYXRpb246OnJlcXVlc3RUaW1lZE91dChHZW9Ob3RpZmllciogbm90aWZpZXIp
Cit7CisgICAgLy8gSWYgdGhpcyBpcyBhIG9uZS1zaG90IHJlcXVlc3QsIHN0b3AgaXQuCisgICAg
bV9vbmVTaG90cy5yZW1vdmUobm90aWZpZXIpOworCisgICAgaWYgKCFoYXNMaXN0ZW5lcnMoKSkK
KyAgICAgICAgbV9zZXJ2aWNlLT5zdG9wVXBkYXRpbmcoKTsKK30KKwogdm9pZCBHZW9sb2NhdGlv
bjo6Y2xlYXJXYXRjaChpbnQgd2F0Y2hJZCkKIHsKICAgICBtX3dhdGNoZXJzLnJlbW92ZSh3YXRj
aElkKTsKQEAgLTE0MSwxMCArMTYxLDkgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2Vk
KGJvb2wgYWxsbwogewogICAgIG1fYWxsb3dHZW9sb2NhdGlvbiA9IGFsbG93ZWQgPyBZZXMgOiBO
bzsKICAgICAKLSAgICBpZiAoaXNBbGxvd2VkKCkpIHsKLSAgICAgICAgc3RhcnRUaW1lcnMoKTsK
KyAgICBpZiAoaXNBbGxvd2VkKCkpCiAgICAgICAgIG1ha2VTdWNjZXNzQ2FsbGJhY2tzKCk7Ci0g
ICAgfSBlbHNlIHsKKyAgICBlbHNlIHsKICAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVy
cm9yID0gUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVO
SUVELCAiVXNlciBkaXNhbGxvd2VkIEdlb2xvY2F0aW9uIik7CiAgICAgICAgIGVycm9yLT5zZXRJ
c0ZhdGFsKHRydWUpOwogICAgICAgICBoYW5kbGVFcnJvcihlcnJvci5nZXQoKSk7CkBAIC0xODUs
NyArMjA0LDYgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c2VuZFBvc2l0aW9uKFZlY3RvcjxSZQogICAg
ICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKml0OwogICAgICAgICBBU1NFUlQo
bm90aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNrKTsKICAgICAgICAgCi0gICAgICAgIG5vdGlmaWVy
LT5tX3RpbWVyLnN0b3AoKTsKICAgICAgICAgYm9vbCBzaG91bGRDYWxsRXJyb3JDYWxsYmFjayA9
IGZhbHNlOwogICAgICAgICBub3RpZmllci0+bV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50
KHBvc2l0aW9uLCBzaG91bGRDYWxsRXJyb3JDYWxsYmFjayk7CiAgICAgICAgIGlmIChzaG91bGRD
YWxsRXJyb3JDYWxsYmFjaykgewpAQCAtMjExLDM1ICsyMjksMzUgQEAgdm9pZCBHZW9sb2NhdGlv
bjo6c2VuZFBvc2l0aW9uVG9XYXRjaGVycwogICAgIHNlbmRQb3NpdGlvbihjb3B5LCBwb3NpdGlv
bik7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb246OnN0YXJ0VGltZXIoVmVjdG9yPFJlZlB0cjxHZW9O
b3RpZmllcj4gPiYgbm90aWZpZXJzKQordm9pZCBHZW9sb2NhdGlvbjo6c3RvcFRpbWVyKFZlY3Rv
cjxSZWZQdHI8R2VvTm90aWZpZXI+ID4mIG5vdGlmaWVycykKIHsKICAgICBWZWN0b3I8UmVmUHRy
PEdlb05vdGlmaWVyPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBub3RpZmllcnMuZW5kKCk7CiAg
ICAgZm9yIChWZWN0b3I8UmVmUHRyPEdlb05vdGlmaWVyPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG5vdGlmaWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgUmVmUHRyPEdl
b05vdGlmaWVyPiBub3RpZmllciA9ICppdDsKLSAgICAgICAgbm90aWZpZXItPnN0YXJ0VGltZXIo
KTsKKyAgICAgICAgbm90aWZpZXItPm1fdGltZXIuc3RvcCgpOwogICAgIH0KIH0KIAotdm9pZCBH
ZW9sb2NhdGlvbjo6c3RhcnRUaW1lcnNGb3JPbmVTaG90cygpCit2b2lkIEdlb2xvY2F0aW9uOjpz
dG9wVGltZXJzRm9yT25lU2hvdHMoKQogewogICAgIFZlY3RvcjxSZWZQdHI8R2VvTm90aWZpZXI+
ID4gY29weTsKICAgICBjb3B5VG9WZWN0b3IobV9vbmVTaG90cywgY29weSk7CiAgICAgCi0gICAg
c3RhcnRUaW1lcihjb3B5KTsKKyAgICBzdG9wVGltZXIoY29weSk7CiB9CiAKLXZvaWQgR2VvbG9j
YXRpb246OnN0YXJ0VGltZXJzRm9yV2F0Y2hlcnMoKQordm9pZCBHZW9sb2NhdGlvbjo6c3RvcFRp
bWVyc0ZvcldhdGNoZXJzKCkKIHsKICAgICBWZWN0b3I8UmVmUHRyPEdlb05vdGlmaWVyPiA+IGNv
cHk7CiAgICAgY29weVZhbHVlc1RvVmVjdG9yKG1fd2F0Y2hlcnMsIGNvcHkpOwogICAgIAotICAg
IHN0YXJ0VGltZXIoY29weSk7CisgICAgc3RvcFRpbWVyKGNvcHkpOwogfQogCi12b2lkIEdlb2xv
Y2F0aW9uOjpzdGFydFRpbWVycygpCit2b2lkIEdlb2xvY2F0aW9uOjpzdG9wVGltZXJzKCkKIHsK
LSAgICBzdGFydFRpbWVyc0Zvck9uZVNob3RzKCk7Ci0gICAgc3RhcnRUaW1lcnNGb3JXYXRjaGVy
cygpOworICAgIHN0b3BUaW1lcnNGb3JPbmVTaG90cygpOworICAgIHN0b3BUaW1lcnNGb3JXYXRj
aGVycygpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uOjpoYW5kbGVFcnJvcihQb3NpdGlvbkVycm9y
KiBlcnJvcikKQEAgLTI3OSw2ICsyOTcsOSBAQCB2b2lkIEdlb2xvY2F0aW9uOjpnZW9sb2NhdGlv
blNlcnZpY2VQb3NpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXJ2aWNlLCBzZXJ2aWNlID09IG1f
c2VydmljZSk7CiAgICAgQVNTRVJUKG1fc2VydmljZS0+bGFzdFBvc2l0aW9uKCkpOworCisgICAg
Ly8gU3RvcCBhbGwgY3VycmVudGx5IHJ1bm5pbmcgdGltZXJzLgorICAgIHN0b3BUaW1lcnMoKTsK
ICAgICAKICAgICBpZiAoIWlzQWxsb3dlZCgpKSB7CiAgICAgICAgIC8vIHJlcXVlc3RQZXJtaXNz
aW9uKCkgd2lsbCBhc2sgdGhlIGNocm9tZSBmb3IgcGVybWlzc2lvbi4gVGhpcyBtYXkgYmUKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9HZW9sb2NhdGlvbi5oCShyZXZpc2lvbiA0ODIwOSkKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2Nh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03MywxOCArNzMsMjAgQEAgcHJpdmF0ZToKIAogICAg
IGNsYXNzIEdlb05vdGlmaWVyIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvTm90aWZpZXI+IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlb05vdGlmaWVyPiBjcmVhdGUo
UGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxiYWNrLCBQYXNzUmVmUHRy
PFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRy
PFBvc2l0aW9uT3B0aW9ucz4gb3B0aW9ucykgeyByZXR1cm4gYWRvcHRSZWYobmV3IEdlb05vdGlm
aWVyKHBvc2l0aW9uQ2FsbGJhY2ssIHBvc2l0aW9uRXJyb3JDYWxsYmFjaywgb3B0aW9ucykpOyB9
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlb05vdGlmaWVyPiBjcmVhdGUoR2VvbG9jYXRp
b24qIGdlb2xvY2F0aW9uLCBQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRpb25zKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgR2VvTm90aWZpZXIoZ2VvbG9jYXRpb24sIHBvc2l0aW9uQ2FsbGJhY2ssIHBvc2l0
aW9uRXJyb3JDYWxsYmFjaywgb3B0aW9ucykpOyB9CiAgICAgICAgIAotICAgICAgICB2b2lkIHN0
YXJ0VGltZXIoKTsKKyAgICAgICAgYm9vbCBoYXNaZXJvVGltZW91dCgpIGNvbnN0OworICAgICAg
ICB2b2lkIHN0YXJ0VGltZXJJZk5lZWRlZCgpOwogICAgICAgICB2b2lkIHRpbWVyRmlyZWQoVGlt
ZXI8R2VvTm90aWZpZXI+Kik7CiAgICAgICAgIAorICAgICAgICBHZW9sb2NhdGlvbiogbV9nZW9s
b2NhdGlvbjsKICAgICAgICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxi
YWNrOwogICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJh
Y2s7CiAgICAgICAgIFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IG1fb3B0aW9uczsKICAgICAgICAg
VGltZXI8R2VvTm90aWZpZXI+IG1fdGltZXI7CiAKICAgICBwcml2YXRlOgotICAgICAgICBHZW9O
b3RpZmllcihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9u
RXJyb3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPik7CisgICAgICAgIEdl
b05vdGlmaWVyKEdlb2xvY2F0aW9uKiwgUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9u
cz4pOwogICAgIH07CiAKICAgICBib29sIGhhc0xpc3RlbmVycygpIGNvbnN0IHsgcmV0dXJuICFt
X29uZVNob3RzLmlzRW1wdHkoKSB8fCAhbV93YXRjaGVycy5pc0VtcHR5KCk7IH0KQEAgLTk3LDEw
ICs5OSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFBvc2l0aW9uVG9PbmVTaG90cyhHZW9w
b3NpdGlvbiopOwogICAgIHZvaWQgc2VuZFBvc2l0aW9uVG9XYXRjaGVycyhHZW9wb3NpdGlvbiop
OwogICAgIAotICAgIHN0YXRpYyB2b2lkIHN0YXJ0VGltZXIoVmVjdG9yPFJlZlB0cjxHZW9Ob3Rp
Zmllcj4gPiYpOwotICAgIHZvaWQgc3RhcnRUaW1lcnNGb3JPbmVTaG90cygpOwotICAgIHZvaWQg
c3RhcnRUaW1lcnNGb3JXYXRjaGVycygpOwotICAgIHZvaWQgc3RhcnRUaW1lcnMoKTsKKyAgICBz
dGF0aWMgdm9pZCBzdG9wVGltZXIoVmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4gPiYpOworICAg
IHZvaWQgc3RvcFRpbWVyc0Zvck9uZVNob3RzKCk7CisgICAgdm9pZCBzdG9wVGltZXJzRm9yV2F0
Y2hlcnMoKTsKKyAgICB2b2lkIHN0b3BUaW1lcnMoKTsKICAgICAKICAgICB2b2lkIG1ha2VTdWNj
ZXNzQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCBoYW5kbGVFcnJvcihQb3NpdGlvbkVycm9yKik7CkBA
IC0xMTEsNiArMTEzLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25T
ZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uU2VydmljZSopOwogICAgIHZpcnR1YWwg
dm9pZCBnZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uU2VydmljZSop
OwogCisgICAgdm9pZCByZXF1ZXN0VGltZWRPdXQoR2VvTm90aWZpZXIqKTsKKwogICAgIHR5cGVk
ZWYgSGFzaFNldDxSZWZQdHI8R2VvTm90aWZpZXI+ID4gR2VvTm90aWZpZXJTZXQ7CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPEdlb05vdGlmaWVyPiA+IEdlb05vdGlmaWVyTWFwOwog
ICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDgyMTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wOS0wOSAgU3RldmUgQmxvY2sg
IDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ29ycmVjdGx5IGFwcGxpZXMgdGhlIEdlb2xvY2F0aW9uIHRpbWVv
dXQgcHJvcGVydHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNzI1NgorCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL3Rp
bWVvdXQuanM6IEFkZGVkLiBUZXN0cyB0aGF0IHdoZW4gYSBub24temVybyB0aW1lb3V0IGlzIHVz
ZWQsIHRoZSBzdWNjZXNzIGNhbGxiYWNrIGlzIGludm9rZWQgYXMgZXhwZWN0ZWQuCisgICAgICAg
ICogZmFzdC9kb20vR2VvbG9jYXRpb24vdGltZW91dC5odG1sOiBBZGRlZC4gV3JhcHBlciBmb3Ig
YWJvdmUgdGVzdC4KKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi90aW1lb3V0LWV4cGVj
dGVkLnR4dDogQWRkZWQuIEV4cGVjdGVkIHJlc3VsdCBmb3IgYWJvdmUgdGVzdC4KKyAgICAgICAg
KiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvdGltZW91dC16ZXJvLmpzOiBBZGRlZC4g
VGVzdHMgdGhhdCB3aGVuIGEgemVybyB0aW1lb3V0IGlzIHVzZWQsIHRoZSBlcnJvciBjYWxsYmFj
ayBpcyBpbnZva2VkIHdpdGggY29kZSBUSU1FT1VULgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xv
Y2F0aW9uL3RpbWVvdXQtemVyby5odG1sOiBBZGRlZC4gV3JhcHBlciBmb3IgYWJvdmUgdGVzdC4K
KyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi90aW1lb3V0LXplcm8tZXhwZWN0ZWQudHh0
OiBBZGRlZC4gRXhwZWN0ZWQgcmVzdWx0IGZvciBhYm92ZSB0ZXN0LgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9Ta2lwcGVkOiBNb2RpZmllZC4gU2tpcHMgdGhlIGFib3ZlIHRlc3RzLgorCiAyMDA5
LTA5LTA5ICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi90aW1lb3V0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi90aW1lb3V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3RpbWVvdXQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitUZXN0cyB0aGF0IHdoZW4gdGltZW91dCBpcyBub24t
emVybywgdGhlIHN1Y2Nlc3MgY2FsbGJhY2sgaXMgY2FsbGVkIGFzIGV4cGVjdGVkLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUg
aXMgbW9ja0xhdGl0dWRlCitQQVNTIHBvc2l0aW9uLmNvb3Jkcy5sb25naXR1ZGUgaXMgbW9ja0xv
bmdpdHVkZQorUEFTUyBwb3NpdGlvbi5jb29yZHMuYWNjdXJhY3kgaXMgbW9ja0FjY3VyYWN5CisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
dGltZW91dC16ZXJvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi90aW1lb3V0LXplcm8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vdGltZW91dC16ZXJvLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB3aGVuIHRpbWVv
dXQgaXMgemVybyAoYW5kIG1heGltdW1BZ2UgaXMgdG9vKSwgdGhlIGVycm9yIGNhbGxiYWNrIGlz
IGNhbGxlZCBpbW1lZGlhdGVseSB3aXRoIGNvZGUgVElNRU9VVC4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgZXJyb3IuY29kZSBpcyBlcnJvci5USU1FT1VUCitQQVNTIGVy
cm9yLm1lc3NhZ2UgaXMgIlRpbWVvdXQgZXhwaXJlZCIKK1BBU1MgZXJyb3IuVU5LTk9XTl9FUlJP
UiBpcyAwCitQQVNTIGVycm9yLlBFUk1JU1NJT05fREVOSUVEIGlzIDEKK1BBU1MgZXJyb3IuUE9T
SVRJT05fVU5BVkFJTEFCTEUgaXMgMgorUEFTUyBlcnJvci5USU1FT1VUIGlzIDMKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi90aW1lb3V0
LXplcm8uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi90aW1lb3V0LXplcm8uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3RpbWVvdXQtemVyby5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEy
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3RpbWVvdXQtemVyby5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi90aW1lb3V0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vdGltZW91dC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vdGltZW91dC5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RpbWVvdXQuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3Vy
Y2VzL3RpbWVvdXQtemVyby5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9yZXNvdXJjZXMvdGltZW91dC16ZXJvLmpzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL3RpbWVvdXQtemVyby5qcwko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2hl
biB0aW1lb3V0IGlzIHplcm8gKGFuZCBtYXhpbXVtQWdlIGlzIHRvbyksIHRoZSBlcnJvciBjYWxs
YmFjayBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgd2l0aCBjb2RlIFRJTUVPVVQuIik7CisKK2xheW91
dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2
LCAxMDAuMCk7CisKK3ZhciBlcnJvcjsKK25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50
UG9zaXRpb24oZnVuY3Rpb24ocCkgeworICAgIHRlc3RGYWlsZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sg
aW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfSwgZnVuY3Rpb24oZSkgeworICAgIGVycm9yID0gZQorICAgIHNob3Vs
ZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlRJTUVPVVQnKTsKKyAgICBzaG91bGRCZSgnZXJyb3Iu
bWVzc2FnZScsICciVGltZW91dCBleHBpcmVkIicpOworICAgIHNob3VsZEJlKCdlcnJvci5VTktO
T1dOX0VSUk9SJywgJzAnKTsKKyAgICBzaG91bGRCZSgnZXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQn
LCAnMScpOworICAgIHNob3VsZEJlKCdlcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRScsICcyJyk7
CisgICAgc2hvdWxkQmUoJ2Vycm9yLlRJTUVPVVQnLCAnMycpOworICAgIGRlYnVnKCc8YnIgLz48
c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01QTEVURTwvc3Bhbj4nKTsKKyAgICB3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfSwgeworICAgIHRpbWVvdXQ6IDAKK30p
Oword2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy90aW1lb3V0LmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy90aW1l
b3V0LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
cmVzb3VyY2VzL3RpbWVvdXQuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKK2Rlc2Ny
aXB0aW9uKCJUZXN0cyB0aGF0IHdoZW4gdGltZW91dCBpcyBub24temVybywgdGhlIHN1Y2Nlc3Mg
Y2FsbGJhY2sgaXMgY2FsbGVkIGFzIGV4cGVjdGVkLiIpOworCit2YXIgbW9ja0xhdGl0dWRlID0g
NTEuNDc4OwordmFyIG1vY2tMb25naXR1ZGUgPSAtMC4xNjY7Cit2YXIgbW9ja0FjY3VyYWN5ID0g
MTAwLjA7CisKK3dpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1p
c3Npb24odHJ1ZSk7Cit3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24obW9ja0xhdGl0dWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tMb25naXR1ZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0FjY3VyYWN5KTsKKwor
dmFyIHBvc2l0aW9uOworbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihm
dW5jdGlvbihwKSB7CisgICAgcG9zaXRpb24gPSBwOworICAgIHNob3VsZEJlKCdwb3NpdGlvbi5j
b29yZHMubGF0aXR1ZGUnLCAnbW9ja0xhdGl0dWRlJyk7CisgICAgc2hvdWxkQmUoJ3Bvc2l0aW9u
LmNvb3Jkcy5sb25naXR1ZGUnLCAnbW9ja0xvbmdpdHVkZScpOworICAgIHNob3VsZEJlKCdwb3Np
dGlvbi5jb29yZHMuYWNjdXJhY3knLCAnbW9ja0FjY3VyYWN5Jyk7CisgICAgZGVidWcoJzxiciAv
PjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFuPicpOworICAgIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9LCBmdW5jdGlvbihlKSB7CisgICAg
dGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfSwgeworICAgIHRpbWVv
dXQ6IDEwMDAKK30pOword2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA0ODIwOSkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xNTczLDYg
KzE1NzMsOCBAQCBmYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci5odG1sCiBmYXN0L2RvbS9HZW9s
b2NhdGlvbi9wZXJtaXNzaW9uLWRlbmllZC5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9wZXJt
aXNzaW9uLWRlbmllZC1zdG9wcy13YXRjaGVzLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3N1
Y2Nlc3MuaHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24vdGltZW91dC16ZXJvLmh0bWwKK2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3RpbWVvdXQuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vd2F0Y2gu
aHRtbAogZmFzdC9kb20vZ2V0Qm91bmRpbmdDbGllbnRSZWN0Lmh0bWwKIGZhc3QvZG9tL251bGwt
ZG9jdW1lbnQtbG9jYXRpb24tcHV0LWNyYXNoLmh0bWwK
</data>
<flag name="review"
          id="20367"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="20408"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>