<?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>26532</bug_id>
          
          <creation_ts>2009-06-18 22:37:22 -0700</creation_ts>
          <short_desc>Native functions do not correctly unlink from optimised callsites when they&apos;re collected</short_desc>
          <delta_ts>2009-06-19 01:02:24 -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>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>126887</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-18 22:37:22 -0700</bug_when>
    <thetext>Native functions are not correctly unlinking from optimised callsites when they&apos;re collected, which may result in a crash if a new object is subsequently allocated at the same address, and is then called at the optimised call location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126888</commentid>
    <comment_count>1</comment_count>
      <attachid>31533</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-18 23:17:55 -0700</bug_when>
    <thetext>Created attachment 31533
Fixeration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126893</commentid>
    <comment_count>2</comment_count>
      <attachid>31533</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-06-18 23:38:43 -0700</bug_when>
    <thetext>Comment on attachment 31533
Fixeration

Please to be adding ASSERTs to check code type enum is sizeof(int32_t), and add ASSERTSs to cti_op_call_JSFunction &amp; the arity check to the function is not a host function.

Also, in the ChangeLog you say &apos;Reviewed by NOBODY (OOPS!).&apos;, this should read &apos;Reviewed by Gavin &quot;Viceroy of Venezuela&quot; Barraclough.&apos;.

r+.
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126904</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-19 00:11:10 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	JavaScriptCore/ChangeLog
	M	JavaScriptCore/JavaScriptCore.exp
	M	JavaScriptCore/bytecode/CodeBlock.cpp
	M	JavaScriptCore/bytecode/CodeBlock.h
	M	JavaScriptCore/jit/JIT.cpp
	M	JavaScriptCore/jit/JITStubs.cpp
	M	JavaScriptCore/parser/Nodes.cpp
	M	JavaScriptCore/parser/Nodes.h
	M	JavaScriptCore/runtime/JSFunction.cpp
	M	JavaScriptCore/runtime/JSGlobalData.cpp
	M	JavaScriptCore/runtime/JSGlobalData.h
Committed r44844
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126911</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-06-19 01:02:24 -0700</bug_when>
    <thetext>Corresponding Windows build fix http://trac.webkit.org/changeset/44845.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31533</attachid>
            <date>2009-06-18 23:17:55 -0700</date>
            <delta_ts>2009-06-18 23:38:43 -0700</delta_ts>
            <desc>Fixeration</desc>
            <filename>gc-fix.patch</filename>
            <type>text/plain</type>
            <size>20365</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA4MDczODI4Li4yZDM0NzljIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEg
QEAKKzIwMDktMDYtMTggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjY1MzI6IE5hdGl2
ZSBmdW5jdGlvbnMgZG8gbm90IGNvcnJlY3RseSB1bmxpbmsgZnJvbSBvcHRpbWlzZWQgY2FsbHNp
dGVzIHdoZW4gdGhleSdyZSBjb2xsZWN0ZWQKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUzMj4gPHJkYXI6Ly9wcm9ibGVtLzY2MjUzODU+CisKKyAg
ICAgICAgV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBlYWNoIG5hdGl2ZSBmdW5jdGlvbiBpbnN0
YW5jZSBjb3JyZWN0bHkgdW5saW5rcyBhbnkgcmVmZXJlbmNlcyB0byBpdAorICAgICAgICB3aGVu
IGl0IGlzIGNvbGxlY3RlZC4gIEFsbG93aW5nIHRoaXMgdG8gaGFwcGVuIHJlcXVpcmVkIGEgZmV3
IGNoYW5nZXM6CisgICAgICAgICAgICAqIEV2ZXJ5IG5hdGl2ZSBmdW5jdGlvbiBuZWVkcyBhIGNv
ZGVibG9jayB0byB0cmFjayB0aGUgbGluayBpbmZvcm1hdGlvbgorICAgICAgICAgICAgKiBUbyBo
YXZlIHRoaXMgY29kZWJsb2NrLCBldmVyeSBmdW5jdGlvbiBub3cgYWxzbyBuZWVkcyBpdHMgb3du
IGZ1bmN0aW9uYm9keW5vZGUKKyAgICAgICAgICAgICAgc28gd2Ugbm8gbG9uZ2VyIGdldCB0byBo
YXZlIGEgc2luZ2xlIHNoYXJlZCBpbnN0YW5jZS4KKyAgICAgICAgICAgICogSWRlbnRpZnlpbmcg
YSBob3N0IGZ1bmN0aW9uIGlzIG5vdyBkb25lIGJ5IGxvb2tpbmcgZm9yIENvZGVCbG9jazo6Y29k
ZVR5cGUoKSA9PSBOYXRpdmVDb2RlCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpDb2RlQmxvY2spOgorICAgICAgICAgICBDb25zdHJ1Y3RvciBmb3IgTmF0aXZlQ29kZSBDb2Rl
QmxvY2sKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkZXJlZlN0cnVjdHVyZXMpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnJlZlN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnJlcGFyc2VGb3JFeGNlcHRpb25JbmZvSWZOZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6Z2V0QnlJZEV4Y2VwdGlvbkluZm9Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZnVuY3Rpb25SZWdpc3RlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25BdEJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNHbG9iYWxSZXNvbHZlSW5m
b0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldEpJVENvZGUp
OgorICAgICAgICAgICBBZGQgYXNzZXJ0aW9ucyB0byBlbnN1cmUgd2UgZG9uJ3QgdHJ5IGFuZCB1
c2UgTmF0aXZlQ29kZSBDb2RlQmxvY2tzIGFzCisgICAgICAgICAgIGEgbm9ybWFsIGNvZGVibG9j
ay4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjopOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNvdXJjZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c291cmNlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpldmFsQ29kZUNhY2hl
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToK
KyAgICAgICAgICBNb3JlIGFzc2VydGlvbnMuCisKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6bGlua0NhbGwpOgorICAgICAgICAgIFVwZGF0ZSBsb2dpYyB0byBh
bGxvdyBuYXRpdmUgZnVuY3Rpb24gY2FjaGluZworCisgICAgICAgICogaml0L0pJVFN0dWJzLmNw
cDoKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJv
ZHlOb2RlOjpjcmVhdGVOYXRpdmVUaHVuayk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5v
ZGU6OmlzSG9zdEZ1bmN0aW9uKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpKU0Z1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6fkpTRnVuY3Rpb24pOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjptYXJrKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6fkpTR2xvYmFsRGF0YSk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKwogMjAwOS0wNi0xNyAgT2xpdmVyIEh1bnQg
IDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xv
dWdoLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IDdmYjhmMDQuLjNmMmJiNDYgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTMyOSw2ICszMjksNyBAQCBfX1pOSzNKU0Mx
MkRhdGVJbnN0YW5jZTdnZXRUaW1lRVJkUmkKIF9fWk5LM0pTQzEyU3RyaW5nT2JqZWN0MTJ0b1Ro
aXNTdHJpbmdFUE5TXzlFeGVjU3RhdGVFCiBfX1pOSzNKU0MxMlN0cmluZ09iamVjdDh0b1N0cmlu
Z0VQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5LM0pTQzE0SlNHbG9iYWxPYmplY3QxNGlzRHluYW1pY1Nj
b3BlRXYKK19fWk5LM0pTQzE2RnVuY3Rpb25Cb2R5Tm9kZTE0aXNIb3N0RnVuY3Rpb25FdgogX19a
TkszSlNDMTZJbnRlcm5hbEZ1bmN0aW9uOWNsYXNzSW5mb0V2CiBfX1pOSzNKU0MxNkpTVmFyaWFi
bGVPYmplY3QxNmlzVmFyaWFibGVPYmplY3RFdgogX19aTkszSlNDMTZKU1ZhcmlhYmxlT2JqZWN0
MjFnZXRQcm9wZXJ0eUF0dHJpYnV0ZXNFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJF
UmoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGQyYjEyMmEuLmQ3Nzdm
NzMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysr
IGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTI2NSw2ICsxMjY1
LDI4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wU3RhdGlzdGljcygpCiAjZW5kaWYKIH0KIAorQ29k
ZUJsb2NrOjpDb2RlQmxvY2soU2NvcGVOb2RlKiBvd25lck5vZGUpCisgICAgOiBtX251bUNhbGxl
ZVJlZ2lzdGVycygwKQorICAgICwgbV9udW1Db25zdGFudHMoMCkKKyAgICAsIG1fbnVtVmFycygw
KQorICAgICwgbV9udW1QYXJhbWV0ZXJzKDApCisgICAgLCBtX293bmVyTm9kZShvd25lck5vZGUp
CisgICAgLCBtX2dsb2JhbERhdGEoMCkKKyNpZm5kZWYgTkRFQlVHCisgICAgLCBtX2luc3RydWN0
aW9uQ291bnQoMCkKKyNlbmRpZgorICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWluKGZhbHNlKQor
ICAgICwgbV91c2VzRXZhbChmYWxzZSkKKyAgICAsIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9u
KGZhbHNlKQorICAgICwgbV9jb2RlVHlwZShOYXRpdmVDb2RlKQorICAgICwgbV9zb3VyY2UoMCkK
KyAgICAsIG1fc291cmNlT2Zmc2V0KDApCisgICAgLCBtX2V4Y2VwdGlvbkluZm8oMCkKK3sKKyNp
ZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUworICAgIGxpdmVDb2RlQmxvY2tTZXQuYWRkKHRo
aXMpOworI2VuZGlmCit9CiAKIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjb3BlTm9kZSogb3duZXJO
b2RlLCBDb2RlVHlwZSBjb2RlVHlwZSwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNl
UHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCkKICAgICA6IG1fbnVtQ2FsbGVlUmVnaXN0
ZXJzKDApCkBAIC0xMzQyLDYgKzEzNjQsNyBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbGVy
cygpCiAKIHZvaWQgQ29kZUJsb2NrOjpkZXJlZlN0cnVjdHVyZXMoSW5zdHJ1Y3Rpb24qIHZQQykg
Y29uc3QKIHsKKyAgICBBU1NFUlQobV9jb2RlVHlwZSAhPSBOYXRpdmVDb2RlKTsKICAgICBJbnRl
cnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOwogCiAgICAg
aWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9p
ZF9zZWxmKSkgewpAQCAtMTM4Nyw2ICsxNDEwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmRlcmVmU3Ry
dWN0dXJlcyhJbnN0cnVjdGlvbiogdlBDKSBjb25zdAogCiB2b2lkIENvZGVCbG9jazo6cmVmU3Ry
dWN0dXJlcyhJbnN0cnVjdGlvbiogdlBDKSBjb25zdAogeworICAgIEFTU0VSVChtX2NvZGVUeXBl
ICE9IE5hdGl2ZUNvZGUpOwogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFs
RGF0YS0+aW50ZXJwcmV0ZXI7CiAKICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJl
dGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX3NlbGYpKSB7CkBAIC0xNDQxLDYgKzE0NjUsNyBA
QCB2b2lkIENvZGVCbG9jazo6bWFyaygpCiAKIHZvaWQgQ29kZUJsb2NrOjpyZXBhcnNlRm9yRXhj
ZXB0aW9uSW5mb0lmTmVjZXNzYXJ5KENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIEFTU0VS
VChtX2NvZGVUeXBlICE9IE5hdGl2ZUNvZGUpOwogICAgIGlmIChtX2V4Y2VwdGlvbkluZm8pCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTUxMSw2ICsxNTM2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJl
cGFyc2VGb3JFeGNlcHRpb25JbmZvSWZOZWNlc3NhcnkoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAK
IEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCkKIHsKKyAgICBBU1NFUlQobV9jb2RlVHlwZSAhPSBOYXRpdmVDb2Rl
KTsKICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgPCBtX2luc3RydWN0aW9uQ291bnQpOwogCiAg
ICAgaWYgKCFtX3JhcmVEYXRhKQpAQCAtMTUyOSw2ICsxNTU1LDcgQEAgSGFuZGxlckluZm8qIENv
ZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KQogCiBpbnQgQ29kZUJsb2NrOjpsaW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogeworICAgIEFTU0VSVChtX2Nv
ZGVUeXBlICE9IE5hdGl2ZUNvZGUpOwogICAgIEFTU0VSVChieXRlY29kZU9mZnNldCA8IG1faW5z
dHJ1Y3Rpb25Db3VudCk7CiAKICAgICByZXBhcnNlRm9yRXhjZXB0aW9uSW5mb0lmTmVjZXNzYXJ5
KGNhbGxGcmFtZSk7CkBAIC0xNTU0LDYgKzE1ODEsNyBAQCBpbnQgQ29kZUJsb2NrOjpsaW5lTnVt
YmVyRm9yQnl0ZWNvZGVPZmZzZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2lnbmVkIGJ5dGVj
bwogCiBpbnQgQ29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldChDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGludCYgZGl2b3QsIGlu
dCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0KQogeworICAgIEFTU0VSVChtX2NvZGVUeXBl
ICE9IE5hdGl2ZUNvZGUpOwogICAgIEFTU0VSVChieXRlY29kZU9mZnNldCA8IG1faW5zdHJ1Y3Rp
b25Db3VudCk7CiAKICAgICByZXBhcnNlRm9yRXhjZXB0aW9uSW5mb0lmTmVjZXNzYXJ5KGNhbGxG
cmFtZSk7CkBAIC0xNTkzLDYgKzE2MjEsNyBAQCBpbnQgQ29kZUJsb2NrOjpleHByZXNzaW9uUmFu
Z2VGb3JCeXRlY29kZU9mZnNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgYgogCiBi
b29sIENvZGVCbG9jazo6Z2V0QnlJZEV4Y2VwdGlvbkluZm9Gb3JCeXRlY29kZU9mZnNldChDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIE9wY29kZUlEJiBvcGNv
ZGVJRCkKIHsKKyAgICBBU1NFUlQobV9jb2RlVHlwZSAhPSBOYXRpdmVDb2RlKTsKICAgICBBU1NF
UlQoYnl0ZWNvZGVPZmZzZXQgPCBtX2luc3RydWN0aW9uQ291bnQpOwogCiAgICAgcmVwYXJzZUZv
ckV4Y2VwdGlvbkluZm9JZk5lY2Vzc2FyeShjYWxsRnJhbWUpOwpAQCAtMTYyMSw2ICsxNjUwLDcg
QEAgYm9vbCBDb2RlQmxvY2s6OmdldEJ5SWRFeGNlcHRpb25JbmZvRm9yQnl0ZWNvZGVPZmZzZXQo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2kKICNpZiBFTkFCTEUoSklUKQogYm9vbCBDb2RlQmxv
Y2s6OmZ1bmN0aW9uUmVnaXN0ZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgaW50JiBmdW5jdGlvblJlZ2lzdGVySW5kZXgpCiB7CisgICAgQVNTRVJUKG1fY29kZVR5
cGUgIT0gTmF0aXZlQ29kZSk7CiAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0IDwgbV9pbnN0cnVj
dGlvbkNvdW50KTsKIAogICAgIGlmICghbV9yYXJlRGF0YSB8fCAhbV9yYXJlRGF0YS0+bV9mdW5j
dGlvblJlZ2lzdGVySW5mb3Muc2l6ZSgpKQpAQCAtMTY0Nyw2ICsxNjc3LDcgQEAgYm9vbCBDb2Rl
QmxvY2s6OmZ1bmN0aW9uUmVnaXN0ZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgaW50JgogI2lmICFFTkFCTEUoSklUKQogYm9vbCBDb2RlQmxvY2s6Omhhc0dsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbkF0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQpCiB7CisgICAgQVNTRVJUKG1fY29kZVR5cGUgIT0gTmF0aXZlQ29kZSk7CiAgICAgaWYgKG1f
Z2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMTY2Nyw2ICsxNjk4LDcgQEAgYm9vbCBDb2RlQmxvY2s6Omhhc0dsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbkF0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmYKICNlbHNl
CiBib29sIENvZGVCbG9jazo6aGFzR2xvYmFsUmVzb2x2ZUluZm9BdEJ5dGVjb2RlT2Zmc2V0KHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogeworICAgIEFTU0VSVChtX2NvZGVUeXBlICE9IE5hdGl2
ZUNvZGUpOwogICAgIGlmIChtX2dsb2JhbFJlc29sdmVJbmZvcy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMTY4OSw2ICsxNzIxLDcgQEAgYm9vbCBDb2RlQmxvY2s6Omhh
c0dsb2JhbFJlc29sdmVJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCkKICNpZiBFTkFCTEUoSklUKQogdm9pZCBDb2RlQmxvY2s6OnNldEpJVENvZGUoSklUQ29kZSBq
aXRDb2RlKQogeworICAgIEFTU0VSVChtX2NvZGVUeXBlICE9IE5hdGl2ZUNvZGUpOyAKICAgICBv
d25lck5vZGUoKS0+c2V0SklUQ29kZShqaXRDb2RlKTsKICNpZiAhRU5BQkxFKE9QQ09ERV9TQU1Q
TElORykKICAgICBpZiAoIUJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZDRjNmE2OC4uOTQ5MDFmOSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBFeGVjU3RhdGU7CiAKLSAgICBlbnVtIENvZGVUeXBlIHsgR2xv
YmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSB9OworICAgIGVudW0gQ29kZVR5cGUgeyBH
bG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVuY3Rpb25Db2RlLCBOYXRpdmVDb2RlIH07CiAKICAgICBz
dGF0aWMgQUxXQVlTX0lOTElORSBpbnQgbWlzc2luZ1RoaXNPYmplY3RNYXJrZXIoKSB7IHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOyB9CiAKQEAgLTIxNyw2ICsyMTcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sgewogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogICAgIHB1YmxpYzoKKyAgICAgICAgQ29kZUJsb2NrKFNjb3BlTm9kZSogb3du
ZXJOb2RlKTsKICAgICAgICAgQ29kZUJsb2NrKFNjb3BlTm9kZSogb3duZXJOb2RlLCBDb2RlVHlw
ZSwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4sIHVuc2lnbmVkIHNvdXJjZU9mZnNldCk7CiAg
ICAgICAgIH5Db2RlQmxvY2soKTsKIApAQCAtMzM5LDggKzM0MCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlw
ZTsgfQogCi0gICAgICAgIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZS5nZXQoKTsgfQotICAgICAgICB1bnNpZ25lZCBzb3VyY2VPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZU9mZnNldDsgfQorICAgICAgICBTb3VyY2VQcm92aWRlciogc291cmNl
KCkgY29uc3QgeyBBU1NFUlQobV9jb2RlVHlwZSAhPSBOYXRpdmVDb2RlKTsgcmV0dXJuIG1fc291
cmNlLmdldCgpOyB9CisgICAgICAgIHVuc2lnbmVkIHNvdXJjZU9mZnNldCgpIGNvbnN0IHsgQVNT
RVJUKG1fY29kZVR5cGUgIT0gTmF0aXZlQ29kZSk7IHJldHVybiBtX3NvdXJjZU9mZnNldDsgfQog
CiAgICAgICAgIHNpemVfdCBudW1iZXJPZkp1bXBUYXJnZXRzKCkgY29uc3QgeyByZXR1cm4gbV9q
dW1wVGFyZ2V0cy5zaXplKCk7IH0KICAgICAgICAgdm9pZCBhZGRKdW1wVGFyZ2V0KHVuc2lnbmVk
IGp1bXBUYXJnZXQpIHsgbV9qdW1wVGFyZ2V0cy5hcHBlbmQoanVtcFRhcmdldCk7IH0KQEAgLTQz
Miw3ICs0MzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBTeW1ib2xUYWJsZSYgc3lt
Ym9sVGFibGUoKSB7IHJldHVybiBtX3N5bWJvbFRhYmxlOyB9CiAKLSAgICAgICAgRXZhbENvZGVD
YWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1
cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9CisgICAgICAgIEV2YWxDb2RlQ2FjaGUm
IGV2YWxDb2RlQ2FjaGUoKSB7IEFTU0VSVChtX2NvZGVUeXBlICE9IE5hdGl2ZUNvZGUpOyBjcmVh
dGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V2YWxDb2RlQ2Fj
aGU7IH0KIAogICAgICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKQEAgLTQ1Niw2ICs0NTcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9jb2RlVHlwZSAhPSBOYXRpdmVD
b2RlKTsgCiAgICAgICAgICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgICAgICAgICAgbV9y
YXJlRGF0YS5zZXQobmV3IFJhcmVEYXRhKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA3
YWI2MDI1Li40YTBkMzJhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNTUzLDkgKzU1Myw2IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhSZWZQdHI8RXhlY3V0YWJs
ZVBvb2w+KiBleGVjdXRhYmxlCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBGSUVMRF9PRkZT
RVQoSlNGdW5jdGlvbiwgbV9ib2R5KSksIHJlZ1QzKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDMsIEZJRUxEX09GRlNFVChGdW5jdGlvbkJvZHlOb2RlLCBtX2NvZGUpKSwgcmVnVDApOwogICAg
IEp1bXAgaGFzQ29kZUJsb2NrMSA9IGJyYW5jaFRlc3RQdHIoTm9uWmVybywgcmVnVDApOwotICAg
IC8vIElmIG1fY29kZSBpcyBudWxsIGFuZCBtX2ppdENvZGUgaXMgbm90LCB0aGVuIHdlIGhhdmUg
YSBuYXRpdmUgZnVuY3Rpb24sIHNvIGFyaXR5IGlzIGlycmVsZXZhbnQKLSAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDMsIEZJRUxEX09GRlNFVChGdW5jdGlvbkJvZHlOb2RlLCBtX2ppdENvZGUpKSwg
cmVnVDApOwotICAgIEp1bXAgaXNOYXRpdmVGdW5jMSA9IGJyYW5jaFRlc3RQdHIoTm9uWmVybywg
cmVnVDApOwogICAgIHByZXZlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChyZWdUMyk7CiAgICAg
cmVzdG9yZUFyZ3VtZW50UmVmZXJlbmNlKCk7CiAgICAgQ2FsbCBjYWxsSlNGdW5jdGlvbjEgPSBj
YWxsKCk7CkBAIC01NjQsNiArNTYxLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTWFj
aGluZVRyYW1wb2xpbmVzKFJlZlB0cjxFeGVjdXRhYmxlUG9vbD4qIGV4ZWN1dGFibGUKICAgICBy
ZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihyZWdUMyk7CiAgICAgaGFzQ29kZUJsb2Nr
MS5saW5rKHRoaXMpOwogCisgICAgSnVtcCBpc05hdGl2ZUZ1bmMxID0gYnJhbmNoMzIoRXF1YWws
IEFkZHJlc3MocmVnVDAsIEZJRUxEX09GRlNFVChDb2RlQmxvY2ssIG1fY29kZVR5cGUpKSwgSW1t
MzIoTmF0aXZlQ29kZSkpOworCiAgICAgLy8gQ2hlY2sgYXJnQ291bnQgbWF0Y2hlcyBjYWxsZWUg
YXJpdHkuCiAgICAgSnVtcCBhcml0eUNoZWNrT2theTEgPSBicmFuY2gzMihFcXVhbCwgQWRkcmVz
cyhyZWdUMCwgRklFTERfT0ZGU0VUKENvZGVCbG9jaywgbV9udW1QYXJhbWV0ZXJzKSksIHJlZ1Qx
KTsKICAgICBwcmV2ZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwocmVnVDMpOwpAQCAtNTk1LDkg
KzU5NCw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhS
ZWZQdHI8RXhlY3V0YWJsZVBvb2w+KiBleGVjdXRhYmxlCiAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QyLCBGSUVMRF9PRkZTRVQoSlNGdW5jdGlvbiwgbV9ib2R5KSksIHJlZ1QzKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDMsIEZJRUxEX09GRlNFVChGdW5jdGlvbkJvZHlOb2RlLCBtX2NvZGUp
KSwgcmVnVDApOwogICAgIEp1bXAgaGFzQ29kZUJsb2NrMiA9IGJyYW5jaFRlc3RQdHIoTm9uWmVy
bywgcmVnVDApOwotICAgIC8vIElmIG1fY29kZSBpcyBudWxsIGFuZCBtX2ppdENvZGUgaXMgbm90
LCB0aGVuIHdlIGhhdmUgYSBuYXRpdmUgZnVuY3Rpb24sIHNvIGFyaXR5IGlzIGlycmVsZXZhbnQK
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDMsIEZJRUxEX09GRlNFVChGdW5jdGlvbkJvZHlOb2Rl
LCBtX2ppdENvZGUpKSwgcmVnVDApOwotICAgIEp1bXAgaXNOYXRpdmVGdW5jMiA9IGJyYW5jaFRl
c3RQdHIoTm9uWmVybywgcmVnVDApOwogICAgIHByZXZlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bChyZWdUMyk7CiAgICAgcmVzdG9yZUFyZ3VtZW50UmVmZXJlbmNlKCk7CiAgICAgQ2FsbCBjYWxs
SlNGdW5jdGlvbjIgPSBjYWxsKCk7CkBAIC02MDYsNiArNjAyLDggQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKFJlZlB0cjxFeGVjdXRhYmxlUG9vbD4qIGV4
ZWN1dGFibGUKICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihyZWdUMyk7CiAg
ICAgaGFzQ29kZUJsb2NrMi5saW5rKHRoaXMpOwogCisgICAgSnVtcCBpc05hdGl2ZUZ1bmMyID0g
YnJhbmNoMzIoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEZJRUxEX09GRlNFVChDb2RlQmxvY2ssIG1f
Y29kZVR5cGUpKSwgSW1tMzIoTmF0aXZlQ29kZSkpOworCiAgICAgLy8gQ2hlY2sgYXJnQ291bnQg
bWF0Y2hlcyBjYWxsZWUgYXJpdHkuCiAgICAgSnVtcCBhcml0eUNoZWNrT2theTIgPSBicmFuY2gz
MihFcXVhbCwgQWRkcmVzcyhyZWdUMCwgRklFTERfT0ZGU0VUKENvZGVCbG9jaywgbV9udW1QYXJh
bWV0ZXJzKSksIHJlZ1QxKTsKICAgICBwcmV2ZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwocmVn
VDMpOwpAQCAtNjM2LDkgKzYzNCw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hp
bmVUcmFtcG9saW5lcyhSZWZQdHI8RXhlY3V0YWJsZVBvb2w+KiBleGVjdXRhYmxlCiAgICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QyLCBGSUVMRF9PRkZTRVQoSlNGdW5jdGlvbiwgbV9ib2R5KSksIHJl
Z1QzKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDMsIEZJRUxEX09GRlNFVChGdW5jdGlvbkJv
ZHlOb2RlLCBtX2NvZGUpKSwgcmVnVDApOwogICAgIEp1bXAgaGFzQ29kZUJsb2NrMyA9IGJyYW5j
aFRlc3RQdHIoTm9uWmVybywgcmVnVDApOwotICAgIC8vIElmIG1fY29kZSBpcyBudWxsIGFuZCBt
X2ppdENvZGUgaXMgbm90LCB0aGVuIHdlIGhhdmUgYSBuYXRpdmUgZnVuY3Rpb24sIHNvIGFyaXR5
IGlzIGlycmVsZXZhbnQKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDMsIEZJRUxEX09GRlNFVChG
dW5jdGlvbkJvZHlOb2RlLCBtX2ppdENvZGUpKSwgcmVnVDApOwotICAgIEp1bXAgaXNOYXRpdmVG
dW5jMyA9IGJyYW5jaFRlc3RQdHIoTm9uWmVybywgcmVnVDApOwogICAgIHByZXZlcnZlUmV0dXJu
QWRkcmVzc0FmdGVyQ2FsbChyZWdUMyk7CiAgICAgcmVzdG9yZUFyZ3VtZW50UmVmZXJlbmNlKCk7
CiAgICAgQ2FsbCBjYWxsSlNGdW5jdGlvbjMgPSBjYWxsKCk7CkBAIC02NDcsNiArNjQyLDggQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKFJlZlB0cjxFeGVj
dXRhYmxlUG9vbD4qIGV4ZWN1dGFibGUKICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJl
dHVybihyZWdUMyk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBGSUVMRF9PRkZTRVQoSlNG
dW5jdGlvbiwgbV9ib2R5KSksIHJlZ1QzKTsgLy8gcmVsb2FkIHRoZSBmdW5jdGlvbiBib2R5IG5v
ZHksIHNvIHdlIGNhbiByZWxvYWQgdGhlIGNvZGUgcG9pbnRlci4KICAgICBoYXNDb2RlQmxvY2sz
LmxpbmsodGhpcyk7CisgICAgCisgICAgSnVtcCBpc05hdGl2ZUZ1bmMzID0gYnJhbmNoMzIoRXF1
YWwsIEFkZHJlc3MocmVnVDAsIEZJRUxEX09GRlNFVChDb2RlQmxvY2ssIG1fY29kZVR5cGUpKSwg
SW1tMzIoTmF0aXZlQ29kZSkpOwogCiAgICAgLy8gQ2hlY2sgYXJnQ291bnQgbWF0Y2hlcyBjYWxs
ZWUgYXJpdHkuCiAgICAgSnVtcCBhcml0eUNoZWNrT2theTMgPSBicmFuY2gzMihFcXVhbCwgQWRk
cmVzcyhyZWdUMCwgRklFTERfT0ZGU0VUKENvZGVCbG9jaywgbV9udW1QYXJhbWV0ZXJzKSksIHJl
Z1QxKTsKQEAgLTY2MSwxMCArNjU4LDExIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNUSU1h
Y2hpbmVUcmFtcG9saW5lcyhSZWZQdHI8RXhlY3V0YWJsZVBvb2w+KiBleGVjdXRhYmxlCiAgICAg
cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4ocmVnVDMpOwogICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMiwgRklFTERfT0ZGU0VUKEpTRnVuY3Rpb24sIG1fYm9keSkpLCByZWdUMyk7IC8v
IHJlbG9hZCB0aGUgZnVuY3Rpb24gYm9keSBub2R5LCBzbyB3ZSBjYW4gcmVsb2FkIHRoZSBjb2Rl
IHBvaW50ZXIuCiAgICAgYXJpdHlDaGVja09rYXkzLmxpbmsodGhpcyk7Ci0gICAgLy8gbG9hZCBj
dGlDb2RlIGZyb20gdGhlIG5ldyBjb2RlQmxvY2suCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qz
LCBGSUVMRF9PRkZTRVQoRnVuY3Rpb25Cb2R5Tm9kZSwgbV9qaXRDb2RlKSksIHJlZ1QwKTsKICAg
ICBpc05hdGl2ZUZ1bmMzLmxpbmsodGhpcyk7CiAKKyAgICAvLyBsb2FkIGN0aUNvZGUgZnJvbSB0
aGUgbmV3IGNvZGVCbG9jay4KKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDMsIEZJRUxEX09GRlNF
VChGdW5jdGlvbkJvZHlOb2RlLCBtX2ppdENvZGUpKSwgcmVnVDApOworICAgIAogICAgIGNvbXBp
bGVPcENhbGxJbml0aWFsaXplQ2FsbEZyYW1lKCk7CiAgICAganVtcChyZWdUMCk7CiAKQEAgLTkx
MSwxMSArOTA5LDEyIEBAIHZvaWQgSklUOjp1bmxpbmtDYWxsKENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvKQogCiB2b2lkIEpJVDo6bGlua0NhbGwoSlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxv
Y2sqIGNhbGxlZUNvZGVCbG9jaywgSklUQ29kZSYgY29kZSwgQ2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm8sIGludCBjYWxsZXJBcmdDb3VudCwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogewor
ICAgIEFTU0VSVChjYWxsZWVDb2RlQmxvY2spOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1
ZmZlcjsKIAogICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IGxpbmsgY2FsbHMgd2l0aCB0aGUgZXhh
Y3QgbnVtYmVyIG9mIGFyZ3VtZW50cy4KICAgICAvLyBJZiB0aGlzIGlzIGEgbmF0aXZlIGNhbGwg
Y2FsbGVlQ29kZUJsb2NrIGlzIG51bGwgc28gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzIGlzIHVu
aW1wb3J0YW50Ci0gICAgaWYgKCFjYWxsZWVDb2RlQmxvY2sgfHwgY2FsbGVyQXJnQ291bnQgPT0g
Y2FsbGVlQ29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMpIHsKKyAgICBpZiAoY2FsbGVyQXJnQ291
bnQgPT0gY2FsbGVlQ29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMgfHwgY2FsbGVlQ29kZUJsb2Nr
LT5jb2RlVHlwZSgpID09IE5hdGl2ZUNvZGUpIHsKICAgICAgICAgQVNTRVJUKCFjYWxsTGlua0lu
Zm8tPmlzTGlua2VkKCkpOwogICAgIAogICAgICAgICBpZiAoY2FsbGVlQ29kZUJsb2NrKQpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAKaW5kZXggN2RhODE2NS4uYWUxNTE1OCAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCkBAIC0xMjI5LDYgKzEyMjksOCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lk
Kiwgdm1fbGF6eUxpbmtDYWxsKQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAgICBp
ZiAoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSkKICAgICAgICAgY29kZUJsb2NrID0gJmNhbGxl
ZS0+Ym9keSgpLT5ieXRlY29kZShjYWxsZWUtPnNjb3BlKCkubm9kZSgpKTsKKyAgICBlbHNlCisg
ICAgICAgIGNvZGVCbG9jayA9ICZjYWxsZWUtPmJvZHkoKS0+Z2VuZXJhdGVkQnl0ZWNvZGUoKTsK
IAogICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gJnN0YWNrRnJhbWUuY2FsbEZyYW1l
LT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKS0+Z2V0Q2FsbExpbmtJbmZvKHN0YWNrRnJhbWUu
YXJnc1sxXS5yZXR1cm5BZGRyZXNzKCkpOwogICAgIEpJVDo6bGlua0NhbGwoY2FsbGVlLCBjb2Rl
QmxvY2ssIGppdENvZGUsIGNhbGxMaW5rSW5mbywgc3RhY2tGcmFtZS5hcmdzWzJdLmludDMyKCks
IHN0YWNrRnJhbWUuZ2xvYmFsRGF0YSk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCA0ZGRm
MTNhLi4wZjM5OGRjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
CisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTIwMzcsMTEgKzIwMzcs
MTcgQEAgUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVh
dGVOYXRpdmVUaHVuayhKU0dsb2JhbERhdGEqIGcKIHsKICAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5
Tm9kZT4gYm9keSA9IG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEpOwogICAgIGdsb2Jh
bERhdGEtPnBhcnNlci0+YXJlbmEoKS5yZXNldCgpOworICAgIGJvZHktPm1fY29kZS5zZXQobmV3
IENvZGVCbG9jayhib2R5LmdldCgpKSk7CiAgICAgYm9keS0+bV9qaXRDb2RlID0gSklUQ29kZShK
SVRDb2RlOjpIb3N0RnVuY3Rpb24oZ2xvYmFsRGF0YS0+aml0U3R1YnMuY3RpTmF0aXZlQ2FsbFRo
dW5rKCkpKTsKICAgICByZXR1cm4gYm9keS5yZWxlYXNlKCk7CiB9CiAjZW5kaWYKIAorYm9vbCBG
dW5jdGlvbkJvZHlOb2RlOjppc0hvc3RGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y29kZSAmJiBtX2NvZGUtPmNvZGVUeXBlKCkgPT0gTmF0aXZlQ29kZTsKK30KKwogRnVuY3Rpb25C
b2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSkKIHsKICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSk7CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCmluZGV4IGNkYTFlZTQuLjdjZGMxOWQgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CkBAIC0xNTU0LDE0ICsxNTU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gbV9jb2RlOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNv
bnN0Ci0gICAgICAgIHsKLSNpZiBFTkFCTEUoSklUKQotICAgICAgICAgICAgcmV0dXJuICEhbV9q
aXRDb2RlICYmICFtX2NvZGU7Ci0jZWxzZQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5k
aWYKLSAgICAgICAgfQorICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3Q7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKaW5kZXggZjQ1NjQ1MS4uYjVjNzIxOSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCkBAIC00OCw3ICs0OCw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0Z1bmN0aW9uOjpp
bmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6aW5mbywgMCwgMCB9CiBKU0Z1
bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVu
Y3Rpb24gZnVuYykKICAgICA6IEJhc2UoJmV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBu
YW1lKQogI2lmIEVOQUJMRShKSVQpCi0gICAgLCBtX2JvZHkoZXhlYy0+Z2xvYmFsRGF0YSgpLm5h
dGl2ZUZ1bmN0aW9uVGh1bmsoKSkKKyAgICAsIG1fYm9keShGdW5jdGlvbkJvZHlOb2RlOjpjcmVh
dGVOYXRpdmVUaHVuaygmZXhlYy0+Z2xvYmFsRGF0YSgpKSkKICNlbHNlCiAgICAgLCBtX2JvZHko
MCkKICNlbmRpZgpAQCAtNzYsMjIgKzc2LDE5IEBAIEpTRnVuY3Rpb246On5KU0Z1bmN0aW9uKCkK
ICAgICAvLyBKSVQgY29kZSBmb3Igb3RoZXIgZnVuY3Rpb25zIG1heSBoYXZlIGhhZCBjYWxscyBs
aW5rZWQgZGlyZWN0bHkgdG8gdGhlIGNvZGUgZm9yIHRoaXMgZnVuY3Rpb247IHRoZXNlIGxpbmtz
CiAgICAgLy8gYXJlIGJhc2VkIG9uIGEgY2hlY2sgZm9yIHRoZSB0aGlzIHBvaW50ZXIgdmFsdWUg
Zm9yIHRoaXMgSlNGdW5jdGlvbiAtIHdoaWNoIHdpbGwgbm8gbG9uZ2VyIGJlIHZhbGlkIG9uY2UK
ICAgICAvLyB0aGlzIG1lbW9yeSBpcyBmcmVlZCBhbmQgbWF5IGJlIHJldXNlZCAocG90ZW50aWFs
bHkgZm9yIGFub3RoZXIsIGRpZmZlcmVudCBKU0Z1bmN0aW9uKS4KLSAgICBpZiAoIWlzSG9zdEZ1
bmN0aW9uKCkpIHsKLSAgICAgICAgaWYgKG1fYm9keSAmJiBtX2JvZHktPmlzR2VuZXJhdGVkKCkp
Ci0gICAgICAgICAgICBtX2JvZHktPmdlbmVyYXRlZEJ5dGVjb2RlKCkudW5saW5rQ2FsbGVycygp
OworICAgIGlmIChtX2JvZHkgJiYgbV9ib2R5LT5pc0dlbmVyYXRlZCgpKQorICAgICAgICBtX2Jv
ZHktPmdlbmVyYXRlZEJ5dGVjb2RlKCkudW5saW5rQ2FsbGVycygpOworICAgIGlmICghaXNIb3N0
RnVuY3Rpb24oKSkKICAgICAgICAgc2NvcGVDaGFpbigpLn5TY29wZUNoYWluKCk7Ci0gICAgfQot
ICAgIAogI2VuZGlmCiB9CiAKIHZvaWQgSlNGdW5jdGlvbjo6bWFyaygpCiB7CiAgICAgQmFzZTo6
bWFyaygpOwotICAgIGlmICghaXNIb3N0RnVuY3Rpb24oKSkgewotICAgICAgICBtX2JvZHktPm1h
cmsoKTsKKyAgICBtX2JvZHktPm1hcmsoKTsKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKCkpCiAg
ICAgICAgIHNjb3BlQ2hhaW4oKS5tYXJrKCk7Ci0gICAgfQogfQogCiBDYWxsVHlwZSBKU0Z1bmN0
aW9uOjpnZXRDYWxsRGF0YShDYWxsRGF0YSYgY2FsbERhdGEpCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHAKaW5kZXggNDVmMzAwNS4uMTk1MzE2MiAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcApAQCAtMTYzLDkgKzE2Myw2IEBAIEpTR2xvYmFsRGF0
YTo6fkpTR2xvYmFsRGF0YSgpCiAgICAgcmVnRXhwVGFibGUtPmRlbGV0ZVRhYmxlKCk7CiAgICAg
cmVnRXhwQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICBzdHJpbmdUYWJsZS0+
ZGVsZXRlVGFibGUoKTsKLSNpZiBFTkFCTEUoSklUKQotICAgIGxhenlOYXRpdmVGdW5jdGlvblRo
dW5rLmNsZWFyKCk7Ci0jZW5kaWYKIAogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFi
bGUqPihhcnJheVRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+
KGRhdGVUYWJsZSkpOwpAQCAtMjI2LDE1ICsyMjMsNiBAQCBKU0dsb2JhbERhdGEqJiBKU0dsb2Jh
bERhdGE6OnNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKQogICAgIHJldHVybiBzaGFyZWRJbnN0YW5j
ZTsKIH0KIAotI2lmIEVOQUJMRShKSVQpCi0KLXZvaWQgSlNHbG9iYWxEYXRhOjpjcmVhdGVOYXRp
dmVUaHVuaygpCi17Ci0gICAgbGF6eU5hdGl2ZUZ1bmN0aW9uVGh1bmsgPSBGdW5jdGlvbkJvZHlO
b2RlOjpjcmVhdGVOYXRpdmVUaHVuayh0aGlzKTsKLX0KLQotI2VuZGlmCi0KIC8vIEZJWE1FOiBX
ZSBjYW4gYWxzbyBkZXRlY3QgZm9ybXMgbGlrZSB2MSA8IHYyID8gLTEgOiAwLCByZXZlcnNlIGNv
bXBhcmlzb24sIGV0Yy4KIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj4mIEpTR2xvYmFsRGF0YTo6
bnVtZXJpY0NvbXBhcmVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaAppbmRleCAyMWM4MDUzLi41MzBlNWUxIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTExOCwxMyArMTE4LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlcjsKICNpZiBFTkFCTEUoSklUKQog
ICAgICAgICBKSVRUaHVua3Mgaml0U3R1YnM7Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIG5h
dGl2ZUZ1bmN0aW9uVGh1bmsoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWxhenlOYXRp
dmVGdW5jdGlvblRodW5rKQotICAgICAgICAgICAgICAgIGNyZWF0ZU5hdGl2ZVRodW5rKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gbGF6eU5hdGl2ZUZ1bmN0aW9uVGh1bmsuZ2V0KCk7Ci0gICAgICAg
IH0KLSAgICAgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGxhenlOYXRpdmVGdW5jdGlvblRo
dW5rOwogI2VuZGlmCiAgICAgICAgIFRpbWVvdXRDaGVja2VyIHRpbWVvdXRDaGVja2VyOwogICAg
ICAgICBIZWFwIGhlYXA7Cg==
</data>
<flag name="review"
          id="16175"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>