From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v2 4/9] xen, tools: rip out old gcov implementation Date: Mon, 10 Oct 2016 10:40:33 +0100 Message-ID: <1476092438-24895-5-git-send-email-wei.liu2@citrix.com> References: <1476092438-24895-1-git-send-email-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1btX4k-0005dy-Bo for xen-devel@lists.xenproject.org; Mon, 10 Oct 2016 09:40:50 +0000 In-Reply-To: <1476092438-24895-1-git-send-email-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , philippe.gabriel@citrix.com, Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlIGFuZCBjb2RlIGFyZSB0aWVkIHRvIGFuIG9sZCBn Y292IGZvcm1hdC4KSXQncyBlYXNpZXIgdG8ganVzdCByZWRvIGV2ZXJ5dGhpbmcgZnJvbSBzY3Jh dGNoLgoKU2FsdmFnZSB0aGUgcmV1c2FibGUgcGFydHM6IGxlYXZlIHhlbi9jb21tb24vZ2NvdiBh bmQgYW4gZW1wdHkgTWFrZWZpbGUKdGhlcmUsIGxlYXZlIGdjb3Ygc3VwcG9ydCBpbiBLY29uZmln IGJ1dCBtYXJrIHRoYXQgYXMgYnJva2VuLiBBbHNvCnJlc2VydmUgdGhlIHN5c2N0bCBudW1iZXIg Zm9yIGxhdGVyIHVzZSAoYnV0IGRlbGV0ZSByZWxldmFudCBzeXNjdGwKc3RydWN0dXJlcykuCgpT aWduZWQtb2ZmLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KQ2M6IEFuZHJl dyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxH ZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25A ZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEtv bnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ2M6IFN0ZWZhbm8g U3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4 ZW4ub3JnPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCiB0b29scy9taXNj L01ha2VmaWxlICAgICAgICAgfCAgIDYgLS0KIHRvb2xzL21pc2MveGVuY292LmMgICAgICAgICB8 IDE0NyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdG9vbHMvbWlzYy94ZW5jb3Zfc3Bs aXQgICAgIHwgMTg4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL0tj b25maWcuZGVidWcgICAgICAgICAgIHwgICAxICsKIHhlbi9jb21tb24vZ2Nvdi9NYWtlZmlsZSAg ICB8ICAgMiAtCiB4ZW4vY29tbW9uL2djb3YvZ2Nvdi5jICAgICAgfCAyMjUgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9jb21tb24vc3lzY3RsLmMgICAg ICAgICB8ICAgNyAtLQogeGVuL2luY2x1ZGUvcHVibGljL2djb3YuaCAgIHwgMTE1IC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIHhlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaCB8ICAzOCArLS0tLS0t LQogeGVuL2luY2x1ZGUveGVuL2djb3YuaCAgICAgIHwgIDkzIC0tLS0tLS0tLS0tLS0tLS0tLQog MTAgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA4MjAgZGVsZXRpb25zKC0pCiBkZWxl dGUgbW9kZSAxMDA2NDQgdG9vbHMvbWlzYy94ZW5jb3YuYwogZGVsZXRlIG1vZGUgMTAwNzU1IHRv b2xzL21pc2MveGVuY292X3NwbGl0CiBkZWxldGUgbW9kZSAxMDA2NDQgeGVuL2NvbW1vbi9nY292 L2djb3YuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1YmxpYy9nY292LmgKIGRl bGV0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS94ZW4vZ2Nvdi5oCgpkaWZmIC0tZ2l0IGEvdG9v bHMvbWlzYy9NYWtlZmlsZSBiL3Rvb2xzL21pc2MvTWFrZWZpbGUKaW5kZXggODE1MmY3Yi4uNWJh NjY3MiAxMDA2NDQKLS0tIGEvdG9vbHMvbWlzYy9NYWtlZmlsZQorKysgYi90b29scy9taXNjL01h a2VmaWxlCkBAIC0xMyw3ICsxMyw2IEBAIENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5zdG9yZSkK IElOU1RBTExfQklOLSQoQ09ORklHX1g4NikgICAgICArPSB4ZW4tY3B1aWQKIElOU1RBTExfQklO LSQoQ09ORklHX1g4NikgICAgICArPSB4ZW4tZGV0ZWN0CiBJTlNUQUxMX0JJTiAgICAgICAgICAg ICAgICAgICAgKz0geGVuY29ucwotSU5TVEFMTF9CSU4gICAgICAgICAgICAgICAgICAgICs9IHhl bmNvdl9zcGxpdAogSU5TVEFMTF9CSU4gKz0gJChJTlNUQUxMX0JJTi15KQogCiAjIEV2ZXJ5dGhp bmcgdG8gYmUgaW5zdGFsbGVkIGluIHJlZ3VsYXIgc2Jpbi8KQEAgLTI1LDcgKzI0LDYgQEAgSU5T VEFMTF9TQklOLSQoQ09ORklHX1g4NikgICAgICs9IHhlbi1sb3dtZW1kCiBJTlNUQUxMX1NCSU4t JChDT05GSUdfWDg2KSAgICAgKz0geGVuLW1mbmR1bXAKIElOU1RBTExfU0JJTiAgICAgICAgICAg ICAgICAgICArPSB4ZW4tcmluZ3dhdGNoCiBJTlNUQUxMX1NCSU4gICAgICAgICAgICAgICAgICAg Kz0geGVuLXRtZW0tbGlzdC1wYXJzZQotSU5TVEFMTF9TQklOICAgICAgICAgICAgICAgICAgICs9 IHhlbmNvdgogSU5TVEFMTF9TQklOICAgICAgICAgICAgICAgICAgICs9IHhlbmxvY2twcm9mCiBJ TlNUQUxMX1NCSU4gICAgICAgICAgICAgICAgICAgKz0geGVucGVyZgogSU5TVEFMTF9TQklOICAg ICAgICAgICAgICAgICAgICs9IHhlbnBtCkBAIC00Myw3ICs0MSw2IEBAIFRBUkdFVFNfQUxMIDo9 ICQoSU5TVEFMTF9CSU4pICQoSU5TVEFMTF9TQklOKSAkKElOU1RBTExfUFJJVkJJTikKIFRBUkdF VFNfQ09QWSArPSB4ZW4tYnVndG9vbAogVEFSR0VUU19DT1BZICs9IHhlbi1yaW5nd2F0Y2gKIFRB UkdFVFNfQ09QWSArPSB4ZW5jb25zCi1UQVJHRVRTX0NPUFkgKz0geGVuY292X3NwbGl0CiBUQVJH RVRTX0NPUFkgKz0geGVucHZuZXRib290CiAKICMgRXZlcnl0aGluZyB3aGljaCBuZWVkcyB0byBi ZSBidWlsdApAQCAtMTA1LDcgKzEwMiw0IEBAIHhlbi1saXZlcGF0Y2g6IHhlbi1saXZlcGF0Y2gu bwogeGVuLWxvd21lbWQ6IHhlbi1sb3dtZW1kLm8KIAkkKENDKSAkKExERkxBR1MpIC1vICRAICQ8 ICQoTERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGli eGVuc3RvcmUpICQoQVBQRU5EX0xERkxBR1MpCiAKLXhlbmNvdjogeGVuY292Lm8KLQkkKENDKSAk KExERkxBR1MpIC1vICRAICQ8ICQoTERMSUJTX2xpYnhlbmN0cmwpICQoQVBQRU5EX0xERkxBR1Mp Ci0KIC1pbmNsdWRlICQoREVQUykKZGlmZiAtLWdpdCBhL3Rvb2xzL21pc2MveGVuY292LmMgYi90 b29scy9taXNjL3hlbmNvdi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWFmYjFk Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL21pc2MveGVuY292LmMKKysrIC9kZXYvbnVsbApAQCAtMSwx NDcgKzAsMCBAQAotLyoKLSAqIHhlbmNvdjogaGFuZGxlIHRlc3QgY292ZXJhZ2UgaW5mb3JtYXRp b24gZnJvbSBYZW4uCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDEzLCBDaXRyaXggU3lzdGVtcyBS JkQgTHRkLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0gKiB1bmRlciB0aGUgdGVybXMgYW5kIGNv bmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAotICogdmVyc2lvbiAy LCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWws IGJ1dCBXSVRIT1VUCi0gKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKLSAqIG1v cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCi0gKiB0aGlzIHByb2dyYW07 IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAqLwotCi0jaW5j bHVkZSA8eGVuY3RybC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+ Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8ZXJy bm8uaD4KLSNpbmNsdWRlIDxlcnIuaD4KLQotc3RhdGljIHhjX2ludGVyZmFjZSAqZ2Nvdl94Y2gg PSBOVUxMOwotCi1zdGF0aWMgdm9pZCBnY292X2luaXQodm9pZCkKLXsKLSAgICBnY292X3hjaCA9 IHhjX2ludGVyZmFjZV9vcGVuKE5VTEwsIE5VTEwsIDApOwotICAgIGlmICggIWdjb3ZfeGNoICkK LSAgICAgICAgZXJyKDEsICJvcGVuaW5nIGludGVyZmFjZSIpOwotfQotCi1pbnQgZ2Nvdl9nZXRf aW5mbyhpbnQgb3AsIHN0cnVjdCB4ZW5fc3lzY3RsICpzeXMsIHN0cnVjdCB4Y19oeXBlcmNhbGxf YnVmZmVyICpwdHIpCi17Ci0gICAgc3RydWN0IHhlbl9zeXNjdGxfY292ZXJhZ2Vfb3AgKmNvdjsK LSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVJfQVJHVU1FTlQocHRyKTsKLQotICAgIG1lbXNl dChzeXMsIDAsIHNpemVvZigqc3lzKSk7Ci0gICAgc3lzLT5jbWQgPSBYRU5fU1lTQ1RMX2NvdmVy YWdlX29wOwotCi0gICAgY292ID0gJnN5cy0+dS5jb3ZlcmFnZV9vcDsKLSAgICBjb3YtPmNtZCA9 IG9wOwotICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKGNvdi0+dS5yYXdfaW5mbywgcHRyKTsKLQot ICAgIHJldHVybiB4Y19zeXNjdGwoZ2Nvdl94Y2gsIHN5cyk7Ci19Ci0KLXN0YXRpYyB2b2lkIGdj b3ZfcmVhZChjb25zdCBjaGFyICpmbiwgaW50IHJlc2V0KQotewotICAgIHN0cnVjdCB4ZW5fc3lz Y3RsIHN5czsKLSAgICB1aW50MzJfdCB0b3RhbF9sZW47Ci0gICAgREVDTEFSRV9IWVBFUkNBTExf QlVGRkVSKHVpbnQ4X3QsIHApOwotICAgIEZJTEUgKmY7Ci0gICAgaW50IG9wID0gcmVzZXQgPyBY RU5fU1lTQ1RMX0NPVkVSQUdFX3JlYWRfYW5kX3Jlc2V0IDoKLSAgICAgICAgICAgICAgICAgICAg IFhFTl9TWVNDVExfQ09WRVJBR0VfcmVhZDsKLQotICAgIC8qIGdldCB0b3RhbCBsZW5ndGggKi8K LSAgICBpZiAoIGdjb3ZfZ2V0X2luZm8oWEVOX1NZU0NUTF9DT1ZFUkFHRV9nZXRfdG90YWxfc2l6 ZSwgJnN5cywgTlVMTCkgPCAwICkKLSAgICAgICAgZXJyKDEsICJnZXR0aW5nIHRvdGFsIGxlbmd0 aCIpOwotICAgIHRvdGFsX2xlbiA9IHN5cy51LmNvdmVyYWdlX29wLnUudG90YWxfc2l6ZTsKLSAg ICBmcHJpbnRmKHN0ZGVyciwgInJldHVybmVkICV1IGJ5dGVzXG4iLCAodW5zaWduZWQpIHRvdGFs X2xlbik7Ci0KLSAgICAvKiBzYWZlIGNoZWNrICovCi0gICAgaWYgKCB0b3RhbF9sZW4gPiAxNnUg KiAxMDI0dSAqIDEwMjR1ICkKLSAgICAgICAgZXJyeCgxLCAiY292ZXJhZ2Ugc2l6ZSB0b28gYmln ICV1IGJ5dGVzXG4iLCB0b3RhbF9sZW4pOwotCi0gICAgLyogYWxsb2NhdGUgKi8KLSAgICBwID0g eGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyhnY292X3hjaCwgcCwgdG90YWxfbGVuKTsKLSAgICBp ZiAoIHAgPT0gTlVMTCApCi0gICAgICAgIGVycigxLCAiYWxsb2NhdGluZyBtZW1vcnkgZm9yIGNv dmVyYWdlIik7Ci0KLSAgICAvKiBnZXQgZGF0YSAqLwotICAgIG1lbXNldChwLCAwLCB0b3RhbF9s ZW4pOwotICAgIGlmICggZ2Nvdl9nZXRfaW5mbyhvcCwgJnN5cywgSFlQRVJDQUxMX0JVRkZFUihw KSkgPCAwICkKLSAgICAgICAgZXJyKDEsICJnZXR0aW5nIGNvdmVyYWdlIGluZm9ybWF0aW9uIik7 Ci0KLSAgICAvKiB3cml0ZSB0byBhIGZpbGUgKi8KLSAgICBpZiAoIHN0cmNtcChmbiwgIi0iKSA9 PSAwICkKLSAgICAgICAgZiA9IHN0ZG91dDsKLSAgICBlbHNlCi0gICAgICAgIGYgPSBmb3Blbihm biwgInciKTsKLSAgICBpZiAoICFmICkKLSAgICAgICAgZXJyKDEsICJvcGVuaW5nIG91dHB1dCBm aWxlIik7Ci0gICAgaWYgKCBmd3JpdGUocCwgMSwgdG90YWxfbGVuLCBmKSAhPSB0b3RhbF9sZW4g KQotICAgICAgICBlcnIoMSwgIndyaXRpbmcgY292ZXJhZ2UgdG8gZmlsZSIpOwotICAgIGlmIChm ICE9IHN0ZG91dCkKLSAgICAgICAgZmNsb3NlKGYpOwotICAgIHhjX2h5cGVyY2FsbF9idWZmZXJf ZnJlZShnY292X3hjaCwgcCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGdjb3ZfcmVzZXQodm9pZCkKLXsK LSAgICBzdHJ1Y3QgeGVuX3N5c2N0bCBzeXM7Ci0KLSAgICBpZiAoIGdjb3ZfZ2V0X2luZm8oWEVO X1NZU0NUTF9DT1ZFUkFHRV9yZXNldCwgJnN5cywgTlVMTCkgPCAwICkKLSAgICAgICAgZXJyKDEs ICJyZXNldHRpbmcgY292ZXJhZ2UgaW5mb3JtYXRpb24iKTsKLX0KLQotc3RhdGljIHZvaWQgdXNh Z2UoaW50IGV4aXRfY29kZSkKLXsKLSAgICBGSUxFICpvdXQgPSBleGl0X2NvZGUgPyBzdGRlcnIg OiBzdGRvdXQ7Ci0KLSAgICBmcHJpbnRmKG91dCwgInhlbmNvdiB7cmVzZXR8cmVhZHxyZWFkLXJl c2V0fSBbPGZpbGVuYW1lPl1cbiIKLSAgICAgICAgIlx0cmVzZXQgICAgICAgcmVzZXQgaW5mb3Jt YXRpb25cbiIKLSAgICAgICAgIlx0cmVhZCAgICAgICAgcmVhZCBpbmZvcm1hdGlvbiBmcm9tIHhl biB0byBmaWxlbmFtZVxuIgotICAgICAgICAiXHRyZWFkLXJlc2V0ICByZWFkIGFuZCByZXNldCBp bmZvcm1hdGlvbiBmcm9tIHhlbiB0byBmaWxlbmFtZVxuIgotICAgICAgICAiXHRmaWxlbmFtZSAg b3B0aW9uYWwgZmlsZW5hbWUgKGRlZmF1bHQgb3V0cHV0KVxuIgotICAgICAgICApOwotICAgIGV4 aXQoZXhpdF9jb2RlKTsKLX0KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewot ICAgIGludCBvcHQ7Ci0KLSAgICB3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAiaCIp KSAhPSAtMSkgewotICAgICAgICBzd2l0Y2ggKG9wdCkgewotICAgICAgICBjYXNlICdoJzoKLSAg ICAgICAgICAgIHVzYWdlKDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6 Ci0gICAgICAgICAgICB1c2FnZSgxKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGFyZ3YgKz0g b3B0aW5kOwotICAgIGFyZ2MgLT0gb3B0aW5kOwotICAgIGlmIChhcmdjIDw9IDApCi0gICAgICAg IHVzYWdlKDEpOwotCi0gICAgZ2Nvdl9pbml0KCk7Ci0KLSAgICBpZiAoIHN0cmNtcChhcmd2WzBd LCAicmVzZXQiKSA9PSAwICkKLSAgICAgICAgZ2Nvdl9yZXNldCgpOwotICAgIGVsc2UgaWYgKCBz dHJjbXAoYXJndlswXSwgInJlYWQiKSA9PSAwICkKLSAgICAgICAgZ2Nvdl9yZWFkKGFyZ2MgPiAx ID8gYXJndlsxXSA6ICItIiwgMCk7Ci0gICAgZWxzZSBpZiAoIHN0cmNtcChhcmd2WzBdLCAicmVh ZC1yZXNldCIpID09IDAgKQotICAgICAgICBnY292X3JlYWQoYXJnYyA+IDEgPyBhcmd2WzFdIDog Ii0iLCAxKTsKLSAgICBlbHNlCi0gICAgICAgIHVzYWdlKDEpOwotCi0gICAgcmV0dXJuIDA7Ci19 Ci0KZGlmZiAtLWdpdCBhL3Rvb2xzL21pc2MveGVuY292X3NwbGl0IGIvdG9vbHMvbWlzYy94ZW5j b3Zfc3BsaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGIxMWYyN2MuLjAwMDAwMDAK LS0tIGEvdG9vbHMvbWlzYy94ZW5jb3Zfc3BsaXQKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAs MCBAQAotIyEvdXNyL2Jpbi9wZXJsCi0KLSMgeGVuY292X3NwbGl0IC0gc3BsaXQgY292ZXJhZ2Ug aW5mb3JtYXRpb24gZnJvbSBYZW4KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDEzICAtIENpdHJpeCBT eXN0ZW1zCi0jIC0tLS0tCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us IG9yCi0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0KLXVzZSBzdHJpY3Q7Ci11c2Ug RmlsZTo6UGF0aCBxdyhta3BhdGgpOwotCi0jIHNvbWUgbWFnaWMgY29uc3RhbnRzCi1teSAkbWFn aWMgPSAweDY3NjM2NDYxOwotbXkgJGN0ckJhc2UgPSAweDAxYTEwMDAwOwotCi1teSAkeGVuTWFn aWMgPSAweDU4NTQ0MzQ2OwkjIGZpbGUgaGVhZGVyCi1teSAkeGVuVGFnRnVuYyA9IDB4NTg1NDQz NjY7CSMgZnVuY3Rpb25zIHRhZwotbXkgJHhlblRhZ0NvdW50MCA9IDB4NTg1NDQzMzA7CSMgY291 bnRlciAwIHRhZwotbXkgJHhlblRhZ0VuZCA9IDB4NTg1NDQzMmU7CSMgZW5kIGZpbGUKLQotIyBv cGVuIGlucHV0IGZpbGUKLWlmICgkQVJHVlswXSkgewotCW15ICRmbiA9ICRBUkdWWzBdOwotCW9w ZW4oSU4sICc8JywgJGZuKSBvciBkaWUgIm9wZW5pbmcgZmlsZSBcIiRmblwiIjsKLX0gZWxzZSB7 Ci0Jb3BlbihJTiwgJzwmU1RESU4nKSBvciBkaWUgInJlZGlyZWN0aW5nIGlucHV0IjsKLX0KLQot bXkgJHBvcyA9IDA7Ci0KLXN1YiBnZXRSYXcoJCkKLXsKLSAgICBteSAkbCA9IHNoaWZ0OwotICAg IGRpZSAnZ290IG5vIGRhdGEgdG8gcmVhZCcgaWYgJGwgPCAwOwotICAgIG15ICRyZXMgPSAnJzsK LSAgICBkbyB7Ci0gICAgICAgIG15ICRkYXRhOwotICAgICAgICBteSAkciA9IHJlYWQoSU4sICRk YXRhLCAkbCk7Ci0gICAgICAgIGRpZSAiZXJyb3IgJCEgcmVhZGluZyBkYXRhIGZyb20gaW5wdXQg YXQgcG9zaXRpb24gJHBvcyIgaWYgIWRlZmluZWQoJHIpOwotICAgICAgICBkaWUgInVuZXhwZWN0 ZWQgZW5kIG9mIGZpbGUgYXQgcG9zaXRpb24gJHBvcyIgaWYgISRyOwotICAgICAgICAkbCAtPSAk cjsKLSAgICAgICAgJHBvcyArPSAkcjsKLSAgICAgICAgJHJlcyAuPSAkZGF0YTsKLSAgICB9IHdo aWxlICgkbCA+IDApOwotICAgIHJldHVybiAkcmVzOwotfQotCi1zdWIgZ2V0MzIoKQotewotICAg IHJldHVybiB1bnBhY2soJ1YnLCBnZXRSYXcoNCkpOwotfQotCi1zdWIgZ2V0NjQoKQotewotICAg ICMgVGhpcyBpcyByZXR1cm5lZCBhcyByYXcgZGF0YSBhcyBzb21lIFBlcmwgdmVyc2lvbiBjb3Vs ZCBub3QKLSAgICAjIHN1cHBvcnQgNjQgYml0IGludGVnZXIKLSAgICAjIFRoaXMgaXMgb2sgZm9y IGxpdHRsZSBlbmRpYW4gbWFjaGluZXMKLSAgICByZXR1cm4gZ2V0UmF3KDgpOwotfQotCi1zdWIg YWxpZ24oKQotewotICAgIG15ICRsID0gJHBvcyAmIDc7Ci0gICAgZ2V0UmF3KDgtJGwpIGlmICRs OwotfQotCi0jIHJlYWQgYSBzdHJpbmcgcHJlZml4ZWQgYnkgbGVuZ3RoCi1zdWIgZ2V0UygpCi17 Ci0gICAgbXkgJGwgPSBnZXQzMigpOwotICAgIG15ICRyZXMgPSBnZXRSYXcoJGwpOwotICAgIGFs aWduKCk7Ci0gICAgcmV0dXJuICRyZXM7Ci19Ci0KLXN1YiBwYXJzZUZ1bmN0aW9ucygkKQotewot ICAgIG15ICRudW1Db3VudGVycyA9IHNoaWZ0OwotICAgIG15ICRudW0gPSBnZXQzMigpOwotCi0g ICAgbXkgQGZ1bmNzOwotICAgIGZvciBteSAkbiAoMS4uJG51bSkgewotICAgICAgICBteSBAZGF0 YTsKLSAgICAgICAgbXkgJGlkZW50ID0gZ2V0MzIoKTsKLSAgICAgICAgbXkgJGNoZWNrc3VtID0g Z2V0MzIoKTsKLSAgICAgICAgZm9yIG15ICRuICgxLi4kbnVtQ291bnRlcnMpIHsKLSAgICAgICAg ICAgIHB1c2ggQGRhdGEsIGdldDMyKCk7ICMgbnVtYmVyIG9mIGNvdW50ZXJzIGZvciBhIHR5cGUK LSAgICAgICAgfQotICAgICAgICBwdXNoIEBmdW5jcywgWyRpZGVudCwgJGNoZWNrc3VtLCBcQGRh dGFdOwotICAgIH0KLSAgICBhbGlnbigpOwotICAgIHJldHVybiBAZnVuY3M7Ci19Ci0KLXN1YiBw YXJzZUNvdW50ZXJzKCQpCi17Ci0gICAgbXkgJHRhZyA9IHNoaWZ0OwotICAgIGRpZSBzcHJpbnRm KCJ3cm9uZyB0YWcgMHglMDh4IHBvcyAkcG9zICgweCUwOHgpIiwgJHRhZywgJHBvcykgaWYgJHRh ZyA8ICR4ZW5UYWdDb3VudDA7Ci0gICAgJHRhZyAtPSAkeGVuVGFnQ291bnQwOwotICAgIGRpZSBz cHJpbnRmKCd3cm9uZyB0YWcgMHglMDh4JywgJHRhZykgaWYgJHRhZyA+IDU7Ci0gICAgbXkgJGRh dGEgPSAnJzsKLQotICAgIG15ICRudW0gPSBnZXQzMigpOwotICAgIGZvciBteSAkbiAoMS4uJG51 bSkgewotICAgICAgICAkZGF0YSAuPSBnZXQ2NCgpOwotICAgIH0KLSAgICBhbGlnbigpOwotICAg IHJldHVybiBbJHRhZywgJGRhdGFdOwotfQotCi0KLXN1YiBwYXJzZUZpbGUoKQotewotICAgIG15 ICR2ZXIgPSBnZXQzMigpOwotICAgIG15ICRzdGFtcCA9IGdldDMyKCk7Ci0gICAgbXkgJGZuID0g Z2V0UygpOwotICAgIGFsaWduKCk7Ci0KLSAgICBteSAkbnVtQ291bnRlcnM7Ci0KLSAgICBwcmlu dCAiZ290IGZpbGUgJGZuXG4iOwotICAgIGRpZSBpZiAkZm4gIX4gbSxeKC8uKj8pW14vXStcLmdj ZGEkLDsKLSAgICBta3BhdGgoIi4kMSIpOwotICAgIG9wZW4oT1VULCAnPicsICIuJGZuIikgb3Ig ZGllOwotCi0gICAgcHJpbnQgT1VUIHBhY2soJ1ZWVicsICRtYWdpYywgJHZlciwgJHN0YW1wKTsK LQotICAgICMgcmVhZCBjb3VudGVycyBvZiBmaWxlCi0gICAgbXkgQGN0cnM7Ci0gICAgbXkgQGZ1 bmNzOwotICAgIG15ICR0YWc7Ci0gICAgZm9yICg7OykgewotICAgICAgICAkdGFnID0gZ2V0MzIo KTsKLSAgICAgICAgbGFzdCBpZiAoJHRhZyA9PSAkeGVuTWFnaWMgfHwgJHRhZyA9PSAkeGVuVGFn RW5kKTsKLSAgICAgICAgaWYgKCR0YWcgPT0gJHhlblRhZ0Z1bmMpIHsKLSAgICAgICAgICAgIGRp ZSBpZiBzY2FsYXIoQGZ1bmNzKTsKLSAgICAgICAgICAgIEBmdW5jcyA9IHBhcnNlRnVuY3Rpb25z KHNjYWxhcihAY3RycykpOwotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAg ICMgbXVzdCBiZSBhIGNvdW50ZXIKLSAgICAgICAgcHVzaCBAY3RycywgcGFyc2VDb3VudGVycygk dGFnKTsKLSAgICAgICAgKyskbnVtQ291bnRlcnM7Ci0gICAgfQotCi0gICAgIyBwcmludCBhbGwg ZnVuY3Rpb25zCi0gICAgZm9yIG15ICRmIChAZnVuY3MpIHsKLSAgICAgICAgIyB0YWcgdGFnX2xl biBpZGVudCBjaGVja3N1bQotICAgICAgICBwcmludCBPVVQgcGFjaygnVlZWVicsIDB4MDEwMDAw MDAsIDIsICRmLT5bMF0sICRmLT5bMV0pOwotICAgICAgICAjIGFsbCBjb3VudHMKLSAgICAgICAg bXkgJG4gPSAwOwotICAgICAgICBmb3IgbXkgJGMgKEB7JGYtPlsyXX0pIHsKLSAgICAgICAgICAg IG15ICgkdHlwZSwgJGRhdGEpID0gQHskY3Ryc1skbl19OwotICAgICAgICAgICAgcHJpbnQgT1VU IHBhY2soJ1ZWJywgJGN0ckJhc2UgKyAweDIwMDAwICogJHR5cGUsICRjKjIpOwotICAgICAgICAg ICAgZGllICItLSRjLS0kdHlwZS0tJGRhdGEtLSIgaWYgbGVuZ3RoKCRkYXRhKSA8ICRjICogODsK LSAgICAgICAgICAgIHByaW50IE9VVCBzdWJzdHIoJGRhdGEsIDAsICRjICogOCk7Ci0gICAgICAg ICAgICAkY3Ryc1skbl0gPSBbJHR5cGUsIHN1YnN0cigkZGF0YSwgJGMgKiA4KV07Ci0gICAgICAg ICAgICArKyRuOwotICAgICAgICB9Ci0gICAgfQotICAgIGNsb3NlKE9VVCk7Ci0KLSAgICByZXR1 cm4gJHRhZzsKLX0KLQotbXkgJHRhZyA9IGdldDMyKCk7Ci1kaWUgJ25vIGNvdmVyYWdlIG9yIHdy b25nIGZpbGUgZm9ybWF0JyBpZiAkdGFnICE9ICR4ZW5NYWdpYzsKLWZvciAoOzspIHsKLSAgICBp ZiAoJHRhZyA9PSAkeGVuTWFnaWMpIHsKLSAgICAgICAgJHRhZyA9IHBhcnNlRmlsZSgpOwotICAg IH0gZWxzaWYgKCR0YWcgPT0gJHhlblRhZ0VuZCkgewotICAgICAgICBsYXN0OwotICAgIH0gZWxz ZSB7Ci0gICAgICAgIGRpZSAid3JvbmcgdGFnICR0YWciOwotICAgIH0KLX0KZGlmZiAtLWdpdCBh L3hlbi9LY29uZmlnLmRlYnVnIGIveGVuL0tjb25maWcuZGVidWcKaW5kZXggZTlmN2RjZC4uZWY4 NjNkYyAxMDA2NDQKLS0tIGEveGVuL0tjb25maWcuZGVidWcKKysrIGIveGVuL0tjb25maWcuZGVi dWcKQEAgLTMwLDYgKzMwLDcgQEAgY29uZmlnIEZSQU1FX1BPSU5URVIKIAogY29uZmlnIEdDT1YK IAlib29sICJHY292IFN1cHBvcnQiCisJZGVwZW5kcyBvbiBCUk9LRU4KIAktLS1oZWxwLS0tCiAJ ICBFbmFibGUgZ2NvdiAoYSB0ZXN0IGNvdmVyYWdlIHByb2dyYW0gaW4gR0NDKSBzdXBwb3J0Lgog CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2djb3YvTWFrZWZpbGUgYi94ZW4vY29tbW9uL2djb3Yv TWFrZWZpbGUKaW5kZXggYzllZmU2Yy4uZTY5ZGUyOSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9n Y292L01ha2VmaWxlCisrKyBiL3hlbi9jb21tb24vZ2Nvdi9NYWtlZmlsZQpAQCAtMSwyICswLDAg QEAKLW9iai15ICs9IGdjb3YubwotCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2djb3YvZ2Nvdi5j IGIveGVuL2NvbW1vbi9nY292L2djb3YuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg YjU3MTdiOS4uMDAwMDAwMAotLS0gYS94ZW4vY29tbW9uL2djb3YvZ2Nvdi5jCisrKyAvZGV2L251 bGwKQEAgLTEsMjI1ICswLDAgQEAKLS8qCi0gKiAgVGhpcyBjb2RlIG1haW50YWlucyBhIGxpc3Qg b2YgYWN0aXZlIHByb2ZpbGluZyBkYXRhIHN0cnVjdHVyZXMuCi0gKgotICogICAgQ29weXJpZ2h0 IElCTSBDb3JwLiAyMDA5Ci0gKiAgICBBdXRob3Iocyk6IFBldGVyIE9iZXJwYXJsZWl0ZXIgPG9i ZXJwYXJAbGludXgudm5ldC5pYm0uY29tPgotICoKLSAqICAgIFVzZXMgZ2NjLWludGVybmFsIGRh dGEgZGVmaW5pdGlvbnMuCi0gKiAgICBCYXNlZCBvbiB0aGUgZ2Nvdi1rZXJuZWwgcGF0Y2ggYnk6 Ci0gKiAgICAgICBIdWJlcnR1cyBGcmFua2UgPGZyYW5rZWhAdXMuaWJtLmNvbT4KLSAqICAgICAg IE5pZ2VsIEhpbmRzIDxuaGluZHNAdXMuaWJtLmNvbT4KLSAqICAgICAgIFJhamFuIFJhdmluZHJh biA8cmFqYW5jckB1cy5pYm0uY29tPgotICogICAgICAgUGV0ZXIgT2JlcnBhcmxlaXRlciA8b2Jl cnBhckBsaW51eC52bmV0LmlibS5jb20+Ci0gKiAgICAgICBQYXVsIExhcnNvbgotICovCi0KLSNp bmNsdWRlIDx4ZW4vY29uZmlnLmg+Ci0jaW5jbHVkZSA8eGVuL2luaXQuaD4KLSNpbmNsdWRlIDx4 ZW4vbGliLmg+Ci0jaW5jbHVkZSA8eGVuL2h5cGVyY2FsbC5oPgotI2luY2x1ZGUgPHhlbi9nY292 Lmg+Ci0jaW5jbHVkZSA8eGVuL2Vycm5vLmg+Ci0jaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5o PgotI2luY2x1ZGUgPHB1YmxpYy94ZW4uaD4KLSNpbmNsdWRlIDxwdWJsaWMvZ2Nvdi5oPgotCi1z dGF0aWMgc3RydWN0IGdjb3ZfaW5mbyAqaW5mb19saXN0OwotCi0vKgotICogX19nY292X2luaXQg aXMgY2FsbGVkIGJ5IGdjYy1nZW5lcmF0ZWQgY29uc3RydWN0b3IgY29kZSBmb3IgZWFjaCBvYmpl Y3QKLSAqIGZpbGUgY29tcGlsZWQgd2l0aCAtZnByb2ZpbGUtYXJjcy4KLSAqCi0gKiBBbHRob3Vn aCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGR1cmluZyBpbml0aWFsaXphdGlvbiBpcyBj YWxsZWQgZnJvbQotICogYSAudGV4dCBzZWN0aW9uIHdoaWNoIGlzIHN0aWxsIHByZXNlbnQgYWZ0 ZXIgaW5pdGlhbGl6YXRpb24gc28gbm90IGRlY2xhcmUKLSAqIGFzIF9faW5pdC4KLSAqLwotdm9p ZCBfX2djb3ZfaW5pdChzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKQotewotICAgIC8qIGFkZCBuZXcg cHJvZmlsaW5nIGRhdGEgc3RydWN0dXJlIHRvIGxpc3QgKi8KLSAgICBpbmZvLT5uZXh0ID0gaW5m b19saXN0OwotICAgIGluZm9fbGlzdCA9IGluZm87Ci19Ci0KLS8qCi0gKiBUaGVzZSBmdW5jdGlv bnMgbWF5IGJlIHJlZmVyZW5jZWQgYnkgZ2NjLWdlbmVyYXRlZCBwcm9maWxpbmcgY29kZSBidXQg c2VydmUKLSAqIG5vIGZ1bmN0aW9uIGZvciBYZW4uCi0gKi8KLXZvaWQgX19nY292X2ZsdXNoKHZv aWQpCi17Ci0gICAgLyogVW51c2VkLiAqLwotfQotCi12b2lkIF9fZ2Nvdl9tZXJnZV9hZGQoZ2Nv dl90eXBlICpjb3VudGVycywgdW5zaWduZWQgaW50IG5fY291bnRlcnMpCi17Ci0gICAgLyogVW51 c2VkLiAqLwotfQotCi12b2lkIF9fZ2Nvdl9tZXJnZV9zaW5nbGUoZ2Nvdl90eXBlICpjb3VudGVy cywgdW5zaWduZWQgaW50IG5fY291bnRlcnMpCi17Ci0gICAgLyogVW51c2VkLiAqLwotfQotCi12 b2lkIF9fZ2Nvdl9tZXJnZV9kZWx0YShnY292X3R5cGUgKmNvdW50ZXJzLCB1bnNpZ25lZCBpbnQg bl9jb3VudGVycykKLXsKLSAgICAvKiBVbnVzZWQuICovCi19Ci0KLXN0YXRpYyBpbmxpbmUgaW50 IGNvdW50ZXJfYWN0aXZlKGNvbnN0IHN0cnVjdCBnY292X2luZm8gKmluZm8sIHVuc2lnbmVkIGlu dCB0eXBlKQotewotICAgIHJldHVybiAoMSA8PCB0eXBlKSAmIGluZm8tPmN0cl9tYXNrOwotfQot Ci10eXBlZGVmIHN0cnVjdCB3cml0ZV9pdGVyX3QKLXsKLSAgICBYRU5fR1VFU1RfSEFORExFKHVp bnQ4KSBwdHI7Ci0gICAgaW50IHJlYWw7Ci0gICAgdWludDMyX3Qgd3JpdGVfb2Zmc2V0OwotfSB3 cml0ZV9pdGVyX3Q7Ci0KLXN0YXRpYyBpbnQgd3JpdGVfcmF3KHN0cnVjdCB3cml0ZV9pdGVyX3Qg Kml0ZXIsIGNvbnN0IHZvaWQgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0 YV9sZW4pCi17Ci0gICAgaWYgKCBpdGVyLT5yZWFsICYmCi0gICAgICAgIGNvcHlfdG9fZ3Vlc3Rf b2Zmc2V0KGl0ZXItPnB0ciwgaXRlci0+d3JpdGVfb2Zmc2V0LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBkYXRhLCBkYXRhX2xlbikgKQotICAg ICAgICByZXR1cm4gLUVGQVVMVDsKLQotICAgIGl0ZXItPndyaXRlX29mZnNldCArPSBkYXRhX2xl bjsKLSAgICByZXR1cm4gMDsKLX0KLQotI2RlZmluZSBjaGsodikgZG8geyByZXQ9KHYpOyBpZiAo IHJldCApIHJldHVybiByZXQ7IH0gd2hpbGUoMCkKLQotc3RhdGljIGlubGluZSBpbnQgd3JpdGUz Mih3cml0ZV9pdGVyX3QgKml0ZXIsIHVpbnQzMl90IHZhbCkKLXsKLSAgICByZXR1cm4gd3JpdGVf cmF3KGl0ZXIsICZ2YWwsIHNpemVvZih2YWwpKTsKLX0KLQotc3RhdGljIGludCB3cml0ZV9zdHJp bmcod3JpdGVfaXRlcl90ICppdGVyLCBjb25zdCBjaGFyICpzKQotewotICAgIGludCByZXQ7Ci0g ICAgc2l6ZV90IGxlbiA9IHN0cmxlbihzKTsKLQotICAgIGNoayh3cml0ZTMyKGl0ZXIsIGxlbikp OwotICAgIHJldHVybiB3cml0ZV9yYXcoaXRlciwgcywgbGVuKTsKLX0KLQotc3RhdGljIGlubGlu ZSBpbnQgbmV4dF90eXBlKGNvbnN0IHN0cnVjdCBnY292X2luZm8gKmluZm8sIGludCAqdHlwZSkK LXsKLSAgICB3aGlsZSAoICsrKnR5cGUgPCBYRU5DT1ZfQ09VTlRFUlMgJiYgIWNvdW50ZXJfYWN0 aXZlKGluZm8sICp0eXBlKSApCi0gICAgICAgIGNvbnRpbnVlOwotICAgIHJldHVybiAqdHlwZTsK LX0KLQotc3RhdGljIGlubGluZSB2b2lkIGFsaWduX2l0ZXIod3JpdGVfaXRlcl90ICppdGVyKQot ewotICAgIGl0ZXItPndyaXRlX29mZnNldCA9Ci0gICAgICAgIChpdGVyLT53cml0ZV9vZmZzZXQg KyBzaXplb2YodWludDY0X3QpIC0gMSkgJiAtc2l6ZW9mKHVpbnQ2NF90KTsKLX0KLQotc3RhdGlj IGludCB3cml0ZV9nY292KHdyaXRlX2l0ZXJfdCAqaXRlcikKLXsKLSAgICBzdHJ1Y3QgZ2Nvdl9p bmZvICppbmZvOwotICAgIGludCByZXQ7Ci0KLSAgICAvKiByZXNldCBvZmZzZXQgKi8KLSAgICBp dGVyLT53cml0ZV9vZmZzZXQgPSAwOwotCi0gICAgLyogZHVtcCBhbGwgZmlsZXMgKi8KLSAgICBm b3IgKCBpbmZvID0gaW5mb19saXN0IDsgaW5mbzsgaW5mbyA9IGluZm8tPm5leHQgKQotICAgIHsK LSAgICAgICAgY29uc3Qgc3RydWN0IGdjb3ZfY3RyX2luZm8gKmN0cjsKLSAgICAgICAgaW50IHR5 cGU7Ci0gICAgICAgIHNpemVfdCBzaXplX2ZuID0gc2l6ZW9mKHN0cnVjdCBnY292X2ZuX2luZm8p OwotCi0gICAgICAgIGFsaWduX2l0ZXIoaXRlcik7Ci0gICAgICAgIGNoayh3cml0ZTMyKGl0ZXIs IFhFTkNPVl9UQUdfRklMRSkpOwotICAgICAgICBjaGsod3JpdGUzMihpdGVyLCBpbmZvLT52ZXJz aW9uKSk7Ci0gICAgICAgIGNoayh3cml0ZTMyKGl0ZXIsIGluZm8tPnN0YW1wKSk7Ci0gICAgICAg IGNoayh3cml0ZV9zdHJpbmcoaXRlciwgaW5mby0+ZmlsZW5hbWUpKTsKLQotICAgICAgICAvKiBk dW1wIGNvdW50ZXJzICovCi0gICAgICAgIGN0ciA9IGluZm8tPmNvdW50czsKLSAgICAgICAgZm9y ICggdHlwZSA9IC0xOyBuZXh0X3R5cGUoaW5mbywgJnR5cGUpIDwgWEVOQ09WX0NPVU5URVJTOyAr K2N0ciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFsaWduX2l0ZXIoaXRlcik7Ci0gICAgICAg ICAgICBjaGsod3JpdGUzMihpdGVyLCBYRU5DT1ZfVEFHX0NPVU5URVIodHlwZSkpKTsKLSAgICAg ICAgICAgIGNoayh3cml0ZTMyKGl0ZXIsIGN0ci0+bnVtKSk7Ci0gICAgICAgICAgICBjaGsod3Jp dGVfcmF3KGl0ZXIsIGN0ci0+dmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjdHIt Pm51bSAqIHNpemVvZihjdHItPnZhbHVlc1swXSkpKTsKLQotICAgICAgICAgICAgc2l6ZV9mbiAr PSBzaXplb2YodW5zaWduZWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogZHVtcCBhbGwgZnVu Y3Rpb25zIHRvZ2V0aGVyICovCi0gICAgICAgIGFsaWduX2l0ZXIoaXRlcik7Ci0gICAgICAgIGNo ayh3cml0ZTMyKGl0ZXIsIFhFTkNPVl9UQUdfRlVOQykpOwotICAgICAgICBjaGsod3JpdGUzMihp dGVyLCBpbmZvLT5uX2Z1bmN0aW9ucykpOwotICAgICAgICBjaGsod3JpdGVfcmF3KGl0ZXIsIGlu Zm8tPmZ1bmN0aW9ucywgaW5mby0+bl9mdW5jdGlvbnMgKiBzaXplX2ZuKSk7Ci0gICAgfQotCi0g ICAgLyogc3RvcCB0YWcgKi8KLSAgICBhbGlnbl9pdGVyKGl0ZXIpOwotICAgIGNoayh3cml0ZTMy KGl0ZXIsIFhFTkNPVl9UQUdfRU5EKSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQg cmVzZXRfY291bnRlcnModm9pZCkKLXsKLSAgICBzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvOwotCi0g ICAgZm9yICggaW5mbyA9IGluZm9fbGlzdCA7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0ICkKLSAg ICB7Ci0gICAgICAgIGNvbnN0IHN0cnVjdCBnY292X2N0cl9pbmZvICpjdHI7Ci0gICAgICAgIGlu dCB0eXBlOwotCi0gICAgICAgIC8qIHJlc2V0IGNvdW50ZXJzICovCi0gICAgICAgIGN0ciA9IGlu Zm8tPmNvdW50czsKLSAgICAgICAgZm9yICggdHlwZSA9IC0xOyBuZXh0X3R5cGUoaW5mbywgJnR5 cGUpIDwgWEVOQ09WX0NPVU5URVJTOyArK2N0ciApCi0gICAgICAgICAgICBtZW1zZXQoY3RyLT52 YWx1ZXMsIDAsIGN0ci0+bnVtICogc2l6ZW9mKGN0ci0+dmFsdWVzWzBdKSk7Ci0gICAgfQotCi0g ICAgcmV0dXJuIDA7Ci19Ci0KLWludCBzeXNjdGxfY292ZXJhZ2Vfb3AoeGVuX3N5c2N0bF9jb3Zl cmFnZV9vcF90ICpvcCkKLXsKLSAgICBpbnQgcmV0ID0gLUVJTlZBTDsKLSAgICB3cml0ZV9pdGVy X3QgaXRlcjsKLQotICAgIHN3aXRjaCAoIG9wLT5jbWQgKQotICAgIHsKLSAgICBjYXNlIFhFTl9T WVNDVExfQ09WRVJBR0VfZ2V0X3RvdGFsX3NpemU6Ci0gICAgICAgIGl0ZXIucmVhbCA9IDA7Ci0K LSAgICAgICAgd3JpdGVfZ2NvdigmaXRlcik7Ci0gICAgICAgIG9wLT51LnRvdGFsX3NpemUgPSBp dGVyLndyaXRlX29mZnNldDsKLSAgICAgICAgcmV0ID0gMDsKLSAgICAgICAgYnJlYWs7Ci0KLSAg ICBjYXNlIFhFTl9TWVNDVExfQ09WRVJBR0VfcmVhZF9hbmRfcmVzZXQ6Ci0gICAgY2FzZSBYRU5f U1lTQ1RMX0NPVkVSQUdFX3JlYWQ6Ci0gICAgICAgIGl0ZXIucHRyID0gb3AtPnUucmF3X2luZm87 Ci0gICAgICAgIGl0ZXIucmVhbCA9IDE7Ci0KLSAgICAgICAgcmV0ID0gd3JpdGVfZ2NvdigmaXRl cik7Ci0gICAgICAgIGlmICggcmV0IHx8IG9wLT5jbWQgIT0gWEVOX1NZU0NUTF9DT1ZFUkFHRV9y ZWFkX2FuZF9yZXNldCApCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAvKiBmYWxsIHRo cm91Z2ggKi8KLSAgICBjYXNlIFhFTl9TWVNDVExfQ09WRVJBR0VfcmVzZXQ6Ci0gICAgICAgIHJl dCA9IHJlc2V0X2NvdW50ZXJzKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4g cmV0OwotfQotCi0vKgotICogTG9jYWwgdmFyaWFibGVzOgotICogbW9kZTogQwotICogYy1maWxl LXN0eWxlOiAiQlNEIgotICogYy1iYXNpYy1vZmZzZXQ6IDQKLSAqIHRhYi13aWR0aDogNAotICog aW5kZW50LXRhYnMtbW9kZTogbmlsCi0gKiBFbmQ6Ci0gKi8KZGlmZiAtLWdpdCBhL3hlbi9jb21t b24vc3lzY3RsLmMgYi94ZW4vY29tbW9uL3N5c2N0bC5jCmluZGV4IDhhZWE2ZWYuLjJjYWM0NTEg MTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc3lzY3RsLmMKKysrIGIveGVuL2NvbW1vbi9zeXNjdGwu YwpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgPHhlbi9ub2RlbWFzay5oPgogI2luY2x1ZGUg PHhzbS94c20uaD4KICNpbmNsdWRlIDx4ZW4vcG1zdGF0Lmg+Ci0jaW5jbHVkZSA8eGVuL2djb3Yu aD4KICNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+CiAKIGxvbmcgZG9fc3lzY3RsKFhFTl9HVUVT VF9IQU5ETEVfUEFSQU0oeGVuX3N5c2N0bF90KSB1X3N5c2N0bCkKQEAgLTM5NiwxMiArMzk1LDYg QEAgbG9uZyBkb19zeXNjdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fc3lzY3RsX3QpIHVf c3lzY3RsKQogICAgIH0KICAgICBicmVhazsKIAotI2lmZGVmIENPTkZJR19HQ09WCi0gICAgY2Fz ZSBYRU5fU1lTQ1RMX2NvdmVyYWdlX29wOgotICAgICAgICByZXQgPSBzeXNjdGxfY292ZXJhZ2Vf b3AoJm9wLT51LmNvdmVyYWdlX29wKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQogI2lmZGVm IENPTkZJR19IQVNfUENJCiAgICAgY2FzZSBYRU5fU1lTQ1RMX3BjaXRvcG9pbmZvOgogICAgIHsK ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9nY292LmggYi94ZW4vaW5jbHVkZS9wdWJs aWMvZ2Nvdi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjI5YjQ4Li4wMDAwMDAw Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9nY292LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUg KzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogZ2Nvdi5oCi0gKgotICogQ292ZXJh Z2Ugc3RydWN0dXJlcyBleHBvcnRlZCBieSBYZW4uCi0gKiBTdHJ1Y3R1cmUgaXMgZGlmZmVyZW50 IGZyb20gR2NjIG9uZS4KLSAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwgdG8KLSAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUK LSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBE RUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDEzLCBDaXRy aXggU3lzdGVtcyBSJkQgTHRkLgotICovCi0KLSNpZm5kZWYgX19YRU5fUFVCTElDX0dDT1ZfSF9f Ci0jZGVmaW5lIF9fWEVOX1BVQkxJQ19HQ09WX0hfXyBfX1hFTl9QVUJMSUNfR0NPVl9IX18KLQot I2RlZmluZSBYRU5DT1ZfQ09VTlRFUlMgICAgICAgICA1Ci0jZGVmaW5lIFhFTkNPVl9UQUdfQkFT RSAgICAgICAgIDB4NTg1NDQzMDB1Ci0jZGVmaW5lIFhFTkNPVl9UQUdfRklMRSAgICAgICAgIChY RU5DT1ZfVEFHX0JBU0UrMHg0NnUpCi0jZGVmaW5lIFhFTkNPVl9UQUdfRlVOQyAgICAgICAgIChY RU5DT1ZfVEFHX0JBU0UrMHg2NnUpCi0jZGVmaW5lIFhFTkNPVl9UQUdfQ09VTlRFUihuKSAgIChY RU5DT1ZfVEFHX0JBU0UrMHgzMHUrKChuKSYweGZ1KSkKLSNkZWZpbmUgWEVOQ09WX1RBR19FTkQg ICAgICAgICAgKFhFTkNPVl9UQUdfQkFTRSsweDJldSkKLSNkZWZpbmUgWEVOQ09WX0lTX1RBR19D T1VOVEVSKG4pIFwKLSAgICAoKG4pID49IFhFTkNPVl9UQUdfQ09VTlRFUigwKSAmJiAobikgPCBY RU5DT1ZfVEFHX0NPVU5URVIoWEVOQ09WX0NPVU5URVJTKSkKLSNkZWZpbmUgWEVOQ09WX0NPVU5U RVJfTlVNKG4pICgobiktWEVOQ09WX1RBR19DT1VOVEVSKDApKQotCi0vKgotICogVGhlIG1haW4g c3RydWN0dXJlIGZvciB0aGUgYmxvYiBpcwotICogQkxPQiA6PSBGSUxFLi4gRU5ECi0gKiBGSUxF IDo9IFRBR19GSUxFIFZFUlNJT04gU1RBTVAgRklMRU5BTUUgQ09VTlRFUlMgRlVOQ1RJT05TCi0g KiBGSUxFTkFNRSA6PSBMRU4gY2hhcmFjdGVycwotICogICBjaGFyYWN0ZXJzIGFyZSBwYWRkZWQg dG8gMzIgYml0Ci0gKiBMRU4gOj0gMzIgYml0IHZhbHVlCi0gKiBDT1VOVEVSUyA6PSBUQUdfQ09V TlRFUihuKSBOVU0gQ09VTlRFUi4uCi0gKiBOVU0gOj0gMzIgYml0IHZhbGllCi0gKiBDT1VOVEVS IDo9IDY0IGJpdCB2YWx1ZQotICogRlVOQ1RJT05TIDo9IFRBR19GVU5DIE5VTSBGVU5DVElPTi4u Ci0gKiBGVU5DVElPTiA6PSBJREVOVCBDSEVDS1NVTSBOVU1fQ09VTlRFUlMKLSAqCi0gKiBBbGwg dGFnZ2VkIHN0cnVjdHVyZXMgYXJlIGFsaWduZWQgdG8gOCBieXRlcwotICovCi0KLS8qKgotICog RmlsZSBpbmZvcm1hdGlvbgotICogUHJlZml4ZWQgd2l0aCBYRU5DT1ZfVEFHX0ZJTEUgYW5kIGEg c3RyaW5nIHdpdGggZmlsZW5hbWUKLSAqIEFsaWduZWQgdG8gOCBieXRlcwotICovCi1zdHJ1Y3Qg eGVuY292X2ZpbGUKLXsKLSAgICB1aW50MzJfdCB0YWc7IC8qIFhFTkNPVl9UQUdfRklMRSAqLwot ICAgIHVpbnQzMl90IHZlcnNpb247Ci0gICAgdWludDMyX3Qgc3RhbXA7Ci0gICAgdWludDMyX3Qg Zm5fbGVuOwotICAgIGNoYXIgZmlsZW5hbWVbMV07Ci19OwotCi0KLS8qKgotICogQ291bnRlcnMg aW5mb3JtYXRpb24KLSAqIFByZWZpeGVkIHdpdGggWEVOQ09WX1RBR19DT1VOVEVSKG4pIHdoZXJl IG4gaXMgMC4uKFhFTkNPVl9DT1VOVEVSUy0xKQotICogQWxpZ25lZCB0byA4IGJ5dGVzCi0gKi8K LXN0cnVjdCB4ZW5jb3ZfY291bnRlcgotewotICAgIHVpbnQzMl90IHRhZzsgLyogWEVOQ09WX1RB R19DT1VOVEVSKG4pICovCi0gICAgdWludDMyX3QgbnVtOwotICAgIHVpbnQ2NF90IHZhbHVlc1sx XTsKLX07Ci0KLS8qKgotICogSW5mb3JtYXRpb24gZm9yIGVhY2ggZnVuY3Rpb24KLSAqIE51bWJl ciBvZiBjb3VudGVyIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgY291bnRlciBzdHJ1Y3R1cmVz IGdvdCBiZWZvcmUKLSAqLwotc3RydWN0IHhlbmNvdl9mdW5jdGlvbgotewotICAgIHVpbnQzMl90 IGlkZW50OwotICAgIHVpbnQzMl90IGNoZWNrc3VtOwotICAgIHVpbnQzMl90IG51bV9jb3VudGVy c1sxXTsKLX07Ci0KLS8qKgotICogSW5mb3JtYXRpb24gZm9yIGFsbCBmdW5jdGlvbnMKLSAqIEFs aWduZWQgdG8gOCBieXRlcwotICovCi1zdHJ1Y3QgeGVuY292X2Z1bmN0aW9ucwotewotICAgIHVp bnQzMl90IHRhZzsgLyogWEVOQ09WX1RBR19GVU5DICovCi0gICAgdWludDMyX3QgbnVtOwotICAg IHN0cnVjdCB4ZW5jb3ZfZnVuY3Rpb24geGVuY292X2Z1bmN0aW9uWzFdOwotfTsKLQotLyoqCi0g KiBUZXJtaW5hdG9yCi0gKi8KLXN0cnVjdCB4ZW5jb3ZfZW5kCi17Ci0gICAgdWludDMyX3QgdGFn OyAvKiBYRU5DT1ZfVEFHX0VORCAqLwotfTsKLQotI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19HQ09W X0hfXyAqLwotCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggYi94ZW4v aW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKaW5kZXggNDE4ZjRiYi4uYTkzOWZhOSAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9z eXNjdGwuaApAQCAtNjY1LDQxICs2NjUsNiBAQCBzdHJ1Y3QgeGVuX3N5c2N0bF9zY2hlZHVsZXJf b3AgewogdHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF9zY2hlZHVsZXJfb3AgeGVuX3N5c2N0bF9z Y2hlZHVsZXJfb3BfdDsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxfc2NoZWR1 bGVyX29wX3QpOwogCi0vKiBYRU5fU1lTQ1RMX2NvdmVyYWdlX29wICovCi0vKgotICogR2V0IHRv dGFsIHNpemUgb2YgaW5mb3JtYXRpb24sIHRvIGhlbHAgYWxsb2NhdGUKLSAqIHRoZSBidWZmZXIu IFRoZSBwb2ludGVyIHBvaW50cyB0byBhIDMyIGJpdCB2YWx1ZS4KLSAqLwotI2RlZmluZSBYRU5f U1lTQ1RMX0NPVkVSQUdFX2dldF90b3RhbF9zaXplIDAKLQotLyoKLSAqIFJlYWQgY292ZXJhZ2Ug aW5mb3JtYXRpb24gaW4gYSBzaW5nbGUgcnVuCi0gKiBZb3UgbXVzdCB1c2UgYSB0b29sIHRvIHNw bGl0IHRoZW0uCi0gKi8KLSNkZWZpbmUgWEVOX1NZU0NUTF9DT1ZFUkFHRV9yZWFkICAgICAgICAg ICAxCi0KLS8qCi0gKiBSZXNldCBhbGwgdGhlIGNvdmVyYWdlIGNvdW50ZXJzIHRvIDAKLSAqIE5v IHBhcmFtZXRlcnMuCi0gKi8KLSNkZWZpbmUgWEVOX1NZU0NUTF9DT1ZFUkFHRV9yZXNldCAgICAg ICAgICAyCi0KLS8qCi0gKiBMaWtlIFhFTl9TWVNDVExfQ09WRVJBR0VfcmVhZCBidXQgcmVzZXQg YWxzbwotICogY291bnRlcnMgdG8gMCBpbiBhIHNpbmdsZSBjYWxsLgotICovCi0jZGVmaW5lIFhF Tl9TWVNDVExfQ09WRVJBR0VfcmVhZF9hbmRfcmVzZXQgMwotCi1zdHJ1Y3QgeGVuX3N5c2N0bF9j b3ZlcmFnZV9vcCB7Ci0gICAgdWludDMyX3QgY21kOyAgICAgICAgLyogWEVOX1NZU0NUTF9DT1ZF UkFHRV8qICovCi0gICAgdW5pb24gewotICAgICAgICB1aW50MzJfdCB0b3RhbF9zaXplOyAvKiBP VVQgKi8KLSAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV82NCh1aW50OCkgIHJhd19pbmZvOyAgIC8q IE9VVCAqLwotICAgIH0gdTsKLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX2NvdmVyYWdl X29wIHhlbl9zeXNjdGxfY292ZXJhZ2Vfb3BfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhl bl9zeXNjdGxfY292ZXJhZ2Vfb3BfdCk7Ci0KICNkZWZpbmUgWEVOX1NZU0NUTF9QU1JfQ01UX2dl dF90b3RhbF9ybWlkICAgICAgICAgICAgMAogI2RlZmluZSBYRU5fU1lTQ1RMX1BTUl9DTVRfZ2V0 X2wzX3Vwc2NhbGluZ19mYWN0b3IgICAxCiAvKiBUaGUgTDMgY2FjaGUgc2l6ZSBpcyByZXR1cm5l ZCBpbiBLQiB1bml0ICovCkBAIC0xMTA4LDcgKzEwNzMsNyBAQCBzdHJ1Y3QgeGVuX3N5c2N0bCB7 CiAjZGVmaW5lIFhFTl9TWVNDVExfbnVtYWluZm8gICAgICAgICAgICAgICAgICAgICAgMTcKICNk ZWZpbmUgWEVOX1NZU0NUTF9jcHVwb29sX29wICAgICAgICAgICAgICAgICAgICAxOAogI2RlZmlu ZSBYRU5fU1lTQ1RMX3NjaGVkdWxlcl9vcCAgICAgICAgICAgICAgICAgIDE5Ci0jZGVmaW5lIFhF Tl9TWVNDVExfY292ZXJhZ2Vfb3AgICAgICAgICAgICAgICAgICAgMjAKKy8qICNkZWZpbmUgWEVO X1NZU0NUTF9jb3ZlcmFnZV9vcCAgICAgICAgICAgICAgICAgICAyMCAqLwogI2RlZmluZSBYRU5f U1lTQ1RMX3Bzcl9jbXRfb3AgICAgICAgICAgICAgICAgICAgIDIxCiAjZGVmaW5lIFhFTl9TWVND VExfcGNpdG9wb2luZm8gICAgICAgICAgICAgICAgICAgMjIKICNkZWZpbmUgWEVOX1NZU0NUTF9w c3JfY2F0X29wICAgICAgICAgICAgICAgICAgICAyMwpAQCAtMTEzNyw3ICsxMTAyLDYgQEAgc3Ry dWN0IHhlbl9zeXNjdGwgewogICAgICAgICBzdHJ1Y3QgeGVuX3N5c2N0bF9sb2NrcHJvZl9vcCAg ICAgICBsb2NrcHJvZl9vcDsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfY3B1cG9vbF9vcCAg ICAgICAgY3B1cG9vbF9vcDsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfc2NoZWR1bGVyX29w ICAgICAgc2NoZWR1bGVyX29wOwotICAgICAgICBzdHJ1Y3QgeGVuX3N5c2N0bF9jb3ZlcmFnZV9v cCAgICAgICBjb3ZlcmFnZV9vcDsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfcHNyX2NtdF9v cCAgICAgICAgcHNyX2NtdF9vcDsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfcHNyX2NhdF9v cCAgICAgICAgcHNyX2NhdF9vcDsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfdG1lbV9vcCAg ICAgICAgICAgdG1lbV9vcDsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9nY292LmggYi94 ZW4vaW5jbHVkZS94ZW4vZ2Nvdi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2Q0 YTM1Li4wMDAwMDAwCi0tLSBhL3hlbi9pbmNsdWRlL3hlbi9nY292LmgKKysrIC9kZXYvbnVsbApA QCAtMSw5MyArMCwwIEBACi0vKgotICogIFByb2ZpbGluZyBpbmZyYXN0cnVjdHVyZSBkZWNsYXJh dGlvbnMuCi0gKgotICogIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiBnY2MtaW50ZXJuYWwgZGVmaW5p dGlvbnMuIERhdGEgc3RydWN0dXJlcyBhcmUKLSAqICBkZWZpbmVkIHRvIGJlIGNvbXBhdGlibGUg d2l0aCBnY2MgY291bnRlcnBhcnRzLiBGb3IgYSBiZXR0ZXIKLSAqICB1bmRlcnN0YW5kaW5nLCBy ZWZlciB0byBnY2Mgc291cmNlOiBnY2MvZ2Nvdi1pby5oLgotICoKLSAqICAgIENvcHlyaWdodCBJ Qk0gQ29ycC4gMjAwOQotICogICAgQXV0aG9yKHMpOiBQZXRlciBPYmVycGFybGVpdGVyIDxvYmVy cGFyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLSAqCi0gKiAgICBVc2VzIGdjYy1pbnRlcm5hbCBkYXRh IGRlZmluaXRpb25zLgotICovCi0KLSNpZm5kZWYgX19YRU5fR0NPVl9IX18KLSNkZWZpbmUgX19Y RU5fR0NPVl9IX18gX19YRU5fR0NPVl9IX18KLQotI2luY2x1ZGUgPHB1YmxpYy9zeXNjdGwuaD4K LQotLyoKLSAqIFByb2ZpbGluZyBkYXRhIHR5cGVzIHVzZWQgZm9yIGdjYyAzLjQgYW5kIGFib3Zl IC0gdGhlc2UgYXJlIGRlZmluZWQgYnkKLSAqIGdjYyBhbmQgbmVlZCB0byBiZSBrZXB0IGFzIGNs b3NlIHRvIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uIGFzIHBvc3NpYmxlIHRvCi0gKiByZW1haW4g Y29tcGF0aWJsZS4KLSAqLwotCi10eXBlZGVmIHVpbnQ2NF90IGdjb3ZfdHlwZTsKLQotLyoqCi0g KiBzdHJ1Y3QgZ2Nvdl9mbl9pbmZvIC0gcHJvZmlsaW5nIG1ldGEgZGF0YSBwZXIgZnVuY3Rpb24K LSAqIEBpZGVudDogb2JqZWN0IGZpbGUtdW5pcXVlIGZ1bmN0aW9uIGlkZW50aWZpZXIKLSAqIEBj aGVja3N1bTogZnVuY3Rpb24gY2hlY2tzdW0KLSAqIEBuX2N0cnM6IG51bWJlciBvZiB2YWx1ZXMg cGVyIGNvdW50ZXIgdHlwZSBiZWxvbmdpbmcgdG8gdGhpcyBmdW5jdGlvbgotICoKLSAqIFRoaXMg ZGF0YSBpcyBnZW5lcmF0ZWQgYnkgZ2NjIGR1cmluZyBjb21waWxhdGlvbiBhbmQgZG9lc24ndCBj aGFuZ2UKLSAqIGF0IHJ1bi10aW1lLgotICovCi1zdHJ1Y3QgZ2Nvdl9mbl9pbmZvCi17Ci0gICAg dW5zaWduZWQgaW50IGlkZW50OwotICAgIHVuc2lnbmVkIGludCBjaGVja3N1bTsKLSAgICB1bnNp Z25lZCBpbnQgbl9jdHJzWzBdOwotfTsKLQotLyoqCi0gKiBzdHJ1Y3QgZ2Nvdl9jdHJfaW5mbyAt IHByb2ZpbGluZyBkYXRhIHBlciBjb3VudGVyIHR5cGUKLSAqIEBudW06IG51bWJlciBvZiBjb3Vu dGVyIHZhbHVlcyBmb3IgdGhpcyB0eXBlCi0gKiBAdmFsdWVzOiBhcnJheSBvZiBjb3VudGVyIHZh bHVlcyBmb3IgdGhpcyB0eXBlCi0gKiBAbWVyZ2U6IG1lcmdlIGZ1bmN0aW9uIGZvciBjb3VudGVy IHZhbHVlcyBvZiB0aGlzIHR5cGUgKHVudXNlZCkKLSAqCi0gKiBUaGlzIGRhdGEgaXMgZ2VuZXJh dGVkIGJ5IGdjYyBkdXJpbmcgY29tcGlsYXRpb24gYW5kIGRvZXNuJ3QgY2hhbmdlCi0gKiBhdCBy dW4tdGltZSB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHZhbHVlcyBhcnJheS4KLSAqLwotc3Ry dWN0IGdjb3ZfY3RyX2luZm8KLXsKLSAgICB1bnNpZ25lZCBpbnQgbnVtOwotICAgIGdjb3ZfdHlw ZSAqdmFsdWVzOwotICAgIHZvaWQgKCptZXJnZSkoZ2Nvdl90eXBlICosIHVuc2lnbmVkIGludCk7 Ci19OwotCi0vKioKLSAqIHN0cnVjdCBnY292X2luZm8gLSBwcm9maWxpbmcgZGF0YSBwZXIgb2Jq ZWN0IGZpbGUKLSAqIEB2ZXJzaW9uOiBnY292IHZlcnNpb24gbWFnaWMgaW5kaWNhdGluZyB0aGUg Z2NjIHZlcnNpb24gdXNlZCBmb3IgY29tcGlsYXRpb24KLSAqIEBuZXh0OiBsaXN0IGhlYWQgZm9y IGEgc2luZ2x5LWxpbmtlZCBsaXN0Ci0gKiBAc3RhbXA6IHRpbWUgc3RhbXAKLSAqIEBmaWxlbmFt ZTogbmFtZSBvZiB0aGUgYXNzb2NpYXRlZCBnY292IGRhdGEgZmlsZQotICogQG5fZnVuY3Rpb25z OiBudW1iZXIgb2YgaW5zdHJ1bWVudGVkIGZ1bmN0aW9ucwotICogQGZ1bmN0aW9uczogZnVuY3Rp b24gZGF0YQotICogQGN0cl9tYXNrOiBtYXNrIHNwZWNpZnlpbmcgd2hpY2ggY291bnRlciB0eXBl cyBhcmUgYWN0aXZlCi0gKiBAY291bnRzOiBjb3VudGVyIGRhdGEgcGVyIGNvdW50ZXIgdHlwZQot ICoKLSAqIFRoaXMgZGF0YSBpcyBnZW5lcmF0ZWQgYnkgZ2NjIGR1cmluZyBjb21waWxhdGlvbiBh bmQgZG9lc24ndCBjaGFuZ2UKLSAqIGF0IHJ1bi10aW1lIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0 aGUgbmV4dCBwb2ludGVyLgotICovCi1zdHJ1Y3QgZ2Nvdl9pbmZvCi17Ci0gICAgdW5zaWduZWQg aW50ICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIHN0cnVjdCBnY292X2luZm8gICAgICAgICAg Km5leHQ7Ci0gICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgICBzdGFtcDsKLSAgICBjb25zdCBj aGFyICAgICAgICAgICAgICAgICpmaWxlbmFtZTsKLSAgICB1bnNpZ25lZCBpbnQgICAgICAgICAg ICAgIG5fZnVuY3Rpb25zOwotICAgIGNvbnN0IHN0cnVjdCBnY292X2ZuX2luZm8gKmZ1bmN0aW9u czsKLSAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgIGN0cl9tYXNrOwotICAgIHN0cnVjdCBn Y292X2N0cl9pbmZvICAgICAgY291bnRzWzBdOwotfTsKLQotCi0vKioKLSAqIFN5c2N0bCBvcGVy YXRpb25zIGZvciBjb3ZlcmFnZQotICovCi0jaWZkZWYgQ09ORklHX0dDT1YKLWludCBzeXNjdGxf Y292ZXJhZ2Vfb3AoeGVuX3N5c2N0bF9jb3ZlcmFnZV9vcF90ICpvcCk7Ci0jZW5kaWYKLQotI2Vu ZGlmIC8qIF9fWEVOX0dDT1ZfSF9fICovCi0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=