<?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>50566</bug_id>
          
          <creation_ts>2010-12-06 06:16:37 -0800</creation_ts>
          <short_desc>Delay starting geolocation request until permission has been granted or denied</short_desc>
          <delta_ts>2011-02-15 04:40:42 -0800</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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="John Knottenbelt">jknotten</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dacarson</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>sam</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>317585</commentid>
    <comment_count>0</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-06 06:16:37 -0800</bug_when>
    <thetext>If USE(PREEMPT_GEOLOCATION_PERMISSION) USE(PREEMPTIVE_GEOLOCATION), none of the steps to start a watch or get a position should be taken until permission has been set. This is in accordance with the specification:

&quot;For both getCurrentPosition and watchPosition, the implementation must never invoke the successCallback without having first obtained permission from the user to share location. Furthermore, the implementation should always obtain the user&apos;s permission to share location before executing any of the getCurrentPosition or watchPosition steps described above.&quot; 
[ http://www.w3.org/TR/geolocation-API/#geolocation_interface ]

At present, the implementation does not meet the specification because the steps for checking for a suitable cached position, and zero timeout are taken before the permission has been set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317590</commentid>
    <comment_count>1</comment_count>
      <attachid>75687</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-06 06:25:33 -0800</bug_when>
    <thetext>Created attachment 75687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317596</commentid>
    <comment_count>2</comment_count>
      <attachid>75687</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-12-06 06:51:21 -0800</bug_when>
    <thetext>Comment on attachment 75687
Patch

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

You&apos;re right that this change is required to meet the exact wording of the spec, though I&apos;m not sure that this is intentionally the case! Is there particular motivation for this change?

See Bug 42068 for background for PREEMPT_GEOLOCATION_PERMISSION

&gt; LayoutTests/fast/dom/Geolocation/script-tests/delayed-permission-timeout.js:1
&gt; +description(&quot;Tests that when the timeout is 0, no callbacks are invoked until permission is denied. &quot; +

Should probably name the test to reflect that it&apos;s specific to PREEMPT_GEOLOCATION_PERMISSION

&gt; LayoutTests/fast/dom/Geolocation/script-tests/delayed-permission-timeout.js:3
&gt; +            &quot;USED(CLIENT_BASED_GEOLOCATION)&quot;);

Don&apos;t mention CLIENT_BASED_GEOLOCATION - it&apos;ll go away and we don&apos;t want to have to update the test.

&gt; LayoutTests/fast/dom/Geolocation/script-tests/delayed-permission-timeout.js:28
&gt; +    debug(&apos;error was &apos; + e.code + &apos;:  &apos; + e.message);

Probably no need for this.

&gt; LayoutTests/fast/dom/Geolocation/script-tests/delayed-permission-timeout.js:35
&gt; +window.setTimeout(denyPermission, 100);

Do you need a delay of 100ms? It&apos;s best not to make tests rely on such magic numbers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317634</commentid>
    <comment_count>3</comment_count>
      <attachid>75687</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-06 08:21:45 -0800</bug_when>
    <thetext>Comment on attachment 75687
Patch

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

&gt;&gt; LayoutTests/fast/dom/Geolocation/script-tests/delayed-permission-timeout.js:1
&gt;&gt; +description(&quot;Tests that when the timeout is 0, no callbacks are invoked until permission is denied. &quot; +
&gt; 
&gt; Should probably name the test to reflect that it&apos;s specific to PREEMPT_GEOLOCATION_PERMISSION

Renamed to preempt-permission-timeout.html

&gt;&gt; LayoutTests/fast/dom/Geolocation/script-tests/delayed-permission-timeout.js:3
&gt;&gt; +            &quot;USED(CLIENT_BASED_GEOLOCATION)&quot;);
&gt; 
&gt; Don&apos;t mention CLIENT_BASED_GEOLOCATION - it&apos;ll go away and we don&apos;t want to have to update the test.

Ok.

&gt;&gt; LayoutTests/fast/dom/Geolocation/script-tests/delayed-permission-timeout.js:28
&gt;&gt; +    debug(&apos;error was &apos; + e.code + &apos;:  &apos; + e.message);
&gt; 
&gt; Probably no need for this.

Removed.

&gt;&gt; LayoutTests/fast/dom/Geolocation/script-tests/delayed-permission-timeout.js:35
&gt;&gt; +window.setTimeout(denyPermission, 100);
&gt; 
&gt; Do you need a delay of 100ms? It&apos;s best not to make tests rely on such magic numbers.

Timer was not important to the test. Removed. Thanks for the suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317636</commentid>
    <comment_count>4</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-06 08:26:28 -0800</bug_when>
    <thetext>The motivation for this change is primarily to make the code that starts the requests to be the same irrespective of whether it had to wait for permission to be set. 

For example, one difference, which is not easily testable with the current design of the Geolocation Mocks, is what happens if a page has two iframes, one of which is authorised for geolocation and has a watch started. If the second iframe requests a cached position, it should first get authorisation from the user, and then get the cached position that may have been stored in the Geolocation object thanks to the first iframe&apos;s request (if it meets the maxmium-age requirements).

There is also a discussion of some of these issues here: 

http://lists.w3.org/Archives/Public/public-geolocation/2009Mar/0068.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317638</commentid>
    <comment_count>5</comment_count>
      <attachid>75699</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-06 08:28:43 -0800</bug_when>
    <thetext>Created attachment 75699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318123</commentid>
    <comment_count>6</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-12-07 04:09:46 -0800</bug_when>
    <thetext>&gt; For example, one difference ...
I&apos;m not exactly sure what you mean by difference. Currently, Geolocation does handle the situation you describe - the watch started in the second frame will make use of a cached position due to the first frame. Your patch does not change that - we will just ask for permission before, rather than after we check the position cache.

I&apos;m still not 100% sure that the change in behaviour you&apos;re suggesting (check permission before looking for a cached position) is intended by the spec. The email discussion you reference talks about timeout, but not maximumAge. I&apos;ll discuss with Andrei.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318773</commentid>
    <comment_count>7</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-12-08 07:29:35 -0800</bug_when>
    <thetext>The motivation for the &apos;should&apos; for obtaining user permission before doing any work was that the location acquisition process may reveal sensitive information even if a position is not revealed to JavaScript. If permissions are not obtained preemtively ...
- If an API call results in a request for permission the app could deduce that a position was obtained and hence that a device is likely to be on WiFi - See https://bugs.webkit.org/show_bug.cgi?id=39434#c14
- Location acquisition using a server (eg WiFi ID look-up) could involve sending sensitive information over the network to a third party.

Having discussed with Andrei, the case of looking up a cached position wasn&apos;t really considered when the &apos;should&apos; was written. The above concerns don&apos;t really apply to the case of looking up a cached position. In any case, we&apos;re still compliant with the spec as this is only a &apos;should&apos;.

So unless the code clean-up you mention is important for other reasons, I&apos;d suggest closing this bug as &apos;working as intended&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318783</commentid>
    <comment_count>8</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2010-12-08 07:40:09 -0800</bug_when>
    <thetext>Thanks for considering it. This sounds reasonable to me. Let&apos;s close this one down.

(In reply to comment #7)
&gt; The motivation for the &apos;should&apos; for obtaining user permission before doing any work was that the location acquisition process may reveal sensitive information even if a position is not revealed to JavaScript. If permissions are not obtained preemtively ...
&gt; - If an API call results in a request for permission the app could deduce that a position was obtained and hence that a device is likely to be on WiFi - See https://bugs.webkit.org/show_bug.cgi?id=39434#c14
&gt; - Location acquisition using a server (eg WiFi ID look-up) could involve sending sensitive information over the network to a third party.
&gt; 
&gt; Having discussed with Andrei, the case of looking up a cached position wasn&apos;t really considered when the &apos;should&apos; was written. The above concerns don&apos;t really apply to the case of looking up a cached position. In any case, we&apos;re still compliant with the spec as this is only a &apos;should&apos;.
&gt; 
&gt; So unless the code clean-up you mention is important for other reasons, I&apos;d suggest closing this bug as &apos;working as intended&apos;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75687</attachid>
            <date>2010-12-06 06:25:33 -0800</date>
            <delta_ts>2010-12-06 08:28:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50566-20101206142531.patch</filename>
            <type>text/plain</type>
            <size>15174</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZGNjOGM2M2RiOWJjYWU4MWJlY2ZiNmNlZjc3NTQ3MGNkYzRkYTBiLi4wOTA2OTM3
ODljZmQ5NTI0ZDRjZDAyM2QxMWE0ODdkYzYxMzdmNzgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTItMDYgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsYXkgc3Rh
cnRpbmcgZ2VvbG9jYXRpb24gcmVxdWVzdCB1bnRpbCBwZXJtaXNzaW9uIGhhcyBiZWVuIGdyYW50
ZWQgb3IgZGVuaWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MDU2NgorCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJt
aXNzaW9uLXRpbWVvdXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9H
ZW9sb2NhdGlvbi9kZWxheWVkLXBlcm1pc3Npb24tdGltZW91dC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNzaW9u
LXRpbWVvdXQuanM6IEFkZGVkLgorICAgICAgICAoZGVueVBlcm1pc3Npb24pOgorICAgICAgICAq
IGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LWNsZWFyLXdhdGNoLmpz
OgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LXpl
cm8uanM6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0
LXdrMi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIwMTAtMTIt
MDUgIFJvYiBCdWlzICA8cndsYnVpc0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tmlrb2xhcyBaaW1tZXJtYW5uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2Vv
bG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLXRpbWVvdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLXRpbWVvdXQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNjUxNDljNWRiYjNhM2UzZDMwOTI5NzhjOWYyZTJkMDRl
NjVmMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9kZWxheWVkLXBlcm1pc3Npb24tdGltZW91dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBA
QAorVGVzdHMgdGhhdCB3aGVuIHRoZSB0aW1lb3V0IGlzIDAsIG5vIGNhbGxiYWNrcyBhcmUgaW52
b2tlZCB1bnRpbCBwZXJtaXNzaW9uIGlzIGRlbmllZC4gUmVxdWlyZXMgdGhhdCBXZWJLaXQgaXMg
YnVpbHQgd2l0aCBVU0UoUFJFRU1QVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OKSB3aGljaCBpcyBp
bXBsaWVkIGJ5IFVTRUQoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBFUk1JU1NJT05fREVO
SUVECitQQVNTIGVycm9yLm1lc3NhZ2UgaXMgIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi10
aW1lb3V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLXBl
cm1pc3Npb24tdGltZW91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhM2UzODQ0Yzk5YzM5NjQ2ZWE3MzJh
MDg0ZmVjYzI3NzBlZjgxNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9kZWxheWVkLXBlcm1pc3Npb24tdGltZW91dC5odG1sCkBAIC0wLDAgKzEs
MTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvZGVsYXllZC1wZXJtaXNzaW9uLXRpbWVvdXQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtcGVybWlzc2lvbi10aW1lb3V0LmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2RlbGF5ZWQtcGVybWlzc2lvbi10
aW1lb3V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiMWRiZDBiYWJjN2Q4NGE4ZGM2MjI3MDM4ZWEwZmQyZjM3
YTQzNGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9zY3JpcHQtdGVzdHMvZGVsYXllZC1wZXJtaXNzaW9uLXRpbWVvdXQuanMKQEAgLTAsMCArMSwz
OCBAQAorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2hlbiB0aGUgdGltZW91dCBpcyAwLCBubyBj
YWxsYmFja3MgYXJlIGludm9rZWQgdW50aWwgcGVybWlzc2lvbiBpcyBkZW5pZWQuICIgKworICAg
ICAgICAgICAgIlJlcXVpcmVzIHRoYXQgV2ViS2l0IGlzIGJ1aWx0IHdpdGggVVNFKFBSRUVNUFRf
R0VPTE9DQVRJT05fUEVSTUlTU0lPTikgd2hpY2ggaXMgaW1wbGllZCBieSAiICsKKyAgICAgICAg
ICAgICJVU0VEKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikiKTsKKworaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMCk7CisKK3Blcm1pc3Npb25T
ZXQgPSBmYWxzZTsKKworZnVuY3Rpb24gZGVueVBlcm1pc3Npb24oKSB7CisgICAgcGVybWlzc2lv
blNldCA9IHRydWU7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsK
K30KKwordmFyIGVycm9yOworbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
bihmdW5jdGlvbigpIHsKKyAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQg
dW5leHBlY3RlZGx5Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbihlKSB7Cisg
ICAgaWYgKHBlcm1pc3Npb25TZXQpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgICAgICBzaG91
bGRCZSgnZXJyb3IuY29kZScsICdlcnJvci5QRVJNSVNTSU9OX0RFTklFRCcpOworICAgICAgICBz
aG91bGRCZSgnZXJyb3IubWVzc2FnZScsICciVXNlciBkZW5pZWQgR2VvbG9jYXRpb24iJyk7Cisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRlYnVn
KCdlcnJvciB3YXMgJyArIGUuY29kZSArICc6ICAnICsgZS5tZXNzYWdlKTsKKyAgICB0ZXN0RmFp
bGVkKCdFcnJvciBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfSwgeworICAgdGltZW91dDogMAorfSk7CisKK3dpbmRvdy5zZXRUaW1lb3V0KGRl
bnlQZXJtaXNzaW9uLCAxMDApOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5k
b3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LWNsZWFyLXdhdGNoLmpzIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3RpbWVvdXQtY2xl
YXItd2F0Y2guanMKaW5kZXggZmUyNjczNTdlMmU1NGI4ZGYyZWYzMGE2ZWE4MDI0MzVhNzI2Yzg2
My4uZjM3ODMwZWVjZDc0NmU0ZmVlOGY4MTk0N2M0NzAwZThkNzAzNGNhNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3RpbWVvdXQtY2xl
YXItd2F0Y2guanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0
LXRlc3RzL3RpbWVvdXQtY2xlYXItd2F0Y2guanMKQEAgLTE3LDYgKzE3LDkgQEAgdmFyIHdhdGNo
SWQgPSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihmdW5jdGlvbigpIHsKICAg
ICB0aW1lb3V0OiAwCiB9KTsKIAoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7CisK
IAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9z
Y3JpcHQtdGVzdHMvdGltZW91dC16ZXJvLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vc2NyaXB0LXRlc3RzL3RpbWVvdXQtemVyby5qcwppbmRleCAwMzA3NmJjZTcyNjhhYzA2
ZTNlYWY3MTAyMGEyZWM5OTA3MmIzOGFkLi45MTk4MmRjNjRjNGU4YjNkMGMzYzkyZTZlMzdmOGU1
M2U5OTNjOWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9z
Y3JpcHQtdGVzdHMvdGltZW91dC16ZXJvLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LXplcm8uanMKQEAgLTE2LDUgKzE2LDggQEAg
bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAg
ICAgdGltZW91dDogMAogfSk7CiAKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOwor
CiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dAppbmRleCA3YmNmZWQ4NjRiZTQ3M2RkZjc4MDExOWZiODQ1M2FlMWFiZmQw
MWZlLi40YTk3Y2FkNDQ4YjUwYTMxZGE3MGI0OGE0YTA2NmU3ODZmN2IzNzg0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBA
IC0zMzQ5LDMgKzMzNDksNiBAQCBCVUdXSzUwMzUyIDogZmFzdC9kb20vdmVydGljYWwtc2Nyb2xs
YmFyLWluLXJ0bC5odG1sID0gVEVYVAogLy8gUmVtb3ZlIHRoZW0gb25jZSB3ZSBzd2l0Y2ggZnJv
bSB0ZXN0IHNoZWxsIHRvIERSVAogQlVHNjUyMTAgOiBmYXN0L2ZyYW1lcy9sb2NhdGlvbi1yZWRp
cmVjdC11c2VyLWdlc3R1cmUuaHRtbCA9IFRFWFQKIEJVRzY1MjEwIDogZmFzdC9mcmFtZXMvbWV0
YS1yZWZyZXNoLXVzZXItZ2VzdHVyZS5odG1sID0gVEVYVAorCisvLyBXaGVuIHdlIHN3aXRjaCBv
dmVyIHRvIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiB0aGlzIHRlc3Qgc2hvdWxkIHBhc3MuCitC
VUdXSzUwNTYyIDogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLXRpbWVv
dXQuaHRtbCA9IFBBU1MgRkFJTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCBlYmM3OTM0
YmY5Y2JjODVmYWViYzhkZmM2ZGQ0ZTllYTlhOGVmZTIxLi4yNjQ3YWFhNzVhYWFhZWY3ZGZmY2E2
ZDc4YjA2MTQwZTM4NDg0MzQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
U2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtNDkxMSw2
ICs0OTExLDEwIEBAIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3Blcm1pc3Npb24tZGVuaWVkLWFscmVh
ZHktc3VjY2Vzcy5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9wZXJtaXNzaW9uLWRlbmllZC1z
dG9wcy13YXRjaGVzLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3Blcm1pc3Npb24tZGVuaWVk
Lmh0bWwKIAorIyBOZWVkcyBtb2NrIHN1cHBvcnQgYW5kIFBSRUVNUFRfR0VPTE9DQVRJT05fUEVS
TUlTU0lPTiAoaW1wbGllZCBieSBDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCitmYXN0L2RvbS9H
ZW9sb2NhdGlvbi9kZWxheWVkLXBlcm1pc3Npb24tdGltZW91dC5odG1sCisKKwogIyBBcyBleHBs
YWluZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzcyIHRo
aXMKICMgdGVzdCBzZWVtcyB0byBzdWZmZXIgZnJvbSBhIHJhY2UgY29uZGl0aW9uIHRoYXQganVz
dCB0dXJuZWQgdG8gdGhlCiAjIGZhaWxpbmcgc2lkZSB3aXRoIHRoZSBub3JtYWxpemF0aW9uIG9m
IHByaW9yaXRpZXM7IGl0IHVzZWQgdG8gZmFpbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQtd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBl
ZAppbmRleCA4ZGI2Y2QyNWRmNDQ4YjQ4ZjY5NDZhYWRhNGQxN2JmNDMzY2Y1MDZkLi5kYmE4NGMy
MDU5NmEyNDMwMmRmYjhhMjE0MDRlZjYxMmM1MDY1ODY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13
azIvU2tpcHBlZApAQCAtMTcxNiw2ICsxNzE2LDcgQEAgZmFzdC9kb20vR2VvbG9jYXRpb24vZGVs
YXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11bHRpcGxlLXJlcXVlc3RzLmh0bWwKIGZhc3Qv
ZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLmh0bWwKIGZhc3QvZG9t
L0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQtZm9yLW11bHRpcGxlLXJlcXVl
c3RzLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi1kZW5pZWQu
aHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLXRpbWVvdXQuaHRt
bAogZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLWFscmVhZHkuaHRtbAog
ZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLXBlcm1pc3Npb24tZGVuaWVk
Lmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2Rpc2Nvbm5lY3RlZC1mcmFtZS5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZAppbmRleCBjNGI1MGVmYzM3NjA1ZTRmYmQ2ZjkyNDg0MmMxN2RiOGYy
OGE5NTc4Li43MDEwOTNjMzkxNzY4YWRjODU5MTFjYzQ1NjdmMmJkMzk1MDA4MWJmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQKQEAgLTUxNDcsNiArNTE0Nyw3IEBAIG1lZGlhL3ZpZGVvLWRlbGF5
LWxvYWQtZXZlbnQuaHRtbAogIyBuZXcgc2tpcHBlZCB0ZXN0cyB5ZXQgdG8gYmUgc29ydGVkCiAj
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ICMKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRv
LXJlbW90ZS1jb250ZXh0Mi5odG1sCitmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVkLXBlcm1p
c3Npb24tdGltZW91dC5odG1sCiAKICMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZh
dWx0CiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1hbmQtc3VicmVzb3VyY2UtdGVzdC5o
dG1sCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDRhNzUyMTVhOGQyMDZiODg3MDllZjkxYWYwNjU3MDk1NjFhNGExMDEuLjdjZjkyNTY4MGM2
Y2E4ZGE1ZDQzMjM5YTRjZThhNzcxMzg4YzIzNTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTItMDYg
IEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsYXkgc3RhcnRpbmcgZ2VvbG9j
YXRpb24gcmVxdWVzdCB1bnRpbCBwZXJtaXNzaW9uIGhhcyBiZWVuIGdyYW50ZWQgb3IgZGVuaWVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDU2Ngor
CisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL0dlb2xvY2F0aW9uL2RlbGF5ZWQtcGVybWlzc2lvbi10
aW1lb3V0Lmh0bWwKKworICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcik6CisgICAgICAg
IChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c3RhcnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uOjphY3F1aXJlTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb246OmhhdmVTdWl0YWJsZUNhY2hlZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uOjpoYW5kbGVQZW5kaW5nUGVybWlzc2lvbk5vdGlmaWVycyk6CisgICAgICAgICog
cGFnZS9HZW9sb2NhdGlvbi5oOgorCiAyMDEwLTEyLTA2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5v
cm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24u
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwIGIvV2ViQ29yZS9wYWdl
L0dlb2xvY2F0aW9uLmNwcAppbmRleCA5YzZmNmQxOTM2YjQ3ZTQxNGU0YjM1MTUzODRlYmYyZDA3
ZDc2YzFkLi5lMTE4YmQ5NWQ2ODZlMzgzNWRlZjhlY2I3OGJlY2JlMjcyMzUzMjVlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9HZW9s
b2NhdGlvbi5jcHAKQEAgLTg3LDYgKzg3LDcgQEAgR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpH
ZW9Ob3RpZmllcihHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24sIFBhc3NSZWZQdHI8UG9zaXQKICAg
ICAsIG1fb3B0aW9ucyhvcHRpb25zKQogICAgICwgbV90aW1lcih0aGlzLCAmR2VvbG9jYXRpb246
Okdlb05vdGlmaWVyOjp0aW1lckZpcmVkKQogICAgICwgbV91c2VDYWNoZWRQb3NpdGlvbihmYWxz
ZSkKKyAgICAsIG1fY3JlYXRpb25UaW1lKGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoY3Vy
cmVudFRpbWUoKSkpCiB7CiAgICAgQVNTRVJUKG1fZ2VvbG9jYXRpb24pOwogICAgIEFTU0VSVCht
X3N1Y2Nlc3NDYWxsYmFjayk7CkBAIC0yOTYsMjcgKzI5NywzMyBAQCBQYXNzUmVmUHRyPEdlb2xv
Y2F0aW9uOjpHZW9Ob3RpZmllcj4gR2VvbG9jYXRpb246OnN0YXJ0UmVxdWVzdChQYXNzUmVmUHRy
PFBvc2l0aQogewogICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmll
cjo6Y3JlYXRlKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgb3B0aW9ucyk7
CiAKKyNpZiBVU0UoUFJFRU1QVF9HRU9MT0NBVElPTl9QRVJNSVNTSU9OKQorICAgIGlmICghaXNB
bGxvd2VkKCkgJiYgIWlzRGVuaWVkKCkpIHsKKyAgICAgICAgLy8gUmVxdWVzdCBmb3IgcGVybWlz
c2lvbiBiZWZvcmUgYWNxdWlyaW5nIHRoZSBsb2NhdGlvbi4KKyAgICAgICAgbV9wZW5kaW5nRm9y
UGVybWlzc2lvbk5vdGlmaWVycy5hZGQobm90aWZpZXIpOworICAgICAgICByZXF1ZXN0UGVybWlz
c2lvbigpOworICAgICAgICByZXR1cm4gbm90aWZpZXIucmVsZWFzZSgpOworICAgIH0KKyNlbmRp
ZgorCisgICAgYWNxdWlyZUxvY2F0aW9uKG5vdGlmaWVyLmdldCgpKTsKKyAgICByZXR1cm4gbm90
aWZpZXIucmVsZWFzZSgpOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjphY3F1aXJlTG9jYXRpb24o
R2VvbG9jYXRpb246Okdlb05vdGlmaWVyKiBub3RpZmllcikKK3sKICAgICAvLyBDaGVjayB3aGV0
aGVyIHBlcm1pc3Npb25zIGhhdmUgYWxyZWFkeSBiZWVuIGRlbmllZC4gTm90ZSB0aGF0IGlmIHRo
aXMgaXMgdGhlIGNhc2UsCi0gICAgLy8gdGhlIHBlcm1pc3Npb24gc3RhdGUgY2FuIG5vdCBjaGFu
Z2UgYWdhaW4gaW4gdGhlIGxpZmV0aW1lIG9mIHRoaXMgcGFnZS4KKyAgICAvLyB0aGUgcGVybWlz
c2lvbiBzdGF0ZSBjYW4gbm90IGNoYW5nZSBhZ2FpbiBpbiB0aGUgbGlmZXRpbWUgb2YgdGhpcyBm
cmFtZS4KICAgICBpZiAoaXNEZW5pZWQoKSkKICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJy
b3IoUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVE
LCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7Ci0gICAgZWxzZSBpZiAoaGF2ZVN1aXRh
YmxlQ2FjaGVkUG9zaXRpb24obm90aWZpZXItPm1fb3B0aW9ucy5nZXQoKSkpCisgICAgZWxzZSBp
ZiAoaGF2ZVN1aXRhYmxlQ2FjaGVkUG9zaXRpb24obm90aWZpZXItPm1fb3B0aW9ucy5nZXQoKSwg
bm90aWZpZXItPm1fY3JlYXRpb25UaW1lKSkKICAgICAgICAgbm90aWZpZXItPnNldFVzZUNhY2hl
ZFBvc2l0aW9uKCk7CiAgICAgZWxzZSBpZiAobm90aWZpZXItPmhhc1plcm9UaW1lb3V0KCkpCiAg
ICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKLSNpZiBVU0UoUFJFRU1QVF9H
RU9MT0NBVElPTl9QRVJNSVNTSU9OKQotICAgIGVsc2UgaWYgKCFpc0FsbG93ZWQoKSkgewotICAg
ICAgICAvLyBpZiB3ZSBkb24ndCB5ZXQgaGF2ZSBwZXJtaXNzaW9uLCByZXF1ZXN0IGZvciBwZXJt
aXNzaW9uIGJlZm9yZSBjYWxsaW5nIHN0YXJ0VXBkYXRpbmcoKQotICAgICAgICBtX3BlbmRpbmdG
b3JQZXJtaXNzaW9uTm90aWZpZXJzLmFkZChub3RpZmllcik7Ci0gICAgICAgIHJlcXVlc3RQZXJt
aXNzaW9uKCk7Ci0gICAgfQotI2VuZGlmCi0gICAgZWxzZSBpZiAoc3RhcnRVcGRhdGluZyhub3Rp
Zmllci5nZXQoKSkpCisgICAgZWxzZSBpZiAoc3RhcnRVcGRhdGluZyhub3RpZmllcikpCiAgICAg
ICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKICAgICBlbHNlCiAgICAgICAgIG5v
dGlmaWVyLT5zZXRGYXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9y
OjpQT1NJVElPTl9VTkFWQUlMQUJMRSwgZmFpbGVkVG9TdGFydFNlcnZpY2VFcnJvck1lc3NhZ2Up
KTsKLQotICAgIHJldHVybiBub3RpZmllci5yZWxlYXNlKCk7CiB9CiAKIHZvaWQgR2VvbG9jYXRp
b246OmZhdGFsRXJyb3JPY2N1cnJlZChHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXIqIG5vdGlmaWVy
KQpAQCAtMzg3LDcgKzM5NCw3IEBAIHZvaWQgR2VvbG9jYXRpb246OnJlcXVlc3RUaW1lZE91dChH
ZW9Ob3RpZmllciogbm90aWZpZXIpCiAgICAgICAgIHN0b3BVcGRhdGluZygpOwogfQogCi1ib29s
IEdlb2xvY2F0aW9uOjpoYXZlU3VpdGFibGVDYWNoZWRQb3NpdGlvbihQb3NpdGlvbk9wdGlvbnMq
IG9wdGlvbnMpCitib29sIEdlb2xvY2F0aW9uOjpoYXZlU3VpdGFibGVDYWNoZWRQb3NpdGlvbihQ
b3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMsIERPTVRpbWVTdGFtcCByZXF1ZXN0VGltZSkKIHsKICAg
ICBpZiAoIW1fcG9zaXRpb25DYWNoZS0+Y2FjaGVkUG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzk1LDggKzQwMiw4IEBAIGJvb2wgR2VvbG9jYXRpb246OmhhdmVTdWl0YWJs
ZUNhY2hlZFBvc2l0aW9uKFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucykKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgaWYgKCFvcHRpb25zLT5tYXhpbXVtQWdlKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBET01UaW1lU3RhbXAgY3VycmVudFRpbWVNaWxsaXMgPSBjb252ZXJ0U2Vjb25k
c1RvRE9NVGltZVN0YW1wKGN1cnJlbnRUaW1lKCkpOwotICAgIHJldHVybiBtX3Bvc2l0aW9uQ2Fj
aGUtPmNhY2hlZFBvc2l0aW9uKCktPnRpbWVzdGFtcCgpID4gY3VycmVudFRpbWVNaWxsaXMgLSBv
cHRpb25zLT5tYXhpbXVtQWdlKCk7CisKKyAgICByZXR1cm4gbV9wb3NpdGlvbkNhY2hlLT5jYWNo
ZWRQb3NpdGlvbigpLT50aW1lc3RhbXAoKSA+IHJlcXVlc3RUaW1lIC0gb3B0aW9ucy0+bWF4aW11
bUFnZSgpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uOjpjbGVhcldhdGNoKGludCB3YXRjaElkKQpA
QCAtNzI4LDE2ICs3MzUsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpoYW5kbGVQZW5kaW5nUGVybWlz
c2lvbk5vdGlmaWVycygpCiAgICAgR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuZW5kKCk7CiAgICAgZm9yIChHZW9Ob3Rp
ZmllclNldDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3Rp
ZmllcnMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBHZW9Ob3RpZmll
ciogbm90aWZpZXIgPSBpdGVyLT5nZXQoKTsKLQotICAgICAgICBpZiAoaXNBbGxvd2VkKCkpIHsK
LSAgICAgICAgICAgIC8vIHN0YXJ0IGFsbCBwZW5kaW5nIG5vdGlmaWNhdGlvbiByZXF1ZXN0cyBh
cyBwZXJtaXNzaW9uIGdyYW50ZWQuCi0gICAgICAgICAgICAvLyBUaGUgbm90aWZpZXIgaXMgYWx3
YXlzIHJlZidlZCBieSBtX29uZVNob3RzIG9yIG1fd2F0Y2hlcnMuCi0gICAgICAgICAgICBpZiAo
c3RhcnRVcGRhdGluZyhub3RpZmllcikpCi0gICAgICAgICAgICAgICAgbm90aWZpZXItPnN0YXJ0
VGltZXJJZk5lZWRlZCgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5vdGlm
aWVyLT5zZXRGYXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQ
T1NJVElPTl9VTkFWQUlMQUJMRSwgZmFpbGVkVG9TdGFydFNlcnZpY2VFcnJvck1lc3NhZ2UpKTsK
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihQb3Np
dGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIHBlcm1p
c3Npb25EZW5pZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgYWNxdWlyZUxvY2F0aW9uKG5vdGlm
aWVyKTsKICAgICB9CiB9CiAjZW5kaWYKQEAgLTc1OSw1ICs3NTcsNSBAQCBHZW9sb2NhdGlvbjo6
fkdlb2xvY2F0aW9uKCkge30KIHZvaWQgR2VvbG9jYXRpb246OnNldElzQWxsb3dlZChib29sKSB7
fQogCiB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAorCiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0dlb2xvY2F0aW9uLmggYi9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAppbmRl
eCAzMDYyMTRiMDgzNzUzNTQyMmMzMTFmNGU5ZWZiN2IxM2EwNTI2MzMyLi5iMTU4ZWY3NDI3ZTVh
MzY4NmFjYjFlZWJjMWQ4ZDgxOGVkMmFkNGQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvR2Vv
bG9jYXRpb24uaAorKysgYi9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaApAQCAtMTA0LDYgKzEw
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFRpbWVyPEdlb05vdGlmaWVyPiBtX3RpbWVyOwogICAg
ICAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gbV9mYXRhbEVycm9yOwogICAgICAgICBib29sIG1f
dXNlQ2FjaGVkUG9zaXRpb247CisgICAgICAgIERPTVRpbWVTdGFtcCBtX2NyZWF0aW9uVGltZTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIEdlb05vdGlmaWVyKEdlb2xvY2F0aW9uKiwgUGFzc1Jl
ZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4pOwpAQCAtMTY1LDEwICsxNjYsMTEgQEAgcHJp
dmF0ZToKIAogICAgIFBhc3NSZWZQdHI8R2VvTm90aWZpZXI+IHN0YXJ0UmVxdWVzdChQYXNzUmVm
UHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPik7CiAKKyAgICB2b2lkIGFjcXVpcmVMb2NhdGlv
bihHZW9Ob3RpZmllciopOwogICAgIHZvaWQgZmF0YWxFcnJvck9jY3VycmVkKEdlb05vdGlmaWVy
Kik7CiAgICAgdm9pZCByZXF1ZXN0VGltZWRPdXQoR2VvTm90aWZpZXIqKTsKICAgICB2b2lkIHJl
cXVlc3RVc2VzQ2FjaGVkUG9zaXRpb24oR2VvTm90aWZpZXIqKTsKLSAgICBib29sIGhhdmVTdWl0
YWJsZUNhY2hlZFBvc2l0aW9uKFBvc2l0aW9uT3B0aW9ucyopOworICAgIGJvb2wgaGF2ZVN1aXRh
YmxlQ2FjaGVkUG9zaXRpb24oUG9zaXRpb25PcHRpb25zKiwgRE9NVGltZVN0YW1wKTsKICAgICB2
b2lkIG1ha2VDYWNoZWRQb3NpdGlvbkNhbGxiYWNrcygpOwogCiAgICAgR2VvTm90aWZpZXJTZXQg
bV9vbmVTaG90czsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75699</attachid>
            <date>2010-12-06 08:28:43 -0800</date>
            <delta_ts>2011-02-15 04:40:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50566-20101206162840.patch</filename>
            <type>text/plain</type>
            <size>14788</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZGNjOGM2M2RiOWJjYWU4MWJlY2ZiNmNlZjc3NTQ3MGNkYzRkYTBiLi5kZDI3YzZi
ODk2MmNkN2FjYjJkNGQwNmZiNjEzZGRlM2Q1MzE3ZmQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTAtMTItMDYgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsYXkgc3Rh
cnRpbmcgZ2VvbG9jYXRpb24gcmVxdWVzdCB1bnRpbCBwZXJtaXNzaW9uIGhhcyBiZWVuIGdyYW50
ZWQgb3IgZGVuaWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MDU2NgorCisgICAgICAgIFRoZSB0ZXN0IGlzIG9ubHkgcmVsZXZhbnQgdG8gaW1wbGVt
ZW50YXRpb25zIHN1cHBvcnRpbmcgcHJlZW1wdGl2ZSBwZXJtaXNzaW9uCisgICAgICAgIHJlcXVl
c3QuCisKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9wcmVlbXB0LXBlcm1pc3Npb24t
dGltZW91dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0
aW9uL3ByZWVtcHQtcGVybWlzc2lvbi10aW1lb3V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wcmVlbXB0LXBlcm1pc3Npb24tdGltZW91
dC5qczogQWRkZWQuCisgICAgICAgIChkZW55UGVybWlzc2lvbik6CisgICAgICAgICogZmFzdC9k
b20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3RpbWVvdXQtY2xlYXItd2F0Y2guanM6CisgICAg
ICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3RpbWVvdXQtemVyby5qczoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQtd2syL1Nr
aXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAxMC0xMi0wNSAgUm9i
IEJ1aXMgIDxyd2xidWlzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFz
IFppbW1lcm1hbm4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9wcmVlbXB0LXBlcm1pc3Npb24tdGltZW91dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9wcmVlbXB0LXBlcm1pc3Npb24tdGltZW91dC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDIyZWVkNmQwNjdhZDA0YzM5MmY5YWFkMGRlMzI0MDU0OTYzMWI5Ngot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3ByZWVt
cHQtcGVybWlzc2lvbi10aW1lb3V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0
cyB0aGF0IHdoZW4gdGhlIHRpbWVvdXQgaXMgMCwgbm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIHVu
dGlsIHBlcm1pc3Npb24gaXMgZGVuaWVkLiBSZXF1aXJlcyB0aGF0IFdlYktpdCBpcyBidWlsdCB3
aXRoIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT04pCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGVycm9yLmNvZGUgaXMgZXJyb3IuUEVSTUlTU0lPTl9ERU5J
RUQKK1BBU1MgZXJyb3IubWVzc2FnZSBpcyAiVXNlciBkZW5pZWQgR2VvbG9jYXRpb24iCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcHJlZW1wdC1wZXJtaXNzaW9uLXRp
bWVvdXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3ByZWVtcHQtcGVy
bWlzc2lvbi10aW1lb3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGEzNGY4MDlkMDhhZmEwYmIyZDRjZmJm
ZDc3NDlmNjRiNzYxY2RkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3ByZWVtcHQtcGVybWlzc2lvbi10aW1lb3V0Lmh0bWwKQEAgLTAsMCArMSwx
MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9wcmVlbXB0LWRlbGF5ZWQtcGVybWlzc2lvbi10aW1lb3V0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wcmVlbXB0LWRlbGF5ZWQtcGVybWlzc2lvbi10aW1lb3V0
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3ByZWVt
cHQtZGVsYXllZC1wZXJtaXNzaW9uLXRpbWVvdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTljOWQ5YTRmMzRh
ZDVlYjc3OTAxNGIzOGM5MDc1ZjI2NDNjMDJmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wcmVlbXB0LWRlbGF5ZWQtcGVy
bWlzc2lvbi10aW1lb3V0LmpzCkBAIC0wLDAgKzEsMjUgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0
aGF0IHdoZW4gdGhlIHRpbWVvdXQgaXMgMCwgbm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIHVudGls
IHBlcm1pc3Npb24gaXMgZGVuaWVkLiAiICsKKyAgICAgICAgICAgICJSZXF1aXJlcyB0aGF0IFdl
YktpdCBpcyBidWlsdCB3aXRoIFVTRShQUkVFTVBUX0dFT0xPQ0FUSU9OX1BFUk1JU1NJT04pIik7
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAx
MDApOworCisKK3ZhciBlcnJvcjsKK25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9z
aXRpb24oZnVuY3Rpb24oKSB7CisgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZv
a2VkIHVuZXhwZWN0ZWRseScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oZSkg
eworICAgIGVycm9yID0gZTsKKyAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdlcnJvci5QRVJN
SVNTSU9OX0RFTklFRCcpOworICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJyJVc2VyIGRl
bmllZCBHZW9sb2NhdGlvbiInKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30sIHsKKyAgIHRpbWVv
dXQ6IDAKK30pOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOworCit3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0
cy90aW1lb3V0LWNsZWFyLXdhdGNoLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vc2NyaXB0LXRlc3RzL3RpbWVvdXQtY2xlYXItd2F0Y2guanMKaW5kZXggZmUyNjczNTdlMmU1
NGI4ZGYyZWYzMGE2ZWE4MDI0MzVhNzI2Yzg2My4uZjM3ODMwZWVjZDc0NmU0ZmVlOGY4MTk0N2M0
NzAwZThkNzAzNGNhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vc2NyaXB0LXRlc3RzL3RpbWVvdXQtY2xlYXItd2F0Y2guanMKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3RpbWVvdXQtY2xlYXItd2F0Y2guanMK
QEAgLTE3LDYgKzE3LDkgQEAgdmFyIHdhdGNoSWQgPSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0
Y2hQb3NpdGlvbihmdW5jdGlvbigpIHsKICAgICB0aW1lb3V0OiAwCiB9KTsKIAoraWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9s
b2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7CisKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
Owogd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvdGltZW91dC16ZXJvLmpzIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3RpbWVvdXQtemVy
by5qcwppbmRleCAwMzA3NmJjZTcyNjhhYzA2ZTNlYWY3MTAyMGEyZWM5OTA3MmIzOGFkLi45MTk4
MmRjNjRjNGU4YjNkMGMzYzkyZTZlMzdmOGU1M2U5OTNjOWRhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvdGltZW91dC16ZXJvLmpzCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0
LXplcm8uanMKQEAgLTE2LDUgKzE2LDggQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgdGltZW91dDogMAogfSk7CiAKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOworCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA3YmNmZWQ4NjRi
ZTQ3M2RkZjc4MDExOWZiODQ1M2FlMWFiZmQwMWZlLi5kNTc2MTJhNTVmZDAzMTM5M2UzNzQzOThm
MjBiZWY1MGY0ZmQyOWIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0zMzQ5LDMgKzMzNDksNiBAQCBCVUdXSzUwMzUy
IDogZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sID0gVEVYVAogLy8gUmVt
b3ZlIHRoZW0gb25jZSB3ZSBzd2l0Y2ggZnJvbSB0ZXN0IHNoZWxsIHRvIERSVAogQlVHNjUyMTAg
OiBmYXN0L2ZyYW1lcy9sb2NhdGlvbi1yZWRpcmVjdC11c2VyLWdlc3R1cmUuaHRtbCA9IFRFWFQK
IEJVRzY1MjEwIDogZmFzdC9mcmFtZXMvbWV0YS1yZWZyZXNoLXVzZXItZ2VzdHVyZS5odG1sID0g
VEVYVAorCisvLyBXaGVuIHdlIHN3aXRjaCBvdmVyIHRvIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlv
biB0aGlzIHRlc3Qgc2hvdWxkIHBhc3MuCitCVUdXSzUwNTYyIDogZmFzdC9kb20vR2VvbG9jYXRp
b24vcHJlZW1wdC1wZXJtaXNzaW9uLXRpbWVvdXQuaHRtbCA9IFBBU1MgRkFJTApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvU2tpcHBlZAppbmRleCBlYmM3OTM0YmY5Y2JjODVmYWViYzhkZmM2ZGQ0ZTllYTlhOGVm
ZTIxLi5iYzQxMGQzN2FmZDA4Yjc1NTA3NGZlMDVhM2MwYTY2ZGE1ZGQwZjQ1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvU2tpcHBlZApAQCAtNDkxMSw2ICs0OTExLDEwIEBAIGZhc3QvZG9tL0dlb2xvY2F0
aW9uL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHktc3VjY2Vzcy5odG1sCiBmYXN0L2RvbS9HZW9s
b2NhdGlvbi9wZXJtaXNzaW9uLWRlbmllZC1zdG9wcy13YXRjaGVzLmh0bWwKIGZhc3QvZG9tL0dl
b2xvY2F0aW9uL3Blcm1pc3Npb24tZGVuaWVkLmh0bWwKIAorIyBOZWVkcyBtb2NrIHN1cHBvcnQg
YW5kIFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTiAoaW1wbGllZCBieSBDTElFTlRfQkFT
RURfR0VPTE9DQVRJT04pCitmYXN0L2RvbS9HZW9sb2NhdGlvbi9wcmVlbXB0LXBlcm1pc3Npb24t
dGltZW91dC5odG1sCisKKwogIyBBcyBleHBsYWluZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM0MzcyIHRoaXMKICMgdGVzdCBzZWVtcyB0byBzdWZmZXIgZnJv
bSBhIHJhY2UgY29uZGl0aW9uIHRoYXQganVzdCB0dXJuZWQgdG8gdGhlCiAjIGZhaWxpbmcgc2lk
ZSB3aXRoIHRoZSBub3JtYWxpemF0aW9uIG9mIHByaW9yaXRpZXM7IGl0IHVzZWQgdG8gZmFpbApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBlZAppbmRleCA4ZGI2Y2QyNWRmNDQ4YjQ4ZjY5NDZh
YWRhNGQxN2JmNDMzY2Y1MDZkLi45YjNkN2UyODFhYTJhNDMxYzAyOWQzYmRmOGU4ODZmOGY2NDdl
MzhiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBlZApAQCAtMTcyOCw2ICsxNzI4LDcg
QEAgZmFzdC9kb20vR2VvbG9jYXRpb24vcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1zdWNjZXNz
Lmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3Blcm1pc3Npb24tZGVuaWVkLXN0b3BzLXdhdGNo
ZXMuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vcGVybWlzc2lvbi1kZW5pZWQuaHRtbAogZmFz
dC9kb20vR2VvbG9jYXRpb24vcG9zaXRpb24tc3RyaW5nLmh0bWwKK2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3ByZWVtcHQtcGVybWlzc2lvbi10aW1lb3V0Lmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9u
L3JlZW50cmFudC1lcnJvci5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9yZWVudHJhbnQtcGVy
bWlzc2lvbi1kZW5pZWQuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vcmVlbnRyYW50LXN1Y2Nl
c3MuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggYzRiNTBlZmMzNzYwNWU0ZmJkNmY5
MjQ4NDJjMTdkYjhmMjhhOTU3OC4uYTk4ZjlkOTVhYWMyMzU0ZjczZTgwMTEzODBkMDM1MzRkZjVi
NDQ3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC01MTQ3LDYgKzUxNDcsNyBAQCBtZWRp
YS92aWRlby1kZWxheS1sb2FkLWV2ZW50Lmh0bWwKICMgbmV3IHNraXBwZWQgdGVzdHMgeWV0IHRv
IGJlIHNvcnRlZAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCiBmYXN0L2RvbS9HZW9sb2NhdGlv
bi9jYWxsYmFjay10by1yZW1vdGUtY29udGV4dDIuaHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24v
cHJlZW1wdC1wZXJtaXNzaW9uLXRpbWVvdXQuaHRtbAogCiAjIExpbmsgcHJlZmV0Y2ggaXMgZGlz
YWJsZWQgYnkgZGVmYXVsdAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstYW5kLXN1YnJl
c291cmNlLXRlc3QuaHRtbApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA0YTc1MjE1YThkMjA2Yjg4NzA5ZWY5MWFmMDY1NzA5NTYxYTRhMTAx
Li43Y2Y5MjU2ODBjNmNhOGRhNWQ0MzIzOWE0Y2U4YTc3MTM4OGMyMzU1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDEwLTEyLTA2ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlbGF5IHN0
YXJ0aW5nIGdlb2xvY2F0aW9uIHJlcXVlc3QgdW50aWwgcGVybWlzc2lvbiBoYXMgYmVlbiBncmFu
dGVkIG9yIGRlbmllZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTA1NjYKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxheWVk
LXBlcm1pc3Npb24tdGltZW91dC5odG1sCisKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2VvTm90aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0YXJ0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6YWNxdWlyZUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uOjpoYXZlU3VpdGFibGVDYWNoZWRQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6aGFuZGxlUGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMp
OgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uaDoKKwogMjAxMC0xMi0wNiAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
dGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcCBi
L1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAKaW5kZXggOWM2ZjZkMTkzNmI0N2U0MTRlNGIz
NTE1Mzg0ZWJmMmQwN2Q3NmMxZC4uZTExOGJkOTVkNjg2ZTM4MzVkZWY4ZWNiNzhiZWNiZTI3MjM1
MzI1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAorKysgYi9XZWJD
b3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCkBAIC04Nyw2ICs4Nyw3IEBAIEdlb2xvY2F0aW9uOjpH
ZW9Ob3RpZmllcjo6R2VvTm90aWZpZXIoR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uLCBQYXNzUmVm
UHRyPFBvc2l0CiAgICAgLCBtX29wdGlvbnMob3B0aW9ucykKICAgICAsIG1fdGltZXIodGhpcywg
Jkdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6dGltZXJGaXJlZCkKICAgICAsIG1fdXNlQ2FjaGVk
UG9zaXRpb24oZmFsc2UpCisgICAgLCBtX2NyZWF0aW9uVGltZShjb252ZXJ0U2Vjb25kc1RvRE9N
VGltZVN0YW1wKGN1cnJlbnRUaW1lKCkpKQogewogICAgIEFTU0VSVChtX2dlb2xvY2F0aW9uKTsK
ICAgICBBU1NFUlQobV9zdWNjZXNzQ2FsbGJhY2spOwpAQCAtMjk2LDI3ICsyOTcsMzMgQEAgUGFz
c1JlZlB0cjxHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI+IEdlb2xvY2F0aW9uOjpzdGFydFJlcXVl
c3QoUGFzc1JlZlB0cjxQb3NpdGkKIHsKICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVy
ID0gR2VvTm90aWZpZXI6OmNyZWF0ZSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2ssIG9wdGlvbnMpOwogCisjaWYgVVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikK
KyAgICBpZiAoIWlzQWxsb3dlZCgpICYmICFpc0RlbmllZCgpKSB7CisgICAgICAgIC8vIFJlcXVl
c3QgZm9yIHBlcm1pc3Npb24gYmVmb3JlIGFjcXVpcmluZyB0aGUgbG9jYXRpb24uCisgICAgICAg
IG1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuYWRkKG5vdGlmaWVyKTsKKyAgICAgICAg
cmVxdWVzdFBlcm1pc3Npb24oKTsKKyAgICAgICAgcmV0dXJuIG5vdGlmaWVyLnJlbGVhc2UoKTsK
KyAgICB9CisjZW5kaWYKKworICAgIGFjcXVpcmVMb2NhdGlvbihub3RpZmllci5nZXQoKSk7Cisg
ICAgcmV0dXJuIG5vdGlmaWVyLnJlbGVhc2UoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6YWNx
dWlyZUxvY2F0aW9uKEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllciogbm90aWZpZXIpCit7CiAgICAg
Ly8gQ2hlY2sgd2hldGhlciBwZXJtaXNzaW9ucyBoYXZlIGFscmVhZHkgYmVlbiBkZW5pZWQuIE5v
dGUgdGhhdCBpZiB0aGlzIGlzIHRoZSBjYXNlLAotICAgIC8vIHRoZSBwZXJtaXNzaW9uIHN0YXRl
IGNhbiBub3QgY2hhbmdlIGFnYWluIGluIHRoZSBsaWZldGltZSBvZiB0aGlzIHBhZ2UuCisgICAg
Ly8gdGhlIHBlcm1pc3Npb24gc3RhdGUgY2FuIG5vdCBjaGFuZ2UgYWdhaW4gaW4gdGhlIGxpZmV0
aW1lIG9mIHRoaXMgZnJhbWUuCiAgICAgaWYgKGlzRGVuaWVkKCkpCiAgICAgICAgIG5vdGlmaWVy
LT5zZXRGYXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpQRVJN
SVNTSU9OX0RFTklFRCwgcGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOwotICAgIGVsc2Ug
aWYgKGhhdmVTdWl0YWJsZUNhY2hlZFBvc2l0aW9uKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkp
KQorICAgIGVsc2UgaWYgKGhhdmVTdWl0YWJsZUNhY2hlZFBvc2l0aW9uKG5vdGlmaWVyLT5tX29w
dGlvbnMuZ2V0KCksIG5vdGlmaWVyLT5tX2NyZWF0aW9uVGltZSkpCiAgICAgICAgIG5vdGlmaWVy
LT5zZXRVc2VDYWNoZWRQb3NpdGlvbigpOwogICAgIGVsc2UgaWYgKG5vdGlmaWVyLT5oYXNaZXJv
VGltZW91dCgpKQogICAgICAgICBub3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7Ci0jaWYg
VVNFKFBSRUVNUFRfR0VPTE9DQVRJT05fUEVSTUlTU0lPTikKLSAgICBlbHNlIGlmICghaXNBbGxv
d2VkKCkpIHsKLSAgICAgICAgLy8gaWYgd2UgZG9uJ3QgeWV0IGhhdmUgcGVybWlzc2lvbiwgcmVx
dWVzdCBmb3IgcGVybWlzc2lvbiBiZWZvcmUgY2FsbGluZyBzdGFydFVwZGF0aW5nKCkKLSAgICAg
ICAgbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVycy5hZGQobm90aWZpZXIpOwotICAgICAg
ICByZXF1ZXN0UGVybWlzc2lvbigpOwotICAgIH0KLSNlbmRpZgotICAgIGVsc2UgaWYgKHN0YXJ0
VXBkYXRpbmcobm90aWZpZXIuZ2V0KCkpKQorICAgIGVsc2UgaWYgKHN0YXJ0VXBkYXRpbmcobm90
aWZpZXIpKQogICAgICAgICBub3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7CiAgICAgZWxz
ZQogICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihQb3NpdGlvbkVycm9yOjpjcmVhdGUo
UG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIGZhaWxlZFRvU3RhcnRTZXJ2aWNl
RXJyb3JNZXNzYWdlKSk7Ci0KLSAgICByZXR1cm4gbm90aWZpZXIucmVsZWFzZSgpOwogfQogCiB2
b2lkIEdlb2xvY2F0aW9uOjpmYXRhbEVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb246Okdlb05vdGlm
aWVyKiBub3RpZmllcikKQEAgLTM4Nyw3ICszOTQsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpyZXF1
ZXN0VGltZWRPdXQoR2VvTm90aWZpZXIqIG5vdGlmaWVyKQogICAgICAgICBzdG9wVXBkYXRpbmco
KTsKIH0KIAotYm9vbCBHZW9sb2NhdGlvbjo6aGF2ZVN1aXRhYmxlQ2FjaGVkUG9zaXRpb24oUG9z
aXRpb25PcHRpb25zKiBvcHRpb25zKQorYm9vbCBHZW9sb2NhdGlvbjo6aGF2ZVN1aXRhYmxlQ2Fj
aGVkUG9zaXRpb24oUG9zaXRpb25PcHRpb25zKiBvcHRpb25zLCBET01UaW1lU3RhbXAgcmVxdWVz
dFRpbWUpCiB7CiAgICAgaWYgKCFtX3Bvc2l0aW9uQ2FjaGUtPmNhY2hlZFBvc2l0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM5NSw4ICs0MDIsOCBAQCBib29sIEdlb2xvY2F0aW9u
OjpoYXZlU3VpdGFibGVDYWNoZWRQb3NpdGlvbihQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICghb3B0aW9ucy0+bWF4aW11bUFnZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRE9NVGltZVN0YW1wIGN1cnJlbnRUaW1lTWlsbGlzID0g
Y29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChjdXJyZW50VGltZSgpKTsKLSAgICByZXR1cm4g
bV9wb3NpdGlvbkNhY2hlLT5jYWNoZWRQb3NpdGlvbigpLT50aW1lc3RhbXAoKSA+IGN1cnJlbnRU
aW1lTWlsbGlzIC0gb3B0aW9ucy0+bWF4aW11bUFnZSgpOworCisgICAgcmV0dXJuIG1fcG9zaXRp
b25DYWNoZS0+Y2FjaGVkUG9zaXRpb24oKS0+dGltZXN0YW1wKCkgPiByZXF1ZXN0VGltZSAtIG9w
dGlvbnMtPm1heGltdW1BZ2UoKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbjo6Y2xlYXJXYXRjaChp
bnQgd2F0Y2hJZCkKQEAgLTcyOCwxNiArNzM1LDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6aGFuZGxl
UGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMoKQogICAgIEdlb05vdGlmaWVyU2V0Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmVuZCgpOwogICAg
IGZvciAoR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3BlbmRpbmdGb3JQ
ZXJtaXNzaW9uTm90aWZpZXJzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAg
ICAgR2VvTm90aWZpZXIqIG5vdGlmaWVyID0gaXRlci0+Z2V0KCk7Ci0KLSAgICAgICAgaWYgKGlz
QWxsb3dlZCgpKSB7Ci0gICAgICAgICAgICAvLyBzdGFydCBhbGwgcGVuZGluZyBub3RpZmljYXRp
b24gcmVxdWVzdHMgYXMgcGVybWlzc2lvbiBncmFudGVkLgotICAgICAgICAgICAgLy8gVGhlIG5v
dGlmaWVyIGlzIGFsd2F5cyByZWYnZWQgYnkgbV9vbmVTaG90cyBvciBtX3dhdGNoZXJzLgotICAg
ICAgICAgICAgaWYgKHN0YXJ0VXBkYXRpbmcobm90aWZpZXIpKQotICAgICAgICAgICAgICAgIG5v
dGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9z
aXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJy
b3JNZXNzYWdlKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbm90aWZpZXItPnNldEZh
dGFsRXJyb3IoUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05f
REVOSUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIGFjcXVpcmVM
b2NhdGlvbihub3RpZmllcik7CiAgICAgfQogfQogI2VuZGlmCkBAIC03NTksNSArNzU3LDUgQEAg
R2VvbG9jYXRpb246On5HZW9sb2NhdGlvbigpIHt9CiB2b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0Fs
bG93ZWQoYm9vbCkge30KIAogfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKKwogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oIGIvV2ViQ29yZS9wYWdlL0dlb2xv
Y2F0aW9uLmgKaW5kZXggMzA2MjE0YjA4Mzc1MzU0MjJjMzExZjRlOWVmYjdiMTNhMDUyNjMzMi4u
YjE1OGVmNzQyN2U1YTM2ODZhY2IxZWViYzFkOGQ4MThlZDJhZDRkMCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL0dlb2xvY2F0aW9uLmgKKysrIGIvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgK
QEAgLTEwNCw2ICsxMDQsNyBAQCBwcml2YXRlOgogICAgICAgICBUaW1lcjxHZW9Ob3RpZmllcj4g
bV90aW1lcjsKICAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IG1fZmF0YWxFcnJvcjsKICAg
ICAgICAgYm9vbCBtX3VzZUNhY2hlZFBvc2l0aW9uOworICAgICAgICBET01UaW1lU3RhbXAgbV9j
cmVhdGlvblRpbWU7CiAKICAgICBwcml2YXRlOgogICAgICAgICBHZW9Ob3RpZmllcihHZW9sb2Nh
dGlvbiosIFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25F
cnJvckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+KTsKQEAgLTE2NSwxMCAr
MTY2LDExIEBAIHByaXZhdGU6CiAKICAgICBQYXNzUmVmUHRyPEdlb05vdGlmaWVyPiBzdGFydFJl
cXVlc3QoUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVy
cm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4pOwogCisgICAgdm9pZCBh
Y3F1aXJlTG9jYXRpb24oR2VvTm90aWZpZXIqKTsKICAgICB2b2lkIGZhdGFsRXJyb3JPY2N1cnJl
ZChHZW9Ob3RpZmllciopOwogICAgIHZvaWQgcmVxdWVzdFRpbWVkT3V0KEdlb05vdGlmaWVyKik7
CiAgICAgdm9pZCByZXF1ZXN0VXNlc0NhY2hlZFBvc2l0aW9uKEdlb05vdGlmaWVyKik7Ci0gICAg
Ym9vbCBoYXZlU3VpdGFibGVDYWNoZWRQb3NpdGlvbihQb3NpdGlvbk9wdGlvbnMqKTsKKyAgICBi
b29sIGhhdmVTdWl0YWJsZUNhY2hlZFBvc2l0aW9uKFBvc2l0aW9uT3B0aW9ucyosIERPTVRpbWVT
dGFtcCk7CiAgICAgdm9pZCBtYWtlQ2FjaGVkUG9zaXRpb25DYWxsYmFja3MoKTsKIAogICAgIEdl
b05vdGlmaWVyU2V0IG1fb25lU2hvdHM7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>