<?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>64318</bug_id>
          
          <creation_ts>2011-07-11 15:11:17 -0700</creation_ts>
          <short_desc>Make RenderObject::containingBlock virtual for better speed and clarity</short_desc>
          <delta_ts>2011-07-12 20:30:54 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>435224</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-07-11 15:11:17 -0700</bug_when>
    <thetext>Looking at some table benchmark, this method is taking 5% of the time. However it could be split into more specialized methods which would cut the time taken to execute this one.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435225</commentid>
    <comment_count>1</comment_count>
      <attachid>100366</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-07-11 15:16:37 -0700</bug_when>
    <thetext>Created attachment 100366
Proposed virtualization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435351</commentid>
    <comment_count>2</comment_count>
      <attachid>100366</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-11 18:00:29 -0700</bug_when>
    <thetext>Comment on attachment 100366
Proposed virtualization.

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Make RenderObject::containingBlock a virtual method

The title of the bug should talk about the motivation.

&quot;Make RenderObject::containingBlock virtual for better speed and clarity&quot;

The term “method” is not used in C++. It’s a virtual function.

&gt; Source/WebCore/rendering/RenderObject.cpp:601
&gt;  RenderBlock* RenderObject::containingBlock() const

Seems strange that this is a const member function but returns a non-const pointer to the other renderer.

&gt; Source/WebCore/rendering/RenderTableCell.h:141
&gt; +    virtual RenderBlock* containingBlock() const
&gt; +    {
&gt; +        if (parent() &amp;&amp; section())
&gt; +            return table();
&gt; +        return 0;
&gt; +    }

It is not good style to have the implementation of a virtual function in a header file like this. Instead the declaration should be here and the definition in the cpp file. It even hurts compile time to have it here.

Also, it’s better to have this override be private rather than public, because if someone actually has a RenderTableCell*, then they could do something more efficient than calling containingBlock. It’s a programming mistake to call containingBlock in a case like that.

&gt; Source/WebCore/rendering/RenderView.h:59
&gt; +    virtual RenderBlock* containingBlock() const
&gt; +    {
&gt; +        return const_cast&lt;RenderView*&gt;(this);
&gt; +    }

Same comment about not inlining and making private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436172</commentid>
    <comment_count>3</comment_count>
      <attachid>100609</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-07-12 19:32:42 -0700</bug_when>
    <thetext>Created attachment 100609
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436201</commentid>
    <comment_count>4</comment_count>
      <attachid>100609</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 20:30:50 -0700</bug_when>
    <thetext>Comment on attachment 100609
Patch for landing

Clearing flags on attachment: 100609

Committed r90882: &lt;http://trac.webkit.org/changeset/90882&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436202</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 20:30:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100366</attachid>
            <date>2011-07-11 15:16:37 -0700</date>
            <delta_ts>2011-07-12 19:32:38 -0700</delta_ts>
            <desc>Proposed virtualization.</desc>
            <filename>bug-64318-20110711151636.patch</filename>
            <type>text/plain</type>
            <size>4551</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA0NDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMDc3ZDJlNjdiMGEwMTI1
