<?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>120430</bug_id>
          
          <creation_ts>2013-08-28 11:09:52 -0700</creation_ts>
          <short_desc>Add child and descendant const iterators</short_desc>
          <delta_ts>2013-08-28 12:43:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>922111</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-28 11:09:52 -0700</bug_when>
    <thetext>For const-correct DOM tree traversal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922113</commentid>
    <comment_count>1</comment_count>
      <attachid>209908</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-28 11:14:37 -0700</bug_when>
    <thetext>Created attachment 209908
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922114</commentid>
    <comment_count>2</comment_count>
      <attachid>209908</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-28 11:18:12 -0700</bug_when>
    <thetext>Comment on attachment 209908
patch

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

&gt; Source/WebCore/dom/Node.cpp:2396
&gt; +    if (!isContainerNode())
&gt; +        return 0;

Why is this even in Node to begin with?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922157</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-28 12:43:19 -0700</bug_when>
    <thetext>https://trac.webkit.org/r154769</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209908</attachid>
            <date>2013-08-28 11:14:37 -0700</date>
            <delta_ts>2013-08-28 11:18:12 -0700</delta_ts>
            <desc>patch</desc>
            <filename>const-iterators.patch</filename>
            <type>text/plain</type>
            <size>22899</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDc1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEzLTA4LTI4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY2hpbGQgYW5kIGRlc2Nl
bmRhbnQgY29uc3QgaXRlcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjA0MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgY29uc3QtY29ycmVjdCBET00gdHJlZSB0cmF2
ZXJzYWwgaXRlcmF0b3JzLiBJdCBhbHNvIHVzZXMgdGhlbSBpbiBhIGZldyBwbGFjZXMuCisgICAg
ICAgIAorICAgICAgICBTb21lIGNvbnN0X2Nhc3RzIGFyZSBhZGRlZCByZXZlYWxpbmcgd2hlcmUg
Y29uc3RuZXNzIGJyZWFrcy4KKworICAgICAgICAqIGRvbS9DaGlsZEl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjo6OkNoaWxkQ29uc3RJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjo6
Om9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Oj0pOgorICAgICAgICAoV2ViQ29yZTo6OjpD
aGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6YmVnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6OjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudENoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkcmVuT2ZUeXBlKToKKyAgICAgICAgKiBkb20v
RGVzY2VuZGFudEl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjo6OkRlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6b3BlcmF0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6PSk6CisgICAgICAgIChXZWJDb3JlOjo6OkRlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRh
cHRlcik6CisgICAgICAgIChXZWJDb3JlOjo6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmVsZW1lbnREZXNjZW5kYW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpkZXNjZW5kYW50c09mVHlwZSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6bnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbik6Cisg
ICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmxlZ2VuZCk6CisgICAgICAgICogaHRtbC9IVE1MRmllbGRT
ZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6Cisg
ICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MT2JqZWN0RWxlbWVudDo6Y29udGFpbnNKYXZhQXBwbGV0KToKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojp0aXRsZSk6CisgICAg
ICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxl
bWVudDo6Y29sbGVjdEludGVyc2VjdGlvbk9yRW5jbG9zdXJlTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTVkdFbGVtZW50OjpjaGVja0ludGVyc2VjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTVkdFbGVtZW50OjpjaGVja0VuY2xvc3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
VkdFbGVtZW50OjpnZXRFbGVtZW50QnlJZCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQu
aDoKKwogMjAxMy0wOC0yOCAgQmVtIEpvbmVzLUJleSAgPGJqb25lc2JlQGFkb2JlLmNvbT4KIAog
ICAgICAgICBDb2RlIGNsZWFudXA6IHJlbmFtZSBGbG9hdEludGVydmFsU2VhcmNoQWRhcHRlciBh
bmQgcmVtb3ZlIHVubmVjZXNzYXJ5IGlubGluZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9D
aGlsZEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkSXRl
cmF0b3IuaAkocmV2aXNpb24gMTU0NzUxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkSXRl
cmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsMjQgQEAgcHJpdmF0ZToKIH07CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2NsYXNzIENoaWxkQ29uc3RJdGVyYXRv
ciB7CitwdWJsaWM6CisgICAgQ2hpbGRDb25zdEl0ZXJhdG9yKCk7CisgICAgQ2hpbGRDb25zdEl0
ZXJhdG9yKGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKKyAgICBDaGlsZENvbnN0SXRlcmF0
b3ImIG9wZXJhdG9yKysoKTsKKyAgICBjb25zdCBFbGVtZW50VHlwZSYgb3BlcmF0b3IqKCkgY29u
c3Q7CisgICAgY29uc3QgRWxlbWVudFR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdDsKKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgQ2hpbGRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgY29uc3QgRWxlbWVudFR5cGUqIG1fY3VycmVudDsKKworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyAgICBEZXNjZW5kYW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsK
KyNlbmRpZgorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogY2xhc3MgQ2hp
bGRJdGVyYXRvckFkYXB0ZXIgewogcHVibGljOgogICAgIENoaWxkSXRlcmF0b3JBZGFwdGVyKENv
bnRhaW5lck5vZGUqIHJvb3QpOwpAQCAtNjMsOCArODEsMjMgQEAgcHJpdmF0ZToKICAgICBjb25z
dCBDb250YWluZXJOb2RlKiBtX3Jvb3Q7CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+CitjbGFzcyBDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyIHsKK3B1YmxpYzoKKyAgICBD
aGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QpOworICAg
IENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gYmVnaW4oKSBjb25zdDsKKyAgICBDaGls
ZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IGVuZCgpIGNvbnN0OworCitwcml2YXRlOgorICAg
IGNvbnN0IENvbnRhaW5lck5vZGUqIG1fcm9vdDsKK307CisKIENoaWxkSXRlcmF0b3JBZGFwdGVy
PEVsZW1lbnQ+IGVsZW1lbnRDaGlsZHJlbihDb250YWluZXJOb2RlKiByb290KTsKK0NoaWxkQ29u
c3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudENoaWxkcmVuKGNvbnN0IENvbnRhaW5l
ck5vZGUqIHJvb3QpOwogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBDaGlsZEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gY2hpbGRyZW5PZlR5cGUoQ29udGFpbmVyTm9kZSogcm9v
dCk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+IENoaWxkQ29uc3RJdGVyYXRvckFk
YXB0ZXI8RWxlbWVudFR5cGU+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUqIHJv
b3QpOworCisvLyBDaGlsZEl0ZXJhdG9yCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KIGlubGluZSBDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6Q2hpbGRJdGVyYXRvcigpCkBA
IC0xMTgsNiArMTUxLDYyIEBAIGlubGluZSBib29sIENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+
OjoKICAgICByZXR1cm4gbV9jdXJyZW50ICE9IG90aGVyLm1fY3VycmVudDsKIH0KIAorLy8gQ2hp
bGRDb25zdEl0ZXJhdG9yCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGlu
ZSBDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpDaGlsZENvbnN0SXRlcmF0b3IoKQor
ICAgIDogbV9jdXJyZW50KG51bGxwdHIpCit7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KK2lubGluZSBDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpDaGlsZENv
bnN0SXRlcmF0b3IoY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpCisgICAgOiBtX2N1cnJlbnQo
Y3VycmVudCkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2Fzc2VydGlvbnMoY3VycmVu
dCkKKyNlbmRpZgoreworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Citpbmxp
bmUgQ2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgQ2hpbGRDb25zdEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6b3BlcmF0b3IrKygpCit7CisgICAgQVNTRVJUKG1fY3VycmVudCk7CisgICAg
QVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CisgICAgbV9jdXJyZW50
ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFNpYmxpbmcobV9jdXJyZW50KTsKKyNpZiAh
QVNTRVJUX0RJU0FCTEVECisgICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJh
dG9yIHJlYWNoZXMgdGhlIGVuZC4KKyAgICBpZiAoIW1fY3VycmVudCkKKyAgICAgICAgbV9hc3Nl
cnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7CisjZW5kaWYKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBjb25z
dCBFbGVtZW50VHlwZSYgQ2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3Iq
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50KTsKKyAgICBBU1NFUlQoIW1fYXNzZXJ0
aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKKyAgICByZXR1cm4gKm1fY3VycmVudDsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgoraW5saW5lIGNvbnN0IEVsZW1lbnRUeXBl
KiBDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvci0+KCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobV9jdXJyZW50KTsKKyAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVl
SGFzTXV0YXRlZCgpKTsKKyAgICByZXR1cm4gbV9jdXJyZW50OworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgYm9vbCBDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+OjpvcGVyYXRvciE9KGNvbnN0IENoaWxkQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0
Cit7CisgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CisgICAg
cmV0dXJuIG1fY3VycmVudCAhPSBvdGhlci5tX2N1cnJlbnQ7Cit9CisKKy8vIENoaWxkSXRlcmF0
b3JBZGFwdGVyCisKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBDaGls
ZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OkNoaWxkSXRlcmF0b3JBZGFwdGVyKENvbnRh
aW5lck5vZGUqIHJvb3QpCiAgICAgOiBtX3Jvb3Qocm9vdCkKQEAgLTEzNiw2ICsyMjUsMjggQEAg
aW5saW5lIENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IENoaWxkSQogICAgIHJldHVybiBDaGls
ZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPigpOwogfQogCisvLyBDaGlsZENvbnN0SXRlcmF0b3JBZGFw
dGVyCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBDaGlsZENvbnN0
SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcihj
b25zdCBDb250YWluZXJOb2RlKiByb290KQorICAgIDogbV9yb290KHJvb3QpCit7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBDaGlsZENvbnN0SXRlcmF0b3I8
RWxlbWVudFR5cGU+IENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdp
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4o
VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RDaGlsZChtX3Jvb3QpKTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgoraW5saW5lIENoaWxkQ29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4gQ2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4oKTsKK30K
KworLy8gU3RhbmRhbG9uZSBmdW5jdGlvbnMKKwogaW5saW5lIENoaWxkSXRlcmF0b3JBZGFwdGVy
PEVsZW1lbnQ+IGVsZW1lbnRDaGlsZHJlbihDb250YWluZXJOb2RlKiByb290KQogewogICAgIHJl
dHVybiBDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50Pihyb290KTsKQEAgLTE0Nyw2ICsyNTgs
MTcgQEAgaW5saW5lIENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPgogICAgIHJldHVy
biBDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4ocm9vdCk7CiB9CiAKK2lubGluZSBD
aGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnRDaGlsZHJlbihjb25zdCBD
b250YWluZXJOb2RlKiByb290KQoreworICAgIHJldHVybiBDaGlsZENvbnN0SXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnQ+KHJvb3QpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
CitpbmxpbmUgQ2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gY2hpbGRyZW5P
ZlR5cGUoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCkKK3sKKyAgICByZXR1cm4gQ2hpbGRDb25z
dEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4ocm9vdCk7Cit9CisKIH0KIAogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGVzY2VuZGFudEl0ZXJhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0Rlc2NlbmRhbnRJdGVyYXRvci5oCShyZXZpc2lvbiAxNTQ3
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGVzY2VuZGFudEl0ZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDYgKzU0LDI1IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudFR5cGU+CitjbGFzcyBEZXNjZW5kYW50Q29uc3RJdGVyYXRvciB7CitwdWJsaWM6
CisgICAgRGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCk7
CisgICAgRGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwg
Y29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpOworICAgIERlc2NlbmRhbnRDb25zdEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCk7CisgICAgY29uc3QgRWxlbWVudFR5cGUmIG9wZXJhdG9yKigpIGNvbnN0
OworICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBvcGVyYXRvci0+KCkgY29uc3Q7CisgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9yb290OworICAgIGNvbnN0IEVs
ZW1lbnRUeXBlKiBtX2N1cnJlbnQ7CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgRGVzY2Vu
ZGFudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7CisjZW5kaWYKK307CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGNsYXNzIERlc2NlbmRhbnRJdGVyYXRvckFkYXB0
ZXIgewogcHVibGljOgogICAgIERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoQ29udGFpbmVyTm9k
ZSogcm9vdCk7CkBAIC02NCw4ICs4MywyMyBAQCBwcml2YXRlOgogICAgIENvbnRhaW5lck5vZGUq
IG1fcm9vdDsKIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2NsYXNzIERl
c2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlciB7CitwdWJsaWM6CisgICAgRGVzY2VuZGFudENv
bnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QpOworICAgIERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBiZWdpbigpIGNvbnN0OworICAgIERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBlbmQoKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Jvb3Q7Cit9OworCiBEZXNjZW5kYW50SXRlcmF0
b3JBZGFwdGVyPEVsZW1lbnQ+IGVsZW1lbnREZXNjZW5kYW50cyhDb250YWluZXJOb2RlKiByb290
KTsKK0Rlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50RGVzY2Vu
ZGFudHMoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCk7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+IERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2NlbmRh
bnRzT2ZUeXBlKENvbnRhaW5lck5vZGUqIHJvb3QpOwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPiBEZXNjZW5kYW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGRlc2Nl
bmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QpOworCisvLyBEZXNjZW5kYW50
SXRlcmF0b3IKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkRlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250
YWluZXJOb2RlKiByb290KQpAQCAtMTIyLDYgKzE1Niw2NSBAQCBpbmxpbmUgYm9vbCBEZXNjZW5k
YW50SXRlcmF0b3I8RWxlbWVudFR5CiAgICAgcmV0dXJuIG1fY3VycmVudCAhPSBvdGhlci5tX2N1
cnJlbnQ7CiB9CiAKKy8vIERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBEZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT46OkRlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3Qp
CisgICAgOiBtX3Jvb3Qocm9vdCkKKyAgICAsIG1fY3VycmVudChudWxscHRyKQoreworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRGVzY2VuZGFudENvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+OjpEZXNjZW5kYW50Q29uc3RJdGVyYXRvcihjb25zdCBDb250YWlu
ZXJOb2RlKiByb290LCBjb25zdCBFbGVtZW50VHlwZSogY3VycmVudCkKKyAgICA6IG1fcm9vdChy
b290KQorICAgICwgbV9jdXJyZW50KGN1cnJlbnQpCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAg
ICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCisjZW5kaWYKK3sKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnRUeXBlPgoraW5saW5lIERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPiYgRGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkK
K3sKKyAgICBBU1NFUlQobV9jdXJyZW50KTsKKyAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21U
cmVlSGFzTXV0YXRlZCgpKTsKKyAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+
OjpuZXh0KG1fY3VycmVudCwgbV9yb290KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLy8g
RHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KKyAg
ICBpZiAoIW1fY3VycmVudCkKKyAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNo
QXNzZXJ0aW9uKCk7CisjZW5kaWYKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBjb25zdCBFbGVtZW50VHlwZSYgRGVzY2VuZGFu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvciooKSBjb25zdAoreworICAgIEFT
U0VSVChtX2N1cnJlbnQpOworICAgIEFTU0VSVCghbV9hc3NlcnRpb25zLmRvbVRyZWVIYXNNdXRh
dGVkKCkpOworICAgIHJldHVybiAqbV9jdXJyZW50OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+CitpbmxpbmUgY29uc3QgRWxlbWVudFR5cGUqIERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItPigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1f
Y3VycmVudCk7CisgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7
CisgICAgcmV0dXJuIG1fY3VycmVudDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgoraW5saW5lIGJvb2wgRGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpv
cGVyYXRvciE9KGNvbnN0IERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKK3sK
KyAgICBBU1NFUlQobV9yb290ID09IG90aGVyLm1fcm9vdCk7CisgICAgQVNTRVJUKCFtX2Fzc2Vy
dGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CisgICAgcmV0dXJuIG1fY3VycmVudCAhPSBvdGhl
ci5tX2N1cnJlbnQ7Cit9CisKKy8vIERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIKKwogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIERlc2NlbmRhbnRJdGVyYXRvckFkYXB0
ZXI8RWxlbWVudFR5cGU+OjpEZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKENvbnRhaW5lck5vZGUq
IHJvb3QpCiAgICAgOiBtX3Jvb3Qocm9vdCkKQEAgLTE0MCw2ICsyMzMsMjggQEAgaW5saW5lIERl
c2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gRAogICAgIHJldHVybiBEZXNjZW5kYW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCk7CiB9CiAKKy8vIERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yQWRhcHRlcgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRGVz
Y2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6RGVzY2VuZGFudENvbnN0
SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUqIHJvb3QpCisgICAgOiBtX3Jvb3Qo
cm9vdCkKK3sKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgoraW5saW5lIERl
c2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBEZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpiZWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIFRyYXZlcnNhbDxFbGVtZW50
VHlwZT46OmZpcnN0V2l0aGluKG1fcm9vdCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+CitpbmxpbmUgRGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+IERl
c2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmVuZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3Qp
OworfQorCisvLyBTdGFuZGFsb25lIGZ1bmN0aW9ucworCiBpbmxpbmUgRGVzY2VuZGFudEl0ZXJh
dG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50RGVzY2VuZGFudHMoQ29udGFpbmVyTm9kZSogcm9v
dCkKIHsKICAgICByZXR1cm4gRGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50Pihyb290
KTsKQEAgLTE1MSw2ICsyNjYsMTcgQEAgaW5saW5lIERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8
RWxlbWVudAogICAgIHJldHVybiBEZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
Pihyb290KTsKIH0KIAoraW5saW5lIERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50PiBlbGVtZW50RGVzY2VuZGFudHMoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCkKK3sKKyAg
ICByZXR1cm4gRGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+KHJvb3QpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRGVzY2VuZGFudENv
bnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBkZXNjZW5kYW50c09mVHlwZShjb25zdCBD
b250YWluZXJOb2RlKiByb290KQoreworICAgIHJldHVybiBEZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+KHJvb3QpOworfQorCiB9CiAKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAkocmV2aXNpb24gMTU0NzMzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTIgQEAKICNpbmNsdWRlICJDb250ZXh0
TWVudUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkRPTVNldHRhYmxlVG9rZW5MaXN0LmgiCisjaW5jbHVkZSAiRGVzY2VuZGFudEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1
ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgotI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNp
bmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5oIgogI2luY2x1ZGUgIkV2
ZW50RGlzcGF0Y2hNZWRpYXRvci5oIgpAQCAtMjM5Miw4ICsyMzkyLDExIEBAIHZvaWQgTm9kZTo6
dW5yZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWwKIAogc2l6ZV90IE5vZGU6Om51bWJlck9mU2Nv
cGVkSFRNTFN0eWxlQ2hpbGRyZW4oKSBjb25zdAogeworICAgIGlmICghaXNDb250YWluZXJOb2Rl
KCkpCisgICAgICAgIHJldHVybiAwOwogICAgIHNpemVfdCBjb3VudCA9IDA7Ci0gICAgZm9yIChI
VE1MU3R5bGVFbGVtZW50KiBzdHlsZSA9IFRyYXZlcnNhbDxIVE1MU3R5bGVFbGVtZW50Pjo6Zmly
c3RXaXRoaW4odGhpcyk7IHN0eWxlOyBzdHlsZSA9IFRyYXZlcnNhbDxIVE1MU3R5bGVFbGVtZW50
Pjo6bmV4dChzdHlsZSwgdGhpcykpIHsKKyAgICBhdXRvIHN0eWxlRGVzY2VuZGFudHMgPSBkZXNj
ZW5kYW50c09mVHlwZTxIVE1MU3R5bGVFbGVtZW50Pih0b0NvbnRhaW5lck5vZGUodGhpcykpOwor
ICAgIGZvciAoYXV0byBzdHlsZSA9IHN0eWxlRGVzY2VuZGFudHMuYmVnaW4oKSwgZW5kID0gc3R5
bGVEZXNjZW5kYW50cy5lbmQoKTsgc3R5bGUgIT0gZW5kOyArK3N0eWxlKSB7CiAgICAgICAgIGlm
IChzdHlsZS0+aXNSZWdpc3RlcmVkQXNTY29wZWQoKSkKICAgICAgICAgICAgIGNvdW50Kys7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNTQ3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw5ICs4OSwxMyBAQCBSZW5kZXJPYmplY3Qq
IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNyZWF0CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRl
ckZpZWxkc2V0KHRoaXMpOwogfQogCi1IVE1MTGVnZW5kRWxlbWVudCogSFRNTEZpZWxkU2V0RWxl
bWVudDo6bGVnZW5kKCkgY29uc3QKK2NvbnN0IEhUTUxMZWdlbmRFbGVtZW50KiBIVE1MRmllbGRT
ZXRFbGVtZW50OjpsZWdlbmQoKSBjb25zdAogewotICAgIHJldHVybiBUcmF2ZXJzYWw8SFRNTExl
Z2VuZEVsZW1lbnQ+OjpmaXJzdFdpdGhpbih0aGlzKTsKKyAgICBhdXRvIGxlZ2VuZERlc2NlbmRh
bnRzID0gZGVzY2VuZGFudHNPZlR5cGU8SFRNTExlZ2VuZEVsZW1lbnQ+KHRoaXMpOworICAgIGF1
dG8gZmlyc3RMZWdlbmQgPSBsZWdlbmREZXNjZW5kYW50cy5iZWdpbigpOworICAgIGlmIChmaXJz
dExlZ2VuZCAhPSBsZWdlbmREZXNjZW5kYW50cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuICYqZmly
c3RMZWdlbmQ7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCShyZXZpc2lvbiAxNTQ3MzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsOCArMzQsOCBAQCBjbGFzcyBIVE1MQ29sbGVjdGlvbjsKIGNsYXNzIEhUTUxGaWVsZFNldEVs
ZW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEZpZWxkU2V0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwotICAgIEhUTUxMZWdl
bmRFbGVtZW50KiBsZWdlbmQoKSBjb25zdDsKIAorICAgIGNvbnN0IEhUTUxMZWdlbmRFbGVtZW50
KiBsZWdlbmQoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBlbGVtZW50
cygpOwogCiAgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBhc3NvY2lh
dGVkRWxlbWVudHMoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAkocmV2aXNpb24gMTU0NzMzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1
ZGUgIkNvbnRlbnRUeXBlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1
ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJEZXNjZW5kYW50SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCIKICNpbmNsdWRlICJEb2N1bWVudExv
YWRlci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBAIC01MzcsNyArNTM4LDggQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbAogICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKFRyYXZlcnNhbDxIVE1MVHJhY2tFbGVtZW50Pjo6Zmlyc3RXaXRoaW4odGhpcykpCisg
ICAgYXV0byB0cmFja0Rlc2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8SFRNTFRyYWNrRWxl
bWVudD4odGhpcyk7CisgICAgaWYgKHRyYWNrRGVzY2VuZGFudHMuYmVnaW4oKSAhPSB0cmFja0Rl
c2NlbmRhbnRzLmVuZCgpKQogICAgICAgICBzY2hlZHVsZURlbGF5ZWRBY3Rpb24oQ29uZmlndXJl
VGV4dFRyYWNrcyk7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTQ3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYxLDE0ICs0NjEsMTIg
QEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6Y29udGFpbnNKYXZhQXBwbAogewogICAgIGlmIChN
SU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShnZXRBdHRyaWJ1dGUodHlwZUF0
dHIpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAotICAgIGZvciAoYXV0byBjaGls
ZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQodGhpcyk7IGNoaWxkOyBjaGlsZCA9IEVs
ZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNoaWxkKSkgewotICAgICAgICBpZiAoY2hpbGQt
Pmhhc1RhZ05hbWUocGFyYW1UYWcpCi0gICAgICAgICAgICAgICAgJiYgZXF1YWxJZ25vcmluZ0Nh
c2UoY2hpbGQtPmdldE5hbWVBdHRyaWJ1dGUoKSwgInR5cGUiKQotICAgICAgICAgICAgICAgICYm
IE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBlKGNoaWxkLT5nZXRBdHRyaWJ1
dGUodmFsdWVBdHRyKS5zdHJpbmcoKSkpCisKKyAgICBmb3IgKGF1dG8gY2hpbGQgPSBlbGVtZW50
Q2hpbGRyZW4odGhpcykuYmVnaW4oKSwgZW5kID0gZWxlbWVudENoaWxkcmVuKHRoaXMpLmVuZCgp
OyBjaGlsZCAhPSBlbmQ7ICsrY2hpbGQpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1l
KHBhcmFtVGFnKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShjaGlsZC0+Z2V0TmFtZUF0dHJpYnV0ZSgp
LCAidHlwZSIpCisgICAgICAgICAgICAmJiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRN
SU1FVHlwZShjaGlsZC0+Z2V0QXR0cmlidXRlKHZhbHVlQXR0cikuc3RyaW5nKCkpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShvYmplY3RU
YWcpCi0gICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVsZW1lbnQqPihj
aGlsZCktPmNvbnRhaW5zSmF2YUFwcGxldCgpKQorICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05h
bWUob2JqZWN0VGFnKSAmJiBzdGF0aWNfY2FzdDxjb25zdCBIVE1MT2JqZWN0RWxlbWVudCY+KCpj
aGlsZCkuY29udGFpbnNKYXZhQXBwbGV0KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKGFwcGxldFRhZykpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NDcz
MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNs
dWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgorI2luY2x1
ZGUgIkRlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVk
ZSAiRWxlbWVudFRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtODc5LDggKzg3OSwxMCBAQCBT
dHJpbmcgU1ZHRWxlbWVudDo6dGl0bGUoKSBjb25zdAogICAgIC8vIElmIHdlIGFyZW4ndCBhbiBp
bnN0YW5jZSBpbiBhIDx1c2U+IG9yIHRoZSA8dXNlPiB0aXRsZSB3YXMgbm90IGZvdW5kLCB0aGVu
IGZpbmQgdGhlIGZpcnN0CiAgICAgLy8gPHRpdGxlPiBjaGlsZCBvZiB0aGlzIGVsZW1lbnQuCiAg
ICAgLy8gSWYgYSB0aXRsZSBjaGlsZCB3YXMgZm91bmQsIHJldHVybiB0aGUgdGV4dCBjb250ZW50
cy4KLSAgICBpZiAoU1ZHVGl0bGVFbGVtZW50KiB0aXRsZUVsZW1lbnQgPSBUcmF2ZXJzYWw8U1ZH
VGl0bGVFbGVtZW50Pjo6Zmlyc3RXaXRoaW4odGhpcykpCi0gICAgICAgIHJldHVybiB0aXRsZUVs
ZW1lbnQtPmlubmVyVGV4dCgpOworICAgIGF1dG8gdGl0bGVEZXNjZW5kYW50cyA9IGRlc2NlbmRh
bnRzT2ZUeXBlPFNWR1RpdGxlRWxlbWVudD4odGhpcyk7CisgICAgYXV0byBmaXJzdFRpdGxlID0g
dGl0bGVEZXNjZW5kYW50cy5iZWdpbigpOworICAgIGlmIChmaXJzdFRpdGxlICE9IHRpdGxlRGVz
Y2VuZGFudHMuZW5kKCkpCisgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFNWR1RpdGxlRWxlbWVu
dCY+KCpmaXJzdFRpdGxlKS5pbm5lclRleHQoKTsKIAogICAgIC8vIE90aGVyd2lzZSByZXR1cm4g
YSBudWxsL2VtcHR5IHN0cmluZy4KICAgICByZXR1cm4gU3RyaW5nKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTQ3MzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDgg
QEAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIK
ICNpbmNsdWRlICJDU1NIZWxwZXIuaCIKKyNpbmNsdWRlICJEZXNjZW5kYW50SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNp
bmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1
ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgpAQCAtMzM3LDE2ICszMzcsMTcgQEAgdm9pZCBTVkdTVkdF
bGVtZW50Ojpmb3JjZVJlZHJhdygpCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBTVkdTVkdFbGVtZW50
Ojpjb2xsZWN0SW50ZXJzZWN0aW9uT3JFbmNsb3N1cmVMaXN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgU1ZHRWxlbWVudCogcmVmZXJlbmNlRWxlbWVudCwgQ29sbGVjdEludGVyc2VjdGlvbk9yRW5j
bG9zdXJlIGNvbGxlY3QpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5vZGVz
OwotICAgIFNWR0VsZW1lbnQqIHN2Z0VsZW1lbnQgPSBUcmF2ZXJzYWw8U1ZHRWxlbWVudD46OmZp
cnN0V2l0aGluKHJlZmVyZW5jZUVsZW1lbnQgPyByZWZlcmVuY2VFbGVtZW50IDogdGhpcyk7Ci0g
ICAgd2hpbGUgKHN2Z0VsZW1lbnQpIHsKKworICAgIGF1dG8gc3ZnRGVzY2VuZGFudHMgPSBkZXNj
ZW5kYW50c09mVHlwZTxTVkdFbGVtZW50PihyZWZlcmVuY2VFbGVtZW50ID8gcmVmZXJlbmNlRWxl
bWVudCA6IHRoaXMpOworICAgIGZvciAoYXV0byBpdCA9IHN2Z0Rlc2NlbmRhbnRzLmJlZ2luKCks
IGVuZCA9IHN2Z0Rlc2NlbmRhbnRzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
Y29uc3QgU1ZHRWxlbWVudCogc3ZnRWxlbWVudCA9ICYqaXQ7CiAgICAgICAgIGlmIChjb2xsZWN0
ID09IENvbGxlY3RJbnRlcnNlY3Rpb25MaXN0KSB7CiAgICAgICAgICAgICBpZiAoY2hlY2tJbnRl
cnNlY3Rpb24oc3ZnRWxlbWVudCwgcmVjdCkpCi0gICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5k
KHN2Z0VsZW1lbnQpOworICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChjb25zdF9jYXN0PFNW
R0VsZW1lbnQqPihzdmdFbGVtZW50KSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBp
ZiAoY2hlY2tFbmNsb3N1cmUoc3ZnRWxlbWVudCwgcmVjdCkpCi0gICAgICAgICAgICAgICAgbm9k
ZXMuYXBwZW5kKHN2Z0VsZW1lbnQpOworICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChjb25z
dF9jYXN0PFNWR0VsZW1lbnQqPihzdmdFbGVtZW50KSk7CiAgICAgICAgIH0KLSAgICAgICAgc3Zn
RWxlbWVudCA9IFRyYXZlcnNhbDxTVkdFbGVtZW50Pjo6bmV4dChzdmdFbGVtZW50LCByZWZlcmVu
Y2VFbGVtZW50ID8gcmVmZXJlbmNlRWxlbWVudCA6IHRoaXMpOwogICAgIH0KICAgICByZXR1cm4g
U3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5vZGVzKTsKIH0KQEAgLTM2MSwxNCArMzYyLDE0IEBAIFBh
c3NSZWZQdHI8Tm9kZUxpc3Q+IFNWR1NWR0VsZW1lbnQ6OmdldEUKICAgICByZXR1cm4gY29sbGVj
dEludGVyc2VjdGlvbk9yRW5jbG9zdXJlTGlzdChyZWN0LCByZWZlcmVuY2VFbGVtZW50LCBDb2xs
ZWN0RW5jbG9zdXJlTGlzdCk7CiB9CiAKLWJvb2wgU1ZHU1ZHRWxlbWVudDo6Y2hlY2tJbnRlcnNl
Y3Rpb24oU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAor
Ym9vbCBTVkdTVkdFbGVtZW50OjpjaGVja0ludGVyc2VjdGlvbihjb25zdCBTVkdFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgaWYgKCFlbGVtZW50
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIFJlbmRlclNWR01vZGVsT2JqZWN0
OjpjaGVja0ludGVyc2VjdGlvbihlbGVtZW50LT5yZW5kZXJlcigpLCByZWN0KTsKIH0KIAotYm9v
bCBTVkdTVkdFbGVtZW50OjpjaGVja0VuY2xvc3VyZShTVkdFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0Citib29sIFNWR1NWR0VsZW1lbnQ6OmNoZWNrRW5jbG9z
dXJlKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29u
c3QKIHsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc2OCw3
ICs3NjksNyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OmRvY3VtZW50RGlkUmVzdW1lRnJvCiAKIC8v
IGdldEVsZW1lbnRCeUlkIG9uIFNWR1NWR0VsZW1lbnQgaXMgcmVzdHJpY3RlZCB0byBvbmx5IHRo
ZSBjaGlsZCBzdWJ0cmVlIGRlZmluZWQgYnkgdGhlIDxzdmc+IGVsZW1lbnQuCiAvLyBTZWUgaHR0
cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvc3RydWN0Lmh0bWwjSW50ZXJmYWNlU1ZHU1ZHRWxlbWVu
dAotRWxlbWVudCogU1ZHU1ZHRWxlbWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCkgY29uc3QKK0VsZW1lbnQqIFNWR1NWR0VsZW1lbnQ6OmdldEVsZW1lbnRCeUlkKGNv
bnN0IEF0b21pY1N0cmluZyYgaWQpCiB7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IHRyZWVTY29w
ZSgpLT5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNE
ZXNjZW5kYW50T2YodGhpcykpCkBAIC03NzYsOSArNzc3LDkgQEAgRWxlbWVudCogU1ZHU1ZHRWxl
bWVudDo6Z2V0RWxlbWVudEJ5SWQoYwogCiAgICAgLy8gRmFsbCBiYWNrIHRvIHRyYXZlcnNpbmcg
b3VyIHN1YnRyZWUuIER1cGxpY2F0ZSBpZHMgYXJlIGFsbG93ZWQsIHRoZSBmaXJzdCBmb3VuZCB3
aWxsCiAgICAgLy8gYmUgcmV0dXJuZWQuCi0gICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxl
bWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4odGhpcyk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVt
ZW50VHJhdmVyc2FsOjpuZXh0KGVsZW1lbnQsIHRoaXMpKSB7CisgICAgZm9yIChhdXRvIGVsZW1l
bnQgPSBlbGVtZW50RGVzY2VuZGFudHModGhpcykuYmVnaW4oKSwgZW5kID0gZWxlbWVudERlc2Nl
bmRhbnRzKHRoaXMpLmVuZCgpOyBlbGVtZW50ICE9IGVuZDsgKytlbGVtZW50KSB7CiAgICAgICAg
IGlmIChlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpID09IGlkKQotICAgICAgICAgICAgcmV0dXJu
IGVsZW1lbnQ7CisgICAgICAgICAgICByZXR1cm4gJiplbGVtZW50OwogICAgIH0KICAgICByZXR1
cm4gMDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gMTU0
NzMzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA2LDggKzEwNiw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+
IGdldEludGVyc2VjdGlvbkxpc3QoY29uc3QgRmxvYXRSZWN0JiwgU1ZHRWxlbWVudCogcmVmZXJl
bmNlRWxlbWVudCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RW5jbG9zdXJl
TGlzdChjb25zdCBGbG9hdFJlY3QmLCBTVkdFbGVtZW50KiByZWZlcmVuY2VFbGVtZW50KSBjb25z
dDsKLSAgICBib29sIGNoZWNrSW50ZXJzZWN0aW9uKFNWR0VsZW1lbnQqLCBjb25zdCBGbG9hdFJl
Y3QmKSBjb25zdDsKLSAgICBib29sIGNoZWNrRW5jbG9zdXJlKFNWR0VsZW1lbnQqLCBjb25zdCBG
bG9hdFJlY3QmKSBjb25zdDsKKyAgICBib29sIGNoZWNrSW50ZXJzZWN0aW9uKGNvbnN0IFNWR0Vs
ZW1lbnQqLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBib29sIGNoZWNrRW5jbG9zdXJl
KGNvbnN0IFNWR0VsZW1lbnQqLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKICAgICB2b2lkIGRl
c2VsZWN0QWxsKCk7CiAKICAgICBzdGF0aWMgZmxvYXQgY3JlYXRlU1ZHTnVtYmVyKCk7CkBAIC0x
MjMsNyArMTIzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXR1cEluaXRpYWxWaWV3KGNvbnN0
IFN0cmluZyYgZnJhZ21lbnRJZGVudGlmaWVyLCBFbGVtZW50KiBhbmNob3JOb2RlKTsKIAotICAg
IEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworICAg
IEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgYm9v
bCB3aWR0aEF0dHJpYnV0ZUVzdGFibGlzaGVzVmlld3BvcnQoKSBjb25zdDsKICAgICBib29sIGhl
aWdodEF0dHJpYnV0ZUVzdGFibGlzaGVzVmlld3BvcnQoKSBjb25zdDsK
</data>
<flag name="review"
          id="231974"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>