<?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>28680</bug_id>
          
          <creation_ts>2009-08-24 12:07:08 -0700</creation_ts>
          <short_desc>WebInspector: Simplify findTreeElement code, get rid of potential infinite loop.</short_desc>
          <delta_ts>2009-08-24 13:27:34 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>142360</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-08-24 12:07:08 -0700</bug_when>
    <thetext>Currently searching for inline node text can lead to infinite loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142361</commentid>
    <comment_count>1</comment_count>
      <attachid>38490</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-08-24 12:09:26 -0700</bug_when>
    <thetext>Created attachment 38490
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142363</commentid>
    <comment_count>2</comment_count>
      <attachid>38491</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-08-24 12:19:19 -0700</bug_when>
    <thetext>Created attachment 38491
oops - brought isDescendant back (deleted too much).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142392</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-08-24 13:27:34 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/front-end/ElementsPanel.js
	M	WebCore/inspector/front-end/ElementsTreeOutline.js
	M	WebCore/inspector/front-end/treeoutline.js
	M	WebCore/inspector/front-end/utilities.js
Committed r47725</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38490</attachid>
            <date>2009-08-24 12:09:26 -0700</date>
            <delta_ts>2009-08-24 12:19:19 -0700</delta_ts>
            <desc>patch</desc>
            <filename>find_element</filename>
            <type>text/plain</type>
            <size>9549</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTc3MmU3Yy4uZTU3ZmY5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwyNSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IFRp
bW90aHkgSGF0Y2hlci4KIAorICAgICAgICBXZWJJbnNwZWN0b3I6IFNpbXBsaWZ5IGZpbmRUcmVl
RWxlbWVudCBjb2RlLCBnZXQgcmlkIG9mIHBvdGVudGlhbCBpbmZpbml0ZSBsb29wLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODY4MAorCisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnVwZGF0ZUJyZWFkY3J1bWIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZS5maW5kVHJlZUVs
ZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanM6Cisg
ICAgICAgIChUcmVlT3V0bGluZS5wcm90b3R5cGUuZ2V0Q2FjaGVkVHJlZUVsZW1lbnQpOgorICAg
ICAgICAoVHJlZU91dGxpbmUucHJvdG90eXBlLmZpbmRUcmVlRWxlbWVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanM6CisgICAgICAgIChpc0FuY2VzdG9yTm9k
ZSk6CisgICAgICAgICgpOgorCisyMDA5LTA4LTI0ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKwog
ICAgICAgICBXZWJJbnNwZWN0b3I6IE9ubHkgZXhwYW5kIGxvY2FsIHNjb3BlIHdoZW4gaGl0dGlu
ZyB0aGUgYnJlYWsKIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjg2NzgKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwu
anMKaW5kZXggYjI2YWIyZi4uZGI0ZTM0YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzUGFuZWwuanMKQEAgLTU5Niw3ICs1OTYsNyBAQCBXZWJJbnNwZWN0b3IuRWxl
bWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBmb3VuZFJvb3Qg
PSBmYWxzZTsKLSAgICAgICAgZm9yICh2YXIgY3VycmVudCA9IHRoaXMuZm9jdXNlZERPTU5vZGU7
IGN1cnJlbnQ7IGN1cnJlbnQgPSBwYXJlbnROb2RlT3JGcmFtZUVsZW1lbnQoY3VycmVudCkpIHsK
KyAgICAgICAgZm9yICh2YXIgY3VycmVudCA9IHRoaXMuZm9jdXNlZERPTU5vZGU7IGN1cnJlbnQ7
IGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudE5vZGUpIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50
Lm5vZGVUeXBlID09PSBOb2RlLkRPQ1VNRU5UX05PREUpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Ry
ZWVPdXRsaW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91
dGxpbmUuanMKaW5kZXggMzQ1YTA4NC4uYTU1NTQ3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTEzOCwxNyArMTM4LDEy
IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKIAogICAg
IGZvY3VzZWROb2RlQ2hhbmdlZDogZnVuY3Rpb24oZm9yY2VVcGRhdGUpIHt9LAogCi0gICAgZmlu
ZFRyZWVFbGVtZW50OiBmdW5jdGlvbihub2RlLCBpc0FuY2VzdG9yLCBnZXRQYXJlbnQpCisgICAg
ZmluZFRyZWVFbGVtZW50OiBmdW5jdGlvbihub2RlKQogICAgIHsKLSAgICAgICAgaWYgKHR5cGVv
ZiBpc0FuY2VzdG9yID09PSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgIGlzQW5jZXN0b3IgPSBp
c0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVzOwotICAgICAgICBpZiAodHlwZW9mIGdldFBh
cmVudCA9PT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICBnZXRQYXJlbnQgPSBwYXJlbnROb2Rl
T3JGcmFtZUVsZW1lbnQ7Ci0KLSAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gVHJlZU91dGxpbmUu
cHJvdG90eXBlLmZpbmRUcmVlRWxlbWVudC5jYWxsKHRoaXMsIG5vZGUsIGlzQW5jZXN0b3IsIGdl
dFBhcmVudCk7CisgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IFRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5maW5kVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBub2RlLCBpc0FuY2VzdG9yTm9kZSwgcGFyZW50
Tm9kZSk7CiAgICAgICAgIGlmICghdHJlZUVsZW1lbnQgJiYgbm9kZS5ub2RlVHlwZSA9PT0gTm9k
ZS5URVhUX05PREUpIHsKICAgICAgICAgICAgIC8vIFRoZSB0ZXh0IG5vZGUgbWlnaHQgaGF2ZSBi
ZWVuIGlubGluZWQgaWYgaXQgd2FzIHNob3J0LCBzbyB0cnkgdG8gZmluZCB0aGUgcGFyZW50IGVs
ZW1lbnQuCi0gICAgICAgICAgICB0cmVlRWxlbWVudCA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5m
aW5kVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBub2RlLnBhcmVudE5vZGUsIGlzQW5jZXN0b3IsIGdl
dFBhcmVudCk7CisgICAgICAgICAgICB0cmVlRWxlbWVudCA9IFRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5maW5kVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBub2RlLnBhcmVudE5vZGUsIGlzQW5jZXN0b3JO
b2RlLCBwYXJlbnROb2RlKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0cmVlRWxlbWVu
dDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcwppbmRleCA2N2Yz
NWMyLi5lY2MzMjJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdHJl
ZW91dGxpbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5l
LmpzCkBAIC0yNDksNyArMjQ5LDcgQEAgVHJlZU91dGxpbmUucHJvdG90eXBlLl9mb3JnZXRDaGls
ZHJlblJlY3Vyc2l2ZSA9IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQpCiAgICAgfQogfQogCi1UcmVl
T3V0bGluZS5wcm90b3R5cGUuZmluZFRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRP
YmplY3QsIGlzQW5jZXN0b3IsIGdldFBhcmVudCkKK1RyZWVPdXRsaW5lLnByb3RvdHlwZS5nZXRD
YWNoZWRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogewogICAgIGlm
ICghcmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgIHJldHVybiBudWxsOwpAQCAtMjY0LDEwICsy
NjQsMTggQEAgVHJlZU91dGxpbmUucHJvdG90eXBlLmZpbmRUcmVlRWxlbWVudCA9IGZ1bmN0aW9u
KHJlcHJlc2VudGVkT2JqZWN0LCBpc0FuY2VzdG9yLAogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZWxlbWVudHNbaV07CiAgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIG51bGw7Cit9CiAK
LSAgICBpZiAoIWlzQW5jZXN0b3IgfHwgIShpc0FuY2VzdG9yIGluc3RhbmNlb2YgRnVuY3Rpb24p
IHx8ICFnZXRQYXJlbnQgfHwgIShnZXRQYXJlbnQgaW5zdGFuY2VvZiBGdW5jdGlvbikpCitUcmVl
T3V0bGluZS5wcm90b3R5cGUuZmluZFRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRP
YmplY3QsIGlzQW5jZXN0b3IsIGdldFBhcmVudCkKK3sKKyAgICBpZiAoIXJlcHJlc2VudGVkT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gbnVsbDsKIAorICAgIHZhciBjYWNoZWRFbGVtZW50ID0gdGhp
cy5nZXRDYWNoZWRUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCk7CisgICAgaWYgKGNhY2hl
ZEVsZW1lbnQpCisgICAgICAgIHJldHVybiBjYWNoZWRFbGVtZW50OworCiAgICAgLy8gVGhlIHJl
cHJlc2VudGVkT2JqZWN0IGlzbid0IGtub3csIHNvIHdlIHN0YXJ0IGF0IHRoZSB0b3Agb2YgdGhl
IHRyZWUgYW5kIHdvcmsgZG93biB0byBmaW5kIHRoZSBmaXJzdAogICAgIC8vIHRyZWUgZWxlbWVu
dCB0aGF0IHJlcHJlc2VudHMgcmVwcmVzZW50ZWRPYmplY3Qgb3Igb25lIG9mIGl0cyBhbmNlc3Rv
cnMuCiAgICAgdmFyIGl0ZW07CkBAIC0zMDcsOSArMzE1LDcgQEAgVHJlZU91dGxpbmUucHJvdG90
eXBlLmZpbmRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBpc0FuY2Vz
dG9yLAogICAgICAgICAgICAgaXRlbS5vbnBvcHVsYXRlKGl0ZW0pOwogICAgIH0KIAotICAgIC8v
IE5vdyB0aGF0IGFsbCB0aGUgYW5jZXN0b3JzIGFyZSBwb3B1bGF0ZWQsIHRyeSB0byBmaW5kIHRo
ZSByZXByZXNlbnRlZE9iamVjdCBhZ2Fpbi4gVGhpcyB0aW1lCi0gICAgLy8gd2l0aG91dCB0aGUg
aXNBbmNlc3RvciBhbmQgZ2V0UGFyZW50IGZ1bmN0aW9ucyB0byBwcmV2ZW50IGFuIGluZmluaXRl
IHJlY3Vyc2lvbiBpZiBpdCBpc24ndCBmb3VuZC4KLSAgICByZXR1cm4gdGhpcy5maW5kVHJlZUVs
ZW1lbnQocmVwcmVzZW50ZWRPYmplY3QpOworICAgIHJldHVybiB0aGlzLmdldENhY2hlZFRyZWVF
bGVtZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKIH0KIAogVHJlZU91dGxpbmUucHJvdG90eXBlLnRy
ZWVFbGVtZW50RnJvbVBvaW50ID0gZnVuY3Rpb24oeCwgeSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvdXRpbGl0aWVzLmpzCmluZGV4IGU2MGFmNDIuLjdmNmViYzIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpAQCAtMzE3LDEyICszMTcsNyBAQCBFbGVtZW50
LnByb3RvdHlwZS5maXJzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNlID0gZmlyc3RDaGlsZFNraXBw
aW5nV2hpdGVzcGFjZTsKIEVsZW1lbnQucHJvdG90eXBlLmxhc3RDaGlsZFNraXBwaW5nV2hpdGVz
cGFjZSA9IGxhc3RDaGlsZFNraXBwaW5nV2hpdGVzcGFjZTsKIAogTm9kZS5wcm90b3R5cGUuaXNX
aGl0ZXNwYWNlID0gaXNOb2RlV2hpdGVzcGFjZTsKLU5vZGUucHJvdG90eXBlLm5vZGVUeXBlTmFt
ZSA9IG5vZGVUeXBlTmFtZTsKIE5vZGUucHJvdG90eXBlLmRpc3BsYXlOYW1lID0gbm9kZURpc3Bs
YXlOYW1lOwotTm9kZS5wcm90b3R5cGUuY29udGVudFByZXZpZXcgPSBub2RlQ29udGVudFByZXZp
ZXc7Ci1Ob2RlLnByb3RvdHlwZS5pc0FuY2VzdG9yID0gaXNBbmNlc3Rvck5vZGU7Ci1Ob2RlLnBy
b3RvdHlwZS5pc0Rlc2NlbmRhbnQgPSBpc0Rlc2NlbmRhbnROb2RlOwotTm9kZS5wcm90b3R5cGUu
Zmlyc3RDb21tb25BbmNlc3RvciA9IGZpcnN0Q29tbW9uTm9kZUFuY2VzdG9yOwogTm9kZS5wcm90
b3R5cGUubmV4dFNpYmxpbmdTa2lwcGluZ1doaXRlc3BhY2UgPSBuZXh0U2libGluZ1NraXBwaW5n
V2hpdGVzcGFjZTsKIE5vZGUucHJvdG90eXBlLnByZXZpb3VzU2libGluZ1NraXBwaW5nV2hpdGVz
cGFjZSA9IHByZXZpb3VzU2libGluZ1NraXBwaW5nV2hpdGVzcGFjZTsKIE5vZGUucHJvdG90eXBl
LnRyYXZlcnNlTmV4dE5vZGUgPSB0cmF2ZXJzZU5leHROb2RlOwpAQCAtNDA2LDI5ICs0MDEsNiBA
QCBmdW5jdGlvbiBpc05vZGVXaGl0ZXNwYWNlKCkKICAgICByZXR1cm4gdGhpcy5ub2RlVmFsdWUu
bWF0Y2goL15bXHNceEEwXSskLyk7CiB9CiAKLWZ1bmN0aW9uIG5vZGVUeXBlTmFtZSgpCi17Ci0g
ICAgaWYgKCF0aGlzKQotICAgICAgICByZXR1cm4gIih1bmtub3duKSI7Ci0KLSAgICBzd2l0Y2gg
KHRoaXMubm9kZVR5cGUpIHsKLSAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERTogcmV0dXJu
ICJFbGVtZW50IjsKLSAgICAgICAgY2FzZSBOb2RlLkFUVFJJQlVURV9OT0RFOiByZXR1cm4gIkF0
dHJpYnV0ZSI7Ci0gICAgICAgIGNhc2UgTm9kZS5URVhUX05PREU6IHJldHVybiAiVGV4dCI7Ci0g
ICAgICAgIGNhc2UgTm9kZS5DREFUQV9TRUNUSU9OX05PREU6IHJldHVybiAiQ2hhcmFjdGVyIERh
dGEiOwotICAgICAgICBjYXNlIE5vZGUuRU5USVRZX1JFRkVSRU5DRV9OT0RFOiByZXR1cm4gIkVu
dGl0eSBSZWZlcmVuY2UiOwotICAgICAgICBjYXNlIE5vZGUuRU5USVRZX05PREU6IHJldHVybiAi
RW50aXR5IjsKLSAgICAgICAgY2FzZSBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTog
cmV0dXJuICJQcm9jZXNzaW5nIEluc3RydWN0aW9uIjsKLSAgICAgICAgY2FzZSBOb2RlLkNPTU1F
TlRfTk9ERTogcmV0dXJuICJDb21tZW50IjsKLSAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX05P
REU6IHJldHVybiAiRG9jdW1lbnQiOwotICAgICAgICBjYXNlIE5vZGUuRE9DVU1FTlRfVFlQRV9O
T0RFOiByZXR1cm4gIkRvY3VtZW50IFR5cGUiOwotICAgICAgICBjYXNlIE5vZGUuRE9DVU1FTlRf
RlJBR01FTlRfTk9ERTogcmV0dXJuICJEb2N1bWVudCBGcmFnbWVudCI7Ci0gICAgICAgIGNhc2Ug
Tm9kZS5OT1RBVElPTl9OT0RFOiByZXR1cm4gIk5vdGF0aW9uIjsKLSAgICB9Ci0KLSAgICByZXR1
cm4gIih1bmtub3duKSI7Ci19Ci0KIGZ1bmN0aW9uIG5vZGVEaXNwbGF5TmFtZSgpCiB7CiAgICAg
aWYgKCF0aGlzKQpAQCAtNTAzLDc3ICs0NzUsMjAgQEAgZnVuY3Rpb24gbm9kZURpc3BsYXlOYW1l
KCkKICAgICByZXR1cm4gdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLmNvbGxhcHNlV2hpdGVz
cGFjZSgpOwogfQogCi1mdW5jdGlvbiBub2RlQ29udGVudFByZXZpZXcoKQotewotICAgIGlmICgh
dGhpcyB8fCAhdGhpcy5oYXNDaGlsZE5vZGVzIHx8ICF0aGlzLmhhc0NoaWxkTm9kZXMoKSkKLSAg
ICAgICAgcmV0dXJuICIiOwotCi0gICAgdmFyIGxpbWl0ID0gMDsKLSAgICB2YXIgcHJldmlldyA9
ICIiOwotCi0gICAgLy8gYWx3YXlzIHNraXAgd2hpdGVzcGFjZSBoZXJlCi0gICAgdmFyIGN1cnJl
bnROb2RlID0gdHJhdmVyc2VOZXh0Tm9kZS5jYWxsKHRoaXMsIHRydWUsIHRoaXMpOwotICAgIHdo
aWxlIChjdXJyZW50Tm9kZSkgewotICAgICAgICBpZiAoY3VycmVudE5vZGUubm9kZVR5cGUgPT09
IE5vZGUuVEVYVF9OT0RFKQotICAgICAgICAgICAgcHJldmlldyArPSBjdXJyZW50Tm9kZS5ub2Rl
VmFsdWUuZXNjYXBlSFRNTCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmV2aWV3ICs9
IG5vZGVEaXNwbGF5TmFtZS5jYWxsKGN1cnJlbnROb2RlKS5lc2NhcGVIVE1MKCk7Ci0KLSAgICAg
ICAgY3VycmVudE5vZGUgPSB0cmF2ZXJzZU5leHROb2RlLmNhbGwoY3VycmVudE5vZGUsIHRydWUs
IHRoaXMpOwotCi0gICAgICAgIGlmICgrK2xpbWl0ID4gNCkgewotICAgICAgICAgICAgcHJldmll
dyArPSAiJiN4MjAyNjsiOyAvLyBlbGxpcHNpcwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcHJldmlldy5jb2xsYXBzZVdoaXRlc3BhY2UoKTsKLX0K
LQotZnVuY3Rpb24gaXNBbmNlc3Rvck5vZGUoYW5jZXN0b3IpCitmdW5jdGlvbiBpc0FuY2VzdG9y
Tm9kZShhbmNlc3Rvciwgbm9kZSkKIHsKLSAgICBpZiAoIXRoaXMgfHwgIWFuY2VzdG9yKQorICAg
IGlmICghbm9kZSB8fCAhYW5jZXN0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHZh
ciBjdXJyZW50Tm9kZSA9IGFuY2VzdG9yLnBhcmVudE5vZGU7CisgICAgdmFyIGN1cnJlbnROb2Rl
ID0gbm9kZS5wYXJlbnROb2RlOwogICAgIHdoaWxlIChjdXJyZW50Tm9kZSkgewotICAgICAgICBp
ZiAodGhpcyA9PT0gY3VycmVudE5vZGUpCisgICAgICAgIGlmIChhbmNlc3RvciA9PT0gY3VycmVu
dE5vZGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY3VycmVudE5vZGUgPSBj
dXJyZW50Tm9kZS5wYXJlbnROb2RlOwogICAgIH0KLQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
ZnVuY3Rpb24gaXNEZXNjZW5kYW50Tm9kZShkZXNjZW5kYW50KQotewotICAgIHJldHVybiBpc0Fu
Y2VzdG9yTm9kZS5jYWxsKGRlc2NlbmRhbnQsIHRoaXMpOwotfQotCi1mdW5jdGlvbiBmaXJzdENv
bW1vbk5vZGVBbmNlc3Rvcihub2RlKQotewotICAgIGlmICghdGhpcyB8fCAhbm9kZSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgdmFyIG5vZGUxID0gdGhpcy5wYXJlbnROb2RlOwotICAgIHZhciBu
b2RlMiA9IG5vZGUucGFyZW50Tm9kZTsKLQotICAgIGlmICgoIW5vZGUxIHx8ICFub2RlMikgfHwg
bm9kZTEgIT09IG5vZGUyKQotICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgIHdoaWxlIChub2Rl
MSAmJiBub2RlMikgewotICAgICAgICBpZiAoIW5vZGUxLnBhcmVudE5vZGUgfHwgIW5vZGUyLnBh
cmVudE5vZGUpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUxICE9PSBub2Rl
MikKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIG5vZGUxID0gbm9kZTEucGFyZW50Tm9k
ZTsKLSAgICAgICAgbm9kZTIgPSBub2RlMi5wYXJlbnROb2RlOwotICAgIH0KLQotICAgIHJldHVy
biBub2RlMTsKLX0KLQogZnVuY3Rpb24gbmV4dFNpYmxpbmdTa2lwcGluZ1doaXRlc3BhY2UoKQog
ewogICAgIGlmICghdGhpcykKQEAgLTc0NCwyMSArNjU5LDggQEAgZnVuY3Rpb24gZ2V0RG9jdW1l
bnRGb3JOb2RlKG5vZGUpIHsKICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PSBOb2RlLkRPQ1VN
RU5UX05PREUgPyBub2RlIDogbm9kZS5vd25lckRvY3VtZW50OwogfQogCi1mdW5jdGlvbiBwYXJl
bnROb2RlT3JGcmFtZUVsZW1lbnQobm9kZSkgewotICAgIHZhciBwYXJlbnQgPSBub2RlLnBhcmVu
dE5vZGU7Ci0gICAgaWYgKHBhcmVudCkKLSAgICAgICAgcmV0dXJuIHBhcmVudDsKLQotICAgIHJl
dHVybiBnZXREb2N1bWVudEZvck5vZGUobm9kZSkuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50Owot
fQotCi1mdW5jdGlvbiBpc0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVzKGEsIGIpIHsKLSAg
ICBpZiAoYSA9PT0gYikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAodmFyIG5vZGUg
PSBiOyBub2RlOyBub2RlID0gZ2V0RG9jdW1lbnRGb3JOb2RlKG5vZGUpLmRlZmF1bHRWaWV3LmZy
YW1lRWxlbWVudCkKLSAgICAgICAgaWYgKGEgPT09IG5vZGUgfHwgaXNBbmNlc3Rvck5vZGUuY2Fs
bChhLCBub2RlKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsK
K2Z1bmN0aW9uIHBhcmVudE5vZGUobm9kZSkgeworICAgIHJldHVybiBub2RlLnBhcmVudE5vZGU7
CiB9CiAKIE51bWJlci5zZWNvbmRzVG9TdHJpbmcgPSBmdW5jdGlvbihzZWNvbmRzLCBmb3JtYXR0
ZXJGdW5jdGlvbiwgaGlnaGVyUmVzb2x1dGlvbikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38491</attachid>
            <date>2009-08-24 12:19:19 -0700</date>
            <delta_ts>2009-08-24 12:58:35 -0700</delta_ts>
            <desc>oops - brought isDescendant back (deleted too much).</desc>
            <filename>find_element</filename>
            <type>text/plain</type>
            <size>10532</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTc3MmU3Yy4uZTU3ZmY5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwyNSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IFRp
bW90aHkgSGF0Y2hlci4KIAorICAgICAgICBXZWJJbnNwZWN0b3I6IFNpbXBsaWZ5IGZpbmRUcmVl
RWxlbWVudCBjb2RlLCBnZXQgcmlkIG9mIHBvdGVudGlhbCBpbmZpbml0ZSBsb29wLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODY4MAorCisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnVwZGF0ZUJyZWFkY3J1bWIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZS5maW5kVHJlZUVs
ZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanM6Cisg
ICAgICAgIChUcmVlT3V0bGluZS5wcm90b3R5cGUuZ2V0Q2FjaGVkVHJlZUVsZW1lbnQpOgorICAg
ICAgICAoVHJlZU91dGxpbmUucHJvdG90eXBlLmZpbmRUcmVlRWxlbWVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanM6CisgICAgICAgIChpc0FuY2VzdG9yTm9k
ZSk6CisgICAgICAgICgpOgorCisyMDA5LTA4LTI0ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKwog
ICAgICAgICBXZWJJbnNwZWN0b3I6IE9ubHkgZXhwYW5kIGxvY2FsIHNjb3BlIHdoZW4gaGl0dGlu
ZyB0aGUgYnJlYWsKIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjg2NzgKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwu
anMKaW5kZXggYjI2YWIyZi4uZGI0ZTM0YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzUGFuZWwuanMKQEAgLTU5Niw3ICs1OTYsNyBAQCBXZWJJbnNwZWN0b3IuRWxl
bWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBmb3VuZFJvb3Qg
PSBmYWxzZTsKLSAgICAgICAgZm9yICh2YXIgY3VycmVudCA9IHRoaXMuZm9jdXNlZERPTU5vZGU7
IGN1cnJlbnQ7IGN1cnJlbnQgPSBwYXJlbnROb2RlT3JGcmFtZUVsZW1lbnQoY3VycmVudCkpIHsK
KyAgICAgICAgZm9yICh2YXIgY3VycmVudCA9IHRoaXMuZm9jdXNlZERPTU5vZGU7IGN1cnJlbnQ7
IGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudE5vZGUpIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50
Lm5vZGVUeXBlID09PSBOb2RlLkRPQ1VNRU5UX05PREUpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Ry
ZWVPdXRsaW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91
dGxpbmUuanMKaW5kZXggMzQ1YTA4NC4uYTU1NTQ3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTEzOCwxNyArMTM4LDEy
IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKIAogICAg
IGZvY3VzZWROb2RlQ2hhbmdlZDogZnVuY3Rpb24oZm9yY2VVcGRhdGUpIHt9LAogCi0gICAgZmlu
ZFRyZWVFbGVtZW50OiBmdW5jdGlvbihub2RlLCBpc0FuY2VzdG9yLCBnZXRQYXJlbnQpCisgICAg
ZmluZFRyZWVFbGVtZW50OiBmdW5jdGlvbihub2RlKQogICAgIHsKLSAgICAgICAgaWYgKHR5cGVv
ZiBpc0FuY2VzdG9yID09PSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgIGlzQW5jZXN0b3IgPSBp
c0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVzOwotICAgICAgICBpZiAodHlwZW9mIGdldFBh
cmVudCA9PT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICBnZXRQYXJlbnQgPSBwYXJlbnROb2Rl
T3JGcmFtZUVsZW1lbnQ7Ci0KLSAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gVHJlZU91dGxpbmUu
cHJvdG90eXBlLmZpbmRUcmVlRWxlbWVudC5jYWxsKHRoaXMsIG5vZGUsIGlzQW5jZXN0b3IsIGdl
dFBhcmVudCk7CisgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IFRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5maW5kVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBub2RlLCBpc0FuY2VzdG9yTm9kZSwgcGFyZW50
Tm9kZSk7CiAgICAgICAgIGlmICghdHJlZUVsZW1lbnQgJiYgbm9kZS5ub2RlVHlwZSA9PT0gTm9k
ZS5URVhUX05PREUpIHsKICAgICAgICAgICAgIC8vIFRoZSB0ZXh0IG5vZGUgbWlnaHQgaGF2ZSBi
ZWVuIGlubGluZWQgaWYgaXQgd2FzIHNob3J0LCBzbyB0cnkgdG8gZmluZCB0aGUgcGFyZW50IGVs
ZW1lbnQuCi0gICAgICAgICAgICB0cmVlRWxlbWVudCA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5m
aW5kVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBub2RlLnBhcmVudE5vZGUsIGlzQW5jZXN0b3IsIGdl
dFBhcmVudCk7CisgICAgICAgICAgICB0cmVlRWxlbWVudCA9IFRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5maW5kVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBub2RlLnBhcmVudE5vZGUsIGlzQW5jZXN0b3JO
b2RlLCBwYXJlbnROb2RlKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0cmVlRWxlbWVu
dDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY29wZUNoYWluU2lk
ZWJhclBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NvcGVDaGFpblNpZGVi
YXJQYW5lLmpzCmluZGV4IDgzNTU3ZTguLjM4NzUzMjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY29wZUNoYWluU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Njb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcwpAQCAtNTIsNyArNTIs
NiBAQCBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpblNpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHZhciB0aXRsZSA9IG51bGw7CiAgICAgICAgICAgICB2YXIgc3VidGl0bGUgPSBz
Y29wZU9iamVjdFByb3h5LmRlc2NyaXB0aW9uOwogICAgICAgICAgICAgdmFyIGVtcHR5UGxhY2Vo
b2xkZXIgPSBudWxsOwotICAgICAgICAgICAgdmFyIGxvY2FsU2NvcGUgPSBmYWxzZTsKICAgICAg
ICAgICAgIHZhciBleHRyYVByb3BlcnRpZXMgPSBudWxsOwogCiAgICAgICAgICAgICBpZiAoc2Nv
cGVPYmplY3RQcm94eS5pc0xvY2FsKSB7CkBAIC04MCw3ICs3OSw3IEBAIFdlYkluc3BlY3Rvci5T
Y29wZUNoYWluU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgc2VjdGlvbi5l
ZGl0SW5TZWxlY3RlZENhbGxGcmFtZVdoZW5QYXVzZWQgPSB0cnVlOwogICAgICAgICAgICAgc2Vj
dGlvbi5wYW5lID0gdGhpczsKIAotICAgICAgICAgICAgaWYgKCFmb3VuZExvY2FsU2NvcGUgfHwg
bG9jYWxTY29wZSkKKyAgICAgICAgICAgIGlmICghZm91bmRMb2NhbFNjb3BlIHx8IHNjb3BlT2Jq
ZWN0UHJveHkuaXNMb2NhbCkKICAgICAgICAgICAgICAgICBzZWN0aW9uLmV4cGFuZGVkID0gdHJ1
ZTsKIAogICAgICAgICAgICAgdGhpcy5zZWN0aW9ucy5wdXNoKHNlY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzCmluZGV4IDY3ZjM1YzIuLmVjYzMyMmIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanMKQEAgLTI0OSw3
ICsyNDksNyBAQCBUcmVlT3V0bGluZS5wcm90b3R5cGUuX2ZvcmdldENoaWxkcmVuUmVjdXJzaXZl
ID0gZnVuY3Rpb24ocGFyZW50RWxlbWVudCkKICAgICB9CiB9CiAKLVRyZWVPdXRsaW5lLnByb3Rv
dHlwZS5maW5kVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCwgaXNBbmNl
c3RvciwgZ2V0UGFyZW50KQorVHJlZU91dGxpbmUucHJvdG90eXBlLmdldENhY2hlZFRyZWVFbGVt
ZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiB7CiAgICAgaWYgKCFyZXByZXNlbnRl
ZE9iamVjdCkKICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC0yNjQsMTAgKzI2NCwxOCBAQCBUcmVl
T3V0bGluZS5wcm90b3R5cGUuZmluZFRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRP
YmplY3QsIGlzQW5jZXN0b3IsCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50c1tp
XTsKICAgICAgICAgfQogICAgIH0KKyAgICByZXR1cm4gbnVsbDsKK30KIAotICAgIGlmICghaXNB
bmNlc3RvciB8fCAhKGlzQW5jZXN0b3IgaW5zdGFuY2VvZiBGdW5jdGlvbikgfHwgIWdldFBhcmVu
dCB8fCAhKGdldFBhcmVudCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkKK1RyZWVPdXRsaW5lLnByb3Rv
dHlwZS5maW5kVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCwgaXNBbmNl
c3RvciwgZ2V0UGFyZW50KQoreworICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAg
IHJldHVybiBudWxsOwogCisgICAgdmFyIGNhY2hlZEVsZW1lbnQgPSB0aGlzLmdldENhY2hlZFRy
ZWVFbGVtZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICBpZiAoY2FjaGVkRWxlbWVudCkKKyAg
ICAgICAgcmV0dXJuIGNhY2hlZEVsZW1lbnQ7CisKICAgICAvLyBUaGUgcmVwcmVzZW50ZWRPYmpl
Y3QgaXNuJ3Qga25vdywgc28gd2Ugc3RhcnQgYXQgdGhlIHRvcCBvZiB0aGUgdHJlZSBhbmQgd29y
ayBkb3duIHRvIGZpbmQgdGhlIGZpcnN0CiAgICAgLy8gdHJlZSBlbGVtZW50IHRoYXQgcmVwcmVz
ZW50cyByZXByZXNlbnRlZE9iamVjdCBvciBvbmUgb2YgaXRzIGFuY2VzdG9ycy4KICAgICB2YXIg
aXRlbTsKQEAgLTMwNyw5ICszMTUsNyBAQCBUcmVlT3V0bGluZS5wcm90b3R5cGUuZmluZFRyZWVF
bGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QsIGlzQW5jZXN0b3IsCiAgICAgICAg
ICAgICBpdGVtLm9ucG9wdWxhdGUoaXRlbSk7CiAgICAgfQogCi0gICAgLy8gTm93IHRoYXQgYWxs
IHRoZSBhbmNlc3RvcnMgYXJlIHBvcHVsYXRlZCwgdHJ5IHRvIGZpbmQgdGhlIHJlcHJlc2VudGVk
T2JqZWN0IGFnYWluLiBUaGlzIHRpbWUKLSAgICAvLyB3aXRob3V0IHRoZSBpc0FuY2VzdG9yIGFu
ZCBnZXRQYXJlbnQgZnVuY3Rpb25zIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgcmVjdXJzaW9uIGlm
IGl0IGlzbid0IGZvdW5kLgotICAgIHJldHVybiB0aGlzLmZpbmRUcmVlRWxlbWVudChyZXByZXNl
bnRlZE9iamVjdCk7CisgICAgcmV0dXJuIHRoaXMuZ2V0Q2FjaGVkVHJlZUVsZW1lbnQocmVwcmVz
ZW50ZWRPYmplY3QpOwogfQogCiBUcmVlT3V0bGluZS5wcm90b3R5cGUudHJlZUVsZW1lbnRGcm9t
UG9pbnQgPSBmdW5jdGlvbih4LCB5KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL3V0aWxpdGllcy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRp
ZXMuanMKaW5kZXggZTYwYWY0Mi4uODg2ZWFhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvdXRpbGl0aWVzLmpzCkBAIC0zMTcsMTIgKzMxNyw4IEBAIEVsZW1lbnQucHJvdG90eXBlLmZp
cnN0Q2hpbGRTa2lwcGluZ1doaXRlc3BhY2UgPSBmaXJzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNl
OwogRWxlbWVudC5wcm90b3R5cGUubGFzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNlID0gbGFzdENo
aWxkU2tpcHBpbmdXaGl0ZXNwYWNlOwogCiBOb2RlLnByb3RvdHlwZS5pc1doaXRlc3BhY2UgPSBp
c05vZGVXaGl0ZXNwYWNlOwotTm9kZS5wcm90b3R5cGUubm9kZVR5cGVOYW1lID0gbm9kZVR5cGVO
YW1lOwogTm9kZS5wcm90b3R5cGUuZGlzcGxheU5hbWUgPSBub2RlRGlzcGxheU5hbWU7Ci1Ob2Rl
LnByb3RvdHlwZS5jb250ZW50UHJldmlldyA9IG5vZGVDb250ZW50UHJldmlldzsKLU5vZGUucHJv
dG90eXBlLmlzQW5jZXN0b3IgPSBpc0FuY2VzdG9yTm9kZTsKIE5vZGUucHJvdG90eXBlLmlzRGVz
Y2VuZGFudCA9IGlzRGVzY2VuZGFudE5vZGU7Ci1Ob2RlLnByb3RvdHlwZS5maXJzdENvbW1vbkFu
Y2VzdG9yID0gZmlyc3RDb21tb25Ob2RlQW5jZXN0b3I7CiBOb2RlLnByb3RvdHlwZS5uZXh0U2li
bGluZ1NraXBwaW5nV2hpdGVzcGFjZSA9IG5leHRTaWJsaW5nU2tpcHBpbmdXaGl0ZXNwYWNlOwog
Tm9kZS5wcm90b3R5cGUucHJldmlvdXNTaWJsaW5nU2tpcHBpbmdXaGl0ZXNwYWNlID0gcHJldmlv
dXNTaWJsaW5nU2tpcHBpbmdXaGl0ZXNwYWNlOwogTm9kZS5wcm90b3R5cGUudHJhdmVyc2VOZXh0
Tm9kZSA9IHRyYXZlcnNlTmV4dE5vZGU7CkBAIC00MDYsMjkgKzQwMiw2IEBAIGZ1bmN0aW9uIGlz
Tm9kZVdoaXRlc3BhY2UoKQogICAgIHJldHVybiB0aGlzLm5vZGVWYWx1ZS5tYXRjaCgvXltcc1x4
QTBdKyQvKTsKIH0KIAotZnVuY3Rpb24gbm9kZVR5cGVOYW1lKCkKLXsKLSAgICBpZiAoIXRoaXMp
Ci0gICAgICAgIHJldHVybiAiKHVua25vd24pIjsKLQotICAgIHN3aXRjaCAodGhpcy5ub2RlVHlw
ZSkgewotICAgICAgICBjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOiByZXR1cm4gIkVsZW1lbnQiOwot
ICAgICAgICBjYXNlIE5vZGUuQVRUUklCVVRFX05PREU6IHJldHVybiAiQXR0cmlidXRlIjsKLSAg
ICAgICAgY2FzZSBOb2RlLlRFWFRfTk9ERTogcmV0dXJuICJUZXh0IjsKLSAgICAgICAgY2FzZSBO
b2RlLkNEQVRBX1NFQ1RJT05fTk9ERTogcmV0dXJuICJDaGFyYWN0ZXIgRGF0YSI7Ci0gICAgICAg
IGNhc2UgTm9kZS5FTlRJVFlfUkVGRVJFTkNFX05PREU6IHJldHVybiAiRW50aXR5IFJlZmVyZW5j
ZSI7Ci0gICAgICAgIGNhc2UgTm9kZS5FTlRJVFlfTk9ERTogcmV0dXJuICJFbnRpdHkiOwotICAg
ICAgICBjYXNlIE5vZGUuUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOiByZXR1cm4gIlByb2Nl
c3NpbmcgSW5zdHJ1Y3Rpb24iOwotICAgICAgICBjYXNlIE5vZGUuQ09NTUVOVF9OT0RFOiByZXR1
cm4gIkNvbW1lbnQiOwotICAgICAgICBjYXNlIE5vZGUuRE9DVU1FTlRfTk9ERTogcmV0dXJuICJE
b2N1bWVudCI7Ci0gICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9UWVBFX05PREU6IHJldHVybiAi
RG9jdW1lbnQgVHlwZSI7Ci0gICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RF
OiByZXR1cm4gIkRvY3VtZW50IEZyYWdtZW50IjsKLSAgICAgICAgY2FzZSBOb2RlLk5PVEFUSU9O
X05PREU6IHJldHVybiAiTm90YXRpb24iOwotICAgIH0KLQotICAgIHJldHVybiAiKHVua25vd24p
IjsKLX0KLQogZnVuY3Rpb24gbm9kZURpc3BsYXlOYW1lKCkKIHsKICAgICBpZiAoIXRoaXMpCkBA
IC01MDMsNzUgKzQ3NiwyMyBAQCBmdW5jdGlvbiBub2RlRGlzcGxheU5hbWUoKQogICAgIHJldHVy
biB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkuY29sbGFwc2VXaGl0ZXNwYWNlKCk7CiB9CiAK
LWZ1bmN0aW9uIG5vZGVDb250ZW50UHJldmlldygpCi17Ci0gICAgaWYgKCF0aGlzIHx8ICF0aGlz
Lmhhc0NoaWxkTm9kZXMgfHwgIXRoaXMuaGFzQ2hpbGROb2RlcygpKQotICAgICAgICByZXR1cm4g
IiI7Ci0KLSAgICB2YXIgbGltaXQgPSAwOwotICAgIHZhciBwcmV2aWV3ID0gIiI7Ci0KLSAgICAv
LyBhbHdheXMgc2tpcCB3aGl0ZXNwYWNlIGhlcmUKLSAgICB2YXIgY3VycmVudE5vZGUgPSB0cmF2
ZXJzZU5leHROb2RlLmNhbGwodGhpcywgdHJ1ZSwgdGhpcyk7Ci0gICAgd2hpbGUgKGN1cnJlbnRO
b2RlKSB7Ci0gICAgICAgIGlmIChjdXJyZW50Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05P
REUpCi0gICAgICAgICAgICBwcmV2aWV3ICs9IGN1cnJlbnROb2RlLm5vZGVWYWx1ZS5lc2NhcGVI
VE1MKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByZXZpZXcgKz0gbm9kZURpc3BsYXlO
YW1lLmNhbGwoY3VycmVudE5vZGUpLmVzY2FwZUhUTUwoKTsKLQotICAgICAgICBjdXJyZW50Tm9k
ZSA9IHRyYXZlcnNlTmV4dE5vZGUuY2FsbChjdXJyZW50Tm9kZSwgdHJ1ZSwgdGhpcyk7Ci0KLSAg
ICAgICAgaWYgKCsrbGltaXQgPiA0KSB7Ci0gICAgICAgICAgICBwcmV2aWV3ICs9ICImI3gyMDI2
OyI7IC8vIGVsbGlwc2lzCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHJldHVybiBwcmV2aWV3LmNvbGxhcHNlV2hpdGVzcGFjZSgpOwotfQotCi1mdW5jdGlvbiBp
c0FuY2VzdG9yTm9kZShhbmNlc3RvcikKK2Z1bmN0aW9uIGlzQW5jZXN0b3JOb2RlKGFuY2VzdG9y
LCBub2RlKQogewotICAgIGlmICghdGhpcyB8fCAhYW5jZXN0b3IpCisgICAgaWYgKCFub2RlIHx8
ICFhbmNlc3RvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdmFyIGN1cnJlbnROb2Rl
ID0gYW5jZXN0b3IucGFyZW50Tm9kZTsKKyAgICB2YXIgY3VycmVudE5vZGUgPSBub2RlLnBhcmVu
dE5vZGU7CiAgICAgd2hpbGUgKGN1cnJlbnROb2RlKSB7Ci0gICAgICAgIGlmICh0aGlzID09PSBj
dXJyZW50Tm9kZSkKKyAgICAgICAgaWYgKGFuY2VzdG9yID09PSBjdXJyZW50Tm9kZSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBh
cmVudE5vZGU7CiAgICAgfQotCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBmdW5jdGlvbiBpc0Rl
c2NlbmRhbnROb2RlKGRlc2NlbmRhbnQpCiB7Ci0gICAgcmV0dXJuIGlzQW5jZXN0b3JOb2RlLmNh
bGwoZGVzY2VuZGFudCwgdGhpcyk7Ci19Ci0KLWZ1bmN0aW9uIGZpcnN0Q29tbW9uTm9kZUFuY2Vz
dG9yKG5vZGUpCi17Ci0gICAgaWYgKCF0aGlzIHx8ICFub2RlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICB2YXIgbm9kZTEgPSB0aGlzLnBhcmVudE5vZGU7Ci0gICAgdmFyIG5vZGUyID0gbm9kZS5w
YXJlbnROb2RlOwotCi0gICAgaWYgKCghbm9kZTEgfHwgIW5vZGUyKSB8fCBub2RlMSAhPT0gbm9k
ZTIpCi0gICAgICAgIHJldHVybiBudWxsOwotCi0gICAgd2hpbGUgKG5vZGUxICYmIG5vZGUyKSB7
Ci0gICAgICAgIGlmICghbm9kZTEucGFyZW50Tm9kZSB8fCAhbm9kZTIucGFyZW50Tm9kZSkKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZTEgIT09IG5vZGUyKQotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgbm9kZTEgPSBub2RlMS5wYXJlbnROb2RlOwotICAgICAgICBu
b2RlMiA9IG5vZGUyLnBhcmVudE5vZGU7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5vZGUxOworICAg
IHJldHVybiBpc0FuY2VzdG9yTm9kZShkZXNjZW5kYW50LCB0aGlzKTsKIH0KIAogZnVuY3Rpb24g
bmV4dFNpYmxpbmdTa2lwcGluZ1doaXRlc3BhY2UoKQpAQCAtNzQ0LDIxICs2NjUsOCBAQCBmdW5j
dGlvbiBnZXREb2N1bWVudEZvck5vZGUobm9kZSkgewogICAgIHJldHVybiBub2RlLm5vZGVUeXBl
ID09IE5vZGUuRE9DVU1FTlRfTk9ERSA/IG5vZGUgOiBub2RlLm93bmVyRG9jdW1lbnQ7CiB9CiAK
LWZ1bmN0aW9uIHBhcmVudE5vZGVPckZyYW1lRWxlbWVudChub2RlKSB7Ci0gICAgdmFyIHBhcmVu
dCA9IG5vZGUucGFyZW50Tm9kZTsKLSAgICBpZiAocGFyZW50KQotICAgICAgICByZXR1cm4gcGFy
ZW50OwotCi0gICAgcmV0dXJuIGdldERvY3VtZW50Rm9yTm9kZShub2RlKS5kZWZhdWx0Vmlldy5m
cmFtZUVsZW1lbnQ7Ci19Ci0KLWZ1bmN0aW9uIGlzQW5jZXN0b3JJbmNsdWRpbmdQYXJlbnRGcmFt
ZXMoYSwgYikgewotICAgIGlmIChhID09PSBiKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Zm9yICh2YXIgbm9kZSA9IGI7IG5vZGU7IG5vZGUgPSBnZXREb2N1bWVudEZvck5vZGUobm9kZSku
ZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50KQotICAgICAgICBpZiAoYSA9PT0gbm9kZSB8fCBpc0Fu
Y2VzdG9yTm9kZS5jYWxsKGEsIG5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
cmV0dXJuIGZhbHNlOworZnVuY3Rpb24gcGFyZW50Tm9kZShub2RlKSB7CisgICAgcmV0dXJuIG5v
ZGUucGFyZW50Tm9kZTsKIH0KIAogTnVtYmVyLnNlY29uZHNUb1N0cmluZyA9IGZ1bmN0aW9uKHNl
Y29uZHMsIGZvcm1hdHRlckZ1bmN0aW9uLCBoaWdoZXJSZXNvbHV0aW9uKQo=
</data>
<flag name="review"
          id="19508"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>