ZGQwZjUzMzUwMGQ4YjhjNjY2ODVkNWNkLi5hMzg0NjFkZjk5NmJlYmUzYjI2MWMyNmFkYjIzMzVm
ZGNkZjhmYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDctMTEgIEp1bGll
biBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBSZW5k
ZXJPYmplY3Q6OmNvbnRhaW5pbmdCbG9jayBhIHZpcnR1YWwgbWV0aG9kCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDMxOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcGVyZm9ybWFu
Y2UgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgT24gc29tZSBvZiBteSB0ZXN0IGNhc2VzLCB0aGlz
IG1ldGhvZCB0YWtlcyBiZXR3ZWVuIDMgYW5kIDUlIG9mIHRoZSB0aW1lIHNwZW5kLgorICAgICAg
ICBUaGUgbWV0aG9kIG1ha2VzIDIgY2FsbHMgdG8gdmlydHVhbCBtZXRob2RzIHdoaWNoIGNvdWxk
IGJlIG1vdmVkIHRvIHRoZWlyIG92ZXJyaWRlbgorICAgICAgICB2ZXJzaW9uIG9mIGNvbnRhaW5p
bmdCbG9jayBpZiB3ZSBtYWRlIGl0IHZpcnR1YWwuCisKKyAgICAgICAgVGhhdCdzIHdoYXQgdGhp
cyBwYXRjaCBkb2VzLiBJdCBzYXZlcyBiZXR3ZWVuIDEgYW5kIDIlIG9uIHNvbWUgc3ludGhldGlj
IHRlc3QgY2FzZXMKKyAgICAgICAgYXMgd2VsbCBhcyBtYWRlIHRoZSBjdXJyZW50IG1ldGhvZCBz
aG9ydGVyLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbnRhaW5pbmdCbG9jayk6IFJlbW92ZWQgY29kZSBm
b3IgUmVuZGVyVmlldyBhbmQgUmVuZGVyVGFibGVDZWxsLAorICAgICAgICByZXBsYWNlZCBieSBB
U1NFUlRzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOiBNYWRlIGNvbnRh
aW5pbmdCbG9jayB2aXJ0dWFsLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb250YWluaW5nQmxvY2sp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWV3Ojpjb250YWluaW5nQmxvY2spOgorICAgICAgICBUaGUgY29kZSBtb3ZlZCBmcm9t
IFJlbmRlck9iamVjdCBpcyBpbmxpbmVkIGluIHRob3NlIDIgbWV0aG9kcy4KKwogMjAxMS0wNy0w
NSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBnb29nbGUuY29tPgogCiAgICAgICAgIFRyaWdnZXIg
YSAnY2hhbmdlJyBldmVudCB3aGVuZXZlciBzZWxlY3RlZCBmaWxlcyBhcmUgY2hhbmdlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBmOWZiZWQ1YzQ5ZGFj
M2I0Y2FjNTAyMDY2M2I2ZTNhNGMzNTU4ODlhLi44MGMwYTE1ODk3ZWZiZjQ0NzM0ZGQ4ZTAxNWQ5
OGE3YTUyZWI5ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cApAQCAtNjAwLDE1ICs2MDAsOCBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1
bGxSZXBhaW50KCkKIAogUmVuZGVyQmxvY2sqIFJlbmRlck9iamVjdDo6Y29udGFpbmluZ0Jsb2Nr
KCkgY29uc3QKIHsKLSAgICBpZiAoaXNUYWJsZUNlbGwoKSkgewotICAgICAgICBjb25zdCBSZW5k
ZXJUYWJsZUNlbGwqIGNlbGwgPSB0b1JlbmRlclRhYmxlQ2VsbCh0aGlzKTsKLSAgICAgICAgaWYg
KHBhcmVudCgpICYmIGNlbGwtPnNlY3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBjZWxsLT50
YWJsZSgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoaXNSZW5kZXJWaWV3
KCkpCi0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PFJlbmRlclZpZXcqPih0b1JlbmRlclZpZXco
dGhpcykpOworICAgIEFTU0VSVCghaXNUYWJsZUNlbGwoKSk7CisgICAgQVNTRVJUKCFpc1JlbmRl
clZpZXcoKSk7CiAKICAgICBSZW5kZXJPYmplY3QqIG8gPSBwYXJlbnQoKTsKICAgICBpZiAoIWlz
VGV4dCgpICYmIG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGEwN2NmYTQzOTAxODMzZWRhZGFl
ODQ1MTViNzgyYTk2NDFiZjRlNmYuLjU2OTM1YWUyN2E3MDAwYjg3ZmNmMDJlOGJkMjdmYTE2ZjJk
OTZiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTU3MSw3
ICs1NzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdHlsZUludGVybmFsKFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+KTsKIAogICAgIC8vIHJldHVybnMgdGhlIGNvbnRhaW5pbmcgYmxvY2sgbGV2
ZWwgZWxlbWVudCBmb3IgdGhpcyBlbGVtZW50LgotICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5n
QmxvY2soKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2so
KSBjb25zdDsKIAogICAgIC8vIENvbnZlcnQgdGhlIGdpdmVuIGxvY2FsIHBvaW50IHRvIGFic29s
dXRlIGNvb3JkaW5hdGVzCiAgICAgLy8gRklYTUU6IFRlbXBvcmFyeS4gSWYgdXNlVHJhbnNmb3Jt
cyBpcyB0cnVlLCB0YWtlIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LiBFdmVudHVhbGx5IGxvY2Fs
VG9BYnNvbHV0ZSgpIHdpbGwgYWx3YXlzIGJlIHRyYW5zZm9ybS1hd2FyZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCBiOTM1ODJmM2NmZjcxMzFhOTVl
NTUyZTk3MzZlMmYwNjQ0NTkyYjA4Li44NDFlMjA1MzllYWQwNDZiZGQ1ZjY3MDI0NzUzYjEwMzlk
MTNiYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCkBA
IC0xMzMsNiArMTMzLDEyIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxs
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpOwogCisgICAgdmlydHVhbCBSZW5kZXJCbG9jayogY29udGFpbmlu
Z0Jsb2NrKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChwYXJlbnQoKSAmJiBzZWN0aW9uKCkp
CisgICAgICAgICAgICByZXR1cm4gdGFibGUoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiBpc0Fub255bW91cygpID8gIlJlbmRlclRhYmxlQ2VsbCAoYW5vbnltb3VzKSIgOiAiUmVu
ZGVyVGFibGVDZWxsIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRl
eCA2NjU4YTUwYWM0MGZkYTUyNWIyNjg3OTM2YTljN2FmMDcwOTg4OTUxLi4wZWRkNzliODE0ZGMx
M2ZkYzgwYzZkYTg1YzBjMTQ5NjZhMTc1OGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKQEAgLTUzLDYgKzUzLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29t
cHV0ZUxvZ2ljYWxIZWlnaHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoKTsKIAorICAgIHZpcnR1YWwgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9j
aygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJWaWV3Kj4o
dGhpcyk7CisgICAgfQorCiAgICAgLy8gVGhlIHNhbWUgYXMgdGhlIEZyYW1lVmlldydzIGxheW91
dEhlaWdodC9sYXlvdXRXaWR0aCBidXQgd2l0aCBudWxsIGNoZWNrIGd1YXJkcy4KICAgICBpbnQg
dmlld0hlaWdodCgpIGNvbnN0OwogICAgIGludCB2aWV3V2lkdGgoKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100609</attachid>
            <date>2011-07-12 19:32:42 -0700</date>
            <delta_ts>2011-07-12 20:30:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-64318-20110712193241.patch</filename>
            <type>text/plain</type>
            <size>5641</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA4NzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZTRmY2MyN2Y2NTU5NWMy
NjQ3NjQ1YWMxMjJhODJhZjZmYTc1YTg3Li43MWE0ZTU3MDkwMGY0NmY3ZDE0N2NkNzZiZTk0ZjFh
NDZkMWNmMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDctMTIgIEp1bGll
biBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBSZW5k
ZXJPYmplY3Q6OmNvbnRhaW5pbmdCbG9jayB2aXJ0dWFsIGZvciBiZXR0ZXIgc3BlZWQgYW5kIGNs
YXJpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
MzE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBwZXJmb3JtYW5jZSByZWZhY3RvcmluZy4KKworICAgICAgICBPbiBzb21lIG9mIG15
IHRlc3QgY2FzZXMsIHRoaXMgbWV0aG9kIHRha2VzIGJldHdlZW4gMyBhbmQgNSUgb2YgdGhlIHRp
bWUgc3BlbmQuCisgICAgICAgIFRoZSBtZXRob2QgbWFrZXMgMiBjYWxscyB0byB2aXJ0dWFsIG1l
dGhvZHMgd2hpY2ggY291bGQgYmUgbW92ZWQgdG8gdGhlaXIgb3ZlcnJpZGVuCisgICAgICAgIHZl
cnNpb24gb2YgY29udGFpbmluZ0Jsb2NrIGlmIHdlIG1hZGUgaXQgdmlydHVhbC4KKworICAgICAg
ICBUaGF0J3Mgd2hhdCB0aGlzIHBhdGNoIGRvZXMuIEl0IHNhdmVzIGJldHdlZW4gMSBhbmQgMiUg
b24gc29tZSBzeW50aGV0aWMgdGVzdCBjYXNlcworICAgICAgICBhcyB3ZWxsIGFzIG1hZGUgdGhl
IGN1cnJlbnQgbWV0aG9kIHNob3J0ZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29udGFpbmluZ0Jsb2Nr
KTogUmVtb3ZlZCBjb2RlIGZvciBSZW5kZXJWaWV3IGFuZCBSZW5kZXJUYWJsZUNlbGwsCisgICAg
ICAgIHJlcGxhY2VkIGJ5IEFTU0VSVHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0Lmg6IE1hZGUgY29udGFpbmluZ0Jsb2NrIHZpcnR1YWwuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6
OmNvbnRhaW5pbmdCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmNvbnRhaW5pbmdCbG9jayk6CisgICAgICAgIFRo
ZSBjb2RlIG1vdmVkIGZyb20gUmVuZGVyT2JqZWN0IGlzIGlubGluZWQgaW4gdGhvc2UgMiBtZXRo
b2RzLgorCiAyMDExLTA3LTEyICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBDaHJvbWl1bSB3aW4gYnVpbGQgZml4LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA4NTg3OWYyZWZhN2JmNDk2NmMw
NjdlZjRhMjk0YWU3MTgyMGI0MjU2Li40NDFiNjg4ZDRhY2ZmNjRjNDU2OWY1YTJjM2MxNzA0NTVh
MTY1OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAt
NjAwLDE1ICs2MDAsOCBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBh
aW50KCkKIAogUmVuZGVyQmxvY2sqIFJlbmRlck9iamVjdDo6Y29udGFpbmluZ0Jsb2NrKCkgY29u
c3QKIHsKLSAgICBpZiAoaXNUYWJsZUNlbGwoKSkgewotICAgICAgICBjb25zdCBSZW5kZXJUYWJs
ZUNlbGwqIGNlbGwgPSB0b1JlbmRlclRhYmxlQ2VsbCh0aGlzKTsKLSAgICAgICAgaWYgKHBhcmVu
dCgpICYmIGNlbGwtPnNlY3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBjZWxsLT50YWJsZSgp
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoaXNSZW5kZXJWaWV3KCkpCi0g
ICAgICAgIHJldHVybiBjb25zdF9jYXN0PFJlbmRlclZpZXcqPih0b1JlbmRlclZpZXcodGhpcykp
OworICAgIEFTU0VSVCghaXNUYWJsZUNlbGwoKSk7CisgICAgQVNTRVJUKCFpc1JlbmRlclZpZXco
KSk7CiAKICAgICBSZW5kZXJPYmplY3QqIG8gPSBwYXJlbnQoKTsKICAgICBpZiAoIWlzVGV4dCgp
ICYmIG1fc3R5bGUtPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDJkZDM4Yjk5YjlhOGFjNzU4ZWM5MGJjMmM2
ZTQyNGZjZTYyMjY4ZGEuLjcwNGVkNTY3ZGY1ZDRmOTYyMGY5OGI4M2M4ZTZjOTA3ZGE2NmU3Mzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTU3MSw3ICs1NzEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdHlsZUludGVybmFsKFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+KTsKIAogICAgIC8vIHJldHVybnMgdGhlIGNvbnRhaW5pbmcgYmxvY2sgbGV2ZWwgZWxl
bWVudCBmb3IgdGhpcyBlbGVtZW50LgotICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2so
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2soKSBjb25z
dDsKIAogICAgIC8vIENvbnZlcnQgdGhlIGdpdmVuIGxvY2FsIHBvaW50IHRvIGFic29sdXRlIGNv
b3JkaW5hdGVzCiAgICAgLy8gRklYTUU6IFRlbXBvcmFyeS4gSWYgdXNlVHJhbnNmb3JtcyBpcyB0
cnVlLCB0YWtlIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LiBFdmVudHVhbGx5IGxvY2FsVG9BYnNv
bHV0ZSgpIHdpbGwgYWx3YXlzIGJlIHRyYW5zZm9ybS1hd2FyZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggNWE1NTFkYmNkMTc4Mzk4NjlkYzUx
ZjhlYTg2NTdiYWNkNGVhOGFiOC4uZjI5NmVlMTc4ODIyNzEzMzNlN2NkYWI2YWM5ZjI3YjZmYTBm
MGU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAK
QEAgLTMxOSw2ICszMTksMTMgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2wKICAgICBzZXRIYXNC
b3hEZWNvcmF0aW9ucyh0cnVlKTsKIH0KIAorUmVuZGVyQmxvY2sqIFJlbmRlclRhYmxlQ2VsbDo6
Y29udGFpbmluZ0Jsb2NrKCkgY29uc3QKK3sKKyAgICBpZiAocGFyZW50KCkgJiYgc2VjdGlvbigp
KQorICAgICAgICByZXR1cm4gdGFibGUoKTsKKyAgICByZXR1cm4gMDsKK30KKwogLy8gVGhlIGZv
bGxvd2luZyBydWxlcyBhcHBseSBmb3IgcmVzb2x2aW5nIGNvbmZsaWN0cyBhbmQgZmlndXJpbmcg
b3V0IHdoaWNoIGJvcmRlcgogLy8gdG8gdXNlLgogLy8gKDEpIEJvcmRlcnMgd2l0aCB0aGUgJ2Jv
cmRlci1zdHlsZScgb2YgJ2hpZGRlbicgdGFrZSBwcmVjZWRlbmNlIG92ZXIgYWxsIG90aGVyIGNv
bmZsaWN0aW5nIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCmlu
ZGV4IGMwYzY0MzYxNWZkOTg4ZTlhZDZjYmViYjcyNDBjYmUxMDIwY2U4YTUuLmM2NmFkYjhjNDIy
N2IxOGZjNWVmZGUyZDI2NzMwMTRlMzdiNGQwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTEzNyw2ICsxMzcsOCBAQCBwcml2YXRlOgogCiAgICAg
dmlydHVhbCBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAg
dmlydHVhbCBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrKCkgY29uc3Q7CisKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxv
Z2ljYWxXaWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4
IDU4NDQ0MmExZjQ1YmY2MWZjOTA2MzhkOWM5ZjcyNzY1YmEwODU5ZWQuLmRjYTczYzdiZTZiMGE4
ZjFjYTFhOWNkMGU4NDIwMzQzMjM2Njc5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAKQEAgLTI1Nyw2ICsyNTcsMTEgQEAgYm9vbCBSZW5kZXJWaWV3OjpzaG91bGRS
ZXBhaW50KGNvbnN0IEludFJlY3QmIHIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1Jl
bmRlckJsb2NrKiBSZW5kZXJWaWV3Ojpjb250YWluaW5nQmxvY2soKSBjb25zdAoreworICAgIHJl
dHVybiBjb25zdF9jYXN0PFJlbmRlclZpZXcqPih0aGlzKTsKK30KKwogdm9pZCBSZW5kZXJWaWV3
OjpyZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBJbnRSZWN0JiB1ciwgYm9vbCBpbW1lZGlhdGUp
CiB7CiAgICAgaWYgKCFzaG91bGRSZXBhaW50KHVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oCmluZGV4IDI5NTA0ZWQxMDA3ZWM5NjE4N2MxNjA1ODM4YTU2YWFiZWIxMWRhYmEu
LjBhM2FkMGVhYmNkMmVkNjlmOGJiNDVhNmY0NjcyZmIzOTQzMjdkZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMTcwLDYgKzE3MCw4IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6CiAgICAgYm9vbCBzaG91bGRSZXBhaW50KGNvbnN0IEludFJlY3QmIHIpIGNvbnN0Owog
ICAgIAorICAgIHZpcnR1YWwgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaygpIGNvbnN0Owor
CiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIG1heSBvbmx5IGJlIGFjY2Vzc2VkIGJ5IExheW91dFN0
YXRlTWFpbnRhaW5lci4KICAgICBib29sIHB1c2hMYXlvdXRTdGF0ZShSZW5kZXJCb3gqIHJlbmRl
cmVyLCBjb25zdCBJbnRTaXplJiBvZmZzZXQsIGludCBwYWdlSGVpZ2h0ID0gMCwgYm9vbCBwYWdl
SGVpZ2h0Q2hhbmdlZCA9IGZhbHNlLCBDb2x1bW5JbmZvKiBjb2xJbmZvID0gMCkKICAgICB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>