<?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>65214</bug_id>
          
          <creation_ts>2011-07-26 15:53:42 -0700</creation_ts>
          <short_desc>REGRESSION (Safari 5.1): JavaScript dialogs not usable with VoiceOver</short_desc>
          <delta_ts>2011-08-01 15:48:03 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>marrie12</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>442587</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-26 15:53:42 -0700</bug_when>
    <thetext>* STEPS TO REPRODUCE:
1) GO to any website with a dialog like this one.
2) Enter whatever is required to make it appear.

* EXPECTED RESULTS:
VoiceOver should read the dialogs.

* ACTUAL RESULTS:
VoiceOver seems to think Safari is freezing, and maybe it is. You cannot navigate the dialog or get any information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442588</commentid>
    <comment_count>1</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-26 15:54:10 -0700</bug_when>
    <thetext>In WK2 JS alerts cause WebProcess to stall, making it unable to service AX requests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442589</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-26 15:54:24 -0700</bug_when>
    <thetext>rdar://9601778</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442591</commentid>
    <comment_count>3</comment_count>
      <attachid>102068</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-26 15:56:39 -0700</bug_when>
    <thetext>Created attachment 102068
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442593</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 15:59:16 -0700</bug_when>
    <thetext>Attachment 102068 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/Platform/CoreIPC/Connection.h:212:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:213:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442621</commentid>
    <comment_count>5</comment_count>
      <attachid>102068</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-07-26 16:47:08 -0700</bug_when>
    <thetext>Comment on attachment 102068
patch

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

Overall, I really like this patch; this is pretty much how I&apos;d have implemented it myself. Great job, Chris! I&apos;ll r- it so you can upload a new patch with the suggested changes.

&gt; Source/WebKit2/Platform/CoreIPC/Connection.cpp:477
&gt; +#if PLATFORM(MAC)
&gt; +            RunLoop::current()-&gt;runForDuration(.25);
&gt; +            timeout = currentTime() &gt;= absoluteTime;
&gt;  #endif

It looks like this will do a busy-wait and wake up the CPU 4 times a second when we&apos;re in this state.

Fixing this is tricky - we&apos;d need a way to know when a nested run loop is running so we can quit it when we time out or receive a response.
I think for now you could just run the run loop forever and add a FIXME to fix this (since this is only used with messages that have an infinite timeout).

&gt;&gt; Source/WebKit2/Platform/CoreIPC/Connection.h:212
&gt;&gt; +    PassOwnPtr&lt;ArgumentDecoder&gt; sendSyncMessage(MessageID, uint64_t syncRequestID, PassOwnPtr&lt;ArgumentEncoder&gt;, double timeout, bool continueRunLoop = false);
&gt; 
&gt; Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]

Instead of using a boolean here, it would be better to add a flags enum, similar to the MessageSendFlags enum we have for async messages. You could call it SyncMessageSendFlags and use an unsigned flags = 0 instead of the boolean parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442629</commentid>
    <comment_count>6</comment_count>
      <attachid>102075</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-26 17:10:52 -0700</bug_when>
    <thetext>Created attachment 102075
patch

Thanks for the review. I think this addresses your points</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442630</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 17:12:42 -0700</bug_when>
    <thetext>Attachment 102075 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/Platform/CoreIPC/Connection.h:217:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:218:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442847</commentid>
    <comment_count>8</comment_count>
      <attachid>102075</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-27 04:53:33 -0700</bug_when>
    <thetext>Comment on attachment 102075
patch

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

&gt; Source/WebKit2/Platform/CoreIPC/Connection.cpp:477
&gt; +            RunLoop::current()-&gt;runForDuration(1e10);

Won&apos;t this allow timers to fire, other messages to be processed, etc.? That doesn&apos;t seem good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442953</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-27 08:53:40 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 102075 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102075&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Platform/CoreIPC/Connection.cpp:477
&gt; &gt; +            RunLoop::current()-&gt;runForDuration(1e10);
&gt; 
&gt; Won&apos;t this allow timers to fire, other messages to be processed, etc.? That doesn&apos;t seem good.

It will, but that&apos;s also part of the idea, that Accessibility messages need to be processed while waiting, otherwise accessibility clients will hang.

This is also what happens in WK1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442995</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-27 10:41:33 -0700</bug_when>
    <thetext>Will this allow running arbitrary JavaScript code, loader callbacks etc. below an alert? That would certainly be a big problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443026</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-27 11:20:57 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Will this allow running arbitrary JavaScript code, loader callbacks etc. below an alert? That would certainly be a big problem.

i suspect not because because the web page is still blocked waiting for it&apos;s work to finish</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443027</commentid>
    <comment_count>12</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-27 11:22:07 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Will this allow running arbitrary JavaScript code, loader callbacks etc. below an alert? That would certainly be a big problem.
&gt; 
&gt; i suspect not because because the web page is still blocked waiting for it&apos;s work to finish

