<?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>78290</bug_id>
          
          <creation_ts>2012-02-09 15:23:50 -0800</creation_ts>
          <short_desc>Implement end-of-task delivery for MutationObservers</short_desc>
          <delta_ts>2016-04-11 01:37:52 -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>DOM</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68729</blocked>
    
    <blocked>85161</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>efidler</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>mjs</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ojan</cc>
    
    <cc>rafaelw</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>syoichi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>553564</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-02-09 15:23:50 -0800</bug_when>
    <thetext>For a wide swathe of DOM mutations, end-of-microtask delivery (when the JS stack winds down to zero) is sufficient, since it will handle any DOM mutation made from JavaScript.

But DOM can also be changed through, e.g., user input in a contentEditable element. The layout test fast/mutation/end-of-task-delivery.html exercises just such a case. It passes in Chromium and fails elsewhere, because Chromium delivers mutations not just at the end of every microtask, but also at the end of every run through its main event loop.  From Source/WebKit/chromium/src/WebKit.cpp:

class EndOfTaskRunner : public WebThread::TaskObserver {
public:
    virtual void didProcessTask()
    {
        WebCore::WebKitMutationObserver::deliverAllMutations();
    }
};

...

void initialize(...)
{
    ... 
    s_endOfTaskRunner = new EndOfTaskRunner;
    currentThread-&gt;addTaskObserver(s_endOfTaskRunner);
    ...
}

This is &quot;easy&quot; for Chromium because it has its own custom event loop implementation.  This bug is asking for something similar (in behavior, at least) on non-Chromium platforms.

