<?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>7486</bug_id>
          
          <creation_ts>2006-02-26 18:37:02 -0800</creation_ts>
          <short_desc>a first step in improving String/StringImpl API -- use &quot;s&quot; and &quot;l&quot; less</short_desc>
          <delta_ts>2006-02-27 08:52:35 -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>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>34080</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-26 18:37:02 -0800</bug_when>
    <thetext>I have a patch that replaces many uses of StringImpl::s and StringImpl::l with StringImpl::unicode() and StringImpl::length().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34081</commentid>
    <comment_count>1</comment_count>
      <attachid>6750</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-26 18:37:43 -0800</bug_when>
    <thetext>Created attachment 6750
remove most uses of s and l, especially the two places that set them directly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34111</commentid>
    <comment_count>2</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-26 23:32:31 -0800</bug_when>
    <thetext>r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6750</attachid>
            <date>2006-02-26 18:37:43 -0800</date>
            <delta_ts>2006-02-26 23:22:23 -0800</delta_ts>
            <desc>remove most uses of s and l, especially the two places that set them directly</desc>
            <filename>StringPatch.txt</filename>
            <type>text/plain</type>
            <size>23405</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2h0bWwvaHRtbHBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvaHRt
bC9odG1scGFyc2VyLmNwcAkocmV2aXNpb24gMTI5OTApCisrKyBraHRtbC9odG1sL2h0bWxwYXJz
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODUsOSArNDg1LDkgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgRE9NU3RyaW5nSW1w
bCAqaSA9IHQtPnN0cmluZygpOwogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcG9z
ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBvcyA8IGktPmwgJiYgKCooaS0+cytw
b3MpID09IFFDaGFyKCcgJykgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICooaS0+cytwb3MpID09IFFDaGFyKDB4YTApKSkgcG9zKys7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChwb3MgPT0gaS0+bCkKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBvcyA8
IGktPmxlbmd0aCgpICYmICgoKmkpW3Bvc10gPT0gJyAnIHx8ICgqaSlbcG9zXSA9PSBRQ2hhcigw
eGEwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHBvcyA9PSBpLT5sZW5ndGgoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Np
Ymx5TW92ZVN0cmF5Q29udGVudCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBpZiAocG9zc2libHlNb3ZlU3RyYXlDb250ZW50KSB7CkluZGV4OiBwbGF0Zm9ybS9B
dG9taWNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL0F0b21pY1N0cmluZy5jcHAJ
KHJldmlzaW9uIDEyOTkwKQorKysgcGxhdGZvcm0vQXRvbWljU3RyaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDQsOCArNDQsOCBAQAogCiAgICAgc3RhdGljIGJvb2wgZXF1YWwoU3RyaW5nSW1w
bCogciwgY29uc3QgY2hhciogcykKICAgICB7Ci0gICAgICAgIGludCBsZW5ndGggPSByLT5sOwot
ICAgICAgICBjb25zdCBRQ2hhciogZCA9IHItPnM7CisgICAgICAgIGludCBsZW5ndGggPSByLT5s
ZW5ndGgoKTsKKyAgICAgICAgY29uc3QgUUNoYXIqIGQgPSByLT51bmljb2RlKCk7CiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpICE9IGxlbmd0aDsgKytpKQogICAgICAgICAgICAgaWYgKGRbaV0g
IT0gc1tpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05NSwxMiArOTUsMTIg
QEAKIAogICAgIHN0YXRpYyBib29sIGVxdWFsKFN0cmluZ0ltcGwqIGNvbnN0JiBzdHIsIGNvbnN0
IFFDaGFyQnVmZmVyJiBidWYpCiAgICAgewotICAgICAgICB1aW50IHN0ckxlbmd0aCA9IHN0ci0+
bDsKKyAgICAgICAgdWludCBzdHJMZW5ndGggPSBzdHItPmxlbmd0aCgpOwogICAgICAgICB1aW50
IGJ1Zkxlbmd0aCA9IGJ1Zi5sZW5ndGg7CiAgICAgICAgIGlmIChzdHJMZW5ndGggIT0gYnVmTGVu
Z3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgY29uc3Qg
dWludDMyX3QqIHN0ckNoYXJzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHN0
ci0+cyk7CisgICAgICAgIGNvbnN0IHVpbnQzMl90KiBzdHJDaGFycyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDMyX3QqPihzdHItPnVuaWNvZGUoKSk7CiAgICAgICAgIGNvbnN0IHVpbnQz
Ml90KiBidWZDaGFycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWYucyk7
CiAgICAgICAgIAogICAgICAgICB1aW50IGhhbGZMZW5ndGggPSBzdHJMZW5ndGggPj4gMTsKQEAg
LTE0Myw3ICsxNDMsNyBAQAogICAgIGlmICghciB8fCByLT5faW5UYWJsZSkKICAgICAgICAgcmV0
dXJuIHI7CiAKLSAgICBpZiAoci0+bCA9PSAwKQorICAgIGlmIChyLT5sZW5ndGgoKSA9PSAwKQog
ICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6ZW1wdHkoKTsKICAgICAKICAgICBTdHJpbmdJbXBs
KiByZXN1bHQgPSAqc3RyaW5nVGFibGUtPmFkZChyKS5maXJzdDsKSW5kZXg6IHBsYXRmb3JtL1N0
cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9TdHJpbmdJbXBsLmgJKHJldmlzaW9u
IDEyOTkwKQorKysgcGxhdGZvcm0vU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwx
MCArMjQsMTEgQEAKICNpZm5kZWYgU3RyaW5nSW1wbF9oCiAjZGVmaW5lIFN0cmluZ0ltcGxfaAog
CisjaW5jbHVkZSAiUVN0cmluZy5oIgogI2luY2x1ZGUgIlNoYXJlZC5oIgorI2luY2x1ZGUgPGt4
bWxjb3JlL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8a3htbGNvcmUvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8UVN0cmluZy5oPgogCiAjaWYgX19BUFBMRV9fCiAj
aW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KQEAgLTU4LDYgKzU5LDcg
QEAKICAgICBTdHJpbmdJbXBsKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW4pOwogICAgIH5TdHJp
bmdJbXBsKCk7CiAKKyAgICBRQ2hhciogdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIHM7IH0gLy8g
d2lsbCBiZSBjaGFuZ2VkIHRvIGNvbnN0IFFDaGFyKiBldmVudHVhbGx5CiAgICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbDsgfQogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBj
b25zdCB7IGlmIChfaGFzaCA9PSAwKSBfaGFzaCA9IGNvbXB1dGVIYXNoKHMsIGwpOyByZXR1cm4g
X2hhc2g7IH0KQEAgLTc1LDcgKzc3LDcgQEAKIAogICAgIGNvbnN0IFFDaGFyJiBvcGVyYXRvcltd
IChpbnQgcG9zKSBjb25zdCB7IHJldHVybiBzW3Bvc107IH0KIAotICAgIGtodG1sOjpMZW5ndGgg
dG9MZW5ndGgoKSBjb25zdDsKKyAgICBMZW5ndGggdG9MZW5ndGgoKSBjb25zdDsKICAgICAKICAg
ICBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5z
T25seVdoaXRlc3BhY2UodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuKSBjb25zdDsKQEAgLTgz
LDggKzg1LDggQEAKICAgICAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UsIHVubGlrZSBRU3Ry
aW5nCiAgICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7CiAKLSAgICBraHRtbDo6TGVu
Z3RoKiB0b0Nvb3Jkc0FycmF5KGludCYgbGVuKSBjb25zdDsKLSAgICBraHRtbDo6TGVuZ3RoKiB0
b0xlbmd0aEFycmF5KGludCYgbGVuKSBjb25zdDsKKyAgICBMZW5ndGgqIHRvQ29vcmRzQXJyYXko
aW50JiBsZW4pIGNvbnN0OworICAgIExlbmd0aCogdG9MZW5ndGhBcnJheShpbnQmIGxlbikgY29u
c3Q7CiAgICAgYm9vbCBpc0xvd2VyKCkgY29uc3Q7CiAgICAgU3RyaW5nSW1wbCogbG93ZXIoKSBj
b25zdDsKICAgICBTdHJpbmdJbXBsKiB1cHBlcigpIGNvbnN0OwpAQCAtMTQyLDE5ICsxNDQsMTgg
QEAKICAgICAgICAgICAgIGlmIChhID09IGIpIHJldHVybiB0cnVlOwogICAgICAgICAgICAgaWYg
KCFhIHx8ICFiKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHVuc2ln
bmVkIGFMZW5ndGggPSBhLT5sOwotICAgICAgICAgICAgdW5zaWduZWQgYkxlbmd0aCA9IGItPmw7
CisgICAgICAgICAgICB1bnNpZ25lZCBhTGVuZ3RoID0gYS0+bGVuZ3RoKCk7CisgICAgICAgICAg
ICB1bnNpZ25lZCBiTGVuZ3RoID0gYi0+bGVuZ3RoKCk7CiAgICAgICAgICAgICBpZiAoYUxlbmd0
aCAhPSBiTGVuZ3RoKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgY29uc3QgdWludDMyX3QqIGFDaGFycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDMyX3QqPihhLT5zKTsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90KiBiQ2hh
cnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYi0+cyk7CisgICAgICAgICAg
ICBjb25zdCB1aW50MzJfdCogYUNoYXJzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf
dCo+KGEtPnVuaWNvZGUoKSk7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCogYkNoYXJzID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGItPnVuaWNvZGUoKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIHVuc2lnbmVkIGhhbGZMZW5ndGggPSBhTGVuZ3RoID4+IDE7Ci0g
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGhhbGZMZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBoYWxmTGVuZ3RoOyArK2kpCiAg
ICAgICAgICAgICAgICAgaWYgKCphQ2hhcnMrKyAhPSAqYkNoYXJzKyspCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKGFMZW5ndGggJiAxICYmICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90
Kj4oYUNoYXJzKSAhPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGJDaGFycykp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcyLDggKzE3Myw4IEBACiAgICAg
ICAgIC8vIGh0dHA6Ly93d3cuYXppbGxpb25tb25rZXlzLmNvbS9xZWQvaGFzaC5odG1sCiAgICAg
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OlN0cmluZ0ltcGwqIHN0cikK
ICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbCA9IHN0ci0+bDsKLSAgICAgICAgICAg
IFFDaGFyKiBzID0gc3RyLT5zOworICAgICAgICAgICAgdW5zaWduZWQgbCA9IHN0ci0+bGVuZ3Ro
KCk7CisgICAgICAgICAgICBjb25zdCBRQ2hhciogcyA9IHN0ci0+dW5pY29kZSgpOwogICAgICAg
ICAgICAgdWludDMyX3QgaGFzaCA9IFBISTsKICAgICAgICAgICAgIHVpbnQzMl90IHRtcDsKICAg
ICAgICAgICAgIApAQCAtMjYyLDExICsyNjMsMTEgQEAKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGEgPT0gYikgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBpZiAoIWEgfHwgIWIpIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGEtPmw7Ci0gICAgICAgICAg
ICBpZiAobGVuZ3RoICE9IGItPmwpCisgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhLT5s
ZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChsZW5ndGggIT0gYi0+bGVuZ3RoKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29uc3QgUUNoYXIqIGFzID0gYS0+
czsKLSAgICAgICAgICAgIGNvbnN0IFFDaGFyKiBicyA9IGItPnM7CisgICAgICAgICAgICBjb25z
dCBRQ2hhciogYXMgPSBhLT51bmljb2RlKCk7CisgICAgICAgICAgICBjb25zdCBRQ2hhciogYnMg
PSBiLT51bmljb2RlKCk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGxl
bmd0aDsgKytpKQogICAgICAgICAgICAgICAgIGlmIChhc1tpXS5sb3dlcigpICE9IGJzW2ldLmxv
d2VyKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IHJlbmRlcmlu
Zy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJU
ZXh0RnJhZ21lbnQuY3BwCShyZXZpc2lvbiAxMjk5MCkKKysrIHJlbmRlcmluZy9SZW5kZXJUZXh0
RnJhZ21lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiB9CiAKIFJlbmRl
clRleHRGcmFnbWVudDo6UmVuZGVyVGV4dEZyYWdtZW50KERPTTo6Tm9kZUltcGwqIG5vZGUsIERP
TTo6RE9NU3RyaW5nSW1wbCogc3RyKQotICAgIDogUmVuZGVyVGV4dChub2RlLCBzdHIpLCBtX3N0
YXJ0KDApLCBtX2VuZChzdHIgPyBzdHItPmwgOiAwKSwgbV9nZW5lcmF0ZWRDb250ZW50U3RyKHN0
cikKKyAgICA6IFJlbmRlclRleHQobm9kZSwgc3RyKSwgbV9zdGFydCgwKSwgbV9lbmQoc3RyID8g
c3RyLT5sZW5ndGgoKSA6IDApLCBtX2dlbmVyYXRlZENvbnRlbnRTdHIoc3RyKQogewogfQogCkBA
IC01MSw3ICs1MSw3IEBACiAgICAgICAgIHJlc3VsdCA9IGVsZW1lbnQoKS0+c3RyaW5nKCk7CiAg
ICAgZWxzZQogICAgICAgICByZXN1bHQgPSBjb250ZW50U3RyaW5nKCk7Ci0gICAgaWYgKHJlc3Vs
dCAmJiAoc3RhcnQoKSA+IDAgfHwgc3RhcnQoKSA8IHJlc3VsdC0+bCkpCisgICAgaWYgKHJlc3Vs
dCAmJiAoc3RhcnQoKSA+IDAgfHwgc3RhcnQoKSA8IHJlc3VsdC0+bGVuZ3RoKCkpKQogICAgICAg
ICByZXN1bHQgPSByZXN1bHQtPnN1YnN0cmluZyhzdGFydCgpLCBlbmQoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJldmlzaW9uIDEyOTkwKQorKysgcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBACiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIHVicmtfc2V0VGV4
dChpdGVyYXRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhciAqPihpLT5zKSwgaS0+bCwg
JnN0YXR1cyk7CisgICAgdWJya19zZXRUZXh0KGl0ZXJhdG9yLCByZWludGVycHJldF9jYXN0PGNv
bnN0IFVDaGFyICo+KGktPnVuaWNvZGUoKSksIGktPmxlbmd0aCgpLCAmc3RhdHVzKTsKICAgICBp
ZiAoc3RhdHVzICE9IFVfWkVST19FUlJPUikKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTk2LDcg
Kzk2LDcgQEAKICAgICBzZXRSZW5kZXJUZXh0KCk7CiAgICAgaWYgKHN0cikKICAgICAgICAgc3Ry
ID0gc3RyLT5yZXBsYWNlKCdcXCcsIGJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2woKSk7Ci0gICAg
S0hUTUxBc3NlcnQoIXN0ciB8fCAhc3RyLT5sIHx8IHN0ci0+cyk7CisgICAgS0hUTUxBc3NlcnQo
IXN0ciB8fCAhc3RyLT5sZW5ndGgoKSB8fCBzdHItPnVuaWNvZGUoKSk7CiB9CiAKIHZvaWQgUmVu
ZGVyVGV4dDo6c2V0U3R5bGUoUmVuZGVyU3R5bGUgKl9zdHlsZSkKQEAgLTM0NSw3ICszNDUsNyBA
QAogICAgICAgICAvLyBUYWtlIHNwZWNpYWwgY2FyZSBiZWNhdXNlIGluIHByZWZvcm1hdHRlZCB0
ZXh0LCB0aGUgbmV3bGluZXMKICAgICAgICAgLy8gYXJlIGluIGJldHdlZW4gdGhlIHRleHQgYm94
ZXMgKGkuZS4gbm90IGluIGFueSBib3gncyBtX3N0YXJ0CiAgICAgICAgIC8vIHRocnUgbV9zdGFy
dCttX2xlbi0xKSwgZXZlbiB0aG91Z2ggdGhleSBhcmUgcmVuZGVyZWQuCi0gICAgICAgIGlmICgh
c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkgfHwgc3RyLT5zW29mZnNldF0gIT0gJ1xuJykKKyAg
ICAgICAgaWYgKCFzdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSB8fCAoKnN0cilbb2Zmc2V0XSAh
PSAnXG4nKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtNDMzLDgg
KzQzMyw4IEBACiAgICAgbV9hbGxBc2NpaUNoZWNrZWQgPSB0cnVlOwogICAgIAogICAgIHVuc2ln
bmVkIGludCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBzdHItPmw7IGkrKyl7Ci0gICAgICAgIGlm
IChzdHItPnNbaV0udW5pY29kZSgpID49IDB4N2YpeworICAgIGZvciAoaSA9IDA7IGkgPCBzdHIt
Pmxlbmd0aCgpOyBpKyspeworICAgICAgICBpZiAoKCpzdHIpW2ldLnVuaWNvZGUoKSA+PSAweDdm
KXsKICAgICAgICAgICAgIG1fYWxsQXNjaWkgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBt
X2FsbEFzY2lpOwogICAgICAgICB9CkBAIC00NjksMTQgKzQ2OSwxNCBAQAogICAgIGlmIChtX21v
bm9zcGFjZUNoYXJhY3RlcldpZHRoICE9IDApIHsKICAgICAgICAgaW50IGksIHcgPSAwOwogICAg
ICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IHN0YXJ0K2xlbjsgaSsrKXsKLSAgICAgICAgICAgIFFD
aGFyIGMgPSBzdHItPnNbaV07CisgICAgICAgICAgICBRQ2hhciBjID0gKCpzdHIpW2ldOwogICAg
ICAgICAgICAgaW50IGRpciA9IGMuZGlyZWN0aW9uKCk7CiAgICAgICAgICAgICBpZiAoZGlyICE9
IFFDaGFyOjpEaXJOU00gJiYgZGlyICE9IFFDaGFyOjpEaXJCTikgewogICAgICAgICAgICAgICAg
IGlmIChjID09ICdcdCcgJiYgdGFiV2lkdGggIT0gMCkgewogICAgICAgICAgICAgICAgICAgICB3
ICs9IHRhYldpZHRoIC0gKCh4cG9zICsgdykgJSB0YWJXaWR0aCk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHcgKz0gbV9tb25vc3BhY2VDaGFyYWN0ZXJXaWR0
aDsKLSAgICAgICAgICAgICAgICBpZiAoYy5pc1NwYWNlKCkgJiYgaT5zdGFydCAmJiAhc3RyLT5z
W2ktMV0uaXNTcGFjZSgpKQorICAgICAgICAgICAgICAgIGlmIChjLmlzU3BhY2UoKSAmJiBpPnN0
YXJ0ICYmICEoKnN0cilbaS0xXS5pc1NwYWNlKCkpCiAgICAgICAgICAgICAgICAgICAgIHcgKz0g
Zi0+d29yZFNwYWNpbmcoKTsgICAgICAgIAogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00
OTgsNyArNDk4LDcgQEAKICAgICBpZiAoIWNvbGxhcHNlV2hpdGVTcGFjZSkKICAgICAgICAgc3Ry
aXBGcm9udFNwYWNlcyA9IGZhbHNlOwogICAgIAotICAgIGludCBsZW4gPSBzdHItPmw7CisgICAg
aW50IGxlbiA9IHN0ci0+bGVuZ3RoKCk7CiAgICAgaWYgKGxlbiA9PSAwIHx8IChzdHJpcEZyb250
U3BhY2VzICYmIHN0ci0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpKSkgewogICAgICAgICBtYXhX
ID0gMDsKICAgICAgICAgaGFzQnJlYWsgPSBmYWxzZTsKQEAgLTUyMCw3ICs1MjAsNyBAQAogICAg
IGhhc0JyZWFrYWJsZUNoYXIgPSBtX2hhc0JyZWFrYWJsZUNoYXI7CiAgICAgaGFzQnJlYWsgPSBt
X2hhc0JyZWFrOwogCi0gICAgaWYgKHN0cmlwRnJvbnRTcGFjZXMgJiYgKHN0ci0+c1swXSA9PSAn
ICcgfHwgKHN0ci0+c1swXSA9PSAnXG4nICYmICFzdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkg
fHwgc3RyLT5zWzBdID09ICdcdCcpKSB7CisgICAgaWYgKHN0cmlwRnJvbnRTcGFjZXMgJiYgKCgq
c3RyKVswXSA9PSAnICcgfHwgKCgqc3RyKVswXSA9PSAnXG4nICYmICFzdHlsZSgpLT5wcmVzZXJ2
ZU5ld2xpbmUoKSkgfHwgKCpzdHIpWzBdID09ICdcdCcpKSB7CiAgICAgICAgIGNvbnN0IEZvbnQg
KmYgPSBodG1sRm9udCggZmFsc2UgKTsKICAgICAgICAgUUNoYXIgc3BhY2VbMV07IHNwYWNlWzBd
ID0gJyAnOwogICAgICAgICBpbnQgc3BhY2VXaWR0aCA9IGYtPndpZHRoKHNwYWNlLCAxLCAwLCAw
KTsKQEAgLTU0MCw3ICs1NDAsNyBAQAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsg
aSsrKQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgbGluZWxlbiA9IDA7Ci0gICAgICAgICAg
ICB3aGlsZSAoaStsaW5lbGVuIDwgbGVuICYmIHN0ci0+c1tpK2xpbmVsZW5dICE9ICdcbicpCisg
ICAgICAgICAgICB3aGlsZSAoaStsaW5lbGVuIDwgbGVuICYmICgqc3RyKVtpK2xpbmVsZW5dICE9
ICdcbicpCiAgICAgICAgICAgICAgICAgbGluZWxlbisrOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKGxpbmVsZW4pCkBAIC03MzQsNyArNzM0LDcgQEAKIHsKICAgICB1bnNpZ25l
ZCBpbnQgY3VyclBvczsKICAgICBmb3IgKGN1cnJQb3MgPSBmcm9tOyAKLSAgICAgICAgIGN1cnJQ
b3MgPCBmcm9tK2xlbiAmJiAoc3RyLT5zW2N1cnJQb3NdID09ICdcbicgfHwgc3RyLT5zW2N1cnJQ
b3NdLnVuaWNvZGUoKSA9PSAnICcgfHwgc3RyLT5zW2N1cnJQb3NdID09ICdcdCcpOyAKKyAgICAg
ICAgIGN1cnJQb3MgPCBmcm9tK2xlbiAmJiAoKCpzdHIpW2N1cnJQb3NdID09ICdcbicgfHwgKCpz
dHIpW2N1cnJQb3NdLnVuaWNvZGUoKSA9PSAnICcgfHwgKCpzdHIpW2N1cnJQb3NdID09ICdcdCcp
OyAKICAgICAgICAgIGN1cnJQb3MrKyk7CiAgICAgcmV0dXJuIGN1cnJQb3MgPj0gKGZyb20rbGVu
KTsKIH0KQEAgLTc3Miw3ICs3NzIsNyBAQAogICAgICAgICBpbnQgc3RhcnRQb3MsIGVuZFBvczsK
ICAgICAgICAgc2VsZWN0aW9uU3RhcnRFbmQoc3RhcnRQb3MsIGVuZFBvcyk7CiAgICAgICAgIGlm
KHNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9uU3RhcnQpIHsKLSAgICAgICAgICAgIGVuZFBv
cyA9IHN0ci0+bDsKKyAgICAgICAgICAgIGVuZFBvcyA9IHN0ci0+bGVuZ3RoKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIC8vIHRvIGhhbmRsZSBzZWxlY3Rpb24gZnJvbSBlbmQgb2YgdGV4
dCB0byBlbmQgb2YgbGluZQogICAgICAgICAgICAgaWYgKHN0YXJ0UG9zICE9IDAgJiYgc3RhcnRQ
b3MgPT0gZW5kUG9zKSB7CkBAIC04MDIsOCArODAyLDggQEAKIAogdm9pZCBSZW5kZXJUZXh0Ojpz
ZXRUZXh0V2l0aE9mZnNldChET01TdHJpbmdJbXBsICp0ZXh0LCB1aW50IG9mZnNldCwgdWludCBs
ZW4sIGJvb2wgZm9yY2UpCiB7Ci0gICAgdWludCBvbGRMZW4gPSBzdHIgPyBzdHItPmwgOiAwOwot
ICAgIHVpbnQgbmV3TGVuID0gdGV4dCA/IHRleHQtPmwgOiAwOworICAgIHVpbnQgb2xkTGVuID0g
c3RyID8gc3RyLT5sZW5ndGgoKSA6IDA7CisgICAgdWludCBuZXdMZW4gPSB0ZXh0ID8gdGV4dC0+
bGVuZ3RoKCkgOiAwOwogICAgIGludCBkZWx0YSA9IG5ld0xlbiAtIG9sZExlbjsKICAgICB1aW50
IGVuZCA9IGxlbiA/IG9mZnNldCtsZW4tMSA6IG9mZnNldDsKIApAQCAtODkwLDggKzg5MCw4IEBA
CiAKICAgICAvLyAjIyMgd2hhdCBzaG91bGQgaGFwcGVuIGlmIHdlIGNoYW5nZSB0aGUgdGV4dCBv
ZiBhCiAgICAgLy8gUmVuZGVyQlIgb2JqZWN0ID8KLSAgICBLSFRNTEFzc2VydCghaXNCUigpIHx8
IChzdHItPmwgPT0gMSAmJiAoKnN0ci0+cykgPT0gJ1xuJykpOwotICAgIEtIVE1MQXNzZXJ0KCFz
dHItPmwgfHwgc3RyLT5zKTsKKyAgICBLSFRNTEFzc2VydCghaXNCUigpIHx8IChzdHItPmxlbmd0
aCgpID09IDEgJiYgKCpzdHIpWzBdID09ICdcbicpKTsKKyAgICBLSFRNTEFzc2VydCghc3RyLT5s
ZW5ndGgoKSB8fCBzdHItPnVuaWNvZGUoKSk7CiAKICAgICBzZXROZWVkc0xheW91dEFuZE1pbk1h
eFJlY2FsYygpOwogfQpAQCAtOTY3LDggKzk2Nyw5IEBACiAKIHVuc2lnbmVkIGludCBSZW5kZXJU
ZXh0Ojp3aWR0aCh1bnNpZ25lZCBpbnQgZnJvbSwgdW5zaWduZWQgaW50IGxlbiwgaW50IHhwb3Ms
IGJvb2wgZmlyc3RMaW5lKSBjb25zdAogewotICAgIGlmKCFzdHItPnMgfHwgZnJvbSA+IHN0ci0+
bCApIHJldHVybiAwOwotICAgIGlmICggZnJvbSArIGxlbiA+IHN0ci0+bCApIGxlbiA9IHN0ci0+
bCAtIGZyb207CisgICAgaWYgKGZyb20gPj0gc3RyLT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgaWYgKCBmcm9tICsgbGVuID4gc3RyLT5sZW5ndGgoKSApIGxlbiA9IHN0ci0+bGVu
Z3RoKCkgLSBmcm9tOwogCiAgICAgY29uc3QgRm9udCAqZiA9IGh0bWxGb250KCBmaXJzdExpbmUg
KTsKICAgICByZXR1cm4gd2lkdGgoIGZyb20sIGxlbiwgZiwgeHBvcyApOwpAQCAtMTAyOCwxMSAr
MTAyOSwxMSBAQAogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpID09IFNlbGVjdGlvbkluc2lkZSkg
ewogICAgICAgICAvLyBXZSBhcmUgZnVsbHkgc2VsZWN0ZWQuCiAgICAgICAgIHN0YXJ0UG9zID0g
MDsKLSAgICAgICAgZW5kUG9zID0gc3RyLT5sOworICAgICAgICBlbmRQb3MgPSBzdHItPmxlbmd0
aCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNlbGVjdGlvblN0YXJ0RW5kKHN0YXJ0UG9zLCBl
bmRQb3MpOwogICAgICAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSA9PSBTZWxlY3Rpb25TdGFydCkK
LSAgICAgICAgICAgIGVuZFBvcyA9IHN0ci0+bDsKKyAgICAgICAgICAgIGVuZFBvcyA9IHN0ci0+
bGVuZ3RoKCk7CiAgICAgICAgIGVsc2UgaWYgKHNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9u
RW5kKQogICAgICAgICAgICAgc3RhcnRQb3MgPSAwOwogICAgIH0KQEAgLTEwODEsNyArMTA4Miw3
IEBACiB7CiAgICAgSW5saW5lVGV4dEJveCogYm94ID0gbGFzdFRleHRCb3goKTsKICAgICBpZiAo
IWJveCkgCi0gICAgICAgIHJldHVybiBzdHItPmw7CisgICAgICAgIHJldHVybiBzdHItPmxlbmd0
aCgpOwogICAgIGludCBtYXhPZmZzZXQgPSBib3gtPm1fc3RhcnQgKyBib3gtPm1fbGVuOwogICAg
IGZvciAoYm94ID0gYm94LT5wcmV2VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+cHJldlRleHRC
b3goKSkKICAgICAgICAgbWF4T2Zmc2V0ID0ga01heChtYXhPZmZzZXQsYm94LT5tX3N0YXJ0ICsg
Ym94LT5tX2xlbik7CkluZGV4OiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCShyZXZpc2lvbiAxMjk5MCkKKysrIHJl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI0LDExICs0MjQs
MTEgQEAKICAgICBpbnQgc3RhcnRQb3MsIGVuZFBvczsKICAgICBpZiAob2JqZWN0KCktPnNlbGVj
dGlvblN0YXRlKCkgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25JbnNpZGUpIHsKICAgICAgICAg
c3RhcnRQb3MgPSAwOwotICAgICAgICBlbmRQb3MgPSB0ZXh0T2JqZWN0KCktPnN0cmluZygpLT5s
OworICAgICAgICBlbmRQb3MgPSB0ZXh0T2JqZWN0KCktPnN0cmluZygpLT5sZW5ndGgoKTsKICAg
ICB9IGVsc2UgewogICAgICAgICB0ZXh0T2JqZWN0KCktPnNlbGVjdGlvblN0YXJ0RW5kKHN0YXJ0
UG9zLCBlbmRQb3MpOwogICAgICAgICBpZiAob2JqZWN0KCktPnNlbGVjdGlvblN0YXRlKCkgPT0g
UmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCkKLSAgICAgICAgICAgIGVuZFBvcyA9IHRleHRP
YmplY3QoKS0+c3RyaW5nKCktPmw7CisgICAgICAgICAgICBlbmRQb3MgPSB0ZXh0T2JqZWN0KCkt
PnN0cmluZygpLT5sZW5ndGgoKTsKICAgICAgICAgZWxzZSBpZiAob2JqZWN0KCktPnNlbGVjdGlv
blN0YXRlKCkgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25FbmQpCiAgICAgICAgICAgICBzdGFy
dFBvcyA9IDA7CiAgICAgfQpJbmRleDogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAxMjk5MCkKKysrIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNTYsMTEgKzMzNTYs
MTEgQEAKICAgICAgICAgUmVmUHRyPERPTVN0cmluZ0ltcGw+IG9sZFRleHQgPSB0ZXh0T2JqLT5v
cmlnaW5hbFN0cmluZygpOwogICAgICAgICBLSFRNTEFzc2VydChvbGRUZXh0KTsKICAgICAgICAg
Ci0gICAgICAgIGlmIChvbGRUZXh0ICYmIG9sZFRleHQtPmwgPiAwKSB7CisgICAgICAgIGlmIChv
bGRUZXh0ICYmIG9sZFRleHQtPmxlbmd0aCgpID4gMCkgewogICAgICAgICAgICAgdW5zaWduZWQg
aW50IGxlbmd0aCA9IDA7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIGFjY291bnQgZm9y
IGxlYWRpbmcgc3BhY2VzIGFuZCBwdW5jdHVhdGlvbgotICAgICAgICAgICAgd2hpbGUgKCBsZW5n
dGggPCBvbGRUZXh0LT5sICYmICggKG9sZFRleHQtPnMrbGVuZ3RoKS0+aXNTcGFjZSgpIHx8IChv
bGRUZXh0LT5zK2xlbmd0aCktPmlzUHVuY3QoKSApICkKKyAgICAgICAgICAgIHdoaWxlIChsZW5n
dGggPCBvbGRUZXh0LT5sZW5ndGgoKSAmJiAoKCpvbGRUZXh0KVtsZW5ndGhdLmlzU3BhY2UoKSB8
fCAoKm9sZFRleHQpW2xlbmd0aF0uaXNQdW5jdCgpKSkKICAgICAgICAgICAgICAgICBsZW5ndGgr
KzsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gYWNjb3VudCBmb3IgZmlyc3QgbGV0dGVy
CkBAIC0zMzY5LDcgKzMzNjksNyBAQAogICAgICAgICAgICAgLy8gY29uc3RydWN0IHRleHQgZnJh
Z21lbnQgZm9yIHRoZSB0ZXh0IGFmdGVyIHRoZSBmaXJzdCBsZXR0ZXIKICAgICAgICAgICAgIC8v
IE5PVEU6IHRoaXMgbWlnaHQgZW1wdHkKICAgICAgICAgICAgIFJlbmRlclRleHRGcmFnbWVudCog
cmVtYWluaW5nVGV4dCA9IAotICAgICAgICAgICAgICAgIG5ldyAocmVuZGVyQXJlbmEoKSkgUmVu
ZGVyVGV4dEZyYWdtZW50KHRleHRPYmotPm5vZGUoKSwgb2xkVGV4dC5nZXQoKSwgbGVuZ3RoLCBv
bGRUZXh0LT5sLWxlbmd0aCk7CisgICAgICAgICAgICAgICAgbmV3IChyZW5kZXJBcmVuYSgpKSBS
ZW5kZXJUZXh0RnJhZ21lbnQodGV4dE9iai0+bm9kZSgpLCBvbGRUZXh0LmdldCgpLCBsZW5ndGgs
IG9sZFRleHQtPmxlbmd0aCgpIC0gbGVuZ3RoKTsKICAgICAgICAgICAgIHJlbWFpbmluZ1RleHQt
PnNldFN0eWxlKHRleHRPYmotPnN0eWxlKCkpOwogICAgICAgICAgICAgaWYgKHJlbWFpbmluZ1Rl
eHQtPmVsZW1lbnQoKSkKICAgICAgICAgICAgICAgICByZW1haW5pbmdUZXh0LT5lbGVtZW50KCkt
PnNldFJlbmRlcmVyKHJlbWFpbmluZ1RleHQpOwpJbmRleDogZG9tL2RvbTJfdmlld3NpbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBkb20vZG9tMl92aWV3c2ltcGwuY3BwCShyZXZpc2lvbiAxMjk5MCkK
KysrIGRvbS9kb20yX3ZpZXdzaW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcg
QEAKIAogUmVmUHRyPENTU1J1bGVMaXN0SW1wbD4gQWJzdHJhY3RWaWV3SW1wbDo6Z2V0TWF0Y2hl
ZENTU1J1bGVzKEVsZW1lbnRJbXBsKiBlbHQsIERPTVN0cmluZ0ltcGwqIHBzZXVkb0VsdCwgYm9v
bCBhdXRob3JPbmx5KQogewotICAgIGlmIChwc2V1ZG9FbHQgJiYgcHNldWRvRWx0LT5sKQorICAg
IGlmIChwc2V1ZG9FbHQgJiYgcHNldWRvRWx0LT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIG1f
ZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3IoKS0+cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWx0
LCBwc2V1ZG9FbHQsIGF1dGhvck9ubHkpOwogICAgIHJldHVybiBtX2RvY3VtZW50LT5zdHlsZVNl
bGVjdG9yKCktPnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsdCwgYXV0aG9yT25seSk7CiB9CkluZGV4
OiBkb20vZG9tX3htbGltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9kb21feG1saW1wbC5jcHAJ
KHJldmlzaW9uIDEyOTkwKQorKysgZG9tL2RvbV94bWxpbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODksMjQgKzg5LDI0IEBACiB7CiAgICAgRE9NU3RyaW5nIHJlc3VsdCA9ICI8IUVOVElUWScg
IjsKIAotICAgIGlmIChtX25hbWUgJiYgbV9uYW1lLT5sICE9IDApIHsKKyAgICBpZiAobV9uYW1l
ICYmIG1fbmFtZS0+bGVuZ3RoKCkpIHsKICAgICAgICAgcmVzdWx0ICs9ICIgIjsKICAgICAgICAg
cmVzdWx0ICs9IG1fbmFtZS5nZXQoKTsKICAgICB9CiAKLSAgICBpZiAobV9wdWJsaWNJZCAmJiBt
X3B1YmxpY0lkLT5sICE9IDApIHsKKyAgICBpZiAobV9wdWJsaWNJZCAmJiBtX3B1YmxpY0lkLT5s
ZW5ndGgoKSkgewogICAgICAgICByZXN1bHQgKz0gIiBQVUJMSUMgXCIiOwogICAgICAgICByZXN1
bHQgKz0gbV9wdWJsaWNJZC5nZXQoKTsKICAgICAgICAgcmVzdWx0ICs9ICJcIiBcIiI7CiAgICAg
ICAgIHJlc3VsdCArPSBtX3N5c3RlbUlkLmdldCgpOwogICAgICAgICByZXN1bHQgKz0gIlwiIjsK
LSAgICB9IGVsc2UgaWYgKG1fc3lzdGVtSWQgJiYgbV9zeXN0ZW1JZC0+bCAhPSAwKSB7CisgICAg
fSBlbHNlIGlmIChtX3N5c3RlbUlkICYmIG1fc3lzdGVtSWQtPmxlbmd0aCgpKSB7CiAgICAgICAg
IHJlc3VsdCArPSAiIFNZU1RFTSBcIiI7CiAgICAgICAgIHJlc3VsdCArPSBtX3N5c3RlbUlkLmdl
dCgpOwogICAgICAgICByZXN1bHQgKz0gIlwiIjsKICAgICB9CiAKLSAgICBpZiAobV9ub3RhdGlv
bk5hbWUgJiYgbV9ub3RhdGlvbk5hbWUtPmwgIT0gMCkgeworICAgIGlmIChtX25vdGF0aW9uTmFt
ZSAmJiBtX25vdGF0aW9uTmFtZS0+bGVuZ3RoKCkpIHsKICAgICAgICAgcmVzdWx0ICs9ICIgTkRB
VEEgIjsKICAgICAgICAgcmVzdWx0ICs9IG1fbm90YXRpb25OYW1lLmdldCgpOwogICAgIH0KSW5k
ZXg6IGRvbS9ET01JbXBsZW1lbnRhdGlvbkltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9ET01J
bXBsZW1lbnRhdGlvbkltcGwuY3BwCShyZXZpc2lvbiAxMjk5MCkKKysrIGRvbS9ET01JbXBsZW1l
bnRhdGlvbkltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICAg
ICAgaW50IGNvbG9ucG9zID0gLTE7CiAgICAgICAgIHVpbnQgaTsKICAgICAgICAgU3RyaW5nSW1w
bCAqcW5hbWUgPSBxdWFsaWZpZWROYW1lLmltcGwoKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8
IHFuYW1lLT5sICYmIGNvbG9ucG9zIDwgMDsgaSsrKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkg
PCBxbmFtZS0+bGVuZ3RoKCkgJiYgY29sb25wb3MgPCAwOyBpKyspIHsKICAgICAgICAgICAgIGlm
ICgoKnFuYW1lKVtpXSA9PSAnOicpCiAgICAgICAgICAgICAgICAgY29sb25wb3MgPSBpOwogICAg
ICAgICB9CkluZGV4OiBkb20vZG9tX2VsZW1lbnRpbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20v
ZG9tX2VsZW1lbnRpbXBsLmNwcAkocmV2aXNpb24gMTI5OTApCisrKyBkb20vZG9tX2VsZW1lbnRp
bXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2MiwxOSArMTQ2MiwyMSBAQAogICAgIGlmICgh
YXR0ci0+ZGVjbCgpKSBjcmVhdGVNYXBwZWREZWNsKGF0dHIpOwogCiAgICAgLy8gc3RyaXAgYXR0
cmlidXRlIGdhcmJhZ2UuLgotICAgIERPTVN0cmluZ0ltcGwqIHYgPSB2YWx1ZS5pbXBsKCk7Ci0g
ICAgaWYgKCB2ICkgeworICAgIFN0cmluZ0ltcGwqIHYgPSB2YWx1ZS5pbXBsKCk7CisgICAgaWYg
KHYpIHsKICAgICAgICAgdW5zaWduZWQgaW50IGwgPSAwOwogICAgICAgICAKLSAgICAgICAgd2hp
bGUgKCBsIDwgdi0+bCAmJiB2LT5zW2xdLnVuaWNvZGUoKSA8PSAnICcpIGwrKzsKKyAgICAgICAg
d2hpbGUgKGwgPCB2LT5sZW5ndGgoKSAmJiAoKnYpW2xdLnVuaWNvZGUoKSA8PSAnICcpCisgICAg
ICAgICAgICBsKys7CiAgICAgICAgIAotICAgICAgICBmb3IgKCA7bCA8IHYtPmw7IGwrKyApIHsK
LSAgICAgICAgICAgIGNoYXIgY2MgPSB2LT5zW2xdLmxhdGluMSgpOwotICAgICAgICAgICAgaWYg
KCBjYyA+ICc5JyB8fCAoIGNjIDwgJzAnICYmIGNjICE9ICcqJyAmJiBjYyAhPSAnJScgJiYgY2Mg
IT0gJy4nKSApCisgICAgICAgIGZvciAoOyBsIDwgdi0+bGVuZ3RoKCk7IGwrKykgeworICAgICAg
ICAgICAgY2hhciBjYyA9ICgqdilbbF0ubGF0aW4xKCk7CisgICAgICAgICAgICBpZiAoY2MgPiAn
OScgfHwgKGNjIDwgJzAnICYmIGNjICE9ICcqJyAmJiBjYyAhPSAnJScgJiYgY2MgIT0gJy4nKSkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoIGwgIT0gdi0+
bCApIHsKLSAgICAgICAgICAgIGF0dHItPmRlY2woKS0+c2V0TGVuZ3RoUHJvcGVydHkoaWQsIERP
TVN0cmluZyggdi0+cywgbCApLCBmYWxzZSk7CisKKyAgICAgICAgaWYgKGwgIT0gdi0+bGVuZ3Ro
KCkpIHsKKyAgICAgICAgICAgIGF0dHItPmRlY2woKS0+c2V0TGVuZ3RoUHJvcGVydHkoaWQsIFN0
cmluZyh2LT5jb3B5KCkpLCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CkluZGV4OiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gMTI5OTApCisr
KyBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA3
LDEwICs0MDcsOSBAQAogCiAgICAgaWYgKHN0cikgewogICAgICAgICAvLyBSZXBsYWNlIHRoZSB0
ZXh0IGJldHdlZW4gc3RhcnQgYW5kIGVuZCB3aXRoIG91ciBwcnVuZWQgdmVyc2lvbi4KLSAgICAg
ICAgaWYgKHN0ci0+bCA+IDApIHsKKyAgICAgICAgaWYgKHN0ci0+bGVuZ3RoKCkgPiAwKSB7CiAg
ICAgICAgICAgICByZXBsYWNlVGV4dEluTm9kZSh0ZXh0Tm9kZSwgc3RhcnQsIGVuZCAtIHN0YXJ0
LCBzdHIuZ2V0KCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gQXNzZXJ0IHRoYXQgd2UgYXJlIG5vdCBnb2luZyB0byBkZWxldGUg
YWxsIG9mIHRoZSB0ZXh0IGluIHRoZSBub2RlLgogICAgICAgICAgICAgLy8gSWYgd2Ugd2VyZSwg
dGhhdCBzaG91bGQgaGF2ZSBiZWVuIGRvbmUgYWJvdmUgd2l0aCB0aGUgY2FsbCB0byAKICAgICAg
ICAgICAgIC8vIHJlbW92ZU5vZGUgYW5kIHJldHVybi4KSW5kZXg6IGVkaXRpbmcvdmlzaWJsZV91
bml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkocmV2aXNp
b24gMTI5OTApCisrKyBlZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01ODYsOCArNTg2LDggQEAKICAgICAgICAgaWYgKHItPmlzVGV4dCgpKSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogTm90IGNsZWFyIHdoYXQgdG8gZG8gd2l0aCBwcmUtd3JhcCBvciBwcmUtbGlu
ZSBoZXJlLgogICAgICAgICAgICAgaWYgKHN0eWxlLT53aGl0ZVNwYWNlKCkgPT0gUFJFKSB7Ci0g
ICAgICAgICAgICAgICAgUUNoYXIgKnRleHQgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KHIp
LT50ZXh0KCk7Ci0gICAgICAgICAgICAgICAgaW50IGkgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0
ICo+KHIpLT5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBRQ2hhciogdGV4dCA9IHN0
YXRpY19jYXN0PFJlbmRlclRleHQqPihyKS0+dGV4dCgpOworICAgICAgICAgICAgICAgIGludCBp
ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+KHIpLT5sZW5ndGgoKTsKICAgICAgICAgICAgICAg
ICBpbnQgbyA9IG9mZnNldDsKICAgICAgICAgICAgICAgICBpZiAobiA9PSBzdGFydE5vZGUgJiYg
byA8IGkpCiAgICAgICAgICAgICAgICAgICAgIGkgPSBrTWF4KDAsIG8pOwpAQCAtNjQ3LDcgKzY0
Nyw3IEBACiAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAq
PihyKS0+bGVuZ3RoKCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogTm90IGNsZWFyIHdoYXQgdG8g
ZG8gd2l0aCBwcmUtd3JhcCBvciBwcmUtbGluZSBoZXJlLgogICAgICAgICAgICAgaWYgKHN0eWxl
LT53aGl0ZVNwYWNlKCkgPT0gUFJFKSB7Ci0gICAgICAgICAgICAgICAgUUNoYXIgKnRleHQgPSBz
dGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KHIpLT50ZXh0KCk7CisgICAgICAgICAgICAgICAgY29u
c3QgUUNoYXIqIHRleHQgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KHIpLT50ZXh0KCk7CiAg
ICAgICAgICAgICAgICAgaW50IG8gPSBuID09IHN0YXJ0Tm9kZSA/IG9mZnNldCA6IDA7CiAgICAg
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IG87IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRleHRbaV0gPT0gJ1xuJykKSW5kZXg6IGNzcy9jc3NzdHlsZXNlbGVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHJldmlzaW9uIDEy
OTkwKQorKysgY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEs
MjAgKzI4MSwxMCBAQAogCiBzdGF0aWMgQ1NTU3R5bGVTaGVldEltcGwqIHBhcnNlVUFTaGVldChj
b25zdCB1bnNpZ25lZCBzaG9ydCogY2hhcmFjdGVycywgaW50IHNpemUpCiB7Ci0gICAgLy8gRklY
TUU6IEhhY2sgdG8gcG9pbnQgYSBET01TdHJpbmcgYXQgZXhpc3RpbmcgY2hhcmFjdGVycy4KLSAg
ICAvLyBHb29kIHRvIGF2b2lkIGNvcHlpbmcgdGhlIGFycmF5IGp1c3QgdG8gcGFyc2UsIGJ1dCB3
ZSBzaG91bGQgZmluZCBhIG1vcmUgZWxlZ2FudCB3YXkuCi0gICAgRE9NU3RyaW5nSW1wbCBzdHJp
bmdJbXBsKCIiKTsKLSAgICBzdHJpbmdJbXBsLnJlZigpOwotICAgIFFDaGFyKiBzYXZlU3RyaW5n
ID0gc3RyaW5nSW1wbC5zOwotICAgIHN0cmluZ0ltcGwucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UUNo
YXIqPihjb25zdF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4oY2hhcmFjdGVycykpOwotICAgIHN0cmlu
Z0ltcGwubCA9IHNpemU7Ci0KICAgICBDU1NTdHlsZVNoZWV0SW1wbCogY29uc3QgcGFyZW50ID0g
MDsKICAgICBDU1NTdHlsZVNoZWV0SW1wbCogc2hlZXQgPSBuZXcgQ1NTU3R5bGVTaGVldEltcGwo
cGFyZW50KTsKLSAgICBzaGVldC0+cGFyc2VTdHJpbmcoJnN0cmluZ0ltcGwpOwotCi0gICAgc3Ry
aW5nSW1wbC5zID0gc2F2ZVN0cmluZzsKLQorICAgIHNoZWV0LT5yZWYoKTsgLy8gbGVhayB0aGUg
c2hlZXQgb24gcHVycG9zZSBzaW5jZSBpdCB3aWxsIGJlIHN0b3JlZCBpbiBhIGdsb2JhbCB2YXJp
YWJsZQorICAgIHNoZWV0LT5wYXJzZVN0cmluZyhTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBRQ2hhcio+KGNoYXJhY3RlcnMpLCBzaXplKSk7CiAgICAgcmV0dXJuIHNoZWV0OwogfQogCklu
ZGV4OiBjc3MvY3NzaGVscGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvY3NzaGVscGVyLmNwcAko
cmV2aXNpb24gMTI5OTApCisrKyBjc3MvY3NzaGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNTEgKzI1LDY1IEBACiAjaW5jbHVkZSAiY3NzaGVscGVyLmgiCiAKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPGt4bWxjb3JlL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFN0cmluZyBwYXJzZVVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBT
dHJpbmdJbXBsKiBpID0gdXJsLmltcGwoKTsKLSAgICBpZighaSkgcmV0dXJuIFN0cmluZygpOwor
ICAgIGlmICghaSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaW50IG8gPSAwOwot
ICAgIGludCBsID0gaS0+bDsKLSAgICB3aGlsZShvIDwgbCAmJiAoaS0+c1tvXSA8PSAnICcpKSB7
IG8rKzsgbC0tOyB9Ci0gICAgd2hpbGUobCA+IDAgJiYgKGktPnNbbytsLTFdIDw9ICcgJykpIGwt
LTsKKyAgICBpbnQgbCA9IGktPmxlbmd0aCgpOwogCi0gICAgaWYobCA+PSA1ICYmCi0gICAgICAg
KGktPnNbb10ubG93ZXIoKSA9PSAndScpICYmCi0gICAgICAgKGktPnNbbysxXS5sb3dlcigpID09
ICdyJykgJiYKLSAgICAgICAoaS0+c1tvKzJdLmxvd2VyKCkgPT0gJ2wnKSAmJgotICAgICAgIGkt
PnNbbyszXS5sYXRpbjEoKSA9PSAnKCcgJiYKLSAgICAgICBpLT5zW28rbC0xXS5sYXRpbjEoKSA9
PSAnKScpIHsKKyAgICB3aGlsZSAobyA8IGwgJiYgKCppKVtvXSA8PSAnICcpIHsKKyAgICAgICAg
KytvOworICAgICAgICAtLWw7CisgICAgfQorICAgIHdoaWxlIChsID4gMCAmJiAoKmkpW28rbC0x
XSA8PSAnICcpCisgICAgICAgIC0tbDsKKworICAgIGlmIChsID49IDUKKyAgICAgICAgICAgICYm
ICgqaSlbb10ubG93ZXIoKSA9PSAndScKKyAgICAgICAgICAgICYmICgqaSlbbyArIDFdLmxvd2Vy
KCkgPT0gJ3InCisgICAgICAgICAgICAmJiAoKmkpW28gKyAyXS5sb3dlcigpID09ICdsJworICAg
ICAgICAgICAgJiYgKCppKVtvICsgM10gPT0gJygnCisgICAgICAgICAgICAmJiAoKmkpW28gKyBs
IC0gMV0gPT0gJyknKSB7CiAgICAgICAgIG8gKz0gNDsKICAgICAgICAgbCAtPSA1OwogICAgIH0K
IAotICAgIHdoaWxlKG8gPCBsICYmIChpLT5zW29dIDw9ICcgJykpIHsgbysrOyBsLS07IH0KLSAg
ICB3aGlsZShsID4gMCAmJiAoaS0+c1tvK2wtMV0gPD0gJyAnKSkgbC0tOworICAgIHdoaWxlIChv
IDwgbCAmJiAoKmkpW29dIDw9ICcgJykgeworICAgICAgICArK287CisgICAgICAgIC0tbDsKKyAg
ICB9CisgICAgd2hpbGUgKGwgPiAwICYmICgqaSlbbytsLTFdIDw9ICcgJykKKyAgICAgICAgLS1s
OwogCi0gICAgaWYobCA+PSAyICYmIGktPnNbb10gPT0gaS0+c1tvK2wtMV0gJiYKLSAgICAgICAo
aS0+c1tvXS5sYXRpbjEoKSA9PSAnXCcnIHx8IGktPnNbb10ubGF0aW4xKCkgPT0gJ1wiJykpIHsK
KyAgICBpZiAobCA+PSAyICYmICgqaSlbb10gPT0gKCppKVtvK2wtMV0gJiYgKCgqaSlbb10gPT0g
J1wnJyB8fCAoKmkpW29dID09ICdcIicpKSB7CiAgICAgICAgIG8rKzsKICAgICAgICAgbCAtPSAy
OwogICAgIH0KIAotICAgIHdoaWxlKG8gPCBsICYmIChpLT5zW29dIDw9ICcgJykpIHsgbysrOyBs
LS07IH0KLSAgICB3aGlsZShsID4gMCAmJiAoaS0+c1tvK2wtMV0gPD0gJyAnKSkgbC0tOworICAg
IHdoaWxlIChvIDwgbCAmJiAoKmkpW29dIDw9ICcgJykgeworICAgICAgICArK287CisgICAgICAg
IC0tbDsKKyAgICB9CisgICAgd2hpbGUgKGwgPiAwICYmICgqaSlbbytsLTFdIDw9ICcgJykKKyAg
ICAgICAgLS1sOwogCi0gICAgU3RyaW5nSW1wbCogaiA9IG5ldyBTdHJpbmdJbXBsKGktPnMrbyxs
KTsKKyAgICBWZWN0b3I8dW5zaWduZWQgc2hvcnQsIDIwNDg+IGJ1ZmZlcjsKIAogICAgIGludCBu
bCA9IDA7Ci0gICAgZm9yKGludCBrID0gbzsgayA8IG8rbDsgaysrKQotICAgICAgICBpZihpLT5z
W2tdLnVuaWNvZGUoKSA+ICdccicpCi0gICAgICAgICAgICBqLT5zW25sKytdID0gaS0+c1trXTsK
KyAgICBmb3IgKGludCBrID0gbzsgayA8IG8gKyBsOyBrKyspIHsKKyAgICAgICAgdW5zaWduZWQg
c2hvcnQgYyA9ICgqaSlba10udW5pY29kZSgpOworICAgICAgICBpZiAoYyA+ICdccicpCisgICAg
ICAgICAgICBidWZmZXJbbmwrK10gPSBjOworICAgIH0KIAotICAgIGotPmwgPSBubDsKLQotICAg
IHJldHVybiBqOworICAgIHJldHVybiBuZXcgU3RyaW5nSW1wbChyZWludGVycHJldF9jYXN0PFFD
aGFyKj4oYnVmZmVyLmRhdGEoKSksIG5sKTsKIH0KIAogfQo=
</data>
<flag name="review"
          id="1718"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>