(In reply to comment #10)
&gt; Will this allow running arbitrary JavaScript code, loader callbacks etc. below an alert? That would certainly be a big problem.

Also, any other ideas on how to make this work are welcome</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443034</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-27 11:34:17 -0700</bug_when>
    <thetext>Anders reminded me that just like with WK1, it&apos;s still WebCore&apos;s job to defer loading, pause timers etc. while displaying modal windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443036</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-27 11:34:37 -0700</bug_when>
    <thetext>(which it&apos;s still doing for the most part, of course)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443520</commentid>
    <comment_count>15</comment_count>
      <attachid>102075</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-07-28 09:46:32 -0700</bug_when>
    <thetext>Comment on attachment 102075
patch

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

&gt;&gt;&gt; Source/WebKit2/Platform/CoreIPC/Connection.cpp:477
&gt;&gt;&gt; +            RunLoop::current()-&gt;runForDuration(1e10);
&gt;&gt; 
&gt;&gt; Won&apos;t this allow timers to fire, other messages to be processed, etc.? That doesn&apos;t seem good.
&gt; 
&gt; It will, but that&apos;s also part of the idea, that Accessibility messages need to be processed while waiting, otherwise accessibility clients will hang.
&gt; 
&gt; This is also what happens in WK1

Since we only ever call this with a big value, we could just use RunLoop::run() here and not add runForDuration at all.

&gt; Source/WebKit2/Platform/CoreIPC/Connection.h:67
&gt; +    SpinRunLoopWhileWaitingForReplay = 1 &lt;&lt; 0,

Typo, &quot;Replay&quot; instead of &quot;Reply&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443527</commentid>
    <comment_count>16</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-28 10:01:06 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 102075 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102075&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/Platform/CoreIPC/Connection.cpp:477
&gt; &gt;&gt;&gt; +            RunLoop::current()-&gt;runForDuration(1e10);
&gt; &gt;&gt; 
&gt; &gt;&gt; Won&apos;t this allow timers to fire, other messages to be processed, etc.? That doesn&apos;t seem good.
&gt; &gt; 
&gt; &gt; It will, but that&apos;s also part of the idea, that Accessibility messages need to be processed while waiting, otherwise accessibility clients will hang.
&gt; &gt; 
&gt; &gt; This is also what happens in WK1
&gt; 
&gt; Since we only ever call this with a big value, we could just use RunLoop::run() here and not add runForDuration at all.
&gt; 

If we do that, then run() ends up calling [NSApplication run] which does not return. runForDuration uses CFRunLoopRunInMode which will return back each time it handles an event so that we don&apos;t continue adding run loops on top of each other




&gt; &gt; Source/WebKit2/Platform/CoreIPC/Connection.h:67
&gt; &gt; +    SpinRunLoopWhileWaitingForReplay = 1 &lt;&lt; 0,
&gt; 
&gt; Typo, &quot;Replay&quot; instead of &quot;Reply&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443556</commentid>
    <comment_count>17</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-07-28 10:39:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/91939</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444945</commentid>
    <comment_count>18</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-08-01 15:48:03 -0700</bug_when>
    <thetext>*** Bug 65425 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102068</attachid>
            <date>2011-07-26 15:56:39 -0700</date>
            <delta_ts>2011-07-26 17:10:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10349</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDkxNjY5KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNT
dG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJTZWFyY2hQb3B1
cE1lbnUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVJY29uTG9hZGVyLmg+CkBAIC0zMTIsNyArMzEzLDgg
QEAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgbV9wYWdlLT5pbmplY3Rl
ZEJ1bmRsZVVJQ2xpZW50KCkud2lsbFJ1bkphdmFTY3JpcHRBbGVydChtX3BhZ2UsIGFsZXJ0VGV4
dCwgd2ViRnJhbWUpOwogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQod2ViRnJh
bWUtPmZyYW1lSUQoKSwgYWxlcnRUZXh0KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2
YVNjcmlwdEFsZXJ0OjpSZXBseSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBib29sIHNwaW5S
dW5Mb29wV2hpbGVXYWl0aW5nID0gV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0
eUVuYWJsZWQoKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydCh3ZWJGcmFtZS0+
ZnJhbWVJRCgpLCBhbGVydFRleHQpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2Ny
aXB0QWxlcnQ6OlJlcGx5KCksIG1fcGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkNvbm5lY3Rpb246
OkRlZmF1bHRUaW1lb3V0LCBzcGluUnVuTG9vcFdoaWxlV2FpdGluZyk7CiB9CiAKIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZSogZnJhbWUsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKQEAgLTMyMiw4ICszMjQsOSBAQAogICAgIC8vIE5vdGlmeSB0aGUgYnVu
ZGxlIGNsaWVudC4KICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS53aWxsUnVu
SmF2YVNjcmlwdENvbmZpcm0obV9wYWdlLCBtZXNzYWdlLCB3ZWJGcmFtZSk7CiAKKyAgICBib29s
IHNwaW5SdW5Mb29wV2hpbGVXYWl0aW5nID0gV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YWNjZXNz
aWJpbGl0eUVuYWJsZWQoKTsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIGlmICghV2Vi
UHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybSh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBtZXNzYWdl
KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OlJlcGx5KHJl
c3VsdCksIG1fcGFnZS0+cGFnZUlEKCkpKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCku
Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2Ny
aXB0Q29uZmlybSh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBtZXNzYWdlKSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OlJlcGx5KHJlc3VsdCksIG1fcGFnZS0+cGFn
ZUlEKCksIENvcmVJUEM6OkNvbm5lY3Rpb246OkRlZmF1bHRUaW1lb3V0LCBzcGluUnVuTG9vcFdo
aWxlV2FpdGluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiByZXN1bHQ7
CkBAIC0zMzYsNyArMzM5LDggQEAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAg
ICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkud2lsbFJ1bkphdmFTY3JpcHRQcm9t
cHQobV9wYWdlLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUsIHdlYkZyYW1lKTsKIAotICAgIGlmICgh
V2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0KHdlYkZyYW1lLT5mcmFtZUlEKCksIG1lc3Nh
Z2UsIGRlZmF1bHRWYWx1ZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQ
cm9tcHQ6OlJlcGx5KHJlc3VsdCksIG1fcGFnZS0+cGFnZUlEKCkpKQorICAgIGJvb2wgc3BpblJ1
bkxvb3BXaGlsZVdhaXRpbmcgPSBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5
RW5hYmxlZCgpOworICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0KHdlYkZy
YW1lLT5mcmFtZUlEKCksIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSksIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQ6OlJlcGx5KHJlc3VsdCksIG1fcGFnZS0+cGFnZUlE
KCksIENvcmVJUEM6OkNvbm5lY3Rpb246OkRlZmF1bHRUaW1lb3V0LCBzcGluUnVuTG9vcFdoaWxl
V2FpdGluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiAhcmVzdWx0Lmlz
TnVsbCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUnVuTG9vcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1J1bkxvb3AuaAkocmV2aXNpb24gOTE2Njkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9SdW5Mb29wLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY4LDYgKzY4LDEwIEBACiAgICAgc3RhdGljIHZvaWQgcnVuKCk7CiAgICAgdm9pZCBzdG9wKCk7
CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBydW5Gb3JEdXJhdGlvbihkb3VibGUgZHVy
YXRpb24pOworI2VuZGlmCisgICAgCiAgICAgY2xhc3MgVGltZXJCYXNlIHsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIFJ1bkxvb3A7CiAgICAgcHVibGljOgpJbmRleDogU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiA5MTY2OSkKKysrIFNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4NCw3ICszODQsNyBAQAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzT3du
UHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJ
RCBtZXNzYWdlSUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8QXJndW1lbnRF
bmNvZGVyPiBlbmNvZGVyLCBkb3VibGUgdGltZW91dCkKK1Bhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgdWlu
dDY0X3Qgc3luY1JlcXVlc3RJRCwgUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGVuY29kZXIs
IGRvdWJsZSB0aW1lb3V0LCBib29sIGNvbnRpbnVlUnVuTG9vcCkKIHsKICAgICAvLyBXZSBvbmx5
IGFsbG93IHNlbmRpbmcgc3luYyBtZXNzYWdlcyBmcm9tIHRoZSBjbGllbnQgcnVuIGxvb3AuCiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmN1cnJlbnQoKSA9PSBtX2NsaWVudFJ1bkxvb3ApOwpAQCAtNDEx
LDcgKzQxMSw3IEBACiAgICAgLy8gVGhlbiB3YWl0IGZvciBhIHJlcGx5LiBXYWl0aW5nIGZvciBh
IHJlcGx5IGNvdWxkIGludm9sdmUgZGlzcGF0Y2hpbmcgaW5jb21pbmcgc3luYyBtZXNzYWdlcywg
c28KICAgICAvLyBrZWVwIGFuIGV4dHJhIHJlZmVyZW5jZSB0byB0aGUgY29ubmVjdGlvbiBoZXJl
IGluIGNhc2UgaXQncyBpbnZhbGlkYXRlZC4KICAgICBSZWZQdHI8Q29ubmVjdGlvbj4gcHJvdGVj
dCh0aGlzKTsKLSAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiByZXBseSA9IHdhaXRGb3JTeW5j
UmVwbHkoc3luY1JlcXVlc3RJRCwgdGltZW91dCk7CisgICAgT3duUHRyPEFyZ3VtZW50RGVjb2Rl
cj4gcmVwbHkgPSB3YWl0Rm9yU3luY1JlcGx5KHN5bmNSZXF1ZXN0SUQsIHRpbWVvdXQsIGNvbnRp
bnVlUnVuTG9vcCk7CiAKICAgICAvLyBGaW5hbGx5LCBwb3AgdGhlIHBlbmRpbmcgc3luYyByZXBs
eSBpbmZvcm1hdGlvbi4KICAgICB7CkBAIC00MjYsNyArNDI2LDcgQEAKICAgICByZXR1cm4gcmVw
bHkucmVsZWFzZSgpOwogfQogCi1QYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBkb3VibGUgdGltZW91
dCkKK1Bhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1Jl
cGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIGRvdWJsZSB0aW1lb3V0LCBib29sIGNvbnRpbnVl
UnVuTG9vcCkKIHsKICAgICBpZiAodGltZW91dCA9PSBEZWZhdWx0VGltZW91dCkKICAgICAgICAg
dGltZW91dCA9IG1fZGVmYXVsdFN5bmNNZXNzYWdlVGltZW91dDsKQEAgLTQ2Nyw4ICs0NjcsMTgg
QEAKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIHRpbWVkT3V0ID0gIW1fc3luY01lc3NhZ2VT
dGF0ZS0+d2FpdFdoaWxlRGlzcGF0Y2hpbmdTZW50V2luMzJNZXNzYWdlcyhhYnNvbHV0ZVRpbWUs
IG1fY2xpZW50LT53aW5kb3dzVG9SZWNlaXZlU2VudE1lc3NhZ2VzV2hpbGVXYWl0aW5nRm9yU3lu
Y1JlcGx5KCkpOwogI2Vsc2UKLSAgICAgICAgdGltZWRPdXQgPSAhbV9zeW5jTWVzc2FnZVN0YXRl
LT53YWl0KGFic29sdXRlVGltZSk7CisKKyAgICAgICAgLy8gVGhpcyBhbGxvd3MgdGhlIFdlYlBy
b2Nlc3MgdG8gc3RpbGwgc2VydmUgY2xpZW50cyB3aGlsZSB3YWl0aW5nIGZvciB0aGUgbWVzc2Fn
ZSB0byByZXR1cm4uIAorICAgICAgICAvLyBOb3RhYmx5LCBpdCBjYW4gY29udGludWUgdG8gcHJv
Y2VzcyBhY2Nlc3NpYmlsaXR5IHJlcXVlc3RzLCB3aGljaCBhcmUgb24gdGhlIG1haW4gdGhyZWFk
LgorICAgICAgICBpZiAoY29udGludWVSdW5Mb29wKSB7CisjaWYgUExBVEZPUk0oTUFDKQorICAg
ICAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLT5ydW5Gb3JEdXJhdGlvbiguMjUpOworICAgICAg
ICAgICAgdGltZW91dCA9IGN1cnJlbnRUaW1lKCkgPj0gYWJzb2x1dGVUaW1lOwogI2VuZGlmCisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGltZWRPdXQgPSAhbV9zeW5jTWVzc2FnZVN0YXRl
LT53YWl0KGFic29sdXRlVGltZSk7CisjZW5kaWYKKyAgICAgICAgCiAgICAgfQogCiAgICAgLy8g
V2UgdGltZWQgb3V0LgpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25u
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9D
b25uZWN0aW9uLmgJKHJldmlzaW9uIDkxNjY5KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQAog
ICAgIHN0YXRpYyBjb25zdCBpbnQgTm9UaW1lb3V0ID0gLTE7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIHNlbmQoY29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncyA9IDApOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGJvb2wgc2VuZFN5bmMoY29uc3QgVCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUgVDo6UmVw
bHkmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCA9IERlZmF1
bHRUaW1lb3V0KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKGNvbnN0
IFQmIG1lc3NhZ2UsIGNvbnN0IHR5cGVuYW1lIFQ6OlJlcGx5JiByZXBseSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQgPSBEZWZhdWx0VGltZW91dCwgYm9vbCBjb250aW51
ZVJ1bkxvb3AgPSBmYWxzZSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9y
QW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGlt
ZW91dCk7CiAKICAgICBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gY3JlYXRlU3luY01lc3Nh
Z2VBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNS
ZXF1ZXN0SUQpOwpAQCAtMjA5LDggKzIwOSw4IEBACiAgICAgCiAgICAgUGFzc093blB0cjxBcmd1
bWVudERlY29kZXI+IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJRCwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgZG91YmxlIHRpbWVvdXQpOwogICAgIAotICAgIFBhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlELCB1aW50NjRfdCBzeW5jUmVxdWVzdElELCBQ
YXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4sIGRvdWJsZSB0aW1lb3V0KTsKLSAgICBQYXNzT3du
UHRyPEFyZ3VtZW50RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBkb3VibGUgdGltZW91dCk7CisgICAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IHNl
bmRTeW5jTWVzc2FnZShNZXNzYWdlSUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25Q
dHI8QXJndW1lbnRFbmNvZGVyPiwgZG91YmxlIHRpbWVvdXQsIGJvb2wgY29udGludWVSdW5Mb29w
ID0gZmFsc2UpOworICAgIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiB3YWl0Rm9yU3luY1Jl
cGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIGRvdWJsZSB0aW1lb3V0LCBib29sIGNvbnRpbnVl
UnVuTG9vcCk7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIGNvbm5lY3Rpb24gd29yayBxdWV1ZS4K
ICAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVzc2FnZUlELCBQYXNzT3duUHRyPEFy
Z3VtZW50RGVjb2Rlcj4pOwpAQCAtMzYwLDcgKzM2MCw3IEBACiAgICAgcmV0dXJuIHNlbmRNZXNz
YWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBhcmd1bWVudEVuY29kZXIucmVsZWFzZSgpLCBt
ZXNzYWdlU2VuZEZsYWdzKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0
aW9uOjpzZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZSBUOjpSZXBseSYg
cmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0KQordGVtcGxhdGU8
dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBj
b25zdCB0eXBlbmFtZSBUOjpSZXBseSYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRv
dWJsZSB0aW1lb3V0LCBib29sIGNvbnRpbnVlUnVuTG9vcCkKIHsKICAgICB1aW50NjRfdCBzeW5j
UmVxdWVzdElEID0gMDsKICAgICBPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29k
ZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUFyZ3VtZW50RW5jb2RlcihkZXN0aW5hdGlvbklELCBzeW5j
UmVxdWVzdElEKTsKQEAgLTM2OSw3ICszNjksNyBAQAogICAgIGFyZ3VtZW50RW5jb2Rlci0+ZW5j
b2RlKG1lc3NhZ2UpOwogCiAgICAgLy8gTm93IHNlbmQgdGhlIG1lc3NhZ2UgYW5kIHdhaXQgZm9y
IGEgcmVwbHkuCi0gICAgT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gcmVwbHlEZWNvZGVyID0gc2Vu
ZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBzeW5jUmVxdWVzdElELCBhcmd1
bWVudEVuY29kZXIucmVsZWFzZSgpLCB0aW1lb3V0KTsKKyAgICBPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEKFQ6Om1lc3NhZ2VJ
RCksIHN5bmNSZXF1ZXN0SUQsIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCksIHRpbWVvdXQsIGNv
bnRpbnVlUnVuTG9vcCk7CiAgICAgaWYgKCFyZXBseURlY29kZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1J1bkxvb3BNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1J1bkxvb3BNYWMubW0J
KHJldmlzaW9uIDkxNjY5KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1J1bkxvb3BN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBACiAgICAgfSAgICAgICAgCiB9
CiAKK3ZvaWQgUnVuTG9vcDo6cnVuRm9yRHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQoreworICAg
IENGUnVuTG9vcFJ1bkluTW9kZShrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIGR1cmF0aW9uLCB0cnVl
KTsKK30KKwogdm9pZCBSdW5Mb29wOjpzdG9wKCkKIHsKICAgICBBU1NFUlQobV9ydW5Mb29wID09
IENGUnVuTG9vcEdldEN1cnJlbnQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTc5NSkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3
IEBACisyMDExLTA3LTI2ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisK
KyAgICAgICAgUkVHUkVTU0lPTiAoU2FmYXJpIDUuMSk6IEphdmFTY3JpcHQgZGlhbG9ncyBub3Qg
dXNhYmxlIHdpdGggVm9pY2VPdmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NTIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFsbG93IHRoZSBhYmlsaXR5IHRvIHNwaW4gdGhlIHJ1biBsb29wIHdoaWxl
IFdlYlByb2Nlc3MgaXMgd2FpdGluZyBmb3IgYSBzeW5jaHJvbm91cyByZXBseS4KKyAgICAgICAg
VGhpcyBhbGxvd3MgaXQgdG8gY29udGludWUgdG8gc2VydmUgYWNjZXNzaWJpbGl0eSByZXF1ZXN0
cyB3aGlsZSB3YWl0aW5nIGFuZCBiYXNpY2FsbHkKKyAgICAgICAgcmVzdG9yZXMgdGhlIGJlaGF2
aW9yIFdLMSB3YXMgcHJlc2VudGluZy4gVGhpcyBwYXRjaCBvbmx5IGVuYWJsZXMgdGhpcyBtb2Rl
IHdoZW4gYWNjZXNzaWJpbGl0eSBpcyBvbi4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMv
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY01l
c3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6
CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChDb3Jl
SVBDOjpDb25uZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgICogUGxhdGZvcm0vUnVuTG9vcC5o
OgorICAgICAgICAqIFBsYXRmb3JtL21hYy9SdW5Mb29wTWFjLm1tOgorICAgICAgICAoUnVuTG9v
cDo6cnVuRm9yRHVyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1
bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0UHJvbXB0KToKKwogMjAxMS0wNy0yNiAgVGltIEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBBcHBseSByNDA5NDAgdG8gV2ViS2l0MiB0byB3
b3JrIGFyb3VuZCBhIFNpbHZlcmxpZ2h0IGNyYXNoLgo=
</data>
<flag name="review"
          id="97199"
          type_id="1"
          status="-"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102075</attachid>
            <date>2011-07-26 17:10:52 -0700</date>
            <delta_ts>2011-07-28 09:46:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>11092</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDkxNjY5KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNT
dG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJTZWFyY2hQb3B1
cE1lbnUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVJY29uTG9hZGVyLmg+CkBAIC0zMTIsNyArMzEzLDgg
QEAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgbV9wYWdlLT5pbmplY3Rl
ZEJ1bmRsZVVJQ2xpZW50KCkud2lsbFJ1bkphdmFTY3JpcHRBbGVydChtX3BhZ2UsIGFsZXJ0VGV4
dCwgd2ViRnJhbWUpOwogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQod2ViRnJh
bWUtPmZyYW1lSUQoKSwgYWxlcnRUZXh0KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2
YVNjcmlwdEFsZXJ0OjpSZXBseSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICB1bnNpZ25lZCBz
eW5jU2VuZEZsYWdzID0gKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFi
bGVkKCkpID8gQ29yZUlQQzo6U3BpblJ1bkxvb3BXaGlsZVdhaXRpbmdGb3JSZXBsYXkgOiAwOwor
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0KHdlYkZyYW1lLT5mcmFtZUlEKCksIGFs
ZXJ0VGV4dCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6UmVw
bHkoKSwgbV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6RGVmYXVsdFRpbWVv
dXQsIHN5bmNTZW5kRmxhZ3MpOwogfQogCiBib29sIFdlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNj
cmlwdENvbmZpcm0oRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0zMjIs
OCArMzI0LDkgQEAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgbV9wYWdl
LT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkud2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKG1fcGFn
ZSwgbWVzc2FnZSwgd2ViRnJhbWUpOwogCisgICAgdW5zaWduZWQgc3luY1NlbmRGbGFncyA9IChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKSA/IENvcmVJUEM6
OlNwaW5SdW5Mb29wV2hpbGVXYWl0aW5nRm9yUmVwbGF5IDogMDsKICAgICBib29sIHJlc3VsdCA9
IGZhbHNlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybSh3ZWJGcmFt
ZS0+ZnJhbWVJRCgpLCBtZXNzYWdlKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNj
cmlwdENvbmZpcm06OlJlcGx5KHJlc3VsdCksIG1fcGFnZS0+cGFnZUlEKCkpKQorICAgIGlmICgh
V2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybSh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBtZXNz
YWdlKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OlJlcGx5
KHJlc3VsdCksIG1fcGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkNvbm5lY3Rpb246OkRlZmF1bHRU
aW1lb3V0LCBzeW5jU2VuZEZsYWdzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTMzNiw3ICszMzksOCBAQAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxl
IGNsaWVudC4KICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS53aWxsUnVuSmF2
YVNjcmlwdFByb21wdChtX3BhZ2UsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgd2ViRnJhbWUpOwog
Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRQcm9tcHQod2ViRnJhbWUtPmZyYW1l
SUQoKSwgbWVzc2FnZSwgZGVmYXVsdFZhbHVlKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVu
SmF2YVNjcmlwdFByb21wdDo6UmVwbHkocmVzdWx0KSwgbV9wYWdlLT5wYWdlSUQoKSkpCisgICAg
dW5zaWduZWQgc3luY1NlbmRGbGFncyA9IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjphY2Nlc3Np
YmlsaXR5RW5hYmxlZCgpKSA/IENvcmVJUEM6OlNwaW5SdW5Mb29wV2hpbGVXYWl0aW5nRm9yUmVw
bGF5IDogMDsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdFByb21wdCh3ZWJGcmFt
ZS0+ZnJhbWVJRCgpLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUpLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSdW5KYXZhU2NyaXB0UHJvbXB0OjpSZXBseShyZXN1bHQpLCBtX3BhZ2UtPnBhZ2VJRCgp
LCBDb3JlSVBDOjpDb25uZWN0aW9uOjpEZWZhdWx0VGltZW91dCwgc3luY1NlbmRGbGFncykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiAhcmVzdWx0LmlzTnVsbCgpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUnVuTG9vcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL1J1bkxvb3AuaAkocmV2aXNpb24gOTE2NjkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9SdW5Mb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDEw
IEBACiAgICAgc3RhdGljIHZvaWQgcnVuKCk7CiAgICAgdm9pZCBzdG9wKCk7CiAKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgdm9pZCBydW5Gb3JEdXJhdGlvbihkb3VibGUgZHVyYXRpb24pOworI2Vu
ZGlmCisgICAgCiAgICAgY2xhc3MgVGltZXJCYXNlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIFJ1
bkxvb3A7CiAgICAgcHVibGljOgpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Db25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiA5MTY2OSkKKysrIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NCw3
ICszODQsNyBAQAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzT3duUHRyPEFyZ3VtZW50
RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQs
IHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBlbmNv
ZGVyLCBkb3VibGUgdGltZW91dCkKK1Bhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBDb25uZWN0
aW9uOjpzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgdWludDY0X3Qgc3luY1Jl
cXVlc3RJRCwgUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGVuY29kZXIsIGRvdWJsZSB0aW1l
b3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQogewogICAgIC8vIFdlIG9ubHkgYWxsb3cgc2Vu
ZGluZyBzeW5jIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudCBydW4gbG9vcC4KICAgICBBU1NFUlQo
UnVuTG9vcDo6Y3VycmVudCgpID09IG1fY2xpZW50UnVuTG9vcCk7CkBAIC00MTEsNyArNDExLDcg
QEAKICAgICAvLyBUaGVuIHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkgY291
bGQgaW52b2x2ZSBkaXNwYXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAgIC8v
IGtlZXAgYW4gZXh0cmEgcmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2FzZSBp
dCdzIGludmFsaWRhdGVkLgogICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0KHRoaXMpOwot
ICAgIE93blB0cjxBcmd1bWVudERlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5j
UmVxdWVzdElELCB0aW1lb3V0KTsKKyAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiByZXBseSA9
IHdhaXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwgdGltZW91dCwgc3luY1NlbmRGbGFncyk7
CiAKICAgICAvLyBGaW5hbGx5LCBwb3AgdGhlIHBlbmRpbmcgc3luYyByZXBseSBpbmZvcm1hdGlv
bi4KICAgICB7CkBAIC00MjYsNyArNDI2LDcgQEAKICAgICByZXR1cm4gcmVwbHkucmVsZWFzZSgp
OwogfQogCi1QYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5
bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBkb3VibGUgdGltZW91dCkKK1Bhc3NPd25Q
dHI8QXJndW1lbnREZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90
IHN5bmNSZXF1ZXN0SUQsIGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQog
ewogICAgIGlmICh0aW1lb3V0ID09IERlZmF1bHRUaW1lb3V0KQogICAgICAgICB0aW1lb3V0ID0g
bV9kZWZhdWx0U3luY01lc3NhZ2VUaW1lb3V0OwpAQCAtNDY3LDggKzQ2NywyMCBAQAogI2lmIFBM
QVRGT1JNKFdJTikKICAgICAgICAgdGltZWRPdXQgPSAhbV9zeW5jTWVzc2FnZVN0YXRlLT53YWl0
V2hpbGVEaXNwYXRjaGluZ1NlbnRXaW4zMk1lc3NhZ2VzKGFic29sdXRlVGltZSwgbV9jbGllbnQt
PndpbmRvd3NUb1JlY2VpdmVTZW50TWVzc2FnZXNXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkoKSk7
CiAjZWxzZQotICAgICAgICB0aW1lZE91dCA9ICFtX3N5bmNNZXNzYWdlU3RhdGUtPndhaXQoYWJz
b2x1dGVUaW1lKTsKKworICAgICAgICAvLyBUaGlzIGFsbG93cyB0aGUgV2ViUHJvY2VzcyB0byBz
dGlsbCBzZXJ2ZSBjbGllbnRzIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSBtZXNzYWdlIHRvIHJldHVy
bi4gCisgICAgICAgIC8vIE5vdGFibHksIGl0IGNhbiBjb250aW51ZSB0byBwcm9jZXNzIGFjY2Vz
c2liaWxpdHkgcmVxdWVzdHMsIHdoaWNoIGFyZSBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAg
IGlmIChzeW5jU2VuZEZsYWdzICYgU3BpblJ1bkxvb3BXaGlsZVdhaXRpbmdGb3JSZXBsYXkpIHsK
KyNpZiBQTEFURk9STShNQUMpCisgICAgICAgICAgICAvLyBGSVhNRTogQWx0aG91Z2ggd2UgcnVu
IGZvcmV2ZXIsIGFueSBldmVudHMgaW5jb21pbmcgd2lsbCBjYXVzZSB1cyB0byBkcm9wIG91dCBh
bmQgZXhpdCBvdXQuIElkZWFsbHksIHdlJ2QKKyAgICAgICAgICAgIC8vIGxpa2UgdG8gYmFjayBv
dXQgb2YgdGhpcyBuZXN0ZWQgcnVuIGxvb3AgYXMgc29vbiBhcyB0aGUgbWVzc2FnZSBjb21lcyBp
biwgYnV0IHRoYXQgaXMgdHJpY2t5LgorICAgICAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLT5y
dW5Gb3JEdXJhdGlvbigxZTEwKTsKKyAgICAgICAgICAgIHRpbWVvdXQgPSBjdXJyZW50VGltZSgp
ID49IGFic29sdXRlVGltZTsKICNlbmRpZgorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRp
bWVkT3V0ID0gIW1fc3luY01lc3NhZ2VTdGF0ZS0+d2FpdChhYnNvbHV0ZVRpbWUpOworI2VuZGlm
CisgICAgICAgIAogICAgIH0KIAogICAgIC8vIFdlIHRpbWVkIG91dC4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCShyZXZpc2lvbiA5MTY2OSkK
KysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw2ICs2MiwxMSBAQAogICAgIERpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseSA9IDEgPDwgMCwKIH07CiAKK2VudW0gU3luY01lc3NhZ2VTZW5kRmxh
Z3MgeworICAgIC8vIFdpbGwgYWxsb3cgZXZlbnRzIHRvIGNvbnRpbnVlIGJlaW5nIGhhbmRsZWQg
d2hpbGUgd2FpdGluZyBmb3IgdGhlIHN5bmNoIHJlcGx5LgorICAgIFNwaW5SdW5Mb29wV2hpbGVX
YWl0aW5nRm9yUmVwbGF5ID0gMSA8PCAwLAorfTsKKyAgICAKICNkZWZpbmUgTUVTU0FHRV9DSEVD
S19CQVNFKGFzc2VydGlvbiwgY29ubmVjdGlvbikgZG8gXAogICAgIGlmICghKGFzc2VydGlvbikp
IHsgXAogICAgICAgICBBU1NFUlQoYXNzZXJ0aW9uKTsgXApAQCAtMTQ4LDcgKzE1Myw3IEBACiAg
ICAgc3RhdGljIGNvbnN0IGludCBOb1RpbWVvdXQgPSAtMTsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgc2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzID0gMCk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBzZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZSBUOjpSZXBs
eSYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0ID0gRGVmYXVs
dFRpbWVvdXQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoY29uc3Qg
VCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUgVDo6UmVwbHkmIHJlcGx5LCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBkb3VibGUgdGltZW91dCA9IERlZmF1bHRUaW1lb3V0LCB1bnNpZ25lZCBzeW5j
U2VuZEZsYWdzID0gMCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5k
RGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91
dCk7CiAKICAgICBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VB
cmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1
ZXN0SUQpOwpAQCAtMjA5LDggKzIxNCw4IEBACiAgICAgCiAgICAgUGFzc093blB0cjxBcmd1bWVu
dERlY29kZXI+IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgZG91YmxlIHRpbWVvdXQpOwogICAgIAotICAgIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVy
PiBzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlELCB1aW50NjRfdCBzeW5jUmVxdWVzdElELCBQYXNz
T3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4sIGRvdWJsZSB0aW1lb3V0KTsKLSAgICBQYXNzT3duUHRy
PEFyZ3VtZW50RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElE
LCBkb3VibGUgdGltZW91dCk7CisgICAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IHNlbmRT
eW5jTWVzc2FnZShNZXNzYWdlSUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8
QXJndW1lbnRFbmNvZGVyPiwgZG91YmxlIHRpbWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3Mg
PSAwKTsKKyAgICBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1
aW50NjRfdCBzeW5jUmVxdWVzdElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRG
bGFncyk7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIGNvbm5lY3Rpb24gd29yayBxdWV1ZS4KICAg
ICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVzc2FnZUlELCBQYXNzT3duUHRyPEFyZ3Vt
ZW50RGVjb2Rlcj4pOwpAQCAtMzYwLDcgKzM2NSw3IEBACiAgICAgcmV0dXJuIHNlbmRNZXNzYWdl
KE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBhcmd1bWVudEVuY29kZXIucmVsZWFzZSgpLCBtZXNz
YWdlU2VuZEZsYWdzKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9u
OjpzZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZSBUOjpSZXBseSYgcmVw
bHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0KQordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBjb25z
dCB0eXBlbmFtZSBUOjpSZXBseSYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJs
ZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQogewogICAgIHVpbnQ2NF90IHN5bmNS
ZXF1ZXN0SUQgPSAwOwogICAgIE93blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2Rl
ciA9IGNyZWF0ZVN5bmNNZXNzYWdlQXJndW1lbnRFbmNvZGVyKGRlc3RpbmF0aW9uSUQsIHN5bmNS
ZXF1ZXN0SUQpOwpAQCAtMzY5LDcgKzM3NCw3IEBACiAgICAgYXJndW1lbnRFbmNvZGVyLT5lbmNv
ZGUobWVzc2FnZSk7CiAKICAgICAvLyBOb3cgc2VuZCB0aGUgbWVzc2FnZSBhbmQgd2FpdCBmb3Ig
YSByZXBseS4KLSAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5k
U3luY01lc3NhZ2UoTWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIHN5bmNSZXF1ZXN0SUQsIGFyZ3Vt
ZW50RW5jb2Rlci5yZWxlYXNlKCksIHRpbWVvdXQpOworICAgIE93blB0cjxBcmd1bWVudERlY29k
ZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQoVDo6bWVzc2FnZUlE
KSwgc3luY1JlcXVlc3RJRCwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSwgdGltZW91dCwgc3lu
Y1NlbmRGbGFncyk7CiAgICAgaWYgKCFyZXBseURlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1J1bkxvb3BNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1J1bkxvb3BNYWMubW0JKHJl
dmlzaW9uIDkxNjY5KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1J1bkxvb3BNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBACiAgICAgfSAgICAgICAgCiB9CiAK
K3ZvaWQgUnVuTG9vcDo6cnVuRm9yRHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQoreworICAgIENG
UnVuTG9vcFJ1bkluTW9kZShrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIGR1cmF0aW9uLCB0cnVlKTsK
K30KKwogdm9pZCBSdW5Mb29wOjpzdG9wKCkKIHsKICAgICBBU1NFUlQobV9ydW5Mb29wID09IENG
UnVuTG9vcEdldEN1cnJlbnQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTc5OSkKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBA
CisyMDExLTA3LTI2ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgUkVHUkVTU0lPTiAoU2FmYXJpIDUuMSk6IEphdmFTY3JpcHQgZGlhbG9ncyBub3QgdXNh
YmxlIHdpdGggVm9pY2VPdmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NTIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFsbG93IHRoZSBhYmlsaXR5IHRvIHNwaW4gdGhlIHJ1biBsb29wIHdoaWxlIFdl
YlByb2Nlc3MgaXMgd2FpdGluZyBmb3IgYSBzeW5jaHJvbm91cyByZXBseS4KKyAgICAgICAgVGhp
cyBhbGxvd3MgaXQgdG8gY29udGludWUgdG8gc2VydmUgYWNjZXNzaWJpbGl0eSByZXF1ZXN0cyB3
aGlsZSB3YWl0aW5nIGFuZCBiYXNpY2FsbHkKKyAgICAgICAgcmVzdG9yZXMgdGhlIGJlaGF2aW9y
IFdLMSB3YXMgcHJlc2VudGluZy4gVGhpcyBwYXRjaCBvbmx5IGVuYWJsZXMgdGhpcyBtb2RlIHdo
ZW4gYWNjZXNzaWJpbGl0eSBpcyBvbi4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY01lc3Nh
Z2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6Cisg
ICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChDb3JlSVBD
OjpDb25uZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgICogUGxhdGZvcm0vUnVuTG9vcC5oOgor
ICAgICAgICAqIFBsYXRmb3JtL21hYy9SdW5Mb29wTWFjLm1tOgorICAgICAgICAoUnVuTG9vcDo6
cnVuRm9yRHVyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpydW5K
YXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkph
dmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpydW5K
YXZhU2NyaXB0UHJvbXB0KToKKwogMjAxMS0wNy0yNiAgU2FkcnVsIEhhYmliIENob3dkaHVyeSAg
PHNhZHJ1bEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRvd25sb2Fk
PSdmaWxlbmFtZScgYXR0cmlidXRlIGluIGFuY2hvcnMuCg==
</data>
<flag name="review"
          id="97209"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>