<?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>120391</bug_id>
          
          <creation_ts>2013-08-27 21:30:05 -0700</creation_ts>
          <short_desc>The code to look for an ancestor form element is duplicated in three different places</short_desc>
          <delta_ts>2013-08-28 18:34:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>921824</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-08-27 21:30:05 -0700</bug_when>
    <thetext>HTMLElement.cpp, HTMLImageElement.cpp, and TreeBuilder.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921825</commentid>
    <comment_count>1</comment_count>
      <attachid>209844</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-08-27 21:33:02 -0700</bug_when>
    <thetext>Created attachment 209844
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921831</commentid>
    <comment_count>2</comment_count>
      <attachid>209844</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-27 21:48:26 -0700</bug_when>
    <thetext>Comment on attachment 209844
Cleanup

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

&gt; Source/WebCore/html/HTMLFormElement.cpp:686
&gt; +HTMLFormElement* HTMLFormElement::findClosestFormAncestor(Element* element)

Seems like this could take a const Element* so you don&apos;t need the const_casts.

&gt; Source/WebCore/html/HTMLFormElement.cpp:689
&gt; +    if (!element)
&gt; +        return 0;

A bunch of the callers never pass rull.  Can we yank out this null check and pass an element by reference instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921835</commentid>
    <comment_count>3</comment_count>
      <attachid>209844</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-08-27 21:55:30 -0700</bug_when>
    <thetext>Comment on attachment 209844
Cleanup

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

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:686
&gt;&gt; +HTMLFormElement* HTMLFormElement::findClosestFormAncestor(Element* element)
&gt; 
&gt; Seems like this could take a const Element* so you don&apos;t need the const_casts.

I guess but then it&apos;ll be weird for it return non-const HTMLFormElement*.

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:689
&gt;&gt; +        return 0;
&gt; 
&gt; A bunch of the callers never pass rull.  Can we yank out this null check and pass an element by reference instead?

I can try that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921838</commentid>
    <comment_count>4</comment_count>
      <attachid>209844</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-08-27 22:15:08 -0700</bug_when>
    <thetext>Comment on attachment 209844
Cleanup

Attachment 209844 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/1618172</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921842</commentid>
    <comment_count>5</comment_count>
      <attachid>209844</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-27 22:23:28 -0700</bug_when>
    <thetext>Comment on attachment 209844
Cleanup

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

&gt;&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:686
&gt;&gt;&gt; +HTMLFormElement* HTMLFormElement::findClosestFormAncestor(Element* element)
&gt;&gt; 
&gt;&gt; Seems like this could take a const Element* so you don&apos;t need the const_casts.
&gt; 
&gt; I guess but then it&apos;ll be weird for it return non-const HTMLFormElement*.

I think you should make it take const; I don’t think it’s so strange to return a non-const form element pointer even in that case.

&gt; Source/WebCore/html/HTMLFormElement.cpp:693
&gt; +    while (1) {
&gt; +        element = element-&gt;parentElement();
&gt; +        if (!element)
&gt; +            return 0;

I suggest either writing it like this:

    while ((element = element-&gt;parentElement())

Or as a for loop.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:-141
&gt; -    ASSERT(isMainThread());

We lost this assertion. Should we add it back?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922115</commentid>
    <comment_count>6</comment_count>
      <attachid>209909</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-08-28 11:19:22 -0700</bug_when>
    <thetext>Created attachment 209909
Addressed comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922117</commentid>
    <comment_count>7</comment_count>
      <attachid>209844</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-08-28 11:20:40 -0700</bug_when>
    <thetext>Comment on attachment 209844
Cleanup

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

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:-141
&gt;&gt; -    ASSERT(isMainThread());
&gt; 
&gt; We lost this assertion. Should we add it back?

I think this was there for the threaded parsing work.  I don&apos;t think it we need it since this function is no longer in HTMLTreeBuilder.cpp and HTMLTreeBuilder::HTMLTreeBuilder asserts that we&apos;re in the main thread already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922291</commentid>
    <comment_count>8</comment_count>
      <attachid>209909</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-28 18:34:16 -0700</bug_when>
    <thetext>Comment on attachment 209909
Addressed comments

Clearing flags on attachment: 209909

Committed r154801: &lt;http://trac.webkit.org/changeset/154801&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922292</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-28 18:34:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209844</attachid>
            <date>2013-08-27 21:33:02 -0700</date>
            <delta_ts>2013-08-28 11:20:40 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-120391-20130827213302.patch</filename>
            <type>text/plain</type>
            <size>9310</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDcyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTA4LTI3ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFRoZSBjb2RlIHRvIGxvb2sgZm9y
IGFuIGFuY2VzdG9yIGZvcm0gZWxlbWVudCBpcyBkdXBsaWNhdGVkIGluIHRocmVlIGRpZmZlcmVu
dCBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMDM5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVuZHVwbGljYXRlZCB0aGUgY29kZSBieSBwdXR0aW5nIGEgc2luZ2xlIGltcGxlbWVudGF0aW9u
IGluIEhUTUxGb3JtRWxlbWVudC5jcHAuCisKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAg
ICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZmluZEFzc29jaWF0ZWRGb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnQ6OnZpcnR1YWxGb3JtKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAq
IGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxl
bWVudDo6ZmluZENsb3Nlc3RGb3JtQW5jZXN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1F
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50byk6CisgICAgICAgICogaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxl
bWVudDo6SFRNTE9iamVjdEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVl
QnVpbGRlcik6CisKIDIwMTMtMDgtMjcgIFNhbnRvc2ggTWFodG8gIDxzYW50b3NoLm1hQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIEFkZGluZyAgImV4cGxpY2l0IiBrZXl3b3JkIGluICBmb3JtcyBy
ZWxhdGVkIGNsYXNzZXMgY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNp
b24gMTU0NzE5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkod29ya2luZyBjb3B5
KQpAQCAtNTQ4Niw3ICs1NDg2LDYgQEAgX19aTjdXZWJDb3JlMzFIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aAogX19aTjdXZWJDb3JlMjJIVE1MRm9ybUNvbnRyb2xFbGVtZW50QzJFUktOU18xM1F1
YWxpZmllZE5hbWVFUE5TXzhEb2N1bWVudEVQTlNfMTVIVE1MRm9ybUVsZW1lbnRFCiBfX1pON1dl
YkNvcmUxNkxhYmVsYWJsZUVsZW1lbnRDMkVSS05TXzEzUXVhbGlmaWVkTmFtZUVQTlNfOERvY3Vt
ZW50RQogX19aTjdXZWJDb3JlMjFGb3JtQXNzb2NpYXRlZEVsZW1lbnRDMkV2Ci1fX1pOSzdXZWJD
b3JlMTFIVE1MRWxlbWVudDE2ZmluZEZvcm1BbmNlc3RvckV2CiBfX1pON1dlYkNvcmUyMUZvcm1B
c3NvY2lhdGVkRWxlbWVudDdzZXRGb3JtRVBOU18xNUhUTUxGb3JtRWxlbWVudEUKIF9fWk43V2Vi
Q29yZTlJbnB1dFR5cGUxMGNyZWF0ZVRleHRFUE5TXzE2SFRNTElucHV0RWxlbWVudEUKIF9fWk43
V2ViQ29yZTEzVGV4dElucHV0VHlwZTZjcmVhdGVFUE5TXzE2SFRNTElucHV0RWxlbWVudEUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE1NDcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIEhUTUxGb3JtRWxlbWVu
dCogRm9ybUFzc29jaWF0ZWRFbGVtZW50OjoKICAgICB9CiAKICAgICBpZiAoIWN1cnJlbnRBc3Nv
Y2lhdGVkRm9ybSkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmZpbmRGb3JtQW5jZXN0b3IoKTsK
KyAgICAgICAgcmV0dXJuIEhUTUxGb3JtRWxlbWVudDo6ZmluZENsb3Nlc3RGb3JtQW5jZXN0b3Io
Y29uc3RfY2FzdDxIVE1MRWxlbWVudCo+KGVsZW1lbnQpKTsKIAogICAgIHJldHVybiBjdXJyZW50
QXNzb2NpYXRlZEZvcm07CiB9CkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dAogICAgIGlmICghZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0
ZShmb3JtQXR0cikpIHsKICAgICAgICAgLy8gVGhlIGZvcm0gYXR0cmlidXRlIHJlbW92ZWQuIFdl
IG5lZWQgdG8gcmVzZXQgZm9ybSBvd25lciBoZXJlLgogICAgICAgICBIVE1MRm9ybUVsZW1lbnQq
IG9yaWdpbmFsRm9ybSA9IG1fZm9ybTsKLSAgICAgICAgc2V0Rm9ybShlbGVtZW50LT5maW5kRm9y
bUFuY2VzdG9yKCkpOworICAgICAgICBzZXRGb3JtKEhUTUxGb3JtRWxlbWVudDo6ZmluZENsb3Nl
c3RGb3JtQW5jZXN0b3IoZWxlbWVudCkpOwogICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9
IHRvSFRNTEVsZW1lbnQodGhpcyk7CiAgICAgICAgIGlmIChtX2Zvcm0gJiYgbV9mb3JtICE9IG9y
aWdpbmFsRm9ybSAmJiBtX2Zvcm0tPmluRG9jdW1lbnQoKSkKICAgICAgICAgICAgIGVsZW1lbnQt
PmRvY3VtZW50KCktPmRpZEFzc29jaWF0ZUZvcm1Db250cm9sKGVsZW1lbnQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NDcxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzEsMTggKzc3
MSw5IEBAIFJlbmRlck9iamVjdCogSFRNTEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmUKICAgICByZXR1
cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwogfQogCi1IVE1MRm9y
bUVsZW1lbnQqIEhUTUxFbGVtZW50OjpmaW5kRm9ybUFuY2VzdG9yKCkgY29uc3QKLXsKLSAgICBm
b3IgKENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gcGFyZW50Tm9kZSgpOyBhbmNlc3RvcjsgYW5j
ZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxGb3Jt
RWxlbWVudChhbmNlc3RvcikpCi0gICAgICAgICAgICByZXR1cm4gdG9IVE1MRm9ybUVsZW1lbnQo
YW5jZXN0b3IpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQogSFRNTEZvcm1FbGVtZW50KiBI
VE1MRWxlbWVudDo6dmlydHVhbEZvcm0oKSBjb25zdAogewotICAgIHJldHVybiBmaW5kRm9ybUFu
Y2VzdG9yKCk7CisgICAgcmV0dXJuIEhUTUxGb3JtRWxlbWVudDo6ZmluZENsb3Nlc3RGb3JtQW5j
ZXN0b3IoY29uc3RfY2FzdDxIVE1MRWxlbWVudCo+KHRoaXMpKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBib29sIGVsZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkoY29uc3QgTm9kZSogbm9kZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgJKHJldmlzaW9uIDE1NDcxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODUsOCArODUs
NiBAQCBwdWJsaWM6CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0oKSBjb25zdCB7IHJldHVy
biB2aXJ0dWFsRm9ybSgpOyB9CiAKLSAgICBIVE1MRm9ybUVsZW1lbnQqIGZpbmRGb3JtQW5jZXN0
b3IoKSBjb25zdDsKLQogICAgIGJvb2wgaGFzRGlyZWN0aW9uQXV0bygpIGNvbnN0OwogICAgIFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoYm9vbCYgaXNB
dXRvKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTQ3MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3
IEBAIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEUKICAgICAsIG1fd2Fz
Q2hhbmdlZFNpbmNlTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoZmFsc2UpCiAgICAgLCBtX2hh
c0F1dG9mb2N1c2VkKGZhbHNlKQogewotICAgIHNldEZvcm0oZm9ybSA/IGZvcm0gOiBmaW5kRm9y
bUFuY2VzdG9yKCkpOworICAgIHNldEZvcm0oZm9ybSA/IGZvcm0gOiBIVE1MRm9ybUVsZW1lbnQ6
OmZpbmRDbG9zZXN0Rm9ybUFuY2VzdG9yKHRoaXMpKTsKICAgICBzZXRIYXNDdXN0b21TdHlsZVJl
c29sdmVDYWxsYmFja3MoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcAkocmV2aXNpb24gMTU0NzE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODMsNCArNjgzLDE4IEBAIHZvaWQg
SFRNTEZvcm1FbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHIKICAgICBIVE1MRWxlbWVudDo6Y29w
eU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChzb3VyY2UpOwogfQogCitIVE1MRm9y
bUVsZW1lbnQqIEhUTUxGb3JtRWxlbWVudDo6ZmluZENsb3Nlc3RGb3JtQW5jZXN0b3IoRWxlbWVu
dCogZWxlbWVudCkKK3sKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiAwOworICAg
IHdoaWxlICgxKSB7CisgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7
CisgICAgICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBp
ZiAoaXNIVE1MRm9ybUVsZW1lbnQoZWxlbWVudCkpCisgICAgICAgICAgICByZXR1cm4gdG9IVE1M
Rm9ybUVsZW1lbnQoZWxlbWVudCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiB9IC8vIG5h
bWVzcGFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCShyZXZpc2lv
biAxNTQ3MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRUZXh0
RmllbGRWYWx1ZXMoU3RyaW5nUGFpclZlY3RvciYgZmllbGROYW1lc0FuZFZhbHVlcykgY29uc3Q7
CiAKKyAgICBzdGF0aWMgSFRNTEZvcm1FbGVtZW50KiBmaW5kQ2xvc2VzdEZvcm1BbmNlc3RvcihF
bGVtZW50Kik7CisKIHByaXZhdGU6CiAgICAgSFRNTEZvcm1FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NDcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSwxNSArMjA1LDEwIEBAIHZv
aWQgSFRNTEltYWdlRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXIKIAogTm9kZTo6SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFp
bmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgaWYgKCFtX2Zvcm0pIHsKLSAgICAgICAg
Ly8gbV9mb3JtIGNhbiBiZSBub24tbnVsbCBpZiBpdCB3YXMgc2V0IGluIGNvbnN0cnVjdG9yLgot
ICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUqIGFuY2VzdG9yID0gcGFyZW50Tm9kZSgpOyBhbmNl
c3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBp
ZiAoaXNIVE1MRm9ybUVsZW1lbnQoYW5jZXN0b3IpKSB7Ci0gICAgICAgICAgICAgICAgbV9mb3Jt
ID0gdG9IVE1MRm9ybUVsZW1lbnQoYW5jZXN0b3IpOwotICAgICAgICAgICAgICAgIG1fZm9ybS0+
cmVnaXN0ZXJJbWdFbGVtZW50KHRoaXMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICB9CisgICAgaWYgKCFtX2Zvcm0pIHsgLy8gbV9mb3JtIGNhbiBiZSBu
b24tbnVsbCBpZiBpdCB3YXMgc2V0IGluIGNvbnN0cnVjdG9yLgorICAgICAgICBtX2Zvcm0gPSBI
VE1MRm9ybUVsZW1lbnQ6OmZpbmRDbG9zZXN0Rm9ybUFuY2VzdG9yKHRoaXMpOworICAgICAgICBp
ZiAobV9mb3JtKQorICAgICAgICAgICAgbV9mb3JtLT5yZWdpc3RlckltZ0VsZW1lbnQodGhpcyk7
CiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZSBiZWVuIGluc2VydGVkIGZyb20gYSByZW5kZXJl
ci1sZXNzIGRvY3VtZW50LApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAJKHJldmlzaW9uIDE1NDcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIGlubGluZSBI
VE1MT2JqZWN0RWxlbWVudDo6SFRNTE9iamVjdEVsZW0KICAgICAsIG1fdXNlRmFsbGJhY2tDb250
ZW50KGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG9iamVjdFRhZykpOwotICAgIHNl
dEZvcm0oZm9ybSA/IGZvcm0gOiBmaW5kRm9ybUFuY2VzdG9yKCkpOworICAgIHNldEZvcm0oZm9y
bSA/IGZvcm0gOiBIVE1MRm9ybUVsZW1lbnQ6OmZpbmRDbG9zZXN0Rm9ybUFuY2VzdG9yKHRoaXMp
KTsKIH0KIAogaW5saW5lIEhUTUxPYmplY3RFbGVtZW50Ojp+SFRNTE9iamVjdEVsZW1lbnQoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3Bw
CShyZXZpc2lvbiAxNTQ3MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsMjAgKzEzNiw2IEBAIHN0YXRpYyBi
b29sIGlzRm9ybWF0dGluZ1RhZyhjb25zdCBBdG9taWMKICAgICByZXR1cm4gdGFnTmFtZSA9PSBh
VGFnIHx8IGlzTm9uQW5jaG9yRm9ybWF0dGluZ1RhZyh0YWdOYW1lKTsKIH0KIAotc3RhdGljIEhU
TUxGb3JtRWxlbWVudCogY2xvc2VzdEZvcm1BbmNlc3RvcihFbGVtZW50KiBlbGVtZW50KQotewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgd2hpbGUgKGVsZW1lbnQpIHsKLSAgICAg
ICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50KGVsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIHRv
SFRNTEZvcm1FbGVtZW50KGVsZW1lbnQpOwotICAgICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQg
PSBlbGVtZW50LT5wYXJlbnROb2RlKCk7Ci0gICAgICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQt
PmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBlbGVtZW50
ID0gdG9FbGVtZW50KHBhcmVudCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCiBjbGFzcyBI
VE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIpOwogcHVibGljOgpA
QCAtMzEzLDcgKzI5OSw3IEBAIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxE
b2MKICNlbmRpZgogCiAgICAgICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsK
LSAgICAgICAgbV90cmVlLnNldEZvcm0oY2xvc2VzdEZvcm1BbmNlc3Rvcihjb250ZXh0RWxlbWVu
dCkpOworICAgICAgICBtX3RyZWUuc2V0Rm9ybShjb250ZXh0RWxlbWVudCAmJiBpc0hUTUxGb3Jt
RWxlbWVudChjb250ZXh0RWxlbWVudCkgPyB0b0hUTUxGb3JtRWxlbWVudChjb250ZXh0RWxlbWVu
dCkgOiBIVE1MRm9ybUVsZW1lbnQ6OmZpbmRDbG9zZXN0Rm9ybUFuY2VzdG9yKGNvbnRleHRFbGVt
ZW50KSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209909</attachid>
            <date>2013-08-28 11:19:22 -0700</date>
            <delta_ts>2013-08-28 18:34:16 -0700</delta_ts>
            <desc>Addressed comments</desc>
            <filename>bug-120391-20130828111922.patch</filename>
            <type>text/plain</type>
            <size>9243</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDcyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTA4LTI3ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFRoZSBjb2RlIHRvIGxvb2sgZm9y
IGFuIGFuY2VzdG9yIGZvcm0gZWxlbWVudCBpcyBkdXBsaWNhdGVkIGluIHRocmVlIGRpZmZlcmVu
dCBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMDM5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVuZHVwbGljYXRlZCB0aGUgY29kZSBieSBwdXR0aW5nIGEgc2luZ2xlIGltcGxlbWVudGF0aW9u
IGluIEhUTUxGb3JtRWxlbWVudC5jcHAuCisKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAg
ICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZmluZEFzc29jaWF0ZWRGb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnQ6OnZpcnR1YWxGb3JtKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAq
IGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxl
bWVudDo6ZmluZENsb3Nlc3RGb3JtQW5jZXN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1F
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50byk6CisgICAgICAgICogaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxl
bWVudDo6SFRNTE9iamVjdEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVl
QnVpbGRlcik6CisKIDIwMTMtMDgtMjcgIFNhbnRvc2ggTWFodG8gIDxzYW50b3NoLm1hQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIEFkZGluZyAgImV4cGxpY2l0IiBrZXl3b3JkIGluICBmb3JtcyBy
ZWxhdGVkIGNsYXNzZXMgY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNp
b24gMTU0NzE5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkod29ya2luZyBjb3B5
KQpAQCAtNTQ4Niw3ICs1NDg2LDYgQEAgX19aTjdXZWJDb3JlMzFIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aAogX19aTjdXZWJDb3JlMjJIVE1MRm9ybUNvbnRyb2xFbGVtZW50QzJFUktOU18xM1F1
YWxpZmllZE5hbWVFUE5TXzhEb2N1bWVudEVQTlNfMTVIVE1MRm9ybUVsZW1lbnRFCiBfX1pON1dl
YkNvcmUxNkxhYmVsYWJsZUVsZW1lbnRDMkVSS05TXzEzUXVhbGlmaWVkTmFtZUVQTlNfOERvY3Vt
ZW50RQogX19aTjdXZWJDb3JlMjFGb3JtQXNzb2NpYXRlZEVsZW1lbnRDMkV2Ci1fX1pOSzdXZWJD
b3JlMTFIVE1MRWxlbWVudDE2ZmluZEZvcm1BbmNlc3RvckV2CiBfX1pON1dlYkNvcmUyMUZvcm1B
c3NvY2lhdGVkRWxlbWVudDdzZXRGb3JtRVBOU18xNUhUTUxGb3JtRWxlbWVudEUKIF9fWk43V2Vi
Q29yZTlJbnB1dFR5cGUxMGNyZWF0ZVRleHRFUE5TXzE2SFRNTElucHV0RWxlbWVudEUKIF9fWk43
V2ViQ29yZTEzVGV4dElucHV0VHlwZTZjcmVhdGVFUE5TXzE2SFRNTElucHV0RWxlbWVudEUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE1NDcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIEhUTUxGb3JtRWxlbWVu
dCogRm9ybUFzc29jaWF0ZWRFbGVtZW50OjoKICAgICB9CiAKICAgICBpZiAoIWN1cnJlbnRBc3Nv
Y2lhdGVkRm9ybSkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmZpbmRGb3JtQW5jZXN0b3IoKTsK
KyAgICAgICAgcmV0dXJuIEhUTUxGb3JtRWxlbWVudDo6ZmluZENsb3Nlc3RGb3JtQW5jZXN0b3Io
KmVsZW1lbnQpOwogCiAgICAgcmV0dXJuIGN1cnJlbnRBc3NvY2lhdGVkRm9ybTsKIH0KQEAgLTE3
Miw3ICsxNzIsNyBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0CiAg
ICAgaWYgKCFlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkgewogICAgICAgICAv
LyBUaGUgZm9ybSBhdHRyaWJ1dGUgcmVtb3ZlZC4gV2UgbmVlZCB0byByZXNldCBmb3JtIG93bmVy
IGhlcmUuCiAgICAgICAgIEhUTUxGb3JtRWxlbWVudCogb3JpZ2luYWxGb3JtID0gbV9mb3JtOwot
ICAgICAgICBzZXRGb3JtKGVsZW1lbnQtPmZpbmRGb3JtQW5jZXN0b3IoKSk7CisgICAgICAgIHNl
dEZvcm0oSFRNTEZvcm1FbGVtZW50OjpmaW5kQ2xvc2VzdEZvcm1BbmNlc3RvcigqZWxlbWVudCkp
OwogICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQodGhpcyk7CiAg
ICAgICAgIGlmIChtX2Zvcm0gJiYgbV9mb3JtICE9IG9yaWdpbmFsRm9ybSAmJiBtX2Zvcm0tPmlu
RG9jdW1lbnQoKSkKICAgICAgICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPmRpZEFzc29jaWF0
ZUZvcm1Db250cm9sKGVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE1NDcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzEsMTggKzc3MSw5IEBAIFJlbmRlck9iamVjdCogSFRN
TEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmUKICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVP
YmplY3QodGhpcywgc3R5bGUpOwogfQogCi1IVE1MRm9ybUVsZW1lbnQqIEhUTUxFbGVtZW50Ojpm
aW5kRm9ybUFuY2VzdG9yKCkgY29uc3QKLXsKLSAgICBmb3IgKENvbnRhaW5lck5vZGUqIGFuY2Vz
dG9yID0gcGFyZW50Tm9kZSgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50
Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxGb3JtRWxlbWVudChhbmNlc3RvcikpCi0gICAg
ICAgICAgICByZXR1cm4gdG9IVE1MRm9ybUVsZW1lbnQoYW5jZXN0b3IpOwotICAgIH0KLSAgICBy
ZXR1cm4gMDsKLX0KLQogSFRNTEZvcm1FbGVtZW50KiBIVE1MRWxlbWVudDo6dmlydHVhbEZvcm0o
KSBjb25zdAogewotICAgIHJldHVybiBmaW5kRm9ybUFuY2VzdG9yKCk7CisgICAgcmV0dXJuIEhU
TUxGb3JtRWxlbWVudDo6ZmluZENsb3Nlc3RGb3JtQW5jZXN0b3IoKnRoaXMpOwogfQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgZWxlbWVudEFmZmVjdHNEaXJlY3Rpb25hbGl0eShjb25zdCBOb2RlKiBu
b2RlKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAkocmV2aXNpb24gMTU0NzE5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NSw4ICs4NSw2IEBAIHB1YmxpYzoKIAogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIHZpcnR1YWxGb3JtKCk7IH0KIAotICAgIEhUTUxGb3JtRWxlbWVudCogZmluZEZv
cm1BbmNlc3RvcigpIGNvbnN0OwotCiAgICAgYm9vbCBoYXNEaXJlY3Rpb25BdXRvKCkgY29uc3Q7
CiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShi
b29sJiBpc0F1dG8pIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NDcxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYy
LDcgKzYyLDcgQEAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6SFRNTEZvcm1Db250cm9sRQogICAg
ICwgbV93YXNDaGFuZ2VkU2luY2VMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChmYWxzZSkKICAg
ICAsIG1faGFzQXV0b2ZvY3VzZWQoZmFsc2UpCiB7Ci0gICAgc2V0Rm9ybShmb3JtID8gZm9ybSA6
IGZpbmRGb3JtQW5jZXN0b3IoKSk7CisgICAgc2V0Rm9ybShmb3JtID8gZm9ybSA6IEhUTUxGb3Jt
RWxlbWVudDo6ZmluZENsb3Nlc3RGb3JtQW5jZXN0b3IoKnRoaXMpKTsKICAgICBzZXRIYXNDdXN0
b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMTU0NzE5KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODMsNCArNjgzLDEz
IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHIKICAgICBIVE1MRWxl
bWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChzb3VyY2UpOwogfQog
CitIVE1MRm9ybUVsZW1lbnQqIEhUTUxGb3JtRWxlbWVudDo6ZmluZENsb3Nlc3RGb3JtQW5jZXN0
b3IoY29uc3QgRWxlbWVudCYgc3RhcnRFbGVtZW50KQoreworICAgIGZvciAoRWxlbWVudCogZWxl
bWVudCA9IHN0YXJ0RWxlbWVudC5wYXJlbnRFbGVtZW50KCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBl
bGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50
KGVsZW1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIHRvSFRNTEZvcm1FbGVtZW50KGVsZW1lbnQp
OworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAkocmV2aXNpb24gMTU0NzE5KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYg
KzEwNiw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0VGV4dEZpZWxkVmFsdWVzKFN0cmluZ1Bh
aXJWZWN0b3ImIGZpZWxkTmFtZXNBbmRWYWx1ZXMpIGNvbnN0OwogCisgICAgc3RhdGljIEhUTUxG
b3JtRWxlbWVudCogZmluZENsb3Nlc3RGb3JtQW5jZXN0b3IoY29uc3QgRWxlbWVudCYpOworCiBw
cml2YXRlOgogICAgIEhUTUxGb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNTQ3MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsMTUgKzIwNSwxMCBAQCB2b2lkIEhUTUxJbWFnZUVs
ZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVyCiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJl
cXVlc3QgSFRNTEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2Vy
dGlvblBvaW50KQogewotICAgIGlmICghbV9mb3JtKSB7Ci0gICAgICAgIC8vIG1fZm9ybSBjYW4g
YmUgbm9uLW51bGwgaWYgaXQgd2FzIHNldCBpbiBjb25zdHJ1Y3Rvci4KLSAgICAgICAgZm9yIChD
b250YWluZXJOb2RlKiBhbmNlc3RvciA9IHBhcmVudE5vZGUoKTsgYW5jZXN0b3I7IGFuY2VzdG9y
ID0gYW5jZXN0b3ItPnBhcmVudE5vZGUoKSkgewotICAgICAgICAgICAgaWYgKGlzSFRNTEZvcm1F
bGVtZW50KGFuY2VzdG9yKSkgewotICAgICAgICAgICAgICAgIG1fZm9ybSA9IHRvSFRNTEZvcm1F
bGVtZW50KGFuY2VzdG9yKTsKLSAgICAgICAgICAgICAgICBtX2Zvcm0tPnJlZ2lzdGVySW1nRWxl
bWVudCh0aGlzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQorICAgIGlmICghbV9mb3JtKSB7IC8vIG1fZm9ybSBjYW4gYmUgbm9uLW51bGwgaWYgaXQg
d2FzIHNldCBpbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgbV9mb3JtID0gSFRNTEZvcm1FbGVtZW50
OjpmaW5kQ2xvc2VzdEZvcm1BbmNlc3RvcigqdGhpcyk7CisgICAgICAgIGlmIChtX2Zvcm0pCisg
ICAgICAgICAgICBtX2Zvcm0tPnJlZ2lzdGVySW1nRWxlbWVudCh0aGlzKTsKICAgICB9CiAKICAg
ICAvLyBJZiB3ZSBoYXZlIGJlZW4gaW5zZXJ0ZWQgZnJvbSBhIHJlbmRlcmVyLWxlc3MgZG9jdW1l
bnQsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkocmV2
aXNpb24gMTU0NzE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgaW5saW5lIEhUTUxPYmplY3RFbGVt
ZW50OjpIVE1MT2JqZWN0RWxlbQogICAgICwgbV91c2VGYWxsYmFja0NvbnRlbnQoZmFsc2UpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUob2JqZWN0VGFnKSk7Ci0gICAgc2V0Rm9ybShmb3JtID8g
Zm9ybSA6IGZpbmRGb3JtQW5jZXN0b3IoKSk7CisgICAgc2V0Rm9ybShmb3JtID8gZm9ybSA6IEhU
TUxGb3JtRWxlbWVudDo6ZmluZENsb3Nlc3RGb3JtQW5jZXN0b3IoKnRoaXMpKTsKIH0KIAogaW5s
aW5lIEhUTUxPYmplY3RFbGVtZW50Ojp+SFRNTE9iamVjdEVsZW1lbnQoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCShyZXZpc2lvbiAx
NTQ3MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsMjAgKzEzNiw2IEBAIHN0YXRpYyBib29sIGlzRm9ybWF0
dGluZ1RhZyhjb25zdCBBdG9taWMKICAgICByZXR1cm4gdGFnTmFtZSA9PSBhVGFnIHx8IGlzTm9u
QW5jaG9yRm9ybWF0dGluZ1RhZyh0YWdOYW1lKTsKIH0KIAotc3RhdGljIEhUTUxGb3JtRWxlbWVu
dCogY2xvc2VzdEZvcm1BbmNlc3RvcihFbGVtZW50KiBlbGVtZW50KQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgd2hpbGUgKGVsZW1lbnQpIHsKLSAgICAgICAgaWYgKGlzSFRN
TEZvcm1FbGVtZW50KGVsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIHRvSFRNTEZvcm1FbGVt
ZW50KGVsZW1lbnQpOwotICAgICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBlbGVtZW50LT5w
YXJlbnROb2RlKCk7Ci0gICAgICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlzRWxlbWVudE5v
ZGUoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBlbGVtZW50ID0gdG9FbGVtZW50
KHBhcmVudCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCiBjbGFzcyBIVE1MVHJlZUJ1aWxk
ZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIpOwogcHVibGljOgpAQCAtMzEzLDcgKzI5
OSw3IEBAIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2MKICNlbmRpZgog
CiAgICAgICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKLSAgICAgICAgbV90
cmVlLnNldEZvcm0oY2xvc2VzdEZvcm1BbmNlc3Rvcihjb250ZXh0RWxlbWVudCkpOworICAgICAg
ICBtX3RyZWUuc2V0Rm9ybSghY29udGV4dEVsZW1lbnQgfHwgaXNIVE1MRm9ybUVsZW1lbnQoY29u
dGV4dEVsZW1lbnQpID8gdG9IVE1MRm9ybUVsZW1lbnQoY29udGV4dEVsZW1lbnQpIDogSFRNTEZv
cm1FbGVtZW50OjpmaW5kQ2xvc2VzdEZvcm1BbmNlc3RvcigqY29udGV4dEVsZW1lbnQpKTsKICAg
ICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>