The chief requirement is that, if DOM is mutated in a given task, any mutation observers are notified of that mutation before the next task (e.g., a paint, or a timer scheduled with setTimeout) gets a chance to run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634651</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-26 09:43:56 -0700</bug_when>
    <thetext>Can we just modify RunLoop implementations (e.g. http://trac.webkit.org/browser/trunk/Source/WebCore/platform/mac/RunLoopMac.mm) files for each port ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634687</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-26 16:57:08 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Can we just modify RunLoop implementations (e.g. http://trac.webkit.org/browser/trunk/Source/WebCore/platform/mac/RunLoopMac.mm) files for each port ?

That’s used for WebKit2 in all ports that support it, but not in other ports. For example, I don’t think that’s used for Mac WebKit1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650458</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-15 13:33:28 -0700</bug_when>
    <thetext>One alternative to having each port implement this end of task timing is to add some hook in the editing code (e.g. EditCommand::apply, unapply, reapply) to trigger end-of-task delivery given that the editing is the only situation (in addition to modifications due to Objective-C, C++, etc... APIs) in which the end of task delivery is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650583</commentid>
    <comment_count>4</comment_count>
      <attachid>147915</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-06-15 15:42:21 -0700</bug_when>
    <thetext>Created attachment 147915
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650607</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-06-15 16:12:50 -0700</bug_when>
    <thetext>This patch is shockingly simple: it hooks EventDispatcher::dispatchEvent with a counter representing the number of times it&apos;s been re-entered. When the counter goes to zero, it checks to see if script is currently executing. If it is, nothing happens (the existing end-of-microtask stuff will take care of handling delivery). But if no script is running, mutations are delivered. This allows, for example, the Mac port to pass fast/mutation/end-of-task-delivery.html.

But I feel like I&apos;m likely missing something by taking this &quot;emulation&quot; approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650708</commentid>
    <comment_count>6</comment_count>
      <attachid>147915</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-15 20:31:54 -0700</bug_when>
    <thetext>Comment on attachment 147915
WIP Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        outermost invocation of EventDispatcher::dispatchEvent. Since editing
&gt; +        (via input events) is the one way to make DOM mutations without
&gt; +        invoking script, ensuring that mutations are delivered after every

What about DOM mutations via the embedder API or via plug-ins?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650814</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-06-16 10:02:58 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 147915 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=147915&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        outermost invocation of EventDispatcher::dispatchEvent. Since editing
&gt; &gt; +        (via input events) is the one way to make DOM mutations without
&gt; &gt; +        invoking script, ensuring that mutations are delivered after every
&gt; 
&gt; What about DOM mutations via the embedder API or via plug-ins?

Mutations via embedder were definitely the reason we wanted to run this every task, but it occurred to Ryosuke and I that we might be able to either punt or special case those. But plugins seem like a bigger problem, since the embedder won&apos;t know what they&apos;re doing but the page should be able to find out.

It seems this approach is probably not going to fly, sadly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802676</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-01-08 14:45:04 -0800</bug_when>
    <thetext>Ryosuke, you mentioned you were thinking of taking this on, so unassigning myself in case you want to take ownership.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872371</commentid>
    <comment_count>9</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-04-09 17:05:27 -0700</bug_when>
    <thetext>Marked LayoutTest bugs, bugs with Chromium IDs, and some others as WontFix. Test failure bugs still are trackable via TestExpectations or disabled unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872450</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-04-09 17:06:39 -0700</bug_when>
    <thetext>This bug applies to _non_-Chromium platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872545</commentid>
    <comment_count>11</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-04-09 18:04:13 -0700</bug_when>
    <thetext>Marking WontFix as we have a Chromium bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872547</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-04-09 18:09:18 -0700</bug_when>
    <thetext>Reopening one more time, sorry for the noise...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182637</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-04-11 01:37:52 -0700</bug_when>
    <thetext>This has definitely been implemented.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147915</attachid>
            <date>2012-06-15 15:42:21 -0700</date>
            <delta_ts>2012-06-15 20:31:54 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-78290-20120615154221.patch</filename>
            <type>text/plain</type>
            <size>11158</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTFjN2M5M2U0ZWY2YzUz
ODNjNTQxNzcxMzVhYzJiODJkNjg0OGIyMS4uNDkxYWE3MDQ5NzIxYjdhZTQ2MDE5ZGNiNmM1OTJj
ZGI3Y2JhZjRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA2LTE1ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBlbmQtb2Yt
dGFzayBkZWxpdmVyeSBmb3IgTXV0YXRpb25PYnNlcnZlcnMgZm9yIG5vbi1DaHJvbWl1bSBwbGF0
Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
MjkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW11
bGF0ZSBydW4tYXQtZW5kLW9mLXRhc2sgc2VtYW50aWNzIGJ5IHJ1bm5pbmcgYXQgdGhlIGVuZCBv
ZiB0aGUKKyAgICAgICAgb3V0ZXJtb3N0IGludm9jYXRpb24gb2YgRXZlbnREaXNwYXRjaGVyOjpk
aXNwYXRjaEV2ZW50LiBTaW5jZSBlZGl0aW5nCisgICAgICAgICh2aWEgaW5wdXQgZXZlbnRzKSBp
cyB0aGUgb25lIHdheSB0byBtYWtlIERPTSBtdXRhdGlvbnMgd2l0aG91dAorICAgICAgICBpbnZv
a2luZyBzY3JpcHQsIGVuc3VyaW5nIHRoYXQgbXV0YXRpb25zIGFyZSBkZWxpdmVyZWQgYWZ0ZXIg
ZXZlcnkKKyAgICAgICAgZXZlbnQgc2hvdWxkIGJlIGVxdWl2YWxlbnQgdG8gZGVsaXZlcmluZyBh
dCB0aGUgZW5kIG9mIGV2ZXJ5IHRhc2ssCisgICAgICAgIHdpdGggdGhlIGFkdmFudGFnZSB0aGF0
IGl0J3MgaW1wbGVtZW50YWJsZSBpbiBXZWJDb3JlIChyYXRoZXIgdGhhbgorICAgICAgICBoYXZp
bmcgdG8gYmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBlbWJlZGRlcikuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OmlzSW5NaWNyb1Rhc2spOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoU2NyaXB0Q29udHJvbGxl
cik6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppc0luTWljcm9UYXNrKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKFNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuY3Bw
OgorICAgICAgICAoRXZlbnREaXNwYXRjaE11dGF0aW9uU2NvcGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnREaXNwYXRjaE11dGF0aW9uU2NvcGU6OkV2ZW50RGlzcGF0Y2hNdXRhdGlvblNjb3Bl
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hNdXRhdGlvblNjb3BlOjp+RXZlbnRE
aXNwYXRjaE11dGF0aW9uU2NvcGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAqIGRvbS9FdmVu
dERpc3BhdGNoZXIuaDoKKyAgICAgICAgKEV2ZW50RGlzcGF0Y2hlcik6CisKIDIwMTItMDYtMTUg
IEFtaSBGaXNjaG1hbiAgPGZpc2NobWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIENvbXBvc2l0b3Igc2hvdWxkIGJlIGF3YXJlIG9mIHxmbGlwcGVkfCBzdGF0dXMgb2Ygdmlk
ZW8gdGV4dHVyZXMgcGVyLXBsYXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGEw
ODc0NzAxNGVlOWY1YTc0MDFlNWYxZjJhZjU2OTVjNTVkNmY1ZTQuLmExZTliOThjNjVjMjlhYWU4
MzczZmI4MWQxOWVhNGVkZmI4N2ZlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTItMDYtMTUgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgSW1wbGVtZW50IGVuZC1vZi10YXNrIGRlbGl2ZXJ5IGZvciBNdXRhdGlvbk9i
c2VydmVycyBmb3Igbm9uLUNocm9taXVtIHBsYXRmb3JtcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgyOTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZWFyIG91dCBDaHJvbWl1bS1zcGVjaWZpYyBlbmQt
b2YtdGFzayBkZWxpdmVyeSBjb2RlIG5vdyB0aGF0CisgICAgICAgIGVuZC1vZi10YXNrIGRlbGl2
ZXJ5IGlzIGVtdWxhdGVkIHdpdGggZW5kLW9mLWV2ZW50LWRpc3BhdGNoIGRlbGl2ZXJ5LgorCisg
ICAgICAgICogc3JjL1dlYktpdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpzaHV0ZG93bik6CisKIDIwMTItMDYtMTUgIEJpbGwgQnVkZ2UgIDxi
YnVkZ2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFzc29jaWF0ZWRVUkxMb2FkZXIgc2hvdWxk
IGFsbG93IHRydXN0ZWQgY2xpZW50cyB0byByZWFkIGFsbCBoZWFkZXJzLCBub3QganVzdCBleHBv
c2VkIG9uZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDc5OTk1MDJiZGVlOTVmZDg2YjE0MTYxNTI1ZTc1MWU3ZGRhODgxY2MuLjk5
NWM0ZjkwZWVkNjJmMTQwNmEzYTYzNWU3NDkxYWFhNzk1YWIyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00NTMsNCArNDUzLDkg
QEAgU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9N
V3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QKICAgICByZXR1cm4gZXZhbHVhdGVJbldvcmxkKHNv
dXJjZUNvZGUsIHdvcmxkKTsKIH0KIAorYm9vbCBTY3JpcHRDb250cm9sbGVyOjppc0luTWljcm9U
YXNrKCkKK3sKKyAgICByZXR1cm4gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDBlZDk4Njk2OTE0ODczYjFkYTNhODRhZTJh
MDgzMWU4ZmQ4MTliYmUuLjRiNDcwZmVhZDY3OTY4MDYzMzcyZmM3OTA0Y2MzNzZhYmRkZDUzNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAg
LTEwOSw2ICsxMDksOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBwcm9jZXNzaW5nVXNl
ckdlc3R1cmUoKTsKIAorICAgIHN0YXRpYyBib29sIGlzSW5NaWNyb1Rhc2soKTsKKwogICAgIHN0
YXRpYyBib29sIGNhbkFjY2Vzc0Zyb21DdXJyZW50T3JpZ2luKEZyYW1lKik7CiAgICAgYm9vbCBj
YW5FeGVjdXRlU2NyaXB0cyhSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNjcmlwdHMpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4
IGQ0OTg2NmQ4N2NhNDJiNDdiNzRhOTJhNDNkOTQ1ZDhlZWIxZThkOTUuLmYxOTJkNTg0YjdkMWEx
YjFmMzQ4NTU2MDk2OGZmZTFjYWUwMWQ4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00NzIsNCArNDcyLDkgQEAgdm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpuYW1lZEl0ZW1SZW1vdmVkKEhUTUxEb2N1bWVudCogZG9jLCBjb25zdCBB
dG9taWNTdHJpbmcmIG4KICAgICBtX3Byb3h5LT53aW5kb3dTaGVsbCgpLT5uYW1lZEl0ZW1SZW1v
dmVkKGRvYywgbmFtZSk7CiB9CiAKK2Jvb2wgU2NyaXB0Q29udHJvbGxlcjo6aXNJbk1pY3JvVGFz
aygpCit7CisgICAgcmV0dXJuIFY4UmVjdXJzaW9uU2NvcGU6OnJlY3Vyc2lvbkxldmVsKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCA0MWQ3MWNlMzJjMDI5YmIzNmM5ZjRmNmE0OGIxNGEw
ZjkzN2UyYTcwLi40ZjZiOTc1ZWQ3Njk5MjJkYjA0NWUzN2Q3YTZkYzVjMGE3MzNiZDE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xODgs
NiArMTg4LDggQEAgcHVibGljOgogICAgIHZvaWQgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRBbGxX
b3JsZHMoVmVjdG9yPFJlZlB0cjxET01XcmFwcGVyV29ybGQ+ID4mIHdvcmxkcyk7CiAKKyAgICBz
dGF0aWMgYm9vbCBpc0luTWljcm9UYXNrKCk7CisKIHByaXZhdGU6CiAgICAgRnJhbWUqIG1fZnJh
bWU7CiAgICAgY29uc3QgU3RyaW5nKiBtX3NvdXJjZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
RGlzcGF0Y2hlci5jcHAKaW5kZXggYjU0YmJiZWU2MThkYTMyYTQwNzc0YWVmMTFlMjIwNjZiODhh
YTEzMC4uNDM3M2IyYmIwOGEzYzU0ZWYxNjg5YmJlOTQ1OWM5Njg1N2QyZWU1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTM2LDcgKzM2LDkgQEAKICNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAj
aW5jbHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiV2ViS2l0TXV0YXRpb25PYnNl
cnZlci5oIgogI2luY2x1ZGUgIldpbmRvd0V2ZW50Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTUxLDYgKzUzLDMzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8Tm9kZSo+KiBnTm9kZXNEaXNw
YXRjaGluZ1NpbXVsYXRlZENsaWNrcyA9IDA7CiAKK2NsYXNzIEV2ZW50RGlzcGF0Y2hNdXRhdGlv
blNjb3BlIHsKK3B1YmxpYzoKKyAgICBFdmVudERpc3BhdGNoTXV0YXRpb25TY29wZSgpCisgICAg
eworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgICAgICsrc19ldmVudERpc3Bh
dGNoRGVwdGg7CisjZW5kaWYKKyAgICB9CisKKyAgICB+RXZlbnREaXNwYXRjaE11dGF0aW9uU2Nv
cGUoKQorICAgIHsKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgICAgICBpZiAo
IS0tc19ldmVudERpc3BhdGNoRGVwdGggJiYgIVNjcmlwdENvbnRyb2xsZXI6OmlzSW5NaWNyb1Rh
c2soKSkKKyAgICAgICAgICAgIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRh
dGlvbnMoKTsKKyNlbmRpZgorICAgIH0KKworcHJpdmF0ZToKKyNpZiBFTkFCTEUoTVVUQVRJT05f
T0JTRVJWRVJTKQorICAgIHN0YXRpYyB1bnNpZ25lZCBzX2V2ZW50RGlzcGF0Y2hEZXB0aDsKKyNl
bmRpZgorfTsKKworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCit1bnNpZ25lZCBFdmVu
dERpc3BhdGNoTXV0YXRpb25TY29wZTo6c19ldmVudERpc3BhdGNoRGVwdGggPSAwOworI2VuZGlm
CisKIEV2ZW50UmVsYXRlZFRhcmdldEFkanVzdGVyOjpFdmVudFJlbGF0ZWRUYXJnZXRBZGp1c3Rl
cihQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZFRhcmdldCkK
ICAgICA6IG1fbm9kZShub2RlKQogICAgICwgbV9yZWxhdGVkVGFyZ2V0KHJlbGF0ZWRUYXJnZXQp
CkBAIC0yMjEsNiArMjUwLDggQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmVuc3VyZUV2ZW50QW5j
ZXN0b3JzKEV2ZW50KiBldmVudCkKIAogYm9vbCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiB7CisgICAgRXZlbnREaXNwYXRjaE11dGF0aW9u
U2NvcGUgc2NvcGU7CisKICAgICBldmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFyZ2V0UmVzcGVjdGlu
Z1NWR1RhcmdldFJ1bGVzKG1fbm9kZS5nZXQoKSkpOwogCiAgICAgQVNTRVJUKCFldmVudERpc3Bh
dGNoRm9yYmlkZGVuKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlz
cGF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCmluZGV4IGEx
MTMwMWU1Y2JiZmE3OWQxOWM2M2Q2Y2QyYzAzMTMyMDc2ODA0NTguLjUxYjBlNzk2M2QxNWQxNzMy
YjJmOGQ2YjhhNGY4ZWY4MzQ1NGVhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVy
LmgKQEAgLTcyLDYgKzcyLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRqdXN0UmVsYXRlZFRhcmdl
dChFdmVudCosIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHBycFJlbGF0ZWRUYXJnZXQpOwogICAg
IE5vZGUqIG5vZGUoKSBjb25zdDsKIAorICAgIHN0YXRpYyBib29sIGlzRGlzcGF0Y2hpbmdFdmVu
dCgpOworCiBwcml2YXRlOgogICAgIEV2ZW50RGlzcGF0Y2hlcihOb2RlKik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCmluZGV4IDYxMDY1OTdhZThmYjE1ZWRlNjA2YjYxYjc4
NDI0NDk4Yzk5ZDc0MWEuLjFkMTI5YmU0YzJkNmY2MWI4NTYwZDU2ZGZhZmMwMGMzMTYyNmNmZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcApAQCAtMzgsNyArMzgsNiBAQAog
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1
ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKLSNpbmNsdWRlICJXZWJLaXRNdXRhdGlvbk9ic2VydmVy
LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2Vi
U29ja2V0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCkBAIC01
OCwyMyArNTcsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotI2lmIEVOQUJMRShNVVRBVElP
Tl9PQlNFUlZFUlMpCi1uYW1lc3BhY2UgewotCi1jbGFzcyBFbmRPZlRhc2tSdW5uZXIgOiBwdWJs
aWMgV2ViVGhyZWFkOjpUYXNrT2JzZXJ2ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCB3
aWxsUHJvY2Vzc1Rhc2soKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUHJvY2Vzc1Rhc2soKQot
ICAgIHsKLSAgICAgICAgV2ViQ29yZTo6V2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFs
bE11dGF0aW9ucygpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLXN0YXRpYyBXZWJU
aHJlYWQ6OlRhc2tPYnNlcnZlciogc19lbmRPZlRhc2tSdW5uZXIgPSAwOwotI2VuZGlmIC8vIEVO
QUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCi0KIC8vIE1ha2Ugc3VyZSB3ZSBhcmUgbm90IHJlLWlu
aXRpYWxpemVkIGluIHRoZSBzYW1lIGFkZHJlc3Mgc3BhY2UuCiAvLyBEb2luZyBzbyBtYXkgY2F1
c2UgaGFyZCB0byByZXByb2R1Y2UgY3Jhc2hlcy4KIHN0YXRpYyBib29sIHNfd2ViS2l0SW5pdGlh
bGl6ZWQgPSBmYWxzZTsKQEAgLTEwNiwxNiArODgsOCBAQCB2b2lkIGluaXRpYWxpemUoV2ViS2l0
UGxhdGZvcm1TdXBwb3J0KiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpCiAgICAgdjg6OlY4OjpJbml0
aWFsaXplKCk7CiAgICAgV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmVuc3VyZUlu
aXRpYWxpemVkKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCkpOwogCi0jaWYgRU5BQkxFKE1VVEFU
SU9OX09CU0VSVkVSUykKLSAgICAvLyBjdXJyZW50VGhyZWFkIHdpbGwgYWx3YXlzIGJlIG5vbi1u
dWxsIGluIHByb2R1Y3Rpb24sIGJ1dCBjYW4gYmUgbnVsbCBpbiBDaHJvbWl1bSB1bml0IHRlc3Rz
LgotICAgIGlmIChXZWJUaHJlYWQqIGN1cnJlbnRUaHJlYWQgPSB3ZWJLaXRQbGF0Zm9ybVN1cHBv
cnQtPmN1cnJlbnRUaHJlYWQoKSkgewogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgdjg6OlY4OjpB
ZGRDYWxsQ29tcGxldGVkQ2FsbGJhY2soJmFzc2VydFY4UmVjdXJzaW9uU2NvcGUpOwotI2VuZGlm
Ci0gICAgICAgIEFTU0VSVCghc19lbmRPZlRhc2tSdW5uZXIpOwotICAgICAgICBzX2VuZE9mVGFz
a1J1bm5lciA9IG5ldyBFbmRPZlRhc2tSdW5uZXI7Ci0gICAgICAgIGN1cnJlbnRUaHJlYWQtPmFk
ZFRhc2tPYnNlcnZlcihzX2VuZE9mVGFza1J1bm5lcik7Ci0gICAgfQorICAgIHY4OjpWODo6QWRk
Q2FsbENvbXBsZXRlZENhbGxiYWNrKCZhc3NlcnRWOFJlY3Vyc2lvblNjb3BlKTsKICNlbmRpZgog
fQogCkBAIC0xNTIsMTYgKzEyNiw4IEBAIHZvaWQgc2h1dGRvd24oKQogewogICAgIC8vIFdlYktp
dCBtaWdodCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2l0aG91dCBWOCwgc28gYmUgY2FyZWZ1bCBu
b3QgdG8gaW52b2tlCiAgICAgLy8gVjggc3BlY2lmaWMgZnVuY3Rpb25zLCBpZiBWOCB3YXMgbm90
IHByb3Blcmx5IGluaXRpYWxpemVkLgotI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCi0g
ICAgaWYgKHNfZW5kT2ZUYXNrUnVubmVyKSB7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICB2ODo6
Vjg6OlJlbW92ZUNhbGxDb21wbGV0ZWRDYWxsYmFjaygmYXNzZXJ0VjhSZWN1cnNpb25TY29wZSk7
Ci0jZW5kaWYKLSAgICAgICAgQVNTRVJUKHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0LT5jdXJyZW50
VGhyZWFkKCkpOwotICAgICAgICBzX3dlYktpdFBsYXRmb3JtU3VwcG9ydC0+Y3VycmVudFRocmVh
ZCgpLT5yZW1vdmVUYXNrT2JzZXJ2ZXIoc19lbmRPZlRhc2tSdW5uZXIpOwotICAgICAgICBkZWxl
dGUgc19lbmRPZlRhc2tSdW5uZXI7Ci0gICAgICAgIHNfZW5kT2ZUYXNrUnVubmVyID0gMDsKLSAg
ICB9CisgICAgdjg6OlY4OjpSZW1vdmVDYWxsQ29tcGxldGVkQ2FsbGJhY2soJmFzc2VydFY4UmVj
dXJzaW9uU2NvcGUpOwogI2VuZGlmCiAgICAgc193ZWJLaXRQbGF0Zm9ybVN1cHBvcnQgPSAwOwog
ICAgIFBsYXRmb3JtOjpzaHV0ZG93bigpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYxOTI2NWRkZjU2MmFiZTcyYTE2MmY5
ZTllOTI5ODU1MmI3ZTFhODguLjQ0ZmE3MDU0YWI4NDEwZGZjMTA2ZTAxZDRmM2Q4MDEzMTMwM2Uz
MDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNi0xNSAgQWRhbSBLbGVpbiAgPGFkYW1r
QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgZW5kLW9mLXRhc2sgZGVsaXZlcnkg
Zm9yIE11dGF0aW9uT2JzZXJ2ZXJzIGZvciBub24tQ2hyb21pdW0gcGxhdGZvcm1zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODI5MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Nr
aXBwZWQ6CisKIDIwMTItMDYtMTQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGV4dC1hbGlnbiBzaG91bGQgYmUgc3RhcnQg
aW5zdGVhZCBvZiAtd2Via2l0LWF1dG8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggOTE4
OWUzYjJkOTdkNDU0MjE5MTc2MTE1NTBlMjE1NDU4MjI5ZTE4NC4uODJlMDE0YjViMTM3YzE1Y2Fl
OGIxNDgzODg3Y2Q1YjI5MTFlZmZhYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTU4
Niw3ICs1ODYsNyBAQCBtZWRpYS9XM0MvdmlkZW8vY2FuUGxheVR5cGUvY2FuUGxheVR5cGVfdHdv
X2ltcGxpZXNfb25lXzYuaHRtbAogCiAjIEZhaWxzIGJlY2F1c2UgTXV0YXRpb25PYnNlcnZlcnMg
YXJlIG5vdCBub3RpZmllZCBhdCBlbmQtb2YtdGFzawogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzgyOTAKLWZhc3QvbXV0YXRpb24vZW5kLW9mLXRhc2stZGVsaXZl
cnkuaHRtbAorI2Zhc3QvbXV0YXRpb24vZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbAogCiAjIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAogIyBOZWVkcyBQYWdl
Q2xpZW50czo6dmlicmF0aW9uQ2xpZW50KCkgaW1wbGVtZW50YXRpb24uCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>