<?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>120529</bug_id>
          
          <creation_ts>2013-08-30 08:11:56 -0700</creation_ts>
          <short_desc>Simplify DocumentType handling.</short_desc>
          <delta_ts>2013-09-02 11:33:00 -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>InRadar</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>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>922954</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-30 08:11:56 -0700</bug_when>
    <thetext>Clean out some DocumentType gunk now that there&apos;s always a document().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922955</commentid>
    <comment_count>1</comment_count>
      <attachid>210110</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-30 08:12:25 -0700</bug_when>
    <thetext>Created attachment 210110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923002</commentid>
    <comment_count>2</comment_count>
      <attachid>210110</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-30 09:35:01 -0700</bug_when>
    <thetext>Comment on attachment 210110
Patch

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

&gt; Source/WebCore/dom/Document.cpp:748
&gt; -void Document::setDocType(PassRefPtr&lt;DocumentType&gt; docType)
&gt; +void Document::setDoctype(PassRefPtr&lt;DocumentType&gt; docType)

The reason we did not name this consistently with the public DOM function doctype is that it’s not a public DOM function, and is intended only for internal use. If I was renaming it, I would rename it setDocumentType, but I also think I would put the logic into Document rather than the DocumentType class and get rid of this function entirely. There are very few top level nodes in the document, so we could do this work any time we are manipulating document children.

&gt; Source/WebCore/dom/Document.cpp:750
&gt;      // This should never be called more than once.

This comment is confusingly inaccurate.

&gt; Source/WebCore/dom/Document.h:-888
&gt; -    void setDocType(PassRefPtr&lt;DocumentType&gt;);

I suggest deleting all three of the functions Document::setDocType, DocumentType::insertedInto, and DocumentType::removedFrom and doing all the work inside Document::childrenChanged instead, as we do for the document element. I would also rename m_docType to m_documentType or eliminate it entirely. I am not sure that finding the document type node is so performance-critical that it justifies being stored in a data member.

&gt; Source/WebCore/dom/DocumentType.cpp:69
&gt; +    document().setDoctype(0);

What prevents more than one DocumentType node from being inserted into the document?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923740</commentid>
    <comment_count>3</comment_count>
      <attachid>210292</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-02 09:04:18 -0700</bug_when>
    <thetext>Created attachment 210292
Less crappy patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923742</commentid>
    <comment_count>4</comment_count>
      <attachid>210292</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-02 09:14:32 -0700</bug_when>
    <thetext>Comment on attachment 210292
Less crappy patch

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

r=me

&gt; Source/WebCore/ChangeLog:19
&gt; +        Removed the insertedInto()/removedFrom() handlers from DocumentType.
&gt; +
&gt; +        Document no longer keeps a pointer to its doctype node, it was only used for the
&gt; +        document.doctype DOM API, which now just looks through the list of (&lt;=2) children.
&gt; +
&gt; +        The ENABLE(LEGACY_VIEWPORT_ADAPTION) hunk from Document::setDocType() was moved
&gt; +        into Document::childrenChanged().
&gt; +
&gt; +        We no longer clear the style resolver on doctype insertion/removal since it
&gt; +        doesn&apos;t actually affect style anyway.
&gt; +
&gt; +        Also made doctype() return a PassRefPtr&lt;DocumentType&gt; instead of a raw pointer.

Would be good to mention that the DOM spec says dynamic doctype changes have no effect, maybe even in a code comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923749</commentid>
    <comment_count>5</comment_count>
      <attachid>210294</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-02 09:27:08 -0700</bug_when>
    <thetext>Created attachment 210294
Lander</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923756</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-02 10:02:58 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 210294:

fast/workers/termination-with-port-messages.html bug 119980 (authors: dimich@chromium.org and rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923757</commentid>
    <comment_count>7</comment_count>
      <attachid>210294</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-02 10:04:18 -0700</bug_when>
    <thetext>Comment on attachment 210294
Lander

Clearing flags on attachment: 210294

Committed r154961: &lt;http://trac.webkit.org/changeset/154961&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923758</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-02 10:04:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923767</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-09-02 10:39:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/14892699&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923777</commentid>
    <comment_count>10</comment_count>
      <attachid>210294</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-02 11:28:07 -0700</bug_when>
    <thetext>Comment on attachment 210294
Lander

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        We no longer clear the style resolver on doctype insertion/removal since it
&gt; +        doesn&apos;t actually affect style anyway.

If it doesn’t affect style, what does it affect?

&gt; Source/WebCore/ChangeLog:19
&gt; +        Also made doctype() return a PassRefPtr&lt;DocumentType&gt; instead of a raw pointer.

Why? Does not make sense to me.

&gt; Source/WebCore/dom/Document.cpp:760
&gt; +    for (Node* node = firstChild(); node; node = node-&gt;nextSibling()) {

Not one of the fancy new child iterators?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923778</commentid>
    <comment_count>11</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-02 11:33:00 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 210294 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=210294&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:17
&gt; &gt; +        We no longer clear the style resolver on doctype insertion/removal since it
&gt; &gt; +        doesn&apos;t actually affect style anyway.
&gt; 
&gt; If it doesn’t affect style, what does it affect?

It doesn&apos;t affect anything internally in WebKit. See also &lt;rdar://problem/14892683&gt;

&gt; &gt; Source/WebCore/ChangeLog:19
&gt; &gt; +        Also made doctype() return a PassRefPtr&lt;DocumentType&gt; instead of a raw pointer.
&gt; 
&gt; Why? Does not make sense to me.

Matter of taste I guess. I feel that functions whose primary purpose is DOM API should return PassRefPtrs, since the caller is expected to take a reference. This puts that information in the function definition.

&gt; &gt; Source/WebCore/dom/Document.cpp:760
&gt; &gt; +    for (Node* node = firstChild(); node; node = node-&gt;nextSibling()) {
&gt; 
&gt; Not one of the fancy new child iterators?

The fancy new iterators are for Elements only.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210110</attachid>
            <date>2013-08-30 08:12:25 -0700</date>
            <delta_ts>2013-09-02 09:04:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120529.diff</filename>
            <type>text/plain</type>
            <size>3854</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ODcwMjliLi42OTYwOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTMtMDgtMzAgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIENsZWFuIG91dCBzb21lIERvY3VtZW50VHlwZSBndW5rIG5vdyB0aGF0IHRoZXJlJ3MgYWx3
YXlzIGEgZG9jdW1lbnQoKS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMDUyOT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGlm
eSBpbnNlcnRlZEludG8oKSBhbmQgcmVtb3ZlZEZyb20oKS4gSW5zcGlyYXRpb24gZnJvbSBFbGxp
b3QgU3ByZWhuLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXREb2N0eXBlKToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
VHlwZTo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VHlwZTo6cmVt
b3ZlZEZyb20pOgorCiAyMDEzLTA4LTMwICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBv
emRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHNo
YWxsIGJlIHVzZWQgZm9yIFJ1bGVEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBkZGE3
MzRlLi5hYTIxNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc0NSw3ICs3NDUsNyBA
QCB2b2lkIERvY3VtZW50OjpyZXNldEFjdGl2ZUxpbmtDb2xvcigpCiAgICAgbV9hY3RpdmVMaW5r
Q29sb3Iuc2V0TmFtZWRDb2xvcigicmVkIik7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldERvY1R5
cGUoUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+IGRvY1R5cGUpCit2b2lkIERvY3VtZW50OjpzZXRE
b2N0eXBlKFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPiBkb2NUeXBlKQogewogICAgIC8vIFRoaXMg
c2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4KICAgICBBU1NFUlQoIW1fZG9j
VHlwZSB8fCAhZG9jVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGI4NzhkOTUuLmRiZTAy
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zMjgsNiArMzI4LDcgQEAgcHVibGljOgogICAg
IFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcnJl
clBvbGljeTsgfQogCiAgICAgRG9jdW1lbnRUeXBlKiBkb2N0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9kb2NUeXBlLmdldCgpOyB9CisgICAgdm9pZCBzZXREb2N0eXBlKFBhc3NSZWZQdHI8RG9jdW1l
bnRUeXBlPik7CiAKICAgICBET01JbXBsZW1lbnRhdGlvbiogaW1wbGVtZW50YXRpb24oKTsKICAg
ICAKQEAgLTg4NSw4ICs4ODYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNET01UcmVlVmVyc2lv
bigpIHsgbV9kb21UcmVlVmVyc2lvbiA9ICsrc19nbG9iYWxUcmVlVmVyc2lvbjsgfQogICAgIHVp
bnQ2NF90IGRvbVRyZWVWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9kb21UcmVlVmVyc2lvbjsg
fQogCi0gICAgdm9pZCBzZXREb2NUeXBlKFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPik7Ci0KICAg
ICAvLyBYUGF0aEV2YWx1YXRvciBtZXRob2RzCiAgICAgUGFzc1JlZlB0cjxYUGF0aEV4cHJlc3Np
b24+IGNyZWF0ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoTlNSZXNvbHZlciog
cmVzb2x2ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCmluZGV4IDYxZTYwYmYuLmI3
YzhiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCkBAIC0yLDcgKzIsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtNTksMjQgKzU5LDE0IEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnRUeXBlOjpjbG9u
ZU5vZGUoYm9vbCAvKmRlZXAqLykKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3Qg
RG9jdW1lbnRUeXBlOjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQp
CiB7CiAgICAgTm9kZTo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKLSAgICBpZiAoIWlu
c2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25l
OwotCi0gICAgLy8gT3VyIGRvY3VtZW50IG5vZGUgY2FuIGJlIG51bGwgaWYgd2Ugd2VyZSBjcmVh
dGVkIGJ5IGEgRE9NSW1wbGVtZW50YXRpb24uICBXZSB1c2UgdGhlIHBhcmVudCgpIGluc3RlYWQu
Ci0gICAgQVNTRVJUKHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzRG9jdW1lbnROb2Rl
KCkpOwotICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc0RvY3VtZW50Tm9k
ZSgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2MgPSB0b0RvY3VtZW50KHBhcmVudE5vZGUoKSk7
Ci0gICAgICAgIGlmICghZG9jLT5kb2N0eXBlKCkpCi0gICAgICAgICAgICBkb2MtPnNldERvY1R5
cGUodGhpcyk7Ci0gICAgfQotCisgICAgQVNTRVJUKHBhcmVudE5vZGUoKS0+aXNEb2N1bWVudE5v
ZGUoKSk7CisgICAgZG9jdW1lbnQoKS5zZXREb2N0eXBlKHRoaXMpOwogICAgIHJldHVybiBJbnNl
cnRpb25Eb25lOwogfQogCiB2b2lkIERvY3VtZW50VHlwZTo6cmVtb3ZlZEZyb20oQ29udGFpbmVy
Tm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3Vt
ZW50KCkmJiBkb2N1bWVudCgpLmRvY3R5cGUoKSA9PSB0aGlzKQotICAgICAgICBkb2N1bWVudCgp
LnNldERvY1R5cGUoMCk7CisgICAgZG9jdW1lbnQoKS5zZXREb2N0eXBlKDApOwogICAgIE5vZGU6
OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsKIH0KIAo=
</data>
<flag name="review"
          id="232211"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210292</attachid>
            <date>2013-09-02 09:04:18 -0700</date>
            <delta_ts>2013-09-02 09:27:08 -0700</delta_ts>
            <desc>Less crappy patch</desc>
            <filename>bug-120529.diff</filename>
            <type>text/plain</type>
            <size>7219</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkZTViN2Q4Li42NDExZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTMtMDktMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFNpbXBsaWZ5IERvY3VtZW50VHlwZSBoYW5kbGluZy4KKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzEyMDUyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmVkIHRoZSBpbnNlcnRlZEludG8oKS9yZW1vdmVkRnJvbSgpIGhhbmRs
ZXJzIGZyb20gRG9jdW1lbnRUeXBlLgorCisgICAgICAgIERvY3VtZW50IG5vIGxvbmdlciBrZWVw
cyBhIHBvaW50ZXIgdG8gaXRzIGRvY3R5cGUgbm9kZSwgaXQgd2FzIG9ubHkgdXNlZCBmb3IgdGhl
CisgICAgICAgIGRvY3VtZW50LmRvY3R5cGUgRE9NIEFQSSwgd2hpY2ggbm93IGp1c3QgbG9va3Mg
dGhyb3VnaCB0aGUgbGlzdCBvZiAoPD0yKSBjaGlsZHJlbi4KKworICAgICAgICBUaGUgRU5BQkxF
KExFR0FDWV9WSUVXUE9SVF9BREFQVElPTikgaHVuayBmcm9tIERvY3VtZW50OjpzZXREb2NUeXBl
KCkgd2FzIG1vdmVkCisgICAgICAgIGludG8gRG9jdW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpLgor
CisgICAgICAgIFdlIG5vIGxvbmdlciBjbGVhciB0aGUgc3R5bGUgcmVzb2x2ZXIgb24gZG9jdHlw
ZSBpbnNlcnRpb24vcmVtb3ZhbCBzaW5jZSBpdAorICAgICAgICBkb2Vzbid0IGFjdHVhbGx5IGFm
ZmVjdCBzdHlsZSBhbnl3YXkuCisKKyAgICAgICAgQWxzbyBtYWRlIGRvY3R5cGUoKSByZXR1cm4g
YSBQYXNzUmVmUHRyPERvY3VtZW50VHlwZT4gaW5zdGVhZCBvZiBhIHJhdyBwb2ludGVyLgorCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpk
aXNwb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb2N0eXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFR5cGUuY3BwOgorICAgICAgICAqIGRvbS9E
b2N1bWVudFR5cGUuaDoKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkb2N1bWVudFR5cGVTdHJpbmcpOgorCiAyMDEzLTA5LTAyICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTU0OTU1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZjBmNjcxYS4uZDI2OTli
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC02MjMsNyArNjIzLDYgQEAgdm9pZCBEb2N1
bWVudDo6ZGlzcG9zZSgpCiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIC8v
IFdlIG11c3QgbWFrZSBzdXJlIG5vdCB0byBiZSByZXRhaW5pbmcgYW55IG9mIG91ciBjaGlsZHJl
biB0aHJvdWdoCiAgICAgLy8gdGhlc2UgZXh0cmEgcG9pbnRlcnMgb3Igd2Ugd2lsbCBjcmVhdGUg
YSByZWZlcmVuY2UgY3ljbGUuCi0gICAgbV9kb2NUeXBlID0gMDsKICAgICBtX2ZvY3VzZWRFbGVt
ZW50ID0gMDsKICAgICBtX2hvdmVyZWRFbGVtZW50ID0gMDsKICAgICBtX2FjdGl2ZUVsZW1lbnQg
PSAwOwpAQCAtNzQ0LDIyICs3NDMsNiBAQCB2b2lkIERvY3VtZW50OjpyZXNldEFjdGl2ZUxpbmtD
b2xvcigpCiAgICAgbV9hY3RpdmVMaW5rQ29sb3Iuc2V0TmFtZWRDb2xvcigicmVkIik7CiB9CiAK
LXZvaWQgRG9jdW1lbnQ6OnNldERvY1R5cGUoUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+IGRvY1R5
cGUpCi17Ci0gICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNl
LgotICAgIEFTU0VSVCghbV9kb2NUeXBlIHx8ICFkb2NUeXBlKTsKLSAgICBtX2RvY1R5cGUgPSBk
b2NUeXBlOwotICAgIGlmIChtX2RvY1R5cGUpIHsKLSAgICAgICAgdGhpcy0+YWRvcHRJZk5lZWRl
ZChtX2RvY1R5cGUuZ2V0KCkpOwotI2lmIEVOQUJMRShMRUdBQ1lfVklFV1BPUlRfQURBUFRJT04p
Ci0gICAgICAgIGlmIChtX2RvY1R5cGUtPnB1YmxpY0lkKCkuc3RhcnRzV2l0aCgiLS8vd2FwZm9y
dW0vL2R0ZCB4aHRtbCBtb2JpbGUgMS4iLCAvKiBjYXNlU2Vuc2l0aXZlICovIGZhbHNlKSkKLSAg
ICAgICAgICAgIHByb2Nlc3NWaWV3cG9ydCgid2lkdGg9ZGV2aWNlLXdpZHRoLCBoZWlnaHQ9ZGV2
aWNlLWhlaWdodCIsIFZpZXdwb3J0QXJndW1lbnRzOjpYSFRNTE1vYmlsZVByb2ZpbGUpOwotI2Vu
ZGlmCi0gICAgfQotICAgIC8vIERvY3R5cGUgYWZmZWN0cyB0aGUgaW50ZXJwcmV0YXRpb24gb2Yg
dGhlIHN0eWxlc2hlZXRzLgotICAgIGNsZWFyU3R5bGVSZXNvbHZlcigpOwotfQotCiBET01JbXBs
ZW1lbnRhdGlvbiogRG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKCkKIHsKICAgICBpZiAoIW1faW1w
bGVtZW50YXRpb24pCkBAIC03NzIsMTAgKzc1NSwyNiBAQCBib29sIERvY3VtZW50OjpoYXNNYW5p
ZmVzdCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpICYmIGRvY3VtZW50RWxl
bWVudCgpLT5oYXNUYWdOYW1lKGh0bWxUYWcpICYmIGRvY3VtZW50RWxlbWVudCgpLT5oYXNBdHRy
aWJ1dGUobWFuaWZlc3RBdHRyKTsKIH0KIAorUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+IERvY3Vt
ZW50Ojpkb2N0eXBlKCkgY29uc3QKK3sKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxk
KCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChub2Rl
LT5pc0RvY3VtZW50VHlwZU5vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
b2N1bWVudFR5cGUqPihub2RlKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgRG9j
dW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewogICAg
IENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogCisjaWYgRU5BQkxFKExF
R0FDWV9WSUVXUE9SVF9BREFQVElPTikKKyAgICBpZiAoUmVmUHRyPERvY3VtZW50VHlwZT4gZG9j
dW1lbnRUeXBlID0gZG9jdHlwZSgpKSB7CisgICAgICAgIGlmIChkb2N1bWVudFR5cGUtPnB1Ymxp
Y0lkKCkuc3RhcnRzV2l0aCgiLS8vd2FwZm9ydW0vL2R0ZCB4aHRtbCBtb2JpbGUgMS4iLCAvKiBj
YXNlU2Vuc2l0aXZlICovIGZhbHNlKSkKKyAgICAgICAgICAgIHByb2Nlc3NWaWV3cG9ydCgid2lk
dGg9ZGV2aWNlLXdpZHRoLCBoZWlnaHQ9ZGV2aWNlLWhlaWdodCIsIFZpZXdwb3J0QXJndW1lbnRz
OjpYSFRNTE1vYmlsZVByb2ZpbGUpOworICAgIH0KKyNlbmRpZgorCiAgICAgRWxlbWVudCogbmV3
RG9jdW1lbnRFbGVtZW50ID0gMDsKICAgICBhdXRvIGZpcnN0RWxlbWVudENoaWxkID0gZWxlbWVu
dENoaWxkcmVuKHRoaXMpLmJlZ2luKCk7CiAgICAgaWYgKGZpcnN0RWxlbWVudENoaWxkICE9IGVs
ZW1lbnRDaGlsZHJlbih0aGlzKS5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNzdiZWRi
ZS4uYjljOTk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMyNyw3ICszMjcsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSByZWZlcnJlclBv
bGljeSkgeyBtX3JlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQb2xpY3k7IH0KICAgICBSZWZlcnJl
clBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJyZXJQb2xpY3k7
IH0KIAotICAgIERvY3VtZW50VHlwZSogZG9jdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jVHlw
ZS5nZXQoKTsgfQorICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPiBkb2N0eXBlKCkgY29uc3Q7
CiAKICAgICBET01JbXBsZW1lbnRhdGlvbiogaW1wbGVtZW50YXRpb24oKTsKICAgICAKQEAgLTg4
NSw4ICs4ODUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNET01UcmVlVmVyc2lvbigpIHsgbV9k
b21UcmVlVmVyc2lvbiA9ICsrc19nbG9iYWxUcmVlVmVyc2lvbjsgfQogICAgIHVpbnQ2NF90IGRv
bVRyZWVWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9kb21UcmVlVmVyc2lvbjsgfQogCi0gICAg
dm9pZCBzZXREb2NUeXBlKFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPik7Ci0KICAgICAvLyBYUGF0
aEV2YWx1YXRvciBtZXRob2RzCiAgICAgUGFzc1JlZlB0cjxYUGF0aEV4cHJlc3Npb24+IGNyZWF0
ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIs
CkBAIC0xMzA2LDcgKzEzMDQsNiBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fYmFzZVRhcmdl
dDsKIAotICAgIFJlZlB0cjxEb2N1bWVudFR5cGU+IG1fZG9jVHlwZTsKICAgICBPd25QdHI8RE9N
SW1wbGVtZW50YXRpb24+IG1faW1wbGVtZW50YXRpb247CiAKICAgICBSZWZQdHI8Q1NTU3R5bGVT
aGVldD4gbV9lbGVtZW50U2hlZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCmluZGV4
IDYxZTYwYmYuLjg0NGJkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCkBAIC01
NiwyOCArNTYsNCBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50VHlwZTo6Y2xvbmVOb2RlKGJv
b2wgLypkZWVwKi8pCiAgICAgcmV0dXJuIGNyZWF0ZSgmZG9jdW1lbnQoKSwgbV9uYW1lLCBtX3B1
YmxpY0lkLCBtX3N5c3RlbUlkKTsKIH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBEb2N1bWVudFR5cGU6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Q
b2ludCkKLXsKLSAgICBOb2RlOjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwotICAgIGlm
ICghaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIEluc2VydGlv
bkRvbmU7Ci0KLSAgICAvLyBPdXIgZG9jdW1lbnQgbm9kZSBjYW4gYmUgbnVsbCBpZiB3ZSB3ZXJl
IGNyZWF0ZWQgYnkgYSBET01JbXBsZW1lbnRhdGlvbi4gIFdlIHVzZSB0aGUgcGFyZW50KCkgaW5z
dGVhZC4KLSAgICBBU1NFUlQocGFyZW50Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+aXNEb2N1bWVu
dE5vZGUoKSk7Ci0gICAgaWYgKHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzRG9jdW1l
bnROb2RlKCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHRvRG9jdW1lbnQocGFyZW50Tm9k
ZSgpKTsKLSAgICAgICAgaWYgKCFkb2MtPmRvY3R5cGUoKSkKLSAgICAgICAgICAgIGRvYy0+c2V0
RG9jVHlwZSh0aGlzKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKLX0KLQot
dm9pZCBEb2N1bWVudFR5cGU6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBv
aW50KQotewotICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpJiYgZG9jdW1lbnQo
KS5kb2N0eXBlKCkgPT0gdGhpcykKLSAgICAgICAgZG9jdW1lbnQoKS5zZXREb2NUeXBlKDApOwot
ICAgIE5vZGU6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsKLX0KLQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50VHlwZS5oCmluZGV4IGM1N2FjMjUuLmUxYzExMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRUeXBlLmgKQEAgLTU0LDkgKzU0LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5vZGVU
eXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25l
Tm9kZShib29sIGRlZXApOwogCi0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKLQogICAgIE93blB0cjxO
YW1lZE5vZGVNYXA+IG1fZW50aXRpZXM7CiAgICAgT3duUHRyPE5hbWVkTm9kZU1hcD4gbV9ub3Rh
dGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA4MGQ4MWY3Li5hYzZlMGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05MjYsMTEgKzkyNiwxMSBAQCBQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKERvY3VtZW50
ICpkb2N1bWVudCwgY29uc3QgVgogCiBTdHJpbmcgZG9jdW1lbnRUeXBlU3RyaW5nKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBEb2N1bWVudFR5cGUqIGRvY3VtZW50VHlwZSA9IGRv
Y3VtZW50LmRvY3R5cGUoKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRUeXBlPiBkb2N1bWVudFR5cGUg
PSBkb2N1bWVudC5kb2N0eXBlKCk7CiAgICAgaWYgKCFkb2N1bWVudFR5cGUpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAotICAgIHJldHVybiBjcmVhdGVNYXJrdXAoZG9jdW1lbnRUeXBlKTsK
KyAgICByZXR1cm4gY3JlYXRlTWFya3VwKGRvY3VtZW50VHlwZS5nZXQoKSk7CiB9CiAKIFN0cmlu
ZyBjcmVhdGVGdWxsTWFya3VwKGNvbnN0IE5vZGUqIG5vZGUpCg==
</data>
<flag name="review"
          id="232397"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210294</attachid>
            <date>2013-09-02 09:27:08 -0700</date>
            <delta_ts>2013-09-02 11:28:07 -0700</delta_ts>
            <desc>Lander</desc>
            <filename>land-120529.diff</filename>
            <type>text/plain</type>
            <size>7369</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5YjUyMzkyLi43NWY4NjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTMtMDktMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFNpbXBsaWZ5IERvY3VtZW50VHlwZSBoYW5kbGluZy4KKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzEyMDUyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4K
KworICAgICAgICBSZW1vdmVkIHRoZSBpbnNlcnRlZEludG8oKS9yZW1vdmVkRnJvbSgpIGhhbmRs
ZXJzIGZyb20gRG9jdW1lbnRUeXBlLgorCisgICAgICAgIERvY3VtZW50IG5vIGxvbmdlciBrZWVw
cyBhIHBvaW50ZXIgdG8gaXRzIGRvY3R5cGUgbm9kZSwgaXQgd2FzIG9ubHkgdXNlZCBmb3IgdGhl
CisgICAgICAgIGRvY3VtZW50LmRvY3R5cGUgRE9NIEFQSSwgd2hpY2ggbm93IGp1c3QgbG9va3Mg
dGhyb3VnaCB0aGUgbGlzdCBvZiAoPD0yKSBjaGlsZHJlbi4KKworICAgICAgICBUaGUgRU5BQkxF
KExFR0FDWV9WSUVXUE9SVF9BREFQVElPTikgaHVuayBmcm9tIERvY3VtZW50OjpzZXREb2NUeXBl
KCkgd2FzIG1vdmVkCisgICAgICAgIGludG8gRG9jdW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpLgor
CisgICAgICAgIFdlIG5vIGxvbmdlciBjbGVhciB0aGUgc3R5bGUgcmVzb2x2ZXIgb24gZG9jdHlw
ZSBpbnNlcnRpb24vcmVtb3ZhbCBzaW5jZSBpdAorICAgICAgICBkb2Vzbid0IGFjdHVhbGx5IGFm
ZmVjdCBzdHlsZSBhbnl3YXkuCisKKyAgICAgICAgQWxzbyBtYWRlIGRvY3R5cGUoKSByZXR1cm4g
YSBQYXNzUmVmUHRyPERvY3VtZW50VHlwZT4gaW5zdGVhZCBvZiBhIHJhdyBwb2ludGVyLgorCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpk
aXNwb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb2N0eXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFR5cGUuY3BwOgorICAgICAgICAqIGRvbS9E
b2N1bWVudFR5cGUuaDoKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkb2N1bWVudFR5cGVTdHJpbmcpOgorCiAyMDEzLTA5LTAyICBBbnRvbiBPYnpoaXJv
diAgPGEub2J6aGlyb3ZAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzk4MzUwPiBbR1RLXSBhY2Nlc3NpYmlsaXR5L2FyaWEtaW52YWxpZC5odG1sIHRpbWVzIG91
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZjBmNjcxYS4uZWQzODY5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC02MjMsNyArNjIzLDYgQEAgdm9pZCBEb2N1bWVudDo6ZGlzcG9z
ZSgpCiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIC8vIFdlIG11c3QgbWFr
ZSBzdXJlIG5vdCB0byBiZSByZXRhaW5pbmcgYW55IG9mIG91ciBjaGlsZHJlbiB0aHJvdWdoCiAg
ICAgLy8gdGhlc2UgZXh0cmEgcG9pbnRlcnMgb3Igd2Ugd2lsbCBjcmVhdGUgYSByZWZlcmVuY2Ug
Y3ljbGUuCi0gICAgbV9kb2NUeXBlID0gMDsKICAgICBtX2ZvY3VzZWRFbGVtZW50ID0gMDsKICAg
ICBtX2hvdmVyZWRFbGVtZW50ID0gMDsKICAgICBtX2FjdGl2ZUVsZW1lbnQgPSAwOwpAQCAtNzQ0
LDIyICs3NDMsNiBAQCB2b2lkIERvY3VtZW50OjpyZXNldEFjdGl2ZUxpbmtDb2xvcigpCiAgICAg
bV9hY3RpdmVMaW5rQ29sb3Iuc2V0TmFtZWRDb2xvcigicmVkIik7CiB9CiAKLXZvaWQgRG9jdW1l
bnQ6OnNldERvY1R5cGUoUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+IGRvY1R5cGUpCi17Ci0gICAg
Ly8gVGhpcyBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLgotICAgIEFTU0VS
VCghbV9kb2NUeXBlIHx8ICFkb2NUeXBlKTsKLSAgICBtX2RvY1R5cGUgPSBkb2NUeXBlOwotICAg
IGlmIChtX2RvY1R5cGUpIHsKLSAgICAgICAgdGhpcy0+YWRvcHRJZk5lZWRlZChtX2RvY1R5cGUu
Z2V0KCkpOwotI2lmIEVOQUJMRShMRUdBQ1lfVklFV1BPUlRfQURBUFRJT04pCi0gICAgICAgIGlm
IChtX2RvY1R5cGUtPnB1YmxpY0lkKCkuc3RhcnRzV2l0aCgiLS8vd2FwZm9ydW0vL2R0ZCB4aHRt
bCBtb2JpbGUgMS4iLCAvKiBjYXNlU2Vuc2l0aXZlICovIGZhbHNlKSkKLSAgICAgICAgICAgIHBy
b2Nlc3NWaWV3cG9ydCgid2lkdGg9ZGV2aWNlLXdpZHRoLCBoZWlnaHQ9ZGV2aWNlLWhlaWdodCIs
IFZpZXdwb3J0QXJndW1lbnRzOjpYSFRNTE1vYmlsZVByb2ZpbGUpOwotI2VuZGlmCi0gICAgfQot
ICAgIC8vIERvY3R5cGUgYWZmZWN0cyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIHN0eWxlc2hl
ZXRzLgotICAgIGNsZWFyU3R5bGVSZXNvbHZlcigpOwotfQotCiBET01JbXBsZW1lbnRhdGlvbiog
RG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKCkKIHsKICAgICBpZiAoIW1faW1wbGVtZW50YXRpb24p
CkBAIC03NzIsMTAgKzc1NSwyOCBAQCBib29sIERvY3VtZW50OjpoYXNNYW5pZmVzdCgpIGNvbnN0
CiAgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpICYmIGRvY3VtZW50RWxlbWVudCgpLT5oYXNU
YWdOYW1lKGh0bWxUYWcpICYmIGRvY3VtZW50RWxlbWVudCgpLT5oYXNBdHRyaWJ1dGUobWFuaWZl
c3RBdHRyKTsKIH0KIAorUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+IERvY3VtZW50Ojpkb2N0eXBl
KCkgY29uc3QKK3sKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5v
ZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChub2RlLT5pc0RvY3VtZW50
VHlwZU5vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1bWVudFR5cGUq
Pihub2RlKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewogICAgIENvbnRhaW5lck5v
ZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogCisgICAgLy8gTk9URTogUGVyIERPTSwgZHlu
YW1pY2FsbHkgaW5zZXJ0aW5nL3JlbW92aW5nIGRvY3R5cGUgbm9kZXMgZG9lc24ndCBhZmZlY3Qg
Y29tcGF0aWJpbGl0eSBtb2RlLgorCisjaWYgRU5BQkxFKExFR0FDWV9WSUVXUE9SVF9BREFQVElP
TikKKyAgICBpZiAoUmVmUHRyPERvY3VtZW50VHlwZT4gZG9jdW1lbnRUeXBlID0gZG9jdHlwZSgp
KSB7CisgICAgICAgIGlmIChkb2N1bWVudFR5cGUtPnB1YmxpY0lkKCkuc3RhcnRzV2l0aCgiLS8v
d2FwZm9ydW0vL2R0ZCB4aHRtbCBtb2JpbGUgMS4iLCAvKiBjYXNlU2Vuc2l0aXZlICovIGZhbHNl
KSkKKyAgICAgICAgICAgIHByb2Nlc3NWaWV3cG9ydCgid2lkdGg9ZGV2aWNlLXdpZHRoLCBoZWln
aHQ9ZGV2aWNlLWhlaWdodCIsIFZpZXdwb3J0QXJndW1lbnRzOjpYSFRNTE1vYmlsZVByb2ZpbGUp
OworICAgIH0KKyNlbmRpZgorCiAgICAgRWxlbWVudCogbmV3RG9jdW1lbnRFbGVtZW50ID0gMDsK
ICAgICBhdXRvIGZpcnN0RWxlbWVudENoaWxkID0gZWxlbWVudENoaWxkcmVuKHRoaXMpLmJlZ2lu
KCk7CiAgICAgaWYgKGZpcnN0RWxlbWVudENoaWxkICE9IGVsZW1lbnRDaGlsZHJlbih0aGlzKS5l
bmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNzdiZWRiZS4uYjljOTk2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTMyNyw3ICszMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWZl
cnJlclBvbGljeShSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSkgeyBtX3JlZmVycmVyUG9s
aWN5ID0gcmVmZXJyZXJQb2xpY3k7IH0KICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGlj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJyZXJQb2xpY3k7IH0KIAotICAgIERvY3VtZW50VHlw
ZSogZG9jdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jVHlwZS5nZXQoKTsgfQorICAgIFBhc3NS
ZWZQdHI8RG9jdW1lbnRUeXBlPiBkb2N0eXBlKCkgY29uc3Q7CiAKICAgICBET01JbXBsZW1lbnRh
dGlvbiogaW1wbGVtZW50YXRpb24oKTsKICAgICAKQEAgLTg4NSw4ICs4ODUsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBpbmNET01UcmVlVmVyc2lvbigpIHsgbV9kb21UcmVlVmVyc2lvbiA9ICsrc19n
bG9iYWxUcmVlVmVyc2lvbjsgfQogICAgIHVpbnQ2NF90IGRvbVRyZWVWZXJzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9kb21UcmVlVmVyc2lvbjsgfQogCi0gICAgdm9pZCBzZXREb2NUeXBlKFBhc3NS
ZWZQdHI8RG9jdW1lbnRUeXBlPik7Ci0KICAgICAvLyBYUGF0aEV2YWx1YXRvciBtZXRob2RzCiAg
ICAgUGFzc1JlZlB0cjxYUGF0aEV4cHJlc3Npb24+IGNyZWF0ZUV4cHJlc3Npb24oY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIsCkBAIC0xMzA2LDcgKzEzMDQsNiBA
QCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fYmFzZVRhcmdldDsKIAotICAgIFJlZlB0cjxEb2N1
bWVudFR5cGU+IG1fZG9jVHlwZTsKICAgICBPd25QdHI8RE9NSW1wbGVtZW50YXRpb24+IG1faW1w
bGVtZW50YXRpb247CiAKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9lbGVtZW50U2hlZXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCmluZGV4IDYxZTYwYmYuLjg0NGJkODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCkBAIC01NiwyOCArNTYsNCBAQCBQYXNzUmVm
UHRyPE5vZGU+IERvY3VtZW50VHlwZTo6Y2xvbmVOb2RlKGJvb2wgLypkZWVwKi8pCiAgICAgcmV0
dXJuIGNyZWF0ZSgmZG9jdW1lbnQoKSwgbV9uYW1lLCBtX3B1YmxpY0lkLCBtX3N5c3RlbUlkKTsK
IH0KIAotTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBEb2N1bWVudFR5cGU6Omlu
c2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKLXsKLSAgICBOb2RlOjpp
bnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmICghaW5zZXJ0aW9uUG9pbnQtPmlu
RG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7Ci0KLSAgICAvLyBPdXIg
ZG9jdW1lbnQgbm9kZSBjYW4gYmUgbnVsbCBpZiB3ZSB3ZXJlIGNyZWF0ZWQgYnkgYSBET01JbXBs
ZW1lbnRhdGlvbi4gIFdlIHVzZSB0aGUgcGFyZW50KCkgaW5zdGVhZC4KLSAgICBBU1NFUlQocGFy
ZW50Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+aXNEb2N1bWVudE5vZGUoKSk7Ci0gICAgaWYgKHBh
cmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzRG9jdW1lbnROb2RlKCkpIHsKLSAgICAgICAg
RG9jdW1lbnQqIGRvYyA9IHRvRG9jdW1lbnQocGFyZW50Tm9kZSgpKTsKLSAgICAgICAgaWYgKCFk
b2MtPmRvY3R5cGUoKSkKLSAgICAgICAgICAgIGRvYy0+c2V0RG9jVHlwZSh0aGlzKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKLX0KLQotdm9pZCBEb2N1bWVudFR5cGU6OnJl
bW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQotewotICAgIGlmIChpbnNl
cnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpJiYgZG9jdW1lbnQoKS5kb2N0eXBlKCkgPT0gdGhpcykK
LSAgICAgICAgZG9jdW1lbnQoKS5zZXREb2NUeXBlKDApOwotICAgIE5vZGU6OnJlbW92ZWRGcm9t
KGluc2VydGlvblBvaW50KTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCmluZGV4
IGM1N2FjMjUuLmUxYzExMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgKQEAgLTU0LDkg
KzU0LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApOwogCi0g
ICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250
YWluZXJOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRh
aW5lck5vZGUqKSBPVkVSUklERTsKLQogICAgIE93blB0cjxOYW1lZE5vZGVNYXA+IG1fZW50aXRp
ZXM7CiAgICAgT3duUHRyPE5hbWVkTm9kZU1hcD4gbV9ub3RhdGlvbnM7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAppbmRleCA4MGQ4MWY3Li5hYzZlMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCkBAIC05MjYsMTEgKzkyNiwxMSBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKERvY3VtZW50ICpkb2N1bWVudCwgY29uc3QgVgog
CiBTdHJpbmcgZG9jdW1lbnRUeXBlU3RyaW5nKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsK
LSAgICBEb2N1bWVudFR5cGUqIGRvY3VtZW50VHlwZSA9IGRvY3VtZW50LmRvY3R5cGUoKTsKKyAg
ICBSZWZQdHI8RG9jdW1lbnRUeXBlPiBkb2N1bWVudFR5cGUgPSBkb2N1bWVudC5kb2N0eXBlKCk7
CiAgICAgaWYgKCFkb2N1bWVudFR5cGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAg
IHJldHVybiBjcmVhdGVNYXJrdXAoZG9jdW1lbnRUeXBlKTsKKyAgICByZXR1cm4gY3JlYXRlTWFy
a3VwKGRvY3VtZW50VHlwZS5nZXQoKSk7CiB9CiAKIFN0cmluZyBjcmVhdGVGdWxsTWFya3VwKGNv
bnN0IE5vZGUqIG5vZGUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>