<?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>6396</bug_id>
          
          <creation_ts>2006-01-06 01:52:01 -0800</creation_ts>
          <short_desc>Several changes for a 4% JavaScript iBench speedup</short_desc>
          <delta_ts>2006-01-06 15:54:56 -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>JavaScriptCore</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          <cc>maksim</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>27846</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-06 01:52:01 -0800</bug_when>
    <thetext>Maks sent me a patch with various JavaScript speedups, I tested and cleaned it up, and it appears to make 
about a 4% speed different on JS iBench.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27864</commentid>
    <comment_count>1</comment_count>
      <attachid>5514</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-06 11:48:26 -0800</bug_when>
    <thetext>Created attachment 5514
Maks&apos;s speedups, applied to JSC TOT and cleaned up by me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27868</commentid>
    <comment_count>2</comment_count>
      <attachid>5514</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-06 13:42:34 -0800</bug_when>
    <thetext>Comment on attachment 5514
Maks&apos;s speedups, applied to JSC TOT and cleaned up by me

There are tabs in this patch, I&apos;d prefer not to land those.

Please leave out the commented-out printf.

It&apos;s great to share the single hash function too.

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5514</attachid>
            <date>2006-01-06 11:48:26 -0800</date>
            <delta_ts>2006-01-06 13:42:34 -0800</delta_ts>
            <desc>Maks&apos;s speedups, applied to JSC TOT and cleaned up by me</desc>
            <filename>maks-jsc-speedups.patch.txt</filename>
            <type>text/plain</type>
            <size>12045</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjk0NwpkaWZmIC1wIC11IC1y
MS45NDcgQ2hhbmdlTG9nCi0tLSBDaGFuZ2VMb2cJNiBKYW4gMjAwNiAwODozMjoxNSAtMDAwMAkx
Ljk0NworKysgQ2hhbmdlTG9nCTYgSmFuIDIwMDYgMDk6NTQ6NTIgLTAwMDAKQEAgLTEsMyArMSwy
OSBAQAorMjAwNi0wMS0wNiAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisJ
UmV2aWV3ZWQgYnkKKworCS0gbWlzY2VsbGFuZW91cyBjaGFuZ2VzIGZvciA0JSBzcGVlZHVwIG9u
IHRoZSBKYXZhU2NyaXB0IGlCZW5jaAorCWh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjM5NgorCQorICAgICAgICBDaGFuZ2VzIG1vc3RseSB0aGFua3MgdG8g
TWFrcyBPcmxvdmljaCwgdHdlYWtlZCBhIGxpdHRsZSBieSBtZS4KKworICAgICAgICAqIGtqcy9j
cmVhdGVfaGFzaF90YWJsZTogVXNlIHRoZSBzYW1lIGhhc2ggYXMgdGhlIG9uZSB1c2VkIGJ1eSBJ
ZGVudGlmaWVyLgorICAgICAgICAqIGtqcy9mdW5jdGlvbi5jcHA6CisgICAgICAgIChLSlM6OkZ1
bmN0aW9uSW1wOjpwcm9jZXNzUGFyYW1ldGVycyk6IFVzZSB0aGUgbmV3IExpc3Q6OmNvcHlGcm9t
CisgICAgICAgIChLSlM6OkFjdGl2YXRpb25JbXA6OkFjdGl2YXRpb25JbXApOiB0cmFjayB2YXJp
YWJsZSB3aGlsZSBpdGVyYXRpbmcKKyAgICAgICAgKiBranMvaW50ZXJuYWwuY3BwOgorICAgICAg
ICAoS0pTOjpTdHJpbmdJbXA6OnRvT2JqZWN0KTogY3JlYXRlIFN0cmluZ0luc3RhbmNlIGRpcmVj
dGx5CisgICAgICAgICoga2pzL2xpc3QuY3BwOgorICAgICAgICAoS0pTOjpMaXN0Ojpjb3B5KTog
aW1wbGVtZW50IGluIHRlcm1zIG9mIGNvcHlGcm9tCisgICAgICAgIChLSlM6Okxpc3Q6OmNvcHlG
cm9tKTogbW9yZSBlZmZpY2llbnQgd2F5IHRvIGNvcHkgaW4gYW5vdGhlciBsaXN0CisgICAgICAg
ICoga2pzL2xpc3QuaDoKKyAgICAgICAgKiBranMvbG9va3VwLmNwcDoKKyAgICAgICAgKGtleXNN
YXRjaCk6IHVwZGF0ZWQgdG8gd29yayB3aXRoIGlkZW50aWZpZXIgaGFzaAorICAgICAgICAoZmlu
ZEVudHJ5KTogZGl0dG8KKyAgICAgICAgKExvb2t1cDo6ZmluZEVudHJ5KTogZGl0dG8KKyAgICAg
ICAgKExvb2t1cDo6ZmluZCk6IGRpdHRvCisgICAgICAgICoga2pzL2xvb2t1cC5oOgorCiAyMDA2
LTAxLTA1ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYy4KSW5kZXg6IGtqcy9jcmVhdGVfaGFzaF90YWJsZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlwdENvcmUva2pzL2NyZWF0ZV9oYXNoX3RhYmxlLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBranMvY3JlYXRlX2hhc2hf
dGFibGUKLS0tIGtqcy9jcmVhdGVfaGFzaF90YWJsZQkxMSBPY3QgMjAwNSAyMDo0Mzo0OSAtMDAw
MAkxLjYKKysrIGtqcy9jcmVhdGVfaGFzaF90YWJsZQk2IEphbiAyMDA2IDA5OjU0OjU1IC0wMDAw
CkBAIC0yNSw2ICsyNSw3IEBAIG9wZW4oSU4sICRmaWxlKSBvciBkaWUgIk5vIHN1Y2ggZmlsZSAk
ZmkKIEB2YWx1ZXMgPSAoKTsKIEBhdHRycyA9ICgpOwogQHBhcmFtcyA9ICgpOworQGhhc2hlcyA9
ICgpOwogCiBteSAkaW5zaWRlID0gMDsKIG15ICRuYW1lOwpAQCAtNjMsNiArNjQsNyBAQCB3aGls
ZSAoPElOPikgewogICAgICAgQHZhbHVlcyA9ICgpOwogICAgICAgQGF0dHJzID0gKCk7CiAgICAg
ICBAcGFyYW1zID0gKCk7CisgICAgICBAaGFzaGVzID0gKCk7CiAgICAgICAkaW5zaWRlID0gMDsK
ICAgICB9IGVsc2lmICgvXihcUyspXHMqKFxTKylccyooW1x3XHxdKilccyooXHcqKVxzKiQvICYm
ICRpbnNpZGUpIHsKICAgICAgIG15ICRrZXkgPSAkMTsKQEAgLTcxLDYgKzczLDcgQEAgd2hpbGUg
KDxJTj4pIHsKICAgICAgIG15ICRwYXJhbSA9ICQ0OwogICAgICAgcHVzaChAa2V5cywgJGtleSk7
CiAgICAgICBwdXNoKEB2YWx1ZXMsICR2YWwpOworICAgICAgcHVzaChAaGFzaGVzLCBoYXNoVmFs
dWUoJGtleSkpOwogICAgICAgcHJpbnRmIFNUREVSUiAiV0FSTklORzogTnVtYmVyIG9mIGFyZ3Vt
ZW50cyBtaXNzaW5nIGZvciAka2V5LyR2YWxcbiIKICAgICAgICAgaWYgKCAkYXR0ID1+IG0vRnVu
Y3Rpb24vICYmIGxlbmd0aCgkcGFyYW0pID09IDApOwogICAgICAgcHVzaChAYXR0cnMsIGxlbmd0
aCgkYXR0KSA+IDAgPyAkYXR0IDogIjAiKTsKQEAgLTEzMSwxMyArMTM0LDU2IEBAIHN1YiBjYWxj
VGFibGUoKSB7CiAjICB9CiB9CiAKKyMgUGF1bCBIc2llaCdzIFN1cGVyRmFzdEhhc2gKKyMgaHR0
cDovL3d3dy5hemlsbGlvbm1vbmtleXMuY29tL3FlZC9oYXNoLmh0bWwKKyMgUG9ydGVkIGZyb20g
VVN0cmluZy4uCiBzdWIgaGFzaFZhbHVlKCQpIHsKICAgQGNoYXJzID0gc3BsaXQoLyAqLywgJF9b
MF0pOwotICBteSAkdmFsID0gMDsKLSAgZm9yZWFjaCAkYyAoQGNoYXJzKSB7Ci0gICAgJHZhbCAr
PSBvcmQoJGMpOwotICB9Ci0gIHJldHVybiAkdmFsOworCisgICMgVGhpcyBoYXNoIGlzIGRlc2ln
bmVkIHRvIHdvcmsgb24gMTYtYml0IGNodW5rcyBhdCBhIHRpbWUuIEJ1dCBzaW5jZSB0aGUgbm9y
bWFsIGNhc2UKKyAgIyAoYWJvdmUpIGlzIHRvIGhhc2ggVVRGLTE2IGNoYXJhY3RlcnMsIHdlIGp1
c3QgdHJlYXQgdGhlIDgtYml0IGNoYXJzIGFzIGlmIHRoZXkKKyAgIyB3ZXJlIDE2LWJpdCBjaHVu
a3MsIHdoaWNoIHNob3VsZCBnaXZlIG1hdGNoaW5nIHJlc3VsdHMKKworICBteSAkRVhQMl8zMiA9
IDQyOTQ5NjcyOTY7CisKKyAgbXkgJGhhc2ggPSAweDllMzc3OWI5OworICBteSAkbCAgICA9IHNj
YWxhciBAY2hhcnM7ICNJIHdpc2ggdGhpcyB3YXMgaW4gUnVieSAtLS0gTWFrcworICBteSAkcmVt
ICA9ICRsICYgMTsKKyAgJGwgPSAkbCA+PiAxOworCisgIG15ICRzID0gMDsKKworICAjIE1haW4g
bG9vcAorICBmb3IgKDsgJGwgPiAwOyAkbC0tKSB7CisgICAgJGhhc2ggICArPSBvcmQoJGNoYXJz
WyRzXSk7CisgICAgbXkgJHRtcCA9IChvcmQoJGNoYXJzWyRzKzFdKSA8PCAxMSkgXiAkaGFzaDsK
KyAgICAkaGFzaCAgID0gKCgkaGFzaCA8PCAxNiklICRFWFAyXzMyKSBeICR0bXA7CisgICAgJHMg
Kz0gMjsKKyAgICAkaGFzaCArPSAkaGFzaCA+PiAxMTsKKyAgfQorCisgICMgSGFuZGxlIGVuZCBj
YXNlCisgIGlmICgkcmVtICE9MCkgeworICAgICRoYXNoICs9IG9yZCgkY2hhcnNbJHNdKTsKKyAg
ICAkaGFzaCBePSAoKCRoYXNoIDw8IDExKSUgJEVYUDJfMzIpOworICAgICRoYXNoICs9ICRoYXNo
ID4+IDE3OworICB9CisKKyAgIyBGb3JjZSAiYXZhbGFuY2hpbmciIG9mIGZpbmFsIDEyNyBiaXRz
CisgICRoYXNoIF49ICgkaGFzaCA8PCAzKTsKKyAgJGhhc2ggKz0gKCRoYXNoID4+IDUpOworICAk
aGFzaCA9ICgkaGFzaCUgJEVYUDJfMzIpOworICAkaGFzaCBePSAoKCRoYXNoIDw8IDIpJSAkRVhQ
Ml8zMik7CisgICRoYXNoICs9ICgkaGFzaCA+PiAxNSk7CisgICRoYXNoID0gJGhhc2glICRFWFAy
XzMyOworICAkaGFzaCBePSAoKCRoYXNoIDw8IDEwKSUgJEVYUDJfMzIpOworICAKKyAgIyB0aGlz
IGF2b2lkcyBldmVyIHJldHVybmluZyBhIGhhc2ggY29kZSBvZiAwLCBzaW5jZSB0aGF0IGlzIHVz
ZWQgdG8KKyAgIyBzaWduYWwgImhhc2ggbm90IGNvbXB1dGVkIHlldCIsIHVzaW5nIGEgdmFsdWUg
dGhhdCBpcyBsaWtlbHkgdG8gYmUKKyAgIyBlZmZlY3RpdmVseSB0aGUgc2FtZSBhcyAwIHdoZW4g
dGhlIGxvdyBiaXRzIGFyZSBtYXNrZWQKKyAgJGhhc2ggPSAweDgwMDAwMDAwICBpZiAoJGhhc2gg
PT0gMCk7CisKKyAgcmV0dXJuICRoYXNoOwogfQogCiBzdWIgb3V0cHV0KCkgewpAQCAtMTcyLDYg
KzIxOCw3IEBAIHN1YiBvdXRwdXQoKSB7CiAgICAgICB9IGVsc2UgewogCXByaW50ICIwIFx9Igog
ICAgICAgfQorICAgICAgcHJpbnQgIi8qICIgLiAkaGFzaGVzWyRlbnRyeV0gLiAiICovICI7CiAg
ICAgfSBlbHNlIHsKICAgICAgIHByaW50ICIgICBceyAwLCAwLCAwLCAwLCAwIFx9IjsKICAgICB9
CkluZGV4OiBranMvZnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9K
YXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjY1
CmRpZmYgLXAgLXUgLXIxLjY1IGtqcy9mdW5jdGlvbi5jcHAKLS0tIGtqcy9mdW5jdGlvbi5jcHAJ
NiBKYW4gMjAwNiAwODozMjoxOCAtMDAwMAkxLjY1CisrKyBranMvZnVuY3Rpb24uY3BwCTYgSmFu
IDIwMDYgMDk6NTQ6NTggLTAwMDAKQEAgLTE4MSwxNCArMTgxLDE1IEBAIHZvaWQgRnVuY3Rpb25J
bXA6OnByb2Nlc3NQYXJhbWV0ZXJzKEV4ZWMKICAgaWYgKHBhcmFtKSB7CiAgICAgTGlzdEl0ZXJh
dG9yIGl0ID0gYXJncy5iZWdpbigpOwogICAgIFBhcmFtZXRlciAqcCA9IHBhcmFtOworICAgIEpT
VmFsdWUgICp2ID0gKml0OwogICAgIHdoaWxlIChwKSB7CiAgICAgICBpZiAoaXQgIT0gYXJncy5l
bmQoKSkgewogI2lmZGVmIEtKU19WRVJCT1NFCiAJZnByaW50ZihzdGRlcnIsICJzZXR0aW5nIHBh
cmFtZXRlciAlcyAiLCBwLT5uYW1lLmFzY2lpKCkpOwogCXByaW50SW5mbyhleGVjLCJ0byIsICpp
dCk7CiAjZW5kaWYKLQl2YXJpYWJsZS0+cHV0KGV4ZWMsIHAtPm5hbWUsICppdCk7Ci0JaXQrKzsK
Kwl2YXJpYWJsZS0+cHV0KGV4ZWMsIHAtPm5hbWUsIHYpOworCXYgPSArK2l0OwogICAgICAgfSBl
bHNlCiAJdmFyaWFibGUtPnB1dChleGVjLCBwLT5uYW1lLCBqc1VuZGVmaW5lZCgpKTsKICAgICAg
IHAgPSBwLT5uZXh0OwpAQCAtNDg1LDcgKzQ4Niw3IEBAIGNvbnN0IENsYXNzSW5mbyBBY3RpdmF0
aW9uSW1wOjppbmZvID0geyIKIEFjdGl2YXRpb25JbXA6OkFjdGl2YXRpb25JbXAoRnVuY3Rpb25J
bXAgKmZ1bmN0aW9uLCBjb25zdCBMaXN0ICZhcmd1bWVudHMpCiAgICAgOiBfZnVuY3Rpb24oZnVu
Y3Rpb24pLCBfYXJndW1lbnRzKHRydWUpLCBfYXJndW1lbnRzT2JqZWN0KDApCiB7Ci0gIF9hcmd1
bWVudHMgPSBhcmd1bWVudHMuY29weSgpOworICBfYXJndW1lbnRzLmNvcHlGcm9tKGFyZ3VtZW50
cyk7CiAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHN1cHBvcnQgZW51bWVyYXRpbmcgdGhlIGFy
Z3VtZW50cyBwcm9wZXJ0eT8KIH0KIApJbmRleDoga2pzL2ludGVybmFsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlwdENvcmUva2pzL2ludGVybmFsLmNwcCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS44NQpkaWZmIC1wIC11IC1yMS44NSBranMvaW50ZXJuYWwuY3Bw
Ci0tLSBranMvaW50ZXJuYWwuY3BwCTE5IERlYyAyMDA1IDEwOjM4OjA3IC0wMDAwCTEuODUKKysr
IGtqcy9pbnRlcm5hbC5jcHAJNiBKYW4gMjAwNiAwOTo1NDo1OSAtMDAwMApAQCAtMTgxLDkgKzE4
MSw3IEBAIFVTdHJpbmcgU3RyaW5nSW1wOjp0b1N0cmluZyhFeGVjU3RhdGUgKikKIAogSlNPYmpl
Y3QgKlN0cmluZ0ltcDo6dG9PYmplY3QoRXhlY1N0YXRlICpleGVjKSBjb25zdAogewotICBMaXN0
IGFyZ3M7Ci0gIGFyZ3MuYXBwZW5kKGNvbnN0X2Nhc3Q8U3RyaW5nSW1wKj4odGhpcykpOwotICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SlNPYmplY3QgKj4oZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCkt
PmJ1aWx0aW5TdHJpbmcoKS0+Y29uc3RydWN0KGV4ZWMsIGFyZ3MpKTsKKyAgICByZXR1cm4gbmV3
IFN0cmluZ0luc3RhbmNlKGV4ZWMtPmxleGljYWxJbnRlcnByZXRlcigpLT5idWlsdGluU3RyaW5n
UHJvdG90eXBlKCksIHZhbCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBOdW1iZXJJbXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBr
anMvbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3Jl
L2tqcy9saXN0LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xOApkaWZmIC1wIC11IC1yMS4x
OCBranMvbGlzdC5jcHAKLS0tIGtqcy9saXN0LmNwcAkxMSBEZWMgMjAwNSAwMjowNTo0NCAtMDAw
MAkxLjE4CisrKyBranMvbGlzdC5jcHAJNiBKYW4gMjAwNiAwOTo1NTowMSAtMDAwMApAQCAtMjg4
LDIxICsyODgsMjQgQEAgdm9pZCBMaXN0OjphcHBlbmQoSlNWYWx1ZSAqdikKIExpc3QgTGlzdDo6
Y29weSgpIGNvbnN0CiB7CiAgICAgTGlzdCBjb3B5OworICAgIGNvcHkuY29weUZyb20oKnRoaXMp
OworICAgIHJldHVybiBjb3B5OworfQogCi0gICAgTGlzdEltcCAqaW1wID0gc3RhdGljX2Nhc3Q8
TGlzdEltcCAqPihfaW1wQmFzZSk7Cit2b2lkIExpc3Q6OmNvcHlGcm9tKGNvbnN0IExpc3QmIG90
aGVyKQoreworICAgIExpc3RJbXAgKmltcCA9IHN0YXRpY19jYXN0PExpc3RJbXAgKj4ob3RoZXIu
X2ltcEJhc2UpOwogCiAgICAgaW50IHNpemUgPSBpbXAtPnNpemU7CiAKICAgICBpbnQgaW5saW5l
U2l6ZSA9IG1pbihzaXplLCBpbmxpbmVWYWx1ZXNTaXplKTsKICAgICBmb3IgKGludCBpID0gMDsg
aSAhPSBpbmxpbmVTaXplOyArK2kpCi0gICAgICAgIGNvcHkuYXBwZW5kKGltcC0+dmFsdWVzW2ld
KTsKKyAgICAgICAgYXBwZW5kKGltcC0+dmFsdWVzW2ldKTsKIAogICAgIEpTVmFsdWUgKipvdmVy
ZmxvdyA9IGltcC0+b3ZlcmZsb3c7CiAgICAgaW50IG92ZXJmbG93U2l6ZSA9IHNpemUgLSBpbmxp
bmVTaXplOwogICAgIGZvciAoaW50IGkgPSAwOyBpICE9IG92ZXJmbG93U2l6ZTsgKytpKQotICAg
ICAgICBjb3B5LmFwcGVuZChvdmVyZmxvd1tpXSk7Ci0KLSAgICByZXR1cm4gY29weTsKKyAgICAg
ICAgYXBwZW5kKG92ZXJmbG93W2ldKTsKIH0KIAogCkluZGV4OiBranMvbGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9ranMvbGlzdC5oLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjExCmRpZmYgLXAgLXUgLXIxLjExIGtqcy9saXN0LmgKLS0tIGtqcy9s
aXN0LmgJMTEgRGVjIDIwMDUgMDI6MDU6NDQgLTAwMDAJMS4xMQorKysga2pzL2xpc3QuaAk2IEph
biAyMDA2IDA5OjU1OjAxIC0wMDAwCkBAIC03NCw2ICs3NCwxMSBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgICAgTGlzdCBjb3B5KCkgY29uc3Q7CiAKICAgICAgICAgLyoqCisgICAgICAgICAqIENv
cHkgYWxsIGVsZW1lbnRzIGZyb20gdGhlIHNlY29uZCBsaXN0IGhlcmUKKyAgICAgICAgICovCisg
ICAgICAgIHZvaWQgY29weUZyb20oY29uc3QgTGlzdCYgb3RoZXIpOworCisgICAgICAgIC8qKgog
ICAgICAgICAgKiBNYWtlIGEgY29weSBvZiB0aGUgbGlzdCwgb21pdHRpbmcgdGhlIGZpcnN0IGVs
ZW1lbnQuCiAgICAgICAgICAqLwogICAgICAgICBMaXN0IGNvcHlUYWlsKCkgY29uc3Q7CkluZGV4
OiBranMvbG9va3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlw
dENvcmUva2pzL2xvb2t1cC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTIKZGlmZiAtcCAt
dSAtcjEuMTIga2pzL2xvb2t1cC5jcHAKLS0tIGtqcy9sb29rdXAuY3BwCTMgT2N0IDIwMDUgMjE6
MTE6NDkgLTAwMDAJMS4xMgorKysga2pzL2xvb2t1cC5jcHAJNiBKYW4gMjAwNiAwOTo1NTowMSAt
MDAwMApAQCAtMzMsMTQgKzMzLDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBrZXlzTWF0Y2goY29uc3QgVUNoYXIgKmMsIHVuc2lnbmVkIGxlbiwgY29uc3Qg
Y2hhciAqcykKIHsKLSAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBsZW47IGkrKywgYysrLCBz
KyspCisgIGNvbnN0IGNoYXIqIGVuZCA9IHMgKyBsZW47CisgIGZvciAoOyBzICE9IGVuZDsgYysr
LCBzKyspCiAgICAgaWYgKGMtPnVjICE9ICh1bnNpZ25lZCBjaGFyKSpzKQogICAgICAgcmV0dXJu
IGZhbHNlOwogICByZXR1cm4gKnMgPT0gMDsKIH0KIAotY29uc3QgSGFzaEVudHJ5KiBMb29rdXA6
OmZpbmRFbnRyeSggY29uc3Qgc3RydWN0IEhhc2hUYWJsZSAqdGFibGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqYywgdW5zaWduZWQgaW50IGxlbiApCitzdGF0
aWMgaW5saW5lIGNvbnN0IEhhc2hFbnRyeSogZmluZEVudHJ5KGNvbnN0IHN0cnVjdCBIYXNoVGFi
bGUgKnRhYmxlLCB1bnNpZ25lZCBpbnQgaGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKmMsIHVuc2lnbmVkIGludCBsZW4gKQogewogI2lm
bmRlZiBOREVCVUcKICAgaWYgKHRhYmxlLT50eXBlICE9IDIpIHsKQEAgLTQ4LDkgKzQ5LDggQEAg
Y29uc3QgSGFzaEVudHJ5KiBMb29rdXA6OmZpbmRFbnRyeSggY29ucwogICAgIHJldHVybiAwOwog
ICB9CiAjZW5kaWYKLQotICBpbnQgaCA9IGhhc2goYywgbGVuKSAlIHRhYmxlLT5oYXNoU2l6ZTsK
LSAgY29uc3QgSGFzaEVudHJ5ICplID0gJnRhYmxlLT5lbnRyaWVzW2hdOworICBoYXNoICU9IHRh
YmxlLT5oYXNoU2l6ZTsKKyAgY29uc3QgSGFzaEVudHJ5ICplID0gJnRhYmxlLT5lbnRyaWVzW2hh
c2hdOwogCiAgIC8vIGVtcHR5IGJ1Y2tldCA/CiAgIGlmICghZS0+cykKQEAgLTYwLDIzICs2MCwy
NCBAQCBjb25zdCBIYXNoRW50cnkqIExvb2t1cDo6ZmluZEVudHJ5KCBjb25zCiAgICAgLy8gY29t
cGFyZSBzdHJpbmdzCiAgICAgaWYgKGtleXNNYXRjaChjLCBsZW4sIGUtPnMpKQogICAgICAgcmV0
dXJuIGU7CisKICAgICAvLyB0cnkgbmV4dCBidWNrZXQKICAgICBlID0gZS0+bmV4dDsKICAgfSB3
aGlsZSAoZSk7Ci0KICAgcmV0dXJuIDA7CiB9CiAKLWNvbnN0IEhhc2hFbnRyeSogTG9va3VwOjpm
aW5kRW50cnkoIGNvbnN0IHN0cnVjdCBIYXNoVGFibGUgKnRhYmxlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyICZzICkKK2NvbnN0IEhhc2hFbnRyeSog
TG9va3VwOjpmaW5kRW50cnkoY29uc3Qgc3RydWN0IEhhc2hUYWJsZSAqdGFibGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIgJnMgKQogewotICBy
ZXR1cm4gZmluZEVudHJ5KCB0YWJsZSwgcy5kYXRhKCksIHMuc2l6ZSgpICk7CisgIGNvbnN0IEhh
c2hFbnRyeSogZW50cnkgPSA6OmZpbmRFbnRyeSh0YWJsZSwgcy51c3RyaW5nKCkucmVwKCktPmhh
c2goKSwgcy5kYXRhKCksIHMuc2l6ZSgpKTsKKyAgcmV0dXJuIGVudHJ5OwogfQogCiBpbnQgTG9v
a3VwOjpmaW5kKGNvbnN0IHN0cnVjdCBIYXNoVGFibGUgKnRhYmxlLAogCQkgY29uc3QgVUNoYXIg
KmMsIHVuc2lnbmVkIGludCBsZW4pCiB7Ci0gIGNvbnN0IEhhc2hFbnRyeSAqZW50cnkgPSBmaW5k
RW50cnkoIHRhYmxlLCBjLCBsZW4gKTsKKyAgY29uc3QgSGFzaEVudHJ5ICplbnRyeSA9IDo6Zmlu
ZEVudHJ5KHRhYmxlLCBVU3RyaW5nOjpSZXA6OmNvbXB1dGVIYXNoKGMsIGxlbiksIGMsIGxlbik7
CiAgIGlmIChlbnRyeSkKICAgICByZXR1cm4gZW50cnktPnZhbHVlOwogICByZXR1cm4gLTE7CkBA
IC04NCwyOSArODUsOSBAQCBpbnQgTG9va3VwOjpmaW5kKGNvbnN0IHN0cnVjdCBIYXNoVGFibGUg
CiAKIGludCBMb29rdXA6OmZpbmQoY29uc3Qgc3RydWN0IEhhc2hUYWJsZSAqdGFibGUsIGNvbnN0
IElkZW50aWZpZXIgJnMpCiB7Ci0gIHJldHVybiBmaW5kKHRhYmxlLCBzLmRhdGEoKSwgcy5zaXpl
KCkpOwotfQotCi11bnNpZ25lZCBpbnQgTG9va3VwOjpoYXNoKGNvbnN0IFVDaGFyICpjLCB1bnNp
Z25lZCBpbnQgbGVuKQotewotICB1bnNpZ25lZCBpbnQgdmFsID0gMDsKLSAgLy8gaWdub3Jpbmcg
aGlnaGVyIGJ5dGUKLSAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW47IGkrKywgYysr
KQotICAgIHZhbCArPSBjLT5sb3coKTsKLQotICByZXR1cm4gdmFsOwotfQotCi11bnNpZ25lZCBp
bnQgTG9va3VwOjpoYXNoKGNvbnN0IElkZW50aWZpZXIgJmtleSkKLXsKLSAgcmV0dXJuIGhhc2go
a2V5LmRhdGEoKSwga2V5LnNpemUoKSk7Ci19Ci0KLXVuc2lnbmVkIGludCBMb29rdXA6Omhhc2go
Y29uc3QgY2hhciAqcykKLXsKLSAgdW5zaWduZWQgaW50IHZhbCA9IDA7Ci0gIHdoaWxlICgqcykK
LSAgICB2YWwgKz0gKnMrKzsKLQotICByZXR1cm4gdmFsOworICAvL3ByaW50ZigibG9va2luZyBm
b3I6JXNcbiIsIHMuYXNjaWkoKSk7CisgIGNvbnN0IEhhc2hFbnRyeSAqZW50cnkgPSA6OmZpbmRF
bnRyeSh0YWJsZSwgcy51c3RyaW5nKCkucmVwKCktPmhhc2goKSwgcy5kYXRhKCksIHMuc2l6ZSgp
KTsKKyAgaWYgKGVudHJ5KQorICAgIHJldHVybiBlbnRyeS0+dmFsdWU7CisgIHJldHVybiAtMTsK
IH0KSW5kZXg6IGtqcy9sb29rdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2
YVNjcmlwdENvcmUva2pzL2xvb2t1cC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIyCmRpZmYg
LXAgLXUgLXIxLjIyIGtqcy9sb29rdXAuaAotLS0ga2pzL2xvb2t1cC5oCTIyIERlYyAyMDA1IDIx
OjA3OjM3IC0wMDAwCTEuMjIKKysrIGtqcy9sb29rdXAuaAk2IEphbiAyMDA2IDA5OjU1OjAxIC0w
MDAwCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAqIHMgaXMgdGhlIGtl
eSAoZS5nLiBhIHByb3BlcnR5IG5hbWUpCiAgICAgICovCiAgICAgY29uc3QgY2hhciAqczsKKwog
ICAgIC8qKgogICAgICAqIHZhbHVlIGlzIHRoZSByZXN1bHQgdmFsdWUgKHVzdWFsbHkgYW4gZW51
bSB2YWx1ZSkKICAgICAgKi8KQEAgLTEwMiw2ICsxMDMsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICBzdGF0aWMgaW50IGZpbmQoY29uc3Qgc3RydWN0IEhhc2hUYWJsZSAqdGFibGUsCiAJCSAgICBj
b25zdCBVQ2hhciAqYywgdW5zaWduZWQgaW50IGxlbik7CiAKKwogICAgIC8qKgogICAgICAqIEZp
bmQgYW4gZW50cnkgaW4gdGhlIHRhYmxlLCBhbmQgcmV0dXJuIHRoZSBlbnRyeQogICAgICAqIFRo
aXMgdmFyaWFudCBnaXZlcyBhY2Nlc3MgdG8gdGhlIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGVu
dHJ5LApAQCAtMTA5LDE1ICsxMTEsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgKi8KICAgICBz
dGF0aWMgY29uc3QgSGFzaEVudHJ5KiBmaW5kRW50cnkoY29uc3Qgc3RydWN0IEhhc2hUYWJsZSAq
dGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElkZW50
aWZpZXIgJnMpOwotICAgIHN0YXRpYyBjb25zdCBIYXNoRW50cnkqIGZpbmRFbnRyeShjb25zdCBz
dHJ1Y3QgSGFzaFRhYmxlICp0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVUNoYXIgKmMsIHVuc2lnbmVkIGludCBsZW4pOwogCi0gICAgLyoqCi0gICAg
ICogQ2FsY3VsYXRlIHRoZSBoYXNoIHZhbHVlIGZvciBhIGdpdmVuIGtleQotICAgICAqLwotICAg
IHN0YXRpYyB1bnNpZ25lZCBpbnQgaGFzaChjb25zdCBJZGVudGlmaWVyICZrZXkpOwotICAgIHN0
YXRpYyB1bnNpZ25lZCBpbnQgaGFzaChjb25zdCBVQ2hhciAqYywgdW5zaWduZWQgaW50IGxlbik7
Ci0gICAgc3RhdGljIHVuc2lnbmVkIGludCBoYXNoKGNvbnN0IGNoYXIgKnMpOwogICB9OwogCiAg
IGNsYXNzIEV4ZWNTdGF0ZTsK
</data>
<flag name="review"
          id="1196"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>