<?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>13389</bug_id>
          
          <creation_ts>2007-04-18 01:01:06 -0700</creation_ts>
          <short_desc>[js-collector-tweaks] move mark and collectOnMainThreadOnly bits into separate bitmaps</short_desc>
          <delta_ts>2007-04-23 15:14:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>523.x (Safari 3)</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>
          <dependson>13381</dependson>
    
    <dependson>13382</dependson>
    
    <dependson>13383</dependson>
    
    <dependson>13384</dependson>
    
    <dependson>13385</dependson>
    
    <dependson>13386</dependson>
    
    <dependson>13387</dependson>
    
    <dependson>13388</dependson>
          <blocked>13390</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>14345</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-18 01:01:06 -0700</bug_when>
    <thetext>Move mark and collectOnMainThreadOnly bits into separate bitmaps. This saves 4 bytes per cell, allowing shrink of cell size to 32, which leads to a .8% speed improvement on iBench.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14346</commentid>
    <comment_count>1</comment_count>
      <attachid>14070</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-18 01:01:33 -0700</bug_when>
    <thetext>Created attachment 14070
09-js-gc-mark-bitmap+32byte-cell.patch.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14222</commentid>
    <comment_count>2</comment_count>
      <attachid>14070</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-04-18 11:30:40 -0700</bug_when>
    <thetext>Comment on attachment 14070
09-js-gc-mark-bitmap+32byte-cell.patch.txt

+#include &lt;sys/mman.h&gt;

I don&apos;t think it&apos;s right that have this outside an #if -- is it really a header that exists on all JavaScriptCore platforms.

Now that all these constants have to be moved into a header file, maybe we should make them have non-all-capitals name or use a namespace or something. They&apos;re pretty ugly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14189</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-18 15:06:30 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 14070 [edit])
&gt; +#include &lt;sys/mman.h&gt;
&gt; 
&gt; I don&apos;t think it&apos;s right that have this outside an #if -- is it really a header
&gt; that exists on all JavaScriptCore platforms.

OK, I&apos;ll put it in an ifdef (I think it is only needed for non-Darwin Unix platforms, to get mmap/munmap).

&gt; Now that all these constants have to be moved into a header file, maybe we
&gt; should make them have non-all-capitals name or use a namespace or something.
&gt; They&apos;re pretty ugly.

I&apos;m happy to give them more normal names, but maybe that should be a separate patch?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14200</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-04-18 21:07:39 -0700</bug_when>
    <thetext>Code looks right to me, modulo darin&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13179</commentid>
    <comment_count>5</comment_count>
      <attachid>14146</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-23 12:03:39 -0700</bug_when>
    <thetext>Created attachment 14146
fix the sys/mman.h thing, plus some other cleanups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13170</commentid>
    <comment_count>6</comment_count>
      <attachid>14148</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-23 13:17:21 -0700</bug_when>
    <thetext>Created attachment 14148
actually fixed the mman thing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13122</commentid>
    <comment_count>7</comment_count>
      <attachid>14148</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-04-23 15:05:31 -0700</bug_when>
    <thetext>Comment on attachment 14148
actually fixed the mman thing

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14070</attachid>
            <date>2007-04-18 01:01:33 -0700</date>
            <delta_ts>2007-04-23 12:03:39 -0700</delta_ts>
            <desc>09-js-gc-mark-bitmap+32byte-cell.patch.txt</desc>
            <filename>09-js-gc-mark-bitmap+32byte-cell.patch.txt</filename>
            <type>text/plain</type>
            <size>14849</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODE2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDgxNykKQEAgLTEsMyArMSw0MCBAQAorMjAwNy0wNC0xMCAgTWFjaWVq
IFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgLSBtb3ZlIG1hcmsgYW5kIGNvbGxlY3RPbk1h
aW5UaHJlYWRPbmx5IGJpdHMgaW50byBzZXBhcmF0ZSBiaXRtYXBzCisgICAgICAgIAorICAgICAg
ICBUaGlzIHNhdmVzIDQgYnl0ZXMgcGVyIGNlbGwsIGFsbG93aW5nIHNocmluayBvZiBjZWxsIHNp
emUgdG8gMzIsCisgICAgICAgIHdoaWNoIGxlYWRzIHRvIGEgLjglIHNwZWVkIGltcHJvdmVtZW50
IG9uIGlCZW5jaC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgb25seSBmZWFzaWJsZSBiZWNh
dXNlIG9mIGFsbCB0aGUgcHJldmlvdXMgY2hhbmdlcyBvbiB0aGUgYnJhbmNoLgorCisgICAgICAg
ICoga2pzL2NvbGxlY3Rvci5jcHA6CisgICAgICAgIChLSlM6OmFsbG9jYXRlQmxvY2spOiBBZGp1
c3QgZm9yIHNvbWUgcmVuYW1lcyBvZiBjb25zdGFudHMuIAorICAgICAgICAoS0pTOjpDb2xsZWN0
b3I6Om1hcmtTdGFja09iamVjdHNDb25zZXJ2YXRpdmVseSk6IE5vdyB0aGF0IGNlbGxzIGFyZSAz
MiBieXRlcyAoNjQgCisgICAgICAgIGJ5dGVzIG9uIDY0LWJpdCkgdGhlIGNlbGwgYWxpZ25tZW50
IGNoZWNrIGNhbiBiZSBtYWRlIG11Y2ggbW9yZSBzdHJpY3QsIGFuZCBhbHNvCisgICAgICAgIG9i
c29sZXRlcyB0aGUgbmVlZCBmb3IgYSAlIHNpemVvZihDb2xsZWN0b3JDZWxsKSBjaGVjay4gQWxz
bywgd2UgY2FuIG1hc2sgb2ZmIHRoZSBsb3cKKyAgICAgICAgYml0cyBvZiB0aGUgcG9pbnRlciB0
byBoYXZlIGEgcG90ZW50aWFsIGJsb2NrIHBvaW50ZXIgdG8gbG9vayBmb3IuCisgICAgICAgIChL
SlM6OkNvbGxlY3Rvcjo6Y29sbGVjdE9uTWFpblRocmVhZE9ubHkpOiBVc2UgYml0bWFwLgorICAg
ICAgICAoS0pTOjpDb2xsZWN0b3I6Om1hcmtNYWluVGhyZWFkT25seU9iamVjdHMpOiBVc2UgYml0
bWFwLgorICAgICAgICAoS0pTOjpDb2xsZWN0b3I6OmNvbGxlY3QpOiBXaGVuIHN3ZWVwaW5nLCB1
c2UgYml0bWFwcyBkaXJlY3RseSB0byBmaW5kIG1hcmsgYml0cy4KKyAgICAgICAgKiBranMvY29s
bGVjdG9yLmg6CisgICAgICAgIChLSlM6Oik6IE1vdmUgbmVlZGVkIGNvbnN0YW50cyBhbmQgdHlw
ZSBkZWNsYXJhdGlvbnMgaGVyZS4KKyAgICAgICAgKEtKUzo6Q29sbGVjdG9yQml0bWFwOjpnZXQp
OiBCaXQgdHdpZGRsaW5nIHRvIGdldCBhIGJpdG1hcCB2YWx1ZS4KKyAgICAgICAgKEtKUzo6Q29s
bGVjdG9yQml0bWFwOjpzZXQpOiBCaXQgdHdpZGRsaW5nIHRvIHNldCBhIGJpdG1hcCBiaXQgdG8g
dHJ1ZS4KKyAgICAgICAgKEtKUzo6Q29sbGVjdG9yQml0bWFwOjpjbGVhcik6IEJpdCB0d2lkZGxp
bmcgdG8gc2V0IGEgYml0bWFwIGJpdCB0byBmYWxzZS4KKyAgICAgICAgKEtKUzo6Q29sbGVjdG9y
Qml0bWFwOjpjbGVhckFsbCk6IENsZWFyIHdob2xlIGJpdG1hcCBhdCBvbmUgZ28uCisgICAgICAg
IChLSlM6OkNvbGxlY3Rvcjo6Y2VsbEJsb2NrKTogTmV3IG9wZXJhdGlvbiwgY29tcHV0ZSB0aGUg
YmxvY2sgcG9pbnRlciBmb3IKKyAgICAgICAgYSBjZWxsIGJ5IG1hc2tpbmcgb2ZmIGxvdyBiaXRz
LgorICAgICAgICAoS0pTOjpDb2xsZWN0b3I6OmNlbGxPZmZzZXQpOiBOZXcgb3BlcmF0aW9uLCBj
b21wdXRlIHRoZSBjZWxsIG9mZnNldCBmb3IgYQorICAgICAgICBjZWxsIGJ5IG1hc2tpbmcgb2Zm
IGhpZ2ggYml0cyBhbmQgZGl2aWRpbmcgKGFjdHVhbGx5IGEgc2hpZnQpLgorICAgICAgICAoS0pT
OjpDb2xsZWN0b3I6OmlzQ2VsbE1hcmtlZCk6IENoZWNrIG1hcmsgYml0IGluIGJpdG1hcAorICAg
ICAgICAoS0pTOjpDb2xsZWN0b3I6Om1hcmtDZWxsKTogU2V0IG1hcmsgYml0IGluIGJpdG1hcC4K
KyAgICAgICAgKiBranMvdmFsdWUuaDoKKyAgICAgICAgKEtKUzo6SlNDZWxsOjpKU0NlbGwpOiBO
byBtb3JlIGJpdHMuCisgICAgICAgIChLSlM6OkpTQ2VsbDo6bWFya2VkKTogTGV0IGNvbGxlY3Rv
ciBoYW5kbGUgaXQuCisgICAgICAgIChLSlM6OkpTQ2VsbDo6bWFyayk6IExldCBjb2xsZWN0b3Ig
aGFuZGxlIGl0LgorCiAyMDA3LTA0LTA5ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5j
b20+CiAKICAgICAgICAgTm90IHJldmlld2VkLCBleHBlcmltZW50YWwgY2hhbmdlLgpJbmRleDog
SmF2YVNjcmlwdENvcmUva2pzL3ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL3ZhbHVlLmgJKHJldmlzaW9uIDIwODE2KQorKysgSmF2YVNjcmlwdENvcmUva2pzL3ZhbHVl
LmgJKHJldmlzaW9uIDIwODE3KQpAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBLSlNfVkFMVUVf
SAogCiAjaW5jbHVkZSAiSlNJbW1lZGlhdGUuaCIKKyNpbmNsdWRlICJjb2xsZWN0b3IuaCIKICNp
bmNsdWRlICJ1c3RyaW5nLmgiCiAjaW5jbHVkZSA8c3RkZGVmLmg+IC8vIGZvciBzaXplX3QKIApA
QCAtMTU0LDEwICsxNTUsNiBAQAogICAgIHZvaWQgKm9wZXJhdG9yIG5ldyhzaXplX3QpOwogICAg
IHZpcnR1YWwgdm9pZCBtYXJrKCk7CiAgICAgYm9vbCBtYXJrZWQoKSBjb25zdDsKLQotcHJpdmF0
ZToKLSAgICBib29sIG1fY29sbGVjdE9uTWFpblRocmVhZE9ubHkgOiAxOwotICAgIGJvb2wgbV9t
YXJrZWQgOiAxOwogfTsKIAogSlNWYWx1ZSAqanNOdW1iZXJDZWxsKGRvdWJsZSk7CkBAIC0yMDQs
OCArMjAxLDYgQEAKIH0KIAogaW5saW5lIEpTQ2VsbDo6SlNDZWxsKCkKLSAgICA6IG1fY29sbGVj
dE9uTWFpblRocmVhZE9ubHkoZmFsc2UpCi0gICAgLCBtX21hcmtlZChmYWxzZSkKIHsKIH0KIApA
QCAtMjMwLDEyICsyMjUsMTIgQEAKIAogaW5saW5lIGJvb2wgSlNDZWxsOjptYXJrZWQoKSBjb25z
dAogewotICAgIHJldHVybiBtX21hcmtlZDsKKyAgICByZXR1cm4gQ29sbGVjdG9yOjppc0NlbGxN
YXJrZWQodGhpcyk7CiB9CiAKIGlubGluZSB2b2lkIEpTQ2VsbDo6bWFyaygpCiB7Ci0gICAgbV9t
YXJrZWQgPSB0cnVlOworICAgIHJldHVybiBDb2xsZWN0b3I6Om1hcmtDZWxsKHRoaXMpOwogfQog
CiBpbmxpbmUgSlNDZWxsICpKU1ZhbHVlOjpkb3duY2FzdCgpCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ranMvY29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvY29s
bGVjdG9yLmNwcAkocmV2aXNpb24gMjA4MTYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVj
dG9yLmNwcAkocmV2aXNpb24gMjA4MTcpCkBAIC0zNCw2ICszNCw4IEBACiAKICNpbmNsdWRlIDxw
dGhyZWFkLmg+CiAKKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorCiAjaWYgUExBVEZPUk0oREFSV0lO
KQogCiAjaW5jbHVkZSA8bWFjaC9tYWNoX3BvcnQuaD4KQEAgLTY2LDQzICs2OCwxMiBAQAogCiAv
LyB0dW5hYmxlIHBhcmFtZXRlcnMKIAotdGVtcGxhdGU8Ym9vbCBpczMyQml0LCBib29sIGlzNjRC
aXQ+IHN0cnVjdCBDZWxsU2l6ZTsKLXRlbXBsYXRlPD4gc3RydWN0IENlbGxTaXplPHRydWUsIGZh
bHNlPiB7IHN0YXRpYyBjb25zdCBzaXplX3QgbV92YWx1ZSA9IDQwOyB9OyAvLyAzMi1iaXQKLXRl
bXBsYXRlPD4gc3RydWN0IENlbGxTaXplPGZhbHNlLCB0cnVlPiB7IHN0YXRpYyBjb25zdCBzaXpl
X3QgbV92YWx1ZSA9IDY0OyB9OyAvLyA2NC1iaXQKLQotY29uc3Qgc2l6ZV90IEJMT0NLX1NJWkUg
PSAoMTYgKiA0MDk2KTsgLy8gNjRrCiBjb25zdCBzaXplX3QgU1BBUkVfRU1QVFlfQkxPQ0tTID0g
MjsKIGNvbnN0IHNpemVfdCBNSU5fQVJSQVlfU0laRSA9IDE0OwogY29uc3Qgc2l6ZV90IEdST1dU
SF9GQUNUT1IgPSAyOwogY29uc3Qgc2l6ZV90IExPV19XQVRFUl9GQUNUT1IgPSA0OwogY29uc3Qg
c2l6ZV90IEFMTE9DQVRJT05TX1BFUl9DT0xMRUNUSU9OID0gMTAwMDsKIAotLy8gZGVyaXZlZCBj
b25zdGFudHMKLWNvbnN0IHNpemVfdCBQVFJfSU5fQkxPQ0tfTUFTSyA9IChCTE9DS19TSVpFIC0g
MSk7Ci1jb25zdCBzaXplX3QgQkxPQ0tfTUFTSyA9ICh+UFRSX0lOX0JMT0NLX01BU0spOwotY29u
c3Qgc2l6ZV90IE1JTklNVU1fQ0VMTF9TSVpFID0gQ2VsbFNpemU8c2l6ZW9mKHZvaWQqKSA9PSBz
aXplb2YodWludDMyX3QpLCBzaXplb2Yodm9pZCopID09IHNpemVvZih1aW50NjRfdCk+OjptX3Zh
bHVlOwotY29uc3Qgc2l6ZV90IENFTExfQVJSQVlfTEVOR1RIID0gKE1JTklNVU1fQ0VMTF9TSVpF
IC8gc2l6ZW9mKGRvdWJsZSkpICsgKE1JTklNVU1fQ0VMTF9TSVpFICUgc2l6ZW9mKGRvdWJsZSkg
IT0gMCA/IDEgOiAwKTsKLWNvbnN0IHNpemVfdCBDRUxMX1NJWkUgPSBDRUxMX0FSUkFZX0xFTkdU
SCAqIHNpemVvZihkb3VibGUpOwotY29uc3Qgc2l6ZV90IENFTExTX1BFUl9CTE9DSyA9ICgoQkxP
Q0tfU0laRSAqIDggLSBzaXplb2YodWludDMyX3QpICogOCAtIHNpemVvZih2b2lkKikgKiA4KSAv
IChDRUxMX1NJWkUgKiA4KSk7Ci0KLQotc3RydWN0IENvbGxlY3RvckNlbGwgewotICB1bmlvbiB7
Ci0gICAgZG91YmxlIG1lbW9yeVtDRUxMX0FSUkFZX0xFTkdUSF07Ci0gICAgc3RydWN0IHsKLSAg
ICAgIHZvaWQgKnplcm9JZkZyZWU7Ci0gICAgICBwdHJkaWZmX3QgbmV4dDsKLSAgICB9IGZyZWVD
ZWxsOwotICB9IHU7Ci19OwotCi0KLXN0cnVjdCBDb2xsZWN0b3JCbG9jayB7Ci0gIENvbGxlY3Rv
ckNlbGwgY2VsbHNbQ0VMTFNfUEVSX0JMT0NLXTsKLSAgdWludDMyX3QgdXNlZENlbGxzOwotICBD
b2xsZWN0b3JDZWxsICpmcmVlTGlzdDsKLX07Ci0KIHN0cnVjdCBDb2xsZWN0b3JIZWFwIHsKICAg
Q29sbGVjdG9yQmxvY2sgKipibG9ja3M7CiAgIHNpemVfdCBudW1CbG9ja3M7CkBAIC0xNDQsNyAr
MTE1LDcgQEAKIHsKICNpZiBQTEFURk9STShEQVJXSU4pICAgIAogICAgIHZtX2FkZHJlc3NfdCBw
dHIgPSAwOwotICAgIHZtX21hcChjdXJyZW50X3Rhc2soKSwgJnB0ciwgQkxPQ0tfU0laRSwgUFRS
X0lOX0JMT0NLX01BU0ssIFZNX0ZMQUdTX0FOWVdIRVJFLCBNRU1PUllfT0JKRUNUX05VTEwsIDAs
IEZBTFNFLCBWTV9QUk9UX0RFRkFVTFQsIFZNX1BST1RfREVGQVVMVCwgVk1fSU5IRVJJVF9ERUZB
VUxUKTsKKyAgICB2bV9tYXAoY3VycmVudF90YXNrKCksICZwdHIsIEJMT0NLX1NJWkUsIEJMT0NL
X09GRlNFVF9NQVNLLCBWTV9GTEFHU19BTllXSEVSRSwgTUVNT1JZX09CSkVDVF9OVUxMLCAwLCBG
QUxTRSwgVk1fUFJPVF9ERUZBVUxULCBWTV9QUk9UX0RFRkFVTFQsIFZNX0lOSEVSSVRfREVGQVVM
VCk7CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgIC8vIHdpbmRvd3MgdmlydHVhbCBhZGRyZXNz
IGdyYW51bGFyaXR5IGlzIG5hdHVyYWxseSA2NGsKICAgICBMUFZPSUQgcHRyID0gVmlydHVhbEFs
bG9jKE5VTEwgbHBBZGRyZXNzLCBCTE9DS19TSVpFLCBNRU1fQ09NTUlUIHwgTUVNX1JFU0VSVkUs
IFBBR0VfUkVBRFdSSVRFKTsKQEAgLTE2Myw4ICsxMzQsOCBAQAogCiAgICAgdWludHB0cl90IHB0
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihyZXN1bHQpOwogICAgIHNpemVfdCBhZGp1
c3QgPSAwOwotICAgIGlmICgocHRyICYgUFRSX0lOX0JMT0NLX01BU0spICE9IDApCi0gICAgICAg
IGFkanVzdCA9IEJMT0NLX1NJWkUgLSAocHRyICYgUFRSX0lOX0JMT0NLX01BU0spOworICAgIGlm
ICgocHRyICYgQkxPQ0tfT0ZGU0VUX01BU0spICE9IDApCisgICAgICAgIGFkanVzdCA9IEJMT0NL
X1NJWkUgLSAocHRyICYgQkxPQ0tfT0ZGU0VUX01BU0spOwogCiAgICAgaWYgKGFkanVzdCA+IDAp
CiAgICAgICAgIG11bm1hcChyZWludGVycHJldF9jYXN0PHZvaWQqPihwdHIpLCBhZGp1c3QpOwpA
QCAtNDA2LDIzICszNzcsMjMgQEAKIAogI2RlZmluZSBJU19QT0lOVEVSX0FMSUdORUQocCkgKCgo
aW50cHRyX3QpKHApICYgKHNpemVvZihjaGFyICopIC0gMSkpID09IDApCiAKLS8vIGNlbGxzIGFy
ZSA4LWJ5dGUgYWxpZ25lZAotI2RlZmluZSBJU19DRUxMX0FMSUdORUQocCkgKCgoaW50cHRyX3Qp
KHApICYgNykgPT0gMCkKKy8vIGNlbGwgc2l6ZSBuZWVkcyB0byBiZSBhIHBvd2VyIG9mIHR3byBm
b3IgdGhpcyB0byBiZSB2YWxpZAorI2RlZmluZSBJU19DRUxMX0FMSUdORUQocCkgKCgoaW50cHRy
X3QpKHApICYgQ0VMTF9NQVNLKSA9PSAwKQogCiB2b2lkIENvbGxlY3Rvcjo6bWFya1N0YWNrT2Jq
ZWN0c0NvbnNlcnZhdGl2ZWx5KHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpCiB7CiAgIGlmIChzdGFy
dCA+IGVuZCkgewotICAgIHZvaWQgKnRtcCA9IHN0YXJ0OworICAgIHZvaWQqIHRtcCA9IHN0YXJ0
OwogICAgIHN0YXJ0ID0gZW5kOwogICAgIGVuZCA9IHRtcDsKICAgfQogCi0gIEFTU0VSVCgoKGNo
YXIgKillbmQgLSAoY2hhciAqKXN0YXJ0KSA8IDB4MTAwMDAwMCk7CisgIEFTU0VSVCgoKGNoYXIq
KWVuZCAtIChjaGFyKilzdGFydCkgPCAweDEwMDAwMDApOwogICBBU1NFUlQoSVNfUE9JTlRFUl9B
TElHTkVEKHN0YXJ0KSk7CiAgIEFTU0VSVChJU19QT0lOVEVSX0FMSUdORUQoZW5kKSk7CiAgIAot
ICBjaGFyICoqcCA9IChjaGFyICoqKXN0YXJ0OwotICBjaGFyICoqZSA9IChjaGFyICoqKWVuZDsK
KyAgY2hhcioqIHAgPSAoY2hhcioqKXN0YXJ0OworICBjaGFyKiogZSA9IChjaGFyKiopZW5kOwog
ICAKICAgc2l6ZV90IHVzZWRCbG9ja3MgPSBoZWFwLnVzZWRCbG9ja3M7CiAgIENvbGxlY3RvckJs
b2NrICoqYmxvY2tzID0gaGVhcC5ibG9ja3M7CkBAIC00MzAsMTMgKzQwMSwxNCBAQAogICBjb25z
dCBzaXplX3QgbGFzdENlbGxPZmZzZXQgPSBzaXplb2YoQ29sbGVjdG9yQ2VsbCkgKiAoQ0VMTFNf
UEVSX0JMT0NLIC0gMSk7CiAKICAgd2hpbGUgKHAgIT0gZSkgewotICAgIGNoYXIgKnggPSAqcCsr
OworICAgIGNoYXIqIHggPSAqcCsrOwogICAgIGlmIChJU19DRUxMX0FMSUdORUQoeCkgJiYgeCkg
eworICAgICAgdWludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih4
KSAmIEJMT0NLX09GRlNFVF9NQVNLOworICAgICAgQ29sbGVjdG9yQmxvY2sqIGJsb2NrQWRkciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Q29sbGVjdG9yQmxvY2sqPih4IC0gb2Zmc2V0KTsKICAgICAgIGZv
ciAoc2l6ZV90IGJsb2NrID0gMDsgYmxvY2sgPCB1c2VkQmxvY2tzOyBibG9jaysrKSB7Ci0gICAg
ICAgIHNpemVfdCBvZmZzZXQgPSB4IC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyICo+KGJsb2Nrc1ti
bG9ja10pOwotICAgICAgICBpZiAob2Zmc2V0IDw9IGxhc3RDZWxsT2Zmc2V0ICYmIG9mZnNldCAl
IHNpemVvZihDb2xsZWN0b3JDZWxsKSA9PSAwKSB7Ci0gICAgICAgICAgaWYgKCgoQ29sbGVjdG9y
Q2VsbCAqKXgpLT51LmZyZWVDZWxsLnplcm9JZkZyZWUgIT0gMCkgewotICAgICAgICAgICAgSlND
ZWxsICppbXAgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCAqPih4KTsKKyAgICAgICAgaWYgKChi
bG9ja3NbYmxvY2tdID09IGJsb2NrQWRkcikgJiAob2Zmc2V0IDw9IGxhc3RDZWxsT2Zmc2V0KSkg
eworICAgICAgICAgIGlmICgoKENvbGxlY3RvckNlbGwqKXgpLT51LmZyZWVDZWxsLnplcm9JZkZy
ZWUgIT0gMCkgeworICAgICAgICAgICAgSlNDZWxsKiBpbXAgPSByZWludGVycHJldF9jYXN0PEpT
Q2VsbCo+KHgpOwogICAgICAgICAgICAgaWYgKCFpbXAtPm1hcmtlZCgpKQogICAgICAgICAgICAg
ICBpbXAtPm1hcmsoKTsKICAgICAgICAgICB9CkBAIC02NzYsNyArNjQ4LDcgQEAKICAgICAgIHJl
dHVybjsKIAogICAgIEpTQ2VsbCogY2VsbCA9IHZhbHVlLT5kb3duY2FzdCgpOwotICAgIGNlbGwt
Pm1fY29sbGVjdE9uTWFpblRocmVhZE9ubHkgPSB0cnVlOworICAgIGNlbGxCbG9jayhjZWxsKS0+
Y29sbGVjdE9uTWFpblRocmVhZE9ubHkuc2V0KGNlbGxPZmZzZXQoY2VsbCkpOwogICAgICsrbWFp
blRocmVhZE9ubHlPYmplY3RDb3VudDsKIH0KIApAQCAtNzE5LDEwICs2OTEsMTEgQEAKICAgICAg
ICAgICAgIGlmIChjZWxsLT51LmZyZWVDZWxsLnplcm9JZkZyZWUgPT0gMCkKICAgICAgICAgICAg
ICAgICArK21pbmltdW1DZWxsc1RvUHJvY2VzczsKICAgICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgICAgIEpTQ2VsbCogaW1wID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihjZWxsKTsK
LSAgICAgICAgICAgICAgICBpZiAoaW1wLT5tX2NvbGxlY3RPbk1haW5UaHJlYWRPbmx5KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmKCFpbXAtPm1hcmtlZCgpKQorICAgICAgICAgICAgICAgIGlm
IChjdXJCbG9jay0+Y29sbGVjdE9uTWFpblRocmVhZE9ubHkuZ2V0KGkpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmICghY3VyQmxvY2stPm1hcmtlZC5nZXQoaSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEpTQ2VsbCogaW1wID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihjZWxsKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGltcC0+bWFyaygpOworICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIGlmICgrK2NvdW50ID09IG1haW5UaHJlYWRPbmx5T2Jq
ZWN0Q291bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgfQpAQCAtNzg4LDIwICs3NjEsMjIgQEAKICAgICBpZiAodXNlZENlbGxzID09IENFTExTX1BF
Ul9CTE9DSykgewogICAgICAgLy8gc3BlY2lhbCBjYXNlIHdpdGggYSBibG9jayB3aGVyZSBhbGwg
Y2VsbHMgYXJlIHVzZWQgLS0gdGVzdGluZyBpbmRpY2F0ZXMgdGhpcyBoYXBwZW5zIG9mdGVuCiAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IENFTExTX1BFUl9CTE9DSzsgaSsrKSB7Ci0gICAg
ICAgIENvbGxlY3RvckNlbGwgKmNlbGwgPSBjdXJCbG9jay0+Y2VsbHMgKyBpOwotICAgICAgICBK
U0NlbGwgKmltcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsICo+KGNlbGwpOwotICAgICAgICBp
ZiAoaW1wLT5tX21hcmtlZCkgewotICAgICAgICAgIGltcC0+bV9tYXJrZWQgPSBmYWxzZTsKLSAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFjdXJCbG9jay0+bWFya2VkLmdldChpKSkgewor
ICAgICAgICAgIENvbGxlY3RvckNlbGwqIGNlbGwgPSBjdXJCbG9jay0+Y2VsbHMgKyBpOworCiAg
ICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciBhbGxvY2F0ZWQgYnV0IHVuaW5pdGlhbGl6ZWQg
b2JqZWN0CiAgICAgICAgICAgLy8gKFdlIGRvbid0IG5lZWQgdGhpcyBjaGVjayBlYXJsaWVyIGJl
Y2F1c2Ugbm90aGluZyBwcmlvciB0aGlzIHBvaW50IAogICAgICAgICAgIC8vIGFzc3VtZXMgdGhl
IG9iamVjdCBoYXMgYSB2YWxpZCB2cHRyLikKICAgICAgICAgICBpZiAoY2VsbC0+dS5mcmVlQ2Vs
bC56ZXJvSWZGcmVlID09IDApCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkSXNNYWluVGhyZWFkIHx8ICFpbXAtPm1fY29sbGVjdE9uTWFpblRo
cmVhZE9ubHkpOwotICAgICAgICAgIGlmIChpbXAtPm1fY29sbGVjdE9uTWFpblRocmVhZE9ubHkp
CisgICAgICAgICAgSlNDZWxsKiBpbXAgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGNlbGwp
OworCisgICAgICAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWRJc01haW5UaHJlYWQgfHwgIWN1ckJs
b2NrLT5jb2xsZWN0T25NYWluVGhyZWFkT25seS5nZXQoaSkpOworICAgICAgICAgIGlmIChjdXJC
bG9jay0+Y29sbGVjdE9uTWFpblRocmVhZE9ubHkuZ2V0KGkpKSB7CisgICAgICAgICAgICBjdXJC
bG9jay0+Y29sbGVjdE9uTWFpblRocmVhZE9ubHkuY2xlYXIoaSk7CiAgICAgICAgICAgICAtLW1h
aW5UaHJlYWRPbmx5T2JqZWN0Q291bnQ7CisgICAgICAgICAgfQogICAgICAgICAgIGltcC0+fkpT
Q2VsbCgpOwogICAgICAgICAgIC0tdXNlZENlbGxzOwogICAgICAgICAgIC0tbnVtTGl2ZU9iamVj
dHM7CkBAIC04MTksMTMgKzc5NCwxMyBAQAogICAgICAgICBpZiAoY2VsbC0+dS5mcmVlQ2VsbC56
ZXJvSWZGcmVlID09IDApIHsKICAgICAgICAgICArK21pbmltdW1DZWxsc1RvUHJvY2VzczsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBKU0NlbGwgKmltcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
SlNDZWxsICo+KGNlbGwpOwotICAgICAgICAgIGlmIChpbXAtPm1fbWFya2VkKSB7Ci0gICAgICAg
ICAgICBpbXAtPm1fbWFya2VkID0gZmFsc2U7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkSXNNYWluVGhyZWFkIHx8ICFpbXAtPm1fY29sbGVjdE9u
TWFpblRocmVhZE9ubHkpOwotICAgICAgICAgICAgaWYgKGltcC0+bV9jb2xsZWN0T25NYWluVGhy
ZWFkT25seSkKKyAgICAgICAgICBpZiAoIWN1ckJsb2NrLT5tYXJrZWQuZ2V0KGkpKSB7CisgICAg
ICAgICAgICBKU0NlbGwgKmltcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsICo+KGNlbGwpOwor
ICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWRJc01haW5UaHJlYWQgfHwgIWN1ckJsb2Nr
LT5jb2xsZWN0T25NYWluVGhyZWFkT25seS5nZXQoaSkpOworICAgICAgICAgICAgaWYgKGN1ckJs
b2NrLT5jb2xsZWN0T25NYWluVGhyZWFkT25seS5nZXQoaSkpIHsKKyAgICAgICAgICAgICAgY3Vy
QmxvY2stPmNvbGxlY3RPbk1haW5UaHJlYWRPbmx5LmNsZWFyKGkpOwogICAgICAgICAgICAgICAt
LW1haW5UaHJlYWRPbmx5T2JqZWN0Q291bnQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
bXAtPn5KU0NlbGwoKTsKICAgICAgICAgICAgIC0tdXNlZENlbGxzOwogICAgICAgICAgICAgLS1u
dW1MaXZlT2JqZWN0czsKQEAgLTg0MSw2ICs4MTYsNyBAQAogICAgIAogICAgIGN1ckJsb2NrLT51
c2VkQ2VsbHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odXNlZENlbGxzKTsKICAgICBjdXJCbG9j
ay0+ZnJlZUxpc3QgPSBmcmVlTGlzdDsKKyAgICBjdXJCbG9jay0+bWFya2VkLmNsZWFyQWxsKCk7
CiAKICAgICBpZiAodXNlZENlbGxzID09IDApIHsKICAgICAgIGVtcHR5QmxvY2tzKys7CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUva2pzL2NvbGxlY3Rvci5oCShyZXZpc2lvbiAyMDgxNikKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9jb2xsZWN0b3IuaAkocmV2aXNpb24gMjA4MTcpCkBAIC0yNCwxMyArMjQsMTYgQEAKICNp
Zm5kZWYgS0pTQ09MTEVDVE9SX0hfCiAjZGVmaW5lIEtKU0NPTExFQ1RPUl9IXwogCi0jaW5jbHVk
ZSAidmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KIAogI2RlZmluZSBL
SlNfTUVNX0xJTUlUIDUwMDAwMAogCiBuYW1lc3BhY2UgS0pTIHsKIAorICBjbGFzcyBKU0NlbGw7
CisgIGNsYXNzIEpTVmFsdWU7CisgIGNsYXNzIENvbGxlY3RvckJsb2NrOworCiAgIGNsYXNzIENv
bGxlY3RvciB7CiAgIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCogYWxsb2NhdGUoc2l6ZV90IHMp
OwpAQCAtNjAsNyArNjMsMTQgQEAKICAgICAKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckFzTWFp
blRocmVhZCgpOwogCisgICAgc3RhdGljIGJvb2wgaXNDZWxsTWFya2VkKGNvbnN0IEpTQ2VsbCop
OworICAgIHN0YXRpYyB2b2lkIG1hcmtDZWxsKEpTQ2VsbCopOworCiAgIHByaXZhdGU6CisgICAg
c3RhdGljIGNvbnN0IENvbGxlY3RvckJsb2NrKiBjZWxsQmxvY2soY29uc3QgSlNDZWxsKik7Cisg
ICAgc3RhdGljIENvbGxlY3RvckJsb2NrKiBjZWxsQmxvY2soSlNDZWxsKik7CisgICAgc3RhdGlj
IHNpemVfdCBjZWxsT2Zmc2V0KGNvbnN0IEpTQ2VsbCogY2VsbCk7CisKICAgICBDb2xsZWN0b3Io
KTsKIAogICAgIHN0YXRpYyB2b2lkIG1hcmtQcm90ZWN0ZWRPYmplY3RzKCk7CkBAIC03NCw2ICs4
NCw3OCBAQAogICAgIHN0YXRpYyBib29sIG1lbW9yeUZ1bGw7CiAgIH07CiAKKworCisgIC8vIHR1
bmFibGUgcGFyYW1ldGVycworICB0ZW1wbGF0ZTxib29sIGlzMzJCaXQsIGJvb2wgaXM2NEJpdD4g
c3RydWN0IENlbGxTaXplOworCisgIC8vIGNlbGwgc2l6ZSBuZWVkcyB0byBiZSBhIHBvd2VyIG9m
IHR3byBmb3IgY2VydGFpbiBvcHRpbWl6YXRpb25zIGluIGNvbGxlY3Rvci5jcHAKKyAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQ2VsbFNpemU8dHJ1ZSwgZmFsc2U+IHsgc3RhdGljIGNvbnN0IHNpemVfdCBt
X3ZhbHVlID0gMzI7IH07IC8vIDMyLWJpdAorICB0ZW1wbGF0ZTw+IHN0cnVjdCBDZWxsU2l6ZTxm
YWxzZSwgdHJ1ZT4geyBzdGF0aWMgY29uc3Qgc2l6ZV90IG1fdmFsdWUgPSA2NDsgfTsgLy8gNjQt
Yml0CisgIGNvbnN0IHNpemVfdCBCTE9DS19TSVpFID0gKDE2ICogNDA5Nik7IC8vIDY0aworICAK
KyAgLy8gZGVyaXZlZCBjb25zdGFudHMKKyAgY29uc3Qgc2l6ZV90IEJMT0NLX09GRlNFVF9NQVNL
ID0gKEJMT0NLX1NJWkUgLSAxKTsKKyAgY29uc3Qgc2l6ZV90IEJMT0NLX01BU0sgPSAofkJMT0NL
X09GRlNFVF9NQVNLKTsKKyAgY29uc3Qgc2l6ZV90IE1JTklNVU1fQ0VMTF9TSVpFID0gQ2VsbFNp
emU8c2l6ZW9mKHZvaWQqKSA9PSBzaXplb2YodWludDMyX3QpLCBzaXplb2Yodm9pZCopID09IHNp
emVvZih1aW50NjRfdCk+OjptX3ZhbHVlOworICBjb25zdCBzaXplX3QgQ0VMTF9BUlJBWV9MRU5H
VEggPSAoTUlOSU1VTV9DRUxMX1NJWkUgLyBzaXplb2YoZG91YmxlKSkgKyAoTUlOSU1VTV9DRUxM
X1NJWkUgJSBzaXplb2YoZG91YmxlKSAhPSAwID8gc2l6ZW9mKGRvdWJsZSkgOiAwKTsKKyAgY29u
c3Qgc2l6ZV90IENFTExfU0laRSA9IChDRUxMX0FSUkFZX0xFTkdUSCAqIHNpemVvZihkb3VibGUp
KTsKKyAgY29uc3Qgc2l6ZV90IENFTExfTUFTSyA9IChDRUxMX1NJWkUgLSAxKTsKKyAgY29uc3Qg
c2l6ZV90IENFTExTX1BFUl9CTE9DSyA9ICgoQkxPQ0tfU0laRSAqIDggLSBzaXplb2YodWludDMy
X3QpICogOCAtIHNpemVvZih2b2lkICopICogOCAtIDIgKiAoNyArIDMgKiA4KSkgLyAoQ0VMTF9T
SVpFICogOCArIDIpKTsKKyAgY29uc3Qgc2l6ZV90IEJJVE1BUF9TSVpFID0gKChDRUxMU19QRVJf
QkxPQ0sgKyA3KSAvIDgpOworICAKKyAgCisgIHN0cnVjdCBDb2xsZWN0b3JCaXRtYXAgeworICAg
IHVpbnQzMl90IGJpdHNbKEJJVE1BUF9TSVpFICsgMykgLyBzaXplb2YodWludDMyX3QpXTsKKyAg
ICBib29sIGdldChzaXplX3QgbikgY29uc3QgeyByZXR1cm4gYml0c1tuID4+IDVdICYgKDEgPDwg
KG4gJiAweDFGKSk7IH0gCisgICAgdm9pZCBzZXQoc2l6ZV90IG4pIHsgYml0c1tuID4+IDVdIHw9
ICgxIDw8IChuICYgMHgxRikpOyB9IAorICAgIHZvaWQgY2xlYXIoc2l6ZV90IG4pIHsgYml0c1tu
ID4+IDVdICY9IH4oMSA8PCAobiAmIDB4MUYpKTsgfSAKKyAgICB2b2lkIGNsZWFyQWxsKCkgeyBt
ZW1zZXQoYml0cywgMCwgc2l6ZW9mKGJpdHMpKTsgfQorICB9OworICAKKyAgc3RydWN0IENvbGxl
Y3RvckNlbGwgeworICAgIHVuaW9uIHsKKyAgICAgIGRvdWJsZSBtZW1vcnlbQ0VMTF9BUlJBWV9M
RU5HVEhdOworICAgICAgc3RydWN0IHsKKyAgICAgICAgdm9pZCogemVyb0lmRnJlZTsKKyAgICAg
ICAgcHRyZGlmZl90IG5leHQ7CisgICAgICB9IGZyZWVDZWxsOworICAgIH0gdTsKKyAgfTsKKwor
ICBzdHJ1Y3QgQ29sbGVjdG9yQmxvY2sgeworICAgIENvbGxlY3RvckNlbGwgY2VsbHNbQ0VMTFNf
UEVSX0JMT0NLXTsKKyAgICB1aW50MzJfdCB1c2VkQ2VsbHM7CisgICAgQ29sbGVjdG9yQ2VsbCog
ZnJlZUxpc3Q7CisgICAgQ29sbGVjdG9yQml0bWFwIG1hcmtlZDsKKyAgICBDb2xsZWN0b3JCaXRt
YXAgY29sbGVjdE9uTWFpblRocmVhZE9ubHk7CisgIH07CisKKyAgaW5saW5lIGNvbnN0IENvbGxl
Y3RvckJsb2NrKiBDb2xsZWN0b3I6OmNlbGxCbG9jayhjb25zdCBKU0NlbGwqIGNlbGwpCisgIHsK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBDb2xsZWN0b3JCbG9jayo+KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjZWxsKSAmIEJMT0NLX01BU0spOworICB9CisKKyAgaW5s
aW5lIENvbGxlY3RvckJsb2NrKiBDb2xsZWN0b3I6OmNlbGxCbG9jayhKU0NlbGwqIGNlbGwpCisg
IHsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxDb2xsZWN0b3JCbG9jayo+KGNlbGxCbG9jayhjb25z
dF9jYXN0PGNvbnN0IEpTQ2VsbCo+KGNlbGwpKSk7CisgIH0KKworICBpbmxpbmUgc2l6ZV90IENv
bGxlY3Rvcjo6Y2VsbE9mZnNldChjb25zdCBKU0NlbGwqIGNlbGwpCisgIHsKKyAgICByZXR1cm4g
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjZWxsKSAmIEJMT0NLX09GRlNFVF9NQVNLKSAv
IENFTExfU0laRTsKKyAgfQorCisgIGlubGluZSBib29sIENvbGxlY3Rvcjo6aXNDZWxsTWFya2Vk
KGNvbnN0IEpTQ2VsbCogY2VsbCkKKyAgeworICAgIHJldHVybiBjZWxsQmxvY2soY2VsbCktPm1h
cmtlZC5nZXQoY2VsbE9mZnNldChjZWxsKSk7CisgIH0KKworICBpbmxpbmUgdm9pZCBDb2xsZWN0
b3I6Om1hcmtDZWxsKEpTQ2VsbCogY2VsbCkKKyAgeworICAgIGNlbGxCbG9jayhjZWxsKS0+bWFy
a2VkLnNldChjZWxsT2Zmc2V0KGNlbGwpKTsKKyAgfQorCiB9IC8vIG5hbWVzcGFjZSBLSlMKIAog
I2VuZGlmIC8qIEtKU0NPTExFQ1RPUl9IXyAqLwo=
</data>
<flag name="review"
          id="5685"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14146</attachid>
            <date>2007-04-23 12:03:39 -0700</date>
            <delta_ts>2007-04-23 14:28:23 -0700</delta_ts>
            <desc>fix the sys/mman.h thing, plus some other cleanups</desc>
            <filename>09-js-gc-mark-bitmap+32byte-cell-v2.patch.txt</filename>
            <type>text/plain</type>
            <size>15215</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDMyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMDctMDQtMjMgIE1hY2llaiBT
dGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBh
bmQgR2VvZmYuCisgICAgICAgIAorICAgICAgICAtIG1vdmUgbWFyayBhbmQgY29sbGVjdE9uTWFp
blRocmVhZE9ubHkgYml0cyBpbnRvIHNlcGFyYXRlIGJpdG1hcHMKKyAgICAgICAgCisgICAgICAg
IFRoaXMgc2F2ZXMgNCBieXRlcyBwZXIgY2VsbCwgYWxsb3dpbmcgc2hyaW5rIG9mIGNlbGwgc2l6
ZSB0byAzMiwKKyAgICAgICAgd2hpY2ggbGVhZHMgdG8gYSAuOCUgc3BlZWQgaW1wcm92ZW1lbnQg
b24gaUJlbmNoLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBvbmx5IGZlYXNpYmxlIGJlY2F1
c2Ugb2YgYWxsIHRoZSBwcmV2aW91cyBjaGFuZ2VzIG9uIHRoZSBicmFuY2guCisKKyAgICAgICAg
KiBranMvY29sbGVjdG9yLmNwcDoKKyAgICAgICAgKEtKUzo6YWxsb2NhdGVCbG9jayk6IEFkanVz
dCBmb3Igc29tZSByZW5hbWVzIG9mIGNvbnN0YW50cy4gCisgICAgICAgIChLSlM6OkNvbGxlY3Rv
cjo6bWFya1N0YWNrT2JqZWN0c0NvbnNlcnZhdGl2ZWx5KTogTm93IHRoYXQgY2VsbHMgYXJlIDMy
IGJ5dGVzICg2NCAKKyAgICAgICAgYnl0ZXMgb24gNjQtYml0KSB0aGUgY2VsbCBhbGlnbm1lbnQg
Y2hlY2sgY2FuIGJlIG1hZGUgbXVjaCBtb3JlIHN0cmljdCwgYW5kIGFsc28KKyAgICAgICAgb2Jz
b2xldGVzIHRoZSBuZWVkIGZvciBhICUgc2l6ZW9mKENvbGxlY3RvckNlbGwpIGNoZWNrLiBBbHNv
LCB3ZSBjYW4gbWFzayBvZmYgdGhlIGxvdworICAgICAgICBiaXRzIG9mIHRoZSBwb2ludGVyIHRv
IGhhdmUgYSBwb3RlbnRpYWwgYmxvY2sgcG9pbnRlciB0byBsb29rIGZvci4KKyAgICAgICAgKEtK
Uzo6Q29sbGVjdG9yOjpjb2xsZWN0T25NYWluVGhyZWFkT25seSk6IFVzZSBiaXRtYXAuCisgICAg
ICAgIChLSlM6OkNvbGxlY3Rvcjo6bWFya01haW5UaHJlYWRPbmx5T2JqZWN0cyk6IFVzZSBiaXRt
YXAuCisgICAgICAgIChLSlM6OkNvbGxlY3Rvcjo6Y29sbGVjdCk6IFdoZW4gc3dlZXBpbmcsIHVz
ZSBiaXRtYXBzIGRpcmVjdGx5IHRvIGZpbmQgbWFyayBiaXRzLgorICAgICAgICAqIGtqcy9jb2xs
ZWN0b3IuaDoKKyAgICAgICAgKEtKUzo6KTogTW92ZSBuZWVkZWQgY29uc3RhbnRzIGFuZCB0eXBl
IGRlY2xhcmF0aW9ucyBoZXJlLgorICAgICAgICAoS0pTOjpDb2xsZWN0b3JCaXRtYXA6OmdldCk6
IEJpdCB0d2lkZGxpbmcgdG8gZ2V0IGEgYml0bWFwIHZhbHVlLgorICAgICAgICAoS0pTOjpDb2xs
ZWN0b3JCaXRtYXA6OnNldCk6IEJpdCB0d2lkZGxpbmcgdG8gc2V0IGEgYml0bWFwIGJpdCB0byB0
cnVlLgorICAgICAgICAoS0pTOjpDb2xsZWN0b3JCaXRtYXA6OmNsZWFyKTogQml0IHR3aWRkbGlu
ZyB0byBzZXQgYSBiaXRtYXAgYml0IHRvIGZhbHNlLgorICAgICAgICAoS0pTOjpDb2xsZWN0b3JC
aXRtYXA6OmNsZWFyQWxsKTogQ2xlYXIgd2hvbGUgYml0bWFwIGF0IG9uZSBnby4KKyAgICAgICAg
KEtKUzo6Q29sbGVjdG9yOjpjZWxsQmxvY2spOiBOZXcgb3BlcmF0aW9uLCBjb21wdXRlIHRoZSBi
bG9jayBwb2ludGVyIGZvcgorICAgICAgICBhIGNlbGwgYnkgbWFza2luZyBvZmYgbG93IGJpdHMu
CisgICAgICAgIChLSlM6OkNvbGxlY3Rvcjo6Y2VsbE9mZnNldCk6IE5ldyBvcGVyYXRpb24sIGNv
bXB1dGUgdGhlIGNlbGwgb2Zmc2V0IGZvciBhCisgICAgICAgIGNlbGwgYnkgbWFza2luZyBvZmYg
aGlnaCBiaXRzIGFuZCBkaXZpZGluZyAoYWN0dWFsbHkgYSBzaGlmdCkuCisgICAgICAgIChLSlM6
OkNvbGxlY3Rvcjo6aXNDZWxsTWFya2VkKTogQ2hlY2sgbWFyayBiaXQgaW4gYml0bWFwCisgICAg
ICAgIChLSlM6OkNvbGxlY3Rvcjo6bWFya0NlbGwpOiBTZXQgbWFyayBiaXQgaW4gYml0bWFwLgor
ICAgICAgICAqIGtqcy92YWx1ZS5oOgorICAgICAgICAoS0pTOjpKU0NlbGw6OkpTQ2VsbCk6IE5v
IG1vcmUgYml0cy4KKyAgICAgICAgKEtKUzo6SlNDZWxsOjptYXJrZWQpOiBMZXQgY29sbGVjdG9y
IGhhbmRsZSBpdC4KKyAgICAgICAgKEtKUzo6SlNDZWxsOjptYXJrKTogTGV0IGNvbGxlY3RvciBo
YW5kbGUgaXQuCisKIDIwMDctMDQtMjMgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9jb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0
b3IuY3BwCShyZXZpc2lvbiAyMTAyOCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBACiAKICNpbmNsdWRlIDxwdGhyZWFk
Lmg+CiAKKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorCiAjaWYgUExBVEZPUk0oREFSV0lOKQogCiAj
aW5jbHVkZSA8bWFjaC9tYWNoX3BvcnQuaD4KQEAgLTY3LDQzICs2OSwxMiBAQCBuYW1lc3BhY2Ug
S0pTIHsKIAogLy8gdHVuYWJsZSBwYXJhbWV0ZXJzCiAKLXRlbXBsYXRlPHNpemVfdCBieXRlc1Bl
cldvcmQ+IHN0cnVjdCBDZWxsU2l6ZTsKLXRlbXBsYXRlPD4gc3RydWN0IENlbGxTaXplPHNpemVv
Zih1aW50MzJfdCk+IHsgc3RhdGljIGNvbnN0IHNpemVfdCBtX3ZhbHVlID0gNDA7IH07IC8vIDMy
LWJpdAotdGVtcGxhdGU8PiBzdHJ1Y3QgQ2VsbFNpemU8c2l6ZW9mKHVpbnQ2NF90KT4geyBzdGF0
aWMgY29uc3Qgc2l6ZV90IG1fdmFsdWUgPSA2NDsgfTsgLy8gNjQtYml0Ci0KLWNvbnN0IHNpemVf
dCBCTE9DS19TSVpFID0gKDE2ICogNDA5Nik7IC8vIDY0awogY29uc3Qgc2l6ZV90IFNQQVJFX0VN
UFRZX0JMT0NLUyA9IDI7CiBjb25zdCBzaXplX3QgTUlOX0FSUkFZX1NJWkUgPSAxNDsKIGNvbnN0
IHNpemVfdCBHUk9XVEhfRkFDVE9SID0gMjsKIGNvbnN0IHNpemVfdCBMT1dfV0FURVJfRkFDVE9S
ID0gNDsKIGNvbnN0IHNpemVfdCBBTExPQ0FUSU9OU19QRVJfQ09MTEVDVElPTiA9IDEwMDA7CiAK
LS8vIGRlcml2ZWQgY29uc3RhbnRzCi1jb25zdCBzaXplX3QgUFRSX0lOX0JMT0NLX01BU0sgPSAo
QkxPQ0tfU0laRSAtIDEpOwotY29uc3Qgc2l6ZV90IEJMT0NLX01BU0sgPSAoflBUUl9JTl9CTE9D
S19NQVNLKTsKLWNvbnN0IHNpemVfdCBNSU5JTVVNX0NFTExfU0laRSA9IENlbGxTaXplPHNpemVv
Zih2b2lkKik+OjptX3ZhbHVlOwotY29uc3Qgc2l6ZV90IENFTExfQVJSQVlfTEVOR1RIID0gKE1J
TklNVU1fQ0VMTF9TSVpFIC8gc2l6ZW9mKGRvdWJsZSkpICsgKE1JTklNVU1fQ0VMTF9TSVpFICUg
c2l6ZW9mKGRvdWJsZSkgIT0gMCA/IDEgOiAwKTsKLWNvbnN0IHNpemVfdCBDRUxMX1NJWkUgPSBD
RUxMX0FSUkFZX0xFTkdUSCAqIHNpemVvZihkb3VibGUpOwotY29uc3Qgc2l6ZV90IENFTExTX1BF
Ul9CTE9DSyA9ICgoQkxPQ0tfU0laRSAqIDggLSBzaXplb2YodWludDMyX3QpICogOCAtIHNpemVv
Zih2b2lkKikgKiA4KSAvIChDRUxMX1NJWkUgKiA4KSk7Ci0KLQotc3RydWN0IENvbGxlY3RvckNl
bGwgewotICB1bmlvbiB7Ci0gICAgZG91YmxlIG1lbW9yeVtDRUxMX0FSUkFZX0xFTkdUSF07Ci0g
ICAgc3RydWN0IHsKLSAgICAgIHZvaWQgKnplcm9JZkZyZWU7Ci0gICAgICBwdHJkaWZmX3QgbmV4
dDsKLSAgICB9IGZyZWVDZWxsOwotICB9IHU7Ci19OwotCi0KLXN0cnVjdCBDb2xsZWN0b3JCbG9j
ayB7Ci0gIENvbGxlY3RvckNlbGwgY2VsbHNbQ0VMTFNfUEVSX0JMT0NLXTsKLSAgdWludDMyX3Qg
dXNlZENlbGxzOwotICBDb2xsZWN0b3JDZWxsICpmcmVlTGlzdDsKLX07Ci0KIHN0cnVjdCBDb2xs
ZWN0b3JIZWFwIHsKICAgQ29sbGVjdG9yQmxvY2sgKipibG9ja3M7CiAgIHNpemVfdCBudW1CbG9j
a3M7CkBAIC0xNDUsNyArMTE2LDcgQEAgc3RhdGljIENvbGxlY3RvckJsb2NrKiBhbGxvY2F0ZUJs
b2NrKCkKIHsKICNpZiBQTEFURk9STShEQVJXSU4pICAgIAogICAgIHZtX2FkZHJlc3NfdCBhZGRy
ZXNzID0gMDsKLSAgICB2bV9tYXAoY3VycmVudF90YXNrKCksICZhZGRyZXNzLCBCTE9DS19TSVpF
LCBQVFJfSU5fQkxPQ0tfTUFTSywgVk1fRkxBR1NfQU5ZV0hFUkUsIE1FTU9SWV9PQkpFQ1RfTlVM
TCwgMCwgRkFMU0UsIFZNX1BST1RfREVGQVVMVCwgVk1fUFJPVF9ERUZBVUxULCBWTV9JTkhFUklU
X0RFRkFVTFQpOworICAgIHZtX21hcChjdXJyZW50X3Rhc2soKSwgJmFkZHJlc3MsIEJMT0NLX1NJ
WkUsIEJMT0NLX09GRlNFVF9NQVNLLCBWTV9GTEFHU19BTllXSEVSRSwgTUVNT1JZX09CSkVDVF9O
VUxMLCAwLCBGQUxTRSwgVk1fUFJPVF9ERUZBVUxULCBWTV9QUk9UX0RFRkFVTFQsIFZNX0lOSEVS
SVRfREVGQVVMVCk7CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgIC8vIHdpbmRvd3MgdmlydHVh
bCBhZGRyZXNzIGdyYW51bGFyaXR5IGlzIG5hdHVyYWxseSA2NGsKICAgICBMUFZPSUQgYWRkcmVz
cyA9IFZpcnR1YWxBbGxvYyhOVUxMLCBCTE9DS19TSVpFLCBNRU1fQ09NTUlUIHwgTUVNX1JFU0VS
VkUsIFBBR0VfUkVBRFdSSVRFKTsKQEAgLTE2NCw4ICsxMzUsOCBAQCBzdGF0aWMgQ29sbGVjdG9y
QmxvY2sqIGFsbG9jYXRlQmxvY2soKQogICAgIHVpbnRwdHJfdCBhZGRyZXNzID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KG1tYXBSZXN1bHQpOwogCiAgICAgc2l6ZV90IGFkanVzdCA9IDA7
Ci0gICAgaWYgKChhZGRyZXNzICYgUFRSX0lOX0JMT0NLX01BU0spICE9IDApCi0gICAgICAgIGFk
anVzdCA9IEJMT0NLX1NJWkUgLSAoYWRkcmVzcyAmIFBUUl9JTl9CTE9DS19NQVNLKTsKKyAgICBp
ZiAoKGFkZHJlc3MgJiBCTE9DS19PRkZTRVRfTUFTSykgIT0gMCkKKyAgICAgICAgYWRqdXN0ID0g
QkxPQ0tfU0laRSAtIChhZGRyZXNzICYgQkxPQ0tfT0ZGU0VUX01BU0spOwogCiAgICAgaWYgKGFk
anVzdCA+IDApCiAgICAgICAgIG11bm1hcChyZWludGVycHJldF9jYXN0PHZvaWQqPihhZGRyZXNz
KSwgYWRqdXN0KTsKQEAgLTQxMCwyMyArMzgxLDIzIEBAIHZvaWQgQ29sbGVjdG9yOjpyZWdpc3Rl
clRocmVhZCgpCiAKICNkZWZpbmUgSVNfUE9JTlRFUl9BTElHTkVEKHApICgoKGludHB0cl90KShw
KSAmIChzaXplb2YoY2hhciAqKSAtIDEpKSA9PSAwKQogCi0vLyBjZWxscyBhcmUgOC1ieXRlIGFs
aWduZWQKLSNkZWZpbmUgSVNfQ0VMTF9BTElHTkVEKHApICgoKGludHB0cl90KShwKSAmIDcpID09
IDApCisvLyBjZWxsIHNpemUgbmVlZHMgdG8gYmUgYSBwb3dlciBvZiB0d28gZm9yIHRoaXMgdG8g
YmUgdmFsaWQKKyNkZWZpbmUgSVNfQ0VMTF9BTElHTkVEKHApICgoKGludHB0cl90KShwKSAmIENF
TExfTUFTSykgPT0gMCkKIAogdm9pZCBDb2xsZWN0b3I6Om1hcmtTdGFja09iamVjdHNDb25zZXJ2
YXRpdmVseSh2b2lkICpzdGFydCwgdm9pZCAqZW5kKQogewogICBpZiAoc3RhcnQgPiBlbmQpIHsK
LSAgICB2b2lkICp0bXAgPSBzdGFydDsKKyAgICB2b2lkKiB0bXAgPSBzdGFydDsKICAgICBzdGFy
dCA9IGVuZDsKICAgICBlbmQgPSB0bXA7CiAgIH0KIAotICBBU1NFUlQoKChjaGFyICopZW5kIC0g
KGNoYXIgKilzdGFydCkgPCAweDEwMDAwMDApOworICBBU1NFUlQoKChjaGFyKillbmQgLSAoY2hh
ciopc3RhcnQpIDwgMHgxMDAwMDAwKTsKICAgQVNTRVJUKElTX1BPSU5URVJfQUxJR05FRChzdGFy
dCkpOwogICBBU1NFUlQoSVNfUE9JTlRFUl9BTElHTkVEKGVuZCkpOwogICAKLSAgY2hhciAqKnAg
PSAoY2hhciAqKilzdGFydDsKLSAgY2hhciAqKmUgPSAoY2hhciAqKillbmQ7CisgIGNoYXIqKiBw
ID0gKGNoYXIqKilzdGFydDsKKyAgY2hhcioqIGUgPSAoY2hhcioqKWVuZDsKICAgCiAgIHNpemVf
dCB1c2VkQmxvY2tzID0gaGVhcC51c2VkQmxvY2tzOwogICBDb2xsZWN0b3JCbG9jayAqKmJsb2Nr
cyA9IGhlYXAuYmxvY2tzOwpAQCAtNDM0LDEzICs0MDUsMTQgQEAgdm9pZCBDb2xsZWN0b3I6Om1h
cmtTdGFja09iamVjdHNDb25zZXJ2YQogICBjb25zdCBzaXplX3QgbGFzdENlbGxPZmZzZXQgPSBz
aXplb2YoQ29sbGVjdG9yQ2VsbCkgKiAoQ0VMTFNfUEVSX0JMT0NLIC0gMSk7CiAKICAgd2hpbGUg
KHAgIT0gZSkgewotICAgIGNoYXIgKnggPSAqcCsrOworICAgIGNoYXIqIHggPSAqcCsrOwogICAg
IGlmIChJU19DRUxMX0FMSUdORUQoeCkgJiYgeCkgeworICAgICAgdWludHB0cl90IG9mZnNldCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih4KSAmIEJMT0NLX09GRlNFVF9NQVNLOworICAg
ICAgQ29sbGVjdG9yQmxvY2sqIGJsb2NrQWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q29sbGVjdG9y
QmxvY2sqPih4IC0gb2Zmc2V0KTsKICAgICAgIGZvciAoc2l6ZV90IGJsb2NrID0gMDsgYmxvY2sg
PCB1c2VkQmxvY2tzOyBibG9jaysrKSB7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSB4IC0gcmVp
bnRlcnByZXRfY2FzdDxjaGFyICo+KGJsb2Nrc1tibG9ja10pOwotICAgICAgICBpZiAob2Zmc2V0
IDw9IGxhc3RDZWxsT2Zmc2V0ICYmIG9mZnNldCAlIHNpemVvZihDb2xsZWN0b3JDZWxsKSA9PSAw
KSB7Ci0gICAgICAgICAgaWYgKCgoQ29sbGVjdG9yQ2VsbCAqKXgpLT51LmZyZWVDZWxsLnplcm9J
ZkZyZWUgIT0gMCkgewotICAgICAgICAgICAgSlNDZWxsICppbXAgPSByZWludGVycHJldF9jYXN0
PEpTQ2VsbCAqPih4KTsKKyAgICAgICAgaWYgKChibG9ja3NbYmxvY2tdID09IGJsb2NrQWRkcikg
JiAob2Zmc2V0IDw9IGxhc3RDZWxsT2Zmc2V0KSkgeworICAgICAgICAgIGlmICgoKENvbGxlY3Rv
ckNlbGwqKXgpLT51LmZyZWVDZWxsLnplcm9JZkZyZWUgIT0gMCkgeworICAgICAgICAgICAgSlND
ZWxsKiBpbXAgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHgpOwogICAgICAgICAgICAgaWYg
KCFpbXAtPm1hcmtlZCgpKQogICAgICAgICAgICAgICBpbXAtPm1hcmsoKTsKICAgICAgICAgICB9
CkBAIC02ODUsNyArNjU3LDcgQEAgdm9pZCBDb2xsZWN0b3I6OmNvbGxlY3RPbk1haW5UaHJlYWRP
bmx5KAogICAgICAgcmV0dXJuOwogCiAgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUtPmRvd25jYXN0
KCk7Ci0gICAgY2VsbC0+bV9jb2xsZWN0T25NYWluVGhyZWFkT25seSA9IHRydWU7CisgICAgY2Vs
bEJsb2NrKGNlbGwpLT5jb2xsZWN0T25NYWluVGhyZWFkT25seS5zZXQoY2VsbE9mZnNldChjZWxs
KSk7CiAgICAgKyttYWluVGhyZWFkT25seU9iamVjdENvdW50OwogfQogCkBAIC03MjgsMTAgKzcw
MCwxMSBAQCB2b2lkIENvbGxlY3Rvcjo6bWFya01haW5UaHJlYWRPbmx5T2JqZWN0CiAgICAgICAg
ICAgICBpZiAoY2VsbC0+dS5mcmVlQ2VsbC56ZXJvSWZGcmVlID09IDApCiAgICAgICAgICAgICAg
ICAgKyttaW5pbXVtQ2VsbHNUb1Byb2Nlc3M7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBKU0NlbGwqIGltcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oY2VsbCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGltcC0+bV9jb2xsZWN0T25NYWluVGhyZWFkT25seSkgewotICAg
ICAgICAgICAgICAgICAgICBpZighaW1wLT5tYXJrZWQoKSkKKyAgICAgICAgICAgICAgICBpZiAo
Y3VyQmxvY2stPmNvbGxlY3RPbk1haW5UaHJlYWRPbmx5LmdldChpKSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoIWN1ckJsb2NrLT5tYXJrZWQuZ2V0KGkpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBKU0NlbGwqIGltcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oY2VsbCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpbXAtPm1hcmsoKTsKKyAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICBpZiAoKytjb3VudCA9PSBtYWluVGhyZWFkT25seU9iamVj
dENvdW50KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KQEAgLTc5OSwyMCArNzcyLDIyIEBAIGJvb2wgQ29sbGVjdG9yOjpjb2xsZWN0KCkKICAgICBp
ZiAodXNlZENlbGxzID09IENFTExTX1BFUl9CTE9DSykgewogICAgICAgLy8gc3BlY2lhbCBjYXNl
IHdpdGggYSBibG9jayB3aGVyZSBhbGwgY2VsbHMgYXJlIHVzZWQgLS0gdGVzdGluZyBpbmRpY2F0
ZXMgdGhpcyBoYXBwZW5zIG9mdGVuCiAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IENFTExT
X1BFUl9CTE9DSzsgaSsrKSB7Ci0gICAgICAgIENvbGxlY3RvckNlbGwgKmNlbGwgPSBjdXJCbG9j
ay0+Y2VsbHMgKyBpOwotICAgICAgICBKU0NlbGwgKmltcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlND
ZWxsICo+KGNlbGwpOwotICAgICAgICBpZiAoaW1wLT5tX21hcmtlZCkgewotICAgICAgICAgIGlt
cC0+bV9tYXJrZWQgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFjdXJC
bG9jay0+bWFya2VkLmdldChpKSkgeworICAgICAgICAgIENvbGxlY3RvckNlbGwqIGNlbGwgPSBj
dXJCbG9jay0+Y2VsbHMgKyBpOworCiAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciBhbGxv
Y2F0ZWQgYnV0IHVuaW5pdGlhbGl6ZWQgb2JqZWN0CiAgICAgICAgICAgLy8gKFdlIGRvbid0IG5l
ZWQgdGhpcyBjaGVjayBlYXJsaWVyIGJlY2F1c2Ugbm90aGluZyBwcmlvciB0aGlzIHBvaW50IAog
ICAgICAgICAgIC8vIGFzc3VtZXMgdGhlIG9iamVjdCBoYXMgYSB2YWxpZCB2cHRyLikKICAgICAg
ICAgICBpZiAoY2VsbC0+dS5mcmVlQ2VsbC56ZXJvSWZGcmVlID09IDApCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICAgIEFTU0VSVChjdXJyZW50VGhyZWFkSXNNYWluVGhyZWFkIHx8
ICFpbXAtPm1fY29sbGVjdE9uTWFpblRocmVhZE9ubHkpOwotICAgICAgICAgIGlmIChpbXAtPm1f
Y29sbGVjdE9uTWFpblRocmVhZE9ubHkpCisgICAgICAgICAgSlNDZWxsKiBpbXAgPSByZWludGVy
cHJldF9jYXN0PEpTQ2VsbCo+KGNlbGwpOworCisgICAgICAgICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWRJc01haW5UaHJlYWQgfHwgIWN1ckJsb2NrLT5jb2xsZWN0T25NYWluVGhyZWFkT25seS5nZXQo
aSkpOworICAgICAgICAgIGlmIChjdXJCbG9jay0+Y29sbGVjdE9uTWFpblRocmVhZE9ubHkuZ2V0
KGkpKSB7CisgICAgICAgICAgICBjdXJCbG9jay0+Y29sbGVjdE9uTWFpblRocmVhZE9ubHkuY2xl
YXIoaSk7CiAgICAgICAgICAgICAtLW1haW5UaHJlYWRPbmx5T2JqZWN0Q291bnQ7CisgICAgICAg
ICAgfQogICAgICAgICAgIGltcC0+fkpTQ2VsbCgpOwogICAgICAgICAgIC0tdXNlZENlbGxzOwog
ICAgICAgICAgIC0tbnVtTGl2ZU9iamVjdHM7CkBAIC04MzAsMTMgKzgwNSwxMyBAQCBib29sIENv
bGxlY3Rvcjo6Y29sbGVjdCgpCiAgICAgICAgIGlmIChjZWxsLT51LmZyZWVDZWxsLnplcm9JZkZy
ZWUgPT0gMCkgewogICAgICAgICAgICsrbWluaW11bUNlbGxzVG9Qcm9jZXNzOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgIEpTQ2VsbCAqaW1wID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwg
Kj4oY2VsbCk7Ci0gICAgICAgICAgaWYgKGltcC0+bV9tYXJrZWQpIHsKLSAgICAgICAgICAgIGlt
cC0+bV9tYXJrZWQgPSBmYWxzZTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWRJc01haW5UaHJlYWQgfHwgIWltcC0+bV9jb2xsZWN0T25NYWluVGhy
ZWFkT25seSk7Ci0gICAgICAgICAgICBpZiAoaW1wLT5tX2NvbGxlY3RPbk1haW5UaHJlYWRPbmx5
KQorICAgICAgICAgIGlmICghY3VyQmxvY2stPm1hcmtlZC5nZXQoaSkpIHsKKyAgICAgICAgICAg
IEpTQ2VsbCAqaW1wID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwgKj4oY2VsbCk7CisgICAgICAg
ICAgICBBU1NFUlQoY3VycmVudFRocmVhZElzTWFpblRocmVhZCB8fCAhY3VyQmxvY2stPmNvbGxl
Y3RPbk1haW5UaHJlYWRPbmx5LmdldChpKSk7CisgICAgICAgICAgICBpZiAoY3VyQmxvY2stPmNv
bGxlY3RPbk1haW5UaHJlYWRPbmx5LmdldChpKSkgeworICAgICAgICAgICAgICBjdXJCbG9jay0+
Y29sbGVjdE9uTWFpblRocmVhZE9ubHkuY2xlYXIoaSk7CiAgICAgICAgICAgICAgIC0tbWFpblRo
cmVhZE9ubHlPYmplY3RDb3VudDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGltcC0+fkpT
Q2VsbCgpOwogICAgICAgICAgICAgLS11c2VkQ2VsbHM7CiAgICAgICAgICAgICAtLW51bUxpdmVP
YmplY3RzOwpAQCAtODUyLDYgKzgyNyw3IEBAIGJvb2wgQ29sbGVjdG9yOjpjb2xsZWN0KCkKICAg
ICAKICAgICBjdXJCbG9jay0+dXNlZENlbGxzID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVzZWRD
ZWxscyk7CiAgICAgY3VyQmxvY2stPmZyZWVMaXN0ID0gZnJlZUxpc3Q7CisgICAgY3VyQmxvY2st
Pm1hcmtlZC5jbGVhckFsbCgpOwogCiAgICAgaWYgKHVzZWRDZWxscyA9PSAwKSB7CiAgICAgICBl
bXB0eUJsb2NrcysrOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuaAkocmV2aXNpb24gMjEwMjgp
CisrKyBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDEzICsyNCwxNiBAQAogI2lmbmRlZiBLSlNDT0xMRUNUT1JfSF8KICNkZWZpbmUgS0pTQ09MTEVD
VE9SX0hfCiAKLSNpbmNsdWRlICJ2YWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNl
dC5oPgogCiAjZGVmaW5lIEtKU19NRU1fTElNSVQgNTAwMDAwCiAKIG5hbWVzcGFjZSBLSlMgewog
CisgIGNsYXNzIEpTQ2VsbDsKKyAgY2xhc3MgSlNWYWx1ZTsKKyAgY2xhc3MgQ29sbGVjdG9yQmxv
Y2s7CisKICAgY2xhc3MgQ29sbGVjdG9yIHsKICAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkKiBh
bGxvY2F0ZShzaXplX3Qgcyk7CkBAIC02MCw3ICs2MywxNCBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICAKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckFzTWFpblRocmVhZCgpOwogCisgICAgc3RhdGlj
IGJvb2wgaXNDZWxsTWFya2VkKGNvbnN0IEpTQ2VsbCopOworICAgIHN0YXRpYyB2b2lkIG1hcmtD
ZWxsKEpTQ2VsbCopOworCiAgIHByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3RvckJs
b2NrKiBjZWxsQmxvY2soY29uc3QgSlNDZWxsKik7CisgICAgc3RhdGljIENvbGxlY3RvckJsb2Nr
KiBjZWxsQmxvY2soSlNDZWxsKik7CisgICAgc3RhdGljIHNpemVfdCBjZWxsT2Zmc2V0KGNvbnN0
IEpTQ2VsbCogY2VsbCk7CisKICAgICBDb2xsZWN0b3IoKTsKIAogICAgIHN0YXRpYyB2b2lkIG1h
cmtQcm90ZWN0ZWRPYmplY3RzKCk7CkBAIC03NCw2ICs4NCw3NiBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICBzdGF0aWMgYm9vbCBtZW1vcnlGdWxsOwogICB9OwogCisgIC8vIHR1bmFibGUgcGFyYW1l
dGVycworICB0ZW1wbGF0ZTxzaXplX3QgYnl0ZXNQZXJXb3JkPiBzdHJ1Y3QgQ2VsbFNpemU7CisK
KyAgLy8gY2VsbCBzaXplIG5lZWRzIHRvIGJlIGEgcG93ZXIgb2YgdHdvIGZvciBjZXJ0YWluIG9w
dGltaXphdGlvbnMgaW4gY29sbGVjdG9yLmNwcAorICB0ZW1wbGF0ZTw+IHN0cnVjdCBDZWxsU2l6
ZTxzaXplb2YodWludDMyX3QpPiB7IHN0YXRpYyBjb25zdCBzaXplX3QgbV92YWx1ZSA9IDMyOyB9
OyAvLyAzMi1iaXQKKyAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2VsbFNpemU8c2l6ZW9mKHVpbnQ2NF90
KT4geyBzdGF0aWMgY29uc3Qgc2l6ZV90IG1fdmFsdWUgPSA2NDsgfTsgLy8gNjQtYml0CisgIGNv
bnN0IHNpemVfdCBCTE9DS19TSVpFID0gMTYgKiA0MDk2OyAvLyA2NGsKKyAgCisgIC8vIGRlcml2
ZWQgY29uc3RhbnRzCisgIGNvbnN0IHNpemVfdCBCTE9DS19PRkZTRVRfTUFTSyA9IEJMT0NLX1NJ
WkUgLSAxOworICBjb25zdCBzaXplX3QgQkxPQ0tfTUFTSyA9IH5CTE9DS19PRkZTRVRfTUFTSzsK
KyAgY29uc3Qgc2l6ZV90IE1JTklNVU1fQ0VMTF9TSVpFID0gQ2VsbFNpemU8c2l6ZW9mKHZvaWQq
KT46Om1fdmFsdWU7CisgIGNvbnN0IHNpemVfdCBDRUxMX0FSUkFZX0xFTkdUSCA9IChNSU5JTVVN
X0NFTExfU0laRSAvIHNpemVvZihkb3VibGUpKSArIChNSU5JTVVNX0NFTExfU0laRSAlIHNpemVv
Zihkb3VibGUpICE9IDAgPyBzaXplb2YoZG91YmxlKSA6IDApOworICBjb25zdCBzaXplX3QgQ0VM
TF9TSVpFID0gQ0VMTF9BUlJBWV9MRU5HVEggKiBzaXplb2YoZG91YmxlKTsKKyAgY29uc3Qgc2l6
ZV90IENFTExfTUFTSyA9IENFTExfU0laRSAtIDE7CisgIGNvbnN0IHNpemVfdCBDRUxMU19QRVJf
QkxPQ0sgPSAoQkxPQ0tfU0laRSAqIDggLSBzaXplb2YodWludDMyX3QpICogOCAtIHNpemVvZih2
b2lkICopICogOCAtIDIgKiAoNyArIDMgKiA4KSkgLyAoQ0VMTF9TSVpFICogOCArIDIpOworICBj
b25zdCBzaXplX3QgQklUTUFQX1NJWkUgPSAoQ0VMTFNfUEVSX0JMT0NLICsgNykgLyA4OworICBj
b25zdCBzaXplX3QgQklUTUFQX1dPUkRTID0gKEJJVE1BUF9TSVpFICsgMykgLyBzaXplb2YodWlu
dDMyX3QpOworICAKKyAgc3RydWN0IENvbGxlY3RvckJpdG1hcCB7CisgICAgdWludDMyX3QgYml0
c1tCSVRNQVBfV09SRFNdOworICAgIGJvb2wgZ2V0KHNpemVfdCBuKSBjb25zdCB7IHJldHVybiAh
IShiaXRzW24gPj4gNV0gJiAoMSA8PCAobiAmIDB4MUYpKSk7IH0gCisgICAgdm9pZCBzZXQoc2l6
ZV90IG4pIHsgYml0c1tuID4+IDVdIHw9ICgxIDw8IChuICYgMHgxRikpOyB9IAorICAgIHZvaWQg
Y2xlYXIoc2l6ZV90IG4pIHsgYml0c1tuID4+IDVdICY9IH4oMSA8PCAobiAmIDB4MUYpKTsgfSAK
KyAgICB2b2lkIGNsZWFyQWxsKCkgeyBtZW1zZXQoYml0cywgMCwgc2l6ZW9mKGJpdHMpKTsgfQor
ICB9OworICAKKyAgc3RydWN0IENvbGxlY3RvckNlbGwgeworICAgIHVuaW9uIHsKKyAgICAgIGRv
dWJsZSBtZW1vcnlbQ0VMTF9BUlJBWV9MRU5HVEhdOworICAgICAgc3RydWN0IHsKKyAgICAgICAg
dm9pZCogemVyb0lmRnJlZTsKKyAgICAgICAgcHRyZGlmZl90IG5leHQ7CisgICAgICB9IGZyZWVD
ZWxsOworICAgIH0gdTsKKyAgfTsKKworICBzdHJ1Y3QgQ29sbGVjdG9yQmxvY2sgeworICAgIENv
bGxlY3RvckNlbGwgY2VsbHNbQ0VMTFNfUEVSX0JMT0NLXTsKKyAgICB1aW50MzJfdCB1c2VkQ2Vs
bHM7CisgICAgQ29sbGVjdG9yQ2VsbCogZnJlZUxpc3Q7CisgICAgQ29sbGVjdG9yQml0bWFwIG1h
cmtlZDsKKyAgICBDb2xsZWN0b3JCaXRtYXAgY29sbGVjdE9uTWFpblRocmVhZE9ubHk7CisgIH07
CisKKyAgaW5saW5lIGNvbnN0IENvbGxlY3RvckJsb2NrKiBDb2xsZWN0b3I6OmNlbGxCbG9jayhj
b25zdCBKU0NlbGwqIGNlbGwpCisgIHsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBDb2xsZWN0b3JCbG9jayo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjZWxsKSAmIEJM
T0NLX01BU0spOworICB9CisKKyAgaW5saW5lIENvbGxlY3RvckJsb2NrKiBDb2xsZWN0b3I6OmNl
bGxCbG9jayhKU0NlbGwqIGNlbGwpCisgIHsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxDb2xsZWN0
b3JCbG9jayo+KGNlbGxCbG9jayhjb25zdF9jYXN0PGNvbnN0IEpTQ2VsbCo+KGNlbGwpKSk7Cisg
IH0KKworICBpbmxpbmUgc2l6ZV90IENvbGxlY3Rvcjo6Y2VsbE9mZnNldChjb25zdCBKU0NlbGwq
IGNlbGwpCisgIHsKKyAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjZWxs
KSAmIEJMT0NLX09GRlNFVF9NQVNLKSAvIENFTExfU0laRTsKKyAgfQorCisgIGlubGluZSBib29s
IENvbGxlY3Rvcjo6aXNDZWxsTWFya2VkKGNvbnN0IEpTQ2VsbCogY2VsbCkKKyAgeworICAgIHJl
dHVybiBjZWxsQmxvY2soY2VsbCktPm1hcmtlZC5nZXQoY2VsbE9mZnNldChjZWxsKSk7CisgIH0K
KworICBpbmxpbmUgdm9pZCBDb2xsZWN0b3I6Om1hcmtDZWxsKEpTQ2VsbCogY2VsbCkKKyAgewor
ICAgIGNlbGxCbG9jayhjZWxsKS0+bWFya2VkLnNldChjZWxsT2Zmc2V0KGNlbGwpKTsKKyAgfQor
CiB9IC8vIG5hbWVzcGFjZSBLSlMKIAogI2VuZGlmIC8qIEtKU0NPTExFQ1RPUl9IXyAqLwpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL3ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL3ZhbHVlLmgJKHJldmlzaW9uIDIxMDI4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL3Zh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZpbmUgS0pTX1ZBTFVF
X0gKIAogI2luY2x1ZGUgIkpTSW1tZWRpYXRlLmgiCisjaW5jbHVkZSAiY29sbGVjdG9yLmgiCiAj
aW5jbHVkZSAidXN0cmluZy5oIgogI2luY2x1ZGUgPHN0ZGRlZi5oPiAvLyBmb3Igc2l6ZV90CiAK
QEAgLTE1NCwxMCArMTU1LDYgQEAgcHVibGljOgogICAgIHZvaWQgKm9wZXJhdG9yIG5ldyhzaXpl
X3QpOwogICAgIHZpcnR1YWwgdm9pZCBtYXJrKCk7CiAgICAgYm9vbCBtYXJrZWQoKSBjb25zdDsK
LQotcHJpdmF0ZToKLSAgICBib29sIG1fY29sbGVjdE9uTWFpblRocmVhZE9ubHkgOiAxOwotICAg
IGJvb2wgbV9tYXJrZWQgOiAxOwogfTsKIAogSlNWYWx1ZSAqanNOdW1iZXJDZWxsKGRvdWJsZSk7
CkBAIC0yMDQsOCArMjAxLDYgQEAgaW5saW5lIEpTVmFsdWU6On5KU1ZhbHVlKCkKIH0KIAogaW5s
aW5lIEpTQ2VsbDo6SlNDZWxsKCkKLSAgICA6IG1fY29sbGVjdE9uTWFpblRocmVhZE9ubHkoZmFs
c2UpCi0gICAgLCBtX21hcmtlZChmYWxzZSkKIHsKIH0KIApAQCAtMjMwLDEyICsyMjUsMTIgQEAg
aW5saW5lIGJvb2wgSlNDZWxsOjppc09iamVjdCgpIGNvbnN0CiAKIGlubGluZSBib29sIEpTQ2Vs
bDo6bWFya2VkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tYXJrZWQ7CisgICAgcmV0dXJuIENv
bGxlY3Rvcjo6aXNDZWxsTWFya2VkKHRoaXMpOwogfQogCiBpbmxpbmUgdm9pZCBKU0NlbGw6Om1h
cmsoKQogewotICAgIG1fbWFya2VkID0gdHJ1ZTsKKyAgICByZXR1cm4gQ29sbGVjdG9yOjptYXJr
Q2VsbCh0aGlzKTsKIH0KIAogaW5saW5lIEpTQ2VsbCAqSlNWYWx1ZTo6ZG93bmNhc3QoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14148</attachid>
            <date>2007-04-23 13:17:21 -0700</date>
            <delta_ts>2007-04-23 15:05:31 -0700</delta_ts>
            <desc>actually fixed the mman thing</desc>
            <filename>09-js-gc-mark-bitmap+32byte-cell-v3.patch.txt</filename>
            <type>text/plain</type>
            <size>15093</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDMyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMDctMDQtMjMgIE1hY2llaiBT
dGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBh
bmQgR2VvZmYuCisgICAgICAgIAorICAgICAgICAtIG1vdmUgbWFyayBhbmQgY29sbGVjdE9uTWFp
blRocmVhZE9ubHkgYml0cyBpbnRvIHNlcGFyYXRlIGJpdG1hcHMKKyAgICAgICAgCisgICAgICAg
IFRoaXMgc2F2ZXMgNCBieXRlcyBwZXIgY2VsbCwgYWxsb3dpbmcgc2hyaW5rIG9mIGNlbGwgc2l6
ZSB0byAzMiwKKyAgICAgICAgd2hpY2ggbGVhZHMgdG8gYSAuOCUgc3BlZWQgaW1wcm92ZW1lbnQg
b24gaUJlbmNoLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBvbmx5IGZlYXNpYmxlIGJlY2F1
c2Ugb2YgYWxsIHRoZSBwcmV2aW91cyBjaGFuZ2VzIG9uIHRoZSBicmFuY2guCisKKyAgICAgICAg
KiBranMvY29sbGVjdG9yLmNwcDoKKyAgICAgICAgKEtKUzo6YWxsb2NhdGVCbG9jayk6IEFkanVz
dCBmb3Igc29tZSByZW5hbWVzIG9mIGNvbnN0YW50cy4gCisgICAgICAgIChLSlM6OkNvbGxlY3Rv
cjo6bWFya1N0YWNrT2JqZWN0c0NvbnNlcnZhdGl2ZWx5KTogTm93IHRoYXQgY2VsbHMgYXJlIDMy
IGJ5dGVzICg2NCAKKyAgICAgICAgYnl0ZXMgb24gNjQtYml0KSB0aGUgY2VsbCBhbGlnbm1lbnQg
Y2hlY2sgY2FuIGJlIG1hZGUgbXVjaCBtb3JlIHN0cmljdCwgYW5kIGFsc28KKyAgICAgICAgb2Jz
b2xldGVzIHRoZSBuZWVkIGZvciBhICUgc2l6ZW9mKENvbGxlY3RvckNlbGwpIGNoZWNrLiBBbHNv
LCB3ZSBjYW4gbWFzayBvZmYgdGhlIGxvdworICAgICAgICBiaXRzIG9mIHRoZSBwb2ludGVyIHRv
IGhhdmUgYSBwb3RlbnRpYWwgYmxvY2sgcG9pbnRlciB0byBsb29rIGZvci4KKyAgICAgICAgKEtK
Uzo6Q29sbGVjdG9yOjpjb2xsZWN0T25NYWluVGhyZWFkT25seSk6IFVzZSBiaXRtYXAuCisgICAg
ICAgIChLSlM6OkNvbGxlY3Rvcjo6bWFya01haW5UaHJlYWRPbmx5T2JqZWN0cyk6IFVzZSBiaXRt
YXAuCisgICAgICAgIChLSlM6OkNvbGxlY3Rvcjo6Y29sbGVjdCk6IFdoZW4gc3dlZXBpbmcsIHVz
ZSBiaXRtYXBzIGRpcmVjdGx5IHRvIGZpbmQgbWFyayBiaXRzLgorICAgICAgICAqIGtqcy9jb2xs
ZWN0b3IuaDoKKyAgICAgICAgKEtKUzo6KTogTW92ZSBuZWVkZWQgY29uc3RhbnRzIGFuZCB0eXBl
IGRlY2xhcmF0aW9ucyBoZXJlLgorICAgICAgICAoS0pTOjpDb2xsZWN0b3JCaXRtYXA6OmdldCk6
IEJpdCB0d2lkZGxpbmcgdG8gZ2V0IGEgYml0bWFwIHZhbHVlLgorICAgICAgICAoS0pTOjpDb2xs
ZWN0b3JCaXRtYXA6OnNldCk6IEJpdCB0d2lkZGxpbmcgdG8gc2V0IGEgYml0bWFwIGJpdCB0byB0
cnVlLgorICAgICAgICAoS0pTOjpDb2xsZWN0b3JCaXRtYXA6OmNsZWFyKTogQml0IHR3aWRkbGlu
ZyB0byBzZXQgYSBiaXRtYXAgYml0IHRvIGZhbHNlLgorICAgICAgICAoS0pTOjpDb2xsZWN0b3JC
aXRtYXA6OmNsZWFyQWxsKTogQ2xlYXIgd2hvbGUgYml0bWFwIGF0IG9uZSBnby4KKyAgICAgICAg
KEtKUzo6Q29sbGVjdG9yOjpjZWxsQmxvY2spOiBOZXcgb3BlcmF0aW9uLCBjb21wdXRlIHRoZSBi
bG9jayBwb2ludGVyIGZvcgorICAgICAgICBhIGNlbGwgYnkgbWFza2luZyBvZmYgbG93IGJpdHMu
CisgICAgICAgIChLSlM6OkNvbGxlY3Rvcjo6Y2VsbE9mZnNldCk6IE5ldyBvcGVyYXRpb24sIGNv
bXB1dGUgdGhlIGNlbGwgb2Zmc2V0IGZvciBhCisgICAgICAgIGNlbGwgYnkgbWFza2luZyBvZmYg
aGlnaCBiaXRzIGFuZCBkaXZpZGluZyAoYWN0dWFsbHkgYSBzaGlmdCkuCisgICAgICAgIChLSlM6
OkNvbGxlY3Rvcjo6aXNDZWxsTWFya2VkKTogQ2hlY2sgbWFyayBiaXQgaW4gYml0bWFwCisgICAg
ICAgIChLSlM6OkNvbGxlY3Rvcjo6bWFya0NlbGwpOiBTZXQgbWFyayBiaXQgaW4gYml0bWFwLgor
ICAgICAgICAqIGtqcy92YWx1ZS5oOgorICAgICAgICAoS0pTOjpKU0NlbGw6OkpTQ2VsbCk6IE5v
IG1vcmUgYml0cy4KKyAgICAgICAgKEtKUzo6SlNDZWxsOjptYXJrZWQpOiBMZXQgY29sbGVjdG9y
IGhhbmRsZSBpdC4KKyAgICAgICAgKEtKUzo6SlNDZWxsOjptYXJrKTogTGV0IGNvbGxlY3RvciBo
YW5kbGUgaXQuCisKIDIwMDctMDQtMjMgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9jb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0
b3IuY3BwCShyZXZpc2lvbiAyMTAyOCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw0MyArNjcsMTIgQEAgbmFtZXNwYWNlIEtKUyB7CiAK
IC8vIHR1bmFibGUgcGFyYW1ldGVycwogCi10ZW1wbGF0ZTxzaXplX3QgYnl0ZXNQZXJXb3JkPiBz
dHJ1Y3QgQ2VsbFNpemU7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDZWxsU2l6ZTxzaXplb2YodWludDMy
X3QpPiB7IHN0YXRpYyBjb25zdCBzaXplX3QgbV92YWx1ZSA9IDQwOyB9OyAvLyAzMi1iaXQKLXRl
bXBsYXRlPD4gc3RydWN0IENlbGxTaXplPHNpemVvZih1aW50NjRfdCk+IHsgc3RhdGljIGNvbnN0
IHNpemVfdCBtX3ZhbHVlID0gNjQ7IH07IC8vIDY0LWJpdAotCi1jb25zdCBzaXplX3QgQkxPQ0tf
U0laRSA9ICgxNiAqIDQwOTYpOyAvLyA2NGsKIGNvbnN0IHNpemVfdCBTUEFSRV9FTVBUWV9CTE9D
S1MgPSAyOwogY29uc3Qgc2l6ZV90IE1JTl9BUlJBWV9TSVpFID0gMTQ7CiBjb25zdCBzaXplX3Qg
R1JPV1RIX0ZBQ1RPUiA9IDI7CiBjb25zdCBzaXplX3QgTE9XX1dBVEVSX0ZBQ1RPUiA9IDQ7CiBj
b25zdCBzaXplX3QgQUxMT0NBVElPTlNfUEVSX0NPTExFQ1RJT04gPSAxMDAwOwogCi0vLyBkZXJp
dmVkIGNvbnN0YW50cwotY29uc3Qgc2l6ZV90IFBUUl9JTl9CTE9DS19NQVNLID0gKEJMT0NLX1NJ
WkUgLSAxKTsKLWNvbnN0IHNpemVfdCBCTE9DS19NQVNLID0gKH5QVFJfSU5fQkxPQ0tfTUFTSyk7
Ci1jb25zdCBzaXplX3QgTUlOSU1VTV9DRUxMX1NJWkUgPSBDZWxsU2l6ZTxzaXplb2Yodm9pZCop
Pjo6bV92YWx1ZTsKLWNvbnN0IHNpemVfdCBDRUxMX0FSUkFZX0xFTkdUSCA9IChNSU5JTVVNX0NF
TExfU0laRSAvIHNpemVvZihkb3VibGUpKSArIChNSU5JTVVNX0NFTExfU0laRSAlIHNpemVvZihk
b3VibGUpICE9IDAgPyAxIDogMCk7Ci1jb25zdCBzaXplX3QgQ0VMTF9TSVpFID0gQ0VMTF9BUlJB
WV9MRU5HVEggKiBzaXplb2YoZG91YmxlKTsKLWNvbnN0IHNpemVfdCBDRUxMU19QRVJfQkxPQ0sg
PSAoKEJMT0NLX1NJWkUgKiA4IC0gc2l6ZW9mKHVpbnQzMl90KSAqIDggLSBzaXplb2Yodm9pZCop
ICogOCkgLyAoQ0VMTF9TSVpFICogOCkpOwotCi0KLXN0cnVjdCBDb2xsZWN0b3JDZWxsIHsKLSAg
dW5pb24gewotICAgIGRvdWJsZSBtZW1vcnlbQ0VMTF9BUlJBWV9MRU5HVEhdOwotICAgIHN0cnVj
dCB7Ci0gICAgICB2b2lkICp6ZXJvSWZGcmVlOwotICAgICAgcHRyZGlmZl90IG5leHQ7Ci0gICAg
fSBmcmVlQ2VsbDsKLSAgfSB1OwotfTsKLQotCi1zdHJ1Y3QgQ29sbGVjdG9yQmxvY2sgewotICBD
b2xsZWN0b3JDZWxsIGNlbGxzW0NFTExTX1BFUl9CTE9DS107Ci0gIHVpbnQzMl90IHVzZWRDZWxs
czsKLSAgQ29sbGVjdG9yQ2VsbCAqZnJlZUxpc3Q7Ci19OwotCiBzdHJ1Y3QgQ29sbGVjdG9ySGVh
cCB7CiAgIENvbGxlY3RvckJsb2NrICoqYmxvY2tzOwogICBzaXplX3QgbnVtQmxvY2tzOwpAQCAt
MTQ1LDcgKzExNCw3IEBAIHN0YXRpYyBDb2xsZWN0b3JCbG9jayogYWxsb2NhdGVCbG9jaygpCiB7
CiAjaWYgUExBVEZPUk0oREFSV0lOKSAgICAKICAgICB2bV9hZGRyZXNzX3QgYWRkcmVzcyA9IDA7
Ci0gICAgdm1fbWFwKGN1cnJlbnRfdGFzaygpLCAmYWRkcmVzcywgQkxPQ0tfU0laRSwgUFRSX0lO
X0JMT0NLX01BU0ssIFZNX0ZMQUdTX0FOWVdIRVJFLCBNRU1PUllfT0JKRUNUX05VTEwsIDAsIEZB
TFNFLCBWTV9QUk9UX0RFRkFVTFQsIFZNX1BST1RfREVGQVVMVCwgVk1fSU5IRVJJVF9ERUZBVUxU
KTsKKyAgICB2bV9tYXAoY3VycmVudF90YXNrKCksICZhZGRyZXNzLCBCTE9DS19TSVpFLCBCTE9D
S19PRkZTRVRfTUFTSywgVk1fRkxBR1NfQU5ZV0hFUkUsIE1FTU9SWV9PQkpFQ1RfTlVMTCwgMCwg
RkFMU0UsIFZNX1BST1RfREVGQVVMVCwgVk1fUFJPVF9ERUZBVUxULCBWTV9JTkhFUklUX0RFRkFV
TFQpOwogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgICAvLyB3aW5kb3dzIHZpcnR1YWwgYWRkcmVz
cyBncmFudWxhcml0eSBpcyBuYXR1cmFsbHkgNjRrCiAgICAgTFBWT0lEIGFkZHJlc3MgPSBWaXJ0
dWFsQWxsb2MoTlVMTCwgQkxPQ0tfU0laRSwgTUVNX0NPTU1JVCB8IE1FTV9SRVNFUlZFLCBQQUdF
X1JFQURXUklURSk7CkBAIC0xNjQsOCArMTMzLDggQEAgc3RhdGljIENvbGxlY3RvckJsb2NrKiBh
bGxvY2F0ZUJsb2NrKCkKICAgICB1aW50cHRyX3QgYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihtbWFwUmVzdWx0KTsKIAogICAgIHNpemVfdCBhZGp1c3QgPSAwOwotICAgIGlm
ICgoYWRkcmVzcyAmIFBUUl9JTl9CTE9DS19NQVNLKSAhPSAwKQotICAgICAgICBhZGp1c3QgPSBC
TE9DS19TSVpFIC0gKGFkZHJlc3MgJiBQVFJfSU5fQkxPQ0tfTUFTSyk7CisgICAgaWYgKChhZGRy
ZXNzICYgQkxPQ0tfT0ZGU0VUX01BU0spICE9IDApCisgICAgICAgIGFkanVzdCA9IEJMT0NLX1NJ
WkUgLSAoYWRkcmVzcyAmIEJMT0NLX09GRlNFVF9NQVNLKTsKIAogICAgIGlmIChhZGp1c3QgPiAw
KQogICAgICAgICBtdW5tYXAocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYWRkcmVzcyksIGFkanVz
dCk7CkBAIC00MTAsMjMgKzM3OSwyMyBAQCB2b2lkIENvbGxlY3Rvcjo6cmVnaXN0ZXJUaHJlYWQo
KQogCiAjZGVmaW5lIElTX1BPSU5URVJfQUxJR05FRChwKSAoKChpbnRwdHJfdCkocCkgJiAoc2l6
ZW9mKGNoYXIgKikgLSAxKSkgPT0gMCkKIAotLy8gY2VsbHMgYXJlIDgtYnl0ZSBhbGlnbmVkCi0j
ZGVmaW5lIElTX0NFTExfQUxJR05FRChwKSAoKChpbnRwdHJfdCkocCkgJiA3KSA9PSAwKQorLy8g
Y2VsbCBzaXplIG5lZWRzIHRvIGJlIGEgcG93ZXIgb2YgdHdvIGZvciB0aGlzIHRvIGJlIHZhbGlk
CisjZGVmaW5lIElTX0NFTExfQUxJR05FRChwKSAoKChpbnRwdHJfdCkocCkgJiBDRUxMX01BU0sp
ID09IDApCiAKIHZvaWQgQ29sbGVjdG9yOjptYXJrU3RhY2tPYmplY3RzQ29uc2VydmF0aXZlbHko
dm9pZCAqc3RhcnQsIHZvaWQgKmVuZCkKIHsKICAgaWYgKHN0YXJ0ID4gZW5kKSB7Ci0gICAgdm9p
ZCAqdG1wID0gc3RhcnQ7CisgICAgdm9pZCogdG1wID0gc3RhcnQ7CiAgICAgc3RhcnQgPSBlbmQ7
CiAgICAgZW5kID0gdG1wOwogICB9CiAKLSAgQVNTRVJUKCgoY2hhciAqKWVuZCAtIChjaGFyICop
c3RhcnQpIDwgMHgxMDAwMDAwKTsKKyAgQVNTRVJUKCgoY2hhciopZW5kIC0gKGNoYXIqKXN0YXJ0
KSA8IDB4MTAwMDAwMCk7CiAgIEFTU0VSVChJU19QT0lOVEVSX0FMSUdORUQoc3RhcnQpKTsKICAg
QVNTRVJUKElTX1BPSU5URVJfQUxJR05FRChlbmQpKTsKICAgCi0gIGNoYXIgKipwID0gKGNoYXIg
Kiopc3RhcnQ7Ci0gIGNoYXIgKiplID0gKGNoYXIgKiopZW5kOworICBjaGFyKiogcCA9IChjaGFy
Kiopc3RhcnQ7CisgIGNoYXIqKiBlID0gKGNoYXIqKillbmQ7CiAgIAogICBzaXplX3QgdXNlZEJs
b2NrcyA9IGhlYXAudXNlZEJsb2NrczsKICAgQ29sbGVjdG9yQmxvY2sgKipibG9ja3MgPSBoZWFw
LmJsb2NrczsKQEAgLTQzNCwxMyArNDAzLDE0IEBAIHZvaWQgQ29sbGVjdG9yOjptYXJrU3RhY2tP
YmplY3RzQ29uc2VydmEKICAgY29uc3Qgc2l6ZV90IGxhc3RDZWxsT2Zmc2V0ID0gc2l6ZW9mKENv
bGxlY3RvckNlbGwpICogKENFTExTX1BFUl9CTE9DSyAtIDEpOwogCiAgIHdoaWxlIChwICE9IGUp
IHsKLSAgICBjaGFyICp4ID0gKnArKzsKKyAgICBjaGFyKiB4ID0gKnArKzsKICAgICBpZiAoSVNf
Q0VMTF9BTElHTkVEKHgpICYmIHgpIHsKKyAgICAgIHVpbnRwdHJfdCBvZmZzZXQgPSByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oeCkgJiBCTE9DS19PRkZTRVRfTUFTSzsKKyAgICAgIENvbGxl
Y3RvckJsb2NrKiBibG9ja0FkZHIgPSByZWludGVycHJldF9jYXN0PENvbGxlY3RvckJsb2NrKj4o
eCAtIG9mZnNldCk7CiAgICAgICBmb3IgKHNpemVfdCBibG9jayA9IDA7IGJsb2NrIDwgdXNlZEJs
b2NrczsgYmxvY2srKykgewotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0geCAtIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhciAqPihibG9ja3NbYmxvY2tdKTsKLSAgICAgICAgaWYgKG9mZnNldCA8PSBsYXN0
Q2VsbE9mZnNldCAmJiBvZmZzZXQgJSBzaXplb2YoQ29sbGVjdG9yQ2VsbCkgPT0gMCkgewotICAg
ICAgICAgIGlmICgoKENvbGxlY3RvckNlbGwgKil4KS0+dS5mcmVlQ2VsbC56ZXJvSWZGcmVlICE9
IDApIHsKLSAgICAgICAgICAgIEpTQ2VsbCAqaW1wID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwg
Kj4oeCk7CisgICAgICAgIGlmICgoYmxvY2tzW2Jsb2NrXSA9PSBibG9ja0FkZHIpICYgKG9mZnNl
dCA8PSBsYXN0Q2VsbE9mZnNldCkpIHsKKyAgICAgICAgICBpZiAoKChDb2xsZWN0b3JDZWxsKil4
KS0+dS5mcmVlQ2VsbC56ZXJvSWZGcmVlICE9IDApIHsKKyAgICAgICAgICAgIEpTQ2VsbCogaW1w
ID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih4KTsKICAgICAgICAgICAgIGlmICghaW1wLT5t
YXJrZWQoKSkKICAgICAgICAgICAgICAgaW1wLT5tYXJrKCk7CiAgICAgICAgICAgfQpAQCAtNjg1
LDcgKzY1NSw3IEBAIHZvaWQgQ29sbGVjdG9yOjpjb2xsZWN0T25NYWluVGhyZWFkT25seSgKICAg
ICAgIHJldHVybjsKIAogICAgIEpTQ2VsbCogY2VsbCA9IHZhbHVlLT5kb3duY2FzdCgpOwotICAg
IGNlbGwtPm1fY29sbGVjdE9uTWFpblRocmVhZE9ubHkgPSB0cnVlOworICAgIGNlbGxCbG9jayhj
ZWxsKS0+Y29sbGVjdE9uTWFpblRocmVhZE9ubHkuc2V0KGNlbGxPZmZzZXQoY2VsbCkpOwogICAg
ICsrbWFpblRocmVhZE9ubHlPYmplY3RDb3VudDsKIH0KIApAQCAtNzI4LDEwICs2OTgsMTEgQEAg
dm9pZCBDb2xsZWN0b3I6Om1hcmtNYWluVGhyZWFkT25seU9iamVjdAogICAgICAgICAgICAgaWYg
KGNlbGwtPnUuZnJlZUNlbGwuemVyb0lmRnJlZSA9PSAwKQogICAgICAgICAgICAgICAgICsrbWlu
aW11bUNlbGxzVG9Qcm9jZXNzOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
SlNDZWxsKiBpbXAgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGNlbGwpOwotICAgICAgICAg
ICAgICAgIGlmIChpbXAtPm1fY29sbGVjdE9uTWFpblRocmVhZE9ubHkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYoIWltcC0+bWFya2VkKCkpCisgICAgICAgICAgICAgICAgaWYgKGN1ckJsb2Nr
LT5jb2xsZWN0T25NYWluVGhyZWFkT25seS5nZXQoaSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFjdXJCbG9jay0+bWFya2VkLmdldChpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
SlNDZWxsKiBpbXAgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGNlbGwpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgaW1wLT5tYXJrKCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgaWYgKCsrY291bnQgPT0gbWFpblRocmVhZE9ubHlPYmplY3RDb3VudCkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC03
OTksMjAgKzc3MCwyMiBAQCBib29sIENvbGxlY3Rvcjo6Y29sbGVjdCgpCiAgICAgaWYgKHVzZWRD
ZWxscyA9PSBDRUxMU19QRVJfQkxPQ0spIHsKICAgICAgIC8vIHNwZWNpYWwgY2FzZSB3aXRoIGEg
YmxvY2sgd2hlcmUgYWxsIGNlbGxzIGFyZSB1c2VkIC0tIHRlc3RpbmcgaW5kaWNhdGVzIHRoaXMg
aGFwcGVucyBvZnRlbgogICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBDRUxMU19QRVJfQkxP
Q0s7IGkrKykgewotICAgICAgICBDb2xsZWN0b3JDZWxsICpjZWxsID0gY3VyQmxvY2stPmNlbGxz
ICsgaTsKLSAgICAgICAgSlNDZWxsICppbXAgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCAqPihj
ZWxsKTsKLSAgICAgICAgaWYgKGltcC0+bV9tYXJrZWQpIHsKLSAgICAgICAgICBpbXAtPm1fbWFy
a2VkID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghY3VyQmxvY2stPm1h
cmtlZC5nZXQoaSkpIHsKKyAgICAgICAgICBDb2xsZWN0b3JDZWxsKiBjZWxsID0gY3VyQmxvY2st
PmNlbGxzICsgaTsKKwogICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb3IgYWxsb2NhdGVkIGJ1
dCB1bmluaXRpYWxpemVkIG9iamVjdAogICAgICAgICAgIC8vIChXZSBkb24ndCBuZWVkIHRoaXMg
Y2hlY2sgZWFybGllciBiZWNhdXNlIG5vdGhpbmcgcHJpb3IgdGhpcyBwb2ludCAKICAgICAgICAg
ICAvLyBhc3N1bWVzIHRoZSBvYmplY3QgaGFzIGEgdmFsaWQgdnB0ci4pCiAgICAgICAgICAgaWYg
KGNlbGwtPnUuZnJlZUNlbGwuemVyb0lmRnJlZSA9PSAwKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZElzTWFpblRocmVhZCB8fCAhaW1wLT5t
X2NvbGxlY3RPbk1haW5UaHJlYWRPbmx5KTsKLSAgICAgICAgICBpZiAoaW1wLT5tX2NvbGxlY3RP
bk1haW5UaHJlYWRPbmx5KQorICAgICAgICAgIEpTQ2VsbCogaW1wID0gcmVpbnRlcnByZXRfY2Fz
dDxKU0NlbGwqPihjZWxsKTsKKworICAgICAgICAgIEFTU0VSVChjdXJyZW50VGhyZWFkSXNNYWlu
VGhyZWFkIHx8ICFjdXJCbG9jay0+Y29sbGVjdE9uTWFpblRocmVhZE9ubHkuZ2V0KGkpKTsKKyAg
ICAgICAgICBpZiAoY3VyQmxvY2stPmNvbGxlY3RPbk1haW5UaHJlYWRPbmx5LmdldChpKSkgewor
ICAgICAgICAgICAgY3VyQmxvY2stPmNvbGxlY3RPbk1haW5UaHJlYWRPbmx5LmNsZWFyKGkpOwog
ICAgICAgICAgICAgLS1tYWluVGhyZWFkT25seU9iamVjdENvdW50OworICAgICAgICAgIH0KICAg
ICAgICAgICBpbXAtPn5KU0NlbGwoKTsKICAgICAgICAgICAtLXVzZWRDZWxsczsKICAgICAgICAg
ICAtLW51bUxpdmVPYmplY3RzOwpAQCAtODMwLDEzICs4MDMsMTMgQEAgYm9vbCBDb2xsZWN0b3I6
OmNvbGxlY3QoKQogICAgICAgICBpZiAoY2VsbC0+dS5mcmVlQ2VsbC56ZXJvSWZGcmVlID09IDAp
IHsKICAgICAgICAgICArK21pbmltdW1DZWxsc1RvUHJvY2VzczsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICBKU0NlbGwgKmltcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsICo+KGNlbGwp
OwotICAgICAgICAgIGlmIChpbXAtPm1fbWFya2VkKSB7Ci0gICAgICAgICAgICBpbXAtPm1fbWFy
a2VkID0gZmFsc2U7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkSXNNYWluVGhyZWFkIHx8ICFpbXAtPm1fY29sbGVjdE9uTWFpblRocmVhZE9ubHkp
OwotICAgICAgICAgICAgaWYgKGltcC0+bV9jb2xsZWN0T25NYWluVGhyZWFkT25seSkKKyAgICAg
ICAgICBpZiAoIWN1ckJsb2NrLT5tYXJrZWQuZ2V0KGkpKSB7CisgICAgICAgICAgICBKU0NlbGwg
KmltcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsICo+KGNlbGwpOworICAgICAgICAgICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWRJc01haW5UaHJlYWQgfHwgIWN1ckJsb2NrLT5jb2xsZWN0T25NYWlu
VGhyZWFkT25seS5nZXQoaSkpOworICAgICAgICAgICAgaWYgKGN1ckJsb2NrLT5jb2xsZWN0T25N
YWluVGhyZWFkT25seS5nZXQoaSkpIHsKKyAgICAgICAgICAgICAgY3VyQmxvY2stPmNvbGxlY3RP
bk1haW5UaHJlYWRPbmx5LmNsZWFyKGkpOwogICAgICAgICAgICAgICAtLW1haW5UaHJlYWRPbmx5
T2JqZWN0Q291bnQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbXAtPn5KU0NlbGwoKTsK
ICAgICAgICAgICAgIC0tdXNlZENlbGxzOwogICAgICAgICAgICAgLS1udW1MaXZlT2JqZWN0czsK
QEAgLTg1Miw2ICs4MjUsNyBAQCBib29sIENvbGxlY3Rvcjo6Y29sbGVjdCgpCiAgICAgCiAgICAg
Y3VyQmxvY2stPnVzZWRDZWxscyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih1c2VkQ2VsbHMpOwog
ICAgIGN1ckJsb2NrLT5mcmVlTGlzdCA9IGZyZWVMaXN0OworICAgIGN1ckJsb2NrLT5tYXJrZWQu
Y2xlYXJBbGwoKTsKIAogICAgIGlmICh1c2VkQ2VsbHMgPT0gMCkgewogICAgICAgZW1wdHlCbG9j
a3MrKzsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmgJKHJldmlzaW9uIDIxMDI4KQorKysgSmF2
YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMyArMjQs
MTYgQEAKICNpZm5kZWYgS0pTQ09MTEVDVE9SX0hfCiAjZGVmaW5lIEtKU0NPTExFQ1RPUl9IXwog
Ci0jaW5jbHVkZSAidmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KIAog
I2RlZmluZSBLSlNfTUVNX0xJTUlUIDUwMDAwMAogCiBuYW1lc3BhY2UgS0pTIHsKIAorICBjbGFz
cyBKU0NlbGw7CisgIGNsYXNzIEpTVmFsdWU7CisgIGNsYXNzIENvbGxlY3RvckJsb2NrOworCiAg
IGNsYXNzIENvbGxlY3RvciB7CiAgIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCogYWxsb2NhdGUo
c2l6ZV90IHMpOwpAQCAtNjAsNyArNjMsMTQgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgCiAgICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJBc01haW5UaHJlYWQoKTsKIAorICAgIHN0YXRpYyBib29sIGlz
Q2VsbE1hcmtlZChjb25zdCBKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCBtYXJrQ2VsbChKU0Nl
bGwqKTsKKwogICBwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0b3JCbG9jayogY2Vs
bEJsb2NrKGNvbnN0IEpTQ2VsbCopOworICAgIHN0YXRpYyBDb2xsZWN0b3JCbG9jayogY2VsbEJs
b2NrKEpTQ2VsbCopOworICAgIHN0YXRpYyBzaXplX3QgY2VsbE9mZnNldChjb25zdCBKU0NlbGwq
IGNlbGwpOworCiAgICAgQ29sbGVjdG9yKCk7CiAKICAgICBzdGF0aWMgdm9pZCBtYXJrUHJvdGVj
dGVkT2JqZWN0cygpOwpAQCAtNzQsNiArODQsNzYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgc3Rh
dGljIGJvb2wgbWVtb3J5RnVsbDsKICAgfTsKIAorICAvLyB0dW5hYmxlIHBhcmFtZXRlcnMKKyAg
dGVtcGxhdGU8c2l6ZV90IGJ5dGVzUGVyV29yZD4gc3RydWN0IENlbGxTaXplOworCisgIC8vIGNl
bGwgc2l6ZSBuZWVkcyB0byBiZSBhIHBvd2VyIG9mIHR3byBmb3IgY2VydGFpbiBvcHRpbWl6YXRp
b25zIGluIGNvbGxlY3Rvci5jcHAKKyAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2VsbFNpemU8c2l6ZW9m
KHVpbnQzMl90KT4geyBzdGF0aWMgY29uc3Qgc2l6ZV90IG1fdmFsdWUgPSAzMjsgfTsgLy8gMzIt
Yml0CisgIHRlbXBsYXRlPD4gc3RydWN0IENlbGxTaXplPHNpemVvZih1aW50NjRfdCk+IHsgc3Rh
dGljIGNvbnN0IHNpemVfdCBtX3ZhbHVlID0gNjQ7IH07IC8vIDY0LWJpdAorICBjb25zdCBzaXpl
X3QgQkxPQ0tfU0laRSA9IDE2ICogNDA5NjsgLy8gNjRrCisgIAorICAvLyBkZXJpdmVkIGNvbnN0
YW50cworICBjb25zdCBzaXplX3QgQkxPQ0tfT0ZGU0VUX01BU0sgPSBCTE9DS19TSVpFIC0gMTsK
KyAgY29uc3Qgc2l6ZV90IEJMT0NLX01BU0sgPSB+QkxPQ0tfT0ZGU0VUX01BU0s7CisgIGNvbnN0
IHNpemVfdCBNSU5JTVVNX0NFTExfU0laRSA9IENlbGxTaXplPHNpemVvZih2b2lkKik+OjptX3Zh
bHVlOworICBjb25zdCBzaXplX3QgQ0VMTF9BUlJBWV9MRU5HVEggPSAoTUlOSU1VTV9DRUxMX1NJ
WkUgLyBzaXplb2YoZG91YmxlKSkgKyAoTUlOSU1VTV9DRUxMX1NJWkUgJSBzaXplb2YoZG91Ymxl
KSAhPSAwID8gc2l6ZW9mKGRvdWJsZSkgOiAwKTsKKyAgY29uc3Qgc2l6ZV90IENFTExfU0laRSA9
IENFTExfQVJSQVlfTEVOR1RIICogc2l6ZW9mKGRvdWJsZSk7CisgIGNvbnN0IHNpemVfdCBDRUxM
X01BU0sgPSBDRUxMX1NJWkUgLSAxOworICBjb25zdCBzaXplX3QgQ0VMTFNfUEVSX0JMT0NLID0g
KEJMT0NLX1NJWkUgKiA4IC0gc2l6ZW9mKHVpbnQzMl90KSAqIDggLSBzaXplb2Yodm9pZCAqKSAq
IDggLSAyICogKDcgKyAzICogOCkpIC8gKENFTExfU0laRSAqIDggKyAyKTsKKyAgY29uc3Qgc2l6
ZV90IEJJVE1BUF9TSVpFID0gKENFTExTX1BFUl9CTE9DSyArIDcpIC8gODsKKyAgY29uc3Qgc2l6
ZV90IEJJVE1BUF9XT1JEUyA9IChCSVRNQVBfU0laRSArIDMpIC8gc2l6ZW9mKHVpbnQzMl90KTsK
KyAgCisgIHN0cnVjdCBDb2xsZWN0b3JCaXRtYXAgeworICAgIHVpbnQzMl90IGJpdHNbQklUTUFQ
X1dPUkRTXTsKKyAgICBib29sIGdldChzaXplX3QgbikgY29uc3QgeyByZXR1cm4gISEoYml0c1tu
ID4+IDVdICYgKDEgPDwgKG4gJiAweDFGKSkpOyB9IAorICAgIHZvaWQgc2V0KHNpemVfdCBuKSB7
IGJpdHNbbiA+PiA1XSB8PSAoMSA8PCAobiAmIDB4MUYpKTsgfSAKKyAgICB2b2lkIGNsZWFyKHNp
emVfdCBuKSB7IGJpdHNbbiA+PiA1XSAmPSB+KDEgPDwgKG4gJiAweDFGKSk7IH0gCisgICAgdm9p
ZCBjbGVhckFsbCgpIHsgbWVtc2V0KGJpdHMsIDAsIHNpemVvZihiaXRzKSk7IH0KKyAgfTsKKyAg
CisgIHN0cnVjdCBDb2xsZWN0b3JDZWxsIHsKKyAgICB1bmlvbiB7CisgICAgICBkb3VibGUgbWVt
b3J5W0NFTExfQVJSQVlfTEVOR1RIXTsKKyAgICAgIHN0cnVjdCB7CisgICAgICAgIHZvaWQqIHpl
cm9JZkZyZWU7CisgICAgICAgIHB0cmRpZmZfdCBuZXh0OworICAgICAgfSBmcmVlQ2VsbDsKKyAg
ICB9IHU7CisgIH07CisKKyAgc3RydWN0IENvbGxlY3RvckJsb2NrIHsKKyAgICBDb2xsZWN0b3JD
ZWxsIGNlbGxzW0NFTExTX1BFUl9CTE9DS107CisgICAgdWludDMyX3QgdXNlZENlbGxzOworICAg
IENvbGxlY3RvckNlbGwqIGZyZWVMaXN0OworICAgIENvbGxlY3RvckJpdG1hcCBtYXJrZWQ7Cisg
ICAgQ29sbGVjdG9yQml0bWFwIGNvbGxlY3RPbk1haW5UaHJlYWRPbmx5OworICB9OworCisgIGlu
bGluZSBjb25zdCBDb2xsZWN0b3JCbG9jayogQ29sbGVjdG9yOjpjZWxsQmxvY2soY29uc3QgSlND
ZWxsKiBjZWxsKQorICB7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ29sbGVj
dG9yQmxvY2sqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2VsbCkgJiBCTE9DS19NQVNL
KTsKKyAgfQorCisgIGlubGluZSBDb2xsZWN0b3JCbG9jayogQ29sbGVjdG9yOjpjZWxsQmxvY2so
SlNDZWxsKiBjZWxsKQorICB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q29sbGVjdG9yQmxvY2sq
PihjZWxsQmxvY2soY29uc3RfY2FzdDxjb25zdCBKU0NlbGwqPihjZWxsKSkpOworICB9CisKKyAg
aW5saW5lIHNpemVfdCBDb2xsZWN0b3I6OmNlbGxPZmZzZXQoY29uc3QgSlNDZWxsKiBjZWxsKQor
ICB7CisgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2VsbCkgJiBCTE9D
S19PRkZTRVRfTUFTSykgLyBDRUxMX1NJWkU7CisgIH0KKworICBpbmxpbmUgYm9vbCBDb2xsZWN0
b3I6OmlzQ2VsbE1hcmtlZChjb25zdCBKU0NlbGwqIGNlbGwpCisgIHsKKyAgICByZXR1cm4gY2Vs
bEJsb2NrKGNlbGwpLT5tYXJrZWQuZ2V0KGNlbGxPZmZzZXQoY2VsbCkpOworICB9CisKKyAgaW5s
aW5lIHZvaWQgQ29sbGVjdG9yOjptYXJrQ2VsbChKU0NlbGwqIGNlbGwpCisgIHsKKyAgICBjZWxs
QmxvY2soY2VsbCktPm1hcmtlZC5zZXQoY2VsbE9mZnNldChjZWxsKSk7CisgIH0KKwogfSAvLyBu
YW1lc3BhY2UgS0pTCiAKICNlbmRpZiAvKiBLSlNDT0xMRUNUT1JfSF8gKi8KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy92YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy92
YWx1ZS5oCShyZXZpc2lvbiAyMTAyOCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy92YWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIEtKU19WQUxVRV9ICiAKICNp
bmNsdWRlICJKU0ltbWVkaWF0ZS5oIgorI2luY2x1ZGUgImNvbGxlY3Rvci5oIgogI2luY2x1ZGUg
InVzdHJpbmcuaCIKICNpbmNsdWRlIDxzdGRkZWYuaD4gLy8gZm9yIHNpemVfdAogCkBAIC0xNTQs
MTAgKzE1NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkICpvcGVyYXRvciBuZXcoc2l6ZV90KTsKICAg
ICB2aXJ0dWFsIHZvaWQgbWFyaygpOwogICAgIGJvb2wgbWFya2VkKCkgY29uc3Q7Ci0KLXByaXZh
dGU6Ci0gICAgYm9vbCBtX2NvbGxlY3RPbk1haW5UaHJlYWRPbmx5IDogMTsKLSAgICBib29sIG1f
bWFya2VkIDogMTsKIH07CiAKIEpTVmFsdWUgKmpzTnVtYmVyQ2VsbChkb3VibGUpOwpAQCAtMjA0
LDggKzIwMSw2IEBAIGlubGluZSBKU1ZhbHVlOjp+SlNWYWx1ZSgpCiB9CiAKIGlubGluZSBKU0Nl
bGw6OkpTQ2VsbCgpCi0gICAgOiBtX2NvbGxlY3RPbk1haW5UaHJlYWRPbmx5KGZhbHNlKQotICAg
ICwgbV9tYXJrZWQoZmFsc2UpCiB7CiB9CiAKQEAgLTIzMCwxMiArMjI1LDEyIEBAIGlubGluZSBi
b29sIEpTQ2VsbDo6aXNPYmplY3QoKSBjb25zdAogCiBpbmxpbmUgYm9vbCBKU0NlbGw6Om1hcmtl
ZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWFya2VkOworICAgIHJldHVybiBDb2xsZWN0b3I6
OmlzQ2VsbE1hcmtlZCh0aGlzKTsKIH0KIAogaW5saW5lIHZvaWQgSlNDZWxsOjptYXJrKCkKIHsK
LSAgICBtX21hcmtlZCA9IHRydWU7CisgICAgcmV0dXJuIENvbGxlY3Rvcjo6bWFya0NlbGwodGhp
cyk7CiB9CiAKIGlubGluZSBKU0NlbGwgKkpTVmFsdWU6OmRvd25jYXN0KCkK
</data>
<flag name="review"
          id="5738"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>