<?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>154660</bug_id>
          
          <creation_ts>2016-02-24 15:54:15 -0800</creation_ts>
          <short_desc>Simplify and modernize member functions of FocusNavigationScope</short_desc>
          <delta_ts>2016-02-26 16:15:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>151379</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1167960</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-24 15:54:15 -0800</bug_when>
    <thetext>Use NodeTraversal for example</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167979</commentid>
    <comment_count>1</comment_count>
      <attachid>272162</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-24 17:10:36 -0800</bug_when>
    <thetext>Created attachment 272162
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167981</commentid>
    <comment_count>2</comment_count>
      <attachid>272163</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-24 17:11:21 -0800</bug_when>
    <thetext>Created attachment 272163
Removed a tab in change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167988</commentid>
    <comment_count>3</comment_count>
      <attachid>272163</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-24 17:29:54 -0800</bug_when>
    <thetext>Comment on attachment 272163
Removed a tab in change log

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

&gt; Source/WebCore/page/FocusController.cpp:118
&gt; -static Node* parentInScope(const Node* node)
&gt; -{
&gt; -    if (node-&gt;isShadowRoot())
&gt; -        return nullptr;
&gt; -
&gt; -    ContainerNode* parent = node-&gt;parentNode();
&gt; -    if (parent &amp;&amp; parent-&gt;shadowRoot())
&gt; -        return nullptr;
&gt; -
&gt; -    return parent;
&gt; -}
&gt; -
&gt; -Node* FocusNavigationScope::nextInScope(const Node* node) const
&gt; +Node* FocusNavigationScope::nextInScope(const Node&amp; node) const
&gt;  {
&gt;      if (Node* next = firstChildInScope(node))
&gt;          return next;
&gt; -    if (Node* next = node-&gt;nextSibling())
&gt; -        return next;
&gt; -    const Node* current = node;
&gt; -    while (current &amp;&amp; !current-&gt;nextSibling())
&gt; -        current = parentInScope(current);
&gt; -    return current ? current-&gt;nextSibling() : nullptr;
&gt; +    return NodeTraversal::nextSkippingChildren(node);
&gt;  }

This changes behavior of these functions for children of shadow hosts. Why is that ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168010</commentid>
    <comment_count>4</comment_count>
      <attachid>272163</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-24 20:08:53 -0800</bug_when>
    <thetext>Comment on attachment 272163
Removed a tab in change log

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

&gt;&gt; Source/WebCore/page/FocusController.cpp:118
&gt;&gt;  }
&gt; 
&gt; This changes behavior of these functions for children of shadow hosts. Why is that ok?

That&apos;s a good point :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168506</commentid>
    <comment_count>5</comment_count>
      <attachid>272163</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-26 08:22:21 -0800</bug_when>
    <thetext>Comment on attachment 272163
Removed a tab in change log

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

&gt; Source/WebCore/page/FocusController.cpp:85
&gt; +    Node* lastLeafNode() const
&gt; +    {
&gt; +        if (!m_lastLeafCache)
&gt; +            findLastLeafNode();
&gt; +        return m_lastLeafCache;
&gt; +    }

Does this function body really need to be in the class definition? Makes it harder to read it over. Lets just define this inline function right afterward.

&gt;&gt;&gt; Source/WebCore/page/FocusController.cpp:118
&gt;&gt;&gt;  }
&gt;&gt; 
&gt;&gt; This changes behavior of these functions for children of shadow hosts. Why is that ok?
&gt; 
&gt; That&apos;s a good point :(

So marking review- because of this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272162</attachid>
            <date>2016-02-24 17:10:36 -0800</date>
            <delta_ts>2016-02-24 17:11:18 -0800</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-154660-20160224171019.patch</filename>
            <type>text/plain</type>
            <size>10004</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzA1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE2LTAyLTI0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFNpbXBsaWZ5IGFuZCBtb2Rlcm5p
emUgbWVtYmVyIGZ1bmN0aW9ucyBvZiBGb2N1c05hdmlnYXRpb25TY29wZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NjYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIE5vZGVUcmF2ZXJzYWwgaW4g
Rm9jdXNOYXZpZ2F0aW9uU2NvcGUgYW5kIHNpbXBsaWZ5IG90aGVyIGZ1bmN0aW9ucy4KKworICAg
ICAgICBSZW1vdmVkIHBhcmVudEluU2NvcGUgc2luY2UgdGhlIHBhcmVudCBub2RlIGluIGVpdGhl
ciBkb2N1bWVudCBvciBzaGFkb3cgdHJlZSBzY29wZSBpcyBqdXN0IGEgcmVndWxhciBwYXJlbnQu
CisKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb2N1c05hdmlnYXRpb25TY29wZTo6bGFzdExlYWZOb2RlKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c05hdmlnYXRpb25TY29wZTo6Zmlyc3RDaGlsZEluU2NvcGUpOiBUYWtlcyBO
b2RlJiBpbnN0ZWFkIG9mIE5vZGUqLgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNOYXZpZ2F0aW9u
U2NvcGU6Omxhc3RDaGlsZEluU2NvcGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3Vz
TmF2aWdhdGlvblNjb3BlOjpuZXh0SW5TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c05h
dmlnYXRpb25TY29wZTo6cHJldmlvdXNJblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3Vz
TmF2aWdhdGlvblNjb3BlOjpmaW5kTGFzdExlYWZOb2RlKTogRXh0cmFjdGVkIGZyb20gcHJldmlv
dXNGb2N1c2FibGVFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNOYXZpZ2F0aW9uU2Nv
cGU6OnNjb3BlT2YpOiBSZW1vdmVkIHRoZSBjb2RlIHRvIG1hbnVhbGx5IHdhbGsgdXAgYW5jZXN0
b3JzIHNpbmNlIHRoZXkgYWxsIHNoYXJlCisJdGhlIHNhbWUgdHJlZSBzY29wZSAoc2hhZG93IHJv
b3QncyBwYXJlbnQgaXMgbnVsbHB0cikuCisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xs
ZXI6OmZpbmRFbGVtZW50V2l0aEV4YWN0VGFiSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6bmV4
dEVsZW1lbnRXaXRoR3JlYXRlclRhYkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OnByZXZpb3Vz
RWxlbWVudFdpdGhMb3dlclRhYkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJv
bGxlcjo6bmV4dEZvY3VzYWJsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250
cm9sbGVyOjpwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnQpOgorCiAyMDE2LTAyLTI0ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb2Rlcm4gSURCOiBTb21lIHcz
YyBvYmplY3RzdG9yZSB0ZXN0cyBjcmFzaCB1bmRlciBHdWFyZE1hbGxvYy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE5NzA1NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzUsMjQgKzc1LDMxIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRm9jdXNOYXZpZ2F0aW9uU2NvcGUg
c2NvcGVPd25lZEJ5U2hhZG93SG9zdChFbGVtZW50Jik7CiAgICAgc3RhdGljIEZvY3VzTmF2aWdh
dGlvblNjb3BlIHNjb3BlT3duZWRCeUlGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmKTsKIAot
ICAgIE5vZGUqIG5leHRJblNjb3BlKGNvbnN0IE5vZGUqKSBjb25zdDsKLSAgICBOb2RlKiBwcmV2
aW91c0luU2NvcGUoY29uc3QgTm9kZSopIGNvbnN0OwotICAgIE5vZGUqIGxhc3RDaGlsZEluU2Nv
cGUoY29uc3QgTm9kZSopIGNvbnN0OworICAgIE5vZGUqIG5leHRJblNjb3BlKGNvbnN0IE5vZGUm
KSBjb25zdDsKKyAgICBOb2RlKiBwcmV2aW91c0luU2NvcGUoY29uc3QgTm9kZSYpIGNvbnN0Owor
ICAgIE5vZGUqIGxhc3RMZWFmTm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fbGFz
dExlYWZDYWNoZSkKKyAgICAgICAgICAgIGZpbmRMYXN0TGVhZk5vZGUoKTsKKyAgICAgICAgcmV0
dXJuIG1fbGFzdExlYWZDYWNoZTsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgTm9kZSogZmlyc3RD
aGlsZEluU2NvcGUoY29uc3QgTm9kZSopIGNvbnN0OworICAgIE5vZGUqIGZpcnN0Q2hpbGRJblNj
b3BlKGNvbnN0IE5vZGUmKSBjb25zdDsKKyAgICBOb2RlKiBsYXN0Q2hpbGRJblNjb3BlKGNvbnN0
IE5vZGUqKSBjb25zdDsKKyAgICB2b2lkIGZpbmRMYXN0TGVhZk5vZGUoKSBjb25zdDsKIAogICAg
IGV4cGxpY2l0IEZvY3VzTmF2aWdhdGlvblNjb3BlKFRyZWVTY29wZSYpOwogICAgIFRyZWVTY29w
ZSYgbV9yb290VHJlZVNjb3BlOworICAgIG11dGFibGUgTm9kZSogbV9sYXN0TGVhZkNhY2hlIHsg
bnVsbHB0ciB9OwogfTsKIAogLy8gRklYTUU6IEZvY3VzIG5hdmlnYXRpb24gc2hvdWxkIHdvcmsg
d2l0aCBzaGFkb3cgdHJlZXMgdGhhdCBoYXZlIHNsb3RzLgotTm9kZSogRm9jdXNOYXZpZ2F0aW9u
U2NvcGU6OmZpcnN0Q2hpbGRJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CitOb2RlKiBG
b2N1c05hdmlnYXRpb25TY29wZTo6Zmlyc3RDaGlsZEluU2NvcGUoY29uc3QgTm9kZSYgbm9kZSkg
Y29uc3QKIHsKLSAgICBBU1NFUlQobm9kZSk7Ci0gICAgaWYgKG5vZGUtPnNoYWRvd1Jvb3QoKSkK
KyAgICBpZiAobm9kZS5zaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBub2RlLT5maXJzdENoaWxkKCk7CisgICAgcmV0dXJuIG5vZGUuZmlyc3RDaGlsZCgp
OwogfQogCiBOb2RlKiBGb2N1c05hdmlnYXRpb25TY29wZTo6bGFzdENoaWxkSW5TY29wZShjb25z
dCBOb2RlKiBub2RlKSBjb25zdApAQCAtMTAzLDM4ICsxMTAsMjcgQEAgTm9kZSogRm9jdXNOYXZp
Z2F0aW9uU2NvcGU6Omxhc3RDaGlsZEluUwogICAgIHJldHVybiBub2RlLT5sYXN0Q2hpbGQoKTsK
IH0KIAotc3RhdGljIE5vZGUqIHBhcmVudEluU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKLXsKLSAg
ICBpZiAobm9kZS0+aXNTaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgIGlmIChw
YXJlbnQgJiYgcGFyZW50LT5zaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgcmV0dXJuIHBhcmVudDsKLX0KLQotTm9kZSogRm9jdXNOYXZpZ2F0aW9uU2NvcGU6Om5l
eHRJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CitOb2RlKiBGb2N1c05hdmlnYXRpb25T
Y29wZTo6bmV4dEluU2NvcGUoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKIHsKICAgICBpZiAoTm9k
ZSogbmV4dCA9IGZpcnN0Q2hpbGRJblNjb3BlKG5vZGUpKQogICAgICAgICByZXR1cm4gbmV4dDsK
LSAgICBpZiAoTm9kZSogbmV4dCA9IG5vZGUtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIHJldHVy
biBuZXh0OwotICAgIGNvbnN0IE5vZGUqIGN1cnJlbnQgPSBub2RlOwotICAgIHdoaWxlIChjdXJy
ZW50ICYmICFjdXJyZW50LT5uZXh0U2libGluZygpKQotICAgICAgICBjdXJyZW50ID0gcGFyZW50
SW5TY29wZShjdXJyZW50KTsKLSAgICByZXR1cm4gY3VycmVudCA/IGN1cnJlbnQtPm5leHRTaWJs
aW5nKCkgOiBudWxscHRyOworICAgIHJldHVybiBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdD
aGlsZHJlbihub2RlKTsKIH0KIAotTm9kZSogRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OnByZXZpb3Vz
SW5TY29wZShjb25zdCBOb2RlKiBub2RlKSBjb25zdAorTm9kZSogRm9jdXNOYXZpZ2F0aW9uU2Nv
cGU6OnByZXZpb3VzSW5TY29wZShjb25zdCBOb2RlJiBub2RlKSBjb25zdAogewotICAgIGlmIChO
b2RlKiBjdXJyZW50ID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICBpZiAoTm9kZSog
Y3VycmVudCA9IG5vZGUucHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgd2hpbGUgKE5vZGUq
IGNoaWxkID0gbGFzdENoaWxkSW5TY29wZShjdXJyZW50KSkKICAgICAgICAgICAgIGN1cnJlbnQg
PSBjaGlsZDsKICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiAgICAgfQotICAgIHJldHVybiBwYXJl
bnRJblNjb3BlKG5vZGUpOworICAgIHJldHVybiBub2RlLnBhcmVudE5vZGUoKTsKK30KKwordm9p
ZCBGb2N1c05hdmlnYXRpb25TY29wZTo6ZmluZExhc3RMZWFmTm9kZSgpIGNvbnN0Cit7CisgICAg
Zm9yIChOb2RlKiBub2RlID0gJm1fcm9vdFRyZWVTY29wZS5yb290Tm9kZSgpOyBub2RlOyBub2Rl
ID0gbGFzdENoaWxkSW5TY29wZShub2RlKSkKKyAgICAgICAgbV9sYXN0TGVhZkNhY2hlID0gbm9k
ZTsKIH0KIAogRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OkZvY3VzTmF2aWdhdGlvblNjb3BlKFRyZWVT
Y29wZSYgdHJlZVNjb3BlKQpAQCAtMTU5LDEyICsxNTUsNyBAQCBFbGVtZW50KiBGb2N1c05hdmln
YXRpb25TY29wZTo6b3duZXIoKSBjCiAKIEZvY3VzTmF2aWdhdGlvblNjb3BlIEZvY3VzTmF2aWdh
dGlvblNjb3BlOjpzY29wZU9mKE5vZGUmIHN0YXJ0aW5nTm9kZSkKIHsKLSAgICBOb2RlKiByb290
ID0gbnVsbHB0cjsKLSAgICBmb3IgKE5vZGUqIGN1cnJlbnROb2RlID0gJnN0YXJ0aW5nTm9kZTsg
Y3VycmVudE5vZGU7IGN1cnJlbnROb2RlID0gcGFyZW50SW5TY29wZShjdXJyZW50Tm9kZSkpCi0g
ICAgICAgIHJvb3QgPSBjdXJyZW50Tm9kZTsKLSAgICAvLyBUaGUgcmVzdWx0IGlzIG5vdCBhbHdh
eXMgYSBTaGFkb3dSb290IG5vciBhIERvY3VtZW50Tm9kZSBzaW5jZQotICAgIC8vIGEgc3RhcnRp
bmcgbm9kZSBpcyBpbiBhbiBvcnBoYW5lZCB0cmVlIGluIGNvbXBvc2VkIHNoYWRvdyB0cmVlLgot
ICAgIHJldHVybiBGb2N1c05hdmlnYXRpb25TY29wZShyb290LT50cmVlU2NvcGUoKSk7CisgICAg
cmV0dXJuIEZvY3VzTmF2aWdhdGlvblNjb3BlKHN0YXJ0aW5nTm9kZS50cmVlU2NvcGUoKSk7CiB9
CiAKIEZvY3VzTmF2aWdhdGlvblNjb3BlIEZvY3VzTmF2aWdhdGlvblNjb3BlOjpzY29wZU93bmVk
QnlTaGFkb3dIb3N0KEVsZW1lbnQmIGVsZW1lbnQpCkBAIC00NzUsNyArNDY2LDcgQEAgRWxlbWVu
dCogRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlRQogRWxlbWVudCogRm9jdXNDb250cm9s
bGVyOjpmaW5kRWxlbWVudFdpdGhFeGFjdFRhYkluZGV4KGNvbnN0IEZvY3VzTmF2aWdhdGlvblNj
b3BlJiBzY29wZSwgTm9kZSogc3RhcnQsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCogZXZl
bnQsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICAvLyBTZWFyY2ggaXMgaW5jbHVz
aXZlIG9mIHN0YXJ0Ci0gICAgZm9yIChOb2RlKiBub2RlID0gc3RhcnQ7IG5vZGU7IG5vZGUgPSBk
aXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkID8gc2NvcGUubmV4dEluU2NvcGUobm9k
ZSkgOiBzY29wZS5wcmV2aW91c0luU2NvcGUobm9kZSkpIHsKKyAgICBmb3IgKE5vZGUqIG5vZGUg
PSBzdGFydDsgbm9kZTsgbm9kZSA9IGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQg
PyBzY29wZS5uZXh0SW5TY29wZSgqbm9kZSkgOiBzY29wZS5wcmV2aW91c0luU2NvcGUoKm5vZGUp
KSB7CiAgICAgICAgIGlmICghaXM8RWxlbWVudD4oKm5vZGUpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7
CkBAIC00OTAsNyArNDgxLDcgQEAgc3RhdGljIEVsZW1lbnQqIG5leHRFbGVtZW50V2l0aEdyZWF0
ZXJUYQogICAgIC8vIFNlYXJjaCBpcyBpbmNsdXNpdmUgb2Ygc3RhcnQKICAgICBpbnQgd2lubmlu
Z1RhYkluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaG9ydD46Om1heCgpICsgMTsKICAgICBF
bGVtZW50KiB3aW5uZXIgPSBudWxscHRyOwotICAgIGZvciAoTm9kZSogbm9kZSA9ICZzY29wZS5y
b290Tm9kZSgpOyBub2RlOyBub2RlID0gc2NvcGUubmV4dEluU2NvcGUobm9kZSkpIHsKKyAgICBm
b3IgKE5vZGUqIG5vZGUgPSAmc2NvcGUucm9vdE5vZGUoKTsgbm9kZTsgbm9kZSA9IHNjb3BlLm5l
eHRJblNjb3BlKCpub2RlKSkgewogICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpub2RlKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8
RWxlbWVudD4oKm5vZGUpOwpAQCAtNTA4LDcgKzQ5OSw3IEBAIHN0YXRpYyBFbGVtZW50KiBwcmV2
aW91c0VsZW1lbnRXaXRoTG93ZXIKICAgICAvLyBTZWFyY2ggaXMgaW5jbHVzaXZlIG9mIHN0YXJ0
CiAgICAgaW50IHdpbm5pbmdUYWJJbmRleCA9IDA7CiAgICAgRWxlbWVudCogd2lubmVyID0gbnVs
bHB0cjsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBzdGFydDsgbm9kZTsgbm9kZSA9IHNjb3BlLnBy
ZXZpb3VzSW5TY29wZShub2RlKSkgeworICAgIGZvciAoTm9kZSogbm9kZSA9IHN0YXJ0OyBub2Rl
OyBub2RlID0gc2NvcGUucHJldmlvdXNJblNjb3BlKCpub2RlKSkgewogICAgICAgICBpZiAoIWlz
PEVsZW1lbnQ+KCpub2RlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBFbGVtZW50
JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwpAQCAtNTM5LDcgKzUzMCw3IEBA
IEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZUUKICAgICAgICAgaW50IHRh
YkluZGV4ID0gYWRqdXN0ZWRUYWJJbmRleCgqc3RhcnQsICpldmVudCk7CiAgICAgICAgIC8vIElm
IGEgbm9kZSBpcyBleGNsdWRlZCBmcm9tIHRoZSBub3JtYWwgdGFiYmluZyBjeWNsZSwgdGhlIG5l
eHQgZm9jdXNhYmxlIG5vZGUgaXMgZGV0ZXJtaW5lZCBieSB0cmVlIG9yZGVyCiAgICAgICAgIGlm
ICh0YWJJbmRleCA8IDApIHsKLSAgICAgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHNjb3BlLm5l
eHRJblNjb3BlKHN0YXJ0KTsgbm9kZTsgbm9kZSA9IHNjb3BlLm5leHRJblNjb3BlKG5vZGUpKSB7
CisgICAgICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBzY29wZS5uZXh0SW5TY29wZSgqc3RhcnQp
OyBub2RlOyBub2RlID0gc2NvcGUubmV4dEluU2NvcGUoKm5vZGUpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigq
bm9kZSk7CkBAIC01NDksNyArNTQwLDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpuZXh0
Rm9jdXNhYmxlRQogICAgICAgICB9CiAKICAgICAgICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgYSBu
b2RlIHdpdGggdGhlIHNhbWUgdGFiaW5kZXggYXMgc3RhcnQgdGhhdCBjb21lcyBhZnRlciBzdGFy
dCBpbiB0aGUgc2NvcGUuCi0gICAgICAgIGlmIChFbGVtZW50KiB3aW5uZXIgPSBmaW5kRWxlbWVu
dFdpdGhFeGFjdFRhYkluZGV4KHNjb3BlLCBzY29wZS5uZXh0SW5TY29wZShzdGFydCksIHRhYklu
ZGV4LCBldmVudCwgRm9jdXNEaXJlY3Rpb25Gb3J3YXJkKSkKKyAgICAgICAgaWYgKEVsZW1lbnQq
IHdpbm5lciA9IGZpbmRFbGVtZW50V2l0aEV4YWN0VGFiSW5kZXgoc2NvcGUsIHNjb3BlLm5leHRJ
blNjb3BlKCpzdGFydCksIHRhYkluZGV4LCBldmVudCwgRm9jdXNEaXJlY3Rpb25Gb3J3YXJkKSkK
ICAgICAgICAgICAgIHJldHVybiB3aW5uZXI7CiAKICAgICAgICAgaWYgKCF0YWJJbmRleCkKQEAg
LTU3MCwyNiArNTYxLDIxIEBAIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6bmV4dEZvY3VzYWJs
ZUUKIAogRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnQo
Y29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRF
dmVudCogZXZlbnQpCiB7Ci0gICAgTm9kZSogbGFzdCA9IG51bGxwdHI7Ci0gICAgZm9yIChOb2Rl
KiBub2RlID0gJnNjb3BlLnJvb3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBzY29wZS5sYXN0Q2hpbGRJ
blNjb3BlKG5vZGUpKQotICAgICAgICBsYXN0ID0gbm9kZTsKLSAgICBBU1NFUlQobGFzdCk7Ci0K
ICAgICAvLyBGaXJzdCB0cnkgdG8gZmluZCB0aGUgbGFzdCBub2RlIGluIHRoZSBzY29wZSB0aGF0
IGNvbWVzIGJlZm9yZSBzdGFydCBhbmQgaGFzIHRoZSBzYW1lIHRhYmluZGV4IGFzIHN0YXJ0Lgog
ICAgIC8vIElmIHN0YXJ0IGlzIG51bGwsIGZpbmQgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgc2NvcGUg
d2l0aCBhIHRhYmluZGV4IG9mIDAuCiAgICAgTm9kZSogc3RhcnRpbmdOb2RlOwogICAgIGludCBz
dGFydGluZ1RhYkluZGV4OwogICAgIGlmIChzdGFydCkgewotICAgICAgICBzdGFydGluZ05vZGUg
PSBzY29wZS5wcmV2aW91c0luU2NvcGUoc3RhcnQpOworICAgICAgICBzdGFydGluZ05vZGUgPSBz
Y29wZS5wcmV2aW91c0luU2NvcGUoKnN0YXJ0KTsKICAgICAgICAgc3RhcnRpbmdUYWJJbmRleCA9
IGFkanVzdGVkVGFiSW5kZXgoKnN0YXJ0LCAqZXZlbnQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IHN0YXJ0aW5nTm9kZSA9IGxhc3Q7CisgICAgICAgIHN0YXJ0aW5nTm9kZSA9IHNjb3BlLmxhc3RM
ZWFmTm9kZSgpOwogICAgICAgICBzdGFydGluZ1RhYkluZGV4ID0gMDsKICAgICB9CiAKICAgICAv
LyBIb3dldmVyLCBpZiBhIG5vZGUgaXMgZXhjbHVkZWQgZnJvbSB0aGUgbm9ybWFsIHRhYmJpbmcg
Y3ljbGUsIHRoZSBwcmV2aW91cyBmb2N1c2FibGUgbm9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRyZWUg
b3JkZXIKICAgICBpZiAoc3RhcnRpbmdUYWJJbmRleCA8IDApIHsKLSAgICAgICAgZm9yIChOb2Rl
KiBub2RlID0gc3RhcnRpbmdOb2RlOyBub2RlOyBub2RlID0gc2NvcGUucHJldmlvdXNJblNjb3Bl
KG5vZGUpKSB7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHN0YXJ0aW5nTm9kZTsgbm9kZTsg
bm9kZSA9IHNjb3BlLnByZXZpb3VzSW5TY29wZSgqbm9kZSkpIHsKICAgICAgICAgICAgIGlmICgh
aXM8RWxlbWVudD4oKm5vZGUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKQEAgLTYwNSw3
ICs1OTEsNyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhCiAgICAg
Ly8gMSkgaGFzIHRoZSBoaWdoZXN0IG5vbi16ZXJvIHRhYmluZGV4ICh0aGF0IGlzIGxlc3MgdGhh
biBzdGFydCdzIHRhYmluZGV4KSwgYW5kCiAgICAgLy8gMikgY29tZXMgbGFzdCBpbiB0aGUgc2Nv
cGUsIGlmIHRoZXJlJ3MgYSB0aWUuCiAgICAgc3RhcnRpbmdUYWJJbmRleCA9IChzdGFydCAmJiBz
dGFydGluZ1RhYkluZGV4KSA/IHN0YXJ0aW5nVGFiSW5kZXggOiBzdGQ6Om51bWVyaWNfbGltaXRz
PHNob3J0Pjo6bWF4KCk7Ci0gICAgcmV0dXJuIHByZXZpb3VzRWxlbWVudFdpdGhMb3dlclRhYklu
ZGV4KHNjb3BlLCBsYXN0LCBzdGFydGluZ1RhYkluZGV4LCAqZXZlbnQpOworICAgIHJldHVybiBw
cmV2aW91c0VsZW1lbnRXaXRoTG93ZXJUYWJJbmRleChzY29wZSwgc2NvcGUubGFzdExlYWZOb2Rl
KCksIHN0YXJ0aW5nVGFiSW5kZXgsICpldmVudCk7CiB9CiAKIHN0YXRpYyBib29sIHJlbGlucXVp
c2hlc0VkaXRpbmdGb2N1cyhOb2RlICpub2RlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272163</attachid>
            <date>2016-02-24 17:11:21 -0800</date>
            <delta_ts>2016-02-26 08:22:21 -0800</delta_ts>
            <desc>Removed a tab in change log</desc>
            <filename>bug-154660-20160224171104.patch</filename>
            <type>text/plain</type>
            <size>10011</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzA1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE2LTAyLTI0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFNpbXBsaWZ5IGFuZCBtb2Rlcm5p
emUgbWVtYmVyIGZ1bmN0aW9ucyBvZiBGb2N1c05hdmlnYXRpb25TY29wZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NjYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIE5vZGVUcmF2ZXJzYWwgaW4g
Rm9jdXNOYXZpZ2F0aW9uU2NvcGUgYW5kIHNpbXBsaWZ5IG90aGVyIGZ1bmN0aW9ucy4KKworICAg
ICAgICBSZW1vdmVkIHBhcmVudEluU2NvcGUgc2luY2UgdGhlIHBhcmVudCBub2RlIGluIGVpdGhl
ciBkb2N1bWVudCBvciBzaGFkb3cgdHJlZSBzY29wZSBpcyBqdXN0IGEgcmVndWxhciBwYXJlbnQu
CisKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb2N1c05hdmlnYXRpb25TY29wZTo6bGFzdExlYWZOb2RlKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c05hdmlnYXRpb25TY29wZTo6Zmlyc3RDaGlsZEluU2NvcGUpOiBUYWtlcyBO
b2RlJiBpbnN0ZWFkIG9mIE5vZGUqLgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNOYXZpZ2F0aW9u
U2NvcGU6Omxhc3RDaGlsZEluU2NvcGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3Vz
TmF2aWdhdGlvblNjb3BlOjpuZXh0SW5TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c05h
dmlnYXRpb25TY29wZTo6cHJldmlvdXNJblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3Vz
TmF2aWdhdGlvblNjb3BlOjpmaW5kTGFzdExlYWZOb2RlKTogRXh0cmFjdGVkIGZyb20gcHJldmlv
dXNGb2N1c2FibGVFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNOYXZpZ2F0aW9uU2Nv
cGU6OnNjb3BlT2YpOiBSZW1vdmVkIHRoZSBjb2RlIHRvIG1hbnVhbGx5IHdhbGsgdXAgYW5jZXN0
b3JzIHNpbmNlIHRoZXkgYWxsIHNoYXJlCisgICAgICAgIHRoZSBzYW1lIHRyZWUgc2NvcGUgKHNo
YWRvdyByb290J3MgcGFyZW50IGlzIG51bGxwdHIpLgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXND
b250cm9sbGVyOjpmaW5kRWxlbWVudFdpdGhFeGFjdFRhYkluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6Om5leHRFbGVtZW50V2l0aEdyZWF0ZXJUYWJJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpw
cmV2aW91c0VsZW1lbnRXaXRoTG93ZXJUYWJJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1
c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZv
Y3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2FibGVFbGVtZW50KToKKwogMjAxNi0wMi0yNCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjog
U29tZSB3M2Mgb2JqZWN0c3RvcmUgdGVzdHMgY3Jhc2ggdW5kZXIgR3VhcmRNYWxsb2MuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxOTcwNTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc1LDI0ICs3NSwzMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEZvY3VzTmF2aWdhdGlv
blNjb3BlIHNjb3BlT3duZWRCeVNoYWRvd0hvc3QoRWxlbWVudCYpOwogICAgIHN0YXRpYyBGb2N1
c05hdmlnYXRpb25TY29wZSBzY29wZU93bmVkQnlJRnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50
Jik7CiAKLSAgICBOb2RlKiBuZXh0SW5TY29wZShjb25zdCBOb2RlKikgY29uc3Q7Ci0gICAgTm9k
ZSogcHJldmlvdXNJblNjb3BlKGNvbnN0IE5vZGUqKSBjb25zdDsKLSAgICBOb2RlKiBsYXN0Q2hp
bGRJblNjb3BlKGNvbnN0IE5vZGUqKSBjb25zdDsKKyAgICBOb2RlKiBuZXh0SW5TY29wZShjb25z
dCBOb2RlJikgY29uc3Q7CisgICAgTm9kZSogcHJldmlvdXNJblNjb3BlKGNvbnN0IE5vZGUmKSBj
b25zdDsKKyAgICBOb2RlKiBsYXN0TGVhZk5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KCFtX2xhc3RMZWFmQ2FjaGUpCisgICAgICAgICAgICBmaW5kTGFzdExlYWZOb2RlKCk7CisgICAg
ICAgIHJldHVybiBtX2xhc3RMZWFmQ2FjaGU7CisgICAgfQogCiBwcml2YXRlOgotICAgIE5vZGUq
IGZpcnN0Q2hpbGRJblNjb3BlKGNvbnN0IE5vZGUqKSBjb25zdDsKKyAgICBOb2RlKiBmaXJzdENo
aWxkSW5TY29wZShjb25zdCBOb2RlJikgY29uc3Q7CisgICAgTm9kZSogbGFzdENoaWxkSW5TY29w
ZShjb25zdCBOb2RlKikgY29uc3Q7CisgICAgdm9pZCBmaW5kTGFzdExlYWZOb2RlKCkgY29uc3Q7
CiAKICAgICBleHBsaWNpdCBGb2N1c05hdmlnYXRpb25TY29wZShUcmVlU2NvcGUmKTsKICAgICBU
cmVlU2NvcGUmIG1fcm9vdFRyZWVTY29wZTsKKyAgICBtdXRhYmxlIE5vZGUqIG1fbGFzdExlYWZD
YWNoZSB7IG51bGxwdHIgfTsKIH07CiAKIC8vIEZJWE1FOiBGb2N1cyBuYXZpZ2F0aW9uIHNob3Vs
ZCB3b3JrIHdpdGggc2hhZG93IHRyZWVzIHRoYXQgaGF2ZSBzbG90cy4KLU5vZGUqIEZvY3VzTmF2
aWdhdGlvblNjb3BlOjpmaXJzdENoaWxkSW5TY29wZShjb25zdCBOb2RlKiBub2RlKSBjb25zdAor
Tm9kZSogRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OmZpcnN0Q2hpbGRJblNjb3BlKGNvbnN0IE5vZGUm
IG5vZGUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG5vZGUpOwotICAgIGlmIChub2RlLT5zaGFkb3dS
b290KCkpCisgICAgaWYgKG5vZGUuc2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gbm9kZS0+Zmlyc3RDaGlsZCgpOworICAgIHJldHVybiBub2RlLmZpcnN0
Q2hpbGQoKTsKIH0KIAogTm9kZSogRm9jdXNOYXZpZ2F0aW9uU2NvcGU6Omxhc3RDaGlsZEluU2Nv
cGUoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKQEAgLTEwMywzOCArMTEwLDI3IEBAIE5vZGUqIEZv
Y3VzTmF2aWdhdGlvblNjb3BlOjpsYXN0Q2hpbGRJblMKICAgICByZXR1cm4gbm9kZS0+bGFzdENo
aWxkKCk7CiB9CiAKLXN0YXRpYyBOb2RlKiBwYXJlbnRJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUp
Ci17Ci0gICAgaWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAg
ICBpZiAocGFyZW50ICYmIHBhcmVudC0+c2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIHJldHVybiBwYXJlbnQ7Ci19Ci0KLU5vZGUqIEZvY3VzTmF2aWdhdGlvblNj
b3BlOjpuZXh0SW5TY29wZShjb25zdCBOb2RlKiBub2RlKSBjb25zdAorTm9kZSogRm9jdXNOYXZp
Z2F0aW9uU2NvcGU6Om5leHRJblNjb3BlKGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0CiB7CiAgICAg
aWYgKE5vZGUqIG5leHQgPSBmaXJzdENoaWxkSW5TY29wZShub2RlKSkKICAgICAgICAgcmV0dXJu
IG5leHQ7Ci0gICAgaWYgKE5vZGUqIG5leHQgPSBub2RlLT5uZXh0U2libGluZygpKQotICAgICAg
ICByZXR1cm4gbmV4dDsKLSAgICBjb25zdCBOb2RlKiBjdXJyZW50ID0gbm9kZTsKLSAgICB3aGls
ZSAoY3VycmVudCAmJiAhY3VycmVudC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY3VycmVudCA9
IHBhcmVudEluU2NvcGUoY3VycmVudCk7Ci0gICAgcmV0dXJuIGN1cnJlbnQgPyBjdXJyZW50LT5u
ZXh0U2libGluZygpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gTm9kZVRyYXZlcnNhbDo6bmV4dFNr
aXBwaW5nQ2hpbGRyZW4obm9kZSk7CiB9CiAKLU5vZGUqIEZvY3VzTmF2aWdhdGlvblNjb3BlOjpw
cmV2aW91c0luU2NvcGUoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKK05vZGUqIEZvY3VzTmF2aWdh
dGlvblNjb3BlOjpwcmV2aW91c0luU2NvcGUoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKIHsKLSAg
ICBpZiAoTm9kZSogY3VycmVudCA9IG5vZGUtPnByZXZpb3VzU2libGluZygpKSB7CisgICAgaWYg
KE5vZGUqIGN1cnJlbnQgPSBub2RlLnByZXZpb3VzU2libGluZygpKSB7CiAgICAgICAgIHdoaWxl
IChOb2RlKiBjaGlsZCA9IGxhc3RDaGlsZEluU2NvcGUoY3VycmVudCkpCiAgICAgICAgICAgICBj
dXJyZW50ID0gY2hpbGQ7CiAgICAgICAgIHJldHVybiBjdXJyZW50OwogICAgIH0KLSAgICByZXR1
cm4gcGFyZW50SW5TY29wZShub2RlKTsKKyAgICByZXR1cm4gbm9kZS5wYXJlbnROb2RlKCk7Cit9
CisKK3ZvaWQgRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OmZpbmRMYXN0TGVhZk5vZGUoKSBjb25zdAor
eworICAgIGZvciAoTm9kZSogbm9kZSA9ICZtX3Jvb3RUcmVlU2NvcGUucm9vdE5vZGUoKTsgbm9k
ZTsgbm9kZSA9IGxhc3RDaGlsZEluU2NvcGUobm9kZSkpCisgICAgICAgIG1fbGFzdExlYWZDYWNo
ZSA9IG5vZGU7CiB9CiAKIEZvY3VzTmF2aWdhdGlvblNjb3BlOjpGb2N1c05hdmlnYXRpb25TY29w
ZShUcmVlU2NvcGUmIHRyZWVTY29wZSkKQEAgLTE1OSwxMiArMTU1LDcgQEAgRWxlbWVudCogRm9j
dXNOYXZpZ2F0aW9uU2NvcGU6Om93bmVyKCkgYwogCiBGb2N1c05hdmlnYXRpb25TY29wZSBGb2N1
c05hdmlnYXRpb25TY29wZTo6c2NvcGVPZihOb2RlJiBzdGFydGluZ05vZGUpCiB7Ci0gICAgTm9k
ZSogcm9vdCA9IG51bGxwdHI7Ci0gICAgZm9yIChOb2RlKiBjdXJyZW50Tm9kZSA9ICZzdGFydGlu
Z05vZGU7IGN1cnJlbnROb2RlOyBjdXJyZW50Tm9kZSA9IHBhcmVudEluU2NvcGUoY3VycmVudE5v
ZGUpKQotICAgICAgICByb290ID0gY3VycmVudE5vZGU7Ci0gICAgLy8gVGhlIHJlc3VsdCBpcyBu
b3QgYWx3YXlzIGEgU2hhZG93Um9vdCBub3IgYSBEb2N1bWVudE5vZGUgc2luY2UKLSAgICAvLyBh
IHN0YXJ0aW5nIG5vZGUgaXMgaW4gYW4gb3JwaGFuZWQgdHJlZSBpbiBjb21wb3NlZCBzaGFkb3cg
dHJlZS4KLSAgICByZXR1cm4gRm9jdXNOYXZpZ2F0aW9uU2NvcGUocm9vdC0+dHJlZVNjb3BlKCkp
OworICAgIHJldHVybiBGb2N1c05hdmlnYXRpb25TY29wZShzdGFydGluZ05vZGUudHJlZVNjb3Bl
KCkpOwogfQogCiBGb2N1c05hdmlnYXRpb25TY29wZSBGb2N1c05hdmlnYXRpb25TY29wZTo6c2Nv
cGVPd25lZEJ5U2hhZG93SG9zdChFbGVtZW50JiBlbGVtZW50KQpAQCAtNDc1LDcgKzQ2Niw3IEBA
IEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZUUKIEVsZW1lbnQqIEZvY3Vz
Q29udHJvbGxlcjo6ZmluZEVsZW1lbnRXaXRoRXhhY3RUYWJJbmRleChjb25zdCBGb2N1c05hdmln
YXRpb25TY29wZSYgc2NvcGUsIE5vZGUqIHN0YXJ0LCBpbnQgdGFiSW5kZXgsIEtleWJvYXJkRXZl
bnQqIGV2ZW50LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgLy8gU2VhcmNoIGlz
IGluY2x1c2l2ZSBvZiBzdGFydAotICAgIGZvciAoTm9kZSogbm9kZSA9IHN0YXJ0OyBub2RlOyBu
b2RlID0gZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA/IHNjb3BlLm5leHRJblNj
b3BlKG5vZGUpIDogc2NvcGUucHJldmlvdXNJblNjb3BlKG5vZGUpKSB7CisgICAgZm9yIChOb2Rl
KiBub2RlID0gc3RhcnQ7IG5vZGU7IG5vZGUgPSBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25G
b3J3YXJkID8gc2NvcGUubmV4dEluU2NvcGUoKm5vZGUpIDogc2NvcGUucHJldmlvdXNJblNjb3Bl
KCpub2RlKSkgewogICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpub2RlKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4o
Km5vZGUpOwpAQCAtNDkwLDcgKzQ4MSw3IEBAIHN0YXRpYyBFbGVtZW50KiBuZXh0RWxlbWVudFdp
dGhHcmVhdGVyVGEKICAgICAvLyBTZWFyY2ggaXMgaW5jbHVzaXZlIG9mIHN0YXJ0CiAgICAgaW50
IHdpbm5pbmdUYWJJbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+OjptYXgoKSArIDE7
CiAgICAgRWxlbWVudCogd2lubmVyID0gbnVsbHB0cjsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSAm
c2NvcGUucm9vdE5vZGUoKTsgbm9kZTsgbm9kZSA9IHNjb3BlLm5leHRJblNjb3BlKG5vZGUpKSB7
CisgICAgZm9yIChOb2RlKiBub2RlID0gJnNjb3BlLnJvb3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBz
Y29wZS5uZXh0SW5TY29wZSgqbm9kZSkpIHsKICAgICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9k
ZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRv
d25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKQEAgLTUwOCw3ICs0OTksNyBAQCBzdGF0aWMgRWxlbWVu
dCogcHJldmlvdXNFbGVtZW50V2l0aExvd2VyCiAgICAgLy8gU2VhcmNoIGlzIGluY2x1c2l2ZSBv
ZiBzdGFydAogICAgIGludCB3aW5uaW5nVGFiSW5kZXggPSAwOwogICAgIEVsZW1lbnQqIHdpbm5l
ciA9IG51bGxwdHI7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gc3RhcnQ7IG5vZGU7IG5vZGUgPSBz
Y29wZS5wcmV2aW91c0luU2NvcGUobm9kZSkpIHsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBzdGFy
dDsgbm9kZTsgbm9kZSA9IHNjb3BlLnByZXZpb3VzSW5TY29wZSgqbm9kZSkpIHsKICAgICAgICAg
aWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKQEAgLTUzOSw3ICs1
MzAsNyBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVFCiAgICAgICAg
IGludCB0YWJJbmRleCA9IGFkanVzdGVkVGFiSW5kZXgoKnN0YXJ0LCAqZXZlbnQpOwogICAgICAg
ICAvLyBJZiBhIG5vZGUgaXMgZXhjbHVkZWQgZnJvbSB0aGUgbm9ybWFsIHRhYmJpbmcgY3ljbGUs
IHRoZSBuZXh0IGZvY3VzYWJsZSBub2RlIGlzIGRldGVybWluZWQgYnkgdHJlZSBvcmRlcgogICAg
ICAgICBpZiAodGFiSW5kZXggPCAwKSB7Ci0gICAgICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBz
Y29wZS5uZXh0SW5TY29wZShzdGFydCk7IG5vZGU7IG5vZGUgPSBzY29wZS5uZXh0SW5TY29wZShu
b2RlKSkgeworICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlID0gc2NvcGUubmV4dEluU2NvcGUo
KnN0YXJ0KTsgbm9kZTsgbm9kZSA9IHNjb3BlLm5leHRJblNjb3BlKCpub2RlKSkgewogICAgICAg
ICAgICAgICAgIGlmICghaXM8RWxlbWVudD4oKm5vZGUpKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxl
bWVudD4oKm5vZGUpOwpAQCAtNTQ5LDcgKzU0MCw3IEBAIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxl
cjo6bmV4dEZvY3VzYWJsZUUKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZpcnN0IHRyeSB0byBm
aW5kIGEgbm9kZSB3aXRoIHRoZSBzYW1lIHRhYmluZGV4IGFzIHN0YXJ0IHRoYXQgY29tZXMgYWZ0
ZXIgc3RhcnQgaW4gdGhlIHNjb3BlLgotICAgICAgICBpZiAoRWxlbWVudCogd2lubmVyID0gZmlu
ZEVsZW1lbnRXaXRoRXhhY3RUYWJJbmRleChzY29wZSwgc2NvcGUubmV4dEluU2NvcGUoc3RhcnQp
LCB0YWJJbmRleCwgZXZlbnQsIEZvY3VzRGlyZWN0aW9uRm9yd2FyZCkpCisgICAgICAgIGlmIChF
bGVtZW50KiB3aW5uZXIgPSBmaW5kRWxlbWVudFdpdGhFeGFjdFRhYkluZGV4KHNjb3BlLCBzY29w
ZS5uZXh0SW5TY29wZSgqc3RhcnQpLCB0YWJJbmRleCwgZXZlbnQsIEZvY3VzRGlyZWN0aW9uRm9y
d2FyZCkpCiAgICAgICAgICAgICByZXR1cm4gd2lubmVyOwogCiAgICAgICAgIGlmICghdGFiSW5k
ZXgpCkBAIC01NzAsMjYgKzU2MSwyMSBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6Om5leHRG
b2N1c2FibGVFCiAKIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2FibGVF
bGVtZW50KGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3BlJiBzY29wZSwgTm9kZSogc3RhcnQsIEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQogewotICAgIE5vZGUqIGxhc3QgPSBudWxscHRyOwotICAgIGZv
ciAoTm9kZSogbm9kZSA9ICZzY29wZS5yb290Tm9kZSgpOyBub2RlOyBub2RlID0gc2NvcGUubGFz
dENoaWxkSW5TY29wZShub2RlKSkKLSAgICAgICAgbGFzdCA9IG5vZGU7Ci0gICAgQVNTRVJUKGxh
c3QpOwotCiAgICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgc2Nv
cGUgdGhhdCBjb21lcyBiZWZvcmUgc3RhcnQgYW5kIGhhcyB0aGUgc2FtZSB0YWJpbmRleCBhcyBz
dGFydC4KICAgICAvLyBJZiBzdGFydCBpcyBudWxsLCBmaW5kIHRoZSBsYXN0IG5vZGUgaW4gdGhl
IHNjb3BlIHdpdGggYSB0YWJpbmRleCBvZiAwLgogICAgIE5vZGUqIHN0YXJ0aW5nTm9kZTsKICAg
ICBpbnQgc3RhcnRpbmdUYWJJbmRleDsKICAgICBpZiAoc3RhcnQpIHsKLSAgICAgICAgc3RhcnRp
bmdOb2RlID0gc2NvcGUucHJldmlvdXNJblNjb3BlKHN0YXJ0KTsKKyAgICAgICAgc3RhcnRpbmdO
b2RlID0gc2NvcGUucHJldmlvdXNJblNjb3BlKCpzdGFydCk7CiAgICAgICAgIHN0YXJ0aW5nVGFi
SW5kZXggPSBhZGp1c3RlZFRhYkluZGV4KCpzdGFydCwgKmV2ZW50KTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBzdGFydGluZ05vZGUgPSBsYXN0OworICAgICAgICBzdGFydGluZ05vZGUgPSBzY29w
ZS5sYXN0TGVhZk5vZGUoKTsKICAgICAgICAgc3RhcnRpbmdUYWJJbmRleCA9IDA7CiAgICAgfQog
CiAgICAgLy8gSG93ZXZlciwgaWYgYSBub2RlIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIG5vcm1hbCB0
YWJiaW5nIGN5Y2xlLCB0aGUgcHJldmlvdXMgZm9jdXNhYmxlIG5vZGUgaXMgZGV0ZXJtaW5lZCBi
eSB0cmVlIG9yZGVyCiAgICAgaWYgKHN0YXJ0aW5nVGFiSW5kZXggPCAwKSB7Ci0gICAgICAgIGZv
ciAoTm9kZSogbm9kZSA9IHN0YXJ0aW5nTm9kZTsgbm9kZTsgbm9kZSA9IHNjb3BlLnByZXZpb3Vz
SW5TY29wZShub2RlKSkgeworICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBzdGFydGluZ05vZGU7
IG5vZGU7IG5vZGUgPSBzY29wZS5wcmV2aW91c0luU2NvcGUoKm5vZGUpKSB7CiAgICAgICAgICAg
ICBpZiAoIWlzPEVsZW1lbnQ+KCpub2RlKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7CkBA
IC02MDUsNyArNTkxLDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3Vz
YQogICAgIC8vIDEpIGhhcyB0aGUgaGlnaGVzdCBub24temVybyB0YWJpbmRleCAodGhhdCBpcyBs
ZXNzIHRoYW4gc3RhcnQncyB0YWJpbmRleCksIGFuZAogICAgIC8vIDIpIGNvbWVzIGxhc3QgaW4g
dGhlIHNjb3BlLCBpZiB0aGVyZSdzIGEgdGllLgogICAgIHN0YXJ0aW5nVGFiSW5kZXggPSAoc3Rh
cnQgJiYgc3RhcnRpbmdUYWJJbmRleCkgPyBzdGFydGluZ1RhYkluZGV4IDogc3RkOjpudW1lcmlj
X2xpbWl0czxzaG9ydD46Om1heCgpOwotICAgIHJldHVybiBwcmV2aW91c0VsZW1lbnRXaXRoTG93
ZXJUYWJJbmRleChzY29wZSwgbGFzdCwgc3RhcnRpbmdUYWJJbmRleCwgKmV2ZW50KTsKKyAgICBy
ZXR1cm4gcHJldmlvdXNFbGVtZW50V2l0aExvd2VyVGFiSW5kZXgoc2NvcGUsIHNjb3BlLmxhc3RM
ZWFmTm9kZSgpLCBzdGFydGluZ1RhYkluZGV4LCAqZXZlbnQpOwogfQogCiBzdGF0aWMgYm9vbCBy
ZWxpbnF1aXNoZXNFZGl0aW5nRm9jdXMoTm9kZSAqbm9kZSkK
</data>
<flag name="review"
          id="296956"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>