Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qH9XH-00036A-UQ for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Jul 2023 20:55:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qH9XG-0000Q2-7t for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Jul 2023 20:55:38 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qH9XF-0000Pt-QX for pgsql-hackers@lists.postgresql.org; Wed, 05 Jul 2023 20:55:37 +0000 Received: from mail-ot1-x333.google.com ([2607:f8b0:4864:20::333]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qH9XB-002PPa-Vj for pgsql-hackers@postgresql.org; Wed, 05 Jul 2023 20:55:37 +0000 Received: by mail-ot1-x333.google.com with SMTP id 46e09a7af769-6b8b8de2c6bso3895520a34.0 for ; Wed, 05 Jul 2023 13:55:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neon-tech.20221208.gappssmtp.com; s=20221208; t=1688590532; x=1691182532; h=in-reply-to:references:message-id:from:to:subject:cc:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=zp/+zujcecsBN7agEyh8LIiGx3jKGZyooQHbHGwz9jo=; b=1yKdJNH3QO5SHKaVzmR9tSpA1UiCBIrNkab/l+2iVqIuektXFAYZSGQXYnTExzJ8KS F4sMalYbA+ypuYt7DwdZ/XRxZwx9AaGiGQPE470I+/9q7hhNEHUUy+S3QNhINdiXlUlh PMlVE1zv5T+9hmZeBgPvHrUlWOY/9cracXnyIHVzR1szH0YHY9jmDfddqjEb+odIQMdu zrndpRjW06GtL9CQEAAQzLRrWgdYPC8UeuVjbhXd+c4j0GslmmI3oz7hVjzsiCqD/uDh CLyzDaAq+kpKvGSVbgjlENVozQ5Jomve6DpMWteVnFdlSgExbuUEod2PoHriiJQSg573 WQ1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688590532; x=1691182532; h=in-reply-to:references:message-id:from:to:subject:cc:date :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=zp/+zujcecsBN7agEyh8LIiGx3jKGZyooQHbHGwz9jo=; b=juhV9pRpK9hxR5x2MaxqgLZEmVMsUU+7XzQmk18XOUZqA6pqwWDuMwPPF4hMzJoccX nGcMWn87pRUjr7xabGGpfOHiSHXZc+p4PQHKxtQpOPhRtgiQf7hpxgvjBaStfts0qSi5 Spf6MHPNiSB9017Mt7LOjQFTq/De82051xSXl34M2erd4OZpqxh+izZicSH25sy0bwkM tRxxZbTOP3jrWfOTfWqXPgLNwL8XTRVSo1eZXUJmqvawg4GDQDKmBXmhBm+OYEdzQK5l BYt5VWHTu/npLuF4c7xMJ8BDCT3t7BQi0R6KRbpDrMz/ARUfn2gnL8LY2NPXx3gvU3x2 Nk5w== X-Gm-Message-State: ABy/qLaTA03rBLGUwE2O42/Ds50VWEUW0gXi2yF/XezpKdg/ffakLOfo bbHUa26j/sUbmb4AkbHQlgITIHZA6EjHdvFEQ74BgA== X-Google-Smtp-Source: APBJJlFx9J3kWTldSSn/OztA3o5gp1wEuMHKBJjfIAL6zRSb/kxxXO+Z8irganNq9r9EhGJwUUxEFw== X-Received: by 2002:a05:6830:2056:b0:6b5:e816:b64d with SMTP id f22-20020a056830205600b006b5e816b64dmr82465otp.37.1688590532619; Wed, 05 Jul 2023 13:55:32 -0700 (PDT) Received: from localhost ([2607:fb90:f280:130d:3996:e070:71ee:42fb]) by smtp.gmail.com with ESMTPSA id r21-20020a9d7cd5000000b006b73c264e30sm65371otn.17.2023.07.05.13.55.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 05 Jul 2023 13:55:31 -0700 (PDT) Content-Type: multipart/mixed; boundary=6d7c348f4e80e55dc467cb255644d30bb9daaa7f427a5a106c3a30c5405d Mime-Version: 1.0 Date: Wed, 05 Jul 2023 15:55:30 -0500 Cc: "PostgreSQL-development" Subject: Re: BUG #17946: LC_MONETARY & DO LANGUAGE plperl - BUG To: "Tristan Partin" , , "Heikki Linnakangas" , "Tom Lane" , From: "Tristan Partin" Message-Id: X-Mailer: aerc 0.15.2-76-g69094e332779 References: <17946-3e84cb577e9551c3@postgresql.org> <1564676.1685043220@sss.pgh.pa.us> <555bb26e-c27c-ab65-028f-3fd5b82df9de@iki.fi> <1645ebad-798f-87ad-43ac-72d2bf14d2d6@cd> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --6d7c348f4e80e55dc467cb255644d30bb9daaa7f427a5a106c3a30c5405d Content-Type: multipart/alternative; boundary=44fbe38a1e270d517f08640e8a17f94823e6897c5ba740218e17dd412782 --44fbe38a1e270d517f08640e8a17f94823e6897c5ba740218e17dd412782 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 Someday I will learn... Attached is the v2. --=20 Tristan Partin Neon (https://neon.tech) --44fbe38a1e270d517f08640e8a17f94823e6897c5ba740218e17dd412782-- --6d7c348f4e80e55dc467cb255644d30bb9daaa7f427a5a106c3a30c5405d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-Skip-checking-for-uselocale-on-Windows.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0001-Skip-checking-for-uselocale-on-Windows.patch RnJvbSA1Njg4YmMyYjJjNjMzMWY0MzdhNzJiNmE0MjkxOTljNTQxNmNjZDc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IEZyaSwgMzAgSnVuIDIwMjMgMDk6MzE6MDQgLTA1MDAKU3ViamVjdDogW1BBVENIIHYyIDEv M10gU2tpcCBjaGVja2luZyBmb3IgdXNlbG9jYWxlIG9uIFdpbmRvd3MKCldpbmRvd3MgZG9lc24n dCBoYXZlIHVzZWxvY2FsZSwgc28gc2tpcCBpdC4KLS0tCiBtZXNvbi5idWlsZCB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKaW5kZXggZmJlYzk5Nzk0Ny4uZGY3NmYxMDgyMiAx MDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTI0MzksNyArMjQz OSw3IEBAIGZ1bmNfY2hlY2tzID0gWwogICBbJ3N0cnNpZ25hbCddLAogICBbJ3N5bmNfZmlsZV9y YW5nZSddLAogICBbJ3N5bmNmcyddLAotICBbJ3VzZWxvY2FsZSddLAorICBbJ3VzZWxvY2FsZScs IHsnc2tpcCc6IGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJ31dLAogICBbJ3djc3RvbWJzX2wnXSwK IF0KIAotLSAKVHJpc3RhbiBQYXJ0aW4KTmVvbiAoaHR0cHM6Ly9uZW9uLnRlY2gpCgo= --6d7c348f4e80e55dc467cb255644d30bb9daaa7f427a5a106c3a30c5405d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0002-Add-locale_is_c-function.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0002-Add-locale_is_c-function.patch RnJvbSBkNTJhYjc4NTFlOTYzOGUzNmNkOTk4NTkwMTRkN2FhMzExNTRlNjAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IEZyaSwgMzAgSnVuIDIwMjMgMTE6MTM6MjkgLTA1MDAKU3ViamVjdDogW1BBVENIIHYyIDIv M10gQWRkIGxvY2FsZV9pc19jIGZ1bmN0aW9uCgpJbiBzb21lIHBsYWNlcyB0aHJvdWdob3V0IHRo ZSBjb2RlYmFzZSwgdGhlcmUgYXJlIHN0cmluZyBjb21wYXJpc29ucyBmb3IKbG9jYWxlcyBtYXRj aGluZyBDIG9yIFBPU0lYLiBFbmNhcHN1bGF0ZSB0aGlzIGxvZ2ljIGludG8gYSBzaW5nbGUKZnVu Y3Rpb24gYW5kIHVzZSBpdC4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMg fCAzNyArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9p bml0L3Bvc3Rpbml0LmMgfCAgNCArLS0tCiBzcmMvYmFja2VuZC91dGlscy9tYi9tYnV0aWxzLmMg ICAgfCAgNSArKy0tLQogc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmggICAgIHwgIDEgKwog NCBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfbG9jYWxlLmMKaW5kZXggNTE0ZDRhOWVlYi4uYjQ1NWVmM2FmZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ19sb2NhbGUuYwpAQCAtMTU0LDYgKzE1NCwyMSBAQCBzdGF0aWMgdm9pZCBp Y3Vfc2V0X2NvbGxhdGlvbl9hdHRyaWJ1dGVzKFVDb2xsYXRvciAqY29sbGF0b3IsIGNvbnN0IGNo YXIgKmxvYywKIAkJCQkJCQkJCQkgVUVycm9yQ29kZSAqc3RhdHVzKTsKICNlbmRpZgogCisvKgor ICogQ2hlY2sgaWYgYSBsb2NhbGUgaXMgdGhlIEMgbG9jYWxlCisgKgorICogUE9TSVggaXMgYW4g YWxpYXMgZm9yIEMuIFBhc3NpbmcgaW5nb3JlX2Nhc2UgYXMgdHJ1ZSB3aWxsIHVzZQorICogcGdf c3RyY2FzZWNtcCgpIGluc3RlYWQgb2Ygc3RyY21wKCkuCisgKi8KK2Jvb2wKK2xvY2FsZV9pc19j KGNvbnN0IGNoYXIgKmxvY2FsZSwgYm9vbCBpZ25vcmVfY2FzZSkKK3sKKwlpZiAoIWlnbm9yZV9j YXNlKQorCQlyZXR1cm4gc3RyY21wKGxvY2FsZSwgIkMiKSA9PSAwIHx8IHN0cmNtcChsb2NhbGUs ICJQT1NJWCIpID09IDA7CisKKwlyZXR1cm4gcGdfc3RyY2FzZWNtcChsb2NhbGUsICJDIikgPT0g MCB8fCBwZ19zdHJjYXNlY21wKGxvY2FsZSwgIlBPU0lYIikgPT0gMDsKK30KKwogLyoKICAqIHBn X3Blcm1fc2V0bG9jYWxlCiAgKgpAQCAtMTIzOSwxMCArMTI1NCw4IEBAIGxvb2t1cF9jb2xsYXRp b25fY2FjaGUoT2lkIGNvbGxhdGlvbiwgYm9vbCBzZXRfZmxhZ3MpCiAJCQlkYXR1bSA9IFN5c0Nh Y2hlR2V0QXR0ck5vdE51bGwoQ09MTE9JRCwgdHAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGxjdHlw ZSk7CiAJCQljb2xsY3R5cGUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKIAotCQkJY2Fj aGVfZW50cnktPmNvbGxhdGVfaXNfYyA9ICgoc3RyY21wKGNvbGxjb2xsYXRlLCAiQyIpID09IDAp IHx8Ci0JCQkJCQkJCQkJIChzdHJjbXAoY29sbGNvbGxhdGUsICJQT1NJWCIpID09IDApKTsKLQkJ CWNhY2hlX2VudHJ5LT5jdHlwZV9pc19jID0gKChzdHJjbXAoY29sbGN0eXBlLCAiQyIpID09IDAp IHx8Ci0JCQkJCQkJCQkgICAoc3RyY21wKGNvbGxjdHlwZSwgIlBPU0lYIikgPT0gMCkpOworCQkJ Y2FjaGVfZW50cnktPmNvbGxhdGVfaXNfYyA9IGxvY2FsZV9pc19jKGNvbGxjb2xsYXRlLCBmYWxz ZSk7CisJCQljYWNoZV9lbnRyeS0+Y3R5cGVfaXNfYyA9IGxvY2FsZV9pc19jKGNvbGxjdHlwZSwg ZmFsc2UpOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTI5MCwxMiArMTMwMyw4IEBAIGxjX2NvbGxh dGVfaXNfYyhPaWQgY29sbGF0aW9uKQogCQlpZiAoIWxvY2FsZXB0cikKIAkJCWVsb2coRVJST1Is ICJpbnZhbGlkIExDX0NPTExBVEUgc2V0dGluZyIpOwogCi0JCWlmIChzdHJjbXAobG9jYWxlcHRy LCAiQyIpID09IDApCi0JCQlyZXN1bHQgPSB0cnVlOwotCQllbHNlIGlmIChzdHJjbXAobG9jYWxl cHRyLCAiUE9TSVgiKSA9PSAwKQotCQkJcmVzdWx0ID0gdHJ1ZTsKLQkJZWxzZQotCQkJcmVzdWx0 ID0gZmFsc2U7CisJCXJlc3VsdCA9IGxvY2FsZV9pc19jKGxvY2FsZXB0ciwgZmFsc2UpOworCiAJ CXJldHVybiAoYm9vbCkgcmVzdWx0OwogCX0KIApAQCAtMTM0MywxMiArMTM1Miw4IEBAIGxjX2N0 eXBlX2lzX2MoT2lkIGNvbGxhdGlvbikKIAkJaWYgKCFsb2NhbGVwdHIpCiAJCQllbG9nKEVSUk9S LCAiaW52YWxpZCBMQ19DVFlQRSBzZXR0aW5nIik7CiAKLQkJaWYgKHN0cmNtcChsb2NhbGVwdHIs ICJDIikgPT0gMCkKLQkJCXJlc3VsdCA9IHRydWU7Ci0JCWVsc2UgaWYgKHN0cmNtcChsb2NhbGVw dHIsICJQT1NJWCIpID09IDApCi0JCQlyZXN1bHQgPSB0cnVlOwotCQllbHNlCi0JCQlyZXN1bHQg PSBmYWxzZTsKKwkJcmVzdWx0ID0gbG9jYWxlX2lzX2MobG9jYWxlcHRyLCBmYWxzZSk7CisKIAkJ cmV0dXJuIChib29sKSByZXN1bHQ7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9pbml0L3Bvc3Rpbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKaW5k ZXggMGY5YjkyYjMyZS4uYTkyYTBjNDM4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9wb3N0aW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwpA QCAtNDE5LDkgKzQxOSw3IEBAIENoZWNrTXlEYXRhYmFzZShjb25zdCBjaGFyICpuYW1lLCBib29s IGFtX3N1cGVydXNlciwgYm9vbCBvdmVycmlkZV9hbGxvd19jb25uZWN0CiAJCQkJCQkgICAiIHdo aWNoIGlzIG5vdCByZWNvZ25pemVkIGJ5IHNldGxvY2FsZSgpLiIsIGN0eXBlKSwKIAkJCQkgZXJy aGludCgiUmVjcmVhdGUgdGhlIGRhdGFiYXNlIHdpdGggYW5vdGhlciBsb2NhbGUgb3IgaW5zdGFs bCB0aGUgbWlzc2luZyBsb2NhbGUuIikpKTsKIAotCWlmIChzdHJjbXAoY3R5cGUsICJDIikgPT0g MCB8fAotCQlzdHJjbXAoY3R5cGUsICJQT1NJWCIpID09IDApCi0JCWRhdGFiYXNlX2N0eXBlX2lz X2MgPSB0cnVlOworCWRhdGFiYXNlX2N0eXBlX2lzX2MgPSBsb2NhbGVfaXNfYyhjdHlwZSwgZmFs c2UpOwogCiAJaWYgKGRiZm9ybS0+ZGF0bG9jcHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkK IAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tYi9tYnV0aWxzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9tYi9tYnV0aWxzLmMKaW5kZXggNjdhMWFiMmFiMi4uOTk3MTU2NTE1YyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWIvbWJ1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL21iL21idXRpbHMuYwpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIm1iL3BnX3dj aGFyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11 dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5 c2NhY2hlLmgiCiAjaW5jbHVkZSAidmFyYXR0LmgiCiAKQEAgLTEyMzcsOSArMTIzOCw3IEBAIHBn X2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpCiAJaW50CQkJ bmV3X21zZ2VuYzsKIAogI2lmbmRlZiBXSU4zMgotCWNvbnN0IGNoYXIgKmN0eXBlID0gc2V0bG9j YWxlKExDX0NUWVBFLCBOVUxMKTsKLQotCWlmIChwZ19zdHJjYXNlY21wKGN0eXBlLCAiQyIpID09 IDAgfHwgcGdfc3RyY2FzZWNtcChjdHlwZSwgIlBPU0lYIikgPT0gMCkKKwlpZiAobG9jYWxlX2lz X2MobG9jYWxlX2N0eXBlLCB0cnVlKSkKICNlbmRpZgogCQlpZiAoZW5jb2RpbmcgIT0gUEdfU1FM X0FTQ0lJICYmCiAJCQlyYXdfcGdfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQoZG9tYWlubmFtZSwg ZW5jb2RpbmcpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmggYi9z cmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaAppbmRleCBlMmE3MjQzNTQyLi44NzJiZWY3OThh IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy9wZ19sb2NhbGUuaApAQCAtNTQsNiArNTQsNyBAQCBleHRlcm4gUEdETExJTVBP UlQgYm9vbCBkYXRhYmFzZV9jdHlwZV9pc19jOwogZXh0ZXJuIGJvb2wgY2hlY2tfbG9jYWxlKGlu dCBjYXRlZ29yeSwgY29uc3QgY2hhciAqbG9jYWxlLCBjaGFyICoqY2Fub25uYW1lKTsKIGV4dGVy biBjaGFyICpwZ19wZXJtX3NldGxvY2FsZShpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2Fs ZSk7CiAKK2V4dGVybiBib29sIGxvY2FsZV9pc19jKGNvbnN0IGNoYXIgKmxvY2FsZSwgYm9vbCBp Z25vcmVfY2FzZSk7CiBleHRlcm4gYm9vbCBsY19jb2xsYXRlX2lzX2MoT2lkIGNvbGxhdGlvbik7 CiBleHRlcm4gYm9vbCBsY19jdHlwZV9pc19jKE9pZCBjb2xsYXRpb24pOwogCi0tIApUcmlzdGFu IFBhcnRpbgpOZW9uIChodHRwczovL25lb24udGVjaCkKCg== --6d7c348f4e80e55dc467cb255644d30bb9daaa7f427a5a106c3a30c5405d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0003-Use-thread-safe-locale-APIs.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0003-Use-thread-safe-locale-APIs.patch RnJvbSA3NzdhMzBlNWM1ZjA0ZmE0MzNlYTdlNTJjY2U4YTA1MTYyMjNhY2UzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IE1vbiwgMyBKdWwgMjAyMyAwODo1MTo1OSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMy8z XSBVc2UgdGhyZWFkLXNhZmUgbG9jYWxlIEFQSXMKCnNldGxvY2FsZSgpIGhhcyBiZWVuIGEgdGhv cm4gaW4gUG9zdGdyZXMncyBzaWRlIGZvciBhIHdoaWxlLiBNb3N0CnJlY2VudGx5IHRoaXMgaGFz IG1hbmlmZXN0ZWQgaW4gYnVnICMxNzk0NiB3aGVyZSBsb2FkaW5nIGxpYnBlcmwgd291bGQKY2F1 c2UgdGhlIGxvY2FsaXphdGlvbiB0byBjaGFuZ2Ugb3V0IGZyb20gdW5kZXIgUG9zdGdyZXMuIE9u IFdpbmRvd3MsCnVzZSBfRU5BQkxFX1BFUl9USFJFQURfTE9DQUxFLgotLS0KIHNyYy9iYWNrZW5k L21haW4vbWFpbi5jICAgICAgICAgICAgfCAgNTUgKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2Nhc2guYyAgICAgICB8ICAyOSArKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5n LmMgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYyAgfCAzODkgKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGlu aXQuYyAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21iL21idXRpbHMuYyAgICAgfCAgIDIg Ky0KIHNyYy9jb21tb24vZXhlYy5jICAgICAgICAgICAgICAgICAgfCAgMTYgLS0KIHNyYy9pbmNs dWRlL3V0aWxzL3BnX2xvY2FsZS5oICAgICAgfCAgIDIgKy0KIDggZmlsZXMgY2hhbmdlZCwgMzI2 IGluc2VydGlvbnMoKyksIDE4MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9tYWluL21haW4uYyBiL3NyYy9iYWNrZW5kL21haW4vbWFpbi5jCmluZGV4IGVkMTFlOGJlN2Yu LjA5M2RmODhmMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL21haW4vbWFpbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL21haW4vbWFpbi5jCkBAIC01OSw2ICs1OSwxMSBAQCBpbnQKIG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAlib29sCQlkb19jaGVja19yb290ID0gdHJ1ZTsKKwljaGFy CSAgICpjb2xsYXRlX2xvY2FsZTsKKwljaGFyCSAgICpjdHlwZV9sb2NhbGU7CisjaWZkZWYgTENf TUVTU0FHRVMKKwljaGFyCSAgICptZXNzYWdlc19sb2NhbGU7CisjZW5kaWYKIAogCXJlYWNoZWRf bWFpbiA9IHRydWU7CiAKQEAgLTExMSwxNSArMTE2LDM5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkgKiB0aGVzZSBzZXQgdG8gIkMiIHRoZW4gbWVzc2FnZSBsb2NhbGl6YXRpb24g bWlnaHQgbm90IHdvcmsgd2VsbCBpbiB0aGUKIAkgKiBwb3N0bWFzdGVyLgogCSAqLwotCWluaXRf bG9jYWxlKCJMQ19DT0xMQVRFIiwgTENfQ09MTEFURSwgIiIpOwotCWluaXRfbG9jYWxlKCJMQ19D VFlQRSIsIExDX0NUWVBFLCAiIik7CisKKwkvKgorCSAqIFNhdmUgb2ZmIHRoZSBvcmlnaW5hbCBs b2NhbGUgdmFsdWVzIHByaW9yIHRvIHRoZSBmaXJzdCBjYWxsIG9mCisJICogdXNlbG9jYWxlKCku IFRoaXMgZW5zdXJlcyB0aGF0IHdlIGRvbid0IGNhbGwgcGdfc2V0bG9jYWxlKCkgd2l0aCBhbiBl bXB0eQorCSAqIHN0cmluZy4gU2VlIHRoZSBmdW5jdGlvbiBjb21tZW50IGZvciBwZ19zZXRsb2Nh bGUoKSBmb3IgZnVydGhlcgorCSAqIGV4cGxhbmF0aW9uLiBOb3RlIHRoYXQgdGhpcyByZXN0cmlj dGlvbiBkb2Vzbid0IGV4aXN0IG9uIFdpbmRvd3MsIGJ1dCB3ZQorCSAqIGNhbiB1c2UgdGhlIHNh bWUgY29kZSBwYXRoIGFueXdheS4KKwkgKi8KKwljb2xsYXRlX2xvY2FsZSA9IHNldGxvY2FsZShM Q19DT0xMQVRFLCAiIik7CisJY3R5cGVfbG9jYWxlID0gc2V0bG9jYWxlKExDX0NUWVBFLCAiIik7 CisKKyNpZmRlZiBMQ19NRVNTQUdFUworCW1lc3NhZ2VzX2xvY2FsZSA9IHNldGxvY2FsZShMQ19N RVNTQUdFUywgIiIpOworI2VuZGlmCisKKworI2lmZGVmIEhBVkVfX0NPTkZJR1RIUkVBRExPQ0FM RQorCS8qCisJICogVGhpcyBjYWxsIGNvdWxkIG1vc3QgbGlrZWx5IGhhcHBlbiBzb29uZXIsIGJ1 dCBqdXN0IHRvIGVyciBvbiB0aGUgc2lkZSBvZgorCSAqIGNhdXRpb24sIGNhbGwgaXQgYWZ0ZXIg YWJzb3JiaW5nIGxvY2FsZXMgZnJvbSB0aGUgZW52aXJvbm1lbnQuCisJICovCisJX2NvbmZpZ3Ro cmVhZGxvY2FsZShfRU5BQkxFX1BFUl9USFJFQURfTE9DQUxFKTsKKyNlbmRpZgorCisJaW5pdF9s b2NhbGUoIkxDX0NPTExBVEUiLCBMQ19DT0xMQVRFLCBjb2xsYXRlX2xvY2FsZSk7CisJaW5pdF9s b2NhbGUoIkxDX0NUWVBFIiwgTENfQ1RZUEUsIGN0eXBlX2xvY2FsZSk7CiAKIAkvKgogCSAqIExD X01FU1NBR0VTIHdpbGwgZ2V0IHNldCBsYXRlciBkdXJpbmcgR1VDIG9wdGlvbiBwcm9jZXNzaW5n LCBidXQgd2Ugc2V0CiAJICogaXQgaGVyZSB0byBhbGxvdyBzdGFydHVwIGVycm9yIG1lc3NhZ2Vz IHRvIGJlIGxvY2FsaXplZC4KIAkgKi8KICNpZmRlZiBMQ19NRVNTQUdFUwotCWluaXRfbG9jYWxl KCJMQ19NRVNTQUdFUyIsIExDX01FU1NBR0VTLCAiIik7CisJaW5pdF9sb2NhbGUoIkxDX01FU1NB R0VTIiwgTENfTUVTU0FHRVMsIG1lc3NhZ2VzX2xvY2FsZSk7CiAjZW5kaWYKIAogCS8qCkBAIC0x MzAsMTMgKzE1OSw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlpbml0X2xvY2Fs ZSgiTENfTlVNRVJJQyIsIExDX05VTUVSSUMsICJDIik7CiAJaW5pdF9sb2NhbGUoIkxDX1RJTUUi LCBMQ19USU1FLCAiQyIpOwogCi0JLyoKLQkgKiBOb3cgdGhhdCB3ZSBoYXZlIGFic29yYmVkIGFz IG11Y2ggYXMgd2Ugd2lzaCB0byBmcm9tIHRoZSBsb2NhbGUKLQkgKiBlbnZpcm9ubWVudCwgcmVt b3ZlIGFueSBMQ19BTEwgc2V0dGluZywgc28gdGhhdCB0aGUgZW52aXJvbm1lbnQKLQkgKiB2YXJp YWJsZXMgaW5zdGFsbGVkIGJ5IHBnX3Blcm1fc2V0bG9jYWxlIGhhdmUgZm9yY2UuCi0JICovCi0J dW5zZXRlbnYoIkxDX0FMTCIpOwotCiAJLyoKIAkgKiBDYXRjaCBzdGFuZGFyZCBvcHRpb25zIGJl Zm9yZSBkb2luZyBtdWNoIGVsc2UsIGluIHBhcnRpY3VsYXIgYmVmb3JlIHdlCiAJICogaW5zaXN0 IG9uIG5vdCBiZWluZyByb290LgpAQCAtMzA3LDggKzMyOSwxNyBAQCBzdGFydHVwX2hhY2tzKGNv bnN0IGNoYXIgKnByb2duYW1lKQogc3RhdGljIHZvaWQKIGluaXRfbG9jYWxlKGNvbnN0IGNoYXIg KmNhdGVnb3J5bmFtZSwgaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpsb2NhbGUpCiB7Ci0JaWYg KHBnX3Blcm1fc2V0bG9jYWxlKGNhdGVnb3J5LCBsb2NhbGUpID09IE5VTEwgJiYKLQkJcGdfcGVy bV9zZXRsb2NhbGUoY2F0ZWdvcnksICJDIikgPT0gTlVMTCkKKwkvKgorCSAqIFNpbmNlIHdlIGFy ZSBpbml0aWFsaXppbmcgZ2xvYmFsIGxvY2FsZXMsIE5VTEwgYW5kIGVtcHR5IHN0cmluZyBhcmUK KwkgKiBpbnZhbGlkIGFyZ3VtZW50cy4gU2VlIHRoZSBwZ19zZXRsb2NhbGUoKSBmdW5jdGlvbiBk ZXNjcmlwdGlvbiBmb3IgbW9yZQorCSAqIGV4cGxhbmF0aW9uIG9uIHRoZSBlbXB0eSBzdHJpbmcu IE5VTEwganVzdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgaW4gdGhpcworCSAqIGNvbnRleHQgb2YgaW5p dGlhbGl6aW5nIGxvY2FsZXMuCisJICovCisJQXNzZXJ0KGxvY2FsZSk7CisJQXNzZXJ0KGxvY2Fs ZVswXSAhPSAnXDAnKTsKKworCWlmIChwZ19zZXRsb2NhbGUoY2F0ZWdvcnksIGxvY2FsZSkgPT0g TlVMTCAmJgorCQlwZ19zZXRsb2NhbGUoY2F0ZWdvcnksICJDIikgPT0gTlVMTCkKIAkJZWxvZyhG QVRBTCwgImNvdWxkIG5vdCBhZG9wdCBcIiVzXCIgbG9jYWxlIG5vciBDIGxvY2FsZSBmb3IgJXMi LAogCQkJIGxvY2FsZSwgY2F0ZWdvcnluYW1lKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9jYXNoLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvY2FzaC5jCmluZGV4IDMy ZmJhZDJmNTcuLjVjMjU0ZDkxMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9j YXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Nhc2guYwpAQCAtMTExLDYgKzExMSwx MSBAQCBjYXNoX2luKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgICAqY3N5bWJvbDsKIAlzdHJ1Y3Qg bGNvbnYgKmxjb252ZXJ0ID0gUEdMQ19sb2NhbGVjb252KCk7CiAKKwlpZiAobGNvbnZlcnQgPT0g TlVMTCkKKwkJZXJldHVybihlc2NvbnRleHQsIChEYXR1bSkgMCwKKwkJCQkoZXJyY29kZShFUlJD T0RFX09VVF9PRl9NRU1PUlkpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1v cnkgZm9yIGxvY2FsZSBpbmZvcm1hdGlvbiIpKSk7CisKIAkvKgogCSAqIGZyYWNfZGlnaXRzIHdp bGwgYmUgQ0hBUl9NQVggaW4gc29tZSBsb2NhbGVzLCBub3RhYmx5IEMuICBIb3dldmVyLCBqdXN0 CiAJICogdGVzdGluZyBmb3IgPT0gQ0hBUl9NQVggaXMgcmlza3ksIGJlY2F1c2Ugb2YgY29tcGls ZXJzIGxpa2UgZ2NjIHRoYXQKQEAgLTMyNSw2ICszMzAsMTEgQEAgY2FzaF9vdXQoUEdfRlVOQ1RJ T05fQVJHUykKIAkJCQlzZXBfYnlfc3BhY2U7CiAJc3RydWN0IGxjb252ICpsY29udmVydCA9IFBH TENfbG9jYWxlY29udigpOwogCisJaWYgKGxjb252ZXJ0ID09IE5VTEwpCisJCWVyZXR1cm4oZmNp bmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVN T1JZKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBsb2NhbGUg aW5mb3JtYXRpb24iKSkpOworCiAJLyogc2VlIGNvbW1lbnRzIGFib3V0IGZyYWNfZGlnaXRzIGlu IGNhc2hfaW4oKSAqLwogCXBvaW50cyA9IGxjb252ZXJ0LT5mcmFjX2RpZ2l0czsKIAlpZiAocG9p bnRzIDwgMCB8fCBwb2ludHMgPiAxMCkKQEAgLTEwMzYsNiArMTA0NiwxMSBAQCBjYXNoX251bWVy aWMoUEdfRlVOQ1RJT05fQVJHUykKIAlpbnQJCQlmcG9pbnQ7CiAJc3RydWN0IGxjb252ICpsY29u dmVydCA9IFBHTENfbG9jYWxlY29udigpOwogCisJaWYgKGxjb252ZXJ0ID09IE5VTEwpCisJCWVy ZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9P VVRfT0ZfTUVNT1JZKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZv ciBsb2NhbGUgaW5mb3JtYXRpb24iKSkpOworCiAJLyogc2VlIGNvbW1lbnRzIGFib3V0IGZyYWNf ZGlnaXRzIGluIGNhc2hfaW4oKSAqLwogCWZwb2ludCA9IGxjb252ZXJ0LT5mcmFjX2RpZ2l0czsK IAlpZiAoZnBvaW50IDwgMCB8fCBmcG9pbnQgPiAxMCkKQEAgLTEwOTUsNiArMTExMCwxMSBAQCBu dW1lcmljX2Nhc2goUEdfRlVOQ1RJT05fQVJHUykKIAlEYXR1bQkJbnVtZXJpY19zY2FsZTsKIAlz dHJ1Y3QgbGNvbnYgKmxjb252ZXJ0ID0gUEdMQ19sb2NhbGVjb252KCk7CiAKKwlpZiAobGNvbnZl cnQgPT0gTlVMTCkKKwkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKKwkJCQko ZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBh bGxvY2F0ZSBtZW1vcnkgZm9yIGxvY2FsZSBpbmZvcm1hdGlvbiIpKSk7CisKIAkvKiBzZWUgY29t bWVudHMgYWJvdXQgZnJhY19kaWdpdHMgaW4gY2FzaF9pbigpICovCiAJZnBvaW50ID0gbGNvbnZl cnQtPmZyYWNfZGlnaXRzOwogCWlmIChmcG9pbnQgPCAwIHx8IGZwb2ludCA+IDEwKQpAQCAtMTEy OCw2ICsxMTQ4LDExIEBAIGludDRfY2FzaChQR19GVU5DVElPTl9BUkdTKQogCWludAkJCWk7CiAJ c3RydWN0IGxjb252ICpsY29udmVydCA9IFBHTENfbG9jYWxlY29udigpOwogCisJaWYgKGxjb252 ZXJ0ID09IE5VTEwpCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3Qg YWxsb2NhdGUgbWVtb3J5IGZvciBsb2NhbGUgaW5mb3JtYXRpb24iKSkpOworCiAJLyogc2VlIGNv bW1lbnRzIGFib3V0IGZyYWNfZGlnaXRzIGluIGNhc2hfaW4oKSAqLwogCWZwb2ludCA9IGxjb252 ZXJ0LT5mcmFjX2RpZ2l0czsKIAlpZiAoZnBvaW50IDwgMCB8fCBmcG9pbnQgPiAxMCkKQEAgLTEx NTgsNiArMTE4MywxMCBAQCBpbnQ4X2Nhc2goUEdfRlVOQ1RJT05fQVJHUykKIAlpbnQJCQlpOwog CXN0cnVjdCBsY29udiAqbGNvbnZlcnQgPSBQR0xDX2xvY2FsZWNvbnYoKTsKIAorCWVyZXR1cm4o ZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCisJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9N RU1PUlkpLAorCQkJIGVycm1zZygiY291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgbG9jYWxl IGluZm9ybWF0aW9uIikpKTsKKwogCS8qIHNlZSBjb21tZW50cyBhYm91dCBmcmFjX2RpZ2l0cyBp biBjYXNoX2luKCkgKi8KIAlmcG9pbnQgPSBsY29udmVydC0+ZnJhY19kaWdpdHM7CiAJaWYgKGZw b2ludCA8IDAgfHwgZnBvaW50ID4gMTApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvZm9ybWF0dGluZy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYwppbmRl eCBlNjI0NmRjNDRiLi5iNDIyOWQwNzVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvZm9ybWF0dGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMK QEAgLTUwNjcsMTIgKzUwNjcsMTIgQEAgTlVNX3ByZXBhcmVfbG9jYWxlKE5VTVByb2MgKk5wKQog CQkvKgogCQkgKiBQb3NpdGl2ZSAvIE5lZ2F0aXZlIG51bWJlciBzaWduCiAJCSAqLwotCQlpZiAo bGNvbnYtPm5lZ2F0aXZlX3NpZ24gJiYgKmxjb252LT5uZWdhdGl2ZV9zaWduKQorCQlpZiAobGNv bnYgJiYgbGNvbnYtPm5lZ2F0aXZlX3NpZ24gJiYgKmxjb252LT5uZWdhdGl2ZV9zaWduKQogCQkJ TnAtPkxfbmVnYXRpdmVfc2lnbiA9IGxjb252LT5uZWdhdGl2ZV9zaWduOwogCQllbHNlCiAJCQlO cC0+TF9uZWdhdGl2ZV9zaWduID0gIi0iOwogCi0JCWlmIChsY29udi0+cG9zaXRpdmVfc2lnbiAm JiAqbGNvbnYtPnBvc2l0aXZlX3NpZ24pCisJCWlmIChsY29udiAmJiBsY29udi0+cG9zaXRpdmVf c2lnbiAmJiAqbGNvbnYtPnBvc2l0aXZlX3NpZ24pCiAJCQlOcC0+TF9wb3NpdGl2ZV9zaWduID0g bGNvbnYtPnBvc2l0aXZlX3NpZ247CiAJCWVsc2UKIAkJCU5wLT5MX3Bvc2l0aXZlX3NpZ24gPSAi KyI7CkBAIC01MDgwLDkgKzUwODAsOCBAQCBOVU1fcHJlcGFyZV9sb2NhbGUoTlVNUHJvYyAqTnAp CiAJCS8qCiAJCSAqIE51bWJlciBkZWNpbWFsIHBvaW50CiAJCSAqLwotCQlpZiAobGNvbnYtPmRl Y2ltYWxfcG9pbnQgJiYgKmxjb252LT5kZWNpbWFsX3BvaW50KQorCQlpZiAobGNvbnYgJiYgbGNv bnYtPmRlY2ltYWxfcG9pbnQgJiYgKmxjb252LT5kZWNpbWFsX3BvaW50KQogCQkJTnAtPmRlY2lt YWwgPSBsY29udi0+ZGVjaW1hbF9wb2ludDsKLQogCQllbHNlCiAJCQlOcC0+ZGVjaW1hbCA9ICIu IjsKIApAQCAtNTA5Niw3ICs1MDk1LDcgQEAgTlVNX3ByZXBhcmVfbG9jYWxlKE5VTVByb2MgKk5w KQogCQkgKiBidXQgIiIgZm9yIHRob3VzYW5kc19zZXAsIHNvIHdlIHNldCB0aGUgdGhvdXNhbmRz X3NlcCB0b28uCiAJCSAqIGh0dHA6Ly9hcmNoaXZlcy5wb3N0Z3Jlc3FsLm9yZy9wZ3NxbC1oYWNr ZXJzLzIwMDctMTEvbXNnMDA3NzIucGhwCiAJCSAqLwotCQlpZiAobGNvbnYtPnRob3VzYW5kc19z ZXAgJiYgKmxjb252LT50aG91c2FuZHNfc2VwKQorCQlpZiAobGNvbnYgJiYgbGNvbnYtPnRob3Vz YW5kc19zZXAgJiYgKmxjb252LT50aG91c2FuZHNfc2VwKQogCQkJTnAtPkxfdGhvdXNhbmRzX3Nl cCA9IGxjb252LT50aG91c2FuZHNfc2VwOwogCQkvKiBNYWtlIHN1cmUgdGhvdXNhbmRzIHNlcGFy YXRvciBkb2Vzbid0IG1hdGNoIGRlY2ltYWwgcG9pbnQgc3ltYm9sLiAqLwogCQllbHNlIGlmIChz dHJjbXAoTnAtPmRlY2ltYWwsICIsIikgIT0gMCkKQEAgLTUxMDcsNyArNTEwNiw3IEBAIE5VTV9w cmVwYXJlX2xvY2FsZShOVU1Qcm9jICpOcCkKIAkJLyoKIAkJICogQ3VycmVuY3kgc3ltYm9sCiAJ CSAqLwotCQlpZiAobGNvbnYtPmN1cnJlbmN5X3N5bWJvbCAmJiAqbGNvbnYtPmN1cnJlbmN5X3N5 bWJvbCkKKwkJaWYgKGxjb252ICYmIGxjb252LT5jdXJyZW5jeV9zeW1ib2wgJiYgKmxjb252LT5j dXJyZW5jeV9zeW1ib2wpCiAJCQlOcC0+TF9jdXJyZW5jeV9zeW1ib2wgPSBsY29udi0+Y3VycmVu Y3lfc3ltYm9sOwogCQllbHNlCiAJCQlOcC0+TF9jdXJyZW5jeV9zeW1ib2wgPSAiICI7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfbG9jYWxlLmMKaW5kZXggYjQ1NWVmM2FmZi4uZDNjYThjNGIyZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ19sb2NhbGUuYwpAQCAtOTgsNiArOTgsMjMgQEAgY2hhcgkgICAqbG9jYWxl X3RpbWU7CiAKIGludAkJCWljdV92YWxpZGF0aW9uX2xldmVsID0gV0FSTklORzsKIAorI2lmZGVm IEhBVkVfVVNFTE9DQUxFCisvKgorICogQ3VycmVudCBsb2NhbGUgc2V0dGluZ3MKKyAqCisgKiB1 c2Vsb2NhbGUoKSBhbmQgZnJpZW5kcyBkb24ndCBoYXZlIGFuIGVxdWl2YWxlbnQgdG8gc2V0bG9j YWxlKGNhdCwgTlVMTCksIHNvCisgKiBhcyB3ZSBzZXQgbG9jYWxlcyBmb3IgdmFyaW91cyBjYXRl Z29yaWVzLCBzdGFzaCB0aGVtIGZvciByZXRyaWV2YWwgYXMgbmVlZGVkLgorICovCitzdGF0aWMg c3RydWN0IHsKKwljaGFyICpjb2xsYXRlOworCWNoYXIgKmN0eXBlOworCWNoYXIgKm1lc3NhZ2Vz OworCWNoYXIgKm1vbmV0YXJ5OworCWNoYXIgKm51bWVyaWM7CisJY2hhciAqdGltZTsKK30gY3Vy cl9sb2NhbGVzID0geyAwIH07CisjZW5kaWYgLyogSEFWRV9VU0VMT0NBTEUgKi8KKwogLyoKICAq IGxjX3RpbWUgbG9jYWxpemF0aW9uIGNhY2hlLgogICoKQEAgLTE2OSwyOCArMTg2LDE0NiBAQCBs b2NhbGVfaXNfYyhjb25zdCBjaGFyICpsb2NhbGUsIGJvb2wgaWdub3JlX2Nhc2UpCiAJcmV0dXJu IHBnX3N0cmNhc2VjbXAobG9jYWxlLCAiQyIpID09IDAgfHwgcGdfc3RyY2FzZWNtcChsb2NhbGUs ICJQT1NJWCIpID09IDA7CiB9CiAKKworI2lmZGVmIEhBVkVfVVNFTE9DQUxFCiAvKgotICogcGdf cGVybV9zZXRsb2NhbGUKLSAqCi0gKiBUaGlzIHdyYXBzIHRoZSBsaWJjIGZ1bmN0aW9uIHNldGxv Y2FsZSgpLCB3aXRoIHR3byBhZGRpdGlvbnMuICBGaXJzdCwgd2hlbgotICogY2hhbmdpbmcgTENf Q1RZUEUsIHVwZGF0ZSBnZXR0ZXh0J3MgZW5jb2RpbmcgZm9yIHRoZSBjdXJyZW50IG1lc3NhZ2UK LSAqIGRvbWFpbi4gIEdOVSBnZXR0ZXh0IGF1dG9tYXRpY2FsbHkgdHJhY2tzIExDX0NUWVBFIG9u IG1vc3QgcGxhdGZvcm1zLCBidXQKLSAqIG5vdCBvbiBXaW5kb3dzLiAgU2Vjb25kLCBpZiB0aGUg b3BlcmF0aW9uIGlzIHN1Y2Nlc3NmdWwsIHRoZSBjb3JyZXNwb25kaW5nCi0gKiBMQ19YWFggZW52 aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvIG1hdGNoLiAgQnkgc2V0dGluZyB0aGUgZW52aXJv bm1lbnQKLSAqIHZhcmlhYmxlLCB3ZSBlbnN1cmUgdGhhdCBhbnkgc3Vic2VxdWVudCB1c2Ugb2Yg c2V0bG9jYWxlKC4uLiwgIiIpIHdpbGwKLSAqIHByZXNlcnZlIHRoZSBzZXR0aW5ncyBtYWRlIHRo cm91Z2ggdGhpcyByb3V0aW5lLiAgT2YgY291cnNlLCBMQ19BTEwgbXVzdAotICogYWxzbyBiZSB1 bnNldCB0byBmdWxseSBlbnN1cmUgdGhhdCwgYnV0IHRoYXQgaGFzIHRvIGJlIGRvbmUgZWxzZXdo ZXJlIGFmdGVyCi0gKiBhbGwgdGhlIGluZGl2aWR1YWwgTENfWFhYIHZhcmlhYmxlcyBoYXZlIGJl ZW4gc2V0IGNvcnJlY3RseS4gIChUaGFuayB5b3UKLSAqIFBlcmwgZm9yIG1ha2luZyB0aGlzIGts dWdlIG5lY2Vzc2FyeS4pCisgKiBUdXJucyBsb2NhbGUgY2F0ZWdvcmllcyBpbnRvIHRoZWlyIG1h c2sgZXF1aXZhbGVudHMgZm9yIHVzZSBpbiBuZXdsb2NhbGUoMykKKyAqCisgKiBHQ0MgaGFzIHRo ZSBtYXNrcyBkZWZpbmVkIGFzICgxIDw8IGNhdGVnb3J5KSwgYnV0IHRoaXMgaXNuJ3QgZ3VhcmFu dGVlZCB0byBiZQorICogdGhlIHNhbWUgaW4gb3RoZXIgbGliY3MuCisgKi8KK3N0YXRpYyBpbnQK K2NhdGVnb3J5X3RvX21hc2soaW50IGNhdGVnb3J5KQoreworCXN3aXRjaCAoY2F0ZWdvcnkpIHsK KwljYXNlIExDX0FMTDoKKwkJcmV0dXJuIExDX0FMTF9NQVNLOworCWNhc2UgTENfQ09MTEFURToK KwkJcmV0dXJuIExDX0NPTExBVEVfTUFTSzsKKwljYXNlIExDX0NUWVBFOgorCQlyZXR1cm4gTENf Q1RZUEVfTUFTSzsKKyNpZmRlZiBMQ19NRVNTQUdFUworCWNhc2UgTENfTUVTU0FHRVM6CisJCXJl dHVybiBMQ19NRVNTQUdFU19NQVNLOworI2VuZGlmCisJY2FzZSBMQ19NT05FVEFSWToKKwkJcmV0 dXJuIExDX01PTkVUQVJZX01BU0s7CisJY2FzZSBMQ19OVU1FUklDOgorCQlyZXR1cm4gTENfTlVN RVJJQ19NQVNLOworCWNhc2UgTENfVElNRToKKwkJcmV0dXJuIExDX1RJTUVfTUFTSzsKKwl9CisK KwlwZ191bnJlYWNoYWJsZSgpOworfQorCisKK3N0YXRpYyBjaGFyICoKK3BnX2dldGxvY2FsZShp bnQgY2F0ZWdvcnkpCit7CisJc3dpdGNoIChjYXRlZ29yeSkgeworCWNhc2UgTENfQ09MTEFURToK KwkJcmV0dXJuIGN1cnJfbG9jYWxlcy5jb2xsYXRlOworCWNhc2UgTENfQ1RZUEU6CisJCXJldHVy biBjdXJyX2xvY2FsZXMuY3R5cGU7CisJY2FzZSBMQ19NRVNTQUdFUzoKKwkJcmV0dXJuIGN1cnJf bG9jYWxlcy5tZXNzYWdlczsKKwljYXNlIExDX01PTkVUQVJZOgorCQlyZXR1cm4gY3Vycl9sb2Nh bGVzLm1vbmV0YXJ5OworCWNhc2UgTENfTlVNRVJJQzoKKwkJcmV0dXJuIGN1cnJfbG9jYWxlcy5u dW1lcmljOworCWNhc2UgTENfVElNRToKKwkJcmV0dXJuIGN1cnJfbG9jYWxlcy50aW1lOworCWRl ZmF1bHQ6CisJCXBnX3VucmVhY2hhYmxlKCk7CisJfQorfQorI2VuZGlmIC8qIEhBVkVfVVNFTE9D QUxFICovCisKKworLyoKKyAqIHBnX3NldGxvY2FsZQorICoKKyAqIFRoaXMgd3JhcHMgdGhlIGxp YmMgZnVuY3Rpb25zIHVzZWxvY2FsZSgpIG9yIHNldGxvY2FsZSgpIChkZXBlbmRpbmcgb24gdGhl CisgKiBwbGF0Zm9ybSksIHdpdGggYSBzaW5nbGUgYWRkaXRpb24uICBXaGVuIGNoYW5naW5nIExD X0NUWVBFLCB1cGRhdGUgZ2V0dGV4dCdzCisgKiBlbmNvZGluZyBmb3IgdGhlIGN1cnJlbnQgbWVz c2FnZSBkb21haW4uIEdOVSBnZXR0ZXh0IGF1dG9tYXRpY2FsbHkgdHJhY2tzCisgKiBMQ19DVFlQ RSBvbiBtb3N0IHBsYXRmb3JtcywgYnV0IG5vdCBvbiBXaW5kb3dzLiAgVGhpcyBmdW5jdGlvbiB3 aWxsIGFib3J0IGlmCisgKiBsb2NhbGUgaXMgdGhlIGVtcHR5IHN0cmluZy4gIEEgd29ya2Fyb3Vu ZCBpcyB0byBwYXNzIHRoZSBvdXRwdXQgb2YKKyAqIHNldGxvY2FsZShjYXRlZ29yeSwgIiIpIHRv IHRoZSBsb2NhbGUgYXJndW1lbnQuCiAgKi8KIGNoYXIgKgotcGdfcGVybV9zZXRsb2NhbGUoaW50 IGNhdGVnb3J5LCBjb25zdCBjaGFyICpsb2NhbGUpCitwZ19zZXRsb2NhbGUoaW50IGNhdGVnb3J5 LCBjb25zdCBjaGFyICpsb2NhbGUpCiB7CiAJY2hhcgkgICAqcmVzdWx0OwotCWNvbnN0IGNoYXIg KmVudnZhcjsKKyNpZmRlZiBIQVZFX1VTRUxPQ0FMRQorCWNoYXIJICAqKnNhdmU7CisJaW50CQkJ Y2F0ZWdvcnlfbWFzazsKKwlsb2NhbGVfdAlwcmV2X2xvY2FsZTsKKwlsb2NhbGVfdAl0ZW1wX2xv Y2FsZTsKKwlsb2NhbGVfdAl3b3JrX2xvY2FsZTsKKworCWlmIChsb2NhbGUgPT0gTlVMTCkKKwkJ cmV0dXJuIHBnX2dldGxvY2FsZShjYXRlZ29yeSk7CisKKwlBc3NlcnQobG9jYWxlWzBdICE9ICdc MCcpOworCisJY2F0ZWdvcnlfbWFzayA9IGNhdGVnb3J5X3RvX21hc2soY2F0ZWdvcnkpOworCisJ cHJldl9sb2NhbGUgPSB1c2Vsb2NhbGUoKGxvY2FsZV90KSAwKTsKKwlBc3NlcnQoc2F2ZWRfbG9j YWxlICE9IChsb2NhbGVfdCkgMCk7CisKKwlyZXN1bHQgPSBzdHJkdXAobG9jYWxlKTsKKwl3b3Jr X2xvY2FsZSA9IGR1cGxvY2FsZShwcmV2X2xvY2FsZSk7CisJaWYgKCFyZXN1bHQgfHwgd29ya19s b2NhbGUgPT0gKGxvY2FsZV90KSAwKSB7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwKKwkJCQkgZXJybXNnKCJvdXQgb2YgbWVtb3J5IikpKTsK KworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwl0ZW1wX2xvY2FsZSA9IG5ld2xvY2FsZShjYXRlZ29y eV9tYXNrLCBsb2NhbGUsIHdvcmtfbG9jYWxlKTsKKwlpZiAodGVtcF9sb2NhbGUgPT0gKGxvY2Fs ZV90KSAwKSB7CisJCWZyZWVsb2NhbGUod29ya19sb2NhbGUpOworCisJCXJldHVybiBOVUxMOwkJ CS8qIGZhbGwgb3V0IGltbWVkaWF0ZWx5IG9uIGZhaWx1cmUgKi8KKwl9CisJd29ya19sb2NhbGUg PSB0ZW1wX2xvY2FsZTsKKworCXVzZWxvY2FsZSh3b3JrX2xvY2FsZSk7CisJaWYgKHByZXZfbG9j YWxlICE9IExDX0dMT0JBTF9MT0NBTEUpCisJCWZyZWVsb2NhbGUocHJldl9sb2NhbGUpOworCisJ LyoKKwkgKiBDb3B5aW5nIHRoZSBsb2NhbGUgbXVzdCBvY2N1ciBiZWZvcmUgd2UgcG90ZW50aWFs bHkgYmluZCB0aGUgdGV4dCBkb21haW4uCisJICovCisJc3dpdGNoIChjYXRlZ29yeSkgeworCWNh c2UgTENfQ09MTEFURToKKwkJc2F2ZSA9ICZjdXJyX2xvY2FsZXMuY29sbGF0ZTsKKwkJYnJlYWs7 CisJY2FzZSBMQ19DVFlQRToKKwkJc2F2ZSA9ICZjdXJyX2xvY2FsZXMuY3R5cGU7CisJCWJyZWFr OworCWNhc2UgTENfTUVTU0FHRVM6CisJCXNhdmUgPSAmY3Vycl9sb2NhbGVzLm1lc3NhZ2VzOwor CQlicmVhazsKKwljYXNlIExDX01PTkVUQVJZOgorCQlzYXZlID0gJmN1cnJfbG9jYWxlcy5tb25l dGFyeTsKKwkJYnJlYWs7CisJY2FzZSBMQ19OVU1FUklDOgorCQlzYXZlID0gJmN1cnJfbG9jYWxl cy5udW1lcmljOworCQlicmVhazsKKwljYXNlIExDX1RJTUU6CisJCXNhdmUgPSAmY3Vycl9sb2Nh bGVzLnRpbWU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXBnX3VucmVhY2hhYmxlKCk7CisJfQor CisJLyogRnJlZSBvbGQgbG9jYWxlIHN0cmluZywgYW5kIHN0YXNoIHRoZSBuZXcgb25lICovCisJ ZnJlZSgqc2F2ZSk7CisJKnNhdmUgPSByZXN1bHQ7CiAKLSNpZm5kZWYgV0lOMzIKLQlyZXN1bHQg PSBzZXRsb2NhbGUoY2F0ZWdvcnksIGxvY2FsZSk7CiAjZWxzZQogCiAJLyoKQEAgLTIwOSwxMSAr MzQ0LDEyIEBAIHBnX3Blcm1fc2V0bG9jYWxlKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqbG9j YWxlKQogCWVsc2UKICNlbmRpZgogCQlyZXN1bHQgPSBzZXRsb2NhbGUoY2F0ZWdvcnksIGxvY2Fs ZSk7Ci0jZW5kaWYJCQkJCQkJLyogV0lOMzIgKi8KIAogCWlmIChyZXN1bHQgPT0gTlVMTCkKIAkJ cmV0dXJuIHJlc3VsdDsJCQkvKiBmYWxsIG91dCBpbW1lZGlhdGVseSBvbiBmYWlsdXJlICovCiAK KyNlbmRpZiAvKiBIQVZFX1VTRUxPQ0FMRSAqLworCiAJLyoKIAkgKiBVc2UgdGhlIHJpZ2h0IGVu Y29kaW5nIGluIHRyYW5zbGF0ZWQgbWVzc2FnZXMuICBVbmRlciBFTkFCTEVfTkxTLCBsZXQKIAkg KiBwZ19iaW5kX3RleHRkb21haW5fY29kZXNldCgpIGZpZ3VyZSBpdCBvdXQuICBVbmRlciAhRU5B QkxFX05MUywgbWVzc2FnZQpAQCAtMjIzLDExICszNTksMTMgQEAgcGdfcGVybV9zZXRsb2NhbGUo aW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpsb2NhbGUpCiAJICovCiAJaWYgKGNhdGVnb3J5ID09 IExDX0NUWVBFKQogCXsKKyNpZm5kZWYgSEFWRV9VU0VMT0NBTEUKIAkJc3RhdGljIGNoYXIgc2F2 ZV9sY19jdHlwZVtMT0NBTEVfTkFNRV9CVUZMRU5dOwogCiAJCS8qIGNvcHkgc2V0bG9jYWxlKCkg cmV0dXJuIHZhbHVlIGJlZm9yZSBjYWxsZWUgaW52b2tlcyBpdCBhZ2FpbiAqLwogCQlzdHJsY3B5 KHNhdmVfbGNfY3R5cGUsIHJlc3VsdCwgc2l6ZW9mKHNhdmVfbGNfY3R5cGUpKTsKIAkJcmVzdWx0 ID0gc2F2ZV9sY19jdHlwZTsKKyNlbmRpZgogCiAjaWZkZWYgRU5BQkxFX05MUwogCQlTZXRNZXNz YWdlRW5jb2RpbmcocGdfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQodGV4dGRvbWFpbihOVUxMKSkp OwpAQCAtMjM2LDQyICszNzQsNiBAQCBwZ19wZXJtX3NldGxvY2FsZShpbnQgY2F0ZWdvcnksIGNv bnN0IGNoYXIgKmxvY2FsZSkKICNlbmRpZgogCX0KIAotCXN3aXRjaCAoY2F0ZWdvcnkpCi0Jewot CQljYXNlIExDX0NPTExBVEU6Ci0JCQllbnZ2YXIgPSAiTENfQ09MTEFURSI7Ci0JCQlicmVhazsK LQkJY2FzZSBMQ19DVFlQRToKLQkJCWVudnZhciA9ICJMQ19DVFlQRSI7Ci0JCQlicmVhazsKLSNp ZmRlZiBMQ19NRVNTQUdFUwotCQljYXNlIExDX01FU1NBR0VTOgotCQkJZW52dmFyID0gIkxDX01F U1NBR0VTIjsKLSNpZmRlZiBXSU4zMgotCQkJcmVzdWx0ID0gSXNvTG9jYWxlTmFtZShsb2NhbGUp OwotCQkJaWYgKHJlc3VsdCA9PSBOVUxMKQotCQkJCXJlc3VsdCA9IChjaGFyICopIGxvY2FsZTsK LQkJCWVsb2coREVCVUczLCAiSXNvTG9jYWxlTmFtZSgpIGV4ZWN1dGVkOyBsb2NhbGU6IFwiJXNc IiIsIHJlc3VsdCk7Ci0jZW5kaWYJCQkJCQkJLyogV0lOMzIgKi8KLQkJCWJyZWFrOwotI2VuZGlm CQkJCQkJCS8qIExDX01FU1NBR0VTICovCi0JCWNhc2UgTENfTU9ORVRBUlk6Ci0JCQllbnZ2YXIg PSAiTENfTU9ORVRBUlkiOwotCQkJYnJlYWs7Ci0JCWNhc2UgTENfTlVNRVJJQzoKLQkJCWVudnZh ciA9ICJMQ19OVU1FUklDIjsKLQkJCWJyZWFrOwotCQljYXNlIExDX1RJTUU6Ci0JCQllbnZ2YXIg PSAiTENfVElNRSI7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWVsb2coRkFUQUwsICJ1bnJl Y29nbml6ZWQgTEMgY2F0ZWdvcnk6ICVkIiwgY2F0ZWdvcnkpOwotCQkJcmV0dXJuIE5VTEw7CQkv KiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCi0JfQotCi0JaWYgKHNldGVudihlbnZ2YXIsIHJlc3Vs dCwgMSkgIT0gMCkKLQkJcmV0dXJuIE5VTEw7Ci0KIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC0y ODksNiArMzkxLDQ3IEBAIHBnX3Blcm1fc2V0bG9jYWxlKGludCBjYXRlZ29yeSwgY29uc3QgY2hh ciAqbG9jYWxlKQogYm9vbAogY2hlY2tfbG9jYWxlKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAq bG9jYWxlLCBjaGFyICoqY2Fub25uYW1lKQogeworI2lmZGVmIEhBVkVfVVNFTE9DQUxFCisJbG9j YWxlX3QJc2F2ZWRfbG9jYWxlOworCWxvY2FsZV90CXRlbXBfbG9jYWxlOworCWxvY2FsZV90CXdv cmtfbG9jYWxlOworCWludAkJCWNhdGVnb3J5X21hc2s7CisKKwljYXRlZ29yeV9tYXNrID0gY2F0 ZWdvcnlfdG9fbWFzayhjYXRlZ29yeSk7CisKKwlpZiAoY2Fub25uYW1lKQorCQkqY2Fub25uYW1l ID0gTlVMTDsJCS8qIGluIGNhc2Ugb2YgZmFpbHVyZSAqLworCisJc2F2ZWRfbG9jYWxlID0gdXNl bG9jYWxlKChsb2NhbGVfdCkgMCk7CisJd29ya19sb2NhbGUgPSBkdXBsb2NhbGUoc2F2ZWRfbG9j YWxlKTsKKwlpZiAod29ya19sb2NhbGUgPT0gKGxvY2FsZV90KSAwKSB7CisJCWlmIChlcnJubyA9 PSBFTk9NRU0pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9P Rl9NRU1PUlkpLAorCQkJCQkgZXJybXNnKCJvdXQgb2YgbWVtb3J5IikpKTsKKworCQlyZXR1cm4g ZmFsc2U7CisJfQorCisJdGVtcF9sb2NhbGUgPSBuZXdsb2NhbGUoY2F0ZWdvcnlfbWFzaywgbG9j YWxlLCB3b3JrX2xvY2FsZSk7CisJaWYgKHRlbXBfbG9jYWxlID09IChsb2NhbGVfdCkgMCkgewor CQlmcmVlbG9jYWxlKHdvcmtfbG9jYWxlKTsKKworCQlyZXR1cm4gZmFsc2U7CisJfQorCXdvcmtf bG9jYWxlID0gdGVtcF9sb2NhbGU7CisKKwl1c2Vsb2NhbGUod29ya19sb2NhbGUpOworCWlmIChj YW5vbm5hbWUpCisJCSpjYW5vbm5hbWUgPSBwc3RyZHVwKGxvY2FsZSk7IC8qIFRPRE86IFRoaXMg ZG9lcyBub3QgaGFuZGxlICIiIGFzIHRoZSBsb2NhbGUgKi8KKworCXVzZWxvY2FsZShzYXZlZF9s b2NhbGUpOworCWZyZWVsb2NhbGUod29ya19sb2NhbGUpOworCisJcmV0dXJuIHRydWU7CisKKyNl bHNlCisKIAljaGFyCSAgICpzYXZlOwogCWNoYXIJICAgKnJlczsKIApAQCAtMzE1LDYgKzQ1OCw3 IEBAIGNoZWNrX2xvY2FsZShpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2FsZSwgY2hhciAq KmNhbm9ubmFtZSkKIAlwZnJlZShzYXZlKTsKIAogCXJldHVybiAocmVzICE9IE5VTEwpOworI2Vu ZGlmIC8qIEhBVkVfVVNFTE9DQUxFICovCiB9CiAKIApAQCAtMzI3LDcgKzQ3MSw3IEBAIGNoZWNr X2xvY2FsZShpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2FsZSwgY2hhciAqKmNhbm9ubmFt ZSkKICAqCiAgKiBOb3RlOiB3ZSBhY2NlcHQgdmFsdWUgPSAiIiBhcyBzZWxlY3RpbmcgdGhlIHBv c3RtYXN0ZXIncyBlbnZpcm9ubWVudAogICogdmFsdWUsIHdoYXRldmVyIGl0IHdhcyAoc28gbG9u ZyBhcyB0aGUgZW52aXJvbm1lbnQgc2V0dGluZyBpcyBsZWdhbCkuCi0gKiBUaGlzIHdpbGwgaGF2 ZSBiZWVuIGxvY2tlZCBkb3duIGJ5IGFuIGVhcmxpZXIgY2FsbCB0byBwZ19wZXJtX3NldGxvY2Fs ZS4KKyAqIFRoaXMgd2lsbCBoYXZlIGJlZW4gbG9ja2VkIGRvd24gYnkgYW4gZWFybGllciBjYWxs IHRvIHBnX3NldGxvY2FsZS4KICAqLwogYm9vbAogY2hlY2tfbG9jYWxlX21vbmV0YXJ5KGNoYXIg KipuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJjZSkKQEAgLTQwNiw3ICs1NTAs NyBAQCBhc3NpZ25fbG9jYWxlX21lc3NhZ2VzKGNvbnN0IGNoYXIgKm5ld3ZhbCwgdm9pZCAqZXh0 cmEpCiAJICogV2UgaWdub3JlIGZhaWx1cmUsIGFzIHBlciBjb21tZW50IGFib3ZlLgogCSAqLwog I2lmZGVmIExDX01FU1NBR0VTCi0JKHZvaWQpIHBnX3Blcm1fc2V0bG9jYWxlKExDX01FU1NBR0VT LCBuZXd2YWwpOworCSh2b2lkKSBwZ19zZXRsb2NhbGUoTENfTUVTU0FHRVMsIG5ld3ZhbCk7CiAj ZW5kaWYKIH0KIApAQCAtNTAyLDExICs2NDYsOCBAQCBQR0xDX2xvY2FsZWNvbnYodm9pZCkKIAlz dGF0aWMgYm9vbCBDdXJyZW50TG9jYWxlQ29udkFsbG9jYXRlZCA9IGZhbHNlOwogCXN0cnVjdCBs Y29udiAqZXh0bGNvbnY7CiAJc3RydWN0IGxjb252IHdvcmtsY29udjsKLQljaGFyCSAgICpzYXZl X2xjX21vbmV0YXJ5OwotCWNoYXIJICAgKnNhdmVfbGNfbnVtZXJpYzsKLSNpZmRlZiBXSU4zMgot CWNoYXIJICAgKnNhdmVfbGNfY3R5cGU7Ci0jZW5kaWYKKwlsb2NhbGVfdAlzYXZlZF9sb2NhbGU7 CisJbG9jYWxlX3QJd29ya19sb2NhbGU7CiAKIAkvKiBEaWQgd2UgZG8gaXQgYWxyZWFkeT8gKi8K IAlpZiAoQ3VycmVudExvY2FsZUNvbnZWYWxpZCkKQEAgLTUzMywxNiArNjc0LDE1IEBAIFBHTENf bG9jYWxlY29udih2b2lkKQogCSAqLwogCW1lbXNldCgmd29ya2xjb252LCAwLCBzaXplb2Yod29y a2xjb252KSk7CiAKLQkvKiBTYXZlIHByZXZhaWxpbmcgdmFsdWVzIG9mIG1vbmV0YXJ5IGFuZCBu dW1lcmljIGxvY2FsZXMgKi8KLQlzYXZlX2xjX21vbmV0YXJ5ID0gc2V0bG9jYWxlKExDX01PTkVU QVJZLCBOVUxMKTsKLQlpZiAoIXNhdmVfbGNfbW9uZXRhcnkpCi0JCWVsb2coRVJST1IsICJzZXRs b2NhbGUoTlVMTCkgZmFpbGVkIik7Ci0Jc2F2ZV9sY19tb25ldGFyeSA9IHBzdHJkdXAoc2F2ZV9s Y19tb25ldGFyeSk7CisJLyogU2F2ZSBwcmV2YWlsaW5nIGxvY2FsZSAqLworCXNhdmVkX2xvY2Fs ZSA9IHVzZWxvY2FsZSgobG9jYWxlX3QpIDApOworCUFzc2VydChzYXZlZF9sb2NhbGUgIT0gKGxv Y2FsZV90KSAwKTsKIAotCXNhdmVfbGNfbnVtZXJpYyA9IHNldGxvY2FsZShMQ19OVU1FUklDLCBO VUxMKTsKLQlpZiAoIXNhdmVfbGNfbnVtZXJpYykKLQkJZWxvZyhFUlJPUiwgInNldGxvY2FsZShO VUxMKSBmYWlsZWQiKTsKLQlzYXZlX2xjX251bWVyaWMgPSBwc3RyZHVwKHNhdmVfbGNfbnVtZXJp Yyk7CisJd29ya19sb2NhbGUgPSBkdXBsb2NhbGUoc2F2ZWRfbG9jYWxlKTsKKwlpZiAod29ya19s b2NhbGUgPT0gKGxvY2FsZV90KSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfT1VUX09GX01FTU9SWSksCisJCQkJIGVycm1zZygib3V0IG9mIG1lbW9yeSIpKSk7CiAK ICNpZmRlZiBXSU4zMgogCkBAIC01NjAsMzcgKzcwMCwzNyBAQCBQR0xDX2xvY2FsZWNvbnYodm9p ZCkKIAkgKiByZXN1bHRzLiAgSGVuY2UsIHdlIG11c3QgdGVtcG9yYXJpbHkgc2V0IHRoYXQgY2F0 ZWdvcnkgYXMgd2VsbC4KIAkgKi8KIAotCS8qIFNhdmUgcHJldmFpbGluZyB2YWx1ZSBvZiBjdHlw ZSBsb2NhbGUgKi8KLQlzYXZlX2xjX2N0eXBlID0gc2V0bG9jYWxlKExDX0NUWVBFLCBOVUxMKTsK LQlpZiAoIXNhdmVfbGNfY3R5cGUpCi0JCWVsb2coRVJST1IsICJzZXRsb2NhbGUoTlVMTCkgZmFp bGVkIik7Ci0Jc2F2ZV9sY19jdHlwZSA9IHBzdHJkdXAoc2F2ZV9sY19jdHlwZSk7Ci0KIAkvKiBI ZXJlIGJlZ2lucyB0aGUgY3JpdGljYWwgc2VjdGlvbiB3aGVyZSB3ZSBtdXN0IG5vdCB0aHJvdyBl cnJvciAqLwogCiAJLyogdXNlIG51bWVyaWMgdG8gc2V0IHRoZSBjdHlwZSAqLwotCXNldGxvY2Fs ZShMQ19DVFlQRSwgbG9jYWxlX251bWVyaWMpOworCXdvcmtfbG9jYWxlID0gbmV3bG9jYWxlKExD X0NUWVBFX01BU0ssIGxvY2FsZV9udW1lcmljLCB3b3JrX2xvY2FsZSk7CisJQXNzZXJ0KHdvcmtf bG9jYWxlICE9IChsb2NhbGVfdCkgMCk7CiAjZW5kaWYKIAogCS8qIEdldCBmb3JtYXR0aW5nIGlu Zm9ybWF0aW9uIGZvciBudW1lcmljICovCi0Jc2V0bG9jYWxlKExDX05VTUVSSUMsIGxvY2FsZV9u dW1lcmljKTsKKwl3b3JrX2xvY2FsZSA9IG5ld2xvY2FsZShMQ19OVU1FUklDX01BU0ssIGxvY2Fs ZV9udW1lcmljLCB3b3JrX2xvY2FsZSk7CisJQXNzZXJ0KHdvcmtfbG9jYWxlICE9IChsb2NhbGVf dCkgMCk7CisJdXNlbG9jYWxlKHdvcmtfbG9jYWxlKTsKIAlleHRsY29udiA9IGxvY2FsZWNvbnYo KTsKIAotCS8qIE11c3QgY29weSBkYXRhIG5vdyBpbiBjYXNlIHNldGxvY2FsZSgpIG92ZXJ3cml0 ZXMgaXQgKi8KKwkvKiBNdXN0IGNvcHkgZGF0YSBub3cgaW4gY2FzZSB1cGRhdGluZyB0aGUgbG9j YWxlIG92ZXJ3cml0ZXMgaXQgKi8KIAl3b3JrbGNvbnYuZGVjaW1hbF9wb2ludCA9IHN0cmR1cChl eHRsY29udi0+ZGVjaW1hbF9wb2ludCk7CiAJd29ya2xjb252LnRob3VzYW5kc19zZXAgPSBzdHJk dXAoZXh0bGNvbnYtPnRob3VzYW5kc19zZXApOwogCXdvcmtsY29udi5ncm91cGluZyA9IHN0cmR1 cChleHRsY29udi0+Z3JvdXBpbmcpOwogCiAjaWZkZWYgV0lOMzIKIAkvKiB1c2UgbW9uZXRhcnkg dG8gc2V0IHRoZSBjdHlwZSAqLwotCXNldGxvY2FsZShMQ19DVFlQRSwgbG9jYWxlX21vbmV0YXJ5 KTsKKwl3b3JrX2xvY2FsZSA9IG5ld2xvY2FsZShMQ19DVFlQRV9NQVNLLCBsb2NhbGVfbW9uZXRh cnksIHdvcmtfbG9jYWxlKTsKKwlBc3NlcnQod29ya19sb2NhbGUgIT0gKGxvY2FsZV90KSAwKTsK ICNlbmRpZgogCiAJLyogR2V0IGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gZm9yIG1vbmV0YXJ5ICov Ci0Jc2V0bG9jYWxlKExDX01PTkVUQVJZLCBsb2NhbGVfbW9uZXRhcnkpOworCXdvcmtfbG9jYWxl ID0gbmV3bG9jYWxlKExDX01PTkVUQVJZX01BU0ssIGxvY2FsZV9tb25ldGFyeSwgd29ya19sb2Nh bGUpOworCUFzc2VydCh3b3JrX2xvY2FsZSAhPSAobG9jYWxlX3QpIDApOworCXVzZWxvY2FsZSh3 b3JrX2xvY2FsZSk7CiAJZXh0bGNvbnYgPSBsb2NhbGVjb252KCk7CiAKLQkvKiBNdXN0IGNvcHkg ZGF0YSBub3cgaW4gY2FzZSBzZXRsb2NhbGUoKSBvdmVyd3JpdGVzIGl0ICovCisJLyogTXVzdCBj b3B5IGRhdGEgbm93IGluIGNhc2UgdXBkYXRpbmcgdGhlIGxvY2FsZSBvdmVyd3JpdGVzIGl0ICov CiAJd29ya2xjb252LmludF9jdXJyX3N5bWJvbCA9IHN0cmR1cChleHRsY29udi0+aW50X2N1cnJf c3ltYm9sKTsKIAl3b3JrbGNvbnYuY3VycmVuY3lfc3ltYm9sID0gc3RyZHVwKGV4dGxjb252LT5j dXJyZW5jeV9zeW1ib2wpOwogCXdvcmtsY29udi5tb25fZGVjaW1hbF9wb2ludCA9IHN0cmR1cChl eHRsY29udi0+bW9uX2RlY2ltYWxfcG9pbnQpOwpAQCAtNjA4LDIyICs3NDgsOSBAQCBQR0xDX2xv Y2FsZWNvbnYodm9pZCkKIAl3b3JrbGNvbnYucF9zaWduX3Bvc24gPSBleHRsY29udi0+cF9zaWdu X3Bvc247CiAJd29ya2xjb252Lm5fc2lnbl9wb3NuID0gZXh0bGNvbnYtPm5fc2lnbl9wb3NuOwog Ci0JLyoKLQkgKiBSZXN0b3JlIHRoZSBwcmV2YWlsaW5nIGxvY2FsZSBzZXR0aW5nczsgZmFpbHVy ZSB0byBkbyBzbyBpcyBmYXRhbC4KLQkgKiBQb3NzaWJseSB3ZSBjb3VsZCBsaW1wIGFsb25nIHdp dGggbm9uZGVmYXVsdCBMQ19NT05FVEFSWSBvciBMQ19OVU1FUklDLAotCSAqIGJ1dCBwcm9jZWVk aW5nIHdpdGggdGhlIHdyb25nIHZhbHVlIG9mIExDX0NUWVBFIHdvdWxkIGNlcnRhaW5seSBiZSBi YWQKLQkgKiBuZXdzOyBhbmQgY29uc2lkZXJpbmcgdGhhdCB0aGUgcHJldmFpbGluZyBMQ19NT05F VEFSWSBhbmQgTENfTlVNRVJJQwotCSAqIGFyZSBhbG1vc3QgY2VydGFpbmx5ICJDIiwgdGhlcmUn cyByZWFsbHkgbm8gcmVhc29uIHRoYXQgcmVzdG9yaW5nIHRob3NlCi0JICogc2hvdWxkIGZhaWwu Ci0JICovCi0jaWZkZWYgV0lOMzIKLQlpZiAoIXNldGxvY2FsZShMQ19DVFlQRSwgc2F2ZV9sY19j dHlwZSkpCi0JCWVsb2coRkFUQUwsICJmYWlsZWQgdG8gcmVzdG9yZSBMQ19DVFlQRSB0byBcIiVz XCIiLCBzYXZlX2xjX2N0eXBlKTsKLSNlbmRpZgotCWlmICghc2V0bG9jYWxlKExDX01PTkVUQVJZ LCBzYXZlX2xjX21vbmV0YXJ5KSkKLQkJZWxvZyhGQVRBTCwgImZhaWxlZCB0byByZXN0b3JlIExD X01PTkVUQVJZIHRvIFwiJXNcIiIsIHNhdmVfbGNfbW9uZXRhcnkpOwotCWlmICghc2V0bG9jYWxl KExDX05VTUVSSUMsIHNhdmVfbGNfbnVtZXJpYykpCi0JCWVsb2coRkFUQUwsICJmYWlsZWQgdG8g cmVzdG9yZSBMQ19OVU1FUklDIHRvIFwiJXNcIiIsIHNhdmVfbGNfbnVtZXJpYyk7CisJLyogUmVz dG9yZSB0aGUgcHJldmFpbGluZyBsb2NhbGUgc2V0dGluZ3M7IGZhaWx1cmUgdG8gZG8gc28gaXMg ZmF0YWwuICovCisJdXNlbG9jYWxlKHNhdmVkX2xvY2FsZSk7CisJZnJlZWxvY2FsZSh3b3JrX2xv Y2FsZSk7CiAKIAkvKgogCSAqIEF0IHRoaXMgcG9pbnQgd2UndmUgZG9uZSBvdXIgYmVzdCB0byBj bGVhbiB1cCwgYW5kIGNhbiBjYWxsIGZ1bmN0aW9ucwpAQCAtNjM0LDEzICs3NjEsNiBAQCBQR0xD X2xvY2FsZWNvbnYodm9pZCkKIAl7CiAJCWludAkJCWVuY29kaW5nOwogCi0JCS8qIFJlbGVhc2Ug dGhlIHBzdHJkdXAnZCBsb2NhbGUgbmFtZXMgKi8KLQkJcGZyZWUoc2F2ZV9sY19tb25ldGFyeSk7 Ci0JCXBmcmVlKHNhdmVfbGNfbnVtZXJpYyk7Ci0jaWZkZWYgV0lOMzIKLQkJcGZyZWUoc2F2ZV9s Y19jdHlwZSk7Ci0jZW5kaWYKLQogCQkvKiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdHJkdXAg Y2FsbHMgZmFpbGVkLCBjb21wbGFpbiBub3cuICovCiAJCWlmICghc3RydWN0X2xjb252X2lzX3Zh bGlkKCZ3b3JrbGNvbnYpKQogCQkJZXJlcG9ydChFUlJPUiwKQEAgLTc4NywxMCArOTA3LDggQEAg Y2FjaGVfbG9jYWxlX3RpbWUodm9pZCkKIAlib29sCQlzdHJmdGltZWZhaWwgPSBmYWxzZTsKIAlp bnQJCQllbmNvZGluZzsKIAlpbnQJCQlpOwotCWNoYXIJICAgKnNhdmVfbGNfdGltZTsKLSNpZmRl ZiBXSU4zMgotCWNoYXIJICAgKnNhdmVfbGNfY3R5cGU7Ci0jZW5kaWYKKwlsb2NhbGVfdAlzYXZl ZF9sb2NhbGU7CisJbG9jYWxlX3QJd29ya19sb2NhbGU7CiAKIAkvKiBkaWQgd2UgZG8gdGhpcyBh bHJlYWR5PyAqLwogCWlmIChDdXJyZW50TENUaW1lVmFsaWQpCkBAIC04MDUsMTEgKzkyMywxNSBA QCBjYWNoZV9sb2NhbGVfdGltZSh2b2lkKQogCSAqIHJlc3VsdHMgYWZ0ZXJ3YXJkcy4KIAkgKi8K IAotCS8qIFNhdmUgcHJldmFpbGluZyB2YWx1ZSBvZiB0aW1lIGxvY2FsZSAqLwotCXNhdmVfbGNf dGltZSA9IHNldGxvY2FsZShMQ19USU1FLCBOVUxMKTsKLQlpZiAoIXNhdmVfbGNfdGltZSkKLQkJ ZWxvZyhFUlJPUiwgInNldGxvY2FsZShOVUxMKSBmYWlsZWQiKTsKLQlzYXZlX2xjX3RpbWUgPSBw c3RyZHVwKHNhdmVfbGNfdGltZSk7CisJLyogU2F2ZSBwcmV2YWlsaW5nIGxvY2FsZSAqLworCXNh dmVkX2xvY2FsZSA9IHVzZWxvY2FsZSgobG9jYWxlX3QpIDApOworCUFzc2VydChzYXZlZF9sb2Nh bGUgIT0gKGxvY2FsZV90KSAwKTsKKworCXdvcmtfbG9jYWxlID0gZHVwbG9jYWxlKHNhdmVkX2xv Y2FsZSk7CisJaWYgKHdvcmtfbG9jYWxlID09IChsb2NhbGVfdCkgMCkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLAorCQkJCSBlcnJtc2coIm91 dCBvZiBtZW1vcnkiKSkpOwogCiAjaWZkZWYgV0lOMzIKIApAQCAtODIwLDE3ICs5NDIsMTQgQEAg Y2FjaGVfbG9jYWxlX3RpbWUodm9pZCkKIAkgKiB0aGUgZW5jb2Rpbmcgd2UnbGwgZ2V0IGJhY2sg ZnJvbSBzdHJmdGltZV93aW4zMigpLgogCSAqLwogCi0JLyogU2F2ZSBwcmV2YWlsaW5nIHZhbHVl IG9mIGN0eXBlIGxvY2FsZSAqLwotCXNhdmVfbGNfY3R5cGUgPSBzZXRsb2NhbGUoTENfQ1RZUEUs IE5VTEwpOwotCWlmICghc2F2ZV9sY19jdHlwZSkKLQkJZWxvZyhFUlJPUiwgInNldGxvY2FsZShO VUxMKSBmYWlsZWQiKTsKLQlzYXZlX2xjX2N0eXBlID0gcHN0cmR1cChzYXZlX2xjX2N0eXBlKTsK LQogCS8qIHVzZSBsY190aW1lIHRvIHNldCB0aGUgY3R5cGUgKi8KLQlzZXRsb2NhbGUoTENfQ1RZ UEUsIGxvY2FsZV90aW1lKTsKKwl3b3JrX2xvY2FsZSA9IG5ld2xvY2FsZShMQ19DVFlQRV9NQVNL LCBsb2NhbGVfdGltZSwgd29ya19sb2NhbGUpOworCUFzc2VydCh3b3JrX2xvY2FsZSAhPSAobG9j YWxlX3QpIDApOwogI2VuZGlmCiAKLQlzZXRsb2NhbGUoTENfVElNRSwgbG9jYWxlX3RpbWUpOwor CXdvcmtfbG9jYWxlID0gbmV3bG9jYWxlKExDX1RJTUVfTUFTSywgbG9jYWxlX3RpbWUsIHdvcmtf bG9jYWxlKTsKKwlBc3NlcnQod29ya19sb2NhbGUgIT0gKGxvY2FsZV90KSAwKTsKKwl1c2Vsb2Nh bGUod29ya19sb2NhbGUpOwogCiAJLyogV2UgdXNlIHRpbWVzIGNsb3NlIHRvIGN1cnJlbnQgdGlt ZSBhcyBkYXRhIGZvciBzdHJmdGltZSgpLiAqLwogCXRpbWVub3cgPSB0aW1lKE5VTEwpOwpAQCAt ODc4LDEyICs5OTcsOCBAQCBjYWNoZV9sb2NhbGVfdGltZSh2b2lkKQogCSAqIFJlc3RvcmUgdGhl IHByZXZhaWxpbmcgbG9jYWxlIHNldHRpbmdzOyBhcyBpbiBQR0xDX2xvY2FsZWNvbnYoKSwKIAkg KiBmYWlsdXJlIHRvIGRvIHNvIGlzIGZhdGFsLgogCSAqLwotI2lmZGVmIFdJTjMyCi0JaWYgKCFz ZXRsb2NhbGUoTENfQ1RZUEUsIHNhdmVfbGNfY3R5cGUpKQotCQllbG9nKEZBVEFMLCAiZmFpbGVk IHRvIHJlc3RvcmUgTENfQ1RZUEUgdG8gXCIlc1wiIiwgc2F2ZV9sY19jdHlwZSk7Ci0jZW5kaWYK LQlpZiAoIXNldGxvY2FsZShMQ19USU1FLCBzYXZlX2xjX3RpbWUpKQotCQllbG9nKEZBVEFMLCAi ZmFpbGVkIHRvIHJlc3RvcmUgTENfVElNRSB0byBcIiVzXCIiLCBzYXZlX2xjX3RpbWUpOworCXVz ZWxvY2FsZShzYXZlZF9sb2NhbGUpOworCWZyZWVsb2NhbGUod29ya19sb2NhbGUpOwogCiAJLyoK IAkgKiBBdCB0aGlzIHBvaW50IHdlJ3ZlIGRvbmUgb3VyIGJlc3QgdG8gY2xlYW4gdXAsIGFuZCBj YW4gdGhyb3cgZXJyb3JzLCBvcgpAQCAtODkyLDEyICsxMDA3LDYgQEAgY2FjaGVfbG9jYWxlX3Rp bWUodm9pZCkKIAlpZiAoc3RyZnRpbWVmYWlsKQogCQllbG9nKEVSUk9SLCAic3RyZnRpbWUoKSBm YWlsZWQ6ICVtIik7CiAKLQkvKiBSZWxlYXNlIHRoZSBwc3RyZHVwJ2QgbG9jYWxlIG5hbWVzICov Ci0JcGZyZWUoc2F2ZV9sY190aW1lKTsKLSNpZmRlZiBXSU4zMgotCXBmcmVlKHNhdmVfbGNfY3R5 cGUpOwotI2VuZGlmCi0KICNpZm5kZWYgV0lOMzIKIAogCS8qCkBAIC0xMjkyLDE4ICsxNDAxLDE0 IEBAIGxjX2NvbGxhdGVfaXNfYyhPaWQgY29sbGF0aW9uKQogCWlmIChjb2xsYXRpb24gPT0gREVG QVVMVF9DT0xMQVRJT05fT0lEKQogCXsKIAkJc3RhdGljIGludAlyZXN1bHQgPSAtMTsKLQkJY2hh cgkgICAqbG9jYWxlcHRyOwogCiAJCWlmIChkZWZhdWx0X2xvY2FsZS5wcm92aWRlciA9PSBDT0xM UFJPVklERVJfSUNVKQogCQkJcmV0dXJuIGZhbHNlOwogCiAJCWlmIChyZXN1bHQgPj0gMCkKIAkJ CXJldHVybiAoYm9vbCkgcmVzdWx0OwotCQlsb2NhbGVwdHIgPSBzZXRsb2NhbGUoTENfQ09MTEFU RSwgTlVMTCk7Ci0JCWlmICghbG9jYWxlcHRyKQotCQkJZWxvZyhFUlJPUiwgImludmFsaWQgTENf Q09MTEFURSBzZXR0aW5nIik7CiAKLQkJcmVzdWx0ID0gbG9jYWxlX2lzX2MobG9jYWxlcHRyLCBm YWxzZSk7CisJCXJlc3VsdCA9IGxvY2FsZV9pc19jKGN1cnJfbG9jYWxlcy5jb2xsYXRlLCBmYWxz ZSk7CiAKIAkJcmV0dXJuIChib29sKSByZXN1bHQ7CiAJfQpAQCAtMTMzNiwyMyArMTQ0MSwxOSBA QCBsY19jdHlwZV9pc19jKE9pZCBjb2xsYXRpb24pCiAKIAkvKgogCSAqIElmIHdlJ3JlIGFza2Vk IGFib3V0IHRoZSBkZWZhdWx0IGNvbGxhdGlvbiwgd2UgaGF2ZSB0byBpbnF1aXJlIG9mIHRoZSBD Ci0JICogbGlicmFyeS4gIENhY2hlIHRoZSByZXN1bHQgc28gd2Ugb25seSBoYXZlIHRvIGNvbXB1 dGUgaXQgb25jZS4KKwkgKiBsaWJyYXJ5LgogCSAqLwogCWlmIChjb2xsYXRpb24gPT0gREVGQVVM VF9DT0xMQVRJT05fT0lEKQogCXsKIAkJc3RhdGljIGludAlyZXN1bHQgPSAtMTsKLQkJY2hhcgkg ICAqbG9jYWxlcHRyOwogCiAJCWlmIChkZWZhdWx0X2xvY2FsZS5wcm92aWRlciA9PSBDT0xMUFJP VklERVJfSUNVKQogCQkJcmV0dXJuIGZhbHNlOwogCiAJCWlmIChyZXN1bHQgPj0gMCkKIAkJCXJl dHVybiAoYm9vbCkgcmVzdWx0OwotCQlsb2NhbGVwdHIgPSBzZXRsb2NhbGUoTENfQ1RZUEUsIE5V TEwpOwotCQlpZiAoIWxvY2FsZXB0cikKLQkJCWVsb2coRVJST1IsICJpbnZhbGlkIExDX0NUWVBF IHNldHRpbmciKTsKIAotCQlyZXN1bHQgPSBsb2NhbGVfaXNfYyhsb2NhbGVwdHIsIGZhbHNlKTsK KwkJcmVzdWx0ID0gbG9jYWxlX2lzX2MoY3Vycl9sb2NhbGVzLmN0eXBlLCBmYWxzZSk7CiAKIAkJ cmV0dXJuIChib29sKSByZXN1bHQ7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9wb3N0aW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4 IGE5MmEwYzQzOGYuLjA3NDFmNTY2NmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2lu aXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKQEAg LTQwNSwxNCArNDA1LDE0IEBAIENoZWNrTXlEYXRhYmFzZShjb25zdCBjaGFyICpuYW1lLCBib29s IGFtX3N1cGVydXNlciwgYm9vbCBvdmVycmlkZV9hbGxvd19jb25uZWN0CiAJZGF0dW0gPSBTeXND YWNoZUdldEF0dHJOb3ROdWxsKERBVEFCQVNFT0lELCB0dXAsIEFudW1fcGdfZGF0YWJhc2VfZGF0 Y3R5cGUpOwogCWN0eXBlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CiAKLQlpZiAocGdf cGVybV9zZXRsb2NhbGUoTENfQ09MTEFURSwgY29sbGF0ZSkgPT0gTlVMTCkKKwlpZiAocGdfc2V0 bG9jYWxlKExDX0NPTExBVEUsIGNvbGxhdGUpID09IE5VTEwpCiAJCWVyZXBvcnQoRkFUQUwsCiAJ CQkJKGVycm1zZygiZGF0YWJhc2UgbG9jYWxlIGlzIGluY29tcGF0aWJsZSB3aXRoIG9wZXJhdGlu ZyBzeXN0ZW0iKSwKIAkJCQkgZXJyZGV0YWlsKCJUaGUgZGF0YWJhc2Ugd2FzIGluaXRpYWxpemVk IHdpdGggTENfQ09MTEFURSBcIiVzXCIsICIKIAkJCQkJCSAgICIgd2hpY2ggaXMgbm90IHJlY29n bml6ZWQgYnkgc2V0bG9jYWxlKCkuIiwgY29sbGF0ZSksCiAJCQkJIGVycmhpbnQoIlJlY3JlYXRl IHRoZSBkYXRhYmFzZSB3aXRoIGFub3RoZXIgbG9jYWxlIG9yIGluc3RhbGwgdGhlIG1pc3Npbmcg bG9jYWxlLiIpKSk7CiAKLQlpZiAocGdfcGVybV9zZXRsb2NhbGUoTENfQ1RZUEUsIGN0eXBlKSA9 PSBOVUxMKQorCWlmIChwZ19zZXRsb2NhbGUoTENfQ1RZUEUsIGN0eXBlKSA9PSBOVUxMKQogCQll cmVwb3J0KEZBVEFMLAogCQkJCShlcnJtc2coImRhdGFiYXNlIGxvY2FsZSBpcyBpbmNvbXBhdGli bGUgd2l0aCBvcGVyYXRpbmcgc3lzdGVtIiksCiAJCQkJIGVycmRldGFpbCgiVGhlIGRhdGFiYXNl IHdhcyBpbml0aWFsaXplZCB3aXRoIExDX0NUWVBFIFwiJXNcIiwgIgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWIvbWJ1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWIvbWJ1dGls cy5jCmluZGV4IDk5NzE1NjUxNWMuLjhkYzdkYTQ3YmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL21iL21idXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tYi9tYnV0aWxzLmMK QEAgLTEyMzgsNyArMTIzOCw3IEBAIHBnX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KGNvbnN0IGNo YXIgKmRvbWFpbm5hbWUpCiAJaW50CQkJbmV3X21zZ2VuYzsKIAogI2lmbmRlZiBXSU4zMgotCWlm IChsb2NhbGVfaXNfYyhsb2NhbGVfY3R5cGUsIHRydWUpKQorCWlmIChsb2NhbGVfaXNfYyhwZ19z ZXRsb2NhbGUoTENfQ1RZUEUsIE5VTEwpLCB0cnVlKSkKICNlbmRpZgogCQlpZiAoZW5jb2Rpbmcg IT0gUEdfU1FMX0FTQ0lJICYmCiAJCQlyYXdfcGdfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQoZG9t YWlubmFtZSwgZW5jb2RpbmcpKQpkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9leGVjLmMgYi9zcmMv Y29tbW9uL2V4ZWMuYwppbmRleCBmMjA5YjkzNGRmLi5mN2E5NjQzYmU0IDEwMDY0NAotLS0gYS9z cmMvY29tbW9uL2V4ZWMuYworKysgYi9zcmMvY29tbW9uL2V4ZWMuYwpAQCAtNDM4LDIyICs0Mzgs NiBAQCBzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGNvbnN0IGNoYXIgKmFyZ3YwLCBjb25zdCBjaGFy ICphcHApCiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwogCWNoYXIJCW15X2V4ZWNfcGF0aFtNQVhQ R1BBVEhdOwogCi0JLyogZG9uJ3Qgc2V0IExDX0FMTCBpbiB0aGUgYmFja2VuZCAqLwotCWlmIChz dHJjbXAoYXBwLCBQR19URVhURE9NQUlOKCJwb3N0Z3JlcyIpKSAhPSAwKQotCXsKLQkJc2V0bG9j YWxlKExDX0FMTCwgIiIpOwotCi0JCS8qCi0JCSAqIE9uZSBjb3VsZCBtYWtlIGEgY2FzZSBmb3Ig cmVwcm9kdWNpbmcgaGVyZSBQb3N0bWFzdGVyTWFpbigpJ3MgdGVzdAotCQkgKiBmb3Igd2hldGhl ciB0aGUgcHJvY2VzcyBpcyBtdWx0aXRocmVhZGVkLiAgVW5saWtlIHRoZSBwb3N0bWFzdGVyLAot CQkgKiBubyBmcm9udGVuZCBwcm9ncmFtIGNhbGxzIHNpZ3Byb2NtYXNrKCkgb3Igb3RoZXJ3aXNl IHByb3ZpZGVzIGZvcgotCQkgKiBtdXR1YWwgZXhjbHVzaW9uIGJldHdlZW4gc2lnbmFsIGhhbmRs ZXJzLiAgV2hpbGUgZnJvbnRlbmRzIHVzaW5nCi0JCSAqIGZvcmsoKSwgaWYgbXVsdGl0aHJlYWRl ZCwgYXJlIGZvcm1hbGx5IGV4cG9zZWQgdG8gdW5kZWZpbmVkCi0JCSAqIGJlaGF2aW9yLCB3ZSBo YXZlIG5vdCB3aXRuZXNzZWQgYSBjb25jcmV0ZSBidWcuICBUaGVyZWZvcmUsCi0JCSAqIGNvbXBs YWluaW5nIGFib3V0IG11bHRpdGhyZWFkaW5nIGhlcmUgbWF5IGJlIG1lcmUgcGVkYW50cnkuCi0J CSAqLwotCX0KLQogCWlmIChmaW5kX215X2V4ZWMoYXJndjAsIG15X2V4ZWNfcGF0aCkgPCAwKQog CQlyZXR1cm47CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xvY2FsZS5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKaW5kZXggODcyYmVmNzk4YS4uNjA2ODIwNTFj YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKQEAgLTUyLDcgKzUyLDcgQEAgZXh0ZXJuIFBHRExMSU1Q T1JUIGNoYXIgKmxvY2FsaXplZF9mdWxsX21vbnRoc1tdOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJv b2wgZGF0YWJhc2VfY3R5cGVfaXNfYzsKIAogZXh0ZXJuIGJvb2wgY2hlY2tfbG9jYWxlKGludCBj YXRlZ29yeSwgY29uc3QgY2hhciAqbG9jYWxlLCBjaGFyICoqY2Fub25uYW1lKTsKLWV4dGVybiBj aGFyICpwZ19wZXJtX3NldGxvY2FsZShpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2FsZSk7 CitleHRlcm4gY2hhciAqcGdfc2V0bG9jYWxlKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqbG9j YWxlKTsKIAogZXh0ZXJuIGJvb2wgbG9jYWxlX2lzX2MoY29uc3QgY2hhciAqbG9jYWxlLCBib29s IGlnbm9yZV9jYXNlKTsKIGV4dGVybiBib29sIGxjX2NvbGxhdGVfaXNfYyhPaWQgY29sbGF0aW9u KTsKLS0gClRyaXN0YW4gUGFydGluCk5lb24gKGh0dHBzOi8vbmVvbi50ZWNoKQoK --6d7c348f4e80e55dc467cb255644d30bb9daaa7f427a5a106c3a30c5405d--