<?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>12575</bug_id>
          
          <creation_ts>2007-02-04 03:43:41 -0800</creation_ts>
          <short_desc>SVG Links do not show status text on hover</short_desc>
          <delta_ts>2007-02-05 03:31:22 -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>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/Graphics/SVG/Test/20061213/htmlEmbedHarness/full-linking-a-04-t.html</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="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>28668</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-02-04 03:43:41 -0800</bug_when>
    <thetext>SVG Links do not show status text on hover

The referenced URL is one of many examples where this fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28621</commentid>
    <comment_count>1</comment_count>
      <attachid>12914</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-02-04 05:28:40 -0800</bug_when>
    <thetext>Created attachment 12914
The fix (and test case)

It&apos;s a little ugly to add all of these SVG_SUPPORTs into this base code, but it&apos;s following the existing practice from HTML (which special cases various HTML elements).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28620</commentid>
    <comment_count>2</comment_count>
      <attachid>12915</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-02-04 05:56:33 -0800</bug_when>
    <thetext>Created attachment 12915
even cleaner patch (and test case)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27597</commentid>
    <comment_count>3</comment_count>
      <attachid>12915</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-02-04 18:53:04 -0800</bug_when>
    <thetext>Comment on attachment 12915
even cleaner patch (and test case)

+#ifdef SVG_SUPPORT
+    else if (m_innerURLElement-&gt;hasTagName(SVGNames::aTag))
+        return m_innerURLElement-&gt;isLink();
+#endif

No need for else here. The if before ends in a return.

Would be nice if this had a layout test. We could easily add logging of the delegate methods used for status text.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27490</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-02-05 03:31:06 -0800</bug_when>
    <thetext>r19400.

Status text is only part of what changed here.  I coped out and didn&apos;t add the DRT functionality or test.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12914</attachid>
            <date>2007-02-04 05:28:40 -0800</date>
            <delta_ts>2007-02-04 05:56:33 -0800</delta_ts>
            <desc>The fix (and test case)</desc>
            <filename>links.patch</filename>
            <type>text/plain</type>
            <size>8088</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mzk0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMDctMDIt
MDQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBoYW5kIGN1cnNvciBvbiBsaW5rIGhvdmVy
IGZvciBTVkcKKyAgICAgICAgRml4IHN0YXR1cyB0ZXh0IG9uIGxpbmsgaG92ZXIgZm9yIFNWRwor
ICAgICAgICBGaXggdG9vbHRpcHMgb24gbGluayBob3ZlciBmb3IgU1ZHCisgICAgICAgIEZpeCBs
aW5rIGRyYWdnaW5nIGZvciBTVkcKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI1NzUKKyAgICAgICAgCisgICAgICAgIFRlc3Q6IGFkZGVkIG1hbnVhbC10
ZXN0cy9zdmctbGlua3Muc3ZnCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByZXBhcmVNb3VzZUV2ZW50KToKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvc3ZnLWxpbmtzLnN2
ZzogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6dGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFnZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjphYnNvbHV0ZUxpbmtVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dDo6aXNMaXZlTGluayk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojp0aXRsZURp
c3BsYXlTdHJpbmcpOgorCiAyMDA3LTAyLTAzICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgQWRhbS4KSW5kZXg6IGRvbS9Eb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTkzOTEp
CisrKyBkb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzE2LDcgKzE3MTYsNyBA
QCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIERvY3VtZW50OjpwCiAgICAgaWYgKCFyZXF1
ZXN0LnJlYWRvbmx5KQogICAgICAgICB1cGRhdGVSZW5kZXJpbmcoKTsKIAotICAgIGJvb2wgaXNP
dmVyTGluayA9IHJlc3VsdC5VUkxFbGVtZW50KCkgJiYgIXJlc3VsdC5VUkxFbGVtZW50KCktPmdl
dEF0dHJpYnV0ZShocmVmQXR0cikuaXNOdWxsKCk7CisgICAgYm9vbCBpc092ZXJMaW5rID0gcmVz
dWx0LlVSTEVsZW1lbnQoKSAmJiByZXN1bHQuVVJMRWxlbWVudCgpLT5pc0xpbmsoKTsKICAgICBy
ZXR1cm4gTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyhldmVudCwgcmVzdWx0LmlubmVyTm9k
ZSgpLCByZXN1bHQubG9jYWxQb2ludCgpLCByZXN1bHQuc2Nyb2xsYmFyKCksIGlzT3Zlckxpbmsp
OwogfQogCkluZGV4OiBrc3ZnMi9zdmcvU1ZHQUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtz
dmcyL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5MzkxKQorKysga3N2ZzIvc3ZnL1NW
R0FFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTQgKzU0LDE2IEBAIFNWR0FFbGVt
ZW50Ojp+U1ZHQUVsZW1lbnQoKQogCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdB
RWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgVGFyZ2V0LCB0YXJnZXQsIFNWR05hbWVz
Ojp0YXJnZXRBdHRyLmxvY2FsTmFtZSgpLCBtX3RhcmdldCkKIAotdm9pZCBTVkdBRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQordm9pZCBTVkdBRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewotICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUoYXR0ci0+dmFsdWUoKSk7Ci0gICAgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6dGFyZ2V0QXR0cikgewotICAgICAgICBzZXRUYXJnZXRCYXNl
VmFsdWUodmFsdWUpOwotICAgIH0gZWxzZSB7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdO
YW1lczo6dGFyZ2V0QXR0cikKKyAgICAgICAgc2V0VGFyZ2V0QmFzZVZhbHVlKGF0dHItPnZhbHVl
KCkpOworICAgIGVsc2UgewogICAgICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShhdHRyKSkgewotICAgICAgICAgICAgbV9pc0xpbmsgPSBhdHRyLT52YWx1ZSgp
ICE9IDA7CisgICAgICAgICAgICBib29sIHdhc0xpbmsgPSBtX2lzTGluazsKKyAgICAgICAgICAg
IG1faXNMaW5rID0gIWF0dHItPmlzTnVsbCgpOworICAgICAgICAgICAgaWYgKHdhc0xpbmsgIT0g
bV9pc0xpbmspCisgICAgICAgICAgICAgICAgc2V0Q2hhbmdlZCgpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cikpCkluZGV4OiBtYW51YWwtdGVzdHMvc3ZnLWxpbmtzLnN2Zwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBtYW51YWwtdGVzdHMvc3ZnLWxpbmtzLnN2ZwkocmV2aXNpb24gMCkKKysrIG1hbnVhbC10ZXN0
cy9zdmctbGlua3Muc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8c3ZnIHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsnPgorICA8YSB4bGluazpocmVmPSdodHRwOi8vd3d3LmFwcGxlLmNvbScg
eGxpbms6dGl0bGU9J1NVQ0NFU1MgeW91IGdvdCBhIHRvb2x0aXAnPgorICAgIDxyZWN0IHdpZHRo
PScxMDAnIGhlaWdodD0nMTAwJyAvPgorICA8L2E+CisgIDx0ZXh0IHg9JzEwJyB5PScxMjAnPgor
ICAgIFRyeSB0aGUgZm9sbG93aW5nIHdpdGggdGhlIGxpbmsgYWJvdmU6CisgICAgPHRzcGFuIHg9
JzEwJyBkeT0nMjAnPjEuIEhvdmVyIGFuZCBub3RpY2UgdGhlIHN0YXR1cyB0ZXh0IGNoYW5nZTwv
dHNwYW4+CisgICAgPHRzcGFuIHg9JzEwJyBkeT0nMjAnPjIuIEhvdmVyIGFuZCBub3RpY2UgdGhl
IGN1cnNvciBjaGFuZ2UgdG8gYSBoYW5kPC90c3Bhbj4KKyAgICA8dHNwYW4geD0nMTAnIGR5PScy
MCc+My4gSG92ZXIgYW5kIG5vdGljZSBhIHRvb2x0aXAgYXBwZWFyPC90c3Bhbj4KKyAgICA8dHNw
YW4geD0nMTAnIGR5PScyMCc+NC4gRHJhZyB0aGUgbGluayBhbmQgbm90aWNlIGEgYnViYmxlIGFw
cGVhciB3aXRoIHRoZSBjb3JyZWN0IFVSTDwvdHNwYW4+CisgIDwvdGV4dD4KKzwvc3ZnPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9uIDE5
MzkxKQorKysgcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw2ICszOCwxMSBAQAogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiU2VsZWN0
aW9uQ29udHJvbGxlci5oIgogCisjaWZkZWYgU1ZHX1NVUFBPUlQKKyNpbmNsdWRlICJTVkdOYW1l
cy5oIgorI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xNTEsNiArMTU2LDEzIEBAIFN0
cmluZyBIaXRUZXN0UmVzdWx0Ojp0aXRsZSgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoIXRpdGxl
LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdGl0bGU7CiAgICAgICAgIH0KKyNp
ZmRlZiBTVkdfU1VQUE9SVAorICAgICAgICBlbHNlIGlmICh0aXRsZU5vZGUtPmhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmFUYWcpKSB7CisgICAgICAgICAgICBTdHJpbmcgdGl0bGUgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4odGl0bGVOb2RlKS0+Z2V0QXR0cmlidXRlKFhMaW5rTmFtZXM6OnRpdGxlQXR0
cik7CisgICAgICAgICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdGl0bGU7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CkBAIC0yMTUsMTYgKzIyNywxOSBAQCBLVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRl
SW1hZ2VVUkwoKSBjCiAgICAgaWYgKCEobV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCkg
JiYgbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSkpCiAgICAgICAg
IHJldHVybiBLVVJMKCk7CiAKLSAgICBTdHJpbmcgbmFtZTsKKyAgICBBdG9taWNTdHJpbmcgdXJs
U3RyaW5nOwogICAgIGlmIChtX2lubmVyTm9uU2hhcmVkTm9kZS0+aGFzVGFnTmFtZShpbWdUYWcp
IHx8IG1faW5uZXJOb25TaGFyZWROb2RlLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAg
bmFtZSA9ICJzcmMiOworICAgICAgICB1cmxTdHJpbmcgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
bV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpLT5nZXRBdHRyaWJ1dGUoc3JjQXR0cik7CisjaWZk
ZWYgU1ZHX1NVUFBPUlQKKyAgICBlbHNlIGlmIChtX2lubmVyTm9uU2hhcmVkTm9kZS0+aGFzVGFn
TmFtZShTVkdOYW1lczo6aW1hZ2VUYWcpKQorICAgICAgICB1cmxTdHJpbmcgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4obV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpLT5nZXRBdHRyaWJ1dGUoWExp
bmtOYW1lczo6aHJlZkF0dHIpOworI2VuZGlmCiAgICAgZWxzZSBpZiAobV9pbm5lck5vblNoYXJl
ZE5vZGUtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKLSAgICAgICAgbmFtZSA9ICJkYXRhIjsKKyAg
ICAgICAgdXJsU3RyaW5nID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1faW5uZXJOb25TaGFyZWRO
b2RlLmdldCgpKS0+Z2V0QXR0cmlidXRlKGRhdGFBdHRyKTsKICAgICBlbHNlCiAgICAgICAgIHJl
dHVybiBLVVJMKCk7CiAgICAgCi0gICAgcmV0dXJuIEtVUkwobV9pbm5lck5vblNoYXJlZE5vZGUt
PmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHBhcnNlVVJMKAotICAgICAgICBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpLT5nZXRBdHRyaWJ1dGUobmFtZSkp
LmRlcHJlY2F0ZWRTdHJpbmcoKSkpOworICAgIHJldHVybiBLVVJMKG1faW5uZXJOb25TaGFyZWRO
b2RlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChwYXJzZVVSTCh1cmxTdHJpbmcpLmRlcHJlY2F0
ZWRTdHJpbmcoKSkpOwogfQogCiBLVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlTGlua1VSTCgp
IGNvbnN0CkBAIC0yMzIsMTIgKzI0NywxNyBAQCBLVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRl
TGlua1VSTCgpIGNvCiAgICAgaWYgKCEobV9pbm5lclVSTEVsZW1lbnQgJiYgbV9pbm5lclVSTEVs
ZW1lbnQtPmRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm4gS1VSTCgpOwogCi0gICAgaWYgKCEo
bV9pbm5lclVSTEVsZW1lbnQtPmhhc1RhZ05hbWUoYVRhZykgfHwgbV9pbm5lclVSTEVsZW1lbnQt
Pmhhc1RhZ05hbWUoYXJlYVRhZykKLSAgICAgICAgICAgIHx8IG1faW5uZXJVUkxFbGVtZW50LT5o
YXNUYWdOYW1lKGxpbmtUYWcpKSkKKyAgICBBdG9taWNTdHJpbmcgdXJsU3RyaW5nOworICAgIGlm
IChtX2lubmVyVVJMRWxlbWVudC0+aGFzVGFnTmFtZShhVGFnKSB8fCBtX2lubmVyVVJMRWxlbWVu
dC0+aGFzVGFnTmFtZShhcmVhVGFnKSB8fCBtX2lubmVyVVJMRWxlbWVudC0+aGFzVGFnTmFtZShs
aW5rVGFnKSkKKyAgICAgICAgdXJsU3RyaW5nID0gbV9pbm5lclVSTEVsZW1lbnQtPmdldEF0dHJp
YnV0ZShocmVmQXR0cik7CisjaWZkZWYgU1ZHX1NVUFBPUlQKKyAgICBlbHNlIGlmIChtX2lubmVy
VVJMRWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6YVRhZykpCisgICAgICAgIHVybFN0cmlu
ZyA9IG1faW5uZXJVUkxFbGVtZW50LT5nZXRBdHRyaWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0dHIp
OworI2VuZGlmCisgICAgZWxzZQogICAgICAgICByZXR1cm4gS1VSTCgpOwogCi0gICAgcmV0dXJu
IEtVUkwobV9pbm5lclVSTEVsZW1lbnQtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHBhcnNlVVJM
KAotICAgICAgICBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9pbm5lclVSTEVsZW1lbnQuZ2V0KCkp
LT5nZXRBdHRyaWJ1dGUoImhyZWYiKSkuZGVwcmVjYXRlZFN0cmluZygpKSk7CisgICAgcmV0dXJu
IEtVUkwobV9pbm5lclVSTEVsZW1lbnQtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHBhcnNlVVJM
KHVybFN0cmluZykuZGVwcmVjYXRlZFN0cmluZygpKSk7CiB9CiAKIGJvb2wgSGl0VGVzdFJlc3Vs
dDo6aXNMaXZlTGluaygpIGNvbnN0CkBAIC0yNDUsMTkgKzI2NSwzMCBAQCBib29sIEhpdFRlc3RS
ZXN1bHQ6OmlzTGl2ZUxpbmsoKSBjb25zdAogICAgIGlmICghKG1faW5uZXJVUkxFbGVtZW50ICYm
IG1faW5uZXJVUkxFbGVtZW50LT5kb2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKCFtX2lubmVyVVJMRWxlbWVudC0+aGFzVGFnTmFtZShhVGFnKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxBbmNob3JFbGVtZW50
Kj4obV9pbm5lclVSTEVsZW1lbnQuZ2V0KCkpLT5pc0xpdmVMaW5rKCk7CisgICAgaWYgKG1faW5u
ZXJVUkxFbGVtZW50LT5oYXNUYWdOYW1lKGFUYWcpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTEFuY2hvckVsZW1lbnQqPihtX2lubmVyVVJMRWxlbWVudC5nZXQoKSktPmlzTGl2ZUxp
bmsoKTsKKyNpZmRlZiBTVkdfU1VQUE9SVAorICAgIGVsc2UgaWYgKG1faW5uZXJVUkxFbGVtZW50
LT5oYXNUYWdOYW1lKFNWR05hbWVzOjphVGFnKSkKKyAgICAgICAgcmV0dXJuIG1faW5uZXJVUkxF
bGVtZW50LT5pc0xpbmsoKTsKKyNlbmRpZgorICAgIAorICAgIHJldHVybiBmYWxzZTsKIH0KIAog
U3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnRpdGxlRGlzcGxheVN0cmluZygpIGNvbnN0CiB7Ci0gICAg
aWYgKCEobV9pbm5lclVSTEVsZW1lbnQgJiYgbV9pbm5lclVSTEVsZW1lbnQtPmlzSFRNTEVsZW1l
bnQoKSkpCisgICAgaWYgKCFtX2lubmVyVVJMRWxlbWVudCkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotCi0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVu
dCo+KG1faW5uZXJVUkxFbGVtZW50LmdldCgpKTsKLSAgICByZXR1cm4gZGlzcGxheVN0cmluZyhl
bGVtZW50LT50aXRsZSgpLCBlbGVtZW50KTsKKyAgICAKKyAgICBTdHJpbmcgdGl0bGU7CisgICAg
aWYgKG1faW5uZXJVUkxFbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpCisgICAgICAgIHRpdGxlID0g
c3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihtX2lubmVyVVJMRWxlbWVudC5nZXQoKSktPnRpdGxl
KCk7CisjaWZkZWYgU1ZHX1NVUFBPUlQKKyAgICBlbHNlIGlmIChtX2lubmVyVVJMRWxlbWVudC0+
aGFzVGFnTmFtZShTVkdOYW1lczo6YVRhZykpCisgICAgICAgIHRpdGxlID0gbV9pbm5lclVSTEVs
ZW1lbnQtPmdldEF0dHJpYnV0ZShYTGlua05hbWVzOjp0aXRsZUF0dHIpOworI2VuZGlmCisgICAg
CisgICAgcmV0dXJuIGRpc3BsYXlTdHJpbmcodGl0bGUsIG1faW5uZXJVUkxFbGVtZW50LmdldCgp
KTsKIH0KIAogU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnRleHRDb250ZW50KCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12915</attachid>
            <date>2007-02-04 05:56:33 -0800</date>
            <delta_ts>2007-02-04 18:53:04 -0800</delta_ts>
            <desc>even cleaner patch (and test case)</desc>
            <filename>cleaner.patch</filename>
            <type>text/plain</type>
            <size>12765</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mzk0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMDctMDIt
MDQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBoYW5kIGN1cnNvciBvbiBsaW5rIGhvdmVy
IGZvciBTVkcKKyAgICAgICAgRml4IHN0YXR1cyB0ZXh0IG9uIGxpbmsgaG92ZXIgZm9yIFNWRwor
ICAgICAgICBGaXggdG9vbHRpcHMgb24gbGluayBob3ZlciBmb3IgU1ZHCisgICAgICAgIEZpeCBs
aW5rIGRyYWdnaW5nIGZvciBTVkcKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI1NzUKKyAgICAgICAgCisgICAgICAgIFRlc3Q6IGFkZGVkIG1hbnVhbC10
ZXN0cy9zdmctbGlua3Muc3ZnCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByZXBhcmVNb3VzZUV2ZW50KToKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp0aXRsZSk6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRJZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6dGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldFRpdGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRMYW5nKToKKyAgICAgICAgKiBo
dG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0FFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50Ojp0aXRsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdBRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBtYW51YWwt
dGVzdHMvc3ZnLWxpbmtzLnN2ZzogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6dGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFnZVVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUxpbmtVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdDo6aXNMaXZlTGluayk6CisgICAgICAgIChXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0Ojp0aXRsZURpc3BsYXlTdHJpbmcpOgorCisKIDIwMDctMDItMDMgIE1hY2llaiBT
dGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBB
ZGFtLgpJbmRleDogZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiAxOTM5MSkKKysrIGRvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3MTYsNyArMTcxNiw3IEBAIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgRG9jdW1l
bnQ6OnAKICAgICBpZiAoIXJlcXVlc3QucmVhZG9ubHkpCiAgICAgICAgIHVwZGF0ZVJlbmRlcmlu
ZygpOwogCi0gICAgYm9vbCBpc092ZXJMaW5rID0gcmVzdWx0LlVSTEVsZW1lbnQoKSAmJiAhcmVz
dWx0LlVSTEVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKGhyZWZBdHRyKS5pc051bGwoKTsKKyAgICBi
b29sIGlzT3ZlckxpbmsgPSByZXN1bHQuVVJMRWxlbWVudCgpICYmIHJlc3VsdC5VUkxFbGVtZW50
KCktPmlzTGluaygpOwogICAgIHJldHVybiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzKGV2
ZW50LCByZXN1bHQuaW5uZXJOb2RlKCksIHJlc3VsdC5sb2NhbFBvaW50KCksIHJlc3VsdC5zY3Jv
bGxiYXIoKSwgaXNPdmVyTGluayk7CiB9CiAKSW5kZXg6IGRvbS9FbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBkb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5MzkxKQorKysgZG9tL0VsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDcsNyArOTQ3LDcgQEAgU3RyaW5nIEVsZW1lbnQ6Om91
dGVyVGV4dCgpIGNvbnN0CiAKIFN0cmluZyBFbGVtZW50Ojp0aXRsZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOworICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
IAogfQpJbmRleDogZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vRWxlbWVudC5oCShy
ZXZpc2lvbiAxOTM5MSkKKysrIGRvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw3
ICsxNzMsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGlubmVyVGV4dCgpIGNvbnN0OwogICAgIFN0
cmluZyBvdXRlclRleHQoKSBjb25zdDsKICAKLSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZUF0dHJpYnV0ZU1hcCgpIGNvbnN0OwpJbmRleDogaHRtbC9IVE1MRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5Mzkx
KQorKysgaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwOSwxMiArNjA5
LDE3IEBAIFN0cmluZyBIVE1MRWxlbWVudDo6aWQoKSBjb25zdAogICAgIHJldHVybiBnZXRBdHRy
aWJ1dGUoaWRBdHRyKTsKIH0KIAotdm9pZCBIVE1MRWxlbWVudDo6c2V0SWQoY29uc3QgU3RyaW5n
ICZ2YWx1ZSkKK3ZvaWQgSFRNTEVsZW1lbnQ6OnNldElkKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
CiAgICAgc2V0QXR0cmlidXRlKGlkQXR0ciwgdmFsdWUpOwogfQogCi12b2lkIEhUTUxFbGVtZW50
OjpzZXRUaXRsZShjb25zdCBTdHJpbmcgJnZhbHVlKQorU3RyaW5nIEhUTUxFbGVtZW50Ojp0aXRs
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOworfQorCit2
b2lkIEhUTUxFbGVtZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIHNl
dEF0dHJpYnV0ZSh0aXRsZUF0dHIsIHZhbHVlKTsKIH0KQEAgLTYyNCw3ICs2MjksNyBAQCBTdHJp
bmcgSFRNTEVsZW1lbnQ6OmxhbmcoKSBjb25zdAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUobGFu
Z0F0dHIpOwogfQogCi12b2lkIEhUTUxFbGVtZW50OjpzZXRMYW5nKGNvbnN0IFN0cmluZyAmdmFs
dWUpCit2b2lkIEhUTUxFbGVtZW50OjpzZXRMYW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgc2V0QXR0cmlidXRlKGxhbmdBdHRyLCB2YWx1ZSk7CiB9CkluZGV4OiBodG1sL0hUTUxFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gaHRtbC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiAxOTM5MSkK
KysrIGh0bWwvSFRNTEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgU3RyaW5nIGlkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJZChjb25z
dCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OwogICAgIHZvaWQg
c2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGxhbmcoKSBjb25zdDsKICAgICB2
b2lkIHNldExhbmcoY29uc3QgU3RyaW5nJik7CkluZGV4OiBrc3ZnMi9zdmcvU1ZHQUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5
MzkxKQorKysga3N2ZzIvc3ZnL1NWR0FFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAiWExpbmtO
YW1lcy5oIgogI2luY2x1ZGUgImNzc2hlbHBlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01MiwxNiArNTMsMjMgQEAgU1ZHQUVsZW1lbnQ6On5TVkdBRWxlbWVudCgpCiB7CiB9CiAKK1N0
cmluZyBTVkdBRWxlbWVudDo6dGl0bGUoKSBjb25zdAoreworICAgIHJldHVybiBnZXRBdHRyaWJ1
dGUoWExpbmtOYW1lczo6dGl0bGVBdHRyKTsKK30KKwogQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHQUVsZW1lbnQsIFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIFRhcmdldCwgdGFyZ2V0
LCBTVkdOYW1lczo6dGFyZ2V0QXR0ci5sb2NhbE5hbWUoKSwgbV90YXJnZXQpCiAKLXZvaWQgU1ZH
QUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKK3Zv
aWQgU1ZHQUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0
cikKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKGF0dHItPnZhbHVlKCkpOwotICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnRhcmdldEF0dHIpIHsKLSAgICAgICAgc2V0
VGFyZ2V0QmFzZVZhbHVlKHZhbHVlKTsKLSAgICB9IGVsc2UgeworICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OnRhcmdldEF0dHIpCisgICAgICAgIHNldFRhcmdldEJhc2VWYWx1ZShh
dHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlIHsKICAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpIHsKLSAgICAgICAgICAgIG1faXNMaW5rID0gYXR0
ci0+dmFsdWUoKSAhPSAwOworICAgICAgICAgICAgYm9vbCB3YXNMaW5rID0gbV9pc0xpbms7Cisg
ICAgICAgICAgICBtX2lzTGluayA9ICFhdHRyLT5pc051bGwoKTsKKyAgICAgICAgICAgIGlmICh3
YXNMaW5rICE9IG1faXNMaW5rKQorICAgICAgICAgICAgICAgIHNldENoYW5nZWQoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKGF0dHIpKQpAQCAtNzksMTEgKzg3LDExIEBAIFJlbmRlck9iamVjdCogU1ZH
QUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmUKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZH
Q29udGFpbmVyKHRoaXMpOwogfQogCi12b2lkIFNWR0FFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50ICpldnQpCit2b2lkIFNWR0FFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldnQpCiB7CiAgICAgLy8gVE9ETyA6IHNob3VsZCB1c2UgQ0xJQ0sgaW5zdGVhZAogICAg
IGlmICgoZXZ0LT50eXBlKCkgPT0gRXZlbnROYW1lczo6bW91c2V1cEV2ZW50ICYmIG1faXNMaW5r
KSkgewotICAgICAgICBNb3VzZUV2ZW50ICplID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2
dCk7CisgICAgICAgIE1vdXNlRXZlbnQqIGUgPSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZ0
KTsKIAogICAgICAgICBpZiAoZSAmJiBlLT5idXR0b24oKSA9PSAyKSB7CiAgICAgICAgICAgICBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldnQpOwpJ
bmRleDoga3N2ZzIvc3ZnL1NWR0FFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NW
R0FFbGVtZW50LmgJKHJldmlzaW9uIDE5MzkxKQorKysga3N2ZzIvc3ZnL1NWR0FFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBTVkdBRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAg
ICAgdmlydHVhbCB+U1ZHQUVsZW1lbnQoKTsKIAotICAgICAgICAvLyAnU1ZHQUVsZW1lbnQnIGZ1
bmN0aW9ucwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNW
R1Rlc3RzOjppc1ZhbGlkKCk7IH0KKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIHRp
dGxlKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSAqYXR0cik7CiAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdUaXRsZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxOTM5MSkKKysrIGtzdmcyL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxMSArMzMsNiBAQCBTVkdUaXRsZUVsZW1lbnQ6OlNWR1RpdGxlRWxlbWVudChj
b25zdCBRCiB7CiB9CiAKLVN0cmluZyBTVkdUaXRsZUVsZW1lbnQ6OnRpdGxlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gdGV4dENvbnRlbnQoKTsKLX0KLQogdm9pZCBTVkdUaXRsZUVsZW1lbnQ6Omlu
c2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjppbnNlcnRlZElu
dG9Eb2N1bWVudCgpOwpJbmRleDoga3N2ZzIvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGtzdmcyL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaAkocmV2aXNpb24gMTkzOTEpCisrKyBr
c3ZnMi9zdmcvU1ZHVGl0bGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1RpdGxlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgICAgICBTdHJpbmcgdGl0
bGUoKSBjb25zdDsKLQogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpOwpJbmRleDogbWFudWFsLXRlc3RzL3N2Zy1s
aW5rcy5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gbWFudWFsLXRlc3RzL3N2Zy1saW5rcy5zdmcJKHJldmlz
aW9uIDApCisrKyBtYW51YWwtdGVzdHMvc3ZnLWxpbmtzLnN2ZwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMiBAQAorPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5z
OnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJz4KKyAgPGEgeGxpbms6aHJlZj0n
aHR0cDovL3d3dy5hcHBsZS5jb20nIHhsaW5rOnRpdGxlPSdTVUNDRVNTIHlvdSBnb3QgYSB0b29s
dGlwJz4KKyAgICA8cmVjdCB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCcgLz4KKyAgPC9hPgorICA8
dGV4dCB4PScxMCcgeT0nMTIwJz4KKyAgICBUcnkgdGhlIGZvbGxvd2luZyB3aXRoIHRoZSBsaW5r
IGFib3ZlOgorICAgIDx0c3BhbiB4PScxMCcgZHk9JzIwJz4xLiBIb3ZlciBhbmQgbm90aWNlIHRo
ZSBzdGF0dXMgdGV4dCBjaGFuZ2U8L3RzcGFuPgorICAgIDx0c3BhbiB4PScxMCcgZHk9JzIwJz4y
LiBIb3ZlciBhbmQgbm90aWNlIHRoZSBjdXJzb3IgY2hhbmdlIHRvIGEgaGFuZDwvdHNwYW4+Cisg
ICAgPHRzcGFuIHg9JzEwJyBkeT0nMjAnPjMuIEhvdmVyIGFuZCBub3RpY2UgYSB0b29sdGlwIGFw
cGVhcjwvdHNwYW4+CisgICAgPHRzcGFuIHg9JzEwJyBkeT0nMjAnPjQuIERyYWcgdGhlIGxpbmsg
YW5kIG5vdGljZSBhIGJ1YmJsZSBhcHBlYXIgd2l0aCB0aGUgY29ycmVjdCBVUkw8L3RzcGFuPgor
ICA8L3RleHQ+Cis8L3N2Zz4KSW5kZXg6IHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9uIDE5MzkxKQor
KysgcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCwxMSBAQAogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29u
dHJvbGxlci5oIgogCisjaWZkZWYgU1ZHX1NVUFBPUlQKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgor
I2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xNDUsOSArMTUwLDggQEAgU3RyaW5nIEhp
dFRlc3RSZXN1bHQ6OnRpdGxlKCkgY29uc3QKICAgICAvLyBGaW5kIHRoZSB0aXRsZSBpbiB0aGUg
bmVhcmVzdCBlbmNsb3NpbmcgRE9NIG5vZGUuCiAgICAgLy8gRm9yIDxhcmVhPiB0YWdzIGluIGlt
YWdlIG1hcHMsIHdhbGsgdGhlIHRyZWUgZm9yIHRoZSA8YXJlYT4sIG5vdCB0aGUgPGltZz4gdXNp
bmcgaXQuCiAgICAgZm9yIChOb2RlKiB0aXRsZU5vZGUgPSBtX2lubmVyTm9kZS5nZXQoKTsgdGl0
bGVOb2RlOyB0aXRsZU5vZGUgPSB0aXRsZU5vZGUtPnBhcmVudE5vZGUoKSkgewotICAgICAgICBp
ZiAodGl0bGVOb2RlLT5pc0hUTUxFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIEhUTUxFbGVtZW50
KiB0aXRsZUhUTUxOb2RlID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPih0aXRsZU5vZGUpOwot
ICAgICAgICAgICAgU3RyaW5nIHRpdGxlID0gdGl0bGVIVE1MTm9kZS0+dGl0bGUoKTsKKyAgICAg
ICAgaWYgKHRpdGxlTm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAgICAgICBTdHJpbmcg
dGl0bGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4odGl0bGVOb2RlKS0+dGl0bGUoKTsKICAgICAg
ICAgICAgIGlmICghdGl0bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0aXRs
ZTsKICAgICAgICAgfQpAQCAtMjE1LDE2ICsyMTksMTkgQEAgS1VSTCBIaXRUZXN0UmVzdWx0Ojph
YnNvbHV0ZUltYWdlVVJMKCkgYwogICAgIGlmICghKG1faW5uZXJOb25TaGFyZWROb2RlLT5yZW5k
ZXJlcigpICYmIG1faW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpKQog
ICAgICAgICByZXR1cm4gS1VSTCgpOwogCi0gICAgU3RyaW5nIG5hbWU7CisgICAgQXRvbWljU3Ry
aW5nIHVybFN0cmluZzsKICAgICBpZiAobV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc1RhZ05hbWUo
aW1nVGFnKSB8fCBtX2lubmVyTm9uU2hhcmVkTm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykpCi0g
ICAgICAgIG5hbWUgPSAic3JjIjsKKyAgICAgICAgdXJsU3RyaW5nID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKS0+Z2V0QXR0cmlidXRlKHNyY0F0dHIp
OworI2lmZGVmIFNWR19TVVBQT1JUCisgICAgZWxzZSBpZiAobV9pbm5lck5vblNoYXJlZE5vZGUt
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmltYWdlVGFnKSkKKyAgICAgICAgdXJsU3RyaW5nID0gc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKS0+Z2V0QXR0cmli
dXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKKyNlbmRpZgogICAgIGVsc2UgaWYgKG1faW5uZXJO
b25TaGFyZWROb2RlLT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAgICAgIG5hbWUgPSAiZGF0
YSI7CisgICAgICAgIHVybFN0cmluZyA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX2lubmVyTm9u
U2hhcmVkTm9kZS5nZXQoKSktPmdldEF0dHJpYnV0ZShkYXRhQXR0cik7CiAgICAgZWxzZQogICAg
ICAgICByZXR1cm4gS1VSTCgpOwogICAgIAotICAgIHJldHVybiBLVVJMKG1faW5uZXJOb25TaGFy
ZWROb2RlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChwYXJzZVVSTCgKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKS0+Z2V0QXR0cmlidXRl
KG5hbWUpKS5kZXByZWNhdGVkU3RyaW5nKCkpKTsKKyAgICByZXR1cm4gS1VSTChtX2lubmVyTm9u
U2hhcmVkTm9kZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwocGFyc2VVUkwodXJsU3RyaW5nKS5k
ZXByZWNhdGVkU3RyaW5nKCkpKTsKIH0KIAogS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUxp
bmtVUkwoKSBjb25zdApAQCAtMjMyLDEyICsyMzksMTcgQEAgS1VSTCBIaXRUZXN0UmVzdWx0Ojph
YnNvbHV0ZUxpbmtVUkwoKSBjbwogICAgIGlmICghKG1faW5uZXJVUkxFbGVtZW50ICYmIG1faW5u
ZXJVUkxFbGVtZW50LT5kb2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuIEtVUkwoKTsKIAotICAg
IGlmICghKG1faW5uZXJVUkxFbGVtZW50LT5oYXNUYWdOYW1lKGFUYWcpIHx8IG1faW5uZXJVUkxF
bGVtZW50LT5oYXNUYWdOYW1lKGFyZWFUYWcpCi0gICAgICAgICAgICB8fCBtX2lubmVyVVJMRWxl
bWVudC0+aGFzVGFnTmFtZShsaW5rVGFnKSkpCisgICAgQXRvbWljU3RyaW5nIHVybFN0cmluZzsK
KyAgICBpZiAobV9pbm5lclVSTEVsZW1lbnQtPmhhc1RhZ05hbWUoYVRhZykgfHwgbV9pbm5lclVS
TEVsZW1lbnQtPmhhc1RhZ05hbWUoYXJlYVRhZykgfHwgbV9pbm5lclVSTEVsZW1lbnQtPmhhc1Rh
Z05hbWUobGlua1RhZykpCisgICAgICAgIHVybFN0cmluZyA9IG1faW5uZXJVUkxFbGVtZW50LT5n
ZXRBdHRyaWJ1dGUoaHJlZkF0dHIpOworI2lmZGVmIFNWR19TVVBQT1JUCisgICAgZWxzZSBpZiAo
bV9pbm5lclVSTEVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFUYWcpKQorICAgICAgICB1
cmxTdHJpbmcgPSBtX2lubmVyVVJMRWxlbWVudC0+Z2V0QXR0cmlidXRlKFhMaW5rTmFtZXM6Omhy
ZWZBdHRyKTsKKyNlbmRpZgorICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEtVUkwoKTsKIAotICAg
IHJldHVybiBLVVJMKG1faW5uZXJVUkxFbGVtZW50LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChw
YXJzZVVSTCgKLSAgICAgICAgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1faW5uZXJVUkxFbGVtZW50
LmdldCgpKS0+Z2V0QXR0cmlidXRlKCJocmVmIikpLmRlcHJlY2F0ZWRTdHJpbmcoKSkpOworICAg
IHJldHVybiBLVVJMKG1faW5uZXJVUkxFbGVtZW50LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChw
YXJzZVVSTCh1cmxTdHJpbmcpLmRlcHJlY2F0ZWRTdHJpbmcoKSkpOwogfQogCiBib29sIEhpdFRl
c3RSZXN1bHQ6OmlzTGl2ZUxpbmsoKSBjb25zdApAQCAtMjQ1LDE5ICsyNTcsMjIgQEAgYm9vbCBI
aXRUZXN0UmVzdWx0Ojppc0xpdmVMaW5rKCkgY29uc3QKICAgICBpZiAoIShtX2lubmVyVVJMRWxl
bWVudCAmJiBtX2lubmVyVVJMRWxlbWVudC0+ZG9jdW1lbnQoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmICghbV9pbm5lclVSTEVsZW1lbnQtPmhhc1RhZ05hbWUoYVRhZykpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQW5jaG9y
RWxlbWVudCo+KG1faW5uZXJVUkxFbGVtZW50LmdldCgpKS0+aXNMaXZlTGluaygpOworICAgIGlm
IChtX2lubmVyVVJMRWxlbWVudC0+aGFzVGFnTmFtZShhVGFnKSkKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEhUTUxBbmNob3JFbGVtZW50Kj4obV9pbm5lclVSTEVsZW1lbnQuZ2V0KCkpLT5p
c0xpdmVMaW5rKCk7CisjaWZkZWYgU1ZHX1NVUFBPUlQKKyAgICBlbHNlIGlmIChtX2lubmVyVVJM
RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6YVRhZykpCisgICAgICAgIHJldHVybiBtX2lu
bmVyVVJMRWxlbWVudC0+aXNMaW5rKCk7CisjZW5kaWYKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIFN0cmluZyBIaXRUZXN0UmVzdWx0Ojp0aXRsZURpc3BsYXlTdHJpbmcoKSBjb25zdAog
ewotICAgIGlmICghKG1faW5uZXJVUkxFbGVtZW50ICYmIG1faW5uZXJVUkxFbGVtZW50LT5pc0hU
TUxFbGVtZW50KCkpKQorICAgIGlmICghbV9pbm5lclVSTEVsZW1lbnQpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLQotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRN
TEVsZW1lbnQqPihtX2lubmVyVVJMRWxlbWVudC5nZXQoKSk7Ci0gICAgcmV0dXJuIGRpc3BsYXlT
dHJpbmcoZWxlbWVudC0+dGl0bGUoKSwgZWxlbWVudCk7CisgICAgCisgICAgcmV0dXJuIGRpc3Bs
YXlTdHJpbmcobV9pbm5lclVSTEVsZW1lbnQtPnRpdGxlKCksIG1faW5uZXJVUkxFbGVtZW50Lmdl
dCgpKTsKIH0KIAogU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnRleHRDb250ZW50KCkgY29uc3QK
</data>
<flag name="review"
          id="4970"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>