<?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>78612</bug_id>
          
          <creation_ts>2012-02-14 09:42:39 -0800</creation_ts>
          <short_desc>Implement fast path for op_new_array in the baseline JIT</short_desc>
          <delta_ts>2012-02-26 15:17:09 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78610</dependson>
          <blocked>79055</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>556355</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-14 09:42:39 -0800</bug_when>
    <thetext>Currently, op_new_array simply does a stub call out to C++ code. With the new copying collector, we should be able to implement an inline asm fast path for op_new_array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560452</commentid>
    <comment_count>1</comment_count>
      <attachid>127868</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-20 16:29:27 -0800</bug_when>
    <thetext>Created attachment 127868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560457</commentid>
    <comment_count>2</comment_count>
      <attachid>127868</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-20 16:37:03 -0800</bug_when>
    <thetext>Comment on attachment 127868
Patch

I can dig it.  But check performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560517</commentid>
    <comment_count>3</comment_count>
      <attachid>127886</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-20 18:22:32 -0800</bug_when>
    <thetext>Created attachment 127886
Bencher results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560542</commentid>
    <comment_count>4</comment_count>
      <attachid>127868</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-20 19:20:27 -0800</bug_when>
    <thetext>Comment on attachment 127868
Patch

Clearing flags on attachment: 127868

Committed r108291: &lt;http://trac.webkit.org/changeset/108291&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560543</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-20 19:20:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560666</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-20 22:20:58 -0800</bug_when>
    <thetext>I think you broke 32-bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560670</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-20 22:27:24 -0800</bug_when>
    <thetext>Yeah you totally broke 32-bit. ;-)  I&apos;m going to roll this out for now since it&apos;s blocking the interpreter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560672</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-20 22:31:32 -0800</bug_when>
    <thetext>These are the failures.  Looks like you need to be careful about the JIT code you emit on 32-bit.  In particular, you can&apos;t copy JSValues around using Ptr; you have to use two 32s.



** Danger, Will Robinson! Danger! The following failures have been introduced:
	ecma/Date/15.9.3.1-1.js
	ecma/Date/15.9.3.1-2.js
	ecma/Date/15.9.3.1-3.js
	ecma/Date/15.9.3.1-4.js
	ecma/Date/15.9.3.1-5.js
	ecma/Date/15.9.3.2-4.js
	ecma/Date/15.9.3.2-5.js
	ecma/Date/15.9.3.8-2.js
	ecma/Date/15.9.3.8-3.js
	ecma/Date/15.9.3.8-4.js
	ecma/Date/15.9.3.8-5.js
	ecma/Date/15.9.4.2.js
	ecma_2/String/match-002.js
	ecma_3/Array/15.4.4.3-1.js
	ecma_3/Expressions/11.9.6-1.js
	ecma_3/RegExp/regress-85721.js
	js1_2/Array/splice2.js
	js1_2/regexp/alphanumeric.js
	js1_2/regexp/control_characters.js
	js1_2/regexp/digit.js
	js1_2/regexp/vertical_bar.js
	js1_2/regexp/whitespace.js
	js1_2/regress/regress-7703.js
	js1_5/Expressions/regress-96526-argsub.js
	js1_5/Expressions/regress-96526-delelem.js
	js1_5/Expressions/regress-96526-noargsub.js
	js1_5/GetSet/getset-004.js
	js1_5/GetSet/getset-005.js
	js1_5/Regress/regress-146596.js

29 regressions found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560673</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-20 22:34:03 -0800</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/108307</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561253</commentid>
    <comment_count>10</comment_count>
      <attachid>128051</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-21 15:01:42 -0800</bug_when>
    <thetext>Created attachment 128051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565083</commentid>
    <comment_count>11</comment_count>
      <attachid>128051</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-25 19:51:59 -0800</bug_when>
    <thetext>Comment on attachment 128051
Patch

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

r=me if you fix the two issues.

&gt; Source/JavaScriptCore/jit/JITInlineMethods.h:514
&gt; +        loadPtr(Address(callFrameRegister, (valuesRegister + i) * sizeof(Register)), storagePtr);
&gt; +        storePtr(storagePtr, Address(storageResult, ArrayStorage::vectorOffset() + sizeof(WriteBarrier&lt;Unknown&gt;) * i));
&gt; +        loadPtr(Address(callFrameRegister, (valuesRegister + i) * sizeof(Register) + sizeof(uint32_t)), storagePtr);
&gt; +        storePtr(storagePtr, Address(storageResult, ArrayStorage::vectorOffset() + sizeof(WriteBarrier&lt;Unknown&gt;) * i + sizeof(uint32_t)));

Minor nit:

We typically use load32 and store32 instead of loadPtr and storePtr for JSVALUE32_64.  I think historically that was required because we might compile the JSVALUE32_64 code for 64-bit.  We don&apos;t do that anymore, but I kind of like seeing load32/store32 because it reminds me that I&apos;m looking at JSVALUE32_64 code rather than code for JSVALUE64.

&gt; Source/JavaScriptCore/jit/JITInlineMethods.h:529
&gt; +#if CPU(BIG_ENDIAN)
&gt; +        store32(TrustedImm32(static_cast&lt;int&gt;(JSValue::EmptyValueTag)), Address(storageResult, ArrayStorage::vectorOffset() + sizeof(WriteBarrier&lt;Unknown&gt;) * i));
&gt; +        storePtr(TrustedPtr(0), Address(storageResult, ArrayStorage::vectorOffset() + sizeof(WriteBarrier&lt;Unknown&gt;) * i + sizeof(uint32_t)));
&gt; +#else
&gt; +        storePtr(TrustedImmPtr(0), Address(storageResult, ArrayStorage::vectorOffset() + sizeof(WriteBarrier&lt;Unknown&gt;) * i));
&gt; +        store32(TrustedImm32(static_cast&lt;int&gt;(JSValue::EmptyValueTag)), Address(storageResult, ArrayStorage::vectorOffset() + sizeof(WriteBarrier&lt;Unknown&gt;) * i + sizeof(uint32_t)));
&gt; +#endif

You could get rid of the endian-casing if you use OBJECT_OFFSETOF into EncodedValueDescriptor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565213</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-26 15:17:09 -0800</bug_when>
    <thetext>Committed r108681: &lt;http://trac.webkit.org/changeset/108681&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127868</attachid>
            <date>2012-02-20 16:29:27 -0800</date>
            <delta_ts>2012-02-21 15:01:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78612-20120220162926.patch</filename>
            <type>text/plain</type>
            <size>17786</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NjIwYTI5ZjAyZjY2MTEzZjIzMzJlOWQxODYyYjExMGRjZGUwYjhkLi42YTFkOWE1YTc3YmNlMzNm
YmZlZDViZmRjZWJkY2QwYWE4M2YzZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1NyBAQAogMjAxMi0wMi0yMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBmYXN0IHBhdGggZm9yIG9wX25ld19hcnJheSBp
biB0aGUgYmFzZWxpbmUgSklUCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03ODYxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogaGVhcC9Db3BpZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKENvcGllZEFsbG9j
YXRvcik6IEZyaWVuZGVkIHRoZSBKSVQgdG8gYWxsb3cgYWNjZXNzIHRvIG1fY3VycmVudE9mZnNl
dC4KKyAgICAgICAgKiBoZWFwL0NvcGllZFNwYWNlLmg6CisgICAgICAgIChDb3BpZWRTcGFjZSk6
IEZyaWVuZGVkIHRoZSBKSVQgdG8gYWxsb3cgYWNjZXNzIHRvIAorICAgICAgICAoSlNDOjpDb3Bp
ZWRTcGFjZTo6YWxsb2NhdG9yKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpT
Qzo6SGVhcDo6c3RvcmFnZUFsbG9jYXRvcik6IEFkZGVkIGEgZ2V0dGVyIGZvciB0aGUgQ29waWVk
QWxsb2NhdG9yIGNsYXNzIHNvIHRoZSBKSVQKKyAgICAgICAgY2FuIHVzZSBpdCBmb3Igc2ltcGxl
IGFsbG9jYXRpb24gaS5lLiB3aGVuIHdlIGNhbiBqdXN0IGJ1bXAgdGhlIG9mZnNldCB3aXRob3V0
IGhhdmluZyB0byAKKyAgICAgICAgZG8gYW55dGhpbmcgZWxzZS4KKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6IEFkZGVk
IG5ldyBzbG93IGNhc2UgZm9yIG9wX25ld19hcnJheSBmb3Igd2hlbgorICAgICAgICB3ZSBoYXZl
IHRvIGJhaWwgb3V0IGJlY2F1c2UgdGhlIGZhc3QgYWxsb2NhdGlvbiBwYXRoIGZhaWxzIGZvciB3
aGF0ZXZlciByZWFzb24uCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSklUKToKKyAg
ICAgICAgKiBqaXQvSklUSW5saW5lTWV0aG9kcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRB
bGxvY2F0ZUJhc2ljU3RvcmFnZSk6IEFkZGVkIHV0aWxpdHkgZnVuY3Rpb24gdGhhdCBhbGxvd3Mg
b2JqZWN0cyB0byAKKyAgICAgICAgYWxsb2NhdGUgZ2VuZXJpYyBiYWNraW5nIHN0b3Jlcy4gVGhp
cyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGVtaXRBbGxvY2F0ZUpTQXJyYXkuCisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkpOiBBZGRlZCB1dGlsaXR5
IGZ1bmN0aW9uIHRoYXQgYWxsb3dzIHRoZSBjbGllbnQgdG8gCisgICAgICAgIG1vcmUgZWFzaWx5
IGFsbG9jYXRlIEpTQXJyYXlzLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgZW1pdF9vcF9uZXdf
YXJyYXkgYW5kIEkgZXhwZWN0IAorICAgICAgICBpdCB3aWxsIGFsc28gYmUgdXNlZCBmb3IgZW1p
dF9vcF9uZXdfYXJyYXlfYnVmZmVyLgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hcnJheSk6IENoYW5nZWQgdG8gZG8gaW5saW5l
IGFsbG9jYXRpb24gb2YgSlNBcnJheXMuIFN0aWxsIGRvZXMgCisgICAgICAgIGEgc3R1YiBjYWxs
IGZvciBvdmVyc2l6ZSBhcnJheXMuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX25ld19hcnJheSk6IEp1c3QgYmFpbHMgb3V0IHRvIGEgc3R1YiBjYWxsIGlm
IHdlIGZhaWwgaW4gYW55IHdheSBvbiAKKyAgICAgICAgdGhlIGZhc3QgcGF0aC4KKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1l
L0pTQXJyYXkuaDogQWRkZWQgbG90cyBvZiBvZmZzZXQgZnVuY3Rpb25zIGZvciBhbGwgdGhlIGZp
ZWxkcyB0aGF0IHdlIG5lZWQgdG8gCisgICAgICAgIGluaXRpYWxpemUgaW4gdGhlIEpJVC4KKyAg
ICAgICAgKEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkFycmF5U3RvcmFnZTo6bGVuZ3Ro
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6QXJyYXlTdG9yYWdlOjpudW1WYWx1ZXNJblZlY3Rvck9m
ZnNldCk6CisgICAgICAgIChKU0M6OkFycmF5U3RvcmFnZTo6YWxsb2NCYXNlT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6QXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQpOgorICAgICAgICAoSlNBcnJh
eSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNwYXJzZVZhbHVlTWFwT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6SlNBcnJheTo6c3ViY2xhc3NEYXRhT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNB
cnJheTo6aW5kZXhCaWFzT2Zmc2V0KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnN0b3JhZ2VTaXplKTogTW92ZWQgdGhpcyBmdW5jdGlvbiBmcm9tIGJlaW5nIGEgc3Rh
dGljIGZ1bmN0aW9uIGluIHRoZSBjcHAgZmlsZQorICAgICAgICB0byBiZWluZyBhIHN0YXRpYyBm
dW5jdGlvbiBpbiB0aGUgSlNBcnJheSBjbGFzcy4gVGhpcyBtb3ZlIGFsbG93cyB0aGUgSklUIHRv
IGNhbGwgaXQgdG8gCisgICAgICAgIHNlZSB3aGF0IHNpemUgaXQgc2hvdWxkIGFsbG9jYXRlLgor
CisyMDEyLTAyLTIwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
ICAgICAgICAgVW5kb2luZyBhY2NpZGVudGFsIGNoYW5nZXMKIAogICAgICAgICAqIGhlYXAvSGVh
cC5jcHA6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRBbGxv
Y2F0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZEFsbG9jYXRvci5oCmlu
ZGV4IDAxNGEwY2Y1ZTU4MTQ3ZTdlNzliZjg2YmMxNjY5MDBiYzE2NmNjMjcuLjU5YmYyYzA1Yzg1
N2ZiYzBmNmZhZTg1ZmIyZTA4MWI3YjFhZGQ0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvcGllZEFsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvcGllZEFsbG9jYXRvci5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgQ29waWVkQWxsb2NhdG9yIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOwogcHVi
bGljOgogICAgIENvcGllZEFsbG9jYXRvcigpOwogICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuaAppbmRleCAyODVlMmI5YTIx
MmJjZTc1ZWFmMThhZDFmMWUzYWI3NjU5NWJhZWU1Li5lOGZhODAwNTU5MGM4MzYyMzkzM2Y2NDA5
MDhhMmViMTQzZDJjZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b3BpZWRTcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNl
LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgSGVhcEJsb2NrOwogCiBjbGFzcyBDb3BpZWRTcGFj
ZSB7CiAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOworICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CiBwdWJsaWM6CiAgICAgQ29waWVkU3BhY2UoSGVhcCopOwogICAgIHZvaWQgaW5pdCgpOwpAQCAt
NTMsNiArNTQsOCBAQCBwdWJsaWM6CiAgICAgQ2hlY2tlZEJvb2xlYW4gdHJ5QWxsb2NhdGUoc2l6
ZV90LCB2b2lkKiopOwogICAgIENoZWNrZWRCb29sZWFuIHRyeVJlYWxsb2NhdGUodm9pZCoqLCBz
aXplX3QsIHNpemVfdCk7CiAgICAgCisgICAgQ29waWVkQWxsb2NhdG9yJiBhbGxvY2F0b3IoKSB7
IHJldHVybiBtX2FsbG9jYXRvcjsgfQorCiAgICAgdm9pZCBzdGFydGVkQ29weWluZygpOwogICAg
IHZvaWQgZG9uZUNvcHlpbmcoKTsKICAgICBib29sIGlzSW5Db3B5UGhhc2UoKSB7IHJldHVybiBt
X2luQ29weWluZ1BoYXNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggMjUwZjNl
ZjM3ODIyMzgyYjNhNmJhYmY4OGE5Y2IxNmE4ZTU4YTRkYy4uYzZmY2MwY2QwMjNmNWYwZDkyMDZk
MGJmMzIwZWUzNmI3ZWQ4ODYzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtOTcs
NiArOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIE1hcmtlZEFsbG9j
YXRvciYgYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKSB7
IHJldHVybiBtX29iamVjdFNwYWNlLmFsbG9jYXRvckZvcihieXRlcyk7IH0KICAgICAgICAgTWFy
a2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3RvcihzaXplX3QgYnl0
ZXMpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcyk7
IH0KKyAgICAgICAgQ29waWVkQWxsb2NhdG9yJiBzdG9yYWdlQWxsb2NhdG9yKCkgeyByZXR1cm4g
bV9zdG9yYWdlU3BhY2UuYWxsb2NhdG9yKCk7IH0KICAgICAgICAgQ2hlY2tlZEJvb2xlYW4gdHJ5
QWxsb2NhdGVTdG9yYWdlKHNpemVfdCwgdm9pZCoqKTsKICAgICAgICAgQ2hlY2tlZEJvb2xlYW4g
dHJ5UmVhbGxvY2F0ZVN0b3JhZ2Uodm9pZCoqLCBzaXplX3QsIHNpemVfdCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAppbmRleCBmM2Y4MzNhZTA3YWFlMTgwYWFiMzM0NDA4YjA0Y2I4NGFi
NTRmMGNjLi45ZTNlNTk2MjQwZDg1YjI5YTY2Y2QxODQ3ODExMmUyMjczOWUyZmIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC00NzcsNiArNDc3LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX25lZ2F0
ZSkKICNlbmRpZgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbmVxKQorICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfbmV3X2FycmF5KQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX25ld19mdW5j
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbmV3X2Z1bmNfZXhwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggYTJiYzQyNzJhN2Q2OGUyZTU4Y2IyZjlhYTY1YTdjZTEwZWQyNDRm
NS4uN2VkMWQ5NjlkNGEzMzc2ZTkyMjk2NjkyNWI3NWQ4MmZiZGRmNmEwZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCkBAIC0zMzYsOCArMzM2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lciwgUmVnaXN0ZXJJRCB2YWx1ZSwg
UmVnaXN0ZXJJRCBzY3JhdGNoLCBXcml0ZUJhcnJpZXJNb2RlLCBXcml0ZUJhcnJpZXJVc2VLaW5k
KTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGUsIGJvb2wgZGVzdHJ1Y3Rv
ciwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gdm9pZCBlbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0
KFN0cnVjdHVyZVR5cGUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIp
OworICAgICAgICB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShzaXplX3QsIFJlZ2lzdGVy
SUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB2b2lkIGVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUsIFJlZ2lz
dGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOwogICAgICAgICB2b2lkIGVtaXRB
bGxvY2F0ZUpTRnVuY3Rpb24oRnVuY3Rpb25FeGVjdXRhYmxlKiwgUmVnaXN0ZXJJRCBzY29wZUNo
YWluLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKTsKKyAgICAgICAg
dm9pZCBlbWl0QWxsb2NhdGVKU0FycmF5KHVuc2lnbmVkIHZhbHVlc1JlZ2lzdGVyLCB1bnNpZ25l
ZCBsZW5ndGgsIFJlZ2lzdGVySUQgY2VsbFJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUmVzdWx0
LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOwogICAgICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJP
RklMRVIpCiAgICAgICAgIC8vIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB2YWx1ZSB0byBwcm9maWxl
IGlzIGluIHJlZ1QwIGFuZCB0aGF0IHJlZ1QzIGlzIGF2YWlsYWJsZSBmb3IKQEAgLTk1Nyw3ICs5
NTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF91cnNoaWZ0
KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX25ld19mdW5jKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX25ld19mdW5jX2V4
cChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLQorICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX25ld19hcnJheShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0
U2hpZnQoSW5zdHJ1Y3Rpb24qLCBib29sIGlzVW5zaWduZWQpOwogICAgICAgICB2b2lkIGVtaXRS
aWdodFNoaWZ0U2xvd0Nhc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiwgYm9vbCBpc1Vuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVNZXRob2RzLmgKaW5kZXggMzY2NDNkMDUxMTYzNDgyZjY3MGI1MzRhNGMzYmU3MWVm
YjAzYzE5MC4uMDYxMmYyZDAzMjA4NDdhYTViODI0ZjkxNTZjZWE3N2ZjY2Y0MWJmMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKQEAgLTQ1NCw2ICs0
NTQsNjUgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVKU0Z1bmN0aW9uKEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgUmVnaXN0ZXIKICNlbmRpZgogfQogCitpbmxpbmUgdm9p
ZCBKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShzaXplX3Qgc2l6ZSwgUmVnaXN0ZXJJRCBy
ZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cikKK3sKKyAgICBDb3BpZWRBbGxvY2F0b3IqIGFs
bG9jYXRvciA9ICZtX2dsb2JhbERhdGEtPmhlYXAuc3RvcmFnZUFsbG9jYXRvcigpOworCisgICAg
Ly8gRklYTUU6IFdlIG5lZWQgdG8gY2hlY2sgZm9yIHdyYXAtYXJvdW5kLgorICAgIC8vIENoZWNr
IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBhbGxvY2F0aW9uIHdpbGwgZml0IGluIHRoZSBjdXJyZW50
IGJsb2NrLgorICAgIGxvYWRQdHIoJmFsbG9jYXRvci0+bV9jdXJyZW50T2Zmc2V0LCByZXN1bHQp
OworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZSksIHJlc3VsdCk7CisgICAgbG9hZFB0cigm
YWxsb2NhdG9yLT5tX2N1cnJlbnRCbG9jaywgc3RvcmFnZVB0cik7CisgICAgYWRkUHRyKFRydXN0
ZWRJbW0zMihIZWFwQmxvY2s6OnNfYmxvY2tTaXplKSwgc3RvcmFnZVB0cik7CisgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoUHRyKEFib3ZlT3JFcXVhbCwgcmVzdWx0LCBzdG9yYWdlUHRyKSk7CisKKyAg
ICAvLyBMb2FkIHRoZSBvcmlnaW5hbCBvZmZzZXQuCisgICAgbG9hZFB0cigmYWxsb2NhdG9yLT5t
X2N1cnJlbnRPZmZzZXQsIHJlc3VsdCk7CisKKyAgICAvLyBCdW1wIHRoZSBwb2ludGVyIGZvcndh
cmQuCisgICAgbW92ZShyZXN1bHQsIHN0b3JhZ2VQdHIpOworICAgIGFkZFB0cihUcnVzdGVkSW1t
MzIoc2l6ZSksIHN0b3JhZ2VQdHIpOworICAgIHN0b3JlUHRyKHN0b3JhZ2VQdHIsICZhbGxvY2F0
b3ItPm1fY3VycmVudE9mZnNldCk7Cit9CisKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRl
SlNBcnJheSh1bnNpZ25lZCB2YWx1ZXNSZWdpc3RlciwgdW5zaWduZWQgbGVuZ3RoLCBSZWdpc3Rl
cklEIGNlbGxSZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9y
YWdlUHRyKQoreworICAgIHVuc2lnbmVkIGluaXRpYWxMZW5ndGggPSBzdGQ6Om1heChsZW5ndGgs
IDRVKTsKKyAgICBzaXplX3QgaW5pdGlhbFN0b3JhZ2UgPSBKU0FycmF5OjpzdG9yYWdlU2l6ZShp
bml0aWFsTGVuZ3RoKTsKKworICAgIC8vIEFsbG9jYXRlIHRoZSBjZWxsIGZvciB0aGUgYXJyYXku
CisgICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxKU0FycmF5LCBmYWxzZT4oVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJlKCkpLCBjZWxs
UmVzdWx0LCBzdG9yYWdlUHRyKTsKKworICAgIC8vIEFsbG9jYXRlIHRoZSBiYWNraW5nIHN0b3Jl
IGZvciB0aGUgYXJyYXkuCisgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKGluaXRpYWxTdG9y
YWdlLCBzdG9yYWdlUmVzdWx0LCBzdG9yYWdlUHRyKTsKKworICAgIC8vIFN0b3JlIGFsbCB0aGUg
bmVjZXNzYXJ5IGluZm8gaW4gdGhlIEFycmF5U3RvcmFnZS4KKyAgICBzdG9yZVB0cihzdG9yYWdl
UmVzdWx0LCBBZGRyZXNzKHN0b3JhZ2VSZXN1bHQsIEFycmF5U3RvcmFnZTo6YWxsb2NCYXNlT2Zm
c2V0KCkpKTsKKyAgICBzdG9yZTMyKEltbTMyKGxlbmd0aCksIEFkZHJlc3Moc3RvcmFnZVJlc3Vs
dCwgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSkpOworICAgIHN0b3JlMzIoSW1tMzIobGVu
Z3RoKSwgQWRkcmVzcyhzdG9yYWdlUmVzdWx0LCBBcnJheVN0b3JhZ2U6Om51bVZhbHVlc0luVmVj
dG9yT2Zmc2V0KCkpKTsKKworICAgIC8vIFN0b3JlIHRoZSBuZXdseSBhbGxvY2F0ZWQgQXJyYXlT
dG9yYWdlLgorICAgIHN0b3JlUHRyKHN0b3JhZ2VSZXN1bHQsIEFkZHJlc3MoY2VsbFJlc3VsdCwg
SlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSk7CisKKyAgICAvLyBTdG9yZSB0aGUgdmVjdG9yIGxl
bmd0aCBhbmQgaW5kZXggYmlhcy4KKyAgICBzdG9yZTMyKEltbTMyKGluaXRpYWxMZW5ndGgpLCBB
ZGRyZXNzKGNlbGxSZXN1bHQsIEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSk7CisgICAg
c3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEFkZHJlc3MoY2VsbFJlc3VsdCwgSlNBcnJheTo6aW5k
ZXhCaWFzT2Zmc2V0KCkpKTsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIHN1YmNsYXNzIGRhdGEg
YW5kIHRoZSBzcGFyc2UgdmFsdWUgbWFwLgorICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCks
IEFkZHJlc3MoY2VsbFJlc3VsdCwgSlNBcnJheTo6c3ViY2xhc3NEYXRhT2Zmc2V0KCkpKTsKKyAg
ICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKGNlbGxSZXN1bHQsIEpTQXJyYXk6
OnNwYXJzZVZhbHVlTWFwT2Zmc2V0KCkpKTsKKworICAgIC8vIFN0b3JlIHRoZSB2YWx1ZXMgd2Ug
aGF2ZS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgbG9hZFB0cihBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCAodmFsdWVzUmVnaXN0ZXIgKyBp
KSAqIHNpemVvZihSZWdpc3RlcikpLCBzdG9yYWdlUHRyKTsKKyAgICAgICAgc3RvcmVQdHIoc3Rv
cmFnZVB0ciwgQWRkcmVzcyhzdG9yYWdlUmVzdWx0LCBBcnJheVN0b3JhZ2U6OnZlY3Rvck9mZnNl
dCgpICsgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgKiBpKSk7CisgICAgfQorCisgICAg
Ly8gWmVybyBvdXQgdGhlIHJlbWFpbmluZyBzbG90cy4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBs
ZW5ndGg7IGkgPCBpbml0aWFsTGVuZ3RoOyBpKyspCisgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJ
bW1QdHIoMCksIEFkZHJlc3Moc3RvcmFnZVJlc3VsdCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZz
ZXQoKSArIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICogaSkpOworfQorCiAjaWYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQogaW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdT
aXRlKFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYmM1M2QyY2Q4MWRiOGE1NTU3MTg2ZDFiZDk5ODVmNDA3
YmI4YTI3MS4uODMzYjg4MjRjYzUwMDlmOTIxZDQ0NTFlZTYyNmU1ZmJlNTc3ZDA4YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiSklULmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJDb3Bp
ZWRTcGFjZUlubGluZU1ldGhvZHMuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklU
SW5saW5lTWV0aG9kcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJDYWxsLmgiCkBAIC0xNjQ1LDYgKzE2
NDYsMjkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CisgICAgaW50IGxlbmd0
aCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgLy8gRklYTUU6IEFkZCBz
dXBwb3J0IGZvciBub24tZW1wdHkgYXJyYXlzLiBUaGlzIGludm9sdmVzIGNvcHlpbmcgdGhlIHZh
bHVlcyBvdmVyLgorICAgIGlmIChDb3BpZWRTcGFjZTo6aXNPdmVyc2l6ZShKU0FycmF5OjpzdG9y
YWdlU2l6ZShsZW5ndGgpKSkgeworICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBj
dGlfb3BfbmV3X2FycmF5KTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgIHN0
dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CisgICAgaW50IHZhbHVlcyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisK
KyAgICBlbWl0QWxsb2NhdGVKU0FycmF5KHZhbHVlcywgbGVuZ3RoLCByZWdUMCwgcmVnVDEsIHJl
Z1QyKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOyAKK30KKwordm9pZCBKSVQ6OmVt
aXRTbG93X29wX25ld19hcnJheShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGludCBsZW5ndGggPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgIGlmIChDb3BpZWRTcGFjZTo6aXNP
dmVyc2l6ZShKU0FycmF5OjpzdG9yYWdlU2l6ZShsZW5ndGgpKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gTm90IGVub3VnaCBzcGFjZSBpbiBNYXJrZWRTcGFj
ZSBmb3IgY2VsbC4KKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIE5vdCBlbm91Z2ggc3BhY2Ug
aW4gQ29waWVkU3BhY2UgZm9yIHN0b3JhZ2UuCiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhp
cywgY3RpX29wX25ld19hcnJheSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggZWUxN2YzY2ZjYmVjMjM4ZWM3YjU4MjY1
M2E2MmU0MjdhYjMwMjAwMy4uYzEyMzRhNTZiMDM5NjAyOWE0ODlkNDBmM2VjMzBhM2YyYTFmYzQ3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTEwNCwy
MCArMTA0LDYgQEAgY29uc3QgQ2xhc3NJbmZvIEpTQXJyYXk6OnNfaW5mbyA9IHsiQXJyYXkiLCAm
SlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkUKIC8vIFRoaXMgdmFsdWUgaXMgY2Fw
cGVkIGJ5IHRoZSBjb25zdGFudCBGSVJTVF9WRUNUT1JfR1JPVyBkZWZpbmVkIGFib3ZlLgogc3Rh
dGljIHVuc2lnbmVkIGxhc3RBcnJheVNpemUgPSAwOwogCi1zdGF0aWMgaW5saW5lIHNpemVfdCBz
dG9yYWdlU2l6ZSh1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCi17Ci0gICAgQVNTRVJUKHZlY3Rvckxl
bmd0aCA8PSBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKTsKLQotICAgIC8vIE1BWF9TVE9SQUdF
X1ZFQ1RPUl9MRU5HVEggaXMgZGVmaW5lZCBzdWNoIHRoYXQgcHJvdmlkZWQgKHZlY3Rvckxlbmd0
aCA8PSBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKQotICAgIC8vIC0gYXMgYXNzZXJ0ZWQgYWJv
dmUgLSB0aGUgZm9sbG93aW5nIGNhbGN1bGF0aW9uIGNhbm5vdCBvdmVyZmxvdy4KLSAgICBzaXpl
X3Qgc2l6ZSA9IChzaXplb2YoQXJyYXlTdG9yYWdlKSAtIHNpemVvZihXcml0ZUJhcnJpZXI8VW5r
bm93bj4pKSArICh2ZWN0b3JMZW5ndGggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSk7
Ci0gICAgLy8gQXNzZXJ0aW9uIHRvIGRldGVjdCBpbnRlZ2VyIG92ZXJmbG93IGluIHByZXZpb3Vz
IGNhbGN1bGF0aW9uIChzaG91bGQgbm90IGJlIHBvc3NpYmxlLCBwcm92aWRlZCB0aGF0Ci0gICAg
Ly8gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCBpcyBjb3JyZWN0bHkgZGVmaW5lZCkuCi0gICAg
QVNTRVJUKCgoc2l6ZSAtIChzaXplb2YoQXJyYXlTdG9yYWdlKSAtIHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pKSkgLyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSA9PSB2ZWN0b3JM
ZW5ndGgpICYmIChzaXplID49IChzaXplb2YoQXJyYXlTdG9yYWdlKSAtIHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pKSkpOwotCi0gICAgcmV0dXJuIHNpemU7Ci19Ci0KIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
bnVtVmFsdWVzKQogewogICAgIHJldHVybiBsZW5ndGggPD0gTUlOX1NQQVJTRV9BUlJBWV9JTkRF
WCB8fCBsZW5ndGggLyBtaW5EZW5zaXR5TXVsdGlwbGllciA8PSBudW1WYWx1ZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggZGY3NTA4NDE3ZDgwMmI4YzAzMjU3
MDRkYzdiMmZjNmM2MTcxNmU1Yy4uZDNhMTM2YjliNWJiNjQxMDZhMGE0OTAyMjkzYWQyNmFjM2Vi
YWI4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTE5LDEw
ICsxMTksMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9pbkNvbXBhY3RJbml0
aWFsaXphdGlvbjsKICNlbmRpZgogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV92ZWN0
b3JbMV07CisKKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBsZW5ndGhPZmZzZXQoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xlbmd0aCk7IH0KKyAgICAgICAgc3Rh
dGljIHB0cmRpZmZfdCBudW1WYWx1ZXNJblZlY3Rvck9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbnVtVmFsdWVzSW5WZWN0b3IpOyB9CisgICAgICAgIHN0
YXRpYyBwdHJkaWZmX3QgYWxsb2NCYXNlT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEFycmF5U3RvcmFnZSwgbV9hbGxvY0Jhc2UpOyB9CisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qg
dmVjdG9yT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV92
ZWN0b3IpOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGV4
cGxpY2l0IEpTQXJyYXkoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CkBAIC0yNTgsNiArMjY0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0
U3ViY2xhc3NEYXRhKHZvaWQqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIHN0YXRpYyBzaXpl
X3Qgc3RvcmFnZVNpemUodW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKICAgICAgICAgYm9vbCBpc0xl
bmd0aFdyaXRhYmxlKCkKICAgICAgICAgewogICAgICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1h
cCogbWFwID0gbV9zcGFyc2VWYWx1ZU1hcDsKQEAgLTI4OSw2ICsyOTYsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIC8vIEZJWE1FOiBNYXliZSBTcGFyc2VBcnJheVZhbHVlTWFwIHNob3Vs
ZCBiZSBwdXQgaW50byBpdHMgb3duIEpTQ2VsbD8KICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1h
cCogbV9zcGFyc2VWYWx1ZU1hcDsKICAgICAgICAgdm9pZCogbV9zdWJjbGFzc0RhdGE7IC8vIEEg
SlNBcnJheSBzdWJjbGFzcyBjYW4gdXNlIHRoaXMgdG8gZmlsbCB0aGUgdmVjdG9yIGxhemlseS4K
KworICAgICAgICBzdGF0aWMgcHRyZGlmZl90IHNwYXJzZVZhbHVlTWFwT2Zmc2V0KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTQXJyYXksIG1fc3BhcnNlVmFsdWVNYXApOyB9CisgICAgICAg
IHN0YXRpYyBwdHJkaWZmX3Qgc3ViY2xhc3NEYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEpTQXJyYXksIG1fc3ViY2xhc3NEYXRhKTsgfQorICAgICAgICBzdGF0aWMgcHRyZGlm
Zl90IGluZGV4Qmlhc09mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0FycmF5LCBt
X2luZGV4Qmlhcyk7IH0KICAgICB9OwogCiAgICAgaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6OmNy
ZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNp
Z25lZCBpbml0aWFsTGVuZ3RoKQpAQCAtMzMwLDYgKzM0MSwzMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgcmV0dXJuIGk7CiAgICAgfQogCi19IC8vIG5hbWVzcGFjZSBKU0MKKy8vIFRoZSBk
ZWZpbml0aW9uIG9mIE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEggaXMgZGVwZW5kYW50IG9uIHRo
ZSBkZWZpbml0aW9uIHN0b3JhZ2VTaXplCisvLyBmdW5jdGlvbiBiZWxvdyAtIHRoZSBNQVhfU1RP
UkFHRV9WRUNUT1JfTEVOR1RIIGxpbWl0IGlzIGRlZmluZWQgc3VjaCB0aGF0IHRoZSBzdG9yYWdl
CisvLyBzaXplIGNhbGN1bGF0aW9uIGNhbm5vdCBvdmVyZmxvdy4gIChzaXplb2YoQXJyYXlTdG9y
YWdlKSAtIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSArCisvLyAodmVjdG9yTGVuZ3Ro
ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpIG11c3QgYmUgPD0gMHhGRkZGRkZGRlUg
KHdoaWNoIGlzIG1heGltdW0gdmFsdWUgb2Ygc2l6ZV90KS4KKyNkZWZpbmUgTUFYX1NUT1JBR0Vf
VkVDVE9SX0xFTkdUSCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKDB4RkZGRkZGRkZVIC0gKHNpemVv
ZihBcnJheVN0b3JhZ2UpIC0gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpKSAvIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKQorCisvLyBUaGVzZSB2YWx1ZXMgaGF2ZSB0byBiZSBt
YWNyb3MgdG8gYmUgdXNlZCBpbiBtYXgoKSBhbmQgbWluKCkgd2l0aG91dCBpbnRyb2R1Y2luZwor
Ly8gYSBQSUMgYnJhbmNoIGluIE1hY2gtTyBiaW5hcmllcywgc2VlIDxyZGFyOi8vcHJvYmxlbS81
OTcxMzkxPi4KKyNkZWZpbmUgTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCAxMDAwMFUKKyNkZWZpbmUg
TUFYX1NUT1JBR0VfVkVDVE9SX0lOREVYIChNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIIC0gMSkK
KyAgICBpbmxpbmUgc2l6ZV90IEpTQXJyYXk6OnN0b3JhZ2VTaXplKHVuc2lnbmVkIHZlY3Rvckxl
bmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2ZWN0b3JMZW5ndGggPD0gTUFYX1NUT1JBR0Vf
VkVDVE9SX0xFTkdUSCk7CisgICAgCisgICAgICAgIC8vIE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5H
VEggaXMgZGVmaW5lZCBzdWNoIHRoYXQgcHJvdmlkZWQgKHZlY3Rvckxlbmd0aCA8PSBNQVhfU1RP
UkFHRV9WRUNUT1JfTEVOR1RIKQorICAgICAgICAvLyAtIGFzIGFzc2VydGVkIGFib3ZlIC0gdGhl
IGZvbGxvd2luZyBjYWxjdWxhdGlvbiBjYW5ub3Qgb3ZlcmZsb3cuCisgICAgICAgIHNpemVfdCBz
aXplID0gKHNpemVvZihBcnJheVN0b3JhZ2UpIC0gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
PikpICsgKHZlY3Rvckxlbmd0aCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKTsKKyAg
ICAgICAgLy8gQXNzZXJ0aW9uIHRvIGRldGVjdCBpbnRlZ2VyIG92ZXJmbG93IGluIHByZXZpb3Vz
IGNhbGN1bGF0aW9uIChzaG91bGQgbm90IGJlIHBvc3NpYmxlLCBwcm92aWRlZCB0aGF0CisgICAg
ICAgIC8vIE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEggaXMgY29ycmVjdGx5IGRlZmluZWQpLgor
ICAgICAgICBBU1NFUlQoKChzaXplIC0gKHNpemVvZihBcnJheVN0b3JhZ2UpIC0gc2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPikpKSAvIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pID09
IHZlY3Rvckxlbmd0aCkgJiYgKHNpemUgPj0gKHNpemVvZihBcnJheVN0b3JhZ2UpIC0gc2l6ZW9m
KFdyaXRlQmFycmllcjxVbmtub3duPikpKSk7CisgICAgCisgICAgICAgIHJldHVybiBzaXplOwor
ICAgIH0KKyAgICAKKyAgICB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTQXJyYXlf
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>127886</attachid>
            <date>2012-02-20 18:22:32 -0800</date>
            <delta_ts>2012-02-20 18:22:32 -0800</delta_ts>
            <desc>Bencher results</desc>
            <filename>ToT_JitAlloc_SunSpiderV8Kraken_Marks-Mac-Pro_20120220_1748_benchReport.txt</filename>
            <type>text/plain</type>
            <size>7251</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyLCBWOCwgYW5kIEtyYWtlbiBvbiBNYXJrcy1N
YWMtUHJvIChNYWNQcm81LDEpLgoKVk1zIHRlc3RlZDoKIlRvVCIgYXQgL1ZvbHVtZXMvRGF0YS9X
ZWJLaXQtdHJ1ZS1jbGVhbi9XZWJLaXRCdWlsZC9SZWxlYXNlL2pzYwoiSml0QWxsb2MiIGF0IC9W
b2x1bWVzL0RhdGEvV2ViS2l0LWppdGFsbG9jL1dlYktpdEJ1aWxkL1JlbGVhc2UvanNjCgpDb2xs
ZWN0ZWQgMTAwIHNhbXBsZXMgcGVyIGJlbmNobWFyay9WTSwgd2l0aCAxMCBWTSBpbnZvY2F0aW9u
cyBwZXIgYmVuY2htYXJrLiBFbWl0dGVkIGEgY2FsbCB0byBnYygpIGJldHdlZW4Kc2FtcGxlIG1l
YXN1cmVtZW50cy4gVXNlZCAxIGJlbmNobWFyayBpdGVyYXRpb24gcGVyIFZNIGludm9jYXRpb24g
Zm9yIHdhcm0tdXAuIFVzZWQgdGhlIGpzYy1zcGVjaWZpYwpwcmVjaXNlVGltZSgpIGZ1bmN0aW9u
IHRvIGdldCBtaWNyb3NlY29uZC1sZXZlbCB0aW1pbmcuIFJlcG9ydGluZyBiZW5jaG1hcmsgZXhl
Y3V0aW9uIHRpbWVzIHdpdGggOTUlIGNvbmZpZGVuY2UKaW50ZXJ2YWxzIGluIG1pbGxpc2Vjb25k
cy4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9UICAg
ICAgICAgICAgICAgICAgIEppdEFsbG9jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgClN1blNwaWRlcjoKICAgM2QtY3ViZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NS44NTMyKy0wLjAyMDYgICAgICAgICAgNS44MjM0Ky0wLjAyNDkgICAgICAgCiAgIDNkLW1vcnBo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNjcwNystMC4wMzMyICAgICEgICAgIDku
NzQyNCstMC4wMzc3ICAgICAgICEgZGVmaW5pdGVseSAxLjAwNzR4IHNsb3dlcgogICAzZC1yYXl0
cmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Ljg3NzQrLTAuMDMxNCAgICBeICAgICA3
Ljc3ODMrLTAuMDEyNSAgICAgICBeIGRlZmluaXRlbHkgMS4wMTI3eCBmYXN0ZXIKICAgYWNjZXNz
LWJpbmFyeS10cmVlcyAgICAgICAgICAgICAgICAgICAgMS43MTEwKy0wLjAwOTcgICAgICAgICAg
MS43MDYxKy0wLjAwNzIgICAgICAgCiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAgICAgICAgICAgICAg
ICAgICAgIDcuNDAwNistMC4wMTk3ICAgICAgICAgIDcuMzk4NystMC4wMTYwICAgICAgIAogICBh
Y2Nlc3MtbmJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjg3OTUrLTAuMDA3MyAgICAg
ICAgICAzLjg3NzgrLTAuMDA4OCAgICAgICAKICAgYWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgMy40ODM5Ky0wLjAxOTQgICAgICAgICAgMy40ODA2Ky0wLjAxNDYgICAgICAg
CiAgIGJpdG9wcy0zYml0LWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgIDEuMjkzNSstMC4wMDM1
ICAgICEgICAgIDEuMzA5NCstMC4wMDc5ICAgICAgICEgZGVmaW5pdGVseSAxLjAxMjN4IHNsb3dl
cgogICBiaXRvcHMtYml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICA1LjMxNzYrLTAuMDE3
MCAgICAgICAgICA1LjMwMjArLTAuMDExNiAgICAgICAKICAgYml0b3BzLWJpdHdpc2UtYW5kICAg
ICAgICAgICAgICAgICAgICAgMy4zMzg5Ky0wLjAxMzEgICAgICAgICAgMy4zMjE2Ky0wLjAwODUg
ICAgICAgCiAgIGJpdG9wcy1uc2lldmUtYml0cyAgICAgICAgICAgICAgICAgICAgIDUuNzE3NSst
MC4wMTQ4ICAgICAgICAgIDUuNzA1NistMC4wMTA1ICAgICAgIAogICBjb250cm9sZmxvdy1yZWN1
cnNpdmUgICAgICAgICAgICAgICAgICAyLjMyNjkrLTAuMDA0NSAgICA/ICAgICAyLjMzNjgrLTAu
MDA2NyAgICAgICA/CiAgIGNyeXB0by1hZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcu
NDgxOCstMC4wMzk5ICAgIF4gICAgIDcuMzcyNSstMC4wMTg0ICAgICAgIF4gZGVmaW5pdGVseSAx
LjAxNDh4IGZhc3RlcgogICBjcnlwdG8tbWQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjY1OTArLTAuMDEwNCAgICAgICAgICAyLjY1MzYrLTAuMDA4NCAgICAgICAKICAgY3J5cHRvLXNo
YTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4zMjQ3Ky0wLjAwNDIgICAgPyAgICAgMi4z
MzQ1Ky0wLjAwODEgICAgICAgPwogICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAgICAgICAgICAgICAg
ICAgIDEwLjg3NDcrLTAuMDQ5NSAgICAgICAgIDEwLjg0NDIrLTAuMDY1NSAgICAgICAKICAgZGF0
ZS1mb3JtYXQteHBhcmIgICAgICAgICAgICAgICAgICAgICAxMC4yMzUzKy0wLjE0NTEgICAgICAg
ICAxMC4wNDM2Ky0wLjA2MDQgICAgICAgICBtaWdodCBiZSAxLjAxOTF4IGZhc3RlcgogICBtYXRo
LWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjAwMzQrLTAuMDk4MiAgICAgICAg
ICA3Ljk3MDArLTAuMDk4OCAgICAgICAKICAgbWF0aC1wYXJ0aWFsLXN1bXMgICAgICAgICAgICAg
ICAgICAgICAxMC45MDc3Ky0wLjA4NDkgICAgXiAgICAxMC42NjA2Ky0wLjAyMDIgICAgICAgXiBk
ZWZpbml0ZWx5IDEuMDIzMnggZmFzdGVyCiAgIG1hdGgtc3BlY3RyYWwtbm9ybSAgICAgICAgICAg
ICAgICAgICAgIDIuNjgwNCstMC4wMDk1ICAgICAgICAgIDIuNjY3MSstMC4wMDU1ICAgICAgIAog
ICByZWdleHAtZG5hICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjA5NjkrLTAuMDUzMSAg
ICAgICAgICA5LjAyMTgrLTAuMDMxNiAgICAgICAKICAgc3RyaW5nLWJhc2U2NCAgICAgICAgICAg
ICAgICAgICAgICAgICAgNC40MDQ0Ky0wLjAxMDAgICAgPyAgICAgNC40Mjk5Ky0wLjAxNzggICAg
ICAgPwogICBzdHJpbmctZmFzdGEgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjMyMjQrLTAu
MDE3NiAgICA/ICAgICA3LjM2NTUrLTAuMDMyNiAgICAgICA/CiAgIHN0cmluZy10YWdjbG91ZCAg
ICAgICAgICAgICAgICAgICAgICAgMTIuODkxMistMC4wNDA2ICAgICAgICAgMTIuODgxNystMC4w
MjQxICAgICAgIAogICBzdHJpbmctdW5wYWNrLWNvZGUgICAgICAgICAgICAgICAgICAgIDIxLjE4
MDYrLTAuMDU4MSAgICA/ICAgIDIxLjE4MTcrLTAuMDQ5NSAgICAgICA/CiAgIHN0cmluZy12YWxp
ZGF0ZS1pbnB1dCAgICAgICAgICAgICAgICAgIDUuNzI3MSstMC4wMTg1ICAgICEgICAgIDUuODE1
NCstMC4wMzkwICAgICAgICEgZGVmaW5pdGVseSAxLjAxNTR4IHNsb3dlcgoKICAgPGFyaXRobWV0
aWM+ICogICAgICAgICAgICAgICAgICAgICAgICAgNi42NzkyKy0wLjAxMTYgICAgXiAgICAgNi42
NTQ4Ky0wLjAwODQgICAgICAgXiBkZWZpbml0ZWx5IDEuMDAzN3ggZmFzdGVyCiAgIDxnZW9tZXRy
aWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNDMwOCstMC4wMDc3ICAgICAgICAgIDUu
NDE5NCstMC4wMDU5ICAgICAgICAgbWlnaHQgYmUgMS4wMDIxeCBmYXN0ZXIKICAgPGhhcm1vbmlj
PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4zMTQ4Ky0wLjAwNTQgICAgPyAgICAgNC4z
MTU4Ky0wLjAwNTAgICAgICAgPyBtaWdodCBiZSAxLjAwMDJ4IHNsb3dlcgoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAgICAg
Sml0QWxsb2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKVjg6CiAgIGNyeXB0
byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzUuNDk4NCstMC4wODU0ICAgID8gICAg
NzUuNjAwNistMC4xMjg4ICAgICAgID8KICAgZGVsdGFibHVlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE2NC44NTA0Ky0wLjQ2MDEgICAgICAgIDE2NC4yODUyKy0wLjMxODkgICAgICAgCiAg
IGVhcmxleS1ib3llciAgICAgICAgICAgICAgICAgICAgICAgICAgOTUuODQ3MCstMC42MzA2ICAg
ID8gICAgOTUuOTYyOCstMC42MjcyICAgICAgID8KICAgcmF5dHJhY2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1My4wNTk4Ky0wLjE4NDQgICAgXiAgICA1Mi41OTQ0Ky0wLjIwOTQgICAg
ICAgXiBkZWZpbml0ZWx5IDEuMDA4OHggZmFzdGVyCiAgIHJlZ2V4cCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOTkuMDgwMSstMC4xMjYyICAgICAgICAgOTguNzUwMistMC4yMDkwICAg
ICAgIAogICByaWNoYXJkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQzLjI4ODMrLTAu
MjM3NiAgICA/ICAgMTQzLjc1ODErLTAuMzM0OCAgICAgICA/CiAgIHNwbGF5ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNjQuMjUxMSstMC4yMTM0ICAgICAgICAgNjQuMjE4NystMC4x
MTA2ICAgICAgIAoKICAgPGFyaXRobWV0aWM+ICAgICAgICAgICAgICAgICAgICAgICAgICA5OS40
MTA3Ky0wLjEyODcgICAgICAgICA5OS4zMTAwKy0wLjEyMjIgICAgICAgICBtaWdodCBiZSAxLjAw
MTB4IGZhc3RlcgogICA8Z2VvbWV0cmljPiAqICAgICAgICAgICAgICAgICAgICAgICAgIDkyLjQ0
MjIrLTAuMTI3NyAgICAgICAgIDkyLjMwNzArLTAuMTE4NSAgICAgICAgIG1pZ2h0IGJlIDEuMDAx
NXggZmFzdGVyCiAgIDxoYXJtb25pYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgODYuMTU4
NystMC4xMzY3ICAgICAgICAgODUuOTcxOCstMC4xMTk0ICAgICAgICAgbWlnaHQgYmUgMS4wMDIy
eCBmYXN0ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VG9UICAgICAgICAgICAgICAgICAgIEppdEFsbG9jICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCktyYWtlbjoKICAgYWktYXN0YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDgyMS41NDgxKy0zLjE3ODkgICAgXiAgIDgwNS44OTYzKy0zLjY1OTMgICAgICAgXiBkZWZpbml0
ZWx5IDEuMDE5NHggZmFzdGVyCiAgIGF1ZGlvLWJlYXQtZGV0ZWN0aW9uICAgICAgICAgICAgICAg
ICAxOTIuNjAzOSstMC42MzM0ICAgICAgICAxOTIuNTg1NystMC42MDM4ICAgICAgIAogICBhdWRp
by1kZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjg0LjY2MzIrLTIuNDQ5NSAgICAgICAg
MjgyLjY4NzQrLTAuODg1NyAgICAgICAKICAgYXVkaW8tZmZ0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDExOC4wNDY2Ky0wLjMxNTAgICAgXiAgIDExNy41MDc3Ky0wLjE5MzQgICAgICAgXiBk
ZWZpbml0ZWx5IDEuMDA0NnggZmFzdGVyCiAgIGF1ZGlvLW9zY2lsbGF0b3IgICAgICAgICAgICAg
ICAgICAgICAzMDMuNTgxMSstMC42ODM0ICAgICEgICAzMDYuOTU4MistMC45NTQwICAgICAgICEg
ZGVmaW5pdGVseSAxLjAxMTF4IHNsb3dlcgogICBpbWFnaW5nLWRhcmtyb29tICAgICAgICAgICAg
ICAgICAgICAgMjg0LjY0OTErLTEuNjQyNSAgICAgICAgMjg0LjA5OTkrLTEuNjQ2MSAgICAgICAK
ICAgaW1hZ2luZy1kZXNhdHVyYXRlICAgICAgICAgICAgICAgICAgIDIzNy44MDcwKy0wLjI1MjIg
ICAgICAgIDIzNy43NjU4Ky0wLjIzNzQgICAgICAgCiAgIGltYWdpbmctZ2F1c3NpYW4tYmx1ciAg
ICAgICAgICAgICAgICA0NTcuMDE3OCstMC43MjQ0ICAgID8gICA0NTcuMTc5NSstMC42NzMyICAg
ICAgID8KICAganNvbi1wYXJzZS1maW5hbmNpYWwgICAgICAgICAgICAgICAgICA2My41NDY4Ky0w
LjA3MTUgICAgISAgICA2NC4zMTExKy0wLjE1NzUgICAgICAgISBkZWZpbml0ZWx5IDEuMDEyMHgg
c2xvd2VyCiAgIGpzb24tc3RyaW5naWZ5LXRpbmRlcmJveCAgICAgICAgICAgICAgNzcuODQ1NSst
MC4yOTkzICAgIF4gICAgNzcuMTEwMistMC4xOTg0ICAgICAgIF4gZGVmaW5pdGVseSAxLjAwOTV4
IGZhc3RlcgogICBzdGFuZm9yZC1jcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgMTA2LjUxNzAr
LTAuMTg1MSAgICAgICAgMTA2LjE4NDUrLTAuMjMwMyAgICAgICAKICAgc3RhbmZvcmQtY3J5cHRv
LWNjbSAgICAgICAgICAgICAgICAgIDEwNC4yNTkyKy0wLjMyNjkgICAgXiAgIDEwMy4xNTc0Ky0w
LjM1OTkgICAgICAgXiBkZWZpbml0ZWx5IDEuMDEwN3ggZmFzdGVyCiAgIHN0YW5mb3JkLWNyeXB0
by1wYmtkZjIgICAgICAgICAgICAgICAyMTAuNDg5MCstMC42ODg0ICAgIF4gICAyMDMuMDY1OCst
MC4zODExICAgICAgIF4gZGVmaW5pdGVseSAxLjAzNjZ4IGZhc3RlcgogICBzdGFuZm9yZC1jcnlw
dG8tc2hhMjU2LWl0ZXJhdGl2ZSAgICAgIDkzLjAxMjMrLTAuMjcxNiAgICA/ICAgIDkzLjUwNzkr
LTAuMjM3OSAgICAgICA/CgogICA8YXJpdGhtZXRpYz4gKiAgICAgICAgICAgICAgICAgICAgICAg
MjM5LjY4NDgrLTAuMzYwMCAgICBeICAgMjM4LjAwMTIrLTAuMjk3NCAgICAgICBeIGRlZmluaXRl
bHkgMS4wMDcxeCBmYXN0ZXIKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAg
IDE4NC42NTYxKy0wLjE4NzIgICAgXiAgIDE4My44MzEwKy0wLjE0OTUgICAgICAgXiBkZWZpbml0
ZWx5IDEuMDA0NXggZmFzdGVyCiAgIDxoYXJtb25pYz4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAxNDcuODY1NCstMC4xMjE1ICAgIF4gICAxNDcuNDk5NCstMC4xMzQ4ICAgICAgIF4gZGVmaW5p
dGVseSAxLjAwMjV4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAgICAgSml0QWxsb2MgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKQWxsIGJlbmNobWFya3M6CiAgIDxhcml0aG1ldGljPiAgICAg
ICAgICAgICAgICAgICAgICAgICAgODkuODk2MistMC4xMTY3ICAgIF4gICAgODkuMzY2MistMC4w
OTkzICAgICAgIF4gZGVmaW5pdGVseSAxLjAwNTl4IGZhc3RlcgogICA8Z2VvbWV0cmljPiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIzLjY4MDcrLTAuMDI0OCAgICBeICAgIDIzLjYxNjYrLTAu
MDE5OCAgICAgICBeIGRlZmluaXRlbHkgMS4wMDI3eCBmYXN0ZXIKICAgPGhhcm1vbmljPiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNy41Nzg2Ky0wLjAwOTQgICAgPyAgICAgNy41Nzk3Ky0w
LjAwODYgICAgICAgPyBtaWdodCBiZSAxLjAwMDF4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAgICAgSml0QWxs
b2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKR2VvbWVhbiBvZiBwcmVmZXJy
ZWQgbWVhbnM6CiAgIDxzY2FsZWQtcmVzdWx0PiAgICAgICAgICAgICAgICAgICAgICAgNTIuODk0
MCstMC4wNjE0ICAgIF4gICAgNTIuNjgwMCstMC4wNDk2ICAgICAgIF4gZGVmaW5pdGVseSAxLjAw
NDF4IGZhc3RlcgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128051</attachid>
            <date>2012-02-21 15:01:42 -0800</date>
            <delta_ts>2012-02-25 19:51:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78612-20120221150141.patch</filename>
            <type>text/plain</type>
            <size>18916</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MzJlYzcxNzhjOWQ0NzY3YzI1NzlmNWY4ODJiYTA0M2NlMDc3NzlmLi43NGZhZjk3MzY3YWM0MTVh
MGQwN2FiOWEwNGFlODQwZWFmZDQxMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxMi0wMi0yMSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBmYXN0IHBhdGggZm9yIG9wX25ld19hcnJheSBp
biB0aGUgYmFzZWxpbmUgSklUCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03ODYxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogaGVhcC9Db3BpZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKENvcGllZEFsbG9j
YXRvcik6IEZyaWVuZGVkIHRoZSBKSVQgdG8gYWxsb3cgYWNjZXNzIHRvIG1fY3VycmVudE9mZnNl
dC4KKyAgICAgICAgKiBoZWFwL0NvcGllZFNwYWNlLmg6CisgICAgICAgIChDb3BpZWRTcGFjZSk6
IEZyaWVuZGVkIHRoZSBKSVQgdG8gYWxsb3cgYWNjZXNzIHRvIGlzT3ZlcnNpemUuCisgICAgICAg
IChKU0M6OkNvcGllZFNwYWNlOjphbGxvY2F0b3IpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzdG9yYWdlQWxsb2NhdG9yKTogQWRkZWQgYSBnZXR0ZXIgZm9y
IHRoZSBDb3BpZWRBbGxvY2F0b3IgY2xhc3Mgc28gdGhlIEpJVAorICAgICAgICBjYW4gdXNlIGl0
IGZvciBzaW1wbGUgYWxsb2NhdGlvbiBpLmUuIHdoZW4gd2UgY2FuIGp1c3QgYnVtcCB0aGUgb2Zm
c2V0IHdpdGhvdXQgaGF2aW5nIHRvIAorICAgICAgICBkbyBhbnl0aGluZyBlbHNlLgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKTogQWRkZWQgbmV3IHNsb3cgY2FzZSBmb3Igb3BfbmV3X2FycmF5IGZvciB3aGVuCisgICAg
ICAgIHdlIGhhdmUgdG8gYmFpbCBvdXQgYmVjYXVzZSB0aGUgZmFzdCBhbGxvY2F0aW9uIHBhdGgg
ZmFpbHMgZm9yIHdoYXRldmVyIHJlYXNvbi4KKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAg
IChKSVQpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKTogQWRkZWQgdXRpbGl0eSBmdW5jdGlvbiB0
aGF0IGFsbG93cyBvYmplY3RzIHRvIAorICAgICAgICBhbGxvY2F0ZSBnZW5lcmljIGJhY2tpbmcg
c3RvcmVzLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgZW1pdEFsbG9jYXRlSlNBcnJheS4KKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNBcnJheSk6IEFk
ZGVkIHV0aWxpdHkgZnVuY3Rpb24gdGhhdCBhbGxvd3MgdGhlIGNsaWVudCB0byAKKyAgICAgICAg
bW9yZSBlYXNpbHkgYWxsb2NhdGUgSlNBcnJheXMuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSBl
bWl0X29wX25ld19hcnJheSBhbmQgSSBleHBlY3QgCisgICAgICAgIGl0IHdpbGwgYWxzbyBiZSB1
c2VkIGZvciBlbWl0X29wX25ld19hcnJheV9idWZmZXIuCisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KTogQ2hhbmdlZCB0
byBkbyBpbmxpbmUgYWxsb2NhdGlvbiBvZiBKU0FycmF5cy4gU3RpbGwgZG9lcyAKKyAgICAgICAg
YSBzdHViIGNhbGwgZm9yIG92ZXJzaXplIGFycmF5cy4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmV3X2FycmF5KTogTmV3IHNsb3cgcGF0aCB0aGF0IGp1
c3QgYmFpbHMgb3V0IHRvIGEgc3R1YiBjYWxsIGlmIHdlIAorICAgICAgICBmYWlsIGluIGFueSB3
YXkgb24gdGhlIGZhc3QgcGF0aC4KKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDogQWRkZWQgbG90cyBvZiBv
ZmZzZXQgZnVuY3Rpb25zIGZvciBhbGwgdGhlIGZpZWxkcyB0aGF0IHdlIG5lZWQgdG8gCisgICAg
ICAgIGluaXRpYWxpemUgaW4gdGhlIEpJVC4KKyAgICAgICAgKEFycmF5U3RvcmFnZSk6CisgICAg
ICAgIChKU0M6OkFycmF5U3RvcmFnZTo6bGVuZ3RoT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6QXJy
YXlTdG9yYWdlOjpudW1WYWx1ZXNJblZlY3Rvck9mZnNldCk6CisgICAgICAgIChKU0M6OkFycmF5
U3RvcmFnZTo6YWxsb2NCYXNlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6QXJyYXlTdG9yYWdlOjp2
ZWN0b3JPZmZzZXQpOgorICAgICAgICAoSlNBcnJheSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OnNwYXJzZVZhbHVlTWFwT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c3ViY2xhc3NE
YXRhT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6aW5kZXhCaWFzT2Zmc2V0KToKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnN0b3JhZ2VTaXplKTogTW92ZWQg
dGhpcyBmdW5jdGlvbiBmcm9tIGJlaW5nIGEgc3RhdGljIGZ1bmN0aW9uIGluIHRoZSBjcHAgZmls
ZQorICAgICAgICB0byBiZWluZyBhIHN0YXRpYyBmdW5jdGlvbiBpbiB0aGUgSlNBcnJheSBjbGFz
cy4gVGhpcyBtb3ZlIGFsbG93cyB0aGUgSklUIHRvIGNhbGwgaXQgdG8gCisgICAgICAgIHNlZSB3
aGF0IHNpemUgaXQgc2hvdWxkIGFsbG9jYXRlLgorCiAyMDEyLTAyLTIxICBBZGFtIFJvYmVuICA8
YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsIG91dCByMTA4MzA5LCByMTA4MzIzLCBh
bmQgcjEwODMyNgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVk
QWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRBbGxvY2F0b3Iu
aAppbmRleCAwMTRhMGNmNWU1ODE0N2U3ZTc5YmY4NmJjMTY2OTAwYmMxNjZjYzI3Li41OWJmMmMw
NWM4NTdmYmMwZjZmYWU4NWZiMmUwODFiN2IxYWRkNDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db3BpZWRBbGxvY2F0b3IuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIENvcGllZEFsbG9jYXRvciB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsK
IHB1YmxpYzoKICAgICBDb3BpZWRBbGxvY2F0b3IoKTsKICAgICB2b2lkKiBhbGxvY2F0ZShzaXpl
X3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2Uu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmgKaW5kZXggMjg1ZTJi
OWEyMTJiY2U3NWVhZjE4YWQxZjFlM2FiNzY1OTViYWVlNS4uZThmYTgwMDU1OTBjODM2MjM5MzNm
NjQwOTA4YTJlYjE0M2QyY2Y3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29waWVkU3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRT
cGFjZS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIEhlYXBCbG9jazsKIAogY2xhc3MgQ29waWVk
U3BhY2UgewogICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKKyAgICBmcmllbmQgY2xhc3Mg
SklUOwogcHVibGljOgogICAgIENvcGllZFNwYWNlKEhlYXAqKTsKICAgICB2b2lkIGluaXQoKTsK
QEAgLTUzLDYgKzU0LDggQEAgcHVibGljOgogICAgIENoZWNrZWRCb29sZWFuIHRyeUFsbG9jYXRl
KHNpemVfdCwgdm9pZCoqKTsKICAgICBDaGVja2VkQm9vbGVhbiB0cnlSZWFsbG9jYXRlKHZvaWQq
Kiwgc2l6ZV90LCBzaXplX3QpOwogICAgIAorICAgIENvcGllZEFsbG9jYXRvciYgYWxsb2NhdG9y
KCkgeyByZXR1cm4gbV9hbGxvY2F0b3I7IH0KKwogICAgIHZvaWQgc3RhcnRlZENvcHlpbmcoKTsK
ICAgICB2b2lkIGRvbmVDb3B5aW5nKCk7CiAgICAgYm9vbCBpc0luQ29weVBoYXNlKCkgeyByZXR1
cm4gbV9pbkNvcHlpbmdQaGFzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDI1
MGYzZWYzNzgyMjM4MmIzYTZiYWJmODhhOWNiMTZhOGU1OGE0ZGMuLmM2ZmNjMGNkMDIzZjVmMGQ5
MjA2ZDBiZjMyMGVlMzZiN2VkODg2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAg
LTk3LDYgKzk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBNYXJrZWRB
bGxvY2F0b3ImIGFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKHNpemVfdCBieXRl
cykgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5hbGxvY2F0b3JGb3IoYnl0ZXMpOyB9CiAgICAgICAg
IE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yT2JqZWN0V2l0aERlc3RydWN0b3Ioc2l6ZV90
IGJ5dGVzKSB7IHJldHVybiBtX29iamVjdFNwYWNlLmRlc3RydWN0b3JBbGxvY2F0b3JGb3IoYnl0
ZXMpOyB9CisgICAgICAgIENvcGllZEFsbG9jYXRvciYgc3RvcmFnZUFsbG9jYXRvcigpIHsgcmV0
dXJuIG1fc3RvcmFnZVNwYWNlLmFsbG9jYXRvcigpOyB9CiAgICAgICAgIENoZWNrZWRCb29sZWFu
IHRyeUFsbG9jYXRlU3RvcmFnZShzaXplX3QsIHZvaWQqKik7CiAgICAgICAgIENoZWNrZWRCb29s
ZWFuIHRyeVJlYWxsb2NhdGVTdG9yYWdlKHZvaWQqKiwgc2l6ZV90LCBzaXplX3QpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZjNmODMzYWUwN2FhZTE4MGFhYjMzNDQwOGIwNGNi
ODRhYjU0ZjBjYy4uOWUzZTU5NjI0MGQ4NWIyOWE2NmNkMTg0NzgxMTJlMjI3MzllMmZiMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNDc3LDYgKzQ3Nyw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9u
ZWdhdGUpCiAjZW5kaWYKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX25lcSkKKyAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX25ld19hcnJheSkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9uZXdf
ZnVuYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX25ld19mdW5jX2V4cCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCmluZGV4IGEyYmM0MjcyYTdkNjhlMmU1OGNiMmY5YWE2NWE3Y2UxMGVk
MjQ0ZjUuLjdlZDFkOTY5ZDRhMzM3NmU5MjI5NjY5MjViNzVkODJmYmRkZjZhMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaApAQCAtMzM2LDggKzMzNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIFJlZ2lzdGVySUQgdmFs
dWUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgV3JpdGVCYXJyaWVyTW9kZSwgV3JpdGVCYXJyaWVyVXNl
S2luZCk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlLCBib29sIGRlc3Ry
dWN0b3IsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IHZvaWQgZW1pdEFsbG9jYXRlQmFzaWNKU09i
amVjdChTdHJ1Y3R1cmVUeXBlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdl
UHRyKTsKKyAgICAgICAgdm9pZCBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2Uoc2l6ZV90LCBSZWdp
c3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKTsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gdm9pZCBlbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KFQgc3RydWN0dXJlLCBS
ZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKTsKICAgICAgICAgdm9pZCBl
bWl0QWxsb2NhdGVKU0Z1bmN0aW9uKEZ1bmN0aW9uRXhlY3V0YWJsZSosIFJlZ2lzdGVySUQgc2Nv
cGVDaGFpbiwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CisgICAg
ICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNBcnJheSh1bnNpZ25lZCB2YWx1ZXNSZWdpc3RlciwgdW5z
aWduZWQgbGVuZ3RoLCBSZWdpc3RlcklEIGNlbGxSZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVJl
c3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKTsKICAgICAgICAgCiAjaWYgRU5BQkxFKFZBTFVF
X1BST0ZJTEVSKQogICAgICAgICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdmFsdWUgdG8gcHJv
ZmlsZSBpcyBpbiByZWdUMCBhbmQgdGhhdCByZWdUMyBpcyBhdmFpbGFibGUgZm9yCkBAIC05NTcs
NyArOTU5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdXJz
aGlmdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfZnVu
Y19leHAoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0K
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZXdfYXJyYXkoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIAogICAgICAgICB2b2lkIGVtaXRS
aWdodFNoaWZ0KEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsKICAgICAgICAgdm9pZCBl
bWl0UmlnaHRTaGlmdFNsb3dDYXNlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lTWV0aG9kcy5oCmluZGV4IDM2NjQzZDA1MTE2MzQ4MmY2NzBiNTM0YTRjM2Jl
NzFlZmIwM2MxOTAuLjAxNDRiMDE0MzI1ZGVjZjI4ZGY5YTc3NWU5N2M3NTgxYTMwMmI3M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCkBAIC00NTQs
NiArNDU0LDgzIEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNGdW5jdGlvbihGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFJlZ2lzdGVyCiAjZW5kaWYKIH0KIAoraW5saW5l
IHZvaWQgSklUOjplbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2Uoc2l6ZV90IHNpemUsIFJlZ2lzdGVy
SUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpCit7CisgICAgQ29waWVkQWxsb2NhdG9y
KiBhbGxvY2F0b3IgPSAmbV9nbG9iYWxEYXRhLT5oZWFwLnN0b3JhZ2VBbGxvY2F0b3IoKTsKKwor
ICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGNoZWNrIGZvciB3cmFwLWFyb3VuZC4KKyAgICAvLyBD
aGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYWxsb2NhdGlvbiB3aWxsIGZpdCBpbiB0aGUgY3Vy
cmVudCBibG9jay4KKyAgICBsb2FkUHRyKCZhbGxvY2F0b3ItPm1fY3VycmVudE9mZnNldCwgcmVz
dWx0KTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemUpLCByZXN1bHQpOworICAgIGxvYWRQ
dHIoJmFsbG9jYXRvci0+bV9jdXJyZW50QmxvY2ssIHN0b3JhZ2VQdHIpOworICAgIGFkZFB0cihU
cnVzdGVkSW1tMzIoSGVhcEJsb2NrOjpzX2Jsb2NrU2l6ZSksIHN0b3JhZ2VQdHIpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cihBYm92ZU9yRXF1YWwsIHJlc3VsdCwgc3RvcmFnZVB0cikpOwor
CisgICAgLy8gTG9hZCB0aGUgb3JpZ2luYWwgb2Zmc2V0LgorICAgIGxvYWRQdHIoJmFsbG9jYXRv
ci0+bV9jdXJyZW50T2Zmc2V0LCByZXN1bHQpOworCisgICAgLy8gQnVtcCB0aGUgcG9pbnRlciBm
b3J3YXJkLgorICAgIG1vdmUocmVzdWx0LCBzdG9yYWdlUHRyKTsKKyAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKHNpemUpLCBzdG9yYWdlUHRyKTsKKyAgICBzdG9yZVB0cihzdG9yYWdlUHRyLCAmYWxs
b2NhdG9yLT5tX2N1cnJlbnRPZmZzZXQpOworfQorCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxv
Y2F0ZUpTQXJyYXkodW5zaWduZWQgdmFsdWVzUmVnaXN0ZXIsIHVuc2lnbmVkIGxlbmd0aCwgUmVn
aXN0ZXJJRCBjZWxsUmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VSZXN1bHQsIFJlZ2lzdGVySUQg
c3RvcmFnZVB0cikKK3sKKyAgICB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0gc3RkOjptYXgobGVu
Z3RoLCA0VSk7CisgICAgc2l6ZV90IGluaXRpYWxTdG9yYWdlID0gSlNBcnJheTo6c3RvcmFnZVNp
emUoaW5pdGlhbExlbmd0aCk7CisKKyAgICAvLyBBbGxvY2F0ZSB0aGUgY2VsbCBmb3IgdGhlIGFy
cmF5LgorICAgIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNBcnJheSwgZmFsc2U+KFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZSgpKSwg
Y2VsbFJlc3VsdCwgc3RvcmFnZVB0cik7CisKKyAgICAvLyBBbGxvY2F0ZSB0aGUgYmFja2luZyBz
dG9yZSBmb3IgdGhlIGFycmF5LgorICAgIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShpbml0aWFs
U3RvcmFnZSwgc3RvcmFnZVJlc3VsdCwgc3RvcmFnZVB0cik7CisKKyAgICAvLyBTdG9yZSBhbGwg
dGhlIG5lY2Vzc2FyeSBpbmZvIGluIHRoZSBBcnJheVN0b3JhZ2UuCisgICAgc3RvcmVQdHIoc3Rv
cmFnZVJlc3VsdCwgQWRkcmVzcyhzdG9yYWdlUmVzdWx0LCBBcnJheVN0b3JhZ2U6OmFsbG9jQmFz
ZU9mZnNldCgpKSk7CisgICAgc3RvcmUzMihJbW0zMihsZW5ndGgpLCBBZGRyZXNzKHN0b3JhZ2VS
ZXN1bHQsIEFycmF5U3RvcmFnZTo6bGVuZ3RoT2Zmc2V0KCkpKTsKKyAgICBzdG9yZTMyKEltbTMy
KGxlbmd0aCksIEFkZHJlc3Moc3RvcmFnZVJlc3VsdCwgQXJyYXlTdG9yYWdlOjpudW1WYWx1ZXNJ
blZlY3Rvck9mZnNldCgpKSk7CisKKyAgICAvLyBTdG9yZSB0aGUgbmV3bHkgYWxsb2NhdGVkIEFy
cmF5U3RvcmFnZS4KKyAgICBzdG9yZVB0cihzdG9yYWdlUmVzdWx0LCBBZGRyZXNzKGNlbGxSZXN1
bHQsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSkpOworCisgICAgLy8gU3RvcmUgdGhlIHZlY3Rv
ciBsZW5ndGggYW5kIGluZGV4IGJpYXMuCisgICAgc3RvcmUzMihJbW0zMihpbml0aWFsTGVuZ3Ro
KSwgQWRkcmVzcyhjZWxsUmVzdWx0LCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpOwor
ICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKGNlbGxSZXN1bHQsIEpTQXJyYXk6
OmluZGV4Qmlhc09mZnNldCgpKSk7CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSBzdWJjbGFzcyBk
YXRhIGFuZCB0aGUgc3BhcnNlIHZhbHVlIG1hcC4KKyAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRy
KDApLCBBZGRyZXNzKGNlbGxSZXN1bHQsIEpTQXJyYXk6OnN1YmNsYXNzRGF0YU9mZnNldCgpKSk7
CisgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhjZWxsUmVzdWx0LCBKU0Fy
cmF5OjpzcGFyc2VWYWx1ZU1hcE9mZnNldCgpKSk7CisKKyAgICAgICAgLy8gU3RvcmUgdGhlIHZh
bHVlcyB3ZSBoYXZlLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhjYWxsRnJhbWVS
ZWdpc3RlciwgKHZhbHVlc1JlZ2lzdGVyICsgaSkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgc3RvcmFn
ZVB0cik7CisgICAgICAgIHN0b3JlUHRyKHN0b3JhZ2VQdHIsIEFkZHJlc3Moc3RvcmFnZVJlc3Vs
dCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSArIHNpemVvZihXcml0ZUJhcnJpZXI8VW5r
bm93bj4pICogaSkpOworI2Vsc2UKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxGcmFtZVJl
Z2lzdGVyLCAodmFsdWVzUmVnaXN0ZXIgKyBpKSAqIHNpemVvZihSZWdpc3RlcikpLCBzdG9yYWdl
UHRyKTsKKyAgICAgICAgc3RvcmVQdHIoc3RvcmFnZVB0ciwgQWRkcmVzcyhzdG9yYWdlUmVzdWx0
LCBBcnJheVN0b3JhZ2U6OnZlY3Rvck9mZnNldCgpICsgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtu
b3duPikgKiBpKSk7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwg
KHZhbHVlc1JlZ2lzdGVyICsgaSkgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9mKHVpbnQzMl90
KSksIHN0b3JhZ2VQdHIpOworICAgICAgICBzdG9yZVB0cihzdG9yYWdlUHRyLCBBZGRyZXNzKHN0
b3JhZ2VSZXN1bHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkgKyBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KSAqIGkgKyBzaXplb2YodWludDMyX3QpKSk7CisjZW5kaWYKKyAgICB9
CisKKyAgICAvLyBaZXJvIG91dCB0aGUgcmVtYWluaW5nIHNsb3RzLgorICAgIGZvciAodW5zaWdu
ZWQgaSA9IGxlbmd0aDsgaSA8IGluaXRpYWxMZW5ndGg7IGkrKykgeworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3Moc3RvcmFnZVJl
c3VsdCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSArIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pICogaSkpOworI2Vsc2UKKyNpZiBDUFUoQklHX0VORElBTikKKyAgICAgICAgc3Rv
cmUzMihUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFn
KSksIEFkZHJlc3Moc3RvcmFnZVJlc3VsdCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSAr
IHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICogaSkpOworICAgICAgICBzdG9yZVB0cihU
cnVzdGVkUHRyKDApLCBBZGRyZXNzKHN0b3JhZ2VSZXN1bHQsIEFycmF5U3RvcmFnZTo6dmVjdG9y
T2Zmc2V0KCkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSAqIGkgKyBzaXplb2YodWlu
dDMyX3QpKSk7CisjZWxzZQorICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBBZGRy
ZXNzKHN0b3JhZ2VSZXN1bHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkgKyBzaXplb2Yo
V3JpdGVCYXJyaWVyPFVua25vd24+KSAqIGkpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1t
MzIoc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSksIEFkZHJlc3Moc3Rv
cmFnZVJlc3VsdCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSArIHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pICogaSArIHNpemVvZih1aW50MzJfdCkpKTsKKyNlbmRpZgorI2VuZGlm
CisgICAgfQorfQorCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogaW5saW5lIHZvaWQgSklU
OjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYmM1M2QyY2Q4MWRi
OGE1NTU3MTg2ZDFiZDk5ODVmNDA3YmI4YTI3MS4uZjZhZDYxNWE2MDk5OTZlZmI4MjcyMjA2YWZm
ZjE5NDY2ZDU4MTk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAKICNpbmNsdWRlICJBcmd1bWVu
dHMuaCIKKyNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCIKICNpbmNsdWRlICJI
ZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lTWV0aG9kcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJD
YWxsLmgiCkBAIC0xNjQ1LDYgKzE2NDYsMjggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19m
dW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKIAog
dm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CisgICAgaW50IGxlbmd0aCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7
CisgICAgaWYgKENvcGllZFNwYWNlOjppc092ZXJzaXplKEpTQXJyYXk6OnN0b3JhZ2VTaXplKGxl
bmd0aCkpKSB7CisgICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZXdf
YXJyYXkpOworICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMy
KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgc3R1YkNhbGwuY2Fs
bChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBp
bnQgdmFsdWVzID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKworICAgIGVtaXRB
bGxvY2F0ZUpTQXJyYXkodmFsdWVzLCBsZW5ndGgsIHJlZ1QwLCByZWdUMSwgcmVnVDIpOworICAg
IGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7IAorfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
bmV3X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAgaW50IGxlbmd0aCA9IGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgaWYgKENvcGllZFNwYWNlOjppc092ZXJzaXplKEpT
QXJyYXk6OnN0b3JhZ2VTaXplKGxlbmd0aCkpKQorICAgICAgICByZXR1cm47CisgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOyAvLyBOb3QgZW5vdWdoIHNwYWNlIGluIE1hcmtlZFNwYWNlIGZvciBjZWxs
LgorICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gTm90IGVub3VnaCBzcGFjZSBpbiBDb3BpZWRT
cGFjZSBmb3Igc3RvcmFnZS4KICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bf
bmV3X2FycmF5KTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcAppbmRleCBlZTE3ZjNjZmNiZWMyMzhlYzdiNTgyNjUzYTYyZTQyN2Fi
MzAyMDAzLi5jMTIzNGE1NmIwMzk2MDI5YTQ4OWQ0MGYzZWMzMGEzZjJhMWZjNDdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMTA0LDIwICsxMDQsNiBA
QCBjb25zdCBDbGFzc0luZm8gSlNBcnJheTo6c19pbmZvID0geyJBcnJheSIsICZKU05vbkZpbmFs
T2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRQogLy8gVGhpcyB2YWx1ZSBpcyBjYXBwZWQgYnkgdGhl
IGNvbnN0YW50IEZJUlNUX1ZFQ1RPUl9HUk9XIGRlZmluZWQgYWJvdmUuCiBzdGF0aWMgdW5zaWdu
ZWQgbGFzdEFycmF5U2l6ZSA9IDA7CiAKLXN0YXRpYyBpbmxpbmUgc2l6ZV90IHN0b3JhZ2VTaXpl
KHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKLXsKLSAgICBBU1NFUlQodmVjdG9yTGVuZ3RoIDw9IE1B
WF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgpOwotCi0gICAgLy8gTUFYX1NUT1JBR0VfVkVDVE9SX0xF
TkdUSCBpcyBkZWZpbmVkIHN1Y2ggdGhhdCBwcm92aWRlZCAodmVjdG9yTGVuZ3RoIDw9IE1BWF9T
VE9SQUdFX1ZFQ1RPUl9MRU5HVEgpCi0gICAgLy8gLSBhcyBhc3NlcnRlZCBhYm92ZSAtIHRoZSBm
b2xsb3dpbmcgY2FsY3VsYXRpb24gY2Fubm90IG92ZXJmbG93LgotICAgIHNpemVfdCBzaXplID0g
KHNpemVvZihBcnJheVN0b3JhZ2UpIC0gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpICsg
KHZlY3Rvckxlbmd0aCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKTsKLSAgICAvLyBB
c3NlcnRpb24gdG8gZGV0ZWN0IGludGVnZXIgb3ZlcmZsb3cgaW4gcHJldmlvdXMgY2FsY3VsYXRp
b24gKHNob3VsZCBub3QgYmUgcG9zc2libGUsIHByb3ZpZGVkIHRoYXQKLSAgICAvLyBNQVhfU1RP
UkFHRV9WRUNUT1JfTEVOR1RIIGlzIGNvcnJlY3RseSBkZWZpbmVkKS4KLSAgICBBU1NFUlQoKChz
aXplIC0gKHNpemVvZihBcnJheVN0b3JhZ2UpIC0gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
PikpKSAvIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pID09IHZlY3Rvckxlbmd0aCkgJiYg
KHNpemUgPj0gKHNpemVvZihBcnJheVN0b3JhZ2UpIC0gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtu
b3duPikpKSk7Ci0KLSAgICByZXR1cm4gc2l6ZTsKLX0KLQogc3RhdGljIGlubGluZSBib29sIGlz
RGVuc2VFbm91Z2hGb3JWZWN0b3IodW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBudW1WYWx1ZXMp
CiB7CiAgICAgcmV0dXJuIGxlbmd0aCA8PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYIHx8IGxlbmd0
aCAvIG1pbkRlbnNpdHlNdWx0aXBsaWVyIDw9IG51bVZhbHVlczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCBkZjc1MDg0MTdkODAyYjhjMDMyNTcwNGRjN2IyZmM2
YzYxNzE2ZTVjLi5kM2ExMzZiOWI1YmI2NDEwNmEwYTQ5MDIyOTNhZDI2YWMzZWJhYjg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC0xMTksMTAgKzExOSwxNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2luQ29tcGFjdEluaXRpYWxpemF0aW9u
OwogI2VuZGlmCiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX3ZlY3RvclsxXTsKKwor
ICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGxlbmd0aE9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKTsgfQorICAgICAgICBzdGF0aWMgcHRyZGlm
Zl90IG51bVZhbHVlc0luVmVjdG9yT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFy
cmF5U3RvcmFnZSwgbV9udW1WYWx1ZXNJblZlY3Rvcik7IH0KKyAgICAgICAgc3RhdGljIHB0cmRp
ZmZfdCBhbGxvY0Jhc2VPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9y
YWdlLCBtX2FsbG9jQmFzZSk7IH0KKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCB2ZWN0b3JPZmZz
ZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3Rvcik7IH0K
ICAgICB9OwogCiAgICAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
IAogICAgIHByb3RlY3RlZDoKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgSlNB
cnJheShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKQEAgLTI1OCw2ICsyNjQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRTdWJjbGFzc0Rh
dGEodm9pZCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgc3RhdGljIHNpemVfdCBzdG9yYWdl
U2l6ZSh1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogICAgICAgICBib29sIGlzTGVuZ3RoV3JpdGFi
bGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBt
X3NwYXJzZVZhbHVlTWFwOwpAQCAtMjg5LDYgKzI5NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgLy8gRklYTUU6IE1heWJlIFNwYXJzZUFycmF5VmFsdWVNYXAgc2hvdWxkIGJlIHB1dCBp
bnRvIGl0cyBvd24gSlNDZWxsPwogICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKiBtX3NwYXJz
ZVZhbHVlTWFwOwogICAgICAgICB2b2lkKiBtX3N1YmNsYXNzRGF0YTsgLy8gQSBKU0FycmF5IHN1
YmNsYXNzIGNhbiB1c2UgdGhpcyB0byBmaWxsIHRoZSB2ZWN0b3IgbGF6aWx5LgorCisgICAgICAg
IHN0YXRpYyBwdHJkaWZmX3Qgc3BhcnNlVmFsdWVNYXBPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSlNBcnJheSwgbV9zcGFyc2VWYWx1ZU1hcCk7IH0KKyAgICAgICAgc3RhdGljIHB0
cmRpZmZfdCBzdWJjbGFzc0RhdGFPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNB
cnJheSwgbV9zdWJjbGFzc0RhdGEpOyB9CisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgaW5kZXhC
aWFzT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQXJyYXksIG1faW5kZXhCaWFz
KTsgfQogICAgIH07CiAKICAgICBpbmxpbmUgSlNBcnJheSogSlNBcnJheTo6Y3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRp
YWxMZW5ndGgpCkBAIC0zMzAsNiArMzQxLDMwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBy
ZXR1cm4gaTsKICAgICB9CiAKLX0gLy8gbmFtZXNwYWNlIEpTQworLy8gVGhlIGRlZmluaXRpb24g
b2YgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCBpcyBkZXBlbmRhbnQgb24gdGhlIGRlZmluaXRp
b24gc3RvcmFnZVNpemUKKy8vIGZ1bmN0aW9uIGJlbG93IC0gdGhlIE1BWF9TVE9SQUdFX1ZFQ1RP
Ul9MRU5HVEggbGltaXQgaXMgZGVmaW5lZCBzdWNoIHRoYXQgdGhlIHN0b3JhZ2UKKy8vIHNpemUg
Y2FsY3VsYXRpb24gY2Fubm90IG92ZXJmbG93LiAgKHNpemVvZihBcnJheVN0b3JhZ2UpIC0gc2l6
ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpICsKKy8vICh2ZWN0b3JMZW5ndGggKiBzaXplb2Yo
V3JpdGVCYXJyaWVyPFVua25vd24+KSkgbXVzdCBiZSA8PSAweEZGRkZGRkZGVSAod2hpY2ggaXMg
bWF4aW11bSB2YWx1ZSBvZiBzaXplX3QpLgorI2RlZmluZSBNQVhfU1RPUkFHRV9WRUNUT1JfTEVO
R1RIIHN0YXRpY19jYXN0PHVuc2lnbmVkPigoMHhGRkZGRkZGRlUgLSAoc2l6ZW9mKEFycmF5U3Rv
cmFnZSkgLSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkpIC8gc2l6ZW9mKFdyaXRlQmFy
cmllcjxVbmtub3duPikpCisKKy8vIFRoZXNlIHZhbHVlcyBoYXZlIHRvIGJlIG1hY3JvcyB0byBi
ZSB1c2VkIGluIG1heCgpIGFuZCBtaW4oKSB3aXRob3V0IGludHJvZHVjaW5nCisvLyBhIFBJQyBi
cmFuY2ggaW4gTWFjaC1PIGJpbmFyaWVzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzU5NzEzOTE+Lgor
I2RlZmluZSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYIDEwMDAwVQorI2RlZmluZSBNQVhfU1RPUkFH
RV9WRUNUT1JfSU5ERVggKE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEggLSAxKQorICAgIGlubGlu
ZSBzaXplX3QgSlNBcnJheTo6c3RvcmFnZVNpemUodW5zaWduZWQgdmVjdG9yTGVuZ3RoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKHZlY3Rvckxlbmd0aCA8PSBNQVhfU1RPUkFHRV9WRUNUT1JfTEVO
R1RIKTsKKyAgICAKKyAgICAgICAgLy8gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCBpcyBkZWZp
bmVkIHN1Y2ggdGhhdCBwcm92aWRlZCAodmVjdG9yTGVuZ3RoIDw9IE1BWF9TVE9SQUdFX1ZFQ1RP
Ul9MRU5HVEgpCisgICAgICAgIC8vIC0gYXMgYXNzZXJ0ZWQgYWJvdmUgLSB0aGUgZm9sbG93aW5n
IGNhbGN1bGF0aW9uIGNhbm5vdCBvdmVyZmxvdy4KKyAgICAgICAgc2l6ZV90IHNpemUgPSAoc2l6
ZW9mKEFycmF5U3RvcmFnZSkgLSBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkgKyAodmVj
dG9yTGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpOworICAgICAgICAvLyBB
c3NlcnRpb24gdG8gZGV0ZWN0IGludGVnZXIgb3ZlcmZsb3cgaW4gcHJldmlvdXMgY2FsY3VsYXRp
b24gKHNob3VsZCBub3QgYmUgcG9zc2libGUsIHByb3ZpZGVkIHRoYXQKKyAgICAgICAgLy8gTUFY
X1NUT1JBR0VfVkVDVE9SX0xFTkdUSCBpcyBjb3JyZWN0bHkgZGVmaW5lZCkuCisgICAgICAgIEFT
U0VSVCgoKHNpemUgLSAoc2l6ZW9mKEFycmF5U3RvcmFnZSkgLSBzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KSkpIC8gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikgPT0gdmVjdG9yTGVu
Z3RoKSAmJiAoc2l6ZSA+PSAoc2l6ZW9mKEFycmF5U3RvcmFnZSkgLSBzaXplb2YoV3JpdGVCYXJy
aWVyPFVua25vd24+KSkpKTsKKyAgICAKKyAgICAgICAgcmV0dXJuIHNpemU7CisgICAgfQorICAg
IAorICAgIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNBcnJheV9oCg==
</data>
<flag name="review"
          id="131409"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>