<?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>7387</bug_id>
          
          <creation_ts>2006-02-20 07:19:18 -0800</creation_ts>
          <short_desc>Set up new prototype macros and avoid using #if without defined() in JSC</short_desc>
          <delta_ts>2006-03-02 07:10:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>7383</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>33489</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-20 07:19:18 -0800</bug_when>
    <thetext>we should set up new platform test macros so you can do this:

// operating system
#if PLATFORM(DARWIN)
#if PLATFORM(WIN_OS)
#if PLATFORM(POSIX)

// graphics library
#if PLATFORM(CG)
#if PLATFORM(CAIRO)

// desktop environment / toolkit
#if PLATFORM(MAC)  // (or should that be AQUA or QUARTZ?)
#if PLATFORM(KDE)
#if PLATFORM(WIN)

These would expand to defined(PLATFORM_FOO) and the PLATFORM_FOO macros would be predefined as appropriate.

could also set it up so you can do things like #if FEATURE(HAVE_STRCASECMP) or even #if HAVE(STRCASECMP)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34688</commentid>
    <comment_count>1</comment_count>
      <attachid>6797</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-03-01 18:23:24 -0800</bug_when>
    <thetext>Created attachment 6797
patch to add platform test macros</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34696</commentid>
    <comment_count>2</comment_count>
      <attachid>6797</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-01 19:48:55 -0800</bug_when>
    <thetext>Comment on attachment 6797
patch to add platform test macros

+#ifndef PLATFORM(WIN_OS)

That should be #if !

Otherwise looks fine. r=me

Please don&apos;t land the partial checkout.html change here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34726</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-02 07:10:02 -0800</bug_when>
    <thetext>Maciej landed this last night.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6797</attachid>
            <date>2006-03-01 18:23:24 -0800</date>
            <delta_ts>2006-03-01 19:48:55 -0800</delta_ts>
            <desc>patch to add platform test macros</desc>
            <filename>platform-macros.patch.txt</filename>
            <type>text/plain</type>
            <size>59597</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL29zLXdpbjMyL3N0ZGludC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL29zLXdpbjMyL3N0ZGludC5oCShyZXZpc2lvbiAxMzA3MykKKysrIEphdmFT
Y3JpcHRDb3JlL29zLXdpbjMyL3N0ZGludC5oCSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBA
QAogLyogVGhpcyBmaWxlIGVtdWxhdGVzIGVub3VnaCBvZiB1bml4J3Mgc3RkaW50Lmggb24gV2lu
ZG93cwogICAgdG8gbWFrZSBXZWJDb3JlIGNvbXBpbGUgKi8KICAgIAotI2lmbmRlZiBXSU4zMgor
I2lmbmRlZiBQTEFURk9STShXSU5fT1MpCiAjZXJyb3IgIlRoaXMgc3RkaW50LmggZmlsZSBzaG91
bGQgb25seSBiZSBjb21waWxlZCB1bmRlciBXaW5kb3dzIgogI2VuZGlmCiB0eXBlZGVmIHVuc2ln
bmVkIHNob3J0IHVpbnQxNl90OwpJbmRleDogSmF2YVNjcmlwdENvcmUva3htbGNvcmUvQXNzZXJ0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL0Fzc2VydGlvbnMu
aAkocmV2aXNpb24gMTMwNzMpCisrKyBKYXZhU2NyaXB0Q29yZS9reG1sY29yZS9Bc3NlcnRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE1ICszNSwxMSBAQAogLy8gRm9yIG5vbi1kZWJ1ZyBi
dWlsZHMsIGV2ZXJ5dGhpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KIC8vIERlZmluaW5nIGFu
eSBvZiB0aGUgc3ltYm9scyBleHBsaWNpdGx5IHByZXZlbnRzIHRoaXMgZnJvbSBoYXZpbmcgYW55
IGVmZmVjdC4KIAotI2lmICFfX0FQUExFX18KLSNkZWZpbmUgQVNTRVJUX0RJU0FCTEVEIDEgLy8g
RklYTUU6IFdlIGhhdmUgdG8gdW5kbyBhbGwgdGhlIGFzc2VydCBtYWNyb3MsIHNpbmNlIHRoZXkg
YXJlIGN1cnJlbnRseSBpbiBhIC5tbSBmaWxlIGFuZCB1c2Ugb2JqLWMuCi0jZWxzZQogI2lmZGVm
IE5ERUJVRwogI2RlZmluZSBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQgMQogI2Vsc2UKICNk
ZWZpbmUgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZBVUxUIDAKICNlbmRpZgotI2VuZGlmCiAKICNp
Zm5kZWYgQVNTRVJUX0RJU0FCTEVECiAjZGVmaW5lIEFTU0VSVF9ESVNBQkxFRCBBU1NFUlRJT05T
X0RJU0FCTEVEX0RFRkFVTFQKQEAgLTY1LDcgKzYxLDcgQEAKICNkZWZpbmUgTE9HX0RJU0FCTEVE
IEFTU0VSVElPTlNfRElTQUJMRURfREVGQVVMVAogI2VuZGlmCiAKLSNpZmRlZiBfX0dOVUNfXwor
I2lmIENPTVBJTEVSKEdDQykKICNkZWZpbmUgS1hNTENPUkVfUFJFVFRZX0ZVTkNUSU9OIF9fUFJF
VFRZX0ZVTkNUSU9OX18KICNlbHNlCiAjZGVmaW5lIEtYTUxDT1JFX1BSRVRUWV9GVU5DVElPTiBf
X0ZVTkNUSU9OX18KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL0hhc2hUYWJsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL0hhc2hUYWJsZS5oCShyZXZpc2lv
biAxMzA3MykKKysrIEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL0hhc2hUYWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAjZGVmaW5lIERV
TVBfSEFTSFRBQkxFX1NUQVRTIDAKICNkZWZpbmUgQ0hFQ0tfSEFTSFRBQkxFX0NPTlNJU1RFTkNZ
IDAKIAotI2lmIE5ERUJVRworI2lmZGVmIE5ERUJVRwogI2RlZmluZSBDSEVDS19IQVNIVEFCTEVf
SVRFUkFUT1JTIDAKICNlbHNlCiAjZGVmaW5lIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMgMQpA
QCAtMjM1LDcgKzIzNSw3IEBAIG5hbWVzcGFjZSBLWE1MQ29yZSB7CiAKICAgICB1c2luZyBzdGQ6
OnN3YXA7CiAKLSNpZiAhV0lOMzIKKyNpZiAhQ09NUElMRVIoTVNWQykKICAgICAvLyBWaXN1YWwg
QysrIGhhcyBhIHN3YXAgZm9yIHBhaXJzIGRlZmluZWQuCiAKICAgICAvLyBzd2FwIHBhaXJzIGJ5
IGNvbXBvbmVudCwgaW4gY2FzZSBvZiBwYWlyIG1lbWJlcnMgdGhhdCBzcGVjaWFsaXplIHN3YXAK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL0Fsd2F5c0lubGluZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL0Fsd2F5c0lubGluZS5oCShyZXZpc2lvbiAxMzA3
MykKKysrIEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL0Fsd2F5c0lubGluZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMCw3ICsyMCw3IEBACiAgKi8KIAogI2lmbmRlZiBBTFdBWVNfSU5MSU5FCi0jaWYg
ZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID4gMykKKyNpZiBDT01QSUxFUihHQ0MpCiAj
ZGVmaW5lIEFMV0FZU19JTkxJTkUgaW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxp
bmVfXykpCiAjZWxzZQogI2RlZmluZSBBTFdBWVNfSU5MSU5FIGlubGluZQpJbmRleDogSmF2YVNj
cmlwdENvcmUva3htbGNvcmUvVENQYWdlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva3htbGNvcmUvVENQYWdlTWFwLmgJKHJldmlzaW9uIDEzMDczKQorKysgSmF2YVNjcmlwdENv
cmUva3htbGNvcmUvVENQYWdlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDkgKzQ3LDkgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgZGVmaW5lZCBIQVZFX1NURElOVF9ICisjaWYg
SEFWRShTVERJTlRfSCkKICNpbmNsdWRlIDxzdGRpbnQuaD4KLSNlbGlmIGRlZmluZWQgSEFWRV9J
TlRUWVBFU19ICisjZWxpZiBIQVZFKElOVFRZUEVTX0gpCiAjaW5jbHVkZSA8aW50dHlwZXMuaD4K
ICNlbHNlCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9reG1s
Y29yZS9UQ1NwaW5Mb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva3htbGNvcmUv
VENTcGluTG9jay5oCShyZXZpc2lvbiAxMzA3MykKKysrIEphdmFTY3JpcHRDb3JlL2t4bWxjb3Jl
L1RDU3BpbkxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTYgKzM2LDE2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSA8dGltZS5oPiAgICAgICAvKiBGb3IgbmFub3NsZWVwKCkg
Ki8KICNpbmNsdWRlIDxzY2hlZC5oPiAgICAgIC8qIEZvciBzY2hlZF95aWVsZCgpICovCi0jaWYg
ZGVmaW5lZCBIQVZFX1NURElOVF9ICisjaWYgSEFWRShTVERJTlRfSCkKICNpbmNsdWRlIDxzdGRp
bnQuaD4KLSNlbGlmIGRlZmluZWQgSEFWRV9JTlRUWVBFU19ICisjZWxpZiBIQVZFKElOVFRZUEVT
X0gpCiAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+
CiAjZW5kaWYKICNpbmNsdWRlIDxzdGRsaWIuaD4gICAgIC8qIGZvciBhYm9ydCgpICovCiAKLSNp
ZiAoZGVmaW5lZCBfX2kzODZfXyB8fCBkZWZpbmVkIF9fcHBjX18pICYmIGRlZmluZWQgX19HTlVD
X18KKyNpZiAoUExBVEZPUk0oWDg2KSB8fCBQTEFURk9STShQUEMpKSAmJiBDT01QSUxFUihHQ0Mp
CiBzdGF0aWMgdm9pZCBUQ01hbGxvY19TbG93TG9jayh2b2xhdGlsZSB1bnNpZ25lZCBpbnQqIGxv
Y2t3b3JkKTsKIAogLy8gVGhlIGZvbGxvd2luZyBpcyBhIHN0cnVjdCBzbyB0aGF0IGl0IGNhbiBi
ZSBpbml0aWFsaXplZCBhdCBjb21waWxlIHRpbWUKQEAgLTU3LDcgKzU3LDcgQEAgc3RydWN0IFRD
TWFsbG9jX1NwaW5Mb2NrIHsKICAgICAKICAgaW5saW5lIHZvaWQgTG9jaygpIHsKICAgICBpbnQg
cjsKLSNpZiAgX19pMzg2X18KKyNpZiBQTEFURk9STShYODYpCiAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18KICAgICAgICgieGNoZ2wgJTAsICUxIgogICAgICAgIDogIj1yIihyKSwgIj1tIihwcml2
YXRlX2xvY2t3b3JkXykKQEAgLTc4LDcgKzc4LDcgQEAgc3RydWN0IFRDTWFsbG9jX1NwaW5Mb2Nr
IHsKICAgfQogCiAgIGlubGluZSB2b2lkIFVubG9jaygpIHsKLSNpZiAgX19pMzg2X18KKyNpZiBQ
TEFURk9STShYODYpCiAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18KICAgICAgICgibW92bCAkMCwg
JTAiCiAgICAgICAgOiAiPW0iKHByaXZhdGVfbG9ja3dvcmRfKQpAQCAtMTAyLDcgKzEwMiw3IEBA
IHN0YXRpYyB2b2lkIFRDTWFsbG9jX1Nsb3dMb2NrKHZvbGF0aWxlIHUKICAgc2NoZWRfeWllbGQo
KTsgICAgICAgIC8vIFlpZWxkIGltbWVkaWF0ZWx5IHNpbmNlIGZhc3QgcGF0aCBmYWlsZWQKICAg
d2hpbGUgKHRydWUpIHsKICAgICBpbnQgcjsKLSNpZiBfX2kzODZfXworI2lmIFBMQVRGT1JNKFg4
NikKICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgICAgKCJ4Y2hnbCAlMCwgJTEiCiAgICAg
ICAgOiAiPXIiKHIpLCAiPW0iKCpsb2Nrd29yZCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2t4bWxj
b3JlL0Zhc3RNYWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2t4bWxjb3Jl
L0Zhc3RNYWxsb2MuY3BwCShyZXZpc2lvbiAxMzA3MykKKysrIEphdmFTY3JpcHRDb3JlL2t4bWxj
b3JlL0Zhc3RNYWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw4IEBACiAKICNp
Zm5kZWYgTkRFQlVHCiAjZGVmaW5lIFVTRV9TWVNURU1fTUFMTE9DIDEKKyNlbHNlCisjZGVmaW5l
IFVTRV9TWVNURU1fTUFMTE9DIDAKICNlbmRpZgogCiAjaWYgVVNFX1NZU1RFTV9NQUxMT0MKQEAg
LTk1LDcgKzk3LDcgQEAgdm9pZCAqZmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4pCiAgICAg
cmV0dXJuIHJlYWxsb2MocCwgbik7CiB9CiAKLSNpZiAhV0lOMzIKKyNpZiBQTEFURk9STShXSU5f
T1MpCiB2b2lkIGZhc3RNYWxsb2NSZWdpc3RlclRocmVhZChwdGhyZWFkX3QpIAogewogfQpAQCAt
MTA1LDkgKzEwNyw5IEBAIHZvaWQgZmFzdE1hbGxvY1JlZ2lzdGVyVGhyZWFkKHB0aHJlYWRfdCkK
IAogI2Vsc2UKIAotI2lmIEhBVkVfU1RESU5UX0gKKyNpZiBIQVZFKFNURElOVF9IKQogI2luY2x1
ZGUgPHN0ZGludC5oPgotI2VsaWYgSEFWRV9JTlRUWVBFU19ICisjZWxpZiBIQVZFKElOVFRZUEVT
X0gpCiAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+
CkBAIC0xNDAsNyArMTQyLDcgQEAgbmFtZXNwYWNlIEtYTUxDb3JlIHsKIAogI2VuZGlmCiAKLSNp
ZiBkZWZpbmVkIEhBVkVfSU5UVFlQRVNfSAorI2lmIEhBVkUoSU5UVFlQRVNfSCkKICNkZWZpbmUg
X19TVERDX0ZPUk1BVF9NQUNST1MKICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogI2RlZmluZSBMTFUg
ICBQUkl1NjQKQEAgLTIyMCw3ICsyMjIsNyBAQCBzdGF0aWMgc2l6ZV90IGNsYXNzX3RvX3NpemVb
a051bUNsYXNzZXNdCiBzdGF0aWMgc2l6ZV90IGNsYXNzX3RvX3BhZ2VzW2tOdW1DbGFzc2VzXTsK
IAogLy8gUmV0dXJuIGZsb29yKGxvZzIobikpIGZvciBuID4gMC4KLSNpZiBkZWZpbmVkIF9faTM4
Nl9fICYmIGRlZmluZWQgX19HTlVDX18KKyNpZiBQTEFURk9STShYODYpICYmIENPTVBJTEVSKEdD
QykKIHN0YXRpYyBpbmxpbmUgaW50IExnRmxvb3Ioc2l6ZV90IG4pIHsKICAgLy8gInJvIiBmb3Ig
dGhlIGlucHV0IHNwZWMgbWVhbnMgdGhlIGlucHV0IGNhbiBjb21lIGZyb20gZWl0aGVyIGEKICAg
Ly8gcmVnaXN0ZXIgKCJyIikgb3Igb2Zmc2V0YWJsZSBtZW1vcnkgKCJvIikuCkBAIC0yMzMsNyAr
MjM1LDcgQEAgc3RhdGljIGlubGluZSBpbnQgTGdGbG9vcihzaXplX3QgbikgewogICByZXR1cm4g
cmVzdWx0OwogfQogCi0jZWxpZiBkZWZpbmVkIF9fcHBjX18gJiYgZGVmaW5lZCBfX0dOVUNfXwor
I2VsaWYgUExBVEZPUk0oUFBDKSAmJiBDT01QSUxFUihHQ0MpCiBzdGF0aWMgaW5saW5lIGludCBM
Z0Zsb29yKHNpemVfdCBuKSB7CiAgIC8vICJyIiBmb3IgdGhlIGlucHV0IHNwZWMgbWVhbnMgdGhl
IGlucHV0IG11c3QgY29tZSBmcm9tIGEKICAgLy8gcmVnaXN0ZXIgKCJyIikKQEAgLTIyODAsNyAr
MjI4Miw3IEBAIGV4dGVybiAiQyIgc3RydWN0IG1hbGxpbmZvIG1hbGxpbmZvKHZvaWQKIC8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiBleHRlcm4gIkMiIHsKLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVk
KEhBVkVfX19BVFRSSUJVVEVfXykKKyNpZiBDT01QSUxFUihHQ0MpICYmIEhBVkUoX19BVFRSSUJV
VEVfXykKICAgLy8gUG90ZW50aWFsbHkgZmFzdGVyIHZhcmlhbnRzIHRoYXQgdXNlIHRoZSBnY2Mg
YWxpYXMgZXh0ZW5zaW9uCiAjZGVmaW5lIEFMSUFTKHgpIF9fYXR0cmlidXRlX18gKCh3ZWFrLCBh
bGlhcyAoeCkpKQogICB2b2lkKiBfX2xpYmNfbWFsbG9jKHNpemVfdCBzaXplKSAgICAgICAgICAg
ICAgQUxJQVMoIm1hbGxvYyIpOwpJbmRleDogSmF2YVNjcmlwdENvcmUva3htbGNvcmUvVENTeXN0
ZW1BbGxvYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva3htbGNvcmUvVENTeXN0
ZW1BbGxvYy5jcHAJKHJldmlzaW9uIDEzMDczKQorKysgSmF2YVNjcmlwdENvcmUva3htbGNvcmUv
VENTeXN0ZW1BbGxvYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE0ICszMSwxNCBAQAogLy8g
QXV0aG9yOiBTYW5qYXkgR2hlbWF3YXQKIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIGRlZmlu
ZWQgSEFWRV9TVERJTlRfSAorI2lmIEhBVkUoU1RESU5UX0gpCiAjaW5jbHVkZSA8c3RkaW50Lmg+
Ci0jZWxpZiBkZWZpbmVkIEhBVkVfSU5UVFlQRVNfSAorI2VsaWYgSEFWRShJTlRUWVBFU19IKQog
I2luY2x1ZGUgPGludHR5cGVzLmg+CiAjZWxzZQogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2Vu
ZGlmCi0jaWZuZGVmIFdJTjMyCisjaWYgIVBMQVRGT1JNKFdJTl9PUykKICNpbmNsdWRlIDx1bmlz
dGQuaD4KICNpbmNsdWRlIDxzeXMvbW1hbi5oPgogI2VuZGlmCkBAIC05MSw3ICs5MSw3IEBAIHN0
YXRpYyBjb25zdCBpbnQzMl90IEZMQUdTX21hbGxvY19kZXZtZW0KIHN0YXRpYyBjb25zdCBpbnQz
Ml90IEZMQUdTX21hbGxvY19kZXZtZW1fbGltaXQgPSAwOwogI2VuZGlmCiAKLSNpZmRlZiBIQVZF
X1NCUksKKyNpZiBIQVZFKFNCUkspCiAKIHN0YXRpYyB2b2lkKiBUcnlTYnJrKHNpemVfdCBzaXpl
LCBzaXplX3QgYWxpZ25tZW50KSB7CiAgIHNpemUgPSAoKHNpemUgKyBhbGlnbm1lbnQgLSAxKSAv
IGFsaWdubWVudCkgKiBhbGlnbm1lbnQ7CkBAIC0xMjcsOSArMTI3LDkgQEAgc3RhdGljIHZvaWQq
IFRyeVNicmsoc2l6ZV90IHNpemUsIHNpemVfdAogICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocHRyKTsKIH0KIAotI2VuZGlmIC8qIEhBVkVfU0JSSyAqLworI2VuZGlmIC8qIEhBVkUo
U0JSSykgKi8KIAotI2lmZGVmIEhBVkVfTU1BUAorI2lmIEhBVkUoTU1BUCkKIAogc3RhdGljIHZv
aWQqIFRyeU1tYXAoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpIHsKICAgLy8gRW5mb3Jj
ZSBwYWdlIGFsaWdubWVudApAQCAtMTcwLDcgKzE3MCw3IEBAIHN0YXRpYyB2b2lkKiBUcnlNbWFw
KHNpemVfdCBzaXplLCBzaXplX3QKICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHB0
cik7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX01NQVAgKi8KKyNlbmRpZiAvKiBIQVZFKE1NQVApICov
CiAKICNpZm5kZWYgS1hDX0NIQU5HRVMKIHN0YXRpYyB2b2lkKiBUcnlEZXZNZW0oc2l6ZV90IHNp
emUsIHNpemVfdCBhbGlnbm1lbnQpIHsKQEAgLTI2OCwxNCArMjY4LDE0IEBAIHZvaWQqIFRDTWFs
bG9jX1N5c3RlbUFsbG9jKHNpemVfdCBzaXplLCAKICAgICB9CiAjZW5kaWYKICAgICAKLSNpZmRl
ZiBIQVZFX1NCUksKKyNpZiBIQVZFKFNCUkspCiAgICAgaWYgKHVzZV9zYnJrICYmICFzYnJrX2Zh
aWx1cmUpIHsKICAgICAgIHZvaWQqIHJlc3VsdCA9IFRyeVNicmsoc2l6ZSwgYWxpZ25tZW50KTsK
ICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAjZW5kaWYK
IAotI2lmZGVmIEhBVkVfTU1BUCAgICAKKyNpZiBIQVZFKE1NQVApICAgIAogICAgIGlmICh1c2Vf
bW1hcCAmJiAhbW1hcF9mYWlsdXJlKSB7CiAgICAgICB2b2lkKiByZXN1bHQgPSBUcnlNbWFwKHNp
emUsIGFsaWdubWVudCk7CiAgICAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHJldHVybiByZXN1bHQ7
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9reG1sY29yZS9GYXN0TWFsbG9jSW50ZXJuYWwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9reG1sY29yZS9GYXN0TWFsbG9jSW50ZXJuYWwuaAko
cmV2aXNpb24gMTMwNzMpCisrKyBKYXZhU2NyaXB0Q29yZS9reG1sY29yZS9GYXN0TWFsbG9jSW50
ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogI2lmbmRlZiBLWE1MQ09S
RV9GQVNUX01BTExPQ19JTlRFUk5BTF9ICiAjZGVmaW5lIEtYTUxDT1JFX0ZBU1RfTUFMTE9DX0lO
VEVSTkFMX0gKIAotI2lmbmRlZiBXSU4zMgorI2lmICFQTEFURk9STShXSU5fT1MpCiAKICNpbmNs
dWRlIDxwdGhyZWFkLmg+CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL1BsYXRmb3Jt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva3htbGNvcmUvUGxhdGZvcm0uaAkocmV2
aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL1BsYXRmb3JtLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTU0IEBACisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDog
NCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgS1hNTENPUkVfUExBVEZPUk1fSAor
I2RlZmluZSBLWE1MQ09SRV9QTEFURk9STV9ICisKKy8vIFBMQVRGT1JNIGhhbmRsZXMgT1MsIG9w
ZXJhdGluZyBlbnZpcm9ubWVudCwgZ3JhcGhpY3MgQVBJLCBhbmQgQ1BVCisjZGVmaW5lIFBMQVRG
T1JNKEZFQVRVUkUpIChkZWZpbmVkKEtYTUxDT1JFX1BMQVRGT1JNXyMjRkVBVFVSRSkgJiYgS1hN
TENPUkVfUExBVEZPUk1fIyNGRUFUVVJFKQorI2RlZmluZSBDT01QSUxFUihGRUFUVVJFKSAoZGVm
aW5lZChLWE1MQ09SRV9DT01QSUxFUl8jI0ZFQVRVUkUpICYmIEtYTUxDT1JFX0NPTVBJTEVSXyMj
RkVBVFVSRSkKKyNkZWZpbmUgSEFWRShGRUFUVVJFKSAoZGVmaW5lZChIQVZFXyMjRkVBVFVSRSkg
JiYgSEFWRV8jI0ZFQVRVUkUpCisjZGVmaW5lIFVTRShGRUFUVVJFKSAoZGVmaW5lZChLWE1MQ09S
RV9VU0VfIyNGRUFUVVJFKSAmJiBLWE1MQ09SRV9VU0VfIyNGRUFUVVJFKQorCisvLyBPcGVyYXRp
bmcgc3lzdGVtcyAtIGxvdy1sZXZlbCBkZXBlbmRlbmNpZXMKKworLy8gUExBVEZPUk0oREFSV0lO
KQorLy8gT3BlcmF0aW5nIHN5c3RlbSBsZXZlbCBkZXBlbmRlbmNpZXMgZm9yIE1hYyBPUyBYIC8g
RGFyd2luIHRoYXQgc2hvdWxkCisvLyBiZSB1c2VkIHJlZ2FyZGxlc3Mgb2Ygb3BlcmF0aW5nIGVu
dmlyb25tZW50CisjaWZkZWYgX19BUFBMRV9fCisjZGVmaW5lIEtYTUxDT1JFX1BMQVRGT1JNX0RB
UldJTiAxCisjZW5kaWYKKworLy8gUExBVEZPUk0oV0lOX09TKQorLy8gT3BlcmF0aW5nIHN5c3Rl
bSBsZXZlbCBkZXBlbmRlbmNpZXMgZm9yIFdpbmRvd3MgdGhhdCBzaG91bGQgYmUgdXNlZAorLy8g
cmVnYXJkbGVzcyBvZiBvcGVyYXRpbmcgZW52aXJvbm1lbnQKKyNpZiBkZWZpbmVkKFdJTjMyKSB8
fCBkZWZpbmVkKF9XSU4zMikKKyNkZWZpbmUgS1hNTENPUkVfUExBVEZPUk1fV0lOX09TIDEKKyNl
bmRpZgorCisvLyBQTEFURk9STShVTklYKQorLy8gT3BlcmF0aW5nIHN5c3RlbSBsZXZlbCBkZXBl
bmRlbmNpZXMgZm9yIFVuaXgtbGlrZSBzeXN0ZW1zIHRoYXQKKy8vIHNob3VsZCBiZSB1c2VkIHJl
Z2FyZGxlc3Mgb2Ygb3BlcmF0aW5nIGVudmlyb25tZW50CisvLyAoaW5jbHVkZXMgUExBVEZPUk0o
REFSV0lOKSkKKyNpZiAgIGRlZmluZWQoX19BUFBMRV9fKSAgIFwKKyAgIHx8IGRlZmluZWQodW5p
eCkgICAgICAgIFwKKyAgIHx8IGRlZmluZWQoX191bml4KSAgICAgIFwKKyAgIHx8IGRlZmluZWQo
X191bml4X18pICAgIFwKKyAgIHx8IGRlZmluZWQgKF9fTmV0QlNEX18pIFwKKyAgIHx8IGRlZmlu
ZWQoX0FJWCkKKyNkZWZpbmUgS1hNTENPUkVfUExBVEZPUk1fVU5JWCAxCisjZW5kaWYKKworLy8g
T3BlcmF0aW5nIGVudmlyb25tZW50cworCisjZGVmaW5lIEtYTUxDT1JFX0hBVkVfT1BFUkFUSU5H
X0VOVklST05NRU5UIDAKKworLy8gUExBVEZPUk0oS0RFKQorLy8gT3BlcmF0aW5nIGVudmlyb25t
ZW50IGRlcGVuZGVuY2llcyBmb3IgS0RFCisvLyBJIG1hZGUgdGhpcyBtYWNybyB1cCBmb3IgdGhl
IEtERSBidWlsZCBzeXN0ZW0gdG8gZGVmaW5lCisjaWYgZGVmaW5lZChCVUlMRElOR19LREVfXykK
KyNkZWZpbmUgS1hNTENPUkVfUExBVEZPUk1fS0RFIDEKKyN1bmRlZiBLWE1MQ09SRV9IQVZFX09Q
RVJBVElOR19FTlZJUk9OTUVOVAorI2RlZmluZSBLWE1MQ09SRV9IQVZFX09QRVJBVElOR19FTlZJ
Uk9OTUVOVCAxCisjZW5kaWYKKworI2lmICFLWE1MQ09SRV9IQVZFX09QRVJBVElOR19FTlZJUk9O
TUVOVCAmJiBQTEFURk9STShEQVJXSU4pCisjZGVmaW5lIEtYTUxDT1JFX1BMQVRGT1JNX01BQyAx
CisjdW5kZWYgS1hNTENPUkVfSEFWRV9PUEVSQVRJTkdfRU5WSVJPTk1FTlQKKyNkZWZpbmUgS1hN
TENPUkVfSEFWRV9PUEVSQVRJTkdfRU5WSVJPTk1FTlQgMQorI2VuZGlmCisKKyNpZiAhS1hNTENP
UkVfSEFWRV9PUEVSQVRJTkdfRU5WSVJPTk1FTlQgJiYgUExBVEZPUk0oV0lOX09TKQorI2RlZmlu
ZSBLWE1MQ09SRV9QTEFURk9STV9XSU4gMQorI3VuZGVmIEtYTUxDT1JFX0hBVkVfT1BFUkFUSU5H
X0VOVklST05NRU5UCisjZGVmaW5lIEtYTUxDT1JFX0hBVkVfT1BFUkFUSU5HX0VOVklST05NRU5U
IDEKKyNlbmRpZgorCisvLyBDUFUKKworLy8gUExBVEZPUk0oUFBDKQorI2lmICAgZGVmaW5lZChf
X3BwY19fKSAgICAgXAorICAgfHwgZGVmaW5lZChfX1BQQ19fKSAgICAgXAorICAgfHwgZGVmaW5l
ZChfX3Bvd2VycGNfXykgXAorICAgfHwgZGVmaW5lZChfX3Bvd2VycGMpICAgXAorICAgfHwgZGVm
aW5lZChfX1BPV0VSUENfXykgXAorICAgfHwgZGVmaW5lZChfTV9QUEMpICAgICAgXAorICAgfHwg
ZGVmaW5lZChfX1BQQykKKyNkZWZpbmUgS1hNTENPUkVfUExBVEZPUk1fUFBDIDEKKyNkZWZpbmUg
S1hNTENPUkVfUExBVEZPUk1fQklHX0VORElBTiAxCisjZW5kaWYKKworLy8gUExBVEZPUk0oUFBD
NjQpCisjaWYgICBkZWZpbmVkKF9fcHBjNjRfXykgXAorICAgfHwgZGVmaW5lZChfX1BQQzY0X18p
CisjZGVmaW5lIEtYTUxDT1JFX1BMQVRGT1JNX1BQQzY0IDEKKyNkZWZpbmUgS1hNTENPUkVfUExB
VEZPUk1fQklHX0VORElBTiAxCisjZW5kaWYKKworI2lmIGRlZmluZWQoYXJtKQorI2RlZmluZSBL
WE1MQ09SRV9QTEFURk9STV9BUk0gMQorI2RlZmluZSBLWE1MQ09SRV9QTEFURk9STV9NSURETEVf
RU5ESUFOIDEKKyNlbmRpZgorCisvLyBQTEFURk9STShYODYpCisjaWYgICBkZWZpbmVkKF9faTM4
Nl9fKSBcCisgICB8fCBkZWZpbmVkKGkzODYpICAgICBcCisgICB8fCBkZWZpbmVkKF9NX0lYODYp
ICBcCisgICB8fCBkZWZpbmVkKF9YODZfKSAgICBcCisgICB8fCBkZWZpbmVkKF9fVEhXX0lOVEVM
KQorI2RlZmluZSBLWE1MQ09SRV9QTEFURk9STV9YODYgMQorI2VuZGlmCisKKy8vIENvbXBpbGVy
CisKKy8vIENPTVBJTEVSKE1TVkMpCisjaWYgZGVmaW5lZChfTVNDX1ZlcikKKyNkZWZpbmUgS1hN
TENPUkVfQ09NUElMRVJfTVNWQyAxCisjZW5kaWYKKworLy8gQ09NUElMRVIoR0NDKQorI2lmIGRl
ZmluZWQoX19HTlVDX18pCisjZGVmaW5lIEtYTUxDT1JFX0NPTVBJTEVSX0dDQyAxCisjZW5kaWYK
KworLy8gQ09NUElMRVIoQk9STEFORCkKKy8vIG5vdCByZWFsbHkgZnVsbHkgc3VwcG9ydGVkIC0g
aXMgdGhpcyByZWxldmFudCBhbnkgbW9yZT8KKyNpZiBkZWZpbmVkKF9fQk9STEFORENfXykKKyNk
ZWZpbmUgS1hNTENPUkVfQ09NUElMRVJfQk9STEFORCAxCisjZW5kaWYKKworLy8gQ09NUElMRVIo
Q1lHV0lOKQorLy8gbm90IHJlYWxseSBmdWxseSBzdXBwb3J0ZWQgLSBpcyB0aGlzIHJlbGV2YW50
IGFueSBtb3JlPworI2lmIGRlZmluZWQoX19DWUdXSU5fXykKKyNkZWZpbmUgS1hNTENPUkVfQ09N
UElMRVJfQ1lHV0lOIDEKKyNlbmRpZgorCisvLyBtdWx0aXBsZSB0aHJlYWRzIG9ubHkgc3VwcG9y
dGVkIG9uIE9TIFggV2ViS2l0IGZvciBub3cKKyNpZiBQTEFURk9STShNQUMpCisjZGVmaW5lIFVT
RV9NVUxUSVBMRV9USFJFQURTIDEKKyNlbmRpZgorCisjZW5kaWYgLy8gS1hNTENPUkVfUExBVEZP
Uk1fSApJbmRleDogSmF2YVNjcmlwdENvcmUva3htbGNvcmUvRmFzdE1hbGxvYy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL0Zhc3RNYWxsb2MuaAkocmV2aXNpb24gMTMw
NzMpCisrKyBKYXZhU2NyaXB0Q29yZS9reG1sY29yZS9GYXN0TWFsbG9jLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDE0ICs0MCwxMCBAQCB1c2luZyBLWE1MQ29yZTo6ZmFzdENhbGxvYzsKIHVzaW5n
IEtYTUxDb3JlOjpmYXN0UmVhbGxvYzsKIHVzaW5nIEtYTUxDb3JlOjpmYXN0RnJlZTsKIAotI2lm
IF9fR05VQ19fCi0KLSNpZiBfX0FQUExFX18KKyNpZiBQTEFURk9STShHQ0MpICYmIFBMQVRGT1JN
KERBUldJTikKICNkZWZpbmUgS1hNTENPUkVfUFJJVkFURV9JTkxJTkUgX19wcml2YXRlX2V4dGVy
bl9fIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKLSNlbHNlCisjZWxpZiBQ
TEFURk9STShHQ0MpCiAjZGVmaW5lIEtYTUxDT1JFX1BSSVZBVEVfSU5MSU5FIGlubGluZSBfX2F0
dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKLSNlbmRpZgotCiAjZWxzZQogI2RlZmluZSBLWE1M
Q09SRV9QUklWQVRFX0lOTElORSBpbmxpbmUKICNlbmRpZgpAQCAtNTcsNSArNTMsNCBAQCBLWE1M
Q09SRV9QUklWQVRFX0lOTElORSB2b2lkIG9wZXJhdG9yIGRlCiBLWE1MQ09SRV9QUklWQVRFX0lO
TElORSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QgcykgeyByZXR1cm4gZmFzdE1hbGxvYyhz
KTsgfQogS1hNTENPUkVfUFJJVkFURV9JTkxJTkUgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lk
KiBwKSB7IGZhc3RGcmVlKHApOyB9CiAKLQogI2VuZGlmIC8qIEtYTUxDT1JFX0ZBU1RfTUFMTE9D
X0ggKi8KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL0Fzc2VydGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL0Fzc2VydGlvbnMuY3BwCShyZXZpc2lv
biAxMzA3MykKKysrIEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL0Fzc2VydGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAic3RkaW8uaCIKICNpbmNsdWRl
ICJzdGRhcmcuaCIKIAotI2lmIF9fQVBQTEVfXworI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRl
IDxDb3JlRm91bmRhdGlvbi9DRlN0cmluZy5oPgogI2VuZGlmCiAKQEAgLTQxLDcgKzQxLDcgQEAg
c3RhdGljIGludCAoKiB2ZnByaW50Zl9ub193YXJuaW5nKShGSUxFIAogCiBzdGF0aWMgdm9pZCB2
cHJpbnRmX3N0ZGVycl9jb21tb24oY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCiB7
Ci0jaWYgX19BUFBMRV9fCisjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghc3Ryc3RyKGZvcm1h
dCwgIiVAIikpIHsKICAgICAgICAgQ0ZTdHJpbmdSZWYgY2ZGb3JtYXQgPSBDRlN0cmluZ0NyZWF0
ZVdpdGhDU3RyaW5nKE5VTEwsIGZvcm1hdCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKICAgICAg
ICAgQ0ZTdHJpbmdSZWYgc3RyID0gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRz
KE5VTEwsIE5VTEwsIGNmRm9ybWF0LCBhcmdzKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEz
MDc0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsODggQEAKKzIwMDYtMDMtMDEgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IC0gU2V0IHVwIG5ldyBwcm90b3R5cGUgbWFjcm9zIGFuZCBhdm9pZCB1c2luZyAjaWYgd2l0aG91
dCBkZWZpbmVkKCkgaW4gSlNDCisgICAgICAgIAorICAgICAgICBBZGRlZCBuZXcgUExBVEZPUk0g
bWFjcm9zIGFuZCByZWxhdGVkLCB0byBtYWtlIHN1cmUgI2lmJ3MgYWxsIGNoZWNrIGlmIHJlbGV2
YW50IG1hY3JvcworICAgICAgICBhcmUgZGVmaW5lZCwgYW5kIHRvIHNlcGFyYXRlIGNvcmUgT1Mt
bGV2ZWwgZGVwZW5kZW5jaWVzIGZyb20gb3BlcmF0aW5nIGVudmlyb25tZW50CisgICAgICAgIGRl
cGVuZGVuY2llcyBzbyB5b3UgY2FuLCBlLmcuLCBidWlsZCBLREUgb24gTWFjIG9yIFdpbmRvd3Mu
CisKKyAgICAgICAgKiBreG1sY29yZS9QbGF0Zm9ybS5oOiBBZGRlZC4KKworICAgICAgICAtIGRl
cGxveSB0aGVtIGV2ZXJ5d2hlcmUgaW4gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qbmkvam5pX3V0aWxpdHkuY3BwOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Y29u
dmVydFZhbHVlVG9KVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2Jq
ZWN0Lm1tOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAg
ICAgKE9iamNJbnN0YW5jZTo6ZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zb2Z0bGlua2luZy5o
OgorICAgICAgICAqIGJpbmRpbmdzL3Rlc3RiaW5kaW5ncy5tbToKKyAgICAgICAgKG1haW4pOgor
ICAgICAgICAqIGtqcy9KU0xvY2suY3BwOgorICAgICAgICAqIGtqcy9jb2xsZWN0b3IuY3BwOgor
ICAgICAgICAoS0pTOjpDb2xsZWN0b3I6Om1hcmtDdXJyZW50VGhyZWFkQ29uc2VydmF0aXZlbHkp
OgorICAgICAgICAoS0pTOjpDb2xsZWN0b3I6Om1hcmtPdGhlclRocmVhZENvbnNlcnZhdGl2ZWx5
KToKKyAgICAgICAgKEtKUzo6Q29sbGVjdG9yOjptYXJrU3RhY2tPYmplY3RzQ29uc2VydmF0aXZl
bHkpOgorICAgICAgICAqIGtqcy9jb25maWcuaDoKKyAgICAgICAgKiBranMvZGF0ZV9vYmplY3Qu
Y3BwOgorICAgICAgICAoZ210b2Zmc2V0KToKKyAgICAgICAgKEtKUzo6Zm9ybWF0VGltZSk6Cisg
ICAgICAgIChLSlM6OkRhdGVQcm90b0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEtK
Uzo6RGF0ZU9iamVjdEltcDo6Y29uc3RydWN0KToKKyAgICAgICAgKEtKUzo6bWFrZVRpbWUpOgor
ICAgICAgICAqIGtqcy9kdG9hLmNwcDoKKyAgICAgICAgKiBranMvZnBjb25zdC5jcHA6CisgICAg
ICAgIChLSlM6OnNpemVvZik6CisgICAgICAgIChLSlM6Oik6CisgICAgICAgICoga2pzL2dyYW1t
YXIueToKKyAgICAgICAgKiBranMvaWRlbnRpZmllci5jcHA6CisgICAgICAgICoga2pzL2ludGVy
bmFsLmNwcDoKKyAgICAgICAgKiBranMvaW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoS0pTOjpJ
bnRlcnByZXRlcjo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpJbnRlcnByZXRlcjo6Y3JlYXRl
TGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlKToKKyAgICAgICAgKiBranMvaW50ZXJwcmV0ZXIuaDoK
KyAgICAgICAgKiBranMvbG9va3VwLmNwcDoKKyAgICAgICAgKiBranMvbG9va3VwLmg6CisgICAg
ICAgICoga2pzL21hdGhfb2JqZWN0LmNwcDoKKyAgICAgICAgKiBranMvb2JqZWN0LmNwcDoKKyAg
ICAgICAgKiBranMvb2JqZWN0Lmg6CisgICAgICAgICoga2pzL29wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoS0pTOjppc05hTik6CisgICAgICAgIChLSlM6OmlzSW5mKToKKyAgICAgICAgKEtKUzo6
aXNQb3NJbmYpOgorICAgICAgICAoS0pTOjppc05lZ0luZik6CisgICAgICAgICoga2pzL29wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBranMvcmVnZXhwLmNwcDoKKyAgICAgICAgKEtKUzo6UmVnRXhw
OjpSZWdFeHApOgorICAgICAgICAoS0pTOjpSZWdFeHA6On5SZWdFeHApOgorICAgICAgICAoS0pT
OjpSZWdFeHA6Om1hdGNoKToKKyAgICAgICAgKiBranMvcmVnZXhwLmg6CisgICAgICAgICoga2pz
L3Rlc3RranMuY3BwOgorICAgICAgICAoU3RvcFdhdGNoOjpzdGFydCk6CisgICAgICAgIChTdG9w
V2F0Y2g6OnN0b3ApOgorICAgICAgICAoU3RvcFdhdGNoOjpnZXRFbGFwc2VkTVMpOgorICAgICAg
ICAqIGtqcy91c3RyaW5nLmNwcDoKKyAgICAgICAgKiBranMvdXN0cmluZy5oOgorICAgICAgICAq
IGt4bWxjb3JlL0Fsd2F5c0lubGluZS5oOgorICAgICAgICAqIGt4bWxjb3JlL0Fzc2VydGlvbnMu
Y3BwOgorICAgICAgICAqIGt4bWxjb3JlL0Fzc2VydGlvbnMuaDoKKyAgICAgICAgKiBreG1sY29y
ZS9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgKEtYTUxDb3JlOjopOgorICAgICAgICAqIGt4bWxj
b3JlL0Zhc3RNYWxsb2MuaDoKKyAgICAgICAgKiBreG1sY29yZS9GYXN0TWFsbG9jSW50ZXJuYWwu
aDoKKyAgICAgICAgKiBreG1sY29yZS9IYXNoVGFibGUuaDoKKyAgICAgICAgKiBreG1sY29yZS9U
Q1BhZ2VNYXAuaDoKKyAgICAgICAgKiBreG1sY29yZS9UQ1NwaW5Mb2NrLmg6CisgICAgICAgIChU
Q01hbGxvY19TcGluTG9jazo6TG9jayk6CisgICAgICAgIChUQ01hbGxvY19TcGluTG9jazo6VW5s
b2NrKToKKyAgICAgICAgKFRDTWFsbG9jX1Nsb3dMb2NrKToKKyAgICAgICAgKiBreG1sY29yZS9U
Q1N5c3RlbUFsbG9jLmNwcDoKKyAgICAgICAgKFRDTWFsbG9jX1N5c3RlbUFsbG9jKToKKyAgICAg
ICAgKiBvcy13aW4zMi9zdGRpbnQuaDoKKwogMjAwNi0wMi0yOCAgR2VvZmZyZXkgR2FyZW4gIDxn
Z2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluLgpJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMzA3MykKKysrIEphdmFTY3JpcHRD
b3JlL2tqcy9pbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwxMyBA
QAogI2luY2x1ZGUgIm5vZGVzLmgiCiAjaW5jbHVkZSAib2JqZWN0LmgiCiAjaW5jbHVkZSAib3Bl
cmF0aW9ucy5oIgotI2lmIF9fQVBQTEVfXwotI2luY2x1ZGUgInJ1bnRpbWUuaCIKLSNlbmRpZgog
I2luY2x1ZGUgInR5cGVzLmgiCiAjaW5jbHVkZSAidmFsdWUuaCIKIAorI2lmIFBMQVRGT1JNKE1B
QykKKyNpbmNsdWRlICJydW50aW1lLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIEtKUyB7CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb250ZXh0IC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjQsNyArMTI1LDcgQEAgQ29tcGxldGlvbiBJbnRl
cnByZXRlcjo6ZXZhbHVhdGUoY29uc3QgVQogICAgICAgICBDU3RyaW5nIGYgPSBzb3VyY2VVUkwu
VVRGOFN0cmluZygpOwogICAgICAgICBDU3RyaW5nIG1lc3NhZ2UgPSBjb21wLnZhbHVlKCktPnRv
T2JqZWN0KGV4ZWMpLT50b1N0cmluZyhleGVjKS5VVEY4U3RyaW5nKCk7CiAgICAgICAgIGludCBs
aW5lID0gY29tcC52YWx1ZSgpLT50b09iamVjdChleGVjKS0+Z2V0KGV4ZWMsICJsaW5lIiktPnRv
VUludDMyKGV4ZWMpOwotI2lmZGVmIFdJTjMyCisjaWYgUExBVEZPUk0oV0lOX09TKQogICAgICAg
ICBwcmludGYoIiVzIGxpbmUgJWQ6ICVzXG4iLCBmLmNfc3RyKCksIGxpbmUsIG1lc3NhZ2UuY19z
dHIoKSk7CiAjZWxzZQogICAgICAgICBwcmludGYoIlslZF0gJXMgbGluZSAlZDogJXNcbiIsIGdl
dHBpZCgpLCBmLmNfc3RyKCksIGxpbmUsIG1lc3NhZ2UuY19zdHIoKSk7CkBAIC0zMjUsMTIgKzMy
NiwxMiBAQCB2b2lkIEludGVycHJldGVyOjpzZXRTaG91bGRQcmludEV4Y2VwdGlvCiAgIHByaW50
RXhjZXB0aW9ucyA9IHByaW50OwogfQogCi0jaWYgX19BUFBMRV9fCisvLyBiaW5kaW5ncyBhcmUg
T1MgWCBXZWJLaXQtb25seSBmb3Igbm93CisjaWYgUExBVEZPUk0oTUFDKQogdm9pZCAqSW50ZXJw
cmV0ZXI6OmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZShFeGVjU3RhdGUgKmV4ZWMsIGlu
dCBsYW5ndWFnZSwgSlNPYmplY3QgKnZhbHVlLCBjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAq
b3JpZ2luLCBjb25zdCBCaW5kaW5nczo6Um9vdE9iamVjdCAqY3VycmVudCkKIHsKICAgICByZXR1
cm4gQmluZGluZ3M6Okluc3RhbmNlOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUgKGV4
ZWMsIChCaW5kaW5nczo6SW5zdGFuY2U6OkJpbmRpbmdMYW5ndWFnZSlsYW5ndWFnZSwgdmFsdWUs
IG9yaWdpbiwgY3VycmVudCk7CiB9Ci0KICNlbmRpZgogCiB2b2lkIEludGVycHJldGVyOjpzYXZl
QnVpbHRpbnMgKFNhdmVkQnVpbHRpbnMgJmJ1aWx0aW5zKSBjb25zdApJbmRleDogSmF2YVNjcmlw
dENvcmUva2pzL2xvb2t1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2xv
b2t1cC5jcHAJKHJldmlzaW9uIDEzMDczKQorKysgSmF2YVNjcmlwdENvcmUva2pzL2xvb2t1cC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDYgQEAKIAogI2luY2x1ZGUgImxvb2t1cC5o
IgogCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBLSlM7
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBrZXlzTWF0Y2goY29uc3QgVUNoYXIgKmMsIHVuc2lnbmVk
IGxlbiwgY29uc3QgY2hhciAqcykKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9jb25maWcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvY29uZmlnLmgJKHJldmlzaW9uIDEzMDcz
KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQg
KzEsNiBAQAotI2lmIF9fQVBQTEVfXworI2luY2x1ZGUgPGt4bWxjb3JlL1BsYXRmb3JtLmg+CisK
KyNpZiBQTEFURk9STShEQVJXSU4pCiAKICNkZWZpbmUgSEFWRV9FUlJOT19IIDEKICNkZWZpbmUg
SEFWRV9GVU5DX0lTSU5GIDEKQEAgLTEwLDE3ICsxMiwyMCBAQAogI2RlZmluZSBIQVZFX1NZU19U
SU1FX0ggMQogI2RlZmluZSBIQVZFX1NZU19USU1FQl9IIDEKIAotI2RlZmluZSBLSlNfTVVMVElQ
TEVfVEhSRUFEUyAxCi0KLSNlbGlmIFdJTjMyCisjZWxpZiBQTEFURk9STShXSU5fT1MpCiAKICNk
ZWZpbmUgSEFWRV9GTE9BVF9IIDEKICNkZWZpbmUgSEFWRV9GVU5DX19GSU5JVEUgMQogI2RlZmlu
ZSBIQVZFX1NZU19USU1FQl9IIDEKKworCiAjZGVmaW5lIFVTRV9TWVNURU1fTUFMTE9DIDEKIAog
I2Vsc2UKIAorLy8gRklYTUU6IGlzIHRoaXMgYWN0dWFsbHkgdXNlZCBvciBkbyBvdGhlciBwbGF0
Zm9ybXMgZ2VuZXJhdGUgdGhlaXIKKy8vIG93biBjb25maWcuaD8KKwogI2RlZmluZSBIQVZFX0VS
Uk5PX0ggMQogI2RlZmluZSBIQVZFX0ZVTkNfSVNJTkYgMQogI2RlZmluZSBIQVZFX0ZVTkNfSVNO
QU4gMQpAQCAtMzIsMjIgKzM3LDEzIEBACiAKICNlbmRpZgogCi0jZGVmaW5lIEhBVkVfRlVOQ19T
VFJUT0xMIDEKICNkZWZpbmUgSEFWRV9JQ1UgMQogI2RlZmluZSBIQVZFX1BDUkVQT1NJWCAxCisK
Ky8vIEZJWE1FOiBpZiBhbGwgcGxhdGZvcm1zIGhhdmUgdGhlc2UsIGRvIHRoZXkgcmVhbGx5IG5l
ZWQgI2RlZmluZXM/CiAjZGVmaW5lIEhBVkVfU1RESU5UX0ggMQogI2RlZmluZSBIQVZFX1NUUklO
R19IIDEKIAotI2lmIF9fcHBjX18gfHwgX19QUENfXyB8fCBfX3Bvd2VycGNfXwotI2RlZmluZSBL
SlNfQ1BVX1BQQyAxCi0jZGVmaW5lIFdPUkRTX0JJR0VORElBTiAxCi0jZWxpZiBfX3BwYzY0X18g
fHwgX19QUEM2NF9fCi0jZGVmaW5lIEtKU19DUFVfUFBDNjQgMQotI2RlZmluZSBXT1JEU19CSUdF
TkRJQU4gMQotI2VsaWYgX19pMzg2X18KLSNkZWZpbmUgS0pTX0NQVV9YODYgMQotI2VuZGlmCi0K
ICNkZWZpbmUgS1hDX0NIQU5HRVMgMQogCiAjaWZkZWYgX19jcGx1c3BsdXMKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9pbnRlcm5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL2ludGVybmFsLmNwcAkocmV2aXNpb24gMTMwNzMpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
aW50ZXJuYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwyNSArNTIsNyBAQCBleHRlcm4gaW50
IGtqc3l5cGFyc2UoKTsKIAogbmFtZXNwYWNlIEtKUyB7CiAKLSNpZiAhX19BUFBMRV9fCi0gCi0j
aWZkZWYgV09SRFNfQklHRU5ESUFOCi0gIGNvbnN0IHVuc2lnbmVkIGNoYXIgTmFOX0J5dGVzW10g
PSB7IDB4N2YsIDB4ZjgsIDAsIDAsIDAsIDAsIDAsIDAgfTsKLSAgY29uc3QgdW5zaWduZWQgY2hh
ciBJbmZfQnl0ZXNbXSA9IHsgMHg3ZiwgMHhmMCwgMCwgMCwgMCwgMCwgMCwgMCB9OwotI2VsaWYg
ZGVmaW5lZChhcm0pCi0gIGNvbnN0IHVuc2lnbmVkIGNoYXIgTmFOX0J5dGVzW10gPSB7IDAsIDAs
IDB4ZjgsIDB4N2YsIDAsIDAsIDAsIDAgfTsKLSAgY29uc3QgdW5zaWduZWQgY2hhciBJbmZfQnl0
ZXNbXSA9IHsgMCwgMCwgMHhmMCwgMHg3ZiwgMCwgMCwgMCwgMCB9OwotI2Vsc2UKLSAgY29uc3Qg
dW5zaWduZWQgY2hhciBOYU5fQnl0ZXNbXSA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMHhmOCwgMHg3
ZiB9OwotICBjb25zdCB1bnNpZ25lZCBjaGFyIEluZl9CeXRlc1tdID0geyAwLCAwLCAwLCAwLCAw
LCAwLCAweGYwLCAweDdmIH07Ci0jZW5kaWYKLSAKLSAgY29uc3QgZG91YmxlIE5hTiA9ICooY29u
c3QgZG91YmxlKikgTmFOX0J5dGVzOwotICBjb25zdCBkb3VibGUgSW5mID0gKihjb25zdCBkb3Vi
bGUqKSBJbmZfQnl0ZXM7Ci0gCi0jZW5kaWYKLQotI2lmIFdJTjMyCisjaWYgUExBVEZPUk0oV0lO
X09TKQogI2RlZmluZSBjb3B5c2lnbiBfY29weXNpZ24KICNlbmRpZgogCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ranMvdGVzdGtqcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L3Rlc3RranMuY3BwCShyZXZpc2lvbiAxMzA3MykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy90ZXN0
a2pzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPHN0ZGlv
Lmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaWYgSEFWRV9T
WVNfVElNRV9ICisjaWYgSEFWRShTWVNfVElNRV9IKQogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAj
ZW5kaWYKIApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgbG9uZyBnZXRFbGFwc2VkTVMo
KTsgLy8gY2FsbCBzdG9wKCkgZmlyc3QKICAgICAKIHByaXZhdGU6Ci0jaWYgIVdJTjMyCisjaWYg
IVBMQVRGT1JNKFdJTl9PUykKICAgICAvLyBXaW5kb3dzIGRvZXMgbm90IGhhdmUgdGltZXZhbCwg
ZGlzYWJsaW5nIHRoaXMgY2xhc3MgZm9yIG5vdyAoYnVnIDczOTkpCiAgICAgdGltZXZhbCBtX3N0
YXJ0VGltZTsKICAgICB0aW1ldmFsIG1fc3RvcFRpbWU7CkBAIC02MSwyMSArNjEsMjEgQEAgcHJp
dmF0ZToKIAogdm9pZCBTdG9wV2F0Y2g6OnN0YXJ0KCkKIHsKLSNpZiAhV0lOMzIKKyNpZiAhUExB
VEZPUk0oV0lOX09TKQogICAgIGdldHRpbWVvZmRheSgmbV9zdGFydFRpbWUsIDApOwogI2VuZGlm
CiB9CiAKIHZvaWQgU3RvcFdhdGNoOjpzdG9wKCkKIHsKLSNpZiAhV0lOMzIKKyNpZiAhUExBVEZP
Uk0oV0lOX09TKQogICAgIGdldHRpbWVvZmRheSgmbV9zdG9wVGltZSwgMCk7CiAjZW5kaWYKIH0K
IAogbG9uZyBTdG9wV2F0Y2g6OmdldEVsYXBzZWRNUygpCiB7Ci0jaWYgIVdJTjMyCisjaWYgIVBM
QVRGT1JNKFdJTl9PUykKICAgICB0aW1ldmFsIGVsYXBzZWRUaW1lOwogICAgIHRpbWVyc3ViKCZt
X3N0b3BUaW1lLCAmbV9zdGFydFRpbWUsICZlbGFwc2VkVGltZSk7CiAgICAgCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvcmVnZXhwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvcmVnZXhwLmNwcAkocmV2aXNpb24gMTMwNzMpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvcmVn
ZXhwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgS0pTIHsK
IFJlZ0V4cDo6UmVnRXhwKGNvbnN0IFVTdHJpbmcgJnAsIGludCBmbGFncykKICAgOiBfZmxhZ3Mo
ZmxhZ3MpLCBfbnVtU3ViUGF0dGVybnMoMCkKIHsKLSNpZmRlZiBIQVZFX1BDUkVQT1NJWAorI2lm
IEhBVkUoUENSRVBPU0lYKQogCiAgIGludCBvcHRpb25zID0gUENSRV9VVEY4OwogICAvLyBOb3Rl
OiB0aGUgR2xvYmFsIGZsYWcgaXMgYWxyZWFkeSBoYW5kbGVkIGJ5IFJlZ0V4cFByb3RvRnVuYzo6
ZXhlY3V0ZS4KQEAgLTYwLDcgKzYwLDcgQEAgUmVnRXhwOjpSZWdFeHAoY29uc3QgVVN0cmluZyAm
cCwgaW50IGZsYQogICBwY3JlX2Z1bGxpbmZvKF9yZWdleCwgTlVMTCwgUENSRV9JTkZPX0NBUFRV
UkVDT1VOVCwgJl9udW1TdWJQYXR0ZXJucyk7CiAjZW5kaWYKIAotI2Vsc2UgLyogSEFWRV9QQ1JF
UE9TSVggKi8KKyNlbHNlIC8qIEhBVkUoUENSRVBPU0lYKSAqLwogCiAgIGludCByZWdmbGFncyA9
IDA7CiAjaWZkZWYgUkVHX0VYVEVOREVECkBAIC04NCw3ICs4NCw3IEBAIFJlZ0V4cDo6UmVnRXhw
KGNvbnN0IFVTdHJpbmcgJnAsIGludCBmbGEKIAogUmVnRXhwOjp+UmVnRXhwKCkKIHsKLSNpZmRl
ZiBIQVZFX1BDUkVQT1NJWAorI2lmIEhBVkUoUENSRVBPU0lYKQogICBwY3JlX2ZyZWUoX3JlZ2V4
KTsKICNlbHNlCiAgIC8qIFRPRE86IGlzIHRoaXMgcmVhbGx5IG9rYXkgYWZ0ZXIgYW4gZXJyb3Ig
PyAqLwpAQCAtMTA2LDcgKzEwNiw3IEBAIFVTdHJpbmcgUmVnRXhwOjptYXRjaChjb25zdCBVU3Ry
aW5nICZzLCAKICAgaWYgKGkgPiBzLnNpemUoKSB8fCBzLmlzTnVsbCgpKQogICAgIHJldHVybiBV
U3RyaW5nOjpudWxsKCk7CiAKLSNpZmRlZiBIQVZFX1BDUkVQT1NJWAorI2lmIEhBVkUoUENSRVBP
U0lYKQogCiAgIGlmICghX3JlZ2V4KQogICAgIHJldHVybiBVU3RyaW5nOjpudWxsKCk7CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ranMvb2JqZWN0LmNwcAkocmV2aXNpb24gMTMwNzMpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsOSArNDAsNyBAQAogI2luY2x1ZGUg
ImVycm9yX29iamVjdC5oIgogI2luY2x1ZGUgIm5vZGVzLmgiCiAKLSNpZm5kZWYgTkRFQlVHCi0v
LyNkZWZpbmUgSkFWQVNDUklQVF9DQUxMX1RSQUNJTkcgMQotI2VuZGlmCisjZGVmaW5lIEpBVkFT
Q1JJUFRfQ0FMTF9UUkFDSU5HIDAKIAogI2lmIEpBVkFTQ1JJUFRfQ0FMTF9UUkFDSU5HCiBzdGF0
aWMgYm9vbCBfdHJhY2VKYXZhU2NyaXB0ID0gZmFsc2U7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvaWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2lkZW50
aWZpZXIuY3BwCShyZXZpc2lvbiAxMzA3MykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9pZGVudGlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogLy8gcG9ydGFibGUsIGFu
ZCBpdCB3b3VsZCBiZSBnb29kIHRvIGZpZ3VyZSBvdXQgYSAxMDAlIGNsZWFuIHdheSB0aGF0IHN0
aWxsIGF2b2lkcyBjb2RlIHRoYXQKIC8vIHJ1bnMgYXQgaW5pdCB0aW1lLgogCi0jaWYgIWRlZmlu
ZWQoV0lOMzIpIC8vIGNhbid0IGdldCB0aGlzIHRvIGNvbXBpbGUgb24gVmlzdWFsIEMrKyB5ZXQK
KyNpZiAhUExBVEZPUk0oV0lOX09TKSAvLyBjYW4ndCBnZXQgdGhpcyB0byBjb21waWxlIG9uIFZp
c3VhbCBDKysgeWV0CiAjZGVmaW5lIEFWT0lEX1NUQVRJQ19DT05TVFJVQ1RPUlMgMQogI2VuZGlm
CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9yZWdleHAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvcmVnZXhwLmgJKHJldmlzaW9uIDEzMDczKQorKysgSmF2YVNjcmlwdENv
cmUva2pzL3JlZ2V4cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTMgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCi0jaWZkZWYgSEFWRV9QQ1JFUE9TSVgKKyNpZiBIQVZFKFBDUkVQ
T1NJWCkKICNpbmNsdWRlIDxwY3JlLmg+CiAjZWxzZSAgLy8gUE9TSVggcmVnZXggLSBub3Qgc28g
Z29vZC4uLgogZXh0ZXJuICJDIiB7IC8vIGJ1ZyB3aXRoIHNvbWUgbGliYzUgZGlzdHJpYnV0aW9u
cwogI2luY2x1ZGUgPHJlZ2V4Lmg+CiB9Ci0jZW5kaWYgLy9IQVZFX1BDUkVQT1NJWAorI2VuZGlm
IC8vIEhBVkUoUENSRVBPU0lYKQogCiAjaW5jbHVkZSAidXN0cmluZy5oIgogCkBAIC01MSw3ICs1
MSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHVuc2lnbmVkIHN1YlBhdHRlcm5zKCkgY29uc3Qg
eyByZXR1cm4gX251bVN1YlBhdHRlcm5zOyB9CiAKICAgcHJpdmF0ZToKLSNpZmRlZiBIQVZFX1BD
UkVQT1NJWAorI2lmIEhBVkUoUENSRVBPU0lYKQogICAgIHBjcmUgKl9yZWdleDsKICNlbHNlCiAg
ICAgcmVnZXhfdCBfcmVnZXg7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmgJKHJldmlzaW9uIDEzMDcz
KQorKysgSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
MTUgKzI4LDYgQEAKICNpbmNsdWRlIDxreG1sY29yZS9SZWZQdHIuaD4KICNpbmNsdWRlIDxreG1s
Y29yZS9QYXNzUmVmUHRyLmg+CiAKLSNpZiBfX0FQUExFX18KLSNpbmNsdWRlIDxzeXMvdHlwZXMu
aD4KLSNpZm5kZWYgS1dRX1VOU0lHTkVEX1RZUEVTX0RFRklORUQKLSNkZWZpbmUgS1dRX1VOU0lH
TkVEX1RZUEVTX0RFRklORUQKLXR5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcjsKLXR5cGVkZWYg
dW5zaWduZWQgbG9uZyB1bG9uZzsKLSNlbmRpZgotI2VuZGlmCi0KICNpbmNsdWRlIDxzdGRpbnQu
aD4KIAogLyoqCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5oCShyZXZpc2lvbiAxMzA3MykKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAog
CiAvLyBtYXhpbXVtIGdsb2JhbCBjYWxsIHN0YWNrIHNpemUuIFByb3RlY3RzIGFnYWluc3QgYWNj
aWRlbnRhbCBvcgogLy8gbWFsaWNpb3VzIGluZmluaXRlIHJlY3Vyc2lvbnMuIERlZmluZSB0byAt
MSBpZiB5b3Ugd2FudCBubyBsaW1pdC4KLSNpZiBfX0FQUExFX18KKyNpZiBQTEFURk9STShEQVJX
SU4pCiAvLyBHaXZlbiBPUyBYIHN0YWNrIHNpemVzIHdlIHJ1biBvdXQgb2Ygc3RhY2sgYXQgYWJv
dXQgMzUwIGxldmVscy4KIC8vIElmIHdlIGltcHJvdmUgb3VyIHN0YWNrIHVzYWdlLCB3ZSBjYW4g
YnVtcCB0aGlzIG51bWJlci4KICNkZWZpbmUgS0pTX01BWF9TVEFDSyAxMDAKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9ncmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L2dyYW1tYXIueQkocmV2aXNpb24gMTMwNzMpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZ3JhbW1h
ci55CSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsNyBAQAogLyoKICAqICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcwogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zNyw3ICszOCw4IEBACiAK
IC8qIGRlZmF1bHQgdmFsdWVzIGZvciBiaXNvbiAqLwogI2RlZmluZSBZWURFQlVHIDAKLSNpZiAh
X19BUFBMRV9fIC8qIHdvcmsgYXJvdW5kIHRoZSBmYWN0IHRoYXQgWVlFUlJPUl9WRVJCT1NFIGNh
dXNlcyBhIGNvbXBpbGVyIHdhcm5pbmcgaW4gYmlzb24gY29kZSAqLworI2lmICFQTEFURk9STShE
QVJXSU4pCisgICAgLy8gYXZvaWQgdHJpZ2dlcmluZyB3YXJuaW5ncyBpbiBvbGRlciBiaXNvbgog
I2RlZmluZSBZWUVSUk9SX1ZFUkJPU0UKICNlbmRpZgogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvbWF0aF9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9tYXRo
X29iamVjdC5jcHAJKHJldmlzaW9uIDEzMDczKQorKysgSmF2YVNjcmlwdENvcmUva2pzL21hdGhf
b2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVkZSAi
bWF0aF9vYmplY3QubHV0LmgiCiAKLSNpZiBXSU4zMgorI2lmIFBMQVRGT1JNKFdJTl9PUykKIAog
I2luY2x1ZGUgPGZsb2F0Lmg+CiBzdGF0aWMgaW50IHNpZ25iaXQoZG91YmxlIGQpCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ranMvY29sbGVjdG9yLmNwcAkocmV2aXNpb24gMTMwNzMpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvY29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjkgKzMyLDI5IEBACiAj
aW5jbHVkZSA8c2V0am1wLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi0jaWYgX19BUFBMRV9f
CisjaWYgUExBVEZPUk0oREFSV0lOKQogCiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2luY2x1ZGUg
PG1hY2gvbWFjaF9wb3J0Lmg+CiAjaW5jbHVkZSA8bWFjaC90YXNrLmg+CiAjaW5jbHVkZSA8bWFj
aC90aHJlYWRfYWN0Lmg+CiAKLSNlbGlmIFdJTjMyCisjZWxpZiBQTEFURk9STShXSU5fT1MpCiAK
ICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKLSNlbHNlCisjZWxpZiBQTEFURk9STShVTklYKQogCiAj
aW5jbHVkZSA8cHRocmVhZC5oPgogCi0jaWZkZWYgSEFWRV9QVEhSRUFEX05QX0gKLQorI2lmIEhB
VkUoUFRIUkVBRF9OUF9IKQogI2luY2x1ZGUgPHB0aHJlYWRfbnAuaD4KLQogI2VuZGlmCiAKICNl
bmRpZgogCisjZGVmaW5lIERFQlVHX0NPTExFQ1RPUiAwCisKIHVzaW5nIHN0ZDo6bWF4OwogCiBu
YW1lc3BhY2UgS0pTIHsKQEAgLTE5MSw3ICsxOTEsNyBAQCBhbGxvY2F0ZU5ld0Jsb2NrOgogICBy
ZXR1cm4gbmV3Q2VsbDsKIH0KIAotI2lmIEtKU19NVUxUSVBMRV9USFJFQURTCisjaWYgVVNFKE1V
TFRJUExFX1RIUkVBRFMpCiAKIHN0cnVjdCBDb2xsZWN0b3I6OlRocmVhZCB7CiAgIFRocmVhZChw
dGhyZWFkX3QgcHRocmVhZCwgbWFjaF9wb3J0X3QgbXRocmVhZCkgOiBwb3NpeFRocmVhZChwdGhy
ZWFkKSwgbWFjaFRocmVhZChtdGhyZWFkKSB7fQpAQCAtMzAwLDIzICszMDAsMjMgQEAgdm9pZCBD
b2xsZWN0b3I6Om1hcmtDdXJyZW50VGhyZWFkQ29uc2VydgogICAgIGptcF9idWYgcmVnaXN0ZXJz
OwogICAgIHNldGptcChyZWdpc3RlcnMpOwogCi0jaWYgX19BUFBMRV9fCisjaWYgUExBVEZPUk0o
REFSV0lOKQogICAgIHB0aHJlYWRfdCB0aHJlYWQgPSBwdGhyZWFkX3NlbGYoKTsKICAgICB2b2lk
ICpzdGFja0Jhc2UgPSBwdGhyZWFkX2dldF9zdGFja2FkZHJfbnAodGhyZWFkKTsKLSNlbGlmIFdJ
TjMyCisjZWxpZiBQTEFURk9STShXSU5fT1MpICYmIFBMQVRGT1JNKFg4NikgJiYgQ09NUElMRVIo
TVNWQykKICAgICBOVF9USUIgKnBUaWI7CiAgICAgX19hc20gewogICAgICAgICBNT1YgRUFYLCBG
UzpbMThoXQogICAgICAgICBNT1YgcFRpYiwgRUFYCiAgICAgfQogICAgIHZvaWQgKnN0YWNrQmFz
ZSA9ICh2b2lkICopcFRpYi0+U3RhY2tCYXNlOwotI2Vsc2UKKyNlbGlmIFBMQVRGT1JNKFVOSVgp
CiAgICAgc3RhdGljIHZvaWQgKnN0YWNrQmFzZSA9IDA7CiAgICAgc3RhdGljIHB0aHJlYWRfdCBz
dGFja1RocmVhZDsKICAgICBwdGhyZWFkX3QgdGhyZWFkID0gcHRocmVhZF9zZWxmKCk7CiAgICAg
aWYgKHN0YWNrQmFzZSA9PSAwIHx8IHRocmVhZCAhPSBzdGFja1RocmVhZCkgewogICAgICAgICBw
dGhyZWFkX2F0dHJfdCBzYXR0cjsKLSNpZmRlZiBIQVZFX1BUSFJFQURfTlBfSAorI2lmIEhBVkUo
UFRIUkVBRF9OUF9IKQogICAgICAgICAvLyBlLmcuIG9uIEZyZWVCU0QgNS40LCBuZXVuZG9yZkBr
ZGUub3JnCiAgICAgICAgIHB0aHJlYWRfYXR0cl9nZXRfbnAodGhyZWFkLCAmc2F0dHIpOwogI2Vs
c2UKQEAgLTMyOSw2ICszMjksOCBAQCB2b2lkIENvbGxlY3Rvcjo6bWFya0N1cnJlbnRUaHJlYWRD
b25zZXJ2CiAgICAgICAgIGFzc2VydChzdGFja0Jhc2UpOwogICAgICAgICBzdGFja1RocmVhZCA9
IHRocmVhZDsKICAgICB9CisjZWxzZQorI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBzdGFj
ayBiYXNlIG9uIHRoaXMgcGxhdGZvcm0KICNlbmRpZgogCiAgICAgaW50IGR1bW15OwpAQCAtMzM3
LDcgKzMzOSw3IEBAIHZvaWQgQ29sbGVjdG9yOjptYXJrQ3VycmVudFRocmVhZENvbnNlcnYKICAg
ICBtYXJrU3RhY2tPYmplY3RzQ29uc2VydmF0aXZlbHkoc3RhY2tQb2ludGVyLCBzdGFja0Jhc2Up
OwogfQogCi0jaWYgS0pTX01VTFRJUExFX1RIUkVBRFMKKyNpZiBVU0UoTVVMVElQTEVfVEhSRUFE
UykKIAogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVzd29yZF90OyAvLyB3b3JkIHNpemUsIGFzc3Vt
ZWQgdG8gYmUgZWl0aGVyIDMyIG9yIDY0IGJpdAogCkBAIC0zNDUsMTUgKzM0NywxNSBAQCB2b2lk
IENvbGxlY3Rvcjo6bWFya090aGVyVGhyZWFkQ29uc2VydmF0CiB7CiAgIHRocmVhZF9zdXNwZW5k
KHRocmVhZC0+bWFjaFRocmVhZCk7CiAKLSNpZiBLSlNfQ1BVX1g4NgorI2lmIFBMQVRGT1JNKFg4
NikKICAgaTM4Nl90aHJlYWRfc3RhdGVfdCByZWdzOwogICB1bnNpZ25lZCB1c2VyX2NvdW50ID0g
c2l6ZW9mKHJlZ3MpL3NpemVvZihpbnQpOwogICB0aHJlYWRfc3RhdGVfZmxhdm9yX3QgZmxhdm9y
ID0gaTM4Nl9USFJFQURfU1RBVEU7Ci0jZWxpZiBLSlNfQ1BVX1BQQworI2VsaWYgUExBVEZPUk0o
UFBDKQogICBwcGNfdGhyZWFkX3N0YXRlX3QgIHJlZ3M7CiAgIHVuc2lnbmVkIHVzZXJfY291bnQg
PSBQUENfVEhSRUFEX1NUQVRFX0NPVU5UOwogICB0aHJlYWRfc3RhdGVfZmxhdm9yX3QgZmxhdm9y
ID0gUFBDX1RIUkVBRF9TVEFURTsKLSNlbGlmIEtKU19DUFVfUFBDNjQKKyNlbGlmIFBMQVRGT1JN
KFBQQzY0KQogICBwcGNfdGhyZWFkX3N0YXRlNjRfdCAgcmVnczsKICAgdW5zaWduZWQgdXNlcl9j
b3VudCA9IFBQQ19USFJFQURfU1RBVEU2NF9DT1VOVDsKICAgdGhyZWFkX3N0YXRlX2ZsYXZvcl90
IGZsYXZvciA9IFBQQ19USFJFQURfU1RBVEU2NDsKQEAgLTM2Nyw5ICszNjksOSBAQCB2b2lkIENv
bGxlY3Rvcjo6bWFya090aGVyVGhyZWFkQ29uc2VydmF0CiAgIG1hcmtTdGFja09iamVjdHNDb25z
ZXJ2YXRpdmVseSgodm9pZCAqKSZyZWdzLCAodm9pZCAqKSgoY2hhciAqKSZyZWdzICsgKHVzZXJf
Y291bnQgKiBzaXplb2YodXN3b3JkX3QpKSkpOwogICAKICAgLy8gc2NhbiB0aGUgc3RhY2sKLSNp
ZiBLSlNfQ1BVX1g4NgorI2lmIFBMQVRGT1JNKFg4NikKICAgbWFya1N0YWNrT2JqZWN0c0NvbnNl
cnZhdGl2ZWx5KCh2b2lkICopcmVncy5lc3AsIHB0aHJlYWRfZ2V0X3N0YWNrYWRkcl9ucCh0aHJl
YWQtPnBvc2l4VGhyZWFkKSk7Ci0jZWxpZiBLSlNfQ1BVX1BQQyB8fCBLSlNfQ1BVX1BQQzY0Cisj
ZWxpZiBQTEFURk9STShQUEMpIHx8IFBMQVRGT1JNKFBQQzY0KQogICBtYXJrU3RhY2tPYmplY3Rz
Q29uc2VydmF0aXZlbHkoKHZvaWQgKilyZWdzLnIxLCBwdGhyZWFkX2dldF9zdGFja2FkZHJfbnAo
dGhyZWFkLT5wb3NpeFRocmVhZCkpOwogI2Vsc2UKICNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVy
ZQpAQCAtMzg0LDcgKzM4Niw3IEBAIHZvaWQgQ29sbGVjdG9yOjptYXJrU3RhY2tPYmplY3RzQ29u
c2VydmEKIHsKICAgbWFya0N1cnJlbnRUaHJlYWRDb25zZXJ2YXRpdmVseSgpOwogCi0jaWYgS0pT
X01VTFRJUExFX1RIUkVBRFMKKyNpZiBVU0UoTVVMVElQTEVfVEhSRUFEUykKICAgZm9yIChUaHJl
YWQgKnRocmVhZCA9IHJlZ2lzdGVyZWRUaHJlYWRzOyB0aHJlYWQgIT0gTlVMTDsgdGhyZWFkID0g
dGhyZWFkLT5uZXh0KSB7CiAgICAgaWYgKHRocmVhZC0+cG9zaXhUaHJlYWQgIT0gcHRocmVhZF9z
ZWxmKCkpIHsKICAgICAgIG1hcmtPdGhlclRocmVhZENvbnNlcnZhdGl2ZWx5KHRocmVhZCk7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvb3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9vcGVyYXRpb25zLmgJKHJldmlzaW9uIDEzMDczKQorKysgSmF2YVNjcmlw
dENvcmUva2pzL29wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTkgKzI4LDEzIEBA
IG5hbWVzcGFjZSBLSlMgewogICBjbGFzcyBFeGVjU3RhdGU7CiAgIGNsYXNzIEpTVmFsdWU7CiAK
LSNpZiBfX0FQUExFX18KKyNpZiBQTEFURk9STShEQVJXSU4pCiAgIGlubGluZSBib29sIGlzTmFO
KGRvdWJsZSBkKSB7IHJldHVybiBpc25hbihkKTsgfQogICBpbmxpbmUgYm9vbCBpc0luZihkb3Vi
bGUgZCkgeyByZXR1cm4gaXNpbmYoZCk7IH0KICAgaW5saW5lIGJvb2wgaXNQb3NJbmYoZG91Ymxl
IGQpIHsgcmV0dXJuIGlzaW5mKGQpICYmIGQgPiAwOyB9CiAgIGlubGluZSBib29sIGlzTmVnSW5m
KGRvdWJsZSBkKSB7IHJldHVybiBpc2luZihkKSAmJiBkIDwgMDsgfQogI2Vsc2UKLSAgLyoqCi0g
ICAqIEByZXR1cm4gVHJ1ZSBpZiBkIGlzIG5vdCBhIG51bWJlciAocGxhdGZvcm0gc3VwcG9ydCBy
ZXF1aXJlZCkuCi0gICAqLwogICBib29sIGlzTmFOKGRvdWJsZSBkKTsKLSAgLyoqCi0gICAqIEBy
ZXR1cm4gVHJ1ZSBpZiBkIGlzIGluZmluaXRlIChwbGF0Zm9ybSBzdXBwb3J0IHJlcXVpcmVkKS4K
LSAgICovCiAgIGJvb2wgaXNJbmYoZG91YmxlIGQpOwogICBib29sIGlzUG9zSW5mKGRvdWJsZSBk
KTsKICAgYm9vbCBpc05lZ0luZihkb3VibGUgZCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMv
dXN0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuY3Bw
CShyZXZpc2lvbiAxMzA3MykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDEwIEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5j
bHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdHlwZS5oPgotI2lmZGVmIEhBVkVfU1RSSU5HX0gK
KyNpZiBIQVZFKFNUUklOR19IKQogI2luY2x1ZGUgPHN0cmluZy5oPgogI2VuZGlmCi0jaWZkZWYg
SEFWRV9TVFJJTkdTX0gKKyNpZiBIQVZFKFNUUklOR1NfSCkKICNpbmNsdWRlIDxzdHJpbmdzLmg+
CiAjZW5kaWYKIApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2RhdGVfb2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZGF0ZV9vYmplY3QuY3BwCShyZXZpc2lvbiAx
MzA3MykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9kYXRlX29iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDE5ICsyMiwxOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImRh
dGVfb2JqZWN0LmgiCiAKLSNpZiBIQVZFX0VSUk5PX0gKKyNpZiBIQVZFKEVSUk5PX0gpCiAjaW5j
bHVkZSA8ZXJybm8uaD4KICNlbmRpZgogCi0jaWYgSEFWRV9TWVNfUEFSQU1fSAorI2lmIEhBVkUo
U1lTX1BBUkFNX0gpCiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjZW5kaWYKIAotI2lmIEhBVkVf
U1lTX1RJTUVfSAorI2lmIEhBVkUoU1lTX1RJTUVfSCkKICNpbmNsdWRlIDxzeXMvdGltZS5oPgog
I2VuZGlmCiAKLSNpZiBIQVZFX1NZU19USU1FQl9ICisjaWYgSEFWRShTWVNfVElNRUJfSCkKICNp
bmNsdWRlIDxzeXMvdGltZWIuaD4KICNlbmRpZgogCkBAIC01MSwxMSArNTEsMTEgQEAKICNpbmNs
dWRlICJlcnJvcl9vYmplY3QuaCIKICNpbmNsdWRlICJvcGVyYXRpb25zLmgiCiAKLSNpZiBfX0FQ
UExFX18KKyNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KICNlbmRpZgogCi0jaWYgV0lOMzIKKyNpZiBQTEFURk9STShXSU5fT1MpCiAj
ZGVmaW5lIGNvcHlzaWduKHgsIHkpIF9jb3B5c2lnbih4LCB5KQogI2RlZmluZSBpc2Zpbml0ZSh4
KSBfZmluaXRlKHgpCiAjZGVmaW5lIHN0cm5jYXNlY21wKHgsIHksIHopIHN0cm5pY21wKHgsIHks
IHopCkBAIC02NCw3ICs2NCw3IEBACiAKIGlubGluZSBpbnQgZ210b2Zmc2V0KGNvbnN0IHRtJiB0
KQogewotI2lmIFdJTjMyCisjaWYgUExBVEZPUk0oV0lOX09TKQogICAgIC8vIFRpbWUgaXMgc3Vw
cG9zZWQgdG8gYmUgaW4gdGhlIGN1cnJlbnQgdGltZXpvbmUuCiAgICAgLy8gRklYTUU6IFVzZSB1
bmRvY3VtZW50ZWQgX2RzdGJpYXM/CiAgICAgcmV0dXJuIC0oX3RpbWV6b25lIC8gNjAgLSAodC50
bV9pc2RzdCA+IDAgPyA2MCA6IDAgKSkgKiA2MDsKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMg
ZG91YmxlIHBhcnNlRGF0ZShjb25zdCBVU3RyaW5nICYpCiBzdGF0aWMgZG91YmxlIHRpbWVDbGlw
KGRvdWJsZSk7CiBzdGF0aWMgdm9pZCBtaWxsaXNlY29uZHNUb1RNKGRvdWJsZSBtaWxsaSwgYm9v
bCB1dGMsIHRtICp0KTsKIAotI2lmIF9fQVBQTEVfXworI2lmIFBMQVRGT1JNKE1BQykKIAogc3Rh
dGljIENGRGF0ZUZvcm1hdHRlclN0eWxlIHN0eWxlRnJvbUFyZ1N0cmluZyhjb25zdCBVU3RyaW5n
JiBzdHJpbmcsIENGRGF0ZUZvcm1hdHRlclN0eWxlIGRlZmF1bHRTdHlsZSkKIHsKQEAgLTIwNiw3
ICsyMDYsNyBAQCBzdGF0aWMgVVN0cmluZyBmb3JtYXRMb2NhbGVEYXRlKEV4ZWNTdGF0CiAgICAg
cmV0dXJuIFVTdHJpbmcoYnVmZmVyLCBsZW5ndGgpOwogfQogCi0jZW5kaWYgLy8gX19BUFBMRV9f
CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiBzdGF0aWMgVVN0cmluZyBmb3JtYXREYXRlKGNv
bnN0IHRtICZ0KQogewpAQCAtMjMwLDcgKzIzMCw4IEBAIHN0YXRpYyBVU3RyaW5nIGZvcm1hdFRp
bWUoY29uc3QgdG0gJnQsIGIKIHsKICAgICBjaGFyIGJ1ZmZlclsxMDBdOwogICAgIGlmICh1dGMp
IHsKLSNpZiAhV0lOMzIKKyAgICAgICAgLy8gRklYTUU6IHdoeSBub3Qgb24gd2luZG93cz8KKyNp
ZiAhUExBVEZPUk0oV0lOX09TKQogICAgICAgICBBU1NFUlQodC50bV9nbXRvZmYgPT0gMCk7CiAj
ZW5kaWYKICAgICAgICAgc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiUwMmQ6JTAy
ZDolMDJkIEdNVCIsIHQudG1faG91ciwgdC50bV9taW4sIHQudG1fc2VjKTsKQEAgLTU1Myw3ICs1
NTQsNyBAQCBKU1ZhbHVlICpEYXRlUHJvdG9GdW5jOjpjYWxsQXNGdW5jdGlvbihFCiAKICAgSlNW
YWx1ZSAqcmVzdWx0ID0gMDsKICAgVVN0cmluZyBzOwotI2lmICFfX0FQUExFX18KKyNpZiAhUExB
VEZPUk0oREFSV0lOKQogICBjb25zdCBpbnQgYnVmc2l6ZT0xMDA7CiAgIGNoYXIgdGltZWJ1ZmZl
cltidWZzaXplXTsKICAgQ1N0cmluZyBvbGRsb2NhbGUgPSBzZXRsb2NhbGUoTENfVElNRSwgMCk7
CkBAIC02MDksNyArNjEwLDcgQEAgSlNWYWx1ZSAqRGF0ZVByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rp
b24oRQogICBjYXNlIFRvVVRDU3RyaW5nOgogICAgIHJldHVybiBqc1N0cmluZyhmb3JtYXREYXRl
VVRDVmFyaWFudCh0KSArICIgIiArIGZvcm1hdFRpbWUodCwgdXRjKSk7CiAgICAgYnJlYWs7Ci0j
aWYgX19BUFBMRV9fCisjaWYgUExBVEZPUk0oTUFDKQogICBjYXNlIFRvTG9jYWxlU3RyaW5nOgog
ICAgIHJldHVybiBqc1N0cmluZyhmb3JtYXRMb2NhbGVEYXRlKGV4ZWMsIHNlY3MsIHRydWUsIHRy
dWUsIGFyZ3MpKTsKICAgICBicmVhazsKQEAgLTczNCwxOSArNzM1LDE5IEBAIEpTT2JqZWN0ICpE
YXRlT2JqZWN0SW1wOjpjb25zdHJ1Y3QoRXhlY1MKICAgZG91YmxlIHZhbHVlOwogCiAgIGlmIChu
dW1BcmdzID09IDApIHsgLy8gbmV3IERhdGUoKSBFQ01BIDE1LjkuMy4zCi0jaWYgIVdJTjMyCi0g
ICAgc3RydWN0IHRpbWV2YWwgdHY7Ci0gICAgZ2V0dGltZW9mZGF5KCZ0diwgMCk7Ci0gICAgZG91
YmxlIHV0YyA9IGZsb29yKHR2LnR2X3NlYyAqIG1zUGVyU2Vjb25kICsgdHYudHZfdXNlYyAvIDEw
MDApOwotI2Vsc2UKLSMgIGlmIF9fQk9STEFORENfXworI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNp
ZiBDT01QSUxFUihCT1JMQU5EKQogICAgIHN0cnVjdCB0aW1lYiB0aW1lYnVmZmVyOwogICAgIGZ0
aW1lKCZ0aW1lYnVmZmVyKTsKLSMgIGVsc2UKKyNlbHNlCiAgICAgc3RydWN0IF90aW1lYiB0aW1l
YnVmZmVyOwogICAgIF9mdGltZSgmdGltZWJ1ZmZlcik7Ci0jICBlbmRpZgorI2VuZGlmCiAgICAg
ZG91YmxlIHV0YyA9IHRpbWVidWZmZXIudGltZSAqIG1zUGVyU2Vjb25kICsgdGltZWJ1ZmZlci5t
aWxsaXRtOworI2Vsc2UKKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKyAgICBnZXR0aW1lb2ZkYXko
JnR2LCAwKTsKKyAgICBkb3VibGUgdXRjID0gZmxvb3IodHYudHZfc2VjICogbXNQZXJTZWNvbmQg
KyB0di50dl91c2VjIC8gMTAwMCk7CiAjZW5kaWYKICAgICB2YWx1ZSA9IHV0YzsKICAgfSBlbHNl
IGlmIChudW1BcmdzID09IDEpIHsKQEAgLTg1NCw3ICs4NTUsNyBAQCBzdGF0aWMgaW5saW5lIGRv
dWJsZSB5bWRobXNUb1NlY29uZHMobG9uCiAvLyBXZSBmb2xsb3cgdGhlIHJlY29tbWVuZGF0aW9u
IG9mIFJGQyAyODIyIHRvIGNvbnNpZGVyIGFsbAogLy8gb2Jzb2xldGUgdGltZSB6b25lcyBub3Qg
bGlzdGVkIGhlcmUgZXF1aXZhbGVudCB0byAiLTAwMDAiLgogc3RhdGljIGNvbnN0IHN0cnVjdCBL
bm93blpvbmUgewotI2lmICFXSU4zMgorI2lmICFQTEFURk9STShXSU5fT1MpCiAgICAgY29uc3QK
ICNlbmRpZgogICAgICAgICBjaGFyIHR6TmFtZVs0XTsKQEAgLTg3NywyMCArODc4LDIwIEBAIHN0
YXRpYyBkb3VibGUgbWFrZVRpbWUodG0gKnQsIGRvdWJsZSBtcywKICAgICBpbnQgdXRjT2Zmc2V0
OwogICAgIGlmICh1dGMpIHsKICAgICAgICAgdGltZV90IHplcm8gPSAwOwotI2lmICFXSU4zMgot
ICAgICAgICB0bSB0MzsKLSAgICAgICAgbG9jYWx0aW1lX3IoJnplcm8sICZ0Myk7Ci0gICAgICAg
IHV0Y09mZnNldCA9IHQzLnRtX2dtdG9mZjsKLSAgICAgICAgdC0+dG1faXNkc3QgPSB0My50bV9p
c2RzdDsKLSNlbHNlCisjaWYgUExBVEZPUk0oV0lOX09TKQogICAgICAgICAvLyBGSVhNRTogbm90
IHRocmVhZCBzYWZlCiAgICAgICAgICh2b2lkKWxvY2FsdGltZSgmemVybyk7Ci0jICBpZiBfX0JP
UkxBTkRDX18gfHwgX19DWUdXSU5fXworI2lmIENPTVBJTEVSKEJPUkxBTkQpIHx8IENPTVBJTEVS
KENZR1dJTikKICAgICAgICAgdXRjT2Zmc2V0ID0gLSBfdGltZXpvbmU7Ci0jICBlbHNlCisjZWxz
ZQogICAgICAgICB1dGNPZmZzZXQgPSAtIHRpbWV6b25lOwotIyAgZW5kaWYKKyNlbmRpZgogICAg
ICAgICB0LT50bV9pc2RzdCA9IDA7CisjZWxzZQorICAgICAgICB0bSB0MzsKKyAgICAgICAgbG9j
YWx0aW1lX3IoJnplcm8sICZ0Myk7CisgICAgICAgIHV0Y09mZnNldCA9IHQzLnRtX2dtdG9mZjsK
KyAgICAgICAgdC0+dG1faXNkc3QgPSB0My50bV9pc2RzdDsKICNlbmRpZgogICAgIH0gZWxzZSB7
CiAgICAgICAgIHV0Y09mZnNldCA9IDA7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJw
cmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuaAko
cmV2aXNpb24gMTMwNzMpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzk1LDcgKzM5NSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAqLwog
ICAgIHZpcnR1YWwgYm9vbCBpc1NhZmVTY3JpcHQoY29uc3QgSW50ZXJwcmV0ZXIqKSB7IHJldHVy
biB0cnVlOyB9CiAgIAotI2lmIF9fQVBQTEVfXworI2lmIFBMQVRGT1JNKE1BQykKICAgICB2aXJ0
dWFsIHZvaWQgKmNyZWF0ZUxhbmd1YWdlSW5zdGFuY2VGb3JWYWx1ZShFeGVjU3RhdGUqLCBpbnQg
bGFuZ3VhZ2UsIEpTT2JqZWN0KiB2YWx1ZSwgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3QqIG9y
aWdpbiwgY29uc3QgQmluZGluZ3M6OlJvb3RPYmplY3QqIGN1cnJlbnQpOwogI2VuZGlmCiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9mcGNvbnN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvZnBjb25zdC5jcHAJKHJldmlzaW9uIDEzMDczKQorKysgSmF2YVNjcmlwdENv
cmUva2pzL2ZwY29uc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNiArMzEsMzcgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAvLyBjaGFyYWN0ZXJzIGRvbid0IG5lY2Vzc2FyaWx5IG5lZWQgdGhlIHNh
bWUgYWxpZ25tZW50IGRvdWJsZXMgZG8sIGJ1dCBmb3Igbm93IGl0IHNlZW1zIHRvIHdvcmsuCiAv
LyBJdCB3b3VsZCBiZSBnb29kIHRvIGZpZ3VyZSBvdXQgYSAxMDAlIGNsZWFuIHdheSB0aGF0IHN0
aWxsIGF2b2lkcyBjb2RlIHRoYXQgcnVucyBhdCBpbml0IHRpbWUuCiAKLSNpZiBfX0FQUExFX18K
KyNpZiBQTEFURk9STShEQVJXSU4pCiAKLSNpZmRlZiBXT1JEU19CSUdFTkRJQU4KLSAgZXh0ZXJu
IGNvbnN0IHVuc2lnbmVkIGNoYXIgTmFOW3NpemVvZihkb3VibGUpXSA9IHsgMHg3ZiwgMHhmOCwg
MCwgMCwgMCwgMCwgMCwgMCB9OwotICBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBJbmZbc2l6
ZW9mKGRvdWJsZSldID0geyAweDdmLCAweGYwLCAwLCAwLCAwLCAwLCAwLCAwIH07CisjaWYgUExB
VEZPUk0oQklHX0VORElBTikKKyAgICBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBOYU5bc2l6
ZW9mKGRvdWJsZSldID0geyAweDdmLCAweGY4LCAwLCAwLCAwLCAwLCAwLCAwIH07CisgICAgZXh0
ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgSW5mW3NpemVvZihkb3VibGUpXSA9IHsgMHg3ZiwgMHhm
MCwgMCwgMCwgMCwgMCwgMCwgMCB9OworI2VsaWYgUExBVEZPUk0oTUlERExFX0VORElBTikKKyAg
ICBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBOYU5bXSA9IHsgMCwgMCwgMHhmOCwgMHg3Ziwg
MCwgMCwgMCwgMCB9OworICAgIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIEluZltdID0geyAw
LCAwLCAweGYwLCAweDdmLCAwLCAwLCAwLCAwIH07CiAjZWxzZQotICBleHRlcm4gY29uc3QgdW5z
aWduZWQgY2hhciBOYU5bc2l6ZW9mKGRvdWJsZSldID0geyAwLCAwLCAwLCAwLCAwLCAwLCAweGY4
LCAweDdmIH07Ci0gIGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIEluZltzaXplb2YoZG91Ymxl
KV0gPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDB4ZjAsIDB4N2YgfTsKLSNlbmRpZgorICAgIGV4dGVy
biBjb25zdCB1bnNpZ25lZCBjaGFyIE5hTltzaXplb2YoZG91YmxlKV0gPSB7IDAsIDAsIDAsIDAs
IDAsIDAsIDB4ZjgsIDB4N2YgfTsKKyAgICBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBJbmZb
c2l6ZW9mKGRvdWJsZSldID0geyAwLCAwLCAwLCAwLCAwLCAwLCAweGYwLCAweDdmIH07CisjZW5k
aWYgLy8gUExBVEZPUk0oTUlERExFX0VORElBTikKKworI2Vsc2UgLy8gIVBMQVRGT1JNKERBUldJ
TikKKworI2luY2x1ZGUgInZhbHVlLmgiCiAKKyNpZiBQTEFURk9STShCSUdfRU5ESUFOKQorICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIgTmFOX0J5dGVzW10gPSB7IDB4N2YsIDB4ZjgsIDAsIDAsIDAs
IDAsIDAsIDAgfTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIEluZl9CeXRlc1tdID0geyAweDdm
LCAweGYwLCAwLCAwLCAwLCAwLCAwLCAwIH07CisjZWxpZiBQTEFURk9STShNSURETEVfRU5ESUFO
KQorICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgTmFOX0J5dGVzW10gPSB7IDAsIDAsIDB4ZjgsIDB4
N2YsIDAsIDAsIDAsIDAgfTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIEluZl9CeXRlc1tdID0g
eyAwLCAwLCAweGYwLCAweDdmLCAwLCAwLCAwLCAwIH07CisjZWxzZQorICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIgTmFOX0J5dGVzW10gPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDB4ZjgsIDB4N2YgfTsK
KyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIEluZl9CeXRlc1tdID0geyAwLCAwLCAwLCAwLCAwLCAw
LCAweGYwLCAweDdmIH07CiAjZW5kaWYKKyAgICBjb25zdCBkb3VibGUgTmFOID0gKihjb25zdCBk
b3VibGUqKSBOYU5fQnl0ZXM7CisgICAgY29uc3QgZG91YmxlIEluZiA9ICooY29uc3QgZG91Ymxl
KikgSW5mX0J5dGVzOworIAorI2VuZGlmIC8vICFQTEFURk9STShEQVJXSU4pCisKIAotfQorfSAv
LyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbG9va3VwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2xvb2t1cC5oCShyZXZpc2lvbiAxMzA3MykKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9sb29rdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjk5LDcgKzI5
OSw3IEBAIGlubGluZSBLSlM6OkpTT2JqZWN0ICpjYWNoZUdsb2JhbE9iamVjdCgKICAqLwogCiAv
LyBXb3JrIGFyb3VuZCBhIGJ1ZyBpbiBHQ0MgNC4xCi0jaWYgIV9fR05VQ19fCisjaWYgIUNPTVBJ
TEVSKEdDQykKICNkZWZpbmUgS0pTX0dDQ19ST09UX05TX0hBQ0sgOjoKICNlbHNlCiAjZGVmaW5l
IEtKU19HQ0NfUk9PVF9OU19IQUNLCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvb3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL29wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAxMzA3MykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9vcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsMTMgKzMwLDExIEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNs
dWRlIDxzdGRsaWIuaD4KIAotI2lmbmRlZiBIQVZFX0ZVTkNfSVNJTkYKLSNpZmRlZiBIQVZFX0lF
RUVGUF9ICisjaWYgSEFWRShGVU5DX0lTSU5GKSAmJiBIQVZFKElFRUVGUF9IKQogI2luY2x1ZGUg
PGllZWVmcC5oPgogI2VuZGlmCi0jZW5kaWYgLyogSEFWRV9GVU5DX0lTSU5GICovCiAKLSNpZiBI
QVZFX0ZMT0FUX0gKKyNpZiBIQVZFKEZMT0FUX0gpCiAjaW5jbHVkZSA8ZmxvYXQuaD4KICNlbmRp
ZgogCkBAIC00NCwxMyArNDIsMTYgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKLSNpZiAhX19BUFBM
RV9fCisjaWYgIVBMQVRGT1JNKERBUldJTikKKyAgLy8gRklYTUU6IHNob3VsZCBwcm9iYWJseSBi
ZSBpbmxpbmVkIG9uIG90aGVyIHBsYXRmb3JtcyB0b28sIGFuZCBjb250cm9sbGVkIGV4Y2x1c2l2
ZWx5CisgIC8vIGJ5IEhBVkUgbWFjcm9zCisKIAogYm9vbCBpc05hTihkb3VibGUgZCkKIHsKLSNp
ZmRlZiBIQVZFX0ZVTkNfSVNOQU4KKyNpZiBIQVZFKEZVTkNfSVNOQU4pCiAgIHJldHVybiBpc25h
bihkKTsKLSNlbGlmIGRlZmluZWQgSEFWRV9GTE9BVF9ICisjZWxpZiBIQVZFKEZMT0FUX0gpCiAg
IHJldHVybiBfaXNuYW4oZCkgIT0gMDsKICNlbHNlCiAgIHJldHVybiAhKGQgPT0gZCk7CkBAIC01
OSwxNCArNjAsMTUgQEAgYm9vbCBpc05hTihkb3VibGUgZCkKIAogYm9vbCBpc0luZihkb3VibGUg
ZCkKIHsKLSNpZiBXSU4zMgorICAvLyBGSVhNRTogc2hvdWxkIGJlIEhBVkUoX0ZQQ0xBU1MpCisj
aWYgUExBVEZPUk0oV0lOX09TKQogICBpbnQgZnBDbGFzcyA9IF9mcGNsYXNzKGQpOwogICByZXR1
cm4gX0ZQQ0xBU1NfUElORiA9PSBmcENsYXNzIHx8IF9GUENMQVNTX05JTkYgPT0gZnBDbGFzczsK
LSNlbGlmIGRlZmluZWQoSEFWRV9GVU5DX0lTSU5GKQorI2VsaWYgSEFWRShGVU5DX0lTSU5GKQog
ICByZXR1cm4gaXNpbmYoZCk7Ci0jZWxpZiBIQVZFX0ZVTkNfRklOSVRFCisjZWxpZiBIQVZFKEZV
TkNfRklOSVRFKQogICByZXR1cm4gZmluaXRlKGQpID09IDAgJiYgZCA9PSBkOwotI2VsaWYgSEFW
RV9GVU5DX19GSU5JVEUKKyNlbGlmIEhBVkUoRlVOQ19fRklOSVRFKQogICByZXR1cm4gX2Zpbml0
ZShkKSA9PSAwICYmIGQgPT0gZDsKICNlbHNlCiAgIHJldHVybiBmYWxzZTsKQEAgLTc1LDE0ICs3
NywxNSBAQCBib29sIGlzSW5mKGRvdWJsZSBkKQogCiBib29sIGlzUG9zSW5mKGRvdWJsZSBkKQog
ewotI2lmIFdJTjMyCisgIC8vIEZJWE1FOiBzaG91bGQgYmUgSEFWRShfRlBDTEFTUykKKyNpZiBQ
TEFURk9STShXSU5fT1MpCiAgIHJldHVybiBfRlBDTEFTU19QSU5GID09IF9mcGNsYXNzKGQpOwot
I2VsaWYgZGVmaW5lZChIQVZFX0ZVTkNfSVNJTkYpCisjZWxpZiBIQVZFKEZVTkNfSVNJTkYpCiAg
IHJldHVybiAoaXNpbmYoZCkgPT0gMSk7Ci0jZWxpZiBIQVZFX0ZVTkNfRklOSVRFCi0gIHJldHVy
biBmaW5pdGUoZCkgPT0gMCAmJiBkID09IGQ7IC8vICMjIyBjYW4gd2UgZGlzdGluZ3Vpc2ggYmV0
d2VlbiArIGFuZCAtID8KLSNlbGlmIEhBVkVfRlVOQ19fRklOSVRFCi0gIHJldHVybiBfZmluaXRl
KGQpID09IDAgJiYgZCA9PSBkOyAvLyAjIyMKKyNlbGlmIEhBVkUoRlVOQ19GSU5JVEUpCisgIHJl
dHVybiAhZmluaXRlKGQpICYmIGQgPT0gZDsgLy8gIyMjIGNhbiB3ZSBkaXN0aW5ndWlzaCBiZXR3
ZWVuICsgYW5kIC0gPworI2VsaWYgSEFWRShGVU5DX19GSU5JVEUpCisgIHJldHVybiAhX2Zpbml0
ZShkKSAmJiBkID09IGQ7IC8vICMjIwogI2Vsc2UKICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBA
IC05MCwxMyArOTMsMTQgQEAgYm9vbCBpc1Bvc0luZihkb3VibGUgZCkKIAogYm9vbCBpc05lZ0lu
Zihkb3VibGUgZCkKIHsKLSNpZiBXSU4zMgorICAvLyBGSVhNRTogc2hvdWxkIGJlIEhBVkUoX0ZQ
Q0xBU1MpCisjaWYgUExBVEZPUk0oV0lOX09TKQogICByZXR1cm4gX0ZQQ0xBU1NfTklORiA9PSBf
ZnBjbGFzcyhkKTsKLSNlbGlmIGRlZmluZWQoSEFWRV9GVU5DX0lTSU5GKQorI2VsaWYgSEFWRShG
VU5DX0lTSU5GKQogICByZXR1cm4gKGlzaW5mKGQpID09IC0xKTsKLSNlbGlmIEhBVkVfRlVOQ19G
SU5JVEUKKyNlbGlmIEhBVkUoRlVOQ19GSU5JVEUpCiAgIHJldHVybiBmaW5pdGUoZCkgPT0gMCAm
JiBkID09IGQ7IC8vICMjIwotI2VsaWYgSEFWRV9GVU5DX19GSU5JVEUKKyNlbGlmIEhBVkUoRlVO
Q19fRklOSVRFKQogICByZXR1cm4gX2Zpbml0ZShkKSA9PSAwICYmIGQgPT0gZDsgLy8gIyMjCiAj
ZWxzZQogICByZXR1cm4gZmFsc2U7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNMb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNMb2NrLmNwcAkocmV2aXNpb24g
MTMwNzMpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNMb2NrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQAogCiBuYW1lc3BhY2UgS0pTIHsKIAotI2lmIEtKU19NVUxUSVBMRV9U
SFJFQURTCisjaWYgVVNFKE1VTFRJUExFX1RIUkVBRFMpCiAKIHN0YXRpYyBwdGhyZWFkX29uY2Vf
dCBpbnRlcnByZXRlckxvY2tPbmNlID0gUFRIUkVBRF9PTkNFX0lOSVQ7CiBzdGF0aWMgcHRocmVh
ZF9tdXRleF90IGludGVycHJldGVyTG9jazsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9kdG9h
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZHRvYS5jcHAJKHJldmlzaW9u
IDEzMDczKQorKysgSmF2YVNjcmlwdENvcmUva2pzL2R0b2EuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzIsNyArMTcyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJkdG9hLmgi
CiAKLSNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKyNpZiBQTEFURk9STShCSUdfRU5ESUFOKQogI2Rl
ZmluZSBJRUVFX01DNjhrCiAjZWxzZQogI2RlZmluZSBJRUVFXzgwODcKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfdXRpbGl0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvYmluZGluZ3Mvam5pL2puaV91dGlsaXR5LmNwcAkocmV2aXNpb24gMTMwNzMpCisr
KyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5pX3V0aWxpdHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MzcsNyArNzM3LDcgQEAganZhbHVlIGNvbnZlcnRWYWx1ZVRvSlZhbHVlIChFeGVj
U3RhdGUgKgogICAgICAgICAgICAgLy8gTm93IGNvbnZlcnQgdmFsdWUgdG8gYSBzdHJpbmcgaWYg
dGhlIHRhcmdldCB0eXBlIGlzIGEgamF2YS5sYW5nLnN0cmluZywgYW5kIHdlJ3JlIG5vdAogICAg
ICAgICAgICAgLy8gY29udmVydGluZyBmcm9tIGEgTnVsbC4KICAgICAgICAgICAgIGlmIChyZXN1
bHQubCA9PSAwICYmIHN0cmNtcChqYXZhQ2xhc3NOYW1lLCAiamF2YS5sYW5nLlN0cmluZyIpID09
IDApIHsKLSNpZiBDT05WRVJUX05VTExfVE9fRU1QVFlfU1RSSU5HCisjaWZkZWYgQ09OVkVSVF9O
VUxMX1RPX0VNUFRZX1NUUklORwogCQlpZiAodmFsdWUtPmlzTnVsbCgpKSB7CiAJCSAgICBKTklF
bnYgKmVudiA9IGdldEpOSUVudigpOwogCQkgICAgamNoYXIgYnVmWzJdOwpJbmRleDogSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvdGVzdGJpbmRpbmdzLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL3Rlc3RiaW5kaW5ncy5tbQkocmV2aXNpb24gMTMwNzMpCisrKyBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy90ZXN0YmluZGluZ3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4
MSwxMiArMjgxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBbbXlJbnRlcmZhY2UgcmVsZWFzZV07Ci0gICAgICAgIAotI2lm
IE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPD0gTUFDX09TX1hfVkVSU0lPTl8xMF8zCi0g
ICAgICAgIFtwb29sIHJlbGVhc2VdOwotI2Vsc2UKICAgICAgICAgW3Bvb2wgZHJhaW5dOwotI2Vu
ZGlmCiAgICAgfSAvLyBlbmQgYmxvY2ssIHNvIHRoYXQgSW50ZXJwcmV0ZXIgYW5kIGdsb2JhbCBn
ZXQgZGVsZXRlZAogICAgIAogICAgIHJldHVybiByZXQgPyAwIDogMzsKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCShyZXZpc2lvbiAx
MzA3MykKKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNCArMzgsNiBAQAogCiAjaW1wb3J0IDxreG1sY29yZS9V
bnVzZWRQYXJhbS5oPgogCi0jaWYgTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8PSBNQUNf
T1NfWF9WRVJTSU9OXzEwXzMKLQotQGludGVyZmFjZSBOU09iamVjdCAoV2ViRXh0cmFzKQotLSAo
dm9pZClmaW5hbGl6ZTsKLUBlbmQKLQotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiB1
c2luZyBuYW1lc3BhY2UgS0pTOjpCaW5kaW5nczsKIApJbmRleDogSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3Mvb2JqYy9vYmpjX2luc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL29iamMvb2JqY19pbnN0YW5jZS5tbQkocmV2aXNpb24gMTMwNzMpCisrKyBKYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9vYmpjL29iamNfaW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEwMywxMSArMTAzLDcgQEAgdm9pZCBPYmpjSW5zdGFuY2U6OmVuZCgpCiAgICAgX2JlZ2lu
Q291bnQtLTsKICAgICBhc3NlcnQgKF9iZWdpbkNvdW50ID49IDApOwogICAgIGlmIChfYmVnaW5D
b3VudCA9PSAwKSB7Ci0jaWYgTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8PSBNQUNfT1Nf
WF9WRVJTSU9OXzEwXzMKLSAgICAgICAgW19wb29sIHJlbGVhc2VdOwotI2Vsc2UKICAgICAgICAg
W19wb29sIGRyYWluXTsKLSNlbmRpZgogICAgIH0KICAgICBfcG9vbCA9IDA7CiB9CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9zb2Z0bGlua2luZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2JpbmRpbmdzL3NvZnRsaW5raW5nLmgJKHJldmlzaW9uIDEzMDczKQorKysgSmF2
YVNjcmlwdENvcmUvYmluZGluZ3Mvc29mdGxpbmtpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNyBAQAogCiAjaW5jbHVkZSA8SmF2YVZNL2puaS5oPgogCi0jaWYgX19jcGx1c3BsdXMK
KyNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIgogI2VuZGlmCiBqaW50IEtKU19HZXRDcmVh
dGVkSmF2YVZNcyhKYXZhVk0gKip2bUJ1ZiwganNpemUgYnVmTGVuLCBqc2l6ZSAqblZNcyk7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzMDczKQorKysgSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NDMsNiArNDMsNyBAQAogCQk2NTkyQzMxODA5OEI3REUxMDAwM0Q0RjYgLyogVmVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkyQzMxNjA5OEI3
REUxMDAwM0Q0RjYgLyogVmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNjU5MkMzMTkwOThCN0RFMTAwMDNENEY2IC8qIFZlY3RvclRyYWl0
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5MkMz
MTcwOThCN0RFMTAwMDNENEY2IC8qIFZlY3RvclRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1QzY0N0I0MDkzRUY4RDYwMDIyQzM4MCAv
KiBSZWZQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1QzY0N0IzMDkzRUY4RDYwMDIyQzM4MCAvKiBSZWZQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2NUQ2RDg3RjA5QjVBMzJFMDAwMkU0RDcg
LyogUGxhdGZvcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1RDZEODdFMDlCNUEzMkUwMDAyRTRENyAvKiBQbGF0Zm9ybS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1RDdEMTlDMDhGMTBCNUIwMDE1
QUJEOCAvKiBGYXN0TWFsbG9jSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1RDdEMTlCMDhGMTBCNUIwMDE1QUJEOCAvKiBGYXN0TWFsbG9j
SW50ZXJuYWwuaCAqLzsgfTsKIAkJNjVERkM5MzAwOEVBMTczQTAwRjczMDBCIC8qIEhhc2hGdW5j
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
REZDOTJBMDhFQTE3M0EwMEY3MzAwQiAvKiBIYXNoRnVuY3Rpb25zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVERkM5MzEwOEVBMTczQTAwRjcz
MDBCIC8qIEhhc2hNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1REZDOTJCMDhFQTE3M0EwMEY3MzAwQiAvKiBIYXNoTWFwLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM1Myw2ICszNTQsNyBAQAog
CQk2NTkyQzMxNzA5OEI3REUxMDAwM0Q0RjYgLyogVmVjdG9yVHJhaXRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWZWN0b3JUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjVDMDJGQkIwNjM3NDYyQTAwM0U3RUU2IC8qIHByb3RlY3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcHJvdGVjdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTY1QzY0N0IzMDkzRUY4
RDYwMDIyQzM4MCAvKiBSZWZQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVmUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgfTsKKwkJNjVENkQ4N0UwOUI1QTMyRTAwMDJFNEQ3IC8qIFBsYXRmb3JtLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NUQ3RDE5QjA4RjEwQjVCMDAxNUFCRDggLyogRmFzdE1hbGxvY0lu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZhc3RNYWxsb2NJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IH07CiAJCTY1REZDOTJBMDhFQTE3M0EwMEY3MzAwQiAvKiBIYXNoRnVuY3Rpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hG
dW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk2
NURGQzkyQjA4RUExNzNBMDBGNzMwMEIgLyogSGFzaE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYXNoTWFwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKQEAgLTU5Niw2ICs1OTgsNyBAQAogCQk2NTE2MkVG
MTA4RTZBMjFDMDA3NTU2Q0QgLyoga3htbGNvcmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTY1RDZEODdFMDlCNUEzMkUwMDAyRTRENyAvKiBQbGF0Zm9y
bS5oICovLAogCQkJCTkzQUE0Rjc3MDk1NzI1MUYwMDg0QjNBNyAvKiBBbHdheXNJbmxpbmUuaCAq
LywKIAkJCQk2NUUyMTdCNzA4RTdFRUNDMDAyM0U1RjYgLyogQXNzZXJ0aW9ucy5oICovLAogCQkJ
CTY1RTIxN0I4MDhFN0VFQ0MwMDIzRTVGNiAvKiBBc3NlcnRpb25zLmNwcCAqLywKQEAgLTg2MCw2
ICs4NjMsNyBAQAogCQkJCTE0ODNCNThBMDk5QkMxOTUwMDE2RTRGMCAvKiBKU0ltbWVkaWF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBQkIzNkYwOTlDMDc2NDAwRTJBMjRGIC8qIHZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNEFCQjQ1NTA5OUMyQTBGMDBFMkEyNEYgLyogSlNUeXBlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk2NUQ2RDg3RjA5QjVBMzJFMDAwMkU0RDcgLyogUGxhdGZvcm0u
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1t
CShyZXZpc2lvbiAxMzA3MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTMwMSw3ICszMDEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OmFk
ZENoaWxkKFdpZGdldCogY2hpbGQsCiAKICNpZm5kZWYgTkRFQlVHCiAgICAgTlNWaWV3ICpzdWJ2
aWV3ID0gY2hpbGQtPmdldE91dGVyVmlldygpOwotCisgICAgCiAgICAgTE9HKEZyYW1lcywgIkFk
ZGluZyAlcCAlQCBhdCAoJWQsJWQpIHcgJWQgaCAlZFxuIiwgc3VidmlldywKICAgICAgICAgWyhp
ZClbc3VidmlldyBjbGFzc10gY2xhc3NOYW1lXSwgeCwgeSwgKGludClbc3VidmlldyBmcmFtZV0u
c2l6ZS53aWR0aCwgKGludClbc3VidmlldyBmcmFtZV0uc2l6ZS5oZWlnaHQpOwogI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlS2V5R2VuZXJhdG9yLm0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUtleUdlbmVyYXRvci5tCShyZXZpc2lv
biAxMzA3MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVLZXlHZW5lcmF0b3IubQko
d29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAor
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlS2V5R2VuZXJhdG9yLmgiCiAKICNp
bXBvcnQgPGt4bWxjb3JlL0Fzc2VydGlvbnMuaD4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeS5tCShyZXZpc2lvbiAxMzA3MykK
KysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeS5tCSh3
b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeS5o
IgogI2ltcG9ydCA8a3htbGNvcmUvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCAiS1dRUmVuZGVyVHJl
ZURlYnVnLmgiCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlR3JhcGhpY3NCcmlk
Z2UubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlR3JhcGhpY3NC
cmlkZ2UubQkocmV2aXNpb24gMTMwNzMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
R3JhcGhpY3NCcmlkZ2UubQkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCiAgKi8KIAorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlR3Jh
cGhpY3NCcmlkZ2UuaCIKIAogI2ltcG9ydCA8a3htbGNvcmUvQXNzZXJ0aW9ucy5oPgpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUhpc3RvcnkubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlSGlzdG9yeS5tCShyZXZpc2lvbiAxMzA3MykKKysrIFdl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVIaXN0b3J5Lm0JKHdvcmtpbmcgY29weSkKQEAgLTIz
LDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKICNpbXBvcnQgIldlYkNvcmVIaXN0
b3J5LmgiCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlQ29va2llQWRhcHRlci5t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVDb29raWVBZGFwdGVy
Lm0JKHJldmlzaW9uIDEzMDczKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUNvb2tp
ZUFkYXB0ZXIubQkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVDb29raWVBZGFw
dGVyLmgiCiAjaW1wb3J0IDxreG1sY29yZS9Bc3NlcnRpb25zLmg+CiAKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVWaWV3Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZVZpZXcubQkocmV2aXNpb24gMTMwNzMpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlVmlldy5tCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw4IEBACiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiV2ViQ29yZVZpZXcuaCIKIAogQGludGVyZmFjZSBOU0NsaXBWaWV3IChXZWJDb3Jl
VmlldykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcAkocmV2aXNpb24gMTMwNzMpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL0xvZ2dpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogCiBLWENMb2dDaGFubmVsIExvZ05vdFlldEltcGxlbWVudGVkID0geyAweDAwMDAw
MDAxLCAiV2ViQ29yZUxvZ0xldmVsIiwgS1hDTG9nQ2hhbm5lbE9mZiB9OwpJbmRleDogV2ViQ29y
ZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2NvbmZpZy5oCShyZXZpc2lvbiAxMzA3
MykKKysrIFdlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDYgKzE4LDggQEAK
ICAqCiAgKi8KIAorI2luY2x1ZGUgPGt4bWxjb3JlL1BsYXRmb3JtLmg+CisKICNkZWZpbmUgS0hU
TUxfTk9fWEJMIDEKICNkZWZpbmUgS0hUTUxfWFNMVCAxCiAKSW5kZXg6IFdlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzA3NCkKKysr
IFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsMzIgQEAKKzIwMDYt
MDMtMDEgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIFdlYkNvcmUgdXBkYXRlcyBmb3Ig
IlNldCB1cCBuZXcgcHJvdG90eXBlIG1hY3JvcyBhbmQgYXZvaWQgdXNpbmcgI2lmIHdpdGhvdXQg
ZGVmaW5lZCgpIGluIEpTQyIKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3Jn
L3Nob3dfYnVnLmNnaT9pZD03Mzg3CisgICAgICAgIAorICAgICAgICBBZGQgUGxhdGZvcm0uaCAK
KworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2t4bWxjb3JlL1BsYXRmb3JtLmg6IEFkZGVk
LgorICAgICAgICAqIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lTmFtZXNwYWNlcy5tOgorICAgICAg
ICAqIGJyaWRnZS9tYWMvV2ViQ29yZVZpZXdGYWN0b3J5Lm06CisgICAgICAgICogYnJpZGdlL21h
Yy9XZWJEYXNoYm9hcmRSZWdpb24ubToKKyAgICAgICAgKiBjb25maWcuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9Mb2dnaW5nLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmFkZENoaWxkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUNvb2tpZUFkYXB0ZXIubToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvV2ViQ29yZUdyYXBoaWNzQnJpZGdlLm06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVIaXN0b3J5Lm06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVJbWFnZVJlbmRl
cmVyRmFjdG9yeS5tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlS2V5R2VuZXJhdG9y
Lm06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVWaWV3Lm06CisKIDIwMDYtMDMtMDEg
IEVyaWMgU2VpZGVsICA8ZXNlaWRlbEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
anVzdGluZy4KIAotICAgICAgIFVwZGF0ZSBFU2VsZWN0aW9uR3JhbnVsYXJ0aXkgZW51bSB0byB1
c2UgbmV3ZXIgQ2FtZWxDYXNlIHN0eWxpbmcuCisgICAgICAgIFVwZGF0ZSBFU2VsZWN0aW9uR3Jh
bnVsYXJ0aXkgZW51bSB0byB1c2UgbmV3ZXIgQ2FtZWxDYXNlIHN0eWxpbmcuCiAKICAgICAgICAg
KiBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbToKICAgICAgICAgKC1bV2ViQ29yZUZy
YW1lQnJpZGdlIGFsdGVyQ3VycmVudFNlbGVjdGlvbjpkaXJlY3Rpb246Z3JhbnVsYXJpdHk6XSk6
CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViRGFzaGJvYXJkUmVnaW9uLm0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkRhc2hib2FyZFJlZ2lvbi5tCShyZXZpc2lvbiAx
MzA3MykKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJEYXNoYm9hcmRSZWdpb24ubQkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLworI2luY2x1ZGUgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViRGFzaGJvYXJkUmVnaW9u
LmgiCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJEYXNoYm9hcmRSZWdpb24KQEAgLTcxLDQgKzcyLDQg
QEAKICAgICByZXR1cm4gTlNFcXVhbFJlY3RzIChyZWN0LCBbb3RoZXIgZGFzaGJvYXJkUmVnaW9u
UmVjdF0pICYmIE5TRXF1YWxSZWN0cyAoY2xpcCwgW290aGVyIGRhc2hib2FyZFJlZ2lvbkNsaXBd
KSAmJiB0eXBlID09IFtvdGhlciBkYXNoYm9hcmRSZWdpb25UeXBlXTsKIH0KIAotQGVuZApcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK0BlbmQKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9X
ZWJDb3JlRnJhbWVOYW1lc3BhY2VzLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFj
L1dlYkNvcmVGcmFtZU5hbWVzcGFjZXMubQkocmV2aXNpb24gMTMwNzMpCisrKyBXZWJDb3JlL2Jy
aWRnZS9tYWMvV2ViQ29yZUZyYW1lTmFtZXNwYWNlcy5tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbXBv
cnQgIldlYkNvcmVGcmFtZU5hbWVzcGFjZXMuaCIKIAogc3RhdGljIENGU2V0Q2FsbEJhY2tzIE5v
blJldGFpbmluZ1NldENhbGxiYWNrcyA9IHsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJD
b3JlVmlld0ZhY3RvcnkubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29y
ZVZpZXdGYWN0b3J5Lm0JKHJldmlzaW9uIDEzMDczKQorKysgV2ViQ29yZS9icmlkZ2UvbWFjL1dl
YkNvcmVWaWV3RmFjdG9yeS5tCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCisjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW1wb3J0ICJXZWJDb3JlVmlld0ZhY3RvcnkuaCIKICNpbXBvcnQgPGt4bWxjb3JlL0Fzc2VydGlv
bnMuaD4KIApJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9reG1sY29yZS9QbGF0Zm9y
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva3htbGNvcmUvUGxh
dGZvcm0uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva3htbGNv
cmUvUGxhdGZvcm0uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvUGxhdGZvcm0uaD4KSW5kZXg6IFdlYktpdFNpdGUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFNpdGUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzA3NCkKKysrIFdlYktpdFNp
dGUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOSBAQAorMjAwNi0wMy0wMSAg
TWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnVpbGRpbmcvY2hlY2tvdXQuaHRtbDoKKwog
MjAwNi0wMi0yNiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAa2lsemVyLm5ldD4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBNYWNpZWosIGxhbmRlZCBieSBHZW9mZi4KSW5kZXg6IFdlYktpdFNpdGUv
YnVpbGRpbmcvY2hlY2tvdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRTaXRlL2J1aWxkaW5n
L2NoZWNrb3V0Lmh0bWwJKHJldmlzaW9uIDEzMDczKQorKysgV2ViS2l0U2l0ZS9idWlsZGluZy9j
aGVja291dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMywxMSBAQCBNYWMgT1MgWCA8
YSBocmVmPSJodHRwOi8vbWV0aXNzaWFuLmNvbS9kCiA8cD5PbmNlIHlvdSBoYXZlIGNoZWNrZWQg
b3V0IHRoZSBjb2RlLCB5b3UgY2FuIHVwZGF0ZSBpdCBhdCBhbnkgdGltZSB1c2luZyB0aGUgZm9s
bG93aW5nIGNvbW1hbmQ6PC9wPgogPHAgY2xhc3M9ImNvZGUiPldlYktpdFRvb2xzL1NjcmlwdHMv
dXBkYXRlLXdlYmtpdDwvcD4KIDxwPkl0J3MgaGFuZHkgdG8gcHV0IHRoZSA8dHQ+V2ViS2l0VG9v
bHMvU2NyaXB0czwvdHQ+IGRpcmVjdG9yeSBpbiB5b3VyIHNoZWxsIHBhdGggc28geW91IGNhbiB0
eXBlIGNvbW1hbmRzIGxpa2UgPHR0PnVwZGF0ZS13ZWJraXQ8L3R0PiB3aXRob3V0IHNwZWNpZnlp
bmcgdGhlIHBhdGggdG8gdGhlIHNjcmlwdC48L3A+CisKKzxoMj5Ccm93c2luZyB0aGUgY29kZTwv
aDI+CisKKzxwPklmIHlvdSBqdXN0IHdhbnQgdG8gYnJvd3NlIHRoZSBjb2RlLCB5b3UgY2FuIGxv
b2sgYXQgPGE+V2ViU1ZOPC9hPiAKKwogPD9waHAKIGluY2x1ZGUoIi4uL2Zvb3Rlci5pbmMiKTsK
ID8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="1741"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>