<?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>16511</bug_id>
          
          <creation_ts>2007-12-18 20:10:37 -0800</creation_ts>
          <short_desc>Speed up ClassNodeList and NamedNodeList by using the caching mechanism employed by ChildNodeLists</short_desc>
          <delta_ts>2007-12-19 12:11:39 -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>DOM</component>
          <version>528+ (Nightly build)</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></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="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>64687</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-18 20:10:37 -0800</bug_when>
    <thetext>This turned out to be quite easy and a big win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64688</commentid>
    <comment_count>1</comment_count>
      <attachid>17979</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-18 20:12:41 -0800</bug_when>
    <thetext>Created attachment 17979
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64689</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-18 20:21:14 -0800</bug_when>
    <thetext>Ignore the stuff in DRT, that was not intended to be there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64690</commentid>
    <comment_count>3</comment_count>
      <attachid>17979</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-18 20:29:16 -0800</bug_when>
    <thetext>Comment on attachment 17979
patch

Scratch that, there seems to be an invalidation error I missed.  Will return shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64703</commentid>
    <comment_count>4</comment_count>
      <attachid>17982</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-18 23:06:49 -0800</bug_when>
    <thetext>Created attachment 17982
second try

This time with less test failures!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64711</commentid>
    <comment_count>5</comment_count>
      <attachid>17982</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-12-19 01:06:25 -0800</bug_when>
    <thetext>Comment on attachment 17982
second try

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64750</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-19 12:11:39 -0800</bug_when>
    <thetext>Landed in r28868.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17979</attachid>
            <date>2007-12-18 20:12:41 -0800</date>
            <delta_ts>2007-12-18 23:06:49 -0800</delta_ts>
            <desc>patch</desc>
            <filename>speedUpGEBCN.diff</filename>
            <type>text/plain</type>
            <size>13551</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODg0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMDctMTItMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUxMQorICAgICAgICBTcGVlZCB1cCBD
bGFzc05vZGVMaXN0IGFuZCBOYW1lZE5vZGVMaXN0IGJ5IHVzaW5nIHRoZSBjYWNoaW5nIG1lY2hh
bmlzbSBlbXBsb3llZCBieSBDaGlsZE5vZGVMaXN0LgorICAgICAgICAtIFRoaXMgZ2l2ZSBhIH4y
LjE1eCBzcGVlZHVwIG9uIHRoZSBuYXRpdmUgdGVzdCBAIGh0dHA6Ly9lam9obi5vcmcvYXBwcy9j
bGFzc25hbWUvCisKKyAgICAgICAgKiBkb20vQ2xhc3NOb2RlTGlzdC5jcHA6ICB0aGUgY2FjaGlu
ZyBOb2RlTGlzdCBjb25zdHJ1Y3RvciB0byB0dXJuIG9uIGNhY2hpbmcKKyAgICAgICAgKFdlYkNv
cmU6OkNsYXNzTm9kZUxpc3Q6OkNsYXNzTm9kZUxpc3QpOgorICAgICAgICAqIGRvbS9DbGFzc05v
ZGVMaXN0Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDogTW92ZSBnZXRFbGVtZW50c0J5
TmFtZSBhbmQgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSB0byBOb2RlIHNvIHRoZXkKKyAgICAgICAg
Y2FuIHVzZSBlYXNpbHkgZW1wbG95IHRoZSBjYWNoaW5nIGFscmVhZHkgdXNlZCBieSBDaGlsZE5v
ZGVMaXN0cy4gIEluIHRoZSBjYXNlIG9mIAorICAgICAgICBnZXRFbGVtZW50c0J5Q2xhc3NOYW1l
LCB0aGlzIHJlZHVjZXMgY29kZSBkdXBsaWNhdGlvbiBpbiBFbGVtZW50IGFzIHdlbGwuCisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOiBNb3ZlIGdl
dEVsZW1lbnRzQnlDbGFzc05hbWUgdG8gTm9kZS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAqIGRvbS9OYW1lTm9kZUxpc3QuY3BwOiBVc2UgdGhlIGNhY2hpbmcgTm9kZUxpc3Qg
Y29uc3RydWN0b3IgdG8gdHVybiBvbiBjYWNoaW5nLgorICAgICAgICAoV2ViQ29yZTo6TmFtZU5v
ZGVMaXN0OjpOYW1lTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZU5vZGVMaXN0Ojpp
dGVtKToKKyAgICAgICAgKiBkb20vTmFtZU5vZGVMaXN0Lmg6CisgICAgICAgICogZG9tL05vZGUu
Y3BwOiBBZGQgbWFwcyBvZiBjYWNoZXMgZm9yIENsYXNzTm9kZUxpc3RzIGFuZCBOYW1lTm9kZUxp
c3QgdG8gTm9kZUxpc3RzTm9kZURhdGEuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6On5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmNoaWxkTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVnaXN0ZXJOb2RlTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKToKKyAgICAgICAgKiBkb20vTm9k
ZS5oOiBNYWtlIG1fbm9kZUxpc3RzIGFuIE93blB0ci4gIE1vdmVkIGdldEVsZW1lbnRzQnlOYW1l
IGFuZCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIGhlcmUuCisKIDIwMDctMTItMTggIE1hcmsgUm93
ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBNYWNpZWog
U3RhY2hvd2lhay4KSW5kZXg6IFdlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAyODg0NykKKysr
IFdlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCAr
MzYsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DbGFzc05vZGVMaXN0OjpDbGFzc05v
ZGVMaXN0KFBhc3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgY2xh
c3NOYW1lKQotICAgIDogTm9kZUxpc3Qocm9vdE5vZGUpCitDbGFzc05vZGVMaXN0OjpDbGFzc05v
ZGVMaXN0KFBhc3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIGNvbnN0IFN0cmluZyYgY2xhc3NOYW1l
cywgTm9kZUxpc3Q6OkNhY2hlcyogY2FjaGVzKQorICAgIDogTm9kZUxpc3Qocm9vdE5vZGUsIGNh
Y2hlcykKIHsKLSAgICBtX2NsYXNzTmFtZXMucGFyc2VDbGFzc0F0dHJpYnV0ZShjbGFzc05hbWUs
IG1fcm9vdE5vZGUtPmRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpKTsKKyAgICBtX2NsYXNzTmFt
ZXMucGFyc2VDbGFzc0F0dHJpYnV0ZShjbGFzc05hbWVzLCBtX3Jvb3ROb2RlLT5kb2N1bWVudCgp
LT5pbkNvbXBhdE1vZGUoKSk7CiB9CiAKIHVuc2lnbmVkIENsYXNzTm9kZUxpc3Q6Omxlbmd0aCgp
IGNvbnN0CkluZGV4OiBXZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlzdC5oCShyZXZpc2lvbiAyODg0NykKKysrIFdlYkNvcmUv
ZG9tL0NsYXNzTm9kZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDbGFzc05vZGVMaXN0IDogcHVibGljIE5vZGVM
aXN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENsYXNzTm9kZUxpc3QoUGFzc1JlZlB0cjxOb2Rl
PiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUpOworICAgICAgICBDbGFz
c05vZGVMaXN0KFBhc3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIGNvbnN0IFN0cmluZyYgY2xhc3NO
YW1lcywgTm9kZUxpc3Q6OkNhY2hlcyopOwogCiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkg
Y29uc3Q7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyODg0NykKKysrIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ5NSwxNiArMzQ5NSw2IEBAIEhUTUxDb2xs
ZWN0aW9uOjpDb2xsZWN0aW9uSW5mbyogRG9jdW1lbnQKICAgICByZXR1cm4gaXRlci0+c2Vjb25k
OwogfQogCi1QYXNzUmVmUHRyPE5hbWVOb2RlTGlzdD4gRG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlO
YW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudE5hbWUpCi17Ci0gICAgcmV0dXJuIG5ldyBOYW1lTm9k
ZUxpc3QodGhpcywgZWxlbWVudE5hbWUpOwotfQotCi1QYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1
bWVudDo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSkKLXsK
LSAgICByZXR1cm4gbmV3IENsYXNzTm9kZUxpc3QodGhpcywgY2xhc3NOYW1lKTsKLX0KLQogdm9p
ZCBEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBzZXRQYXJzaW5nKGZhbHNlKTsK
SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkocmV2aXNpb24gMjg4NDcpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTEsOSArMjExLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3Ry
aW5nIGJhc2VVUkkoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8Tm9kZT4gYWRvcHROb2RlKFBh
c3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgCi0gICAgUGFzc1Jl
ZlB0cjxOYW1lTm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0cmluZyYgZWxlbWVu
dE5hbWUpOwotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlDbGFzc05hbWUo
Y29uc3QgU3RyaW5nJiBjbGFzc05hbWUpOwogCiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlv
bj4gaW1hZ2VzKCk7CiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZW1iZWRzKCk7Cklu
ZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkocmV2aXNpb24gMjg4NDcpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEyMywxMSArMTEyMyw2IEBAIFJlbmRlclN0eWxlKiBFbGVtZW50
Ojpjb21wdXRlZFN0eWxlKCkKICAgICByZXR1cm4gcmQtPm1fY29tcHV0ZWRTdHlsZTsKIH0KIAot
UGFzc1JlZlB0cjxOb2RlTGlzdD4gRWxlbWVudDo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25z
dCBTdHJpbmcmIGNsYXNzTmFtZSkKLXsKLSAgICByZXR1cm4gbmV3IENsYXNzTm9kZUxpc3QodGhp
cywgY2xhc3NOYW1lKTsKLX0KLQogdm9pZCBFbGVtZW50OjpjYW5jZWxGb2N1c0FwcGVhcmFuY2VV
cGRhdGUoKQogewogICAgIGlmIChFbGVtZW50UmFyZURhdGEqIHJkID0gcmFyZURhdGEoKSkKSW5k
ZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVt
ZW50LmgJKHJldmlzaW9uIDI4ODQ3KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjIsOCArMTYyLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb2N1
cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUpOwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwog
ICAgIHZvaWQgYmx1cigpOwotICAgIAotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1l
bnRzQnlDbGFzc05hbWUoY29uc3QgU3RyaW5nJik7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdmly
dHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSogLCBEZXByZWNhdGVkU3RyaW5nIGluZCA9ICIiKSBj
b25zdDsKSW5kZXg6IFdlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmNwcAkocmV2aXNpb24gMjg4NDcpCisrKyBXZWJDb3Jl
L2RvbS9OYW1lTm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotTmFtZU5v
ZGVMaXN0OjpOYW1lTm9kZUxpc3QoTm9kZSogcm9vdCwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAg
IDogTm9kZUxpc3Qocm9vdCkKK05hbWVOb2RlTGlzdDo6TmFtZU5vZGVMaXN0KE5vZGUqIHJvb3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSwgTm9kZUxpc3Q6OkNhY2hlcyogY2FjaGVzKQorICAgIDogTm9k
ZUxpc3Qocm9vdCwgY2FjaGVzKQogICAgICwgbV9ub2RlTmFtZShuYW1lKQogewogfQpAQCAtNDEs
NyArNDEsNyBAQCB1bnNpZ25lZCBOYW1lTm9kZUxpc3Q6Omxlbmd0aCgpIGNvbnN0CiAgICAgcmV0
dXJuIHJlY3Vyc2l2ZUxlbmd0aCgpOwogfQogCi1Ob2RlKiBOYW1lTm9kZUxpc3Q6Oml0ZW0gKHVu
c2lnbmVkIGluZGV4KSBjb25zdAorTm9kZSogTmFtZU5vZGVMaXN0OjppdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdAogewogICAgIHJldHVybiByZWN1cnNpdmVJdGVtKGluZGV4KTsKIH0KSW5kZXg6
IFdlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05h
bWVOb2RlTGlzdC5oCShyZXZpc2lvbiAyODg0NykKKysrIFdlYkNvcmUvZG9tL05hbWVOb2RlTGlz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAqLwogY2xhc3MgTmFtZU5vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0IHsKIHB1YmxpYzoKLSAg
ICBOYW1lTm9kZUxpc3QoTm9kZSogcm9vdCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBOYW1l
Tm9kZUxpc3QoTm9kZSogcm9vdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOb2RlTGlzdDo6Q2FjaGVz
Kik7CiAKICAgICAvLyBET00gbWV0aG9kcyBvdmVycmlkZGVuIGZyb20gIHBhcmVudCBjbGFzc2Vz
CiAKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L05vZGUuY3BwCShyZXZpc2lvbiAyODg0NykKKysrIFdlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiwxNCArMjYsMTcgQEAKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNp
bmNsdWRlICJDaGlsZE5vZGVMaXN0LmgiCisjaW5jbHVkZSAiQ2xhc3NOb2RlTGlzdC5oIgogI2lu
Y2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOYW1lTm9k
ZUxpc3QuaCIKICNpbmNsdWRlICJOYW1lZEF0dHJNYXAuaCIKICNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC01MCw2ICs1Myw4IEBAIHR5cGVkZWYgSGFzaFNl
dDxOb2RlTGlzdCo+IE5vZGVMaXN0U2V0Owogc3RydWN0IE5vZGVMaXN0c05vZGVEYXRhIHsKICAg
ICBOb2RlTGlzdFNldCBtX2xpc3RzVG9Ob3RpZnk7CiAgICAgTm9kZUxpc3Q6OkNhY2hlcyBtX2No
aWxkTm9kZUxpc3RDYWNoZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIE5vZGVMaXN0OjpDYWNoZXM+
IG1fY2xhc3NOb2RlTGlzdENhY2hlczsKKyAgICBIYXNoTWFwPFN0cmluZywgTm9kZUxpc3Q6OkNh
Y2hlcz4gbV9uYW1lTm9kZUxpc3RDYWNoZXM7CiB9OwogCiAvLyBOb2RlTGlzdCB0aGF0IGxpbWl0
cyB0byBhIHBhcnRpY3VsYXIgdGFnLgpAQCAtMTM4LDcgKzE0Myw2IEBAIE5vZGU6Ok5vZGUoRG9j
dW1lbnQgKmRvYykKICAgICAgIG1fcHJldmlvdXMoMCksCiAgICAgICBtX25leHQoMCksCiAgICAg
ICBtX3JlbmRlcmVyKDApLAotICAgICAgbV9ub2RlTGlzdHMoMCksCiAgICAgICBtX3RhYkluZGV4
KDApLAogICAgICAgbV9oYXNJZChmYWxzZSksCiAgICAgICBtX2hhc0NsYXNzKGZhbHNlKSwKQEAg
LTE5MSw3ICsxOTUsNyBAQCBOb2RlOjp+Tm9kZSgpCiAjZW5kaWYKICAgICBpZiAocmVuZGVyZXIo
KSkKICAgICAgICAgZGV0YWNoKCk7Ci0gICAgZGVsZXRlIG1fbm9kZUxpc3RzOworCiAgICAgaWYg
KG1fcHJldmlvdXMpCiAgICAgICAgIG1fcHJldmlvdXMtPnNldE5leHRTaWJsaW5nKDApOwogICAg
IGlmIChtX25leHQpCkBAIC0yMTcsNyArMjIxLDcgQEAgdm9pZCBOb2RlOjpzZXROb2RlVmFsdWUo
Y29uc3QgU3RyaW5nJiAvKgogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Y2hpbGROb2Rlcygp
CiB7CiAgICAgaWYgKCFtX25vZGVMaXN0cykKLSAgICAgICAgbV9ub2RlTGlzdHMgPSBuZXcgTm9k
ZUxpc3RzTm9kZURhdGE7CisgICAgICAgIG1fbm9kZUxpc3RzLnNldChuZXcgTm9kZUxpc3RzTm9k
ZURhdGEpOwogCiAgICAgcmV0dXJuIG5ldyBDaGlsZE5vZGVMaXN0KHRoaXMsICZtX25vZGVMaXN0
cy0+bV9jaGlsZE5vZGVMaXN0Q2FjaGVzKTsKIH0KQEAgLTQzOCw3ICs0NDIsNyBAQCB1bnNpZ25l
ZCBOb2RlOjpub2RlSW5kZXgoKSBjb25zdAogdm9pZCBOb2RlOjpyZWdpc3Rlck5vZGVMaXN0KE5v
ZGVMaXN0KiBsaXN0KQogewogICAgIGlmICghbV9ub2RlTGlzdHMpCi0gICAgICAgIG1fbm9kZUxp
c3RzID0gbmV3IE5vZGVMaXN0c05vZGVEYXRhOworICAgICAgICBtX25vZGVMaXN0cy5zZXQobmV3
IE5vZGVMaXN0c05vZGVEYXRhKTsKICAgICBlbHNlIGlmICghbV9kb2N1bWVudC0+aGFzTm9kZUxp
c3RzKCkpCiAgICAgICAgIC8vIFdlIGhhdmVuJ3QgYmVlbiByZWNlaXZpbmcgbm90aWZpY2F0aW9u
cyB3aGlsZSB0aGVyZSB3ZXJlIG5vIHJlZ2lzdGVyZWQgbGlzdHMsIHNvIHRoZSBjYWNoZSBpcyBp
bnZhbGlkIG5vdy4KICAgICAgICAgbV9ub2RlTGlzdHMtPm1fY2hpbGROb2RlTGlzdENhY2hlcy5y
ZXNldCgpOwpAQCAtMTIwNyw2ICsxMjExLDIyIEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6
OmdldEVsZW1lbnRzQnkKICAgICByZXR1cm4gbmV3IFRhZ05vZGVMaXN0KHRoaXMsIG5hbWVzcGFj
ZVVSSS5pc0VtcHR5KCkgPyBudWxsQXRvbSA6IEF0b21pY1N0cmluZyhuYW1lc3BhY2VVUkkpLCBu
YW1lKTsKIH0KIAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeU5hbWUo
Y29uc3QgU3RyaW5nJiBlbGVtZW50TmFtZSkKK3sKKyAgICBpZiAoIW1fbm9kZUxpc3RzKQorICAg
ICAgICBtX25vZGVMaXN0cy5zZXQobmV3IE5vZGVMaXN0c05vZGVEYXRhKTsKKworICAgIHJldHVy
biBuZXcgTmFtZU5vZGVMaXN0KHRoaXMsIGVsZW1lbnROYW1lLCAmbV9ub2RlTGlzdHMtPm1fbmFt
ZU5vZGVMaXN0Q2FjaGVzLmFkZChlbGVtZW50TmFtZSwgTm9kZUxpc3Q6OkNhY2hlcygpKS5maXJz
dC0+c2Vjb25kKTsKK30KKworUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNC
eUNsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZXMpCit7CisgICAgaWYgKCFtX25vZGVM
aXN0cykKKyAgICAgICAgbV9ub2RlTGlzdHMuc2V0KG5ldyBOb2RlTGlzdHNOb2RlRGF0YSk7CisK
KyAgICByZXR1cm4gbmV3IENsYXNzTm9kZUxpc3QodGhpcywgY2xhc3NOYW1lcywgJm1fbm9kZUxp
c3RzLT5tX2NsYXNzTm9kZUxpc3RDYWNoZXMuYWRkKGNsYXNzTmFtZXMsIE5vZGVMaXN0OjpDYWNo
ZXMoKSkuZmlyc3QtPnNlY29uZCk7Cit9CisKIERvY3VtZW50ICpOb2RlOjpvd25lckRvY3VtZW50
KCkgY29uc3QKIHsKICAgICBEb2N1bWVudCAqZG9jID0gZG9jdW1lbnQoKTsKSW5kZXg6IFdlYkNv
cmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9u
IDI4ODQ3KQorKysgV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMiAr
MjQsMTMgQEAKICNpZm5kZWYgTm9kZV9oCiAjZGVmaW5lIE5vZGVfaAogCi0jaW5jbHVkZSAiRG9j
UHRyLmgiCiAjaW5jbHVkZSAiRGVwcmVjYXRlZFN0cmluZy5oIgorI2luY2x1ZGUgIkRvY1B0ci5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiVHJlZVNoYXJlZC5oIgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsNyArNDUsNiBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3Mg
S2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5hbWVkQXR0ck1hcDsKIGNsYXNzIE5vZGVMaXN0Owotc3Ry
dWN0IE5vZGVMaXN0c05vZGVEYXRhOwogY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OwogY2xh
c3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50OwpAQCAtNTQs
NiArNTQsNyBAQCBjbGFzcyBSZW5kZXJBcmVuYTsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNz
IFJlbmRlclN0eWxlOwogY2xhc3MgVGV4dFN0cmVhbTsKK3N0cnVjdCBOb2RlTGlzdHNOb2RlRGF0
YTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIApAQCAtNDUxLDYgKzQ1Miw5IEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVtZW50c0J5VGFnTmFtZShjb25z
dCBTdHJpbmcmKTsKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVtZW50c0J5VGFnTmFt
ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSk7
CiAKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVtZW50c0J5TmFtZShjb25zdCBTdHJp
bmcmIGVsZW1lbnROYW1lKTsKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lcyk7CisKIHByaXZhdGU6IC8vIG1lbWJl
cnMKICAgICBEb2NQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgTm9kZSogbV9wcmV2aW91
czsKQEAgLTQ2MSw3ICs0NjUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKSB7IH0KICAgICAKLSAgICBOb2RlTGlzdHNOb2RlRGF0YSogbV9ub2Rl
TGlzdHM7CisgICAgT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBtX25vZGVMaXN0czsKIAogICAg
IHNob3J0IG1fdGFiSW5kZXg7CiAKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI4ODQ3KQorKysgV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OTgsNiArNDk4LDE0IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHdpbmRvd0NvdW50
Q2FsbGJhY2soSlMKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgd2luZG93
cyk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGR1bXBDdXJyZW50Q3Vyc29yQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRp
b24KKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkp
OworICAgIGNvbnRyb2xsZXItPmR1bXBDdXJyZW50Q3Vyc29yKCk7CisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiAvLyBTdGF0aWMgVmFsdWVzCiAKIHN0YXRp
YyBKU1ZhbHVlUmVmIGdldEdsb2JhbEZsYWdDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCkBAIC01OTUsNiArNjAzLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5
b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJ0ZXN0UmVwYWludCIsIHRlc3RSZXBhaW50
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAid2FpdFVudGlsRG9uZSIsIHdhaXRVbnRpbERv
bmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ3aW5kb3dDb3VudCIsIHdpbmRvd0NvdW50
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiZHVtcEN1cnJlbnRDdXJzb3IiLCBkdW1wQ3Vy
cmVudEN1cnNvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgMCwgMCwgMCB9CiAgICAgfTsK
IApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCShyZXZpc2lvbiAyODg0NykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBnbG9iYWxGbGFnKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxG
bGFnOyB9CiAgICAgdm9pZCBzZXRHbG9iYWxGbGFnKGJvb2wgZ2xvYmFsRmxhZykgeyBtX2dsb2Jh
bEZsYWcgPSBnbG9iYWxGbGFnOyB9CiAKKyAgICB2b2lkIGR1bXBDdXJyZW50Q3Vyc29yKCk7CisK
KwogcHJpdmF0ZToKICAgICBib29sIG1fZHVtcEFzVGV4dDsKICAgICBib29sIG1fZHVtcEJhY2tG
b3J3YXJkTGlzdDsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDI4ODQ3KQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywxMSBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYlZp
ZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmR1bXBDdXJyZW50Q3Vyc29yKCkKK3sKKyAgICBOU0xvZyhAIkN1cnJyZW50
IEN1cnNvcjogJUAiLCBbTlNDdXJzb3IgY3VycmVudEN1cnNvcl0pOworfQorCiBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6fkxheW91dFRlc3RDb250cm9sbGVyKCkKIHsKIH0K
</data>
<flag name="review"
          id="7802"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17982</attachid>
            <date>2007-12-18 23:06:49 -0800</date>
            <delta_ts>2007-12-19 01:06:25 -0800</delta_ts>
            <desc>second try</desc>
            <filename>speedUpGEBCN2.diff</filename>
            <type>text/plain</type>
            <size>14450</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODg1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMDctMTItMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUxMQorICAgICAgICBTcGVlZCB1cCBD
bGFzc05vZGVMaXN0IGFuZCBOYW1lZE5vZGVMaXN0IGJ5IHVzaW5nIHRoZSBjYWNoaW5nIG1lY2hh
bmlzbSBlbXBsb3llZCBieSBDaGlsZE5vZGVMaXN0LgorICAgICAgICAtIFRoaXMgZ2l2ZSBhIH4y
LjE1eCBzcGVlZHVwIG9uIHRoZSBuYXRpdmUgdGVzdCBAIGh0dHA6Ly9lam9obi5vcmcvYXBwcy9j
bGFzc25hbWUvCisKKyAgICAgICAgKiBkb20vQ2hpbGROb2RlTGlzdC5jcHA6IFVzZSB0aGUgY2Fj
aGluZyBOb2RlTGlzdCBjb25zdHJ1Y3RvciB0byB0dXJuIG9uIGNhY2hpbmcuCisgICAgICAgIChX
ZWJDb3JlOjpDaGlsZE5vZGVMaXN0OjpDaGlsZE5vZGVMaXN0KToKKyAgICAgICAgKiBkb20vQ2xh
c3NOb2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGFzc05vZGVMaXN0OjpDbGFzc05v
ZGVMaXN0KToKKyAgICAgICAgKiBkb20vQ2xhc3NOb2RlTGlzdC5oOgorCisgICAgICAgIE1vdmUg
Z2V0RWxlbWVudHNCeU5hbWUgYW5kIGdldEVsZW1lbnRzQnlDbGFzc05hbWUgdG8gTm9kZSBzbyB0
aGV5CisgICAgICAgIGNhbiB1c2UgZWFzaWx5IGVtcGxveSB0aGUgY2FjaGluZyBhbHJlYWR5IHVz
ZWQgYnkgQ2hpbGROb2RlTGlzdHMuICBJbiB0aGUgY2FzZSBvZiAKKyAgICAgICAgZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSwgdGhpcyByZWR1Y2VzIGNvZGUgZHVwbGljYXRpb24gaW4gRWxlbWVudCBh
cyB3ZWxsCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKworICAgICAgICBNb3ZlIGdldEVsZW1lbnRzQnlDbGFzc05hbWUgdG8gTm9kZS4KKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKworICAg
ICAgICAqIGRvbS9OYW1lTm9kZUxpc3QuY3BwOiBVc2UgdGhlIGNhY2hpbmcgTm9kZUxpc3QgY29u
c3RydWN0b3IgdG8gdHVybiBvbiBjYWNoaW5nLgorICAgICAgICAoV2ViQ29yZTo6TmFtZU5vZGVM
aXN0OjpOYW1lTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZU5vZGVMaXN0OjppdGVt
KToKKyAgICAgICAgKiBkb20vTmFtZU5vZGVMaXN0Lmg6CisKKyAgICAgICAgQWRkIG1hcHMgb2Yg
Y2FjaGVzIGZvciBDbGFzc05vZGVMaXN0cyBhbmQgTmFtZU5vZGVMaXN0IHRvIE5vZGVMaXN0c05v
ZGVEYXRhLgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRhZ05v
ZGVMaXN0OjpUYWdOb2RlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6On5Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNo
aWxkTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVnaXN0ZXJOb2RlTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5TmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKToKKyAgICAgICAgKiBkb20vTm9kZS5o
OiBNYWtlIG1fbm9kZUxpc3RzIGFuIE93blB0ci4gIE1vdmVkIGdldEVsZW1lbnRzQnlOYW1lIGFu
ZCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIGhlcmUKKworICAgICAgICBBbGxvdyBzdWJjbGFzc2Vz
IHRvIGNob29zZSB3aGV0aGVyIHRoZXkgd2FudCB0byByZWNlaXZlIHRoZSBub3RpZmljYXRpb25z
IHVzaW5nIGEgbmV3IGJpdC4KKyAgICAgICAgKiBkb20vTm9kZUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZUxpc3Q6Ok5vZGVMaXN0KToKKyAgICAgICAgKiBkb20vTm9kZUxpc3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0OjpuZWVkc05vdGlmaWNhdGlvbnMpOgorCiAyMDA3
LTEyLTE4ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0
YW1wZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBXZWJDb3JlL2RvbS9DaGlsZE5vZGVM
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmNwcAkocmV2
aXNpb24gMjg4NDcpCisrKyBXZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQ2hpbGROb2RlTGlzdDo6Q2hpbGROb2RlTGlzdChOb2RlKiBuLCBOb2Rl
TGlzdDo6Q2FjaGVzKiBpbmZvKQotICAgIDogTm9kZUxpc3QobiwgaW5mbykKKyAgICA6IE5vZGVM
aXN0KG4sIGluZm8sIGZhbHNlKQogewogfQogCkluZGV4OiBXZWJDb3JlL2RvbS9DbGFzc05vZGVM
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmNwcAkocmV2
aXNpb24gMjg4NDcpCisrKyBXZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsMTAgKzM2LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2xhc3NO
b2RlTGlzdDo6Q2xhc3NOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IHJvb3ROb2RlLCBjb25zdCBB
dG9taWNTdHJpbmcmIGNsYXNzTmFtZSkKLSAgICA6IE5vZGVMaXN0KHJvb3ROb2RlKQorQ2xhc3NO
b2RlTGlzdDo6Q2xhc3NOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IHJvb3ROb2RlLCBjb25zdCBT
dHJpbmcmIGNsYXNzTmFtZXMsIE5vZGVMaXN0OjpDYWNoZXMqIGNhY2hlcykKKyAgICA6IE5vZGVM
aXN0KHJvb3ROb2RlLCBjYWNoZXMsIHRydWUpCiB7Ci0gICAgbV9jbGFzc05hbWVzLnBhcnNlQ2xh
c3NBdHRyaWJ1dGUoY2xhc3NOYW1lLCBtX3Jvb3ROb2RlLT5kb2N1bWVudCgpLT5pbkNvbXBhdE1v
ZGUoKSk7CisgICAgbV9jbGFzc05hbWVzLnBhcnNlQ2xhc3NBdHRyaWJ1dGUoY2xhc3NOYW1lcywg
bV9yb290Tm9kZS0+ZG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkpOwogfQogCiB1bnNpZ25lZCBD
bGFzc05vZGVMaXN0OjpsZW5ndGgoKSBjb25zdApJbmRleDogV2ViQ29yZS9kb20vQ2xhc3NOb2Rl
TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuaAkocmV2aXNp
b24gMjg4NDcpCisrKyBXZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDE1ICszMCwxNiBAQAogI2lmbmRlZiBDbGFzc05vZGVMaXN0X2gKICNkZWZpbmUgQ2xh
c3NOb2RlTGlzdF9oCiAKLSNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKICNpbmNsdWRlICJDbGFz
c05hbWVzLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CisgICAgY2xhc3MgU3RyaW5nOworCiAgICAgY2xhc3MgQ2xhc3NOb2RlTGlzdCA6IHB1YmxpYyBO
b2RlTGlzdCB7CiAgICAgcHVibGljOgotICAgICAgICBDbGFzc05vZGVMaXN0KFBhc3NSZWZQdHI8
Tm9kZT4gcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lKTsKKyAgICAgICAg
Q2xhc3NOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IHJvb3ROb2RlLCBjb25zdCBTdHJpbmcmIGNs
YXNzTmFtZXMsIE5vZGVMaXN0OjpDYWNoZXMqKTsKIAogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjg4NDcpCisrKyBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0OTUsMTYgKzM0OTUsNiBAQCBIVE1M
Q29sbGVjdGlvbjo6Q29sbGVjdGlvbkluZm8qIERvY3VtZW50CiAgICAgcmV0dXJuIGl0ZXItPnNl
Y29uZDsKIH0KIAotUGFzc1JlZlB0cjxOYW1lTm9kZUxpc3Q+IERvY3VtZW50OjpnZXRFbGVtZW50
c0J5TmFtZShjb25zdCBTdHJpbmcmIGVsZW1lbnROYW1lKQotewotICAgIHJldHVybiBuZXcgTmFt
ZU5vZGVMaXN0KHRoaXMsIGVsZW1lbnROYW1lKTsKLX0KLQotUGFzc1JlZlB0cjxOb2RlTGlzdD4g
RG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY29uc3QgU3RyaW5nJiBjbGFzc05hbWUp
Ci17Ci0gICAgcmV0dXJuIG5ldyBDbGFzc05vZGVMaXN0KHRoaXMsIGNsYXNzTmFtZSk7Ci19Ci0K
IHZvaWQgRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAgc2V0UGFyc2luZyhmYWxz
ZSk7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI4ODQ3KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjExLDkgKzIxMSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFN0cmluZyBiYXNlVVJJKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPE5vZGU+IGFkb3B0Tm9k
ZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIAotICAgIFBh
c3NSZWZQdHI8TmFtZU5vZGVMaXN0PiBnZXRFbGVtZW50c0J5TmFtZShjb25zdCBTdHJpbmcmIGVs
ZW1lbnROYW1lKTsKLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lKTsKIAogICAgIFBhc3NSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+IGltYWdlcygpOwogICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGVtYmVkcygp
OwpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDI4ODQ3KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMjMsMTEgKzExMjMsNiBAQCBSZW5kZXJTdHlsZSogRWxl
bWVudDo6Y29tcHV0ZWRTdHlsZSgpCiAgICAgcmV0dXJuIHJkLT5tX2NvbXB1dGVkU3R5bGU7CiB9
CiAKLVBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEVsZW1lbnQ6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
Y29uc3QgU3RyaW5nJiBjbGFzc05hbWUpCi17Ci0gICAgcmV0dXJuIG5ldyBDbGFzc05vZGVMaXN0
KHRoaXMsIGNsYXNzTmFtZSk7Ci19Ci0KIHZvaWQgRWxlbWVudDo6Y2FuY2VsRm9jdXNBcHBlYXJh
bmNlVXBkYXRlKCkKIHsKICAgICBpZiAoRWxlbWVudFJhcmVEYXRhKiByZCA9IHJhcmVEYXRhKCkp
CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RWxlbWVudC5oCShyZXZpc2lvbiAyODg0NykKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTYyLDggKzE2Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Zm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24gPSB0cnVlKTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9u
KTsKICAgICB2b2lkIGJsdXIoKTsKLSAgICAKLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyYpOwogCiAjaWZuZGVmIE5ERUJVRwogICAg
IHZpcnR1YWwgdm9pZCBkdW1wKFRleHRTdHJlYW0qICwgRGVwcmVjYXRlZFN0cmluZyBpbmQgPSAi
IikgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5jcHAJKHJldmlzaW9uIDI4ODQ3KQorKysgV2Vi
Q29yZS9kb20vTmFtZU5vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLU5h
bWVOb2RlTGlzdDo6TmFtZU5vZGVMaXN0KE5vZGUqIHJvb3QsIGNvbnN0IFN0cmluZyYgbmFtZSkK
LSAgICA6IE5vZGVMaXN0KHJvb3QpCitOYW1lTm9kZUxpc3Q6Ok5hbWVOb2RlTGlzdChOb2RlKiBy
b290LCBjb25zdCBTdHJpbmcmIG5hbWUsIE5vZGVMaXN0OjpDYWNoZXMqIGNhY2hlcykKKyAgICA6
IE5vZGVMaXN0KHJvb3QsIGNhY2hlcywgdHJ1ZSkKICAgICAsIG1fbm9kZU5hbWUobmFtZSkKIHsK
IH0KQEAgLTQxLDcgKzQxLDcgQEAgdW5zaWduZWQgTmFtZU5vZGVMaXN0OjpsZW5ndGgoKSBjb25z
dAogICAgIHJldHVybiByZWN1cnNpdmVMZW5ndGgoKTsKIH0KIAotTm9kZSogTmFtZU5vZGVMaXN0
OjppdGVtICh1bnNpZ25lZCBpbmRleCkgY29uc3QKK05vZGUqIE5hbWVOb2RlTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAgICByZXR1cm4gcmVjdXJzaXZlSXRlbShpbmRleCk7
CiB9CkluZGV4OiBXZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9OYW1lTm9kZUxpc3QuaAkocmV2aXNpb24gMjg4NDcpCisrKyBXZWJDb3JlL2RvbS9O
YW1lTm9kZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgKi8KIGNsYXNzIE5hbWVOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7CiBw
dWJsaWM6Ci0gICAgTmFtZU5vZGVMaXN0KE5vZGUqIHJvb3QsIGNvbnN0IFN0cmluZyYgbmFtZSk7
CisgICAgTmFtZU5vZGVMaXN0KE5vZGUqIHJvb3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgTm9kZUxp
c3Q6OkNhY2hlcyopOwogCiAgICAgLy8gRE9NIG1ldGhvZHMgb3ZlcnJpZGRlbiBmcm9tICBwYXJl
bnQgY2xhc3NlcwogCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE5vZGUq
IGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCiAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90
IHBhcnQgb2YgRE9NKQorICAgIAogICAgIHZpcnR1YWwgdm9pZCByb290Tm9kZUF0dHJpYnV0ZUNo
YW5nZWQoKSB7IE5vZGVMaXN0Ojpyb290Tm9kZUNoaWxkcmVuQ2hhbmdlZCgpOyB9CiAKIHByb3Rl
Y3RlZDoKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL05vZGUuY3BwCShyZXZpc2lvbiAyODg0NykKKysrIFdlYkNvcmUvZG9tL05vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxNCArMjYsMTcgQEAKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIK
ICNpbmNsdWRlICJDaGlsZE5vZGVMaXN0LmgiCisjaW5jbHVkZSAiQ2xhc3NOb2RlTGlzdC5oIgog
I2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOYW1l
Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJOYW1lZEF0dHJNYXAuaCIKICNpbmNsdWRlICJSZW5kZXJP
YmplY3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC01MCw2ICs1Myw4IEBAIHR5cGVkZWYgSGFz
aFNldDxOb2RlTGlzdCo+IE5vZGVMaXN0U2V0Owogc3RydWN0IE5vZGVMaXN0c05vZGVEYXRhIHsK
ICAgICBOb2RlTGlzdFNldCBtX2xpc3RzVG9Ob3RpZnk7CiAgICAgTm9kZUxpc3Q6OkNhY2hlcyBt
X2NoaWxkTm9kZUxpc3RDYWNoZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIE5vZGVMaXN0OjpDYWNo
ZXM+IG1fY2xhc3NOb2RlTGlzdENhY2hlczsKKyAgICBIYXNoTWFwPFN0cmluZywgTm9kZUxpc3Q6
OkNhY2hlcz4gbV9uYW1lTm9kZUxpc3RDYWNoZXM7CiB9OwogCiAvLyBOb2RlTGlzdCB0aGF0IGxp
bWl0cyB0byBhIHBhcnRpY3VsYXIgdGFnLgpAQCAtNjgsNyArNzMsOSBAQCBwcml2YXRlOgogfTsK
IAogaW5saW5lIFRhZ05vZGVMaXN0OjpUYWdOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IHJvb3RO
b2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbE5hbWUpCi0gICAgOiBOb2RlTGlzdChyb290Tm9kZSksIG1fbmFtZXNwYWNlVVJJKG5h
bWVzcGFjZVVSSSksIG1fbG9jYWxOYW1lKGxvY2FsTmFtZSkKKyAgICA6IE5vZGVMaXN0KHJvb3RO
b2RlLCB0cnVlKQorICAgICwgbV9uYW1lc3BhY2VVUkkobmFtZXNwYWNlVVJJKQorICAgICwgbV9s
b2NhbE5hbWUobG9jYWxOYW1lKQogewogICAgIEFTU0VSVChtX25hbWVzcGFjZVVSSS5pc051bGwo
KSB8fCAhbV9uYW1lc3BhY2VVUkkuaXNFbXB0eSgpKTsKIH0KQEAgLTEzOCw3ICsxNDUsNiBAQCBO
b2RlOjpOb2RlKERvY3VtZW50ICpkb2MpCiAgICAgICBtX3ByZXZpb3VzKDApLAogICAgICAgbV9u
ZXh0KDApLAogICAgICAgbV9yZW5kZXJlcigwKSwKLSAgICAgIG1fbm9kZUxpc3RzKDApLAogICAg
ICAgbV90YWJJbmRleCgwKSwKICAgICAgIG1faGFzSWQoZmFsc2UpLAogICAgICAgbV9oYXNDbGFz
cyhmYWxzZSksCkBAIC0xOTEsNyArMTk3LDcgQEAgTm9kZTo6fk5vZGUoKQogI2VuZGlmCiAgICAg
aWYgKHJlbmRlcmVyKCkpCiAgICAgICAgIGRldGFjaCgpOwotICAgIGRlbGV0ZSBtX25vZGVMaXN0
czsKKwogICAgIGlmIChtX3ByZXZpb3VzKQogICAgICAgICBtX3ByZXZpb3VzLT5zZXROZXh0U2li
bGluZygwKTsKICAgICBpZiAobV9uZXh0KQpAQCAtMjE3LDcgKzIyMyw3IEBAIHZvaWQgTm9kZTo6
c2V0Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYgLyoKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6
OmNoaWxkTm9kZXMoKQogewogICAgIGlmICghbV9ub2RlTGlzdHMpCi0gICAgICAgIG1fbm9kZUxp
c3RzID0gbmV3IE5vZGVMaXN0c05vZGVEYXRhOworICAgICAgICBtX25vZGVMaXN0cy5zZXQobmV3
IE5vZGVMaXN0c05vZGVEYXRhKTsKIAogICAgIHJldHVybiBuZXcgQ2hpbGROb2RlTGlzdCh0aGlz
LCAmbV9ub2RlTGlzdHMtPm1fY2hpbGROb2RlTGlzdENhY2hlcyk7CiB9CkBAIC00MzgsNyArNDQ0
LDcgQEAgdW5zaWduZWQgTm9kZTo6bm9kZUluZGV4KCkgY29uc3QKIHZvaWQgTm9kZTo6cmVnaXN0
ZXJOb2RlTGlzdChOb2RlTGlzdCogbGlzdCkKIHsKICAgICBpZiAoIW1fbm9kZUxpc3RzKQotICAg
ICAgICBtX25vZGVMaXN0cyA9IG5ldyBOb2RlTGlzdHNOb2RlRGF0YTsKKyAgICAgICAgbV9ub2Rl
TGlzdHMuc2V0KG5ldyBOb2RlTGlzdHNOb2RlRGF0YSk7CiAgICAgZWxzZSBpZiAoIW1fZG9jdW1l
bnQtPmhhc05vZGVMaXN0cygpKQogICAgICAgICAvLyBXZSBoYXZlbid0IGJlZW4gcmVjZWl2aW5n
IG5vdGlmaWNhdGlvbnMgd2hpbGUgdGhlcmUgd2VyZSBubyByZWdpc3RlcmVkIGxpc3RzLCBzbyB0
aGUgY2FjaGUgaXMgaW52YWxpZCBub3cuCiAgICAgICAgIG1fbm9kZUxpc3RzLT5tX2NoaWxkTm9k
ZUxpc3RDYWNoZXMucmVzZXQoKTsKQEAgLTEyMDcsNiArMTIxMywyMiBAQCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5CiAgICAgcmV0dXJuIG5ldyBUYWdOb2RlTGlzdCh0
aGlzLCBuYW1lc3BhY2VVUkkuaXNFbXB0eSgpID8gbnVsbEF0b20gOiBBdG9taWNTdHJpbmcobmFt
ZXNwYWNlVVJJKSwgbmFtZSk7CiB9CiAKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVs
ZW1lbnRzQnlOYW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudE5hbWUpCit7CisgICAgaWYgKCFtX25v
ZGVMaXN0cykKKyAgICAgICAgbV9ub2RlTGlzdHMuc2V0KG5ldyBOb2RlTGlzdHNOb2RlRGF0YSk7
CisKKyAgICByZXR1cm4gbmV3IE5hbWVOb2RlTGlzdCh0aGlzLCBlbGVtZW50TmFtZSwgJm1fbm9k
ZUxpc3RzLT5tX25hbWVOb2RlTGlzdENhY2hlcy5hZGQoZWxlbWVudE5hbWUsIE5vZGVMaXN0OjpD
YWNoZXMoKSkuZmlyc3QtPnNlY29uZCk7Cit9CisKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6
OmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY29uc3QgU3RyaW5nJiBjbGFzc05hbWVzKQoreworICAg
IGlmICghbV9ub2RlTGlzdHMpCisgICAgICAgIG1fbm9kZUxpc3RzLnNldChuZXcgTm9kZUxpc3Rz
Tm9kZURhdGEpOworCisgICAgcmV0dXJuIG5ldyBDbGFzc05vZGVMaXN0KHRoaXMsIGNsYXNzTmFt
ZXMsICZtX25vZGVMaXN0cy0+bV9jbGFzc05vZGVMaXN0Q2FjaGVzLmFkZChjbGFzc05hbWVzLCBO
b2RlTGlzdDo6Q2FjaGVzKCkpLmZpcnN0LT5zZWNvbmQpOworfQorCiBEb2N1bWVudCAqTm9kZTo6
b3duZXJEb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnQgKmRvYyA9IGRvY3VtZW50KCk7
CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9k
ZS5oCShyZXZpc2lvbiAyODg0NykKKysrIFdlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQsMTIgKzI0LDEzIEBACiAjaWZuZGVmIE5vZGVfaAogI2RlZmluZSBOb2RlX2gKIAot
I2luY2x1ZGUgIkRvY1B0ci5oIgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRTdHJpbmcuaCIKKyNpbmNs
dWRlICJEb2NQdHIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlRy
ZWVTaGFyZWQuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDcgKzQ1LDYgQEAgY2xhc3MgSW50
UmVjdDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBOYW1lZEF0dHJNYXA7CiBjbGFzcyBO
b2RlTGlzdDsKLXN0cnVjdCBOb2RlTGlzdHNOb2RlRGF0YTsKIGNsYXNzIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFBsYXRmb3JtV2hlZWxF
dmVudDsKQEAgLTU0LDYgKzU0LDcgQEAgY2xhc3MgUmVuZGVyQXJlbmE7CiBjbGFzcyBSZW5kZXJP
YmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFRleHRTdHJlYW07CitzdHJ1Y3QgTm9k
ZUxpc3RzTm9kZURhdGE7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTQ1MSw2
ICs0NTIsOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNC
eVRhZ05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxl
bWVudHNCeVRhZ05hbWVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5n
JiBsb2NhbE5hbWUpOwogCisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeU5h
bWUoY29uc3QgU3RyaW5nJiBlbGVtZW50TmFtZSk7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZXMpOworCiBwcml2
YXRlOiAvLyBtZW1iZXJzCiAgICAgRG9jUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIE5v
ZGUqIG1fcHJldmlvdXM7CkBAIC00NjEsNyArNDY1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkgeyB9CiAgICAgCi0gICAgTm9kZUxpc3RzTm9k
ZURhdGEqIG1fbm9kZUxpc3RzOworICAgIE93blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbV9ub2Rl
TGlzdHM7CiAKICAgICBzaG9ydCBtX3RhYkluZGV4OwogCkluZGV4OiBXZWJDb3JlL2RvbS9Ob2Rl
TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZUxpc3QuY3BwCShyZXZpc2lv
biAyODg0NykKKysrIFdlYkNvcmUvZG9tL05vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsMTggKzMwLDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTm9kZUxpc3Q6Ok5vZGVM
aXN0KFBhc3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUpCitOb2RlTGlzdDo6Tm9kZUxpc3QoUGFzc1Jl
ZlB0cjxOb2RlPiByb290Tm9kZSwgYm9vbCBuZWVkc05vdGlmaWNhdGlvbnMpCiAgICAgOiBtX3Jv
b3ROb2RlKHJvb3ROb2RlKQogICAgICwgbV9jYWNoZXMobmV3IENhY2hlcykKICAgICAsIG1fb3du
c0NhY2hlcyh0cnVlKQorICAgICwgbV9uZWVkc05vdGlmaWNhdGlvbnMobmVlZHNOb3RpZmljYXRp
b25zKQogewogICAgIG1fcm9vdE5vZGUtPnJlZ2lzdGVyTm9kZUxpc3QodGhpcyk7CiB9ICAgIAog
Ci1Ob2RlTGlzdDo6Tm9kZUxpc3QoUGFzc1JlZlB0cjxOb2RlPiByb290Tm9kZSwgTm9kZUxpc3Q6
OkNhY2hlcyogaW5mbykKK05vZGVMaXN0OjpOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IHJvb3RO
b2RlLCBOb2RlTGlzdDo6Q2FjaGVzKiBpbmZvLCBib29sIG5lZWRzTm90aWZpY2F0aW9ucykKICAg
ICA6IG1fcm9vdE5vZGUocm9vdE5vZGUpCiAgICAgLCBtX2NhY2hlcyhpbmZvKQogICAgICwgbV9v
d25zQ2FjaGVzKGZhbHNlKQorICAgICwgbV9uZWVkc05vdGlmaWNhdGlvbnMobmVlZHNOb3RpZmlj
YXRpb25zKQogewogICAgIG1fcm9vdE5vZGUtPnJlZ2lzdGVyTm9kZUxpc3QodGhpcyk7CiB9ICAg
IApJbmRleDogV2ViQ29yZS9kb20vTm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Ob2RlTGlzdC5oCShyZXZpc2lvbiAyODg0NykKKysrIFdlYkNvcmUvZG9tL05vZGVMaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDExICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wg
aXNJdGVtQ2FjaGVWYWxpZCA6IDE7CiAgICAgfTsKIAotICAgIE5vZGVMaXN0KFBhc3NSZWZQdHI8
Tm9kZT4gcm9vdE5vZGUpOwotICAgIE5vZGVMaXN0KFBhc3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUs
IENhY2hlcyopOworICAgIE5vZGVMaXN0KFBhc3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIGJvb2wg
bmVlZHNOb3RpZmljYXRpb25zKTsKKyAgICBOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IHJvb3RO
b2RlLCBDYWNoZXMqLCBib29sIG5lZWRzTm90aWZpY2F0aW9ucyk7CiAgICAgdmlydHVhbCB+Tm9k
ZUxpc3QoKTsKIAotICAgIGJvb2wgbmVlZHNOb3RpZmljYXRpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9vd25zQ2FjaGVzOyB9CisgICAgYm9vbCBuZWVkc05vdGlmaWNhdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX25lZWRzTm90aWZpY2F0aW9uczsgfQogCiAgICAgLy8gRE9NIG1ldGhvZHMgJiBhdHRy
aWJ1dGVzIGZvciBOb2RlTGlzdAogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qg
PSAwOwpAQCAtNzMsNiArNzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPE5vZGU+IG1fcm9v
dE5vZGU7CiAgICAgbXV0YWJsZSBDYWNoZXMqIG1fY2FjaGVzOwogICAgIGJvb2wgbV9vd25zQ2Fj
aGVzOworICAgIGJvb2wgbV9uZWVkc05vdGlmaWNhdGlvbnM7CiAKICBwcml2YXRlOgogICAgIE5v
ZGUqIGl0ZW1Gb3J3YXJkc0Zyb21DdXJyZW50KE5vZGUqIHN0YXJ0LCB1bnNpZ25lZCBvZmZzZXQs
IGludCByZW1haW5pbmdPZmZzZXQpIGNvbnN0Owo=
</data>
<flag name="review"
          id="7804"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>