<?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>143942</bug_id>
          
          <creation_ts>2015-04-19 22:39:09 -0700</creation_ts>
          <short_desc>Merge TreeShared into Node.</short_desc>
          <delta_ts>2015-04-23 09:33:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086725</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-19 22:39:09 -0700</bug_when>
    <thetext>Node is the only remaining subclass of TreeShared. Let&apos;s just fold TreeShared into Node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086727</commentid>
    <comment_count>1</comment_count>
      <attachid>251143</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-19 22:49:57 -0700</bug_when>
    <thetext>Created attachment 251143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086734</commentid>
    <comment_count>2</comment_count>
      <attachid>251143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 23:19:39 -0700</bug_when>
    <thetext>Comment on attachment 251143
Patch

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

&gt; Source/WebCore/dom/Node.h:545
&gt; +    void ref()
&gt; +    {
&gt; +        ASSERT(isMainThread());
&gt; +        ASSERT(!m_deletionHasBegun);
&gt; +        ASSERT(!m_inRemovedLastRefFunction);
&gt; +        ASSERT(!m_adoptionIsRequired);
&gt; +        ++m_refCount;
&gt; +    }

These function bodies are kind of big. I’d rather see them at the end of the file, outside the class definition. Some day we have a chance of being able to read the class definition.

&gt; Source/WebCore/dom/Node.h:560
&gt; +    void deref()
&gt; +    {
&gt; +        ASSERT(isMainThread());
&gt; +        ASSERT(m_refCount &gt;= 0);
&gt; +        ASSERT(!m_deletionHasBegun);
&gt; +        ASSERT(!m_inRemovedLastRefFunction);
&gt; +        ASSERT(!m_adoptionIsRequired);
&gt; +        if (--m_refCount &lt;= 0 &amp;&amp; !parentNode()) {
&gt; +#ifndef NDEBUG
&gt; +            m_inRemovedLastRefFunction = true;
&gt; +#endif
&gt; +            removedLastRef();
&gt; +        }
&gt; +    }

This one too.

&gt; Source/WebCore/dom/Node.h:567
&gt; +    bool hasOneRef() const
&gt; +    {
&gt; +        ASSERT(!m_deletionHasBegun);
&gt; +        ASSERT(!m_inRemovedLastRefFunction);
&gt; +        return m_refCount == 1;
&gt; +    }

Maybe even this one.

&gt; Source/WebCore/dom/Node.h:572
&gt; +    int refCount() const
&gt; +    {
&gt; +        return m_refCount;
&gt; +    }

Not sure about this one. Not sure why we even have it!

&gt; Source/WebCore/dom/Node.h:578
&gt; +#ifndef NDEBUG
&gt; +    bool m_deletionHasBegun { false };
&gt; +    bool m_inRemovedLastRefFunction { false };
&gt; +    bool m_adoptionIsRequired { true };
&gt; +#endif

Lame that these are public, but I guess that’s how we do it.

&gt; Source/WebCore/dom/Node.h:721
&gt; +    int m_refCount;

How did you decide whether to put this before or after m_nodeFlags?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086753</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-20 01:22:44 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 251143 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251143&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Node.h:545
&gt; &gt; +    void ref()
&gt; &gt; +    {
&gt; &gt; +        ASSERT(isMainThread());
&gt; &gt; +        ASSERT(!m_deletionHasBegun);
&gt; &gt; +        ASSERT(!m_inRemovedLastRefFunction);
&gt; &gt; +        ASSERT(!m_adoptionIsRequired);
&gt; &gt; +        ++m_refCount;
&gt; &gt; +    }
&gt; 
&gt; These function bodies are kind of big. I’d rather see them at the end of the
&gt; file, outside the class definition. Some day we have a chance of being able
&gt; to read the class definition.

Sure thing, I&apos;ll pop them all out.

&gt; &gt; Source/WebCore/dom/Node.h:721
&gt; &gt; +    int m_refCount;
&gt; 
&gt; How did you decide whether to put this before or after m_nodeFlags?

I didn&apos;t think enough about this. I&apos;ll move it to before so the object layout matches what we had before the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086754</commentid>
    <comment_count>4</comment_count>
      <attachid>251153</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-20 01:23:47 -0700</bug_when>
    <thetext>Created attachment 251153
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086769</commentid>
    <comment_count>5</comment_count>
      <attachid>251153</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-20 02:19:32 -0700</bug_when>
    <thetext>Comment on attachment 251153
Patch for landing

Clearing flags on attachment: 251153

Committed r183009: &lt;http://trac.webkit.org/changeset/183009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086770</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-20 02:19:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087126</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-04-21 12:03:04 -0700</bug_when>
    <thetext>May have caused a 3.6% regression on DoYouEvenBench:
https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-yosemite%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%5D
https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mavericks%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%5D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087185</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-21 15:11:49 -0700</bug_when>
    <thetext>Really!? I wonder what happened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087188</commentid>
    <comment_count>9</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-21 15:19:28 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Really!? I wonder what happened.

I&apos;ll try to reproduce locally, but if there&apos;s indeed a problem, my guess would be failure to inline Node::ref() or Node::deref().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087782</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-23 02:08:36 -0700</bug_when>
    <thetext>The bug was that DOM nodes were no longer getting WTF_MAKE_FAST_ALLOCATED :|

Fixed in &lt;https://trac.webkit.org/r183183&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087816</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-23 08:01:36 -0700</bug_when>
    <thetext>Wow, how did we miss that!? Did we also forget to make Node noncopyable, or was that handled some other way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087854</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-04-23 09:33:49 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; The bug was that DOM nodes were no longer getting WTF_MAKE_FAST_ALLOCATED :|
&gt; 
&gt; Fixed in &lt;https://trac.webkit.org/r183183&gt;

oh boy I&apos;m glad the bots caught this :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251143</attachid>
            <date>2015-04-19 22:49:57 -0700</date>
            <delta_ts>2015-04-20 01:23:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143942.diff</filename>
            <type>text/plain</type>
            <size>13679</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkY2I4NjAyLi4yMDRjN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTUtMDQtMTkgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIE1lcmdlIFRyZWVTaGFyZWQgaW50byBOb2RlLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTQzOTQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vZGUgd2FzIHRoZSBvbmx5IHJlbWFpbmluZyB1c2VyIG9mIFRyZWVTaGFyZWQsIHNv
IGp1c3QgZm9sZCB0aGUgY2xhc3MgaW50byBOb2RlLgorCisgICAgICAgICogV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Ok5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAqIGRvbS9Ob2Rl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWYpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6ZGVyZWYpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aGFzT25lUmVmKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OnJlZkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OmFkb3B0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aGFzVHJlZVNoYXJlZFBhcmVudCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vVHJlZVNoYXJlZC5oOiBSZW1vdmVkLgorCiAyMDE1LTA0LTE4ICBK
b24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBUaW1lIGVsYXBzZWQg
c2hvdWxkIGJlIHJpZ2h0LWFsaWduZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGQwNzdhMDIuLmExNmMwY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTk4OTcsNyArMTk4
OTcsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVGhyZWFkR2xvYmFs
RGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVGhyZWFkVGlt
ZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxUaW1lci5oIiAv
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVHJlZVNoYXJlZC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVXNlckFjdGl2aXR5LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxIeXN0ZXJlc2lzQWN0aXZpdHkuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVVSUQuaCIgLz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmls
dGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmls
dGVycwppbmRleCBlNDQ2MDg3Li5jYzE3ODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC04MzEwLDkgKzgz
MTAsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVGltZXIuaCI+CiAg
ICAgICA8RmlsdGVyPnBsYXRmb3JtPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxUcmVlU2hhcmVkLmgiPgotICAgICAgPEZpbHRl
cj5wbGF0Zm9ybTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cVXNlckFjdGl2aXR5LmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9y
bTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUxMTBlMGIuLjhhMWIzODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTU4NCw3ICs1ODQsNiBAQAogCQkxNDExNUI3MjA5Rjg0Q0Q2MDBDQTRGQzEgLyogSlNOb2RlRmls
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MTE1QjcwMDlGODRDRDYwMENBNEZDMSAvKiBKU05vZGVGaWx0ZXIuY3BwICovOyB9OwogCQkxNDEx
NUI3MzA5Rjg0Q0Q2MDBDQTRGQzEgLyogSlNOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDExNUI3MTA5Rjg0Q0Q2MDBDQTRGQzEgLyog
SlNOb2RlRmlsdGVyLmggKi87IH07CiAJCTE0MTFEQ0IxMTY0QzM5QTgwMEQ0OUJDMSAvKiBXaWR0
aENhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDExRENCMDE2NEMzOUE4MDBENDlCQzEgLyogV2lkdGhDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0MTlEMkM1MENFQTZGNjEwMEZGNTA3
QSAvKiBUcmVlU2hhcmVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDE5RDJDNDBDRUE2RjYxMDBGRjUwN0EgLyogVHJlZVNoYXJlZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MURDMDQ4MTY0ODM0
OEYwMDM3MUU1QSAvKiBMYXlvdXRVbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDFEQzA0NzE2NDgzNDhGMDAzNzFFNUEgLyogTGF5b3V0VW5pdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MURD
MDRGMTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRCb3hFeHRlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQxREMwNDkxNjQ4MzRCOTAwMzcxRTVB
IC8qIExheW91dEJveEV4dGVudC5jcHAgKi87IH07CiAJCTE0MURDMDUwMTY0ODM0QjkwMDM3MUU1
QSAvKiBMYXlvdXRCb3hFeHRlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0MURDMDRBMTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRCb3hFeHRlbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzYz
Myw3ICs3NjMyLDYgQEAKIAkJMTQxMTVCNzAwOUY4NENENjAwQ0E0RkMxIC8qIEpTTm9kZUZpbHRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRmlsdGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQxMTVCNzEwOUY4NENENjAwQ0E0
RkMxIC8qIEpTTm9kZUZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNOb2RlRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MTFEQ0IwMTY0
QzM5QTgwMEQ0OUJDMSAvKiBXaWR0aENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdpZHRoQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQxOUQy
QzQwQ0VBNkY2MTAwRkY1MDdBIC8qIFRyZWVTaGFyZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVHJlZVNoYXJlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NDFCOTRFNTA5RUM0MjIzMDAwRTk0MTMgLyogTW91c2VFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IE1vdXNlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NDFCOTRFRTA5RUM0MjVBMDAwRTk0MTMgLyogVUlFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFVJRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDFEQzA0
NzE2NDgzNDhGMDAzNzFFNUEgLyogTGF5b3V0VW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMYXlvdXRVbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTc2Nyw3ICsyMTc2NSw2IEBACiAJCQkJMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVh
ZFRpbWVycy5oICovLAogCQkJCTkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAg
Ki8sCiAJCQkJOTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8sCi0JCQkJMTQx
OUQyQzQwQ0VBNkY2MTAwRkY1MDdBIC8qIFRyZWVTaGFyZWQuaCAqLywKIAkJCQk2NTkzOTIzNTA5
QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmNwcCAqLywKIAkJCQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUz
MUYgLyogVVJMLmggKi8sCiAJCQkJQkNCRDIxQUEwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2gu
aCAqLywKQEAgLTI2ODU4LDcgKzI2ODU1LDYgQEAKIAkJCQk2Rjk5NUEyNDFBNzA3OEIxMDBBNzM1
RjQgLyogV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRENjRC
NUQxMzRBNUI2QjAwRTU4RkRBIC8qIFRyZWVTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3
RTFGRjAxNEFBQ0I2RTAwNUI3Q0I2IC8qIFRyZWVTY29wZUFkb3B0ZXIuaCBpbiBIZWFkZXJzICov
LAotCQkJCTE0MTlEMkM1MENFQTZGNjEwMEZGNTA3QSAvKiBUcmVlU2hhcmVkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTRGRTczOTBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzM3NUQ3RkUxNjYzOTUxOTAwNjE4NEFCIC8qIFR5cGVBaGVhZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTQ2QTJCMUMxN0NBNjVCOTAwMERCQ0Q4IC8qIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXgg
MTk2MWQxMS4uMWE0MGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjg4LDExICsyODgsMTQgQEAg
dm9pZCBOb2RlOjp0cmFja0ZvckRlYnVnZ2luZygpCiAKIE5vZGU6Ok5vZGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgOiBtX25vZGVGbGFncyh0eXBlKQor
ICAgICwgbV9yZWZDb3VudCgxKQogICAgICwgbV9wYXJlbnROb2RlKG51bGxwdHIpCiAgICAgLCBt
X3RyZWVTY29wZSgmZG9jdW1lbnQpCiAgICAgLCBtX3ByZXZpb3VzKG51bGxwdHIpCiAgICAgLCBt
X25leHQobnVsbHB0cikKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgZG9j
dW1lbnQuaW5jcmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKIAogI2lmICFkZWZpbmVkKE5E
RUJVRykgfHwgKGRlZmluZWQoRFVNUF9OT0RFX1NUQVRJU1RJQ1MpICYmIERVTVBfTk9ERV9TVEFU
SVNUSUNTKQpAQCAtMzAyLDYgKzMwNSwxMSBAQCBOb2RlOjpOb2RlKERvY3VtZW50JiBkb2N1bWVu
dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogCiBOb2RlOjp+Tm9kZSgpCiB7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIW1fcmVmQ291bnQpOworICAgIEFTU0VSVCht
X2RlbGV0aW9uSGFzQmVndW4pOworICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOwor
CiAjaWZuZGVmIE5ERUJVRwogICAgIGlmICghaWdub3JlU2V0KCkucmVtb3ZlKHRoaXMpKQogICAg
ICAgICBub2RlQ291bnRlci5kZWNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDZlMTBmZmMuLjRk
NmE3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMzIsMjAgKzMyLDExIEBACiAjaW5jbHVkZSAiUmVuZGVy
U3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRl
ICJUcmVlU2NvcGUuaCIKLSNpbmNsdWRlICJUcmVlU2hhcmVkLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAotbmFtZXNwYWNlIEpTQyB7
Ci1jbGFzcyBWTTsKLWNsYXNzIFNsb3RWaXNpdG9yOwotfQotCi1uYW1lc3BhY2UgV1RGIHsKLWNs
YXNzIEF0b21pY1N0cmluZzsKLX0KLQogLy8gVGhpcyBuZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ug
RG9jdW1lbnQuaCBhbHNvIGRlcGVuZHMgb24gaXQuCiAjZGVmaW5lIERVTVBfTk9ERV9TVEFUSVNU
SUNTIDAKIApAQCAtMTIwLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyT2JqZWN0KiBt
X3JlbmRlcmVyOwogfTsKIAotY2xhc3MgTm9kZSA6IHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFRyZWVTaGFyZWQ8Tm9kZT4geworY2xhc3MgTm9kZSA6
IHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiAgICAgZnJpZW5k
IGNsYXNzIERvY3VtZW50OwogICAgIGZyaWVuZCBjbGFzcyBUcmVlU2NvcGU7CiAgICAgZnJpZW5k
IGNsYXNzIFRyZWVTY29wZUFkb3B0ZXI7CkBAIC01NDQsOCArNTM1LDQ3IEBAIHB1YmxpYzoKICAg
ICAvLyBQZXJmb3JtIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgYW4gZXZlbnQuCiAgICAgdmlydHVh
bCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIAotICAgIHVzaW5nIFRyZWVTaGFy
ZWQ8Tm9kZT46OnJlZjsKLSAgICB1c2luZyBUcmVlU2hhcmVkPE5vZGU+OjpkZXJlZjsKKyAgICB2
b2lkIHJlZigpCisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAg
ICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CisgICAgICAgIEFTU0VSVCghbV9pblJlbW92
ZWRMYXN0UmVmRnVuY3Rpb24pOworICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVk
KTsKKyAgICAgICAgKyttX3JlZkNvdW50OworICAgIH0KKworICAgIHZvaWQgZGVyZWYoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fcmVm
Q291bnQgPj0gMCk7CisgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICAg
ICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7CisgICAgICAgIEFTU0VSVCgh
bV9hZG9wdGlvbklzUmVxdWlyZWQpOworICAgICAgICBpZiAoLS1tX3JlZkNvdW50IDw9IDAgJiYg
IXBhcmVudE5vZGUoKSkgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIG1faW5SZW1vdmVk
TGFzdFJlZkZ1bmN0aW9uID0gdHJ1ZTsKKyNlbmRpZgorICAgICAgICAgICAgcmVtb3ZlZExhc3RS
ZWYoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgaGFzT25lUmVmKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICAgICAgQVNTRVJU
KCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7CisgICAgICAgIHJldHVybiBtX3JlZkNvdW50
ID09IDE7CisgICAgfQorCisgICAgaW50IHJlZkNvdW50KCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3JlZkNvdW50OworICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBib29sIG1f
ZGVsZXRpb25IYXNCZWd1biB7IGZhbHNlIH07CisgICAgYm9vbCBtX2luUmVtb3ZlZExhc3RSZWZG
dW5jdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Fkb3B0aW9uSXNSZXF1aXJlZCB7IHRydWUg
fTsKKyNlbmRpZgogCiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0
YSgpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVF
dmVudFRhcmdldERhdGEoKSBvdmVycmlkZSBmaW5hbDsKQEAgLTY2OCw4ICs2OTgsNiBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCB1cGRhdGVBbmNlc3RvcnNGb3JTdHlsZVJlY2FsYygpOwogCiBwcml2
YXRlOgotICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkPE5vZGU+OwotCiAgICAgdmlydHVhbCBQ
c2V1ZG9JZCBjdXN0b21Qc2V1ZG9JZCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaGFz
Q3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpOwpAQCAtNjc3LDcgKzcwNSw2IEBAIHByaXZh
dGU6CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVkTGFzdFJlZigpOwot
ICAgIGJvb2wgaGFzVHJlZVNoYXJlZFBhcmVudCgpIGNvbnN0IHsgcmV0dXJuICEhcGFyZW50Tm9k
ZSgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlOwpAQCAtNjkxLDYgKzcx
OCw4IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
Kj4qIHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpOwogCiAgICAgbXV0YWJsZSB1
aW50MzJfdCBtX25vZGVGbGFnczsKKyAgICBpbnQgbV9yZWZDb3VudDsKKwogICAgIENvbnRhaW5l
ck5vZGUqIG1fcGFyZW50Tm9kZTsKICAgICBUcmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE5v
ZGUqIG1fcHJldmlvdXM7CkBAIC03MDgsNiArNzM3LDE3IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IGNsZWFySXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCgpIHsgY2xlYXJGbGFnKElzUGFyc2luZ0No
aWxkcmVuRmluaXNoZWRGbGFnKTsgfQogfTsKIAorI2lmbmRlZiBOREVCVUcKK2lubGluZSB2b2lk
IGFkb3B0ZWQoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsK
KyAgICBBU1NFUlQoIW5vZGUtPm1fZGVsZXRpb25IYXNCZWd1bik7CisgICAgQVNTRVJUKCFub2Rl
LT5tX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7CisgICAgbm9kZS0+bV9hZG9wdGlvbklzUmVx
dWlyZWQgPSBmYWxzZTsKK30KKyNlbmRpZgorCiAvLyBVc2VkIGluIE5vZGU6OmFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcygpIGFuZCBpbiBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcygpCiBpbmxp
bmUgdm9pZCBhZGRTdWJyZXNvdXJjZVVSTChMaXN0SGFzaFNldDxVUkw+JiB1cmxzLCBjb25zdCBV
UkwmIHVybCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFy
ZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZjE5MjY4OC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UcmVlU2hhcmVkLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFRyZWVTaGFyZWRfaAotI2RlZmluZSBU
cmVlU2hhcmVkX2gKLQotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi0jaWZuZGVmIE5ERUJVRwotdGVtcGxhdGU8dHlwZW5hbWUgTm9kZVR5cGU+
IGNsYXNzIFRyZWVTaGFyZWQ7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZT4gdm9pZCBhZG9w
dGVkKFRyZWVTaGFyZWQ8Tm9kZVR5cGU+Kik7Ci0jZW5kaWYKLQotdGVtcGxhdGU8dHlwZW5hbWUg
Tm9kZVR5cGU+IGNsYXNzIFRyZWVTaGFyZWQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRy
ZWVTaGFyZWQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXByb3RlY3RlZDoKLSAgICBUcmVl
U2hhcmVkKCkKLSAgICAgICAgOiBtX3JlZkNvdW50KDEpCi0jaWZuZGVmIE5ERUJVRwotICAgICAg
ICAsIG1fYWRvcHRpb25Jc1JlcXVpcmVkKHRydWUpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBtX2RlbGV0aW9u
SGFzQmVndW4gPSBmYWxzZTsKLSAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSBm
YWxzZTsKLSNlbmRpZgotICAgIH0KLQotICAgIH5UcmVlU2hhcmVkKCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEFTU0VSVCghbV9yZWZDb3VudCk7Ci0g
ICAgICAgIEFTU0VSVChtX2RlbGV0aW9uSGFzQmVndW4pOwotICAgICAgICBBU1NFUlQoIW1fYWRv
cHRpb25Jc1JlcXVpcmVkKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICB2b2lkIHJlZigpCi0gICAg
ewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBBU1NFUlQoIW1fZGVs
ZXRpb25IYXNCZWd1bik7Ci0gICAgICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rp
b24pOwotICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKLSAgICAgICAgKytt
X3JlZkNvdW50OwotICAgIH0KLQotICAgIHZvaWQgZGVyZWYoKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQVNTRVJUKG1fcmVmQ291bnQgPj0gMCk7Ci0g
ICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKLSAgICAgICAgQVNTRVJUKCFtX2lu
UmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7Ci0gICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVx
dWlyZWQpOwotICAgICAgICBOb2RlVHlwZSogdGhpc05vZGUgPSBzdGF0aWNfY2FzdDxOb2RlVHlw
ZSo+KHRoaXMpOwotICAgICAgICBpZiAoLS1tX3JlZkNvdW50IDw9IDAgJiYgIXRoaXNOb2RlLT5o
YXNUcmVlU2hhcmVkUGFyZW50KCkpIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBtX2lu
UmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IHRydWU7Ci0jZW5kaWYKLSAgICAgICAgICAgIHRoaXNO
b2RlLT5yZW1vdmVkTGFzdFJlZigpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgYm9vbCBoYXNP
bmVSZWYoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4p
OwotICAgICAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKLSAgICAgICAg
cmV0dXJuIG1fcmVmQ291bnQgPT0gMTsKLSAgICB9Ci0KLSAgICBpbnQgcmVmQ291bnQoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQ7Ci0gICAgfQotCi0jaWZuZGVmIE5E
RUJVRwotICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3VuOwotICAgIGJvb2wgbV9pblJlbW92ZWRM
YXN0UmVmRnVuY3Rpb247Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSNpZm5kZWYgTkRFQlVHCi0gICAg
ZnJpZW5kIHZvaWQgYWRvcHRlZDw+KFRyZWVTaGFyZWQ8Tm9kZVR5cGU+Kik7Ci0jZW5kaWYKLQot
ICAgIGludCBtX3JlZkNvdW50OwotCi0jaWZuZGVmIE5ERUJVRwotICAgIGJvb2wgbV9hZG9wdGlv
bklzUmVxdWlyZWQ7Ci0jZW5kaWYKLX07Ci0KLSNpZm5kZWYgTkRFQlVHCi0KLXRlbXBsYXRlPHR5
cGVuYW1lIE5vZGVUeXBlPiBpbmxpbmUgdm9pZCBhZG9wdGVkKFRyZWVTaGFyZWQ8Tm9kZVR5cGU+
KiBvYmplY3QpCi17Ci0gICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NF
UlQoIW9iamVjdC0+bV9kZWxldGlvbkhhc0JlZ3VuKTsKLSAgICBBU1NFUlQoIW9iamVjdC0+bV9p
blJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwotICAgIG9iamVjdC0+bV9hZG9wdGlvbklzUmVxdWly
ZWQgPSBmYWxzZTsKLX0KLQotI2VuZGlmCi0KLX0KLQotI2VuZGlmIC8vIFRyZWVTaGFyZWQuaAo=
</data>
<flag name="review"
          id="275940"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251153</attachid>
            <date>2015-04-20 01:23:47 -0700</date>
            <delta_ts>2015-04-20 02:19:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>land-143942.diff</filename>
            <type>text/plain</type>
            <size>13818</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0NWIxZTExLi4zYzQ3MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTUtMDQtMjAgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIE1lcmdlIFRyZWVTaGFyZWQgaW50byBOb2RlLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTQzOTQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIE5vZGUgd2FzIHRoZSBvbmx5IHJlbWFpbmluZyB1c2VyIG9mIFRyZWVTaGFyZWQsIHNvIGp1
c3QgZm9sZCB0aGUgY2xhc3MgaW50byBOb2RlLgorCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Ok5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWYpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
ZGVyZWYpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aGFzT25lUmVmKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OnJlZkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OmFkb3B0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6aGFzVHJlZVNoYXJlZFBhcmVudCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vVHJlZVNoYXJlZC5oOiBSZW1vdmVkLgorCiAyMDE1LTA0LTE5ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXByb3ZlIHRo
ZSBmZWF0dXJlLmpzb24gZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qCmluZGV4IGQwNzdhMDIuLmExNmMwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTk4OTcsNyArMTk4OTcs
NiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVGhyZWFkR2xvYmFsRGF0
YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVGhyZWFkVGltZXJz
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxUaW1lci5oIiAvPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVHJlZVNoYXJlZC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVXNlckFjdGl2aXR5LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxIeXN0ZXJlc2lzQWN0aXZpdHkuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVVSUQuaCIgLz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cwppbmRleCBlNDQ2MDg3Li5jYzE3ODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC04MzEwLDkgKzgzMTAs
NiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVGltZXIuaCI+CiAgICAg
ICA8RmlsdGVyPnBsYXRmb3JtPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxUcmVlU2hhcmVkLmgiPgotICAgICAgPEZpbHRlcj5w
bGF0Zm9ybTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cVXNlckFjdGl2aXR5LmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUxMTBlMGIuLjhhMWIzODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU4
NCw3ICs1ODQsNiBAQAogCQkxNDExNUI3MjA5Rjg0Q0Q2MDBDQTRGQzEgLyogSlNOb2RlRmlsdGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTE1
QjcwMDlGODRDRDYwMENBNEZDMSAvKiBKU05vZGVGaWx0ZXIuY3BwICovOyB9OwogCQkxNDExNUI3
MzA5Rjg0Q0Q2MDBDQTRGQzEgLyogSlNOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDExNUI3MTA5Rjg0Q0Q2MDBDQTRGQzEgLyogSlNO
b2RlRmlsdGVyLmggKi87IH07CiAJCTE0MTFEQ0IxMTY0QzM5QTgwMEQ0OUJDMSAvKiBXaWR0aENh
Y2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEx
RENCMDE2NEMzOUE4MDBENDlCQzEgLyogV2lkdGhDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0MTlEMkM1MENFQTZGNjEwMEZGNTA3QSAv
KiBUcmVlU2hhcmVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDE5RDJDNDBDRUE2RjYxMDBGRjUwN0EgLyogVHJlZVNoYXJlZC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MURDMDQ4MTY0ODM0OEYw
MDM3MUU1QSAvKiBMYXlvdXRVbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDFEQzA0NzE2NDgzNDhGMDAzNzFFNUEgLyogTGF5b3V0VW5pdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MURDMDRG
MTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRCb3hFeHRlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQxREMwNDkxNjQ4MzRCOTAwMzcxRTVBIC8q
IExheW91dEJveEV4dGVudC5jcHAgKi87IH07CiAJCTE0MURDMDUwMTY0ODM0QjkwMDM3MUU1QSAv
KiBMYXlvdXRCb3hFeHRlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0MURDMDRBMTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRCb3hFeHRlbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzYzMyw3
ICs3NjMyLDYgQEAKIAkJMTQxMTVCNzAwOUY4NENENjAwQ0E0RkMxIC8qIEpTTm9kZUZpbHRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlRmlsdGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQxMTVCNzEwOUY4NENENjAwQ0E0RkMx
IC8qIEpTTm9kZUZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNO
b2RlRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MTFEQ0IwMTY0QzM5
QTgwMEQ0OUJDMSAvKiBXaWR0aENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdpZHRoQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQxOUQyQzQw
Q0VBNkY2MTAwRkY1MDdBIC8qIFRyZWVTaGFyZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVHJlZVNoYXJlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDFC
OTRFNTA5RUM0MjIzMDAwRTk0MTMgLyogTW91c2VFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IE1vdXNlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDFC
OTRFRTA5RUM0MjVBMDAwRTk0MTMgLyogVUlFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFVJRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDFEQzA0NzE2
NDgzNDhGMDAzNzFFNUEgLyogTGF5b3V0VW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMYXlvdXRVbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTc2
Nyw3ICsyMTc2NSw2IEBACiAJCQkJMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRp
bWVycy5oICovLAogCQkJCTkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgKi8s
CiAJCQkJOTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8sCi0JCQkJMTQxOUQy
QzQwQ0VBNkY2MTAwRkY1MDdBIC8qIFRyZWVTaGFyZWQuaCAqLywKIAkJCQk2NTkzOTIzNTA5QUU0
MzQ2MDAyQzUzMUYgLyogVVJMLmNwcCAqLywKIAkJCQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYg
LyogVVJMLmggKi8sCiAJCQkJQkNCRDIxQUEwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCAq
LywKQEAgLTI2ODU4LDcgKzI2ODU1LDYgQEAKIAkJCQk2Rjk5NUEyNDFBNzA3OEIxMDBBNzM1RjQg
LyogV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRENjRCNUQx
MzRBNUI2QjAwRTU4RkRBIC8qIFRyZWVTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RTFG
RjAxNEFBQ0I2RTAwNUI3Q0I2IC8qIFRyZWVTY29wZUFkb3B0ZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCTE0MTlEMkM1MENFQTZGNjEwMEZGNTA3QSAvKiBUcmVlU2hhcmVkLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NTRGRTczOTBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzM3NUQ3RkUxNjYzOTUxOTAwNjE4NEFCIC8qIFR5cGVBaGVhZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQ2QTJCMUMxN0NBNjVCOTAwMERCQ0Q4IC8qIFR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMTk2
MWQxMS4uNjc2NTc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjg3LDEyICsyODcsMTUgQEAgdm9p
ZCBOb2RlOjp0cmFja0ZvckRlYnVnZ2luZygpCiB9CiAKIE5vZGU6Ok5vZGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCi0gICAgOiBtX25vZGVGbGFncyh0eXBlKQor
ICAgIDogbV9yZWZDb3VudCgxKQorICAgICwgbV9ub2RlRmxhZ3ModHlwZSkKICAgICAsIG1fcGFy
ZW50Tm9kZShudWxscHRyKQogICAgICwgbV90cmVlU2NvcGUoJmRvY3VtZW50KQogICAgICwgbV9w
cmV2aW91cyhudWxscHRyKQogICAgICwgbV9uZXh0KG51bGxwdHIpCiB7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKwogICAgIGRvY3VtZW50LmluY3JlbWVudFJlZmVyZW5jaW5nTm9kZUNv
dW50KCk7CiAKICNpZiAhZGVmaW5lZChOREVCVUcpIHx8IChkZWZpbmVkKERVTVBfTk9ERV9TVEFU
SVNUSUNTKSAmJiBEVU1QX05PREVfU1RBVElTVElDUykKQEAgLTMwMiw2ICszMDUsMTEgQEAgTm9k
ZTo6Tm9kZShEb2N1bWVudCYgZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKIAogTm9k
ZTo6fk5vZGUoKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFt
X3JlZkNvdW50KTsKKyAgICBBU1NFUlQobV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICBBU1NFUlQo
IW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKKwogI2lmbmRlZiBOREVCVUcKICAgICBpZiAoIWlnbm9y
ZVNldCgpLnJlbW92ZSh0aGlzKSkKICAgICAgICAgbm9kZUNvdW50ZXIuZGVjcmVtZW50KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAppbmRleCA2ZTEwZmZjLi44ZTJlNmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTMyLDIwICsz
MiwxMSBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCi0jaW5jbHVkZSAiVHJlZVNo
YXJlZC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNh
c3RzLmg+CiAKLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgVk07Ci1jbGFzcyBTbG90VmlzaXRvcjsK
LX0KLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBBdG9taWNTdHJpbmc7Ci19Ci0KIC8vIFRoaXMg
bmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIERvY3VtZW50LmggYWxzbyBkZXBlbmRzIG9uIGl0Lgog
I2RlZmluZSBEVU1QX05PREVfU1RBVElTVElDUyAwCiAKQEAgLTEyMCw3ICsxMTEsNyBAQCBwcml2
YXRlOgogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKIH07CiAKLWNsYXNzIE5vZGUgOiBw
dWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBUcmVlU2hh
cmVkPE5vZGU+IHsKK2NsYXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBTY3Jp
cHRXcmFwcGFibGUgewogICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudDsKICAgICBmcmllbmQgY2xh
c3MgVHJlZVNjb3BlOwogICAgIGZyaWVuZCBjbGFzcyBUcmVlU2NvcGVBZG9wdGVyOwpAQCAtNTQ0
LDggKzUzNSwxNiBAQCBwdWJsaWM6CiAgICAgLy8gUGVyZm9ybSB0aGUgZGVmYXVsdCBhY3Rpb24g
Zm9yIGFuIGV2ZW50LgogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
Kik7CiAKLSAgICB1c2luZyBUcmVlU2hhcmVkPE5vZGU+OjpyZWY7Ci0gICAgdXNpbmcgVHJlZVNo
YXJlZDxOb2RlPjo6ZGVyZWY7CisgICAgdm9pZCByZWYoKTsKKyAgICB2b2lkIGRlcmVmKCk7Cisg
ICAgYm9vbCBoYXNPbmVSZWYoKSBjb25zdDsKKyAgICBpbnQgcmVmQ291bnQoKSBjb25zdDsKKwor
I2lmbmRlZiBOREVCVUcKKyAgICBib29sIG1fZGVsZXRpb25IYXNCZWd1biB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBt
X2Fkb3B0aW9uSXNSZXF1aXJlZCB7IHRydWUgfTsKKyNlbmRpZgogCiAgICAgdmlydHVhbCBFdmVu
dFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1
YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBvdmVycmlkZSBmaW5h
bDsKQEAgLTY2OCw4ICs2NjcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB1cGRhdGVBbmNlc3Rv
cnNGb3JTdHlsZVJlY2FsYygpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hh
cmVkPE5vZGU+OwotCiAgICAgdmlydHVhbCBQc2V1ZG9JZCBjdXN0b21Qc2V1ZG9JZCgpIGNvbnN0
CiAgICAgewogICAgICAgICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkp
OwpAQCAtNjc3LDcgKzY3NCw2IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVkTGFzdFJlZigpOwotICAgIGJvb2wgaGFzVHJlZVNoYXJlZFBhcmVudCgp
IGNvbnN0IHsgcmV0dXJuICEhcGFyZW50Tm9kZSgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIG92ZXJyaWRlOwpAQCAtNjkwLDcgKzY4Niw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPj4qIG11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyeSgpOwogICAgIEhhc2hTZXQ8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlv
bio+KiB0cmFuc2llbnRNdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKTsKIAorICAgIGludCBtX3Jl
ZkNvdW50OwogICAgIG11dGFibGUgdWludDMyX3QgbV9ub2RlRmxhZ3M7CisKICAgICBDb250YWlu
ZXJOb2RlKiBtX3BhcmVudE5vZGU7CiAgICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKICAgICBO
b2RlKiBtX3ByZXZpb3VzOwpAQCAtNzA4LDYgKzcwNiw1MyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBjbGVhcklzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKSB7IGNsZWFyRmxhZyhJc1BhcnNpbmdD
aGlsZHJlbkZpbmlzaGVkRmxhZyk7IH0KIH07CiAKKyNpZm5kZWYgTkRFQlVHCitpbmxpbmUgdm9p
ZCBhZG9wdGVkKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47
CisgICAgQVNTRVJUKCFub2RlLT5tX2RlbGV0aW9uSGFzQmVndW4pOworICAgIEFTU0VSVCghbm9k
ZS0+bV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOworICAgIG5vZGUtPm1fYWRvcHRpb25Jc1Jl
cXVpcmVkID0gZmFsc2U7Cit9CisjZW5kaWYKKworaW5saW5lIHZvaWQgTm9kZTo6cmVmKCkKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0Jl
Z3VuKTsKKyAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKKyAgICBBU1NF
UlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKKyAgICArK21fcmVmQ291bnQ7Cit9CisKK2lubGlu
ZSB2b2lkIE5vZGU6OmRlcmVmKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChtX3JlZkNvdW50ID49IDApOworICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3Vu
KTsKKyAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKKyAgICBBU1NFUlQo
IW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKKyAgICBpZiAoLS1tX3JlZkNvdW50IDw9IDAgJiYgIXBh
cmVudE5vZGUoKSkgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVm
RnVuY3Rpb24gPSB0cnVlOworI2VuZGlmCisgICAgICAgIHJlbW92ZWRMYXN0UmVmKCk7CisgICAg
fQorfQorCitpbmxpbmUgYm9vbCBOb2RlOjpoYXNPbmVSZWYoKSBjb25zdAoreworICAgIEFTU0VS
VCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1
bmN0aW9uKTsKKyAgICByZXR1cm4gbV9yZWZDb3VudCA9PSAxOworfQorCitpbmxpbmUgaW50IE5v
ZGU6OnJlZkNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWZDb3VudDsKK30KKwogLy8g
VXNlZCBpbiBOb2RlOjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoKSBhbmQgaW4gYWRkU3Vi
cmVzb3VyY2VTdHlsZVVSTHMoKQogaW5saW5lIHZvaWQgYWRkU3VicmVzb3VyY2VVUkwoTGlzdEhh
c2hTZXQ8VVJMPiYgdXJscywgY29uc3QgVVJMJiB1cmwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
cmVlU2hhcmVkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxOTI2ODguLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MDksIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRl
ZiBUcmVlU2hhcmVkX2gKLSNkZWZpbmUgVHJlZVNoYXJlZF9oCi0KLSNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmbmRlZiBOREVCVUcKLXRl
bXBsYXRlPHR5cGVuYW1lIE5vZGVUeXBlPiBjbGFzcyBUcmVlU2hhcmVkOwotdGVtcGxhdGU8dHlw
ZW5hbWUgTm9kZVR5cGU+IHZvaWQgYWRvcHRlZChUcmVlU2hhcmVkPE5vZGVUeXBlPiopOwotI2Vu
ZGlmCi0KLXRlbXBsYXRlPHR5cGVuYW1lIE5vZGVUeXBlPiBjbGFzcyBUcmVlU2hhcmVkIHsKLSAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUcmVlU2hhcmVkKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wcm90ZWN0ZWQ6Ci0gICAgVHJlZVNoYXJlZCgpCi0gICAgICAgIDogbV9yZWZDb3VudCgx
KQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX2Fkb3B0aW9uSXNSZXF1aXJlZCh0cnVlKQot
I2VuZGlmCi0gICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotI2lmbmRlZiBO
REVCVUcKLSAgICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gZmFsc2U7Ci0gICAgICAgIG1faW5S
ZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gZmFsc2U7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB+VHJl
ZVNoYXJlZCgpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAg
ICBBU1NFUlQoIW1fcmVmQ291bnQpOwotICAgICAgICBBU1NFUlQobV9kZWxldGlvbkhhc0JlZ3Vu
KTsKLSAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7Ci0gICAgfQotCi1wdWJs
aWM6Ci0gICAgdm9pZCByZWYoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwotICAgICAgICBBU1NFUlQo
IW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKLSAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9u
SXNSZXF1aXJlZCk7Ci0gICAgICAgICsrbV9yZWZDb3VudDsKLSAgICB9Ci0KLSAgICB2b2lkIGRl
cmVmKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEFT
U0VSVChtX3JlZkNvdW50ID49IDApOwotICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1
bik7Ci0gICAgICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwotICAgICAg
ICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKLSAgICAgICAgTm9kZVR5cGUqIHRoaXNO
b2RlID0gc3RhdGljX2Nhc3Q8Tm9kZVR5cGUqPih0aGlzKTsKLSAgICAgICAgaWYgKC0tbV9yZWZD
b3VudCA8PSAwICYmICF0aGlzTm9kZS0+aGFzVHJlZVNoYXJlZFBhcmVudCgpKSB7Ci0jaWZuZGVm
IE5ERUJVRwotICAgICAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSB0cnVlOwot
I2VuZGlmCi0gICAgICAgICAgICB0aGlzTm9kZS0+cmVtb3ZlZExhc3RSZWYoKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGJvb2wgaGFzT25lUmVmKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKLSAgICAgICAgQVNTRVJUKCFtX2luUmVtb3ZlZExh
c3RSZWZGdW5jdGlvbik7Ci0gICAgICAgIHJldHVybiBtX3JlZkNvdW50ID09IDE7Ci0gICAgfQot
Ci0gICAgaW50IHJlZkNvdW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3JlZkNv
dW50OwotICAgIH0KLQotI2lmbmRlZiBOREVCVUcKLSAgICBib29sIG1fZGVsZXRpb25IYXNCZWd1
bjsKLSAgICBib29sIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uOwotI2VuZGlmCi0KLXByaXZh
dGU6Ci0jaWZuZGVmIE5ERUJVRwotICAgIGZyaWVuZCB2b2lkIGFkb3B0ZWQ8PihUcmVlU2hhcmVk
PE5vZGVUeXBlPiopOwotI2VuZGlmCi0KLSAgICBpbnQgbV9yZWZDb3VudDsKLQotI2lmbmRlZiBO
REVCVUcKLSAgICBib29sIG1fYWRvcHRpb25Jc1JlcXVpcmVkOwotI2VuZGlmCi19OwotCi0jaWZu
ZGVmIE5ERUJVRwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZT4gaW5saW5lIHZvaWQgYWRv
cHRlZChUcmVlU2hhcmVkPE5vZGVUeXBlPiogb2JqZWN0KQotewotICAgIGlmICghb2JqZWN0KQot
ICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKCFvYmplY3QtPm1fZGVsZXRpb25IYXNCZWd1bik7
Ci0gICAgQVNTRVJUKCFvYmplY3QtPm1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKLSAgICBv
YmplY3QtPm1fYWRvcHRpb25Jc1JlcXVpcmVkID0gZmFsc2U7Ci19Ci0KLSNlbmRpZgotCi19Ci0K
LSNlbmRpZiAvLyBUcmVlU2hhcmVkLmgK
</data>

          </attachment>
      

    </bug>

</bugzilla>