Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tOaeB-007OcQ-CI for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Dec 2024 10:54:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tOaeA-009c4M-Fa for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Dec 2024 10:54:18 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tO3yB-003x03-9j for pgsql-hackers@lists.postgresql.org; Thu, 19 Dec 2024 00:00:47 +0000 Received: from mail-pl1-x641.google.com ([2607:f8b0:4864:20::641]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tO3y5-000Ueo-LM for pgsql-hackers@lists.postgresql.org; Thu, 19 Dec 2024 00:00:46 +0000 Received: by mail-pl1-x641.google.com with SMTP id d9443c01a7336-21661be2c2dso1972475ad.1 for ; Wed, 18 Dec 2024 16:00:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1734566439; x=1735171239; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=n0mIfneelhe7GGD/3KnW/S4TUqM6fcUCOoJ/eF60t5U=; b=bcYnUpOhGUsLpoSP7OdgRO722v3IXnJzKBOOoYnjhJvomwfQ9GXMhp+Pvy8e5iBj8p dWM1OIvYRXY1sropCAR/Sj+l4ymTySVJt4qxmKnKMwM4YSFKd/hGPa+qzRIHYYCdfzLK 1gPpH4H/UsSugqi+sEj7hDl8M0+mUMp2qWKVCVXYNB/j4WPJV1xrHRMvRGJ7zPtasGmr qf20HJARYA8IVnM6se+KB1A0JIqclgybXClWiXGxDWS9Uk1ZRakcP3CJF918s8zUMR1+ dLf5+jGCow83xAhc+SHmGfIpRuMqpTeE8VYzIe+wZluY4gGTwIE0BB1A/5lRRkgdkSnZ cHvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734566439; x=1735171239; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=n0mIfneelhe7GGD/3KnW/S4TUqM6fcUCOoJ/eF60t5U=; b=U1ncnpMNg+yuz+1L+SF//RKNqRaBqd9Zgadk7fCG7MJc8I/H7t/sbZhF/es4JA/xj0 UahzqEDtjzXeple8vxcZ7SYkBxDdO8vhD95im7bLCmD0yB4vNb0Qasaj2Q8ea+leiD/3 Y2ip5LjO6Cc6nBYAKcm7t3KPag1dx5UyhyemkUipCV4aVTpz/gJdRWV/k+4wealugF1I BlLXQXzV3VCjo1B65IsoljjyfqcgUtoHSS/Ivc7QoO06K4PefcwK8cjHT/0Fufl/Alzl wDTz27Ru+6Y7uZC/wDHn7MZsRXZMtT6iXf18a1gPJ4av2UwIg0I40qwHmnX6sxhuU0Hq gsEA== X-Forwarded-Encrypted: i=1; AJvYcCXXa2RQ4YaFk6WWUR/rrZLBdGcGeWUUPjLk+J6k6NN221/hYKSk2zCj78bTv2TDCkDvkR4MtNgVM9DzUJw4@lists.postgresql.org X-Gm-Message-State: AOJu0YxzUPPFzaE4tK1lwGzR5THv+aH1GMW69UCJ8yBitMWaFXDz9O0G Rn0DokZtZ892y47MeLmATeYuuK84McAGskRCz9rqlOFPEha4o7N2 X-Gm-Gg: ASbGnct4LsNoQDyzw9mjKV6mxEq7VvcVHghnbpogUA5XVVYPjRGE5yKNqU7LG2NtN7F Ar2Y+0b4GS4Um3+0sPEK6ghrQqVbSqohLv/KkMNgdg0ztjBChhTgxY3q+nOAgYIX6ocSXU+8Ouc BK02YhUsZ5MSbMHi8uHkjkDnU+b+NIepSf77QC2VHUle/2UHfCowy2OKBPYv49ityZPpY6si6rs blhPBW1bgG8Tkzb9wsZQDvt7n+4rowNCBOriUlnqvWlUQGoCkk4saR6I7hnLUSLMqIZAGvctdRD Wgi2 X-Google-Smtp-Source: AGHT+IEus5YeR4W3XXhgMOSkJzOaId47hzIU8KY8sqpxNJy3FTST1Opr8xZ0IRnNS00r4/AjuRp7Tg== X-Received: by 2002:a17:902:fc4d:b0:216:2dc5:233c with SMTP id d9443c01a7336-219d9692f2dmr23806915ad.41.1734566439352; Wed, 18 Dec 2024 16:00:39 -0800 (PST) Received: from [192.168.1.111] ([50.39.174.101]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dca025desm972955ad.256.2024.12.18.16.00.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 18 Dec 2024 16:00:38 -0800 (PST) Content-Type: multipart/mixed; boundary="------------TC1EMrt04ioXLzZoZV6xN3sh" Message-ID: <6cd9e6eb-e54e-4465-892f-fa1ef097cc42@gmail.com> Date: Wed, 18 Dec 2024 16:00:37 -0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Proposal for Updating CRC32C with AVX-512 Algorithm. To: "Devulapalli, Raghuveer" , Nathan Bossart Cc: Andres Freund , Bruce Momjian , Alvaro Herrera , "pgsql-hackers@lists.postgresql.org" , "Shankaran, Akash" References: Content-Language: en-US From: "Sterrett, Matthew" In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------TC1EMrt04ioXLzZoZV6xN3sh Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 12/7/2024 12:42 AM, Devulapalli, Raghuveer wrote: >> [0] https://cirrus-ci.com/task/6023394207989760 >> [1] https://cirrus-ci.com/task/5460444254568448 >> [2] https://cirrus-ci.com/task/6586344161411072 > > I was able to fix [0] and [1], but I can't think of why [2] fails. When I tried to reproduce this locally, I get a different unrelated error. Any idea why I am seeing this? > > LINK : fatal error LNK1181: cannot open input file 'C:\Program Files\Git\nologo' > > Commands: meson setup build && cd build && meson compile Hello! I'm Matthew Sterrett and I'm a coworker of Raghuveer; he asked me to look into the Windows build failures related to pg_comp_crc32c. It seems that the only thing that was required to fix that is to mark pg_comp_crc32c as PGDLLIMPORT, so I added a patch that does just that. I'm new to working with mailing lists, so please tell me if I messed anything up! Matthew Sterrett --------------TC1EMrt04ioXLzZoZV6xN3sh Content-Type: text/plain; charset=UTF-8; name="v10-0001-Add-a-Postgres-SQL-function-for-crc32c-benchmark.patch" Content-Disposition: attachment; filename*0="v10-0001-Add-a-Postgres-SQL-function-for-crc32c-benchmark.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3NGQwODVkNDRkNDFhZjhmZmIwMWY3YmYyMzc3YWM0ODdjN2Q0Y2MxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEFtb25zb24gPHBhdWwuZC5hbW9uc29uQGlu dGVsLmNvbT4KRGF0ZTogTW9uLCA2IE1heSAyMDI0IDA4OjM0OjE3IC0wNzAwClN1YmplY3Q6 IFtQQVRDSCB2MTAgMS80XSBBZGQgYSBQb3N0Z3JlcyBTUUwgZnVuY3Rpb24gZm9yIGNyYzMy YyBiZW5jaG1hcmtpbmcuCgpBZGQgYSBkcml2ZV9jcmMzMmMoKSBmdW5jdGlvbiB0byB1c2Ug Zm9yIGJlbmNobWFya2luZyBjcmMzMmMKY29tcHV0YXRpb24uIFRoZSBmdW5jdGlvbiB0YWtl cyAyIGFyZ3VtZW50czoKCigxKSBjb3VudDogbnVtIG9mIHRpbWVzIENSQzMyQyBpcyBjb21w dXRlZCBpbiBhIGxvb3AuCigyKSBudW06ICNieXRlcyBpbiB0aGUgYnVmZmVyIHRvIGNhbGN1 bGF0ZSBjcmMgb3Zlci4KClNpZ25lZC1vZmYtYnk6IFBhdWwgQW1vbnNvbiA8cGF1bC5kLmFt b25zb25AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBSYWdodXZlZXIgRGV2dWxhcGFsbGkg PHJhZ2h1dmVlci5kZXZ1bGFwYWxsaUBpbnRlbC5jb20+Ci0tLQogc3JjL3Rlc3QvbW9kdWxl cy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2NyYzMyYy9NYWtlZmlsZSAgICAgICAgIHwgMjAgKysrKysrKysKIHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9jcmMzMmMvbWVzb24uYnVpbGQgICAgICB8IDIyICsrKysrKysrKwog Li4uL21vZHVsZXMvdGVzdF9jcmMzMmMvdGVzdF9jcmMzMmMtLTEuMC5zcWwgIHwgIDEgKwog c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NyYzMyYy90ZXN0X2NyYzMyYy5jICAgIHwgNDcgKysr KysrKysrKysrKysrKysrKwogLi4uL21vZHVsZXMvdGVzdF9jcmMzMmMvdGVzdF9jcmMzMmMu Y29udHJvbCAgIHwgIDQgKysKIDYgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9jcmMzMmMvTWFrZWZp bGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY3JjMzJjL21l c29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Ny YzMyYy90ZXN0X2NyYzMyYy0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9jcmMzMmMvdGVzdF9jcmMzMmMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9jcmMzMmMvdGVzdF9jcmMzMmMuY29udHJvbAoKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1 bGVzL21lc29uLmJ1aWxkCmluZGV4IGM4MjliNjE5NTMuLjY4ZDg5MDRkZDAgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9tZXNvbi5idWlsZApAQCAtMTUsNiArMTUsNyBAQCBzdWJkaXIoJ3NzbF9wYXNzcGhyYXNl X2NhbGxiYWNrJykKIHN1YmRpcigndGVzdF9ibG9vbWZpbHRlcicpCiBzdWJkaXIoJ3Rlc3Rf Y29weV9jYWxsYmFja3MnKQogc3ViZGlyKCd0ZXN0X2N1c3RvbV9ybWdycycpCitzdWJkaXIo J3Rlc3RfY3JjMzJjJykKIHN1YmRpcigndGVzdF9kZGxfZGVwYXJzZScpCiBzdWJkaXIoJ3Rl c3RfZHNhJykKIHN1YmRpcigndGVzdF9kc21fcmVnaXN0cnknKQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2NyYzMyYy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9jcmMzMmMvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uNWI3NDdjNjE4NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9jcmMzMmMvTWFrZWZpbGUKQEAgLTAsMCArMSwyMCBAQAorTU9EVUxFX2JpZyA9IHRl c3RfY3JjMzJjCitPQkpTID0gdGVzdF9jcmMzMmMubworUEdGSUxFREVTQyA9ICJ0ZXN0Igor RVhURU5TSU9OID0gdGVzdF9jcmMzMmMKK0RBVEEgPSB0ZXN0X2NyYzMyYy0tMS4wLnNxbAor CitmaXJzdDogYWxsCisKKyMgdGVzdF9jcmMzMmMubzoJQ0ZMQUdTKz0tZworCitpZmRlZiBV U0VfUEdYUworUEdfQ09ORklHID0gcGdfY29uZmlnCitQR1hTIDo9ICQoc2hlbGwgJChQR19D T05GSUcpIC0tcGd4cykKK2luY2x1ZGUgJChQR1hTKQorZWxzZQorc3ViZGlyID0gc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2NyYzMyYwordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2lu Y2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKK2luY2x1ZGUgJCh0 b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitlbmRpZgpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NyYzMyYy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9jcmMzMmMvbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uNzAyMWE2ZDZjZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9jcmMzMmMvbWVzb24uYnVpbGQKQEAgLTAsMCArMSwyMiBAQAor IyBDb3B5cmlnaHQgKGMpIDIwMjItMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKwordGVzdF9jcmMzMmNfc291cmNlcyA9IGZpbGVzKAorICAndGVzdF9jcmMz MmMuYycsCispCisKK2lmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJworICB0ZXN0X2NyYzMy Y19zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3aW4zMnZlcl9yYywgZXh0cmFfYXJn czogWworICAgICctLU5BTUUnLCAndGVzdF9jcmMzMmMnLAorICAgICctLUZJTEVERVNDJywg J3Rlc3RfY3JjMzJjIC0gdGVzdCBjb2RlIGZvciBjcmMzMmMgbGlicmFyeScsXSkKK2VuZGlm CisKK3Rlc3RfY3JjMzJjID0gc2hhcmVkX21vZHVsZSgndGVzdF9jcmMzMmMnLAorICB0ZXN0 X2NyYzMyY19zb3VyY2VzLAorICBrd2FyZ3M6IHBnX3Rlc3RfbW9kX2FyZ3MsCispCit0ZXN0 X2luc3RhbGxfbGlicyArPSB0ZXN0X2NyYzMyYworCit0ZXN0X2luc3RhbGxfZGF0YSArPSBm aWxlcygKKyAgJ3Rlc3RfY3JjMzJjLmNvbnRyb2wnLAorICAndGVzdF9jcmMzMmMtLTEuMC5z cWwnLAorKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NyYzMyYy90ZXN0 X2NyYzMyYy0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jcmMzMmMvdGVzdF9j cmMzMmMtLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u MzJmOGYwZmIyZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9j cmMzMmMvdGVzdF9jcmMzMmMtLTEuMC5zcWwKQEAgLTAsMCArMSBAQAorQ1JFQVRFIEZVTkNU SU9OIGRyaXZlX2NyYzMyYyAgKGNvdW50IGludCwgbnVtIGludCkgUkVUVVJOUyBiaWdpbnQg QVMgJ3Rlc3RfY3JjMzJjLnNvJyBMQU5HVUFHRSBDOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2NyYzMyYy90ZXN0X2NyYzMyYy5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2NyYzMyYy90ZXN0X2NyYzMyYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmIzNTBjYWY1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfY3JjMzJjL3Rlc3RfY3JjMzJjLmMKQEAgLTAsMCArMSw0NyBAQAorLyogc2Vs ZWN0IGRyaXZlX2NyYzMyYygxMDAwMDAwLCAxMDI0KTsgKi8KKworI2luY2x1ZGUgInBvc3Rn cmVzLmgiCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgInBvcnQvcGdfY3JjMzJjLmgi CisjaW5jbHVkZSAiY29tbW9uL3BnX3BybmcuaCIKKworUEdfTU9EVUxFX01BR0lDOworCisv KgorICogZHJpdmVfY3JjMzJjKGNvdW50OiBpbnQsIG51bTogaW50KSByZXR1cm5zIGJpZ2lu dAorICoKKyAqIGNvdW50IGlzIHRoZSBudWltYmVyIG9mIGxvb3BzIHRvIHBlcmZvcm0KKyAq CisgKiBudW0gaXMgdGhlIG51bWJlciBieXRlIGluIHRoZSBidWZmZXIgdG8gY2FsY3VsYXRl CisgKiBjcmMzMmMgb3Zlci4KKyAqLworUEdfRlVOQ1RJT05fSU5GT19WMShkcml2ZV9jcmMz MmMpOworRGF0dW0KK2RyaXZlX2NyYzMyYyhQR19GVU5DVElPTl9BUkdTKQoreworCWludDY0 CQkJY291bnQJPSBQR19HRVRBUkdfSU5UNjQoMCk7CisJaW50NjQJCQludW0JCT0gUEdfR0VU QVJHX0lOVDY0KDEpOworCWNoYXIqCQlkYXRhCT0gbWFsbG9jKChzaXplX3QpbnVtKTsKKwlw Z19jcmMzMmMgY3JjOworCXBnX3Bybmdfc3RhdGUgc3RhdGU7CisJdWludDY0IHNlZWQgPSA0 MjsKKwlwZ19wcm5nX3NlZWQoJnN0YXRlLCBzZWVkKTsKKwkvKiBzZXQgcmFuZG9tIGRhdGEg Ki8KKwlmb3IgKHVpbnQ2NCBpID0gMDsgaSA8IG51bTsgaSsrKQorCXsKKwkJZGF0YVtpXSA9 IHBnX3BybmdfdWludDMyKCZzdGF0ZSkgJSAyNTU7CisJfQorCisJSU5JVF9DUkMzMkMoY3Jj KTsKKworCXdoaWxlKGNvdW50LS0pCisJeworCQlJTklUX0NSQzMyQyhjcmMpOworCQlDT01Q X0NSQzMyQyhjcmMsIGRhdGEsIG51bSk7CisJCUZJTl9DUkMzMkMoY3JjKTsKKwl9CisKKwlm cmVlKCh2b2lkICopZGF0YSk7CisKKwlQR19SRVRVUk5fSU5UNjQoKGludDY0X3QpY3JjKTsK K30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jcmMzMmMvdGVzdF9jcmMz MmMuY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jcmMzMmMvdGVzdF9jcmMzMmMu Y29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44NzhhMDc3 ZWUxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NyYzMyYy90 ZXN0X2NyYzMyYy5jb250cm9sCkBAIC0wLDAgKzEsNCBAQAorY29tbWVudCA9ICd0ZXN0Jwor ZGVmYXVsdF92ZXJzaW9uID0gJzEuMCcKK21vZHVsZV9wYXRobmFtZSA9ICckbGliZGlyL3Rl c3RfY3JjMzJjJworcmVsb2NhdGFibGUgPSB0cnVlCi0tIAoyLjM0LjEKCg== --------------TC1EMrt04ioXLzZoZV6xN3sh Content-Type: text/plain; charset=UTF-8; name="v10-0002-Refactor-consolidate-x86-ISA-and-OS-runtime-chec.patch" Content-Disposition: attachment; filename*0="v10-0002-Refactor-consolidate-x86-ISA-and-OS-runtime-chec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyNTQyYzY4MzBkOThlMTQ2ZDc5ODQ0ZmI4NGZlM2ZiMWIyOTQ1YzI1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEFtb25zb24gPHBhdWwuZC5hbW9uc29uQGlu dGVsLmNvbT4KRGF0ZTogVHVlLCAyMyBKdWwgMjAyNCAxMToyMzoyMyAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjEwIDIvNF0gUmVmYWN0b3I6IGNvbnNvbGlkYXRlIHg4NiBJU0EgYW5kIE9T IHJ1bnRpbWUgY2hlY2tzCgpNb3ZlIGFsbCB4ODYgSVNBIGFuZCBPUyBydW50aW1lIGNoZWNr cyBpbnRvIGEgc2luZ2xlIGZpbGUgZm9yIGltcHJvdmVkCm1vZHVsYXJpdHkgYW5kIGVhc2ll ciBmdXR1cmUgbWFpbnRlbmFuY2UuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIEFtb25zb24gPHBh dWwuZC5hbW9uc29uQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogUmFnaHV2ZWVyIERldnVs YXBhbGxpIDxyYWdodXZlZXIuZGV2dWxhcGFsbGlAaW50ZWwuY29tPgotLS0KIHNyYy9pbmNs dWRlL3BvcnQvcGdfYml0dXRpbHMuaCAgICAgIHwgICAxIC0KIHNyYy9pbmNsdWRlL3BvcnQv cGdfaHdfZmVhdF9jaGVjay5oIHwgIDMzICsrKysrKwogc3JjL3BvcnQvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3BvcnQvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICAgfCAgIDMgKwogc3JjL3BvcnQvcGdfYml0dXRpbHMuYyAgICAgICAgICAgICAgfCAg MjIgKy0tLQogc3JjL3BvcnQvcGdfY3JjMzJjX3NzZTQyX2Nob29zZS5jICAgfCAgMjEgKy0t LQogc3JjL3BvcnQvcGdfaHdfZmVhdF9jaGVjay5jICAgICAgICAgfCAxNjMgKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogc3JjL3BvcnQvcGdfcG9wY291bnRfYXZ4NTEyLmMgICAg ICAgfCAgNzggLS0tLS0tLS0tLS0tLQogOCBmaWxlcyBjaGFuZ2VkLCAyMDUgaW5zZXJ0aW9u cygrKSwgMTE3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRl L3BvcnQvcGdfaHdfZmVhdF9jaGVjay5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3BvcnQv cGdfaHdfZmVhdF9jaGVjay5jCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9ydC9wZ19i aXR1dGlscy5oIGIvc3JjL2luY2x1ZGUvcG9ydC9wZ19iaXR1dGlscy5oCmluZGV4IGEzY2Fk NDZhZmUuLjQ2MWM3YzEzY2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BvcnQvcGdfYml0 dXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS9wb3J0L3BnX2JpdHV0aWxzLmgKQEAgLTMxMiw3 ICszMTIsNiBAQCBleHRlcm4gUEdETExJTVBPUlQgdWludDY0ICgqcGdfcG9wY291bnRfbWFz a2VkX29wdGltaXplZCkgKGNvbnN0IGNoYXIgKmJ1ZiwgaW50CiAgKiBmaWxlcy4KICAqLwog I2lmZGVmIFVTRV9BVlg1MTJfUE9QQ05UX1dJVEhfUlVOVElNRV9DSEVDSwotZXh0ZXJuIGJv b2wgcGdfcG9wY291bnRfYXZ4NTEyX2F2YWlsYWJsZSh2b2lkKTsKIGV4dGVybiB1aW50NjQg cGdfcG9wY291bnRfYXZ4NTEyKGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKTsKIGV4dGVy biB1aW50NjQgcGdfcG9wY291bnRfbWFza2VkX2F2eDUxMihjb25zdCBjaGFyICpidWYsIGlu dCBieXRlcywgYml0czggbWFzayk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3BvcnQvcGdfaHdfZmVhdF9jaGVjay5oIGIvc3JjL2luY2x1ZGUvcG9ydC9wZ19od19mZWF0 X2NoZWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNThiZTkw MGI1NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3BvcnQvcGdfaHdfZmVhdF9j aGVjay5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IHBnX2h3X2ZlYXRfY2hlY2suaAorICoJICBNaXNjZWxsYW5lb3VzIGZ1bmN0aW9ucyBmb3Ig Y2hlaW5nIGZvciBoYXJkd2FyZSBmZWF0dXJlcyBhdCBydW50aW1lLgorICoKKyAqCisgKiBD b3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisgKgorICogc3JjL2luY2x1ZGUvcG9ydC9wZ19od19mZWF0X2NoZWNrLmgKKyAqCisgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBQR19IV19GRUFUX0NIRUNLX0gKKyNk ZWZpbmUgUEdfSFdfRkVBVF9DSEVDS19ICisKKy8qCisgKiBUZXN0IHRvIHNlZSBpZiBhbGwg aGFyZHdhcmUgZmVhdHVyZXMgcmVxdWlyZWQgYnkgU1NFIDQuMiBjcmMzMmMgKDY0IGJpdCkK KyAqIGFyZSBhdmFpbGFibGUuCisgKi8KK2V4dGVybiBQR0RMTElNUE9SVCBib29sIHBnX2Ny YzMyY19zc2U0Ml9hdmFpbGFibGUodm9pZCk7CisKKy8qCisgKiBUZXN0IHRvIHNlZSBpZiBh bGwgaGFyZHdhcmUgZmVhdHVyZXMgcmVxdWlyZWQgYnkgU1NFIDQuMSBQT1BDTlQgKDY0IGJp dCkKKyAqIGFyZSBhdmFpbGFibGUuCisgKi8KK2V4dGVybiBQR0RMTElNUE9SVCBib29sIHBn X3BvcGNvdW50X2F2YWlsYWJsZSh2b2lkKTsKKworLyoKKyAqIFRlc3QgdG8gc2VlIGlmIGFs bCBoYXJkd2FyZSBmZWF0dXJlcyByZXF1aXJlZCBieSBBVlgtNTEyIFBPUENOVCBhcmUKKyAq IGF2YWlsYWJsZS4KKyAqLworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgcGdfcG9wY291bnRf YXZ4NTEyX2F2YWlsYWJsZSh2b2lkKTsKKyNlbmRpZgkJCQkJCQkvKiBQR19IV19GRUFUX0NI RUNLX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9wb3J0L01ha2VmaWxlIGIvc3JjL3BvcnQvTWFr ZWZpbGUKaW5kZXggNGMyMjQzMTk1MS4uNjA4OGI1NmI3MSAxMDA2NDQKLS0tIGEvc3JjL3Bv cnQvTWFrZWZpbGUKKysrIGIvc3JjL3BvcnQvTWFrZWZpbGUKQEAgLTQ1LDYgKzQ1LDcgQEAg T0JKUyA9IFwKIAlwYXRoLm8gXAogCXBnX2JpdHV0aWxzLm8gXAogCXBnX3BvcGNvdW50X2F2 eDUxMi5vIFwKKwlwZ19od19mZWF0X2NoZWNrLm8gXAogCXBnX3N0cm9uZ19yYW5kb20ubyBc CiAJcGdjaGVja2Rpci5vIFwKIAlwZ21rZGlycC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9wb3J0 L21lc29uLmJ1aWxkIGIvc3JjL3BvcnQvbWVzb24uYnVpbGQKaW5kZXggYzViY2VlZDljZC4u ZWMyODU5MDQ3MyAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvbWVzb24uYnVpbGQKKysrIGIvc3Jj L3BvcnQvbWVzb24uYnVpbGQKQEAgLTgsNiArOCw5IEBAIHBncG9ydF9zb3VyY2VzID0gWwog ICAncGF0aC5jJywKICAgJ3BnX2JpdHV0aWxzLmMnLAogICAncGdfcG9wY291bnRfYXZ4NTEy LmMnLAorICAncGdfY3JjMzJjX3NzZTQyX2Nob29zZS5jJywKKyAgJ3BnX2NyYzMyY19zc2U0 Mi5jJywKKyAgJ3BnX2h3X2ZlYXRfY2hlY2suYycsCiAgICdwZ19zdHJvbmdfcmFuZG9tLmMn LAogICAncGdjaGVja2Rpci5jJywKICAgJ3BnbWtkaXJwLmMnLApkaWZmIC0tZ2l0IGEvc3Jj L3BvcnQvcGdfYml0dXRpbHMuYyBiL3NyYy9wb3J0L3BnX2JpdHV0aWxzLmMKaW5kZXggYzgz OTk5ODFlZS4uYzExYjEzZGNhMiAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvcGdfYml0dXRpbHMu YworKysgYi9zcmMvcG9ydC9wZ19iaXR1dGlscy5jCkBAIC0yMCw3ICsyMCw3IEBACiAjZW5k aWYKIAogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKLQorI2luY2x1ZGUgInBvcnQv cGdfaHdfZmVhdF9jaGVjay5oIgogCiAvKgogICogQXJyYXkgZ2l2aW5nIHRoZSBwb3NpdGlv biBvZiB0aGUgbGVmdC1tb3N0IHNldCBiaXQgZm9yIGVhY2ggcG9zc2libGUKQEAgLTEwOSw3 ICsxMDksNiBAQCBzdGF0aWMgdWludDY0IHBnX3BvcGNvdW50X3Nsb3coY29uc3QgY2hhciAq YnVmLCBpbnQgYnl0ZXMpOwogc3RhdGljIHVpbnQ2NCBwZ19wb3Bjb3VudF9tYXNrZWRfc2xv dyhjb25zdCBjaGFyICpidWYsIGludCBieXRlcywgYml0czggbWFzayk7CiAKICNpZmRlZiBU UllfUE9QQ05UX0ZBU1QKLXN0YXRpYyBib29sIHBnX3BvcGNvdW50X2F2YWlsYWJsZSh2b2lk KTsKIHN0YXRpYyBpbnQJcGdfcG9wY291bnQzMl9jaG9vc2UodWludDMyIHdvcmQpOwogc3Rh dGljIGludAlwZ19wb3Bjb3VudDY0X2Nob29zZSh1aW50NjQgd29yZCk7CiBzdGF0aWMgdWlu dDY0IHBnX3BvcGNvdW50X2Nob29zZShjb25zdCBjaGFyICpidWYsIGludCBieXRlcyk7CkBA IC0xMjcsMjUgKzEyNiw2IEBAIHVpbnQ2NAkJKCpwZ19wb3Bjb3VudF9tYXNrZWRfb3B0aW1p emVkKSAoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMsIGJpdHM4IG1hc2spCiAKICNpZmRl ZiBUUllfUE9QQ05UX0ZBU1QKIAotLyoKLSAqIFJldHVybiB0cnVlIGlmIENQVUlEIGluZGlj YXRlcyB0aGF0IHRoZSBQT1BDTlQgaW5zdHJ1Y3Rpb24gaXMgYXZhaWxhYmxlLgotICovCi1z dGF0aWMgYm9vbAotcGdfcG9wY291bnRfYXZhaWxhYmxlKHZvaWQpCi17Ci0JdW5zaWduZWQg aW50IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKLQotI2lmIGRlZmluZWQoSEFWRV9fR0VUX0NQ VUlEKQotCV9fZ2V0X2NwdWlkKDEsICZleHhbMF0sICZleHhbMV0sICZleHhbMl0sICZleHhb M10pOwotI2VsaWYgZGVmaW5lZChIQVZFX19DUFVJRCkKLQlfX2NwdWlkKGV4eCwgMSk7Ci0j ZWxzZQotI2Vycm9yIGNwdWlkIGluc3RydWN0aW9uIG5vdCBhdmFpbGFibGUKLSNlbmRpZgot Ci0JcmV0dXJuIChleHhbMl0gJiAoMSA8PCAyMykpICE9IDA7CS8qIFBPUENOVCAqLwotfQot CiAvKgogICogVGhlc2UgZnVuY3Rpb25zIGdldCBjYWxsZWQgb24gdGhlIGZpcnN0IGNhbGwg dG8gcGdfcG9wY291bnQzMiBldGMuCiAgKiBUaGV5IGRldGVjdCB3aGV0aGVyIHdlIGNhbiB1 c2UgdGhlIGFzbSBpbXBsZW1lbnRhdGlvbnMsIGFuZCByZXBsYWNlCmRpZmYgLS1naXQgYS9z cmMvcG9ydC9wZ19jcmMzMmNfc3NlNDJfY2hvb3NlLmMgYi9zcmMvcG9ydC9wZ19jcmMzMmNf c3NlNDJfY2hvb3NlLmMKaW5kZXggNTZkNjAwZjNhOS4uYzY1OTkxN2FmMCAxMDA2NDQKLS0t IGEvc3JjL3BvcnQvcGdfY3JjMzJjX3NzZTQyX2Nob29zZS5jCisrKyBiL3NyYy9wb3J0L3Bn X2NyYzMyY19zc2U0Ml9jaG9vc2UuYwpAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSAi Yy5oIgogCisjaWYgZGVmaW5lZChVU0VfU1NFNDJfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVD SykKICNpZmRlZiBIQVZFX19HRVRfQ1BVSUQKICNpbmNsdWRlIDxjcHVpZC5oPgogI2VuZGlm CkBAIC0yOSwyMiArMzAsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJwb3J0L3BnX2NyYzMy Yy5oIgotCi1zdGF0aWMgYm9vbAotcGdfY3JjMzJjX3NzZTQyX2F2YWlsYWJsZSh2b2lkKQot ewotCXVuc2lnbmVkIGludCBleHhbNF0gPSB7MCwgMCwgMCwgMH07Ci0KLSNpZiBkZWZpbmVk KEhBVkVfX0dFVF9DUFVJRCkKLQlfX2dldF9jcHVpZCgxLCAmZXh4WzBdLCAmZXh4WzFdLCAm ZXh4WzJdLCAmZXh4WzNdKTsKLSNlbGlmIGRlZmluZWQoSEFWRV9fQ1BVSUQpCi0JX19jcHVp ZChleHgsIDEpOwotI2Vsc2UKLSNlcnJvciBjcHVpZCBpbnN0cnVjdGlvbiBub3QgYXZhaWxh YmxlCi0jZW5kaWYKLQotCXJldHVybiAoZXh4WzJdICYgKDEgPDwgMjApKSAhPSAwOwkvKiBT U0UgNC4yICovCi19CisjaW5jbHVkZSAicG9ydC9wZ19od19mZWF0X2NoZWNrLmgiCiAKIC8q CiAgKiBUaGlzIGdldHMgY2FsbGVkIG9uIHRoZSBmaXJzdCBjYWxsLiBJdCByZXBsYWNlcyB0 aGUgZnVuY3Rpb24gcG9pbnRlcgpAQCAtNjEsNCArNDcsNSBAQCBwZ19jb21wX2NyYzMyY19j aG9vc2UocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbikKIAly ZXR1cm4gcGdfY29tcF9jcmMzMmMoY3JjLCBkYXRhLCBsZW4pOwogfQogCi1wZ19jcmMzMmMJ KCpwZ19jb21wX2NyYzMyYykgKHBnX2NyYzMyYyBjcmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNp emVfdCBsZW4pID0gcGdfY29tcF9jcmMzMmNfY2hvb3NlOworcGdfY3JjMzJjICgqcGdfY29t cF9jcmMzMmMpIChwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVu KSA9IHBnX2NvbXBfY3JjMzJjX2Nob29zZTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Bv cnQvcGdfaHdfZmVhdF9jaGVjay5jIGIvc3JjL3BvcnQvcGdfaHdfZmVhdF9jaGVjay5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjI2MGFhNjA1MDIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvcG9ydC9wZ19od19mZWF0X2NoZWNrLmMKQEAgLTAsMCArMSwx NjMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX2h3X2ZlYXRfY2hlY2su YworICoJCVRlc3QgZm9yIGhhcmR3YXJlIGZlYXR1cmVzIGF0IHJ1bnRpbWUgb24geDg2XzY0 IHBsYXRmb3Jtcy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xv YmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQlzcmMv cG9ydC9wZ19od19mZWF0X2NoZWNrLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LworI2luY2x1ZGUgImMuaCIKKworI2lmIGRlZmluZWQoSEFWRV9fR0VUX0NQVUlEKSB8fCBk ZWZpbmVkKEhBVkVfX0dFVF9DUFVJRF9DT1VOVCkKKyNpbmNsdWRlIDxjcHVpZC5oPgorI2Vu ZGlmCisKKyNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KKworI2lmIGRlZmluZWQoSEFWRV9fQ1BV SUQpIHx8IGRlZmluZWQoSEFWRV9fQ1BVSURFWCkKKyNpbmNsdWRlIDxpbnRyaW4uaD4KKyNl bmRpZgorCisjaW5jbHVkZSAicG9ydC9wZ19od19mZWF0X2NoZWNrLmgiCisKKy8qIERlZmlu ZSBuYW1lcyBmb3IgRVhYIHJlZ2lzdGVycyB0byBhdm9pZCBoYXJkIHRvIHNlZSBidWdzIGlu IGNvZGUgYmVsb3cuICovCit0eXBlZGVmIHVuc2lnbmVkIGludCBleHhfdDsKK3R5cGVkZWYg ZW51bQoreworCUVBWCA9IDAsCisJRUJYID0gMSwKKwlFQ1ggPSAyLAorCUVEWCA9IDMKK30g cmVnX25hbWU7CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24uCisgKiBUZXN0IGZvciBhIGJp dCBiZWluZyBzZXQgaW4gYSBleHhfdCByZWdpc3Rlci4KKyAqLworaW5saW5lIHN0YXRpYyBi b29sIGlzX2JpdF9zZXRfaW5fZXh4KGV4eF90KiByZWdzLCByZWdfbmFtZSBleCwgaW50IGJp dCkKK3sKKwlyZXR1cm4gKChyZWdzW2V4XSAmICgxIDw8IGJpdCkpICE9IDApOworfQorCisv KgorICogeDg2XzY0IFBsYXRmb3JtIENQVUlEIGNoZWNrIGZvciBMaW51eCBhbmQgVmlzdWFs IFN0dWRpbyBwbGF0Zm9ybXMuCisgKi8KK2lubGluZSBzdGF0aWMgdm9pZAorcGdfZ2V0Y3B1 aWQodW5zaWduZWQgaW50IGxlYWYsIGV4eF90ICpleHgpCit7CisjaWYgZGVmaW5lZChIQVZF X19HRVRfQ1BVSUQpCisJX19nZXRfY3B1aWQobGVhZiwgJmV4eFswXSwgJmV4eFsxXSwgJmV4 eFsyXSwgJmV4eFszXSk7CisjZWxpZiBkZWZpbmVkKEhBVkVfX0NQVUlEKQorCV9fY3B1aWQo ZXh4LCAxKTsKKyNlbHNlCisjZXJyb3IgY3B1aWQgaW5zdHJ1Y3Rpb24gbm90IGF2YWlsYWJs ZQorI2VuZGlmCit9CisKKy8qCisgKiB4ODZfNjQgUGxhdGZvcm0gQ1BVSURFWCBjaGVjayBm b3IgTGludXggYW5kIFZpc3VhbCBTdHVkaW8gcGxhdGZvcm1zLgorICovCitpbmxpbmUgc3Rh dGljIHZvaWQKK3BnX2dldGNwdWlkZXgodW5zaWduZWQgaW50IGxlYWYsIHVuc2lnbmVkIGlu dCBzdWJsZWFmLCBleHhfdCAqZXh4KQoreworI2lmIGRlZmluZWQoSEFWRV9fR0VUX0NQVUlE X0NPVU5UKQorCV9fZ2V0X2NwdWlkX2NvdW50KGxlYWYsIHN1YmxlYWYsICZleHhbMF0sICZl eHhbMV0sICZleHhbMl0sICZleHhbM10pOworI2VsaWYgZGVmaW5lZChIQVZFX19DUFVJREVY KQorCV9fY3B1aWRleChleHgsIDcsIDApOworI2Vsc2UKKyNlcnJvciBjcHVpZCBpbnN0cnVj dGlvbiBub3QgYXZhaWxhYmxlCisjZW5kaWYKK30KKworLyoKKyAqIENoZWNrIGZvciBDUFUg c3VwcG9ydCBmb3IgQ1BVSUQ6IG9zeHNhdmUKKyAqLworaW5saW5lIHN0YXRpYyBib29sCitv c3hzYXZlX2F2YWlsYWJsZSh2b2lkKQoreworI2lmIGRlZmluZWQoSEFWRV9YU0FWRV9JTlRS SU5TSUNTKQorCWV4eF90IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKKworCXBnX2dldGNwdWlk KDEsIGV4eCk7CisKKwlyZXR1cm4gaXNfYml0X3NldF9pbl9leHgoZXh4LCBFQ1gsIDI3KTsg Lyogb3N4c2F2ZSAqLworI2Vsc2UKKwlyZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworLyoK KyAqIERvZXMgWEdFVEJWIHNheSB0aGUgWk1NIHJlZ2lzdGVycyBhcmUgZW5hYmxlZD8KKyAq CisgKiBOQjogQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciB2ZXJpZnlpbmcgdGhhdCBvc3hz YXZlX2F2YWlsYWJsZSgpIHJldHVybnMgdHJ1ZQorICogYmVmb3JlIGNhbGxpbmcgdGhpcy4K KyAqLworI2lmZGVmIEhBVkVfWFNBVkVfSU5UUklOU0lDUworcGdfYXR0cmlidXRlX3Rhcmdl dCgieHNhdmUiKQorI2VuZGlmCitpbmxpbmUgc3RhdGljIGJvb2wKK3ptbV9yZWdzX2F2YWls YWJsZSh2b2lkKQoreworI2lmIGRlZmluZWQoSEFWRV9YU0FWRV9JTlRSSU5TSUNTKQorCXJl dHVybiAoX3hnZXRidigwKSAmIDB4ZTYpID09IDB4ZTY7CisjZWxzZQorCXJldHVybiBmYWxz ZTsKKyNlbmRpZgorfQorCisvKgorICogRG9lcyBDUFVJRCBzYXkgdGhlcmUncyBzdXBwb3J0 IGZvciBBVlgtNTEyIHBvcGNvdW50IGFuZCBieXRlLWFuZC13b3JkCisgKiBpbnN0cnVjdGlv bnM/CisgKi8KK2lubGluZSBzdGF0aWMgYm9vbAorYXZ4NTEyX3BvcGNudF9hdmFpbGFibGUo dm9pZCkKK3sKKwlleHhfdCBleHhbNF0gPSB7MCwgMCwgMCwgMH07CisKKwlwZ19nZXRjcHVp ZGV4KDcsIDAsIGV4eCk7CisKKwlyZXR1cm4gaXNfYml0X3NldF9pbl9leHgoZXh4LCBFQ1gs IDE0KSAmJiBpc19iaXRfc2V0X2luX2V4eChleHgsIEVCWCwgMzApOworfQorCisvKgorICog UmV0dXJuIHRydWUgaWYgQ1BVSUQgaW5kaWNhdGVzIHRoYXQgdGhlIFBPUENOVCBpbnN0cnVj dGlvbiBpcyBhdmFpbGFibGUuCisgKi8KK2Jvb2wgUEdETExJTVBPUlQgcGdfcG9wY291bnRf YXZhaWxhYmxlKHZvaWQpCit7CisJZXh4X3QgZXh4WzRdID0gezAsIDAsIDAsIDB9OworCisJ cGdfZ2V0Y3B1aWQoMSwgZXh4KTsKKworCXJldHVybiBpc19iaXRfc2V0X2luX2V4eChleHgs IEVDWCwgMjMpOworIH0KKworIC8qCisgICogUmV0dXJucyB0cnVlIGlmIHRoZSBDUFUgc3Vw cG9ydHMgdGhlIGluc3RydWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEFWWC01MTIKKyAgKiBw Z19wb3Bjb3VudCgpIGltcGxlbWVudGF0aW9uLgorICAqCisgICogUEE6IFRoZSBjYWxsIHRv ICdvc3hzYXZlX2F2YWlsYWJsZScgTVVTVCBwcmVjZWVkIHRoZSBjYWxsIHRvCisgICogICAg ICd6bW1fcmVnc19hdmFpbGFibGUnIGZ1bmN0aW9uIHBlciBOQiBhYm92ZS4KKyAgKi8KK2Jv b2wgUEdETExJTVBPUlQgcGdfcG9wY291bnRfYXZ4NTEyX2F2YWlsYWJsZSh2b2lkKQorewor CSByZXR1cm4gb3N4c2F2ZV9hdmFpbGFibGUoKSAmJgorCQkJem1tX3JlZ3NfYXZhaWxhYmxl KCkgJiYKKwkJCWF2eDUxMl9wb3BjbnRfYXZhaWxhYmxlKCk7Cit9CisKKy8qCisgKiBEb2Vz IENQVUlEIHNheSB0aGVyZSdzIHN1cHBvcnQgZm9yIFNTRSA0LjI/CisgKi8KK2Jvb2wgUEdE TExJTVBPUlQgcGdfY3JjMzJjX3NzZTQyX2F2YWlsYWJsZSh2b2lkKQoreworCWV4eF90IGV4 eFs0XSA9IHswLCAwLCAwLCAwfTsKKworCXBnX2dldGNwdWlkKDEsIGV4eCk7CisKKwlyZXR1 cm4gaXNfYml0X3NldF9pbl9leHgoZXh4LCBFQ1gsIDIwKTsKK30KKwpkaWZmIC0tZ2l0IGEv c3JjL3BvcnQvcGdfcG9wY291bnRfYXZ4NTEyLmMgYi9zcmMvcG9ydC9wZ19wb3Bjb3VudF9h dng1MTIuYwppbmRleCBjOGE0ZjJiMTlmLi4xMTIzYTFhNjM0IDEwMDY0NAotLS0gYS9zcmMv cG9ydC9wZ19wb3Bjb3VudF9hdng1MTIuYworKysgYi9zcmMvcG9ydC9wZ19wb3Bjb3VudF9h dng1MTIuYwpAQCAtMTQsMTYgKzE0LDcgQEAKIAogI2lmZGVmIFVTRV9BVlg1MTJfUE9QQ05U X1dJVEhfUlVOVElNRV9DSEVDSwogCi0jaWYgZGVmaW5lZChIQVZFX19HRVRfQ1BVSUQpIHx8 IGRlZmluZWQoSEFWRV9fR0VUX0NQVUlEX0NPVU5UKQotI2luY2x1ZGUgPGNwdWlkLmg+Ci0j ZW5kaWYKLQogI2luY2x1ZGUgPGltbWludHJpbi5oPgotCi0jaWYgZGVmaW5lZChIQVZFX19D UFVJRCkgfHwgZGVmaW5lZChIQVZFX19DUFVJREVYKQotI2luY2x1ZGUgPGludHJpbi5oPgot I2VuZGlmCi0KICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAKIC8qCkBAIC0zMyw3 NSArMjQsNiBAQAogICovCiAjaWZkZWYgVFJZX1BPUENOVF9GQVNUCiAKLS8qCi0gKiBEb2Vz IENQVUlEIHNheSB0aGVyZSdzIHN1cHBvcnQgZm9yIFhTQVZFIGluc3RydWN0aW9ucz8KLSAq Lwotc3RhdGljIGlubGluZSBib29sCi14c2F2ZV9hdmFpbGFibGUodm9pZCkKLXsKLQl1bnNp Z25lZCBpbnQgZXh4WzRdID0gezAsIDAsIDAsIDB9OwotCi0jaWYgZGVmaW5lZChIQVZFX19H RVRfQ1BVSUQpCi0JX19nZXRfY3B1aWQoMSwgJmV4eFswXSwgJmV4eFsxXSwgJmV4eFsyXSwg JmV4eFszXSk7Ci0jZWxpZiBkZWZpbmVkKEhBVkVfX0NQVUlEKQotCV9fY3B1aWQoZXh4LCAx KTsKLSNlbHNlCi0jZXJyb3IgY3B1aWQgaW5zdHJ1Y3Rpb24gbm90IGF2YWlsYWJsZQotI2Vu ZGlmCi0JcmV0dXJuIChleHhbMl0gJiAoMSA8PCAyNykpICE9IDA7CS8qIG9zeHNhdmUgKi8K LX0KLQotLyoKLSAqIERvZXMgWEdFVEJWIHNheSB0aGUgWk1NIHJlZ2lzdGVycyBhcmUgZW5h YmxlZD8KLSAqCi0gKiBOQjogQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciB2ZXJpZnlpbmcg dGhhdCB4c2F2ZV9hdmFpbGFibGUoKSByZXR1cm5zIHRydWUKLSAqIGJlZm9yZSBjYWxsaW5n IHRoaXMuCi0gKi8KLSNpZmRlZiBIQVZFX1hTQVZFX0lOVFJJTlNJQ1MKLXBnX2F0dHJpYnV0 ZV90YXJnZXQoInhzYXZlIikKLSNlbmRpZgotc3RhdGljIGlubGluZSBib29sCi16bW1fcmVn c19hdmFpbGFibGUodm9pZCkKLXsKLSNpZmRlZiBIQVZFX1hTQVZFX0lOVFJJTlNJQ1MKLQly ZXR1cm4gKF94Z2V0YnYoMCkgJiAweGU2KSA9PSAweGU2OwotI2Vsc2UKLQlyZXR1cm4gZmFs c2U7Ci0jZW5kaWYKLX0KLQotLyoKLSAqIERvZXMgQ1BVSUQgc2F5IHRoZXJlJ3Mgc3VwcG9y dCBmb3IgQVZYLTUxMiBwb3Bjb3VudCBhbmQgYnl0ZS1hbmQtd29yZAotICogaW5zdHJ1Y3Rp b25zPwotICovCi1zdGF0aWMgaW5saW5lIGJvb2wKLWF2eDUxMl9wb3BjbnRfYXZhaWxhYmxl KHZvaWQpCi17Ci0JdW5zaWduZWQgaW50IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKLQotI2lm IGRlZmluZWQoSEFWRV9fR0VUX0NQVUlEX0NPVU5UKQotCV9fZ2V0X2NwdWlkX2NvdW50KDcs IDAsICZleHhbMF0sICZleHhbMV0sICZleHhbMl0sICZleHhbM10pOwotI2VsaWYgZGVmaW5l ZChIQVZFX19DUFVJREVYKQotCV9fY3B1aWRleChleHgsIDcsIDApOwotI2Vsc2UKLSNlcnJv ciBjcHVpZCBpbnN0cnVjdGlvbiBub3QgYXZhaWxhYmxlCi0jZW5kaWYKLQlyZXR1cm4gKGV4 eFsyXSAmICgxIDw8IDE0KSkgIT0gMCAmJiAvKiBhdng1MTItdnBvcGNudGRxICovCi0JCShl eHhbMV0gJiAoMSA8PCAzMCkpICE9IDA7CS8qIGF2eDUxMi1idyAqLwotfQotCi0vKgotICog UmV0dXJucyB0cnVlIGlmIHRoZSBDUFUgc3VwcG9ydHMgdGhlIGluc3RydWN0aW9ucyByZXF1 aXJlZCBmb3IgdGhlIEFWWC01MTIKLSAqIHBnX3BvcGNvdW50KCkgaW1wbGVtZW50YXRpb24u Ci0gKi8KLWJvb2wKLXBnX3BvcGNvdW50X2F2eDUxMl9hdmFpbGFibGUodm9pZCkKLXsKLQly ZXR1cm4geHNhdmVfYXZhaWxhYmxlKCkgJiYKLQkJem1tX3JlZ3NfYXZhaWxhYmxlKCkgJiYK LQkJYXZ4NTEyX3BvcGNudF9hdmFpbGFibGUoKTsKLX0KLQogLyoKICAqIHBnX3BvcGNvdW50 X2F2eDUxMgogICoJCVJldHVybnMgdGhlIG51bWJlciBvZiAxLWJpdHMgaW4gYnVmCi0tIAoy LjM0LjEKCg== --------------TC1EMrt04ioXLzZoZV6xN3sh Content-Type: text/plain; charset=UTF-8; name="v10-0003-Add-AVX-512-CRC32C-algorithm-with-a-runtime-chec.patch" Content-Disposition: attachment; filename*0="v10-0003-Add-AVX-512-CRC32C-algorithm-with-a-runtime-chec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmMDhlMTVjMDgzNDYxNmM2MzZkMWNiOTQ5ZWQxNDA5MjYyNjU4NDdlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSYWdodXZlZXIgRGV2dWxhcGFsbGkgPHJhZ2h1dmVl ci5kZXZ1bGFwYWxsaUBpbnRlbC5jb20+CkRhdGU6IFRodSwgMjEgTm92IDIwMjQgMTI6NDI6 MDkgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMCAzLzRdIEFkZCBBVlgtNTEyIENSQzMyQyBh bGdvcml0aG0gd2l0aCBhIHJ1bnRpbWUgY2hlY2sKCkFkZHMgcGdfY3JjMzJjX2F2eDUxMigp OiBjb21wdXRlIHRoZSBjcmMzMmMgb2YgdGhlIGJ1ZmZlciwgd2hlcmUgdGhlCmJ1ZmZlciBs ZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAyNTYsIGFuZCBhIG11bHRpcGxlIG9mIDY0LiBCYXNl ZCBvbjoKCiJGYXN0IENSQyBDb21wdXRhdGlvbiBmb3IgR2VuZXJpYyBQb2x5bm9taWFscyBV c2luZyBQQ0xNVUxRRFEKSW5zdHJ1Y3Rpb24iIFYuIEdvcGFsLCBFLiBPenR1cmssIGV0IGFs LiwgMjAwOSIKCkJlbmNobWFyayBudW1iZXJzIHRvIGNvbXBhcmUgYWdhaW5zdCB0aGUgU1NF NC4yIENSQzMyQyBhbGdvcml0aG0gd2FzCmdlbmVyYXRlZCBieSB1c2luZyB0aGUgZHJpdmVf Y3JjMzJjKCkgZnVuY3Rpb24gYWRkZWQgaW4Kc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NyYzMy Yy90ZXN0X2NyYzMyYy5jLgoKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tKwp8 IFJhdGUgaW4gYnl0ZXMvdXMgfCAgICBTRFAgKFNQUikgICB8ICAgICAgIG02aSAgICAgIHwg ICAgICAgbTdpICAgICAgICB8ICAgICAgIHwgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSsg TXVsdGktfCAgICAgIHwKfCBoaWdoZXIgaXMgYmV0dGVyIHwgU1NFNDIgIHwgQVZYNTEyIHwg U1NFNDIgfCBBVlg1MTIgfCBTU0U0MiAgfCBBVlg1MTIgfCBwbGllciB8ICAlICAgfAorPT09 PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09Kz09PT09PT0rPT09PT09PT0rPT09 PT09PT0rPT09PT09PT0rPT09PT09PSs9PT09PT0rCnwgQVZHIFJhdGUgNjQtODE5MiB8IDEw LDA5NSB8IDgyLDEwMSB8IDgsNTkxIHwgMzgsNjUyIHwgMTEsODY3IHwgODMsMTk0IHwgNi42 OCAgfCA1NjglIHwKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tKwp8IEFWRyBS YXRlIDY0LTI1NSAgfCAgOSwwMzQgfCAgOSwxMzYgfCA3LDYxOSB8ICA3LDQzNyB8ICA5LDAz MCB8ICA5LDI5MyB8IDEuMDEgIHwgICAxJSB8CistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t Ky0tLS0tLSsKCkNvLWF1dGhvcmVkLWJ5OiBQYXVsIEFtb25zb24gPHBhdWwuZC5hbW9uc29u QGludGVsLmNvbT4KLS0tCiBjb25maWcvYy1jb21waWxlci5tNCAgICAgICAgICAgICAgICB8 ICAzMiArKysrKwogY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNTQg KysrKysrKysrKysrLS0tLS0tLS0tCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAg ICAgICB8IDEwNyArKysrKysrLS0tLS0tLS0KIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDIzICsrKysKIHNyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluICAgICAg ICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL3BnX2NwdS5oICAgICAgICAgICAgICAgIHwgIDIz ICsrKysKIHNyYy9pbmNsdWRlL3BvcnQvcGdfY3JjMzJjLmggICAgICAgIHwgIDU1ICsrKy0t LS0tCiBzcmMvaW5jbHVkZS9wb3J0L3BnX2h3X2ZlYXRfY2hlY2suaCB8ICAgNiArCiBzcmMv cG9ydC9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL3BvcnQvcGdf Y3JjMzJjX2F2eDUxMi5jICAgICAgICAgfCAyMDMgKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogc3JjL3BvcnQvcGdfY3JjMzJjX3NzZTQyLmMgICAgICAgICAgfCAgIDIgKwogc3Jj L3BvcnQvcGdfY3JjMzJjX3NzZTQyX2Nob29zZS5jICAgfCAgNTEgLS0tLS0tLQogc3JjL3Bv cnQvcGdfY3JjMzJjX3g4Nl9jaG9vc2UuYyAgICAgfCAgNTcgKysrKysrKysKIHNyYy9wb3J0 L3BnX2h3X2ZlYXRfY2hlY2suYyAgICAgICAgIHwgIDc1ICsrKysrKysrKy0KIDE0IGZpbGVz IGNoYW5nZWQsIDU3OCBpbnNlcnRpb25zKCspLCAyMjMgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvcGdfY3B1LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvcG9ydC9wZ19jcmMzMmNfYXZ4NTEyLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvcG9y dC9wZ19jcmMzMmNfc3NlNDJfY2hvb3NlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcG9y dC9wZ19jcmMzMmNfeDg2X2Nob29zZS5jCgpkaWZmIC0tZ2l0IGEvY29uZmlnL2MtY29tcGls ZXIubTQgYi9jb25maWcvYy1jb21waWxlci5tNAppbmRleCBlMTEyZmQ0NWQ0Li5lMDhkZTAx NzM5IDEwMDY0NAotLS0gYS9jb25maWcvYy1jb21waWxlci5tNAorKysgYi9jb25maWcvYy1j b21waWxlci5tNApAQCAtNTc4LDYgKzU3OCwzOCBAQCB1bmRlZmluZShbQWNfY2FjaGV2YXJd KWRubAogXSkjIFBHQUNfU1NFNDJfQ1JDMzJfSU5UUklOU0lDUwogCiAKKyMgUEdBQ19BVlg1 MTJfQ1JDMzJfSU5UUklOU0lDUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg Q2hlY2sgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIHRoZSB4ODYgQ1JDIGluc3RydWN0aW9u cyBhZGRlZCBpbiBBVlgtNTEyLAorIyB1c2luZyBpbnRyaW5zaWNzIHdpdGggZnVuY3Rpb24g X19hdHRyaWJ1dGVfXygodGFyZ2V0KCIuLi4iKSkpOgorCitBQ19ERUZVTihbUEdBQ19BVlg1 MTJfQ1JDMzJfSU5UUklOU0lDU10sCitbZGVmaW5lKFtBY19jYWNoZXZhcl0sIFtBU19UUl9T SChbcGdhY19jdl9hdng1MTJfY3JjMzJfaW50cmluc2ljc10pXSlkbmwKK0FDX0NBQ0hFX0NI RUNLKFtmb3IgX21tNTEyX2NsbXVsZXBpNjRfZXBpMTI4IHdpdGggZnVuY3Rpb24gYXR0cmli dXRlXSwgW0FjX2NhY2hldmFyXSwKK1tBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFN KFsjaW5jbHVkZSA8aW1taW50cmluLmg+CisgICAgI2luY2x1ZGUgPHN0ZGludC5oPgorICAg ICNpZiBkZWZpbmVkKF9faGFzX2F0dHJpYnV0ZSkgJiYgX19oYXNfYXR0cmlidXRlICh0YXJn ZXQpCisgICAgX19hdHRyaWJ1dGVfXygodGFyZ2V0KCJhdng1MTJ2bCx2cGNsbXVscWRxIikp KQorICAgICNlbmRpZgorICAgIHN0YXRpYyBpbnQgY3JjMzJfYXZ4NTEyX3Rlc3Qodm9pZCkK KyAgICB7CisgICAgICBfX201MTJpIHgwID0gX21tNTEyX3NldDFfZXBpMzIoMHgxKTsKKyAg ICAgIF9fbTUxMmkgeDEgPSBfbW01MTJfc2V0MV9lcGkzMigweDIpOworICAgICAgX19tNTEy aSB4MiA9IF9tbTUxMl9jbG11bGVwaTY0X2VwaTEyOCh4MSwgeDAsIDB4MDApOyAvLyB2cGNs bXVscWRxCisgICAgICBfX20xMjhpIGExID0gX21tX3hvcl9lcGk2NChfbW01MTJfY2FzdHNp NTEyX3NpMTI4KHgxKSwgX21tNTEyX2Nhc3RzaTUxMl9zaTEyOCh4MCkpOyAvL2F2eDUxMnZs CisgICAgICBpbnQ2NF90IHZhbCA9IF9tbV9jcmMzMl91NjQoMCwgX21tX2V4dHJhY3RfZXBp NjQoYTEsIDApKTsgLy8gNjQtYml0IGluc3RydWN0aW9uCisgICAgICByZXR1cm4gKHVpbnQz Ml90KV9tbV9jcmMzMl91NjQodmFsLCBfbW1fZXh0cmFjdF9lcGk2NChhMSwgMSkpOworICAg IH1dLAorICBbcmV0dXJuIGNyYzMyX2F2eDUxMl90ZXN0KCk7XSldLAorICBbQWNfY2FjaGV2 YXI9eWVzXSwKKyAgW0FjX2NhY2hldmFyPW5vXSldKQoraWYgdGVzdCB4IiRBY19jYWNoZXZh ciIgPSB4InllcyI7IHRoZW4KKyAgcGdhY19hdng1MTJfY3JjMzJfaW50cmluc2ljcz15ZXMK K2ZpCit1bmRlZmluZShbQWNfY2FjaGV2YXJdKWRubAorXSkjIFBHQUNfQVZYNTEyX0NSQzMy X0lOVFJJTlNJQ1MKKworCiAjIFBHQUNfQVJNVjhfQ1JDMzJDX0lOVFJJTlNJQ1MKICMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBDaGVjayBpZiB0aGUgY29tcGlsZXIgc3Vw cG9ydHMgdGhlIENSQzMyQyBpbnN0cnVjdGlvbnMgdXNpbmcgdGhlIF9fY3JjMzJjYiwKZGlm ZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCA1MThjMzNiNzNhLi5iMDNi OTI4YmZkIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xNzE1 OSw3ICsxNzE1OSw3IEBAICRhc19lY2hvICIjZGVmaW5lIFVTRV9BVlg1MTJfUE9QQ05UX1dJ VEhfUlVOVElNRV9DSEVDSyAxIiA+PmNvbmZkZWZzLmgKICAgZmkKIGZpCiAKLSMgQ2hlY2sg Zm9yIEludGVsIFNTRSA0LjIgaW50cmluc2ljcyB0byBkbyBDUkMgY2FsY3VsYXRpb25zLgor IyBDaGVjayBmb3IgSW50ZWwgU1NFIDQuMiBhbmQgQVZYLTUxMiBpbnRyaW5zaWNzIHRvIGRv IENSQyBjYWxjdWxhdGlvbnMuCiAjCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGZvciBfbW1fY3JjMzJfdTggYW5kIF9tbV9jcmMzMl91MzIi ID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9tbV9jcmMzMl91OCBhbmQgX21tX2Ny YzMyX3UzMi4uLiAiID4mNjsgfQpAQCAtMTcyMDMsNiArMTcyMDMsNTIgQEAgaWYgdGVzdCB4 IiRwZ2FjX2N2X3NzZTQyX2NyYzMyX2ludHJpbnNpY3MiID0geCJ5ZXMiOyB0aGVuCiBmaQog CiAKKyMgQ2hlY2sgaWYgdGhlIF9tbTUxMl9jbG11bGVwaTY0X2VwaTEyOCBhbmQgX21tX3hv cl9lcGk2NCBjYW4gYmUgdXNlZCB3aXRoIHdpdGgKKyMgdGhlIF9fYXR0cmlidXRlX18oKHRh cmdldCgiYXZ4NTEydmwsdnBjbG11bHFkcSIpKSkuCit7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfbW01MTJfY2xtdWxlcGk2NF9lcGkx Mjggd2l0aCBmdW5jdGlvbiBhdHRyaWJ1dGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg Zm9yIF9tbTUxMl9jbG11bGVwaTY0X2VwaTEyOCB3aXRoIGZ1bmN0aW9uIGF0dHJpYnV0ZS4u LiAiID4mNjsgfQoraWYgJHtwZ2FjX2N2X2F2eDUxMl9jcmMzMl9pbnRyaW5zaWNzKzp9IGZh bHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZk ZWZzLmguICAqLworI2luY2x1ZGUgPGltbWludHJpbi5oPgorICAgICNpbmNsdWRlIDxzdGRp bnQuaD4KKyAgICAjaWYgZGVmaW5lZChfX2hhc19hdHRyaWJ1dGUpICYmIF9faGFzX2F0dHJp YnV0ZSAodGFyZ2V0KQorICAgIF9fYXR0cmlidXRlX18oKHRhcmdldCgiYXZ4NTEydmwsdnBj bG11bHFkcSIpKSkKKyAgICAjZW5kaWYKKyAgICBzdGF0aWMgaW50IGNyYzMyX2F2eDUxMl90 ZXN0KHZvaWQpCisgICAgeworICAgICAgX19tNTEyaSB4MCA9IF9tbTUxMl9zZXQxX2VwaTMy KDB4MSk7CisgICAgICBfX201MTJpIHgxID0gX21tNTEyX3NldDFfZXBpMzIoMHgyKTsKKyAg ICAgIF9fbTUxMmkgeDIgPSBfbW01MTJfY2xtdWxlcGk2NF9lcGkxMjgoeDEsIHgwLCAweDAw KTsgLy8gdnBjbG11bHFkcQorICAgICAgX19tMTI4aSBhMSA9IF9tbV94b3JfZXBpNjQoX21t NTEyX2Nhc3RzaTUxMl9zaTEyOCh4MSksIF9tbTUxMl9jYXN0c2k1MTJfc2kxMjgoeDApKTsg Ly9hdng1MTJ2bAorICAgICAgaW50NjRfdCB2YWwgPSBfbW1fY3JjMzJfdTY0KDAsIF9tbV9l eHRyYWN0X2VwaTY0KGExLCAwKSk7IC8vIDY0LWJpdCBpbnN0cnVjdGlvbgorICAgICAgcmV0 dXJuICh1aW50MzJfdClfbW1fY3JjMzJfdTY0KHZhbCwgX21tX2V4dHJhY3RfZXBpNjQoYTEs IDEpKTsKKyAgICB9CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBjcmMzMl9hdng1MTJfdGVz dCgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5r ICIkTElORU5PIjsgdGhlbiA6CisgIHBnYWNfY3ZfYXZ4NTEyX2NyYzMyX2ludHJpbnNpY3M9 eWVzCitlbHNlCisgIHBnYWNfY3ZfYXZ4NTEyX2NyYzMyX2ludHJpbnNpY3M9bm8KK2ZpCity bSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25m dGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3sgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkcGdhY19jdl9hdng1MTJfY3JjMzJf aW50cmluc2ljcyIgPiY1CiskYXNfZWNobyAiJHBnYWNfY3ZfYXZ4NTEyX2NyYzMyX2ludHJp bnNpY3MiID4mNjsgfQoraWYgdGVzdCB4IiRwZ2FjX2N2X2F2eDUxMl9jcmMzMl9pbnRyaW5z aWNzIiA9IHgieWVzIjsgdGhlbgorICBwZ2FjX2F2eDUxMl9jcmMzMl9pbnRyaW5zaWNzPXll cworZmkKKworCiAjIEFyZSB3ZSB0YXJnZXRpbmcgYSBwcm9jZXNzb3IgdGhhdCBzdXBwb3J0 cyBTU0UgNC4yPyBnY2MsIGNsYW5nIGFuZCBpY2MgYWxsCiAjIGRlZmluZSBfX1NTRTRfMl9f IGluIHRoYXQgY2FzZS4KIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh Y19leHQKQEAgLTE3NDA0LDkgKzE3NDUwLDggQEAgZmkKICMgSWYgd2UgYXJlIHRhcmdldGlu ZyBhIHByb2Nlc3NvciB0aGF0IGhhcyBJbnRlbCBTU0UgNC4yIGluc3RydWN0aW9ucywgd2Ug Y2FuCiAjIHVzZSB0aGUgc3BlY2lhbCBDUkMgaW5zdHJ1Y3Rpb25zIGZvciBjYWxjdWxhdGlu ZyBDUkMtMzJDLiBJZiB3ZSdyZSBub3QKICMgdGFyZ2V0aW5nIHN1Y2ggYSBwcm9jZXNzb3Is IGJ1dCB3ZSBjYW4gbmV2ZXJ0aGVsZXNzIHByb2R1Y2UgY29kZSB0aGF0IHVzZXMKLSMgdGhl IFNTRSBpbnRyaW5zaWNzLCBjb21waWxlIGJvdGggaW1wbGVtZW50YXRpb25zIGFuZCBzZWxl Y3Qgd2hpY2ggb25lIHRvIHVzZQotIyBhdCBydW50aW1lLCBkZXBlbmRpbmcgb24gd2hldGhl ciBTU0UgNC4yIGlzIHN1cHBvcnRlZCBieSB0aGUgcHJvY2Vzc29yIHdlJ3JlCi0jIHJ1bm5p bmcgb24uCisjIHRoZSBTU0UvQVZYLTUxMiBpbnRyaW5zaWNzIGNvbXBpbGUgYm90aCBpbXBs ZW1lbnRhdGlvbnMgYW5kIHNlbGVjdCB3aGljaCBvbmUKKyMgdG8gdXNlIGF0IHJ1bnRpbWUs IGRlcGVuZGluZyBydW50aW1lIGNwdWlkIGluZm9ybWF0aW9uLgogIwogIyBTaW1pbGFybHks IGlmIHdlIGFyZSB0YXJnZXRpbmcgYW4gQVJNIHByb2Nlc3NvciB0aGF0IGhhcyB0aGUgQ1JD CiAjIGluc3RydWN0aW9ucyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBBUk12OCBDUkMgRXh0ZW5z aW9uLCB1c2UgdGhlbS4gQW5kIGlmCkBAIC0xNzQyMyw5NSArMTc0NjgsODAgQEAgZmkKICMK ICMgSWYgd2UgYXJlIHRhcmdldGluZyBhIExvb25nQXJjaCBwcm9jZXNzb3IsIENSQyBpbnN0 cnVjdGlvbnMgYXJlCiAjIGFsd2F5cyBhdmFpbGFibGUgKGF0IGxlYXN0IG9uIDY0IGJpdCks IHNvIG5vIHJ1bnRpbWUgY2hlY2sgaXMgbmVlZGVkLgotaWYgdGVzdCB4IiRVU0VfU0xJQ0lO R19CWV84X0NSQzMyQyIgPSB4IiIgJiYgdGVzdCB4IiRVU0VfU1NFNDJfQ1JDMzJDIiA9IHgi IiAmJiB0ZXN0IHgiJFVTRV9TU0U0Ml9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLIiA9IHgi IiAmJiB0ZXN0IHgiJFVTRV9BUk1WOF9DUkMzMkMiID0geCIiICYmIHRlc3QgeCIkVVNFX0FS TVY4X0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0siID0geCIiICYmIHRlc3QgeCIkVVNFX0xP T05HQVJDSF9DUkMzMkMiID0geCIiOyB0aGVuCi0gICMgVXNlIEludGVsIFNTRSA0LjIgaWYg YXZhaWxhYmxlLgotICBpZiB0ZXN0IHgiJHBnYWNfc3NlNDJfY3JjMzJfaW50cmluc2ljcyIg PSB4InllcyIgJiYgdGVzdCB4IiRTU0U0XzJfVEFSR0VURUQiID0geCIxIiA7IHRoZW4KLSAg ICBVU0VfU1NFNDJfQ1JDMzJDPTEKLSAgZWxzZQotICAgICMgSW50ZWwgU1NFIDQuMiwgd2l0 aCBydW50aW1lIGNoZWNrPyBUaGUgQ1BVSUQgaW5zdHJ1Y3Rpb24gaXMgbmVlZGVkIGZvcgot ICAgICMgdGhlIHJ1bnRpbWUgY2hlY2suCi0gICAgaWYgdGVzdCB4IiRwZ2FjX3NzZTQyX2Ny YzMyX2ludHJpbnNpY3MiID0geCJ5ZXMiICYmICh0ZXN0IHgiJHBnYWNfY3ZfX2dldF9jcHVp ZCIgPSB4InllcyIgfHwgdGVzdCB4IiRwZ2FjX2N2X19jcHVpZCIgPSB4InllcyIpOyB0aGVu Ci0gICAgICBVU0VfU1NFNDJfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSz0xCi0gICAgZWxz ZQotICAgICAgIyBVc2UgQVJNIENSQyBFeHRlbnNpb24gaWYgYXZhaWxhYmxlLgotICAgICAg aWYgdGVzdCB4IiRwZ2FjX2FybXY4X2NyYzMyY19pbnRyaW5zaWNzIiA9IHgieWVzIiAmJiB0 ZXN0IHgiJENGTEFHU19DUkMiID0geCIiOyB0aGVuCi0gICAgICAgIFVTRV9BUk1WOF9DUkMz MkM9MQotICAgICAgZWxzZQotICAgICAgICAjIEFSTSBDUkMgRXh0ZW5zaW9uLCB3aXRoIHJ1 bnRpbWUgY2hlY2s/Ci0gICAgICAgIGlmIHRlc3QgeCIkcGdhY19hcm12OF9jcmMzMmNfaW50 cmluc2ljcyIgPSB4InllcyI7IHRoZW4KLSAgICAgICAgICBVU0VfQVJNVjhfQ1JDMzJDX1dJ VEhfUlVOVElNRV9DSEVDSz0xCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAjIExvb25nQXJj aCBDUkNDIGluc3RydWN0aW9ucy4KLSAgICAgICAgICBpZiB0ZXN0IHgiJHBnYWNfbG9vbmdh cmNoX2NyYzMyY19pbnRyaW5zaWNzIiA9IHgieWVzIjsgdGhlbgotICAgICAgICAgICAgVVNF X0xPT05HQVJDSF9DUkMzMkM9MQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICMgZmFs bCBiYWNrIHRvIHNsaWNpbmctYnktOCBhbGdvcml0aG0sIHdoaWNoIGRvZXNuJ3QgcmVxdWly ZSBhbnkKLSAgICAgICAgICAgICMgc3BlY2lhbCBDUFUgc3VwcG9ydC4KLSAgICAgICAgICAg IFVTRV9TTElDSU5HX0JZXzhfQ1JDMzJDPTEKLSAgICAgICAgICBmaQotICAgICAgICBmaQot ICAgICAgZmkKLSAgICBmaQotICBmaQotZmkKIAotIyBTZXQgUEdfQ1JDMzJDX09CSlMgYXBw cm9wcmlhdGVseSBkZXBlbmRpbmcgb24gdGhlIHNlbGVjdGVkIGltcGxlbWVudGF0aW9uLgog eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGlj aCBDUkMtMzJDIGltcGxlbWVudGF0aW9uIHRvIHVzZSIgPiY1CiAkYXNfZWNob19uICJjaGVj a2luZyB3aGljaCBDUkMtMzJDIGltcGxlbWVudGF0aW9uIHRvIHVzZS4uLiAiID4mNjsgfQot aWYgdGVzdCB4IiRVU0VfU1NFNDJfQ1JDMzJDIiA9IHgiMSI7IHRoZW4KK2lmIHRlc3QgeCIk aG9zdF9jcHUiID0geCJ4ODZfNjQiOyB0aGVuCisgICAgI3g4NiBvbmx5OgorICAgIFBHX0NS QzMyQ19PQkpTPSJwZ19jcmMzMmNfc2I4Lm8gcGdfY3JjMzJjX3g4Nl9jaG9vc2UubyIKKyAg ICBpZiB0ZXN0IHgiJHBnYWNfc3NlNDJfY3JjMzJfaW50cmluc2ljcyIgPSB4InllcyIgJiYg dGVzdCB4IiRTU0U0XzJfVEFSR0VURUQiID0geCIxIiA7IHRoZW4KIAogJGFzX2VjaG8gIiNk ZWZpbmUgVVNFX1NTRTQyX0NSQzMyQyAxIiA+PmNvbmZkZWZzLmgKIAotICBQR19DUkMzMkNf T0JKUz0icGdfY3JjMzJjX3NzZTQyLm8iCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiBTU0UgNC4yIiA+JjUKLSRhc19lY2hvICJTU0UgNC4y IiA+JjY7IH0KLWVsc2UKLSAgaWYgdGVzdCB4IiRVU0VfU1NFNDJfQ1JDMzJDX1dJVEhfUlVO VElNRV9DSEVDSyIgPSB4IjEiOyB0aGVuCisgICAgICBQR19DUkMzMkNfT0JKUys9IiBwZ19j cmMzMmNfc3NlNDIubyIKKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiBDUkMzMkMgYmFzZWxpbmUgZmVhdHVyZSBTU0UgNC4yIiA+JjUK KyRhc19lY2hvICJDUkMzMkMgYmFzZWxpbmUgZmVhdHVyZSBTU0UgNC4yIiA+JjY7IH0KKyAg ICBlbHNlCisgICAgICAgIGlmIHRlc3QgeCIkcGdhY19zc2U0Ml9jcmMzMl9pbnRyaW5zaWNz IiA9IHgieWVzIiAmJiAodGVzdCB4IiRwZ2FjX2N2X19nZXRfY3B1aWQiID0geCJ5ZXMiIHx8 IHRlc3QgeCIkcGdhY19jdl9fY3B1aWQiID0geCJ5ZXMiKTsgdGhlbgogCiAkYXNfZWNobyAi I2RlZmluZSBVU0VfU1NFNDJfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSyAxIiA+PmNvbmZk ZWZzLmgKIAotICAgIFBHX0NSQzMyQ19PQkpTPSJwZ19jcmMzMmNfc3NlNDIubyBwZ19jcmMz MmNfc2I4Lm8gcGdfY3JjMzJjX3NzZTQyX2Nob29zZS5vIgotICAgIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBTU0UgNC4yIHdpdGggcnVudGlt ZSBjaGVjayIgPiY1Ci0kYXNfZWNobyAiU1NFIDQuMiB3aXRoIHJ1bnRpbWUgY2hlY2siID4m NjsgfQotICBlbHNlCi0gICAgaWYgdGVzdCB4IiRVU0VfQVJNVjhfQ1JDMzJDIiA9IHgiMSI7 IHRoZW4KKyAgICAgICAgICBQR19DUkMzMkNfT0JKUys9IiBwZ19jcmMzMmNfc3NlNDIubyIK KyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogQ1JDMzJDIFNTRTQyIHdpdGggcnVudGltZSBjaGVjayIgPiY1CiskYXNfZWNobyAi Q1JDMzJDIFNTRTQyIHdpdGggcnVudGltZSBjaGVjayIgPiY2OyB9CisgICAgICAgIGZpCisg ICAgZmkKKyAgICBpZiB0ZXN0IHgiJHBnYWNfYXZ4NTEyX2NyYzMyX2ludHJpbnNpY3MiID0g eCJ5ZXMiICYmICh0ZXN0IHgiJHBnYWNfY3ZfX2dldF9jcHVpZCIgPSB4InllcyIgfHwgdGVz dCB4IiRwZ2FjX2N2X19jcHVpZCIgPSB4InllcyIpOyB0aGVuCisKKyRhc19lY2hvICIjZGVm aW5lIFVTRV9BVlg1MTJfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSyAxIiA+PmNvbmZkZWZz LmgKKworICAgICAgUEdfQ1JDMzJDX09CSlMrPSIgcGdfY3JjMzJjX2F2eDUxMi5vIgorICAg ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IENS QzMyQyBBVlgtNTEyIHdpdGggcnVudGltZSBjaGVjayIgPiY1CiskYXNfZWNobyAiQ1JDMzJD IEFWWC01MTIgd2l0aCBydW50aW1lIGNoZWNrIiA+JjY7IH0KKyAgICBmaQorZWxzZQorICAj IG5vbiB4ODYgY29kZToKKyAgIyBVc2UgQVJNIENSQyBFeHRlbnNpb24gaWYgYXZhaWxhYmxl LgorICBpZiB0ZXN0IHgiJHBnYWNfYXJtdjhfY3JjMzJjX2ludHJpbnNpY3MiID0geCJ5ZXMi ICYmIHRlc3QgeCIkQ0ZMQUdTX0NSQyIgPSB4IiI7IHRoZW4KIAogJGFzX2VjaG8gIiNkZWZp bmUgVVNFX0FSTVY4X0NSQzMyQyAxIiA+PmNvbmZkZWZzLmgKIAotICAgICAgUEdfQ1JDMzJD X09CSlM9InBnX2NyYzMyY19hcm12OC5vIgotICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEFSTXY4IENSQyBpbnN0cnVjdGlvbnMiID4m NQorICAgIFBHX0NSQzMyQ19PQkpTPSJwZ19jcmMzMmNfYXJtdjgubyIKKyAgICB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogQVJNdjggQ1JDIGlu c3RydWN0aW9ucyIgPiY1CiAkYXNfZWNobyAiQVJNdjggQ1JDIGluc3RydWN0aW9ucyIgPiY2 OyB9Ci0gICAgZWxzZQotICAgICAgaWYgdGVzdCB4IiRVU0VfQVJNVjhfQ1JDMzJDX1dJVEhf UlVOVElNRV9DSEVDSyIgPSB4IjEiOyB0aGVuCisgIGVsc2UKKyAgICAjIEFSTSBDUkMgRXh0 ZW5zaW9uLCB3aXRoIHJ1bnRpbWUgY2hlY2s/CisgICAgaWYgdGVzdCB4IiRwZ2FjX2FybXY4 X2NyYzMyY19pbnRyaW5zaWNzIiA9IHgieWVzIjsgdGhlbgogCiAkYXNfZWNobyAiI2RlZmlu ZSBVU0VfQVJNVjhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSyAxIiA+PmNvbmZkZWZzLmgK IAotICAgICAgICBQR19DUkMzMkNfT0JKUz0icGdfY3JjMzJjX2FybXY4Lm8gcGdfY3JjMzJj X3NiOC5vIHBnX2NyYzMyY19hcm12OF9jaG9vc2UubyIKLSAgICAgICAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEFSTXY4IENSQyBpbnN0cnVj dGlvbnMgd2l0aCBydW50aW1lIGNoZWNrIiA+JjUKKyAgICAgIFBHX0NSQzMyQ19PQkpTPSJw Z19jcmMzMmNfYXJtdjgubyBwZ19jcmMzMmNfc2I4Lm8gcGdfY3JjMzJjX2FybXY4X2Nob29z ZS5vIgorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6IEFSTXY4IENSQyBpbnN0cnVjdGlvbnMgd2l0aCBydW50aW1lIGNoZWNrIiA+JjUK ICRhc19lY2hvICJBUk12OCBDUkMgaW5zdHJ1Y3Rpb25zIHdpdGggcnVudGltZSBjaGVjayIg PiY2OyB9Ci0gICAgICBlbHNlCi0gICAgICAgIGlmIHRlc3QgeCIkVVNFX0xPT05HQVJDSF9D UkMzMkMiID0geCIxIjsgdGhlbgorICAgIGVsc2UKKyAgICAgICMgTG9vbmdBcmNoIENSQ0Mg aW5zdHJ1Y3Rpb25zLgorICAgICAgaWYgdGVzdCB4IiRwZ2FjX2xvb25nYXJjaF9jcmMzMmNf aW50cmluc2ljcyIgPSB4InllcyI7IHRoZW4KIAogJGFzX2VjaG8gIiNkZWZpbmUgVVNFX0xP T05HQVJDSF9DUkMzMkMgMSIgPj5jb25mZGVmcy5oCiAKLSAgICAgICAgICBQR19DUkMzMkNf T0JKUz0icGdfY3JjMzJjX2xvb25nYXJjaC5vIgotICAgICAgICAgIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBMb29uZ0FyY2ggQ1JDQyBpbnN0 cnVjdGlvbnMiID4mNQorICAgICAgICBQR19DUkMzMkNfT0JKUz0icGdfY3JjMzJjX2xvb25n YXJjaC5vIgorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogTG9vbmdBcmNoIENSQ0MgaW5zdHJ1Y3Rpb25zIiA+JjUKICRhc19lY2hv ICJMb29uZ0FyY2ggQ1JDQyBpbnN0cnVjdGlvbnMiID4mNjsgfQotICAgICAgICBlbHNlCisg ICAgICBlbHNlCisgICAgICAgICMgZmFsbCBiYWNrIHRvIHNsaWNpbmctYnktOCBhbGdvcml0 aG0sIHdoaWNoIGRvZXNuJ3QgcmVxdWlyZSBhbnkKKyAgICAgICAgIyBzcGVjaWFsIENQVSBz dXBwb3J0LgogCiAkYXNfZWNobyAiI2RlZmluZSBVU0VfU0xJQ0lOR19CWV84X0NSQzMyQyAx IiA+PmNvbmZkZWZzLmgKIAotICAgICAgICAgIFBHX0NSQzMyQ19PQkpTPSJwZ19jcmMzMmNf c2I4Lm8iCi0gICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6IHNsaWNpbmctYnktOCIgPiY1CisgICAgICAgIFBHX0NSQzMyQ19PQkpT PSJwZ19jcmMzMmNfc2I4Lm8iCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiBzbGljaW5nLWJ5LTgiID4mNQogJGFzX2VjaG8gInNs aWNpbmctYnktOCIgPiY2OyB9Ci0gICAgICAgIGZpCiAgICAgICBmaQogICAgIGZpCiAgIGZp CiBmaQogCiAKLQogIyBTZWxlY3Qgc2VtYXBob3JlIGltcGxlbWVudGF0aW9uIHR5cGUuCiBp ZiB0ZXN0ICIkUE9SVE5BTUUiICE9ICJ3aW4zMiI7IHRoZW4KICAgaWYgdGVzdCB4IiRQUkVG RVJSRURfU0VNQVBIT1JFUyIgPSB4Ik5BTUVEX1BPU0lYIiA7IHRoZW4KZGlmZiAtLWdpdCBh L2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAyNDdhZTk3ZmE0Li45NmE5YzJk YjFmIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0y MDIxLDEwICsyMDIxLDE0IEBAIGlmIHRlc3QgeCIkaG9zdF9jcHUiID0geCJ4ODZfNjQiOyB0 aGVuCiAgIGZpCiBmaQogCi0jIENoZWNrIGZvciBJbnRlbCBTU0UgNC4yIGludHJpbnNpY3Mg dG8gZG8gQ1JDIGNhbGN1bGF0aW9ucy4KKyMgQ2hlY2sgZm9yIEludGVsIFNTRSA0LjIgYW5k IEFWWC01MTIgaW50cmluc2ljcyB0byBkbyBDUkMgY2FsY3VsYXRpb25zLgogIwogUEdBQ19T U0U0Ml9DUkMzMl9JTlRSSU5TSUNTKCkKIAorIyBDaGVjayBpZiB0aGUgX21tNTEyX2NsbXVs ZXBpNjRfZXBpMTI4IGFuZCBfbW1feG9yX2VwaTY0IGNhbiBiZSB1c2VkIHdpdGggd2l0aAor IyB0aGUgX19hdHRyaWJ1dGVfXygodGFyZ2V0KCJhdng1MTJ2bCx2cGNsbXVscWRxIikpKS4K K1BHQUNfQVZYNTEyX0NSQzMyX0lOVFJJTlNJQ1MoW10pCisKICMgQXJlIHdlIHRhcmdldGlu ZyBhIHByb2Nlc3NvciB0aGF0IHN1cHBvcnRzIFNTRSA0LjI/IGdjYywgY2xhbmcgYW5kIGlj YyBhbGwKICMgZGVmaW5lIF9fU1NFNF8yX18gaW4gdGhhdCBjYXNlLgogQUNfQ09NUElMRV9J RkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbXSwgWwpAQCAtMjA2MCw5ICsyMDY0LDggQEAgQUNf U1VCU1QoQ0ZMQUdTX0NSQykKICMgSWYgd2UgYXJlIHRhcmdldGluZyBhIHByb2Nlc3NvciB0 aGF0IGhhcyBJbnRlbCBTU0UgNC4yIGluc3RydWN0aW9ucywgd2UgY2FuCiAjIHVzZSB0aGUg c3BlY2lhbCBDUkMgaW5zdHJ1Y3Rpb25zIGZvciBjYWxjdWxhdGluZyBDUkMtMzJDLiBJZiB3 ZSdyZSBub3QKICMgdGFyZ2V0aW5nIHN1Y2ggYSBwcm9jZXNzb3IsIGJ1dCB3ZSBjYW4gbmV2 ZXJ0aGVsZXNzIHByb2R1Y2UgY29kZSB0aGF0IHVzZXMKLSMgdGhlIFNTRSBpbnRyaW5zaWNz LCBjb21waWxlIGJvdGggaW1wbGVtZW50YXRpb25zIGFuZCBzZWxlY3Qgd2hpY2ggb25lIHRv IHVzZQotIyBhdCBydW50aW1lLCBkZXBlbmRpbmcgb24gd2hldGhlciBTU0UgNC4yIGlzIHN1 cHBvcnRlZCBieSB0aGUgcHJvY2Vzc29yIHdlJ3JlCi0jIHJ1bm5pbmcgb24uCisjIHRoZSBT U0UvQVZYLTUxMiBpbnRyaW5zaWNzIGNvbXBpbGUgYm90aCBpbXBsZW1lbnRhdGlvbnMgYW5k IHNlbGVjdCB3aGljaCBvbmUKKyMgdG8gdXNlIGF0IHJ1bnRpbWUsIGRlcGVuZGluZyBydW50 aW1lIGNwdWlkIGluZm9ybWF0aW9uLgogIwogIyBTaW1pbGFybHksIGlmIHdlIGFyZSB0YXJn ZXRpbmcgYW4gQVJNIHByb2Nlc3NvciB0aGF0IGhhcyB0aGUgQ1JDCiAjIGluc3RydWN0aW9u cyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBBUk12OCBDUkMgRXh0ZW5zaW9uLCB1c2UgdGhlbS4g QW5kIGlmCkBAIC0yMDc5LDc2ICsyMDgyLDU4IEBAIEFDX1NVQlNUKENGTEFHU19DUkMpCiAj CiAjIElmIHdlIGFyZSB0YXJnZXRpbmcgYSBMb29uZ0FyY2ggcHJvY2Vzc29yLCBDUkMgaW5z dHJ1Y3Rpb25zIGFyZQogIyBhbHdheXMgYXZhaWxhYmxlIChhdCBsZWFzdCBvbiA2NCBiaXQp LCBzbyBubyBydW50aW1lIGNoZWNrIGlzIG5lZWRlZC4KLWlmIHRlc3QgeCIkVVNFX1NMSUNJ TkdfQllfOF9DUkMzMkMiID0geCIiICYmIHRlc3QgeCIkVVNFX1NTRTQyX0NSQzMyQyIgPSB4 IiIgJiYgdGVzdCB4IiRVU0VfU1NFNDJfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSyIgPSB4 IiIgJiYgdGVzdCB4IiRVU0VfQVJNVjhfQ1JDMzJDIiA9IHgiIiAmJiB0ZXN0IHgiJFVTRV9B Uk1WOF9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLIiA9IHgiIiAmJiB0ZXN0IHgiJFVTRV9M T09OR0FSQ0hfQ1JDMzJDIiA9IHgiIjsgdGhlbgotICAjIFVzZSBJbnRlbCBTU0UgNC4yIGlm IGF2YWlsYWJsZS4KLSAgaWYgdGVzdCB4IiRwZ2FjX3NzZTQyX2NyYzMyX2ludHJpbnNpY3Mi ID0geCJ5ZXMiICYmIHRlc3QgeCIkU1NFNF8yX1RBUkdFVEVEIiA9IHgiMSIgOyB0aGVuCi0g ICAgVVNFX1NTRTQyX0NSQzMyQz0xCi0gIGVsc2UKLSAgICAjIEludGVsIFNTRSA0LjIsIHdp dGggcnVudGltZSBjaGVjaz8gVGhlIENQVUlEIGluc3RydWN0aW9uIGlzIG5lZWRlZCBmb3IK LSAgICAjIHRoZSBydW50aW1lIGNoZWNrLgotICAgIGlmIHRlc3QgeCIkcGdhY19zc2U0Ml9j cmMzMl9pbnRyaW5zaWNzIiA9IHgieWVzIiAmJiAodGVzdCB4IiRwZ2FjX2N2X19nZXRfY3B1 aWQiID0geCJ5ZXMiIHx8IHRlc3QgeCIkcGdhY19jdl9fY3B1aWQiID0geCJ5ZXMiKTsgdGhl bgotICAgICAgVVNFX1NTRTQyX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0s9MQorCitBQ19N U0dfQ0hFQ0tJTkcoW3doaWNoIENSQy0zMkMgaW1wbGVtZW50YXRpb24gdG8gdXNlXSkKK2lm IHRlc3QgeCIkaG9zdF9jcHUiID0geCJ4ODZfNjQiOyB0aGVuCisgICAgI3g4NiBvbmx5Ogor ICAgIFBHX0NSQzMyQ19PQkpTPSJwZ19jcmMzMmNfc2I4Lm8gcGdfY3JjMzJjX3g4Nl9jaG9v c2UubyIKKyAgICBpZiB0ZXN0IHgiJHBnYWNfc3NlNDJfY3JjMzJfaW50cmluc2ljcyIgPSB4 InllcyIgJiYgdGVzdCB4IiRTU0U0XzJfVEFSR0VURUQiID0geCIxIiA7IHRoZW4KKyAgICAg IEFDX0RFRklORShVU0VfU1NFNDJfQ1JDMzJDLCAxLCBbRGVmaW5lIHRvIDEgdXNlIEludGVs IFNTRSA0LjIgQ1JDIGluc3RydWN0aW9ucy5dKQorICAgICAgUEdfQ1JDMzJDX09CSlMrPSIg cGdfY3JjMzJjX3NzZTQyLm8iCisgICAgICBBQ19NU0dfUkVTVUxUKENSQzMyQyBiYXNlbGlu ZSBmZWF0dXJlIFNTRSA0LjIpCiAgICAgZWxzZQotICAgICAgIyBVc2UgQVJNIENSQyBFeHRl bnNpb24gaWYgYXZhaWxhYmxlLgotICAgICAgaWYgdGVzdCB4IiRwZ2FjX2FybXY4X2NyYzMy Y19pbnRyaW5zaWNzIiA9IHgieWVzIiAmJiB0ZXN0IHgiJENGTEFHU19DUkMiID0geCIiOyB0 aGVuCi0gICAgICAgIFVTRV9BUk1WOF9DUkMzMkM9MQotICAgICAgZWxzZQotICAgICAgICAj IEFSTSBDUkMgRXh0ZW5zaW9uLCB3aXRoIHJ1bnRpbWUgY2hlY2s/Ci0gICAgICAgIGlmIHRl c3QgeCIkcGdhY19hcm12OF9jcmMzMmNfaW50cmluc2ljcyIgPSB4InllcyI7IHRoZW4KLSAg ICAgICAgICBVU0VfQVJNVjhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSz0xCi0gICAgICAg IGVsc2UKLSAgICAgICAgICAjIExvb25nQXJjaCBDUkNDIGluc3RydWN0aW9ucy4KLSAgICAg ICAgICBpZiB0ZXN0IHgiJHBnYWNfbG9vbmdhcmNoX2NyYzMyY19pbnRyaW5zaWNzIiA9IHgi eWVzIjsgdGhlbgotICAgICAgICAgICAgVVNFX0xPT05HQVJDSF9DUkMzMkM9MQotICAgICAg ICAgIGVsc2UKLSAgICAgICAgICAgICMgZmFsbCBiYWNrIHRvIHNsaWNpbmctYnktOCBhbGdv cml0aG0sIHdoaWNoIGRvZXNuJ3QgcmVxdWlyZSBhbnkKLSAgICAgICAgICAgICMgc3BlY2lh bCBDUFUgc3VwcG9ydC4KLSAgICAgICAgICAgIFVTRV9TTElDSU5HX0JZXzhfQ1JDMzJDPTEK LSAgICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0IHgiJHBnYWNfc3NlNDJfY3JjMzJfaW50 cmluc2ljcyIgPSB4InllcyIgJiYgKHRlc3QgeCIkcGdhY19jdl9fZ2V0X2NwdWlkIiA9IHgi eWVzIiB8fCB0ZXN0IHgiJHBnYWNfY3ZfX2NwdWlkIiA9IHgieWVzIik7IHRoZW4KKyAgICAg ICAgICBBQ19ERUZJTkUoVVNFX1NTRTQyX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0ssIDEs IFtEZWZpbmUgdG8gMSB0byB1c2UgSW50ZWwgU1NFIDQuMiBDUkMgaW5zdHJ1Y3Rpb25zIHdp dGggYSBydW50aW1lIGNoZWNrLl0pCisgICAgICAgICAgUEdfQ1JDMzJDX09CSlMrPSIgcGdf Y3JjMzJjX3NzZTQyLm8iCisgICAgICAgICAgQUNfTVNHX1JFU1VMVChDUkMzMkMgU1NFNDIg d2l0aCBydW50aW1lIGNoZWNrKQogICAgICAgICBmaQotICAgICAgZmkKICAgICBmaQotICBm aQotZmkKLQotIyBTZXQgUEdfQ1JDMzJDX09CSlMgYXBwcm9wcmlhdGVseSBkZXBlbmRpbmcg b24gdGhlIHNlbGVjdGVkIGltcGxlbWVudGF0aW9uLgotQUNfTVNHX0NIRUNLSU5HKFt3aGlj aCBDUkMtMzJDIGltcGxlbWVudGF0aW9uIHRvIHVzZV0pCi1pZiB0ZXN0IHgiJFVTRV9TU0U0 Ml9DUkMzMkMiID0geCIxIjsgdGhlbgotICBBQ19ERUZJTkUoVVNFX1NTRTQyX0NSQzMyQywg MSwgW0RlZmluZSB0byAxIHVzZSBJbnRlbCBTU0UgNC4yIENSQyBpbnN0cnVjdGlvbnMuXSkK LSAgUEdfQ1JDMzJDX09CSlM9InBnX2NyYzMyY19zc2U0Mi5vIgotICBBQ19NU0dfUkVTVUxU KFNTRSA0LjIpCisgICAgaWYgdGVzdCB4IiRwZ2FjX2F2eDUxMl9jcmMzMl9pbnRyaW5zaWNz IiA9IHgieWVzIiAmJiAodGVzdCB4IiRwZ2FjX2N2X19nZXRfY3B1aWQiID0geCJ5ZXMiIHx8 IHRlc3QgeCIkcGdhY19jdl9fY3B1aWQiID0geCJ5ZXMiKTsgdGhlbgorICAgICAgQUNfREVG SU5FKFVTRV9BVlg1MTJfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSywgMSwgW0RlZmluZSB0 byAxIHRvIHVzZSBJbnRlbCBBVlggNTEyIENSQyBpbnN0cnVjdGlvbnMgd2l0aCBhIHJ1bnRp bWUgY2hlY2suXSkKKyAgICAgIFBHX0NSQzMyQ19PQkpTKz0iIHBnX2NyYzMyY19hdng1MTIu byIKKyAgICAgIEFDX01TR19SRVNVTFQoQ1JDMzJDIEFWWC01MTIgd2l0aCBydW50aW1lIGNo ZWNrKQorICAgIGZpCiBlbHNlCi0gIGlmIHRlc3QgeCIkVVNFX1NTRTQyX0NSQzMyQ19XSVRI X1JVTlRJTUVfQ0hFQ0siID0geCIxIjsgdGhlbgotICAgIEFDX0RFRklORShVU0VfU1NFNDJf Q1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSywgMSwgW0RlZmluZSB0byAxIHRvIHVzZSBJbnRl bCBTU0UgNC4yIENSQyBpbnN0cnVjdGlvbnMgd2l0aCBhIHJ1bnRpbWUgY2hlY2suXSkKLSAg ICBQR19DUkMzMkNfT0JKUz0icGdfY3JjMzJjX3NzZTQyLm8gcGdfY3JjMzJjX3NiOC5vIHBn X2NyYzMyY19zc2U0Ml9jaG9vc2UubyIKLSAgICBBQ19NU0dfUkVTVUxUKFNTRSA0LjIgd2l0 aCBydW50aW1lIGNoZWNrKQorICAjIG5vbiB4ODYgY29kZToKKyAgIyBVc2UgQVJNIENSQyBF eHRlbnNpb24gaWYgYXZhaWxhYmxlLgorICBpZiB0ZXN0IHgiJHBnYWNfYXJtdjhfY3JjMzJj X2ludHJpbnNpY3MiID0geCJ5ZXMiICYmIHRlc3QgeCIkQ0ZMQUdTX0NSQyIgPSB4IiI7IHRo ZW4KKyAgICBBQ19ERUZJTkUoVVNFX0FSTVY4X0NSQzMyQywgMSwgW0RlZmluZSB0byAxIHRv IHVzZSBBUk12OCBDUkMgRXh0ZW5zaW9uLl0pCisgICAgUEdfQ1JDMzJDX09CSlM9InBnX2Ny YzMyY19hcm12OC5vIgorICAgIEFDX01TR19SRVNVTFQoQVJNdjggQ1JDIGluc3RydWN0aW9u cykKICAgZWxzZQotICAgIGlmIHRlc3QgeCIkVVNFX0FSTVY4X0NSQzMyQyIgPSB4IjEiOyB0 aGVuCi0gICAgICBBQ19ERUZJTkUoVVNFX0FSTVY4X0NSQzMyQywgMSwgW0RlZmluZSB0byAx IHRvIHVzZSBBUk12OCBDUkMgRXh0ZW5zaW9uLl0pCi0gICAgICBQR19DUkMzMkNfT0JKUz0i cGdfY3JjMzJjX2FybXY4Lm8iCi0gICAgICBBQ19NU0dfUkVTVUxUKEFSTXY4IENSQyBpbnN0 cnVjdGlvbnMpCisgICAgIyBBUk0gQ1JDIEV4dGVuc2lvbiwgd2l0aCBydW50aW1lIGNoZWNr PworICAgIGlmIHRlc3QgeCIkcGdhY19hcm12OF9jcmMzMmNfaW50cmluc2ljcyIgPSB4Inll cyI7IHRoZW4KKyAgICAgIEFDX0RFRklORShVU0VfQVJNVjhfQ1JDMzJDX1dJVEhfUlVOVElN RV9DSEVDSywgMSwgW0RlZmluZSB0byAxIHRvIHVzZSBBUk12OCBDUkMgRXh0ZW5zaW9uIHdp dGggYSBydW50aW1lIGNoZWNrLl0pCisgICAgICBQR19DUkMzMkNfT0JKUz0icGdfY3JjMzJj X2FybXY4Lm8gcGdfY3JjMzJjX3NiOC5vIHBnX2NyYzMyY19hcm12OF9jaG9vc2UubyIKKyAg ICAgIEFDX01TR19SRVNVTFQoQVJNdjggQ1JDIGluc3RydWN0aW9ucyB3aXRoIHJ1bnRpbWUg Y2hlY2spCiAgICAgZWxzZQotICAgICAgaWYgdGVzdCB4IiRVU0VfQVJNVjhfQ1JDMzJDX1dJ VEhfUlVOVElNRV9DSEVDSyIgPSB4IjEiOyB0aGVuCi0gICAgICAgIEFDX0RFRklORShVU0Vf QVJNVjhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSywgMSwgW0RlZmluZSB0byAxIHRvIHVz ZSBBUk12OCBDUkMgRXh0ZW5zaW9uIHdpdGggYSBydW50aW1lIGNoZWNrLl0pCi0gICAgICAg IFBHX0NSQzMyQ19PQkpTPSJwZ19jcmMzMmNfYXJtdjgubyBwZ19jcmMzMmNfc2I4Lm8gcGdf Y3JjMzJjX2FybXY4X2Nob29zZS5vIgotICAgICAgICBBQ19NU0dfUkVTVUxUKEFSTXY4IENS QyBpbnN0cnVjdGlvbnMgd2l0aCBydW50aW1lIGNoZWNrKQorICAgICAgIyBMb29uZ0FyY2gg Q1JDQyBpbnN0cnVjdGlvbnMuCisgICAgICBpZiB0ZXN0IHgiJHBnYWNfbG9vbmdhcmNoX2Ny YzMyY19pbnRyaW5zaWNzIiA9IHgieWVzIjsgdGhlbgorICAgICAgICBBQ19ERUZJTkUoVVNF X0xPT05HQVJDSF9DUkMzMkMsIDEsIFtEZWZpbmUgdG8gMSB0byB1c2UgTG9vbmdBcmNoIENS Q0MgaW5zdHJ1Y3Rpb25zLl0pCisgICAgICAgIFBHX0NSQzMyQ19PQkpTPSJwZ19jcmMzMmNf bG9vbmdhcmNoLm8iCisgICAgICAgIEFDX01TR19SRVNVTFQoTG9vbmdBcmNoIENSQ0MgaW5z dHJ1Y3Rpb25zKQogICAgICAgZWxzZQotICAgICAgICBpZiB0ZXN0IHgiJFVTRV9MT09OR0FS Q0hfQ1JDMzJDIiA9IHgiMSI7IHRoZW4KLSAgICAgICAgICBBQ19ERUZJTkUoVVNFX0xPT05H QVJDSF9DUkMzMkMsIDEsIFtEZWZpbmUgdG8gMSB0byB1c2UgTG9vbmdBcmNoIENSQ0MgaW5z dHJ1Y3Rpb25zLl0pCi0gICAgICAgICAgUEdfQ1JDMzJDX09CSlM9InBnX2NyYzMyY19sb29u Z2FyY2gubyIKLSAgICAgICAgICBBQ19NU0dfUkVTVUxUKExvb25nQXJjaCBDUkNDIGluc3Ry dWN0aW9ucykKLSAgICAgICAgZWxzZQotICAgICAgICAgIEFDX0RFRklORShVU0VfU0xJQ0lO R19CWV84X0NSQzMyQywgMSwgW0RlZmluZSB0byAxIHRvIHVzZSBzb2Z0d2FyZSBDUkMtMzJD IGltcGxlbWVudGF0aW9uIChzbGljaW5nLWJ5LTgpLl0pCi0gICAgICAgICAgUEdfQ1JDMzJD X09CSlM9InBnX2NyYzMyY19zYjgubyIKLSAgICAgICAgICBBQ19NU0dfUkVTVUxUKHNsaWNp bmctYnktOCkKLSAgICAgICAgZmkKKyAgICAgICAgIyBmYWxsIGJhY2sgdG8gc2xpY2luZy1i eS04IGFsZ29yaXRobSwgd2hpY2ggZG9lc24ndCByZXF1aXJlIGFueQorICAgICAgICAjIHNw ZWNpYWwgQ1BVIHN1cHBvcnQuCisgICAgICAgIEFDX0RFRklORShVU0VfU0xJQ0lOR19CWV84 X0NSQzMyQywgMSwgW0RlZmluZSB0byAxIHRvIHVzZSBzb2Z0d2FyZSBDUkMtMzJDIGltcGxl bWVudGF0aW9uIChzbGljaW5nLWJ5LTgpLl0pCisgICAgICAgIFBHX0NSQzMyQ19PQkpTPSJw Z19jcmMzMmNfc2I4Lm8iCisgICAgICAgIEFDX01TR19SRVNVTFQoc2xpY2luZy1ieS04KQog ICAgICAgZmkKICAgICBmaQogICBmaQogZmkKIEFDX1NVQlNUKFBHX0NSQzMyQ19PQkpTKQog Ci0KICMgU2VsZWN0IHNlbWFwaG9yZSBpbXBsZW1lbnRhdGlvbiB0eXBlLgogaWYgdGVzdCAi JFBPUlROQU1FIiAhPSAid2luMzIiOyB0aGVuCiAgIGlmIHRlc3QgeCIkUFJFRkVSUkVEX1NF TUFQSE9SRVMiID0geCJOQU1FRF9QT1NJWCIgOyB0aGVuCmRpZmYgLS1naXQgYS9tZXNvbi5i dWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IGU1Y2U0MzdhNWMuLjU4MzM2NjFkNzEgMTAwNjQ0 Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxkCkBAIC0yMjIyLDYgKzIyMjIs MjMgQEAgaWYgaG9zdF9jcHUgPT0gJ3g4Nicgb3IgaG9zdF9jcHUgPT0gJ3g4Nl82NCcKICAg ICBoYXZlX29wdGltaXplZF9jcmMgPSB0cnVlCiAgIGVsc2UKIAorICAgIGF2eDUxMl9jcmNf cHJvZyA9ICcnJworI2luY2x1ZGUgPGltbWludHJpbi5oPgorI2luY2x1ZGUgPHN0ZGludC5o PgorI2lmIGRlZmluZWQoX19oYXNfYXR0cmlidXRlKSAmJiBfX2hhc19hdHRyaWJ1dGUgKHRh cmdldCkKK19fYXR0cmlidXRlX18oKHRhcmdldCgiYXZ4NTEydmwsdnBjbG11bHFkcSIpKSkK KyNlbmRpZgoraW50IG1haW4odm9pZCkKK3sKKyAgICAgIF9fbTUxMmkgeDAgPSBfbW01MTJf c2V0MV9lcGkzMigweDEpOworICAgICAgX19tNTEyaSB4MSA9IF9tbTUxMl9zZXQxX2VwaTMy KDB4Mik7CisgICAgICBfX201MTJpIHgyID0gX21tNTEyX2NsbXVsZXBpNjRfZXBpMTI4KHgx LCB4MCwgMHgwMCk7IC8vIHZwY2xtdWxxZHEKKyAgICAgIF9fbTEyOGkgYTEgPSBfbW1feG9y X2VwaTY0KF9tbTUxMl9jYXN0c2k1MTJfc2kxMjgoeDEpLCBfbW01MTJfY2FzdHNpNTEyX3Np MTI4KHgwKSk7IC8vYXZ4NTEydmwKKyAgICAgIGludDY0X3QgdmFsID0gX21tX2NyYzMyX3U2 NCgwLCBfbW1fZXh0cmFjdF9lcGk2NChhMSwgMCkpOyAvLyA2NC1iaXQgaW5zdHJ1Y3Rpb24K KyAgICAgIHJldHVybiAodWludDMyX3QpX21tX2NyYzMyX3U2NCh2YWwsIF9tbV9leHRyYWN0 X2VwaTY0KGExLCAxKSk7Cit9CisnJycKKwogICAgIHByb2cgPSAnJycKICNpbmNsdWRlIDxu bW1pbnRyaW4uaD4KIApAQCAtMjI1Miw2ICsyMjY5LDEyIEBAIGludCBtYWluKHZvaWQpCiAg ICAgICBjZGF0YS5zZXQoJ1VTRV9TU0U0Ml9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLJywg MSkKICAgICAgIGhhdmVfb3B0aW1pemVkX2NyYyA9IHRydWUKICAgICBlbmRpZgorICAgIGlm IGNjLmxpbmtzKGF2eDUxMl9jcmNfcHJvZywKKyAgICAgICAgbmFtZTogJ0FWWDUxMiBDUkMz MkMgd2l0aCBmdW5jdGlvbiBhdHRyaWJ1dGVzJywKKyAgICAgICAgYXJnczogdGVzdF9jX2Fy Z3MpCisgICAgICBjZGF0YS5zZXQoJ1VTRV9BVlg1MTJfQ1JDMzJDX1dJVEhfUlVOVElNRV9D SEVDSycsIDEpCisgICAgICBoYXZlX29wdGltaXplZF9jcmMgPSB0cnVlCisgICAgZW5kaWYK IAogICBlbmRpZgogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiBi L3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCmluZGV4IDA3YjJmNzk4YWIuLmRiNDBlNjQ3 NmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCisrKyBiL3NyYy9p bmNsdWRlL3BnX2NvbmZpZy5oLmluCkBAIC02OTcsNiArNjk3LDkgQEAKIC8qIERlZmluZSB0 byAxIHRvIHVzZSBJbnRlbCBTU0UgNC4yIENSQyBpbnN0cnVjdGlvbnMgd2l0aCBhIHJ1bnRp bWUgY2hlY2suICovCiAjdW5kZWYgVVNFX1NTRTQyX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hF Q0sKIAorLyogRGVmaW5lIHRvIDEgdG8gdXNlIEludGVsIEFWWC01MTIgQ1JDIGluc3RydWN0 aW9ucyB3aXRoIGEgcnVudGltZSBjaGVjay4gKi8KKyN1bmRlZiBVU0VfQVZYNTEyX0NSQzMy Q19XSVRIX1JVTlRJTUVfQ0hFQ0sKKwogLyogRGVmaW5lIHRvIGJ1aWxkIHdpdGggc3lzdGVt ZCBzdXBwb3J0LiAoLS13aXRoLXN5c3RlbWQpICovCiAjdW5kZWYgVVNFX1NZU1RFTUQKIApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdfY3B1LmggYi9zcmMvaW5jbHVkZS9wZ19jcHUu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yMjM5OTRjYjBkCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvcGdfY3B1LmgKQEAgLTAsMCArMSwyMyBA QAorLyoKKyAqIHBnX2NwdS5oCisgKiAgICAgIFVzZWZ1bCBtYWNyb3MgdG8gZGV0ZXJtaW5l IENQVSB0eXBlcworICovCisKKyNpZm5kZWYgUEdfQ1BVX0hfCisjZGVmaW5lIFBHX0NQVV9I XworI2lmIGRlZmluZWQoIF9faTM4Nl9fICkgfHwgZGVmaW5lZChpMzg2KSB8fCBkZWZpbmVk KF9NX0lYODYpCisgICAgLyoKKyAgICAgKiBfX2kzODZfXyBpcyBkZWZpbmVkIGJ5IGdjYyBh bmQgSW50ZWwgY29tcGlsZXIgb24gTGludXgsCisgICAgICogX01fSVg4NiBieSBWUyBjb21w aWxlciwKKyAgICAgKiBpMzg2IGJ5IFN1biBjb21waWxlcnMgb24gb3BlbnNvbGFyaXMgYXQg bGVhc3QKKyAgICAgKi8KKyAgICAjZGVmaW5lIFBHX0NQVV9YODYKKyNlbGlmIGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FtZDY0X18pIHx8IGRlZmluZWQoX194ODZfNjQp IHx8IGRlZmluZWQoX01fQU1ENjQpCisgICAgLyoKKyAgICAgKiBib3RoIF9feDg2XzY0X18g YW5kIF9fYW1kNjRfXyBhcmUgZGVmaW5lZCBieSBnY2MKKyAgICAgKiBfX3g4Nl82NCBkZWZp bmVkIGJ5IHN1biBjb21waWxlciBvbiBvcGVuc29sYXJpcyBhdCBsZWFzdAorICAgICAqIF9N X0FNRDY0IGRlZmluZWQgYnkgTVMgY29tcGlsZXIKKyAgICAgKi8KKyAgICAjZGVmaW5lIFBH X0NQVV94ODZfNjQKKyNlbmRpZgorI2VuZGlmIC8vIFBHX0NQVV9IXwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcG9ydC9wZ19jcmMzMmMuaCBiL3NyYy9pbmNsdWRlL3BvcnQvcGdfY3Jj MzJjLmgKaW5kZXggNjNjOGUzYTAwYi4uNjkwMjczNTA2YiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcG9ydC9wZ19jcmMzMmMuaAorKysgYi9zcmMvaW5jbHVkZS9wb3J0L3BnX2NyYzMy Yy5oCkBAIC0zNCw1OCArMzQsNDMgQEAKICNkZWZpbmUgUEdfQ1JDMzJDX0gKIAogI2luY2x1 ZGUgInBvcnQvcGdfYnN3YXAuaCIKKyNpbmNsdWRlICJwZ19jcHUuaCIKIAogdHlwZWRlZiB1 aW50MzIgcGdfY3JjMzJjOwogCiAvKiBUaGUgSU5JVCBhbmQgRVEgbWFjcm9zIGFyZSB0aGUg c2FtZSBmb3IgYWxsIGltcGxlbWVudGF0aW9ucy4gKi8KICNkZWZpbmUgSU5JVF9DUkMzMkMo Y3JjKSAoKGNyYykgPSAweEZGRkZGRkZGKQogI2RlZmluZSBFUV9DUkMzMkMoYzEsIGMyKSAo KGMxKSA9PSAoYzIpKQotCi0jaWYgZGVmaW5lZChVU0VfU1NFNDJfQ1JDMzJDKQotLyogVXNl IEludGVsIFNTRTQuMiBpbnN0cnVjdGlvbnMuICovCi0jZGVmaW5lIENPTVBfQ1JDMzJDKGNy YywgZGF0YSwgbGVuKSBcCi0JKChjcmMpID0gcGdfY29tcF9jcmMzMmNfc3NlNDIoKGNyYyks IChkYXRhKSwgKGxlbikpKQogI2RlZmluZSBGSU5fQ1JDMzJDKGNyYykgKChjcmMpIF49IDB4 RkZGRkZGRkYpCiAKKy8qIHg4NiAqLworI2lmIGRlZmluZWQoUEdfQ1BVX1g4NikgfHwgZGVm aW5lZChQR19DUFVfeDg2XzY0KQorZXh0ZXJuIHBnX2NyYzMyYyBwZ19jb21wX2NyYzMyY19z YjgocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbik7CiBleHRl cm4gcGdfY3JjMzJjIHBnX2NvbXBfY3JjMzJjX3NzZTQyKHBnX2NyYzMyYyBjcmMsIGNvbnN0 IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOworZXh0ZXJuIHBnX2NyYzMyYyBwZ19jb21wX2Ny YzMyY19hdng1MTIocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxl bik7CitleHRlcm4gcGdfY3JjMzJjICgqcGdfY29tcF9jcmMzMmMpIChwZ19jcmMzMmMgY3Jj LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKKyNkZWZpbmUgQ09NUF9DUkMzMkMo Y3JjLCBkYXRhLCBsZW4pIFwKKwkoKGNyYykgPSBwZ19jb21wX2NyYzMyYygoY3JjKSwgKGRh dGEpLCAobGVuKSkpCiAKKy8qIEFSTVY4ICovCiAjZWxpZiBkZWZpbmVkKFVTRV9BUk1WOF9D UkMzMkMpCi0vKiBVc2UgQVJNdjggQ1JDIEV4dGVuc2lvbiBpbnN0cnVjdGlvbnMuICovCi0K K2V4dGVybiBwZ19jcmMzMmMgcGdfY29tcF9jcmMzMmNfYXJtdjgocGdfY3JjMzJjIGNyYywg Y29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbik7CiAjZGVmaW5lIENPTVBfQ1JDMzJDKGNy YywgZGF0YSwgbGVuKQkJCQkJCQlcCiAJKChjcmMpID0gcGdfY29tcF9jcmMzMmNfYXJtdjgo KGNyYyksIChkYXRhKSwgKGxlbikpKQotI2RlZmluZSBGSU5fQ1JDMzJDKGNyYykgKChjcmMp IF49IDB4RkZGRkZGRkYpCiAKKy8qIEFSTVY4IHdpdGggcnVudGltZSBjaGVjayAqLworI2Vs aWYgZGVmaW5lZChVU0VfQVJNVjhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSykKK2V4dGVy biBwZ19jcmMzMmMgcGdfY29tcF9jcmMzMmNfc2I4KHBnX2NyYzMyYyBjcmMsIGNvbnN0IHZv aWQgKmRhdGEsIHNpemVfdCBsZW4pOwogZXh0ZXJuIHBnX2NyYzMyYyBwZ19jb21wX2NyYzMy Y19hcm12OChwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsK K2V4dGVybiBwZ19jcmMzMmMgKCpwZ19jb21wX2NyYzMyYykgKHBnX2NyYzMyYyBjcmMsIGNv bnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOworI2RlZmluZSBDT01QX0NSQzMyQyhjcmMs IGRhdGEsIGxlbikgXAorCSgoY3JjKSA9IHBnX2NvbXBfY3JjMzJjKChjcmMpLCAoZGF0YSks IChsZW4pKSkKIAorLyogTG9vbmdBcmNoICovCiAjZWxpZiBkZWZpbmVkKFVTRV9MT09OR0FS Q0hfQ1JDMzJDKQotLyogVXNlIExvb25nQXJjaCBDUkNDIGluc3RydWN0aW9ucy4gKi8KLQor ZXh0ZXJuIHBnX2NyYzMyYyBwZ19jb21wX2NyYzMyY19sb29uZ2FyY2gocGdfY3JjMzJjIGNy YywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbik7CiAjZGVmaW5lIENPTVBfQ1JDMzJD KGNyYywgZGF0YSwgbGVuKQkJCQkJCQlcCiAJKChjcmMpID0gcGdfY29tcF9jcmMzMmNfbG9v bmdhcmNoKChjcmMpLCAoZGF0YSksIChsZW4pKSkKLSNkZWZpbmUgRklOX0NSQzMyQyhjcmMp ICgoY3JjKSBePSAweEZGRkZGRkZGKQotCi1leHRlcm4gcGdfY3JjMzJjIHBnX2NvbXBfY3Jj MzJjX2xvb25nYXJjaChwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qg bGVuKTsKLQotI2VsaWYgZGVmaW5lZChVU0VfU1NFNDJfQ1JDMzJDX1dJVEhfUlVOVElNRV9D SEVDSykgfHwgZGVmaW5lZChVU0VfQVJNVjhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSykK LQotLyoKLSAqIFVzZSBJbnRlbCBTU0UgNC4yIG9yIEFSTXY4IGluc3RydWN0aW9ucywgYnV0 IHBlcmZvcm0gYSBydW50aW1lIGNoZWNrIGZpcnN0Ci0gKiB0byBjaGVjayB0aGF0IHRoZXkg YXJlIGF2YWlsYWJsZS4KLSAqLwotI2RlZmluZSBDT01QX0NSQzMyQyhjcmMsIGRhdGEsIGxl bikgXAotCSgoY3JjKSA9IHBnX2NvbXBfY3JjMzJjKChjcmMpLCAoZGF0YSksIChsZW4pKSkK LSNkZWZpbmUgRklOX0NSQzMyQyhjcmMpICgoY3JjKSBePSAweEZGRkZGRkZGKQotCi1leHRl cm4gcGdfY3JjMzJjIHBnX2NvbXBfY3JjMzJjX3NiOChwZ19jcmMzMmMgY3JjLCBjb25zdCB2 b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKLWV4dGVybiBwZ19jcmMzMmMgKCpwZ19jb21wX2Ny YzMyYykgKHBnX2NyYzMyYyBjcmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOwot Ci0jaWZkZWYgVVNFX1NTRTQyX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0sKLWV4dGVybiBw Z19jcmMzMmMgcGdfY29tcF9jcmMzMmNfc3NlNDIocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9p ZCAqZGF0YSwgc2l6ZV90IGxlbik7Ci0jZW5kaWYKLSNpZmRlZiBVU0VfQVJNVjhfQ1JDMzJD X1dJVEhfUlVOVElNRV9DSEVDSwotZXh0ZXJuIHBnX2NyYzMyYyBwZ19jb21wX2NyYzMyY19h cm12OChwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKLSNl bmRpZgogCiAjZWxzZQogLyoKQEAgLTk4LDEzICs4MywxMSBAQCBleHRlcm4gcGdfY3JjMzJj IHBnX2NvbXBfY3JjMzJjX2FybXY4KHBnX2NyYzMyYyBjcmMsIGNvbnN0IHZvaWQgKmRhdGEs IHNpemVfdCBsZQogI2RlZmluZSBDT01QX0NSQzMyQyhjcmMsIGRhdGEsIGxlbikgXAogCSgo Y3JjKSA9IHBnX2NvbXBfY3JjMzJjX3NiOCgoY3JjKSwgKGRhdGEpLCAobGVuKSkpCiAjaWZk ZWYgV09SRFNfQklHRU5ESUFOCisjdW5kZWYgRklOX0NSQzMyQwogI2RlZmluZSBGSU5fQ1JD MzJDKGNyYykgKChjcmMpID0gcGdfYnN3YXAzMihjcmMpIF4gMHhGRkZGRkZGRikKLSNlbHNl Ci0jZGVmaW5lIEZJTl9DUkMzMkMoY3JjKSAoKGNyYykgXj0gMHhGRkZGRkZGRikKICNlbmRp ZgogCiBleHRlcm4gcGdfY3JjMzJjIHBnX2NvbXBfY3JjMzJjX3NiOChwZ19jcmMzMmMgY3Jj LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKLQogI2VuZGlmCiAKICNlbmRpZgkJ CQkJCQkvKiBQR19DUkMzMkNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9ydC9w Z19od19mZWF0X2NoZWNrLmggYi9zcmMvaW5jbHVkZS9wb3J0L3BnX2h3X2ZlYXRfY2hlY2su aAppbmRleCA1OGJlOTAwYjU0Li4zYTczMDE0OTg3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9wb3J0L3BnX2h3X2ZlYXRfY2hlY2suaAorKysgYi9zcmMvaW5jbHVkZS9wb3J0L3BnX2h3 X2ZlYXRfY2hlY2suaApAQCAtMzAsNCArMzAsMTAgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJv b2wgcGdfcG9wY291bnRfYXZhaWxhYmxlKHZvaWQpOwogICogYXZhaWxhYmxlLgogICovCiBl eHRlcm4gUEdETExJTVBPUlQgYm9vbCBwZ19wb3Bjb3VudF9hdng1MTJfYXZhaWxhYmxlKHZv aWQpOworCisvKgorICogVGVzdCB0byBzZWUgaWYgYWxsIGhhcmR3YXJlIGZlYXR1cmVzIHJl cXVpcmVkIGJ5IHRoZSBBVlgtNTEyIFNJTUQKKyAqIGFsZ29yaXRobSBhcmUgYXZhaWxhYmxl LgorICovCitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBwZ19jcmMzMmNfYXZ4NTEyX2F2YWls YWJsZSh2b2lkKTsKICNlbmRpZgkJCQkJCQkvKiBQR19IV19GRUFUX0NIRUNLX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9wb3J0L21lc29uLmJ1aWxkIGIvc3JjL3BvcnQvbWVzb24uYnVpbGQK aW5kZXggZWMyODU5MDQ3My4uMGJhNGE1NjE5NCAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvbWVz b24uYnVpbGQKKysrIGIvc3JjL3BvcnQvbWVzb24uYnVpbGQKQEAgLTgsOCArOCwxMCBAQCBw Z3BvcnRfc291cmNlcyA9IFsKICAgJ3BhdGguYycsCiAgICdwZ19iaXR1dGlscy5jJywKICAg J3BnX3BvcGNvdW50X2F2eDUxMi5jJywKLSAgJ3BnX2NyYzMyY19zc2U0Ml9jaG9vc2UuYycs CisgICdwZ19jcmMzMmNfeDg2X2Nob29zZS5jJywKKyAgJ3BnX2NyYzMyY19hdng1MTIuYycs CiAgICdwZ19jcmMzMmNfc3NlNDIuYycsCisgICdwZ19jcmMzMmNfc2I4LmMnLAogICAncGdf aHdfZmVhdF9jaGVjay5jJywKICAgJ3BnX3N0cm9uZ19yYW5kb20uYycsCiAgICdwZ2NoZWNr ZGlyLmMnLApAQCAtODMsMTIgKzg1LDYgQEAgZW5kaWYKICMgUmVwbGFjZW1lbnQgZnVuY3Rp b25hbGl0eSB0byBiZSBidWlsdCBpZiBjb3JyZXNwb25kaW5nIGNvbmZpZ3VyZSBzeW1ib2wK ICMgaXMgdHJ1ZQogcmVwbGFjZV9mdW5jc19wb3MgPSBbCi0gICMgeDg2L3g2NAotICBbJ3Bn X2NyYzMyY19zc2U0MicsICdVU0VfU1NFNDJfQ1JDMzJDJ10sCi0gIFsncGdfY3JjMzJjX3Nz ZTQyJywgJ1VTRV9TU0U0Ml9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLJ10sCi0gIFsncGdf Y3JjMzJjX3NzZTQyX2Nob29zZScsICdVU0VfU1NFNDJfQ1JDMzJDX1dJVEhfUlVOVElNRV9D SEVDSyddLAotICBbJ3BnX2NyYzMyY19zYjgnLCAnVVNFX1NTRTQyX0NSQzMyQ19XSVRIX1JV TlRJTUVfQ0hFQ0snXSwKLQogICAjIGFybSAvIGFhcmNoNjQKICAgWydwZ19jcmMzMmNfYXJt djgnLCAnVVNFX0FSTVY4X0NSQzMyQyddLAogICBbJ3BnX2NyYzMyY19hcm12OCcsICdVU0Vf QVJNVjhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSycsICdjcmMnXSwKZGlmZiAtLWdpdCBh L3NyYy9wb3J0L3BnX2NyYzMyY19hdng1MTIuYyBiL3NyYy9wb3J0L3BnX2NyYzMyY19hdng1 MTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iYTRkZWZjZWZk Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3BvcnQvcGdfY3JjMzJjX2F2eDUxMi5jCkBAIC0w LDAgKzEsMjAzIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19jcmMzMmNf YXZ4NTEyLmMKKyAqCSAgQ29tcHV0ZSBDUkMtMzJDIGNoZWNrc3VtIHVzaW5nIEludGVsIEFW WC01MTIgaW5zdHJ1Y3Rpb25zLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 Ni0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENh bGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvcG9ydC9wZ19jcmMz MmNfYXZ4NTEyLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVk ZSAiYy5oIgorCisjaWYgZGVmaW5lZChVU0VfQVZYNTEyX0NSQzMyQ19XSVRIX1JVTlRJTUVf Q0hFQ0spCisKKyNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KKworI2luY2x1ZGUgInBvcnQvcGdf Y3JjMzJjLmgiCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHBnX2NyYzMyY19hdng1MTIoKTog Y29tcHV0ZSB0aGUgY3JjMzJjIG9mIHRoZSBidWZmZXIsIHdoZXJlIHRoZQorICogYnVmZmVy IGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0IDI1NiwgYW5kIGEgbXVsdGlwbGUgb2YgNjQuIEJh c2VkCisgKiBvbjoKKyAqCisgKiAiRmFzdCBDUkMgQ29tcHV0YXRpb24gZm9yIEdlbmVyaWMg UG9seW5vbWlhbHMgVXNpbmcgUENMTVVMUURRCisgKiBJbnN0cnVjdGlvbiIKKyAqICBWLiBH b3BhbCwgRS4gT3p0dXJrLCBldCBhbC4sIDIwMDkKKyAqCisgKiBGb3IgVGhpcyBGdW5jdGlv bjoKKyAqIENvcHlyaWdodCAyMDE1IFRoZSBDaHJvbWl1bSBBdXRob3JzCisgKgorICogUmVk aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgKiBS ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5 IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAqIE5laXRoZXIgdGhlIG5hbWUg b2YgR29vZ2xlIExMQyBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K KyAqLworCisKK3BnX2F0dHJpYnV0ZV9ub19zYW5pdGl6ZV9hbGlnbm1lbnQoKQorcGdfYXR0 cmlidXRlX3RhcmdldCgiYXZ4NTEydmwsdnBjbG11bHFkcSIpCitpbmxpbmUgcGdfY3JjMzJj CitwZ19jb21wX2NyYzMyY19hdng1MTIocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAqZGF0 YSwgc2l6ZV90IGxlbmd0aCkKK3sKKwlzdGF0aWMgY29uc3QgdWludDY0IGsxazJbOF0gPSB7 CisJCTB4ZGNiMTdhYTQsIDB4YjllMDJiODYsIDB4ZGNiMTdhYTQsIDB4YjllMDJiODYsIDB4 ZGNiMTdhYTQsCisJCTB4YjllMDJiODYsIDB4ZGNiMTdhYTQsIDB4YjllMDJiODZ9OworCXN0 YXRpYyBjb25zdCB1aW50NjQgazNrNFs4XSA9IHsKKwkJMHg3NDBlZWYwMiwgMHg5ZTRhZGRm OCwgMHg3NDBlZWYwMiwgMHg5ZTRhZGRmOCwgMHg3NDBlZWYwMiwKKwkJMHg5ZTRhZGRmOCwg MHg3NDBlZWYwMiwgMHg5ZTRhZGRmOH07CisJc3RhdGljIGNvbnN0IHVpbnQ2NCBrOWsxMFs4 XSA9IHsKKwkJMHg2OTkyY2VhMiwgMHgwZDNiNjA5MiwgMHg2OTkyY2VhMiwgMHgwZDNiNjA5 MiwgMHg2OTkyY2VhMiwKKwkJMHgwZDNiNjA5MiwgMHg2OTkyY2VhMiwgMHgwZDNiNjA5Mn07 CisJc3RhdGljIGNvbnN0IHVpbnQ2NCBrMWs0WzhdID0geworCQkweDFjMjkxZDA0LCAweGRk YzAxNTJiLCAweDNkYTZkMGNiLCAweGJhNGZjMjhlLCAweGYyMGMwZGZlLAorCQkweDQ5M2M3 ZDI3LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwfTsKKworCWNvbnN0IHVpbnQ4ICppbnB1dCA9 IChjb25zdCB1aW50OCAqKWRhdGE7CisJaWYgKGxlbmd0aCA+PSAyNTYpCisJeworCQl1aW50 NjQgdmFsOworCQlfX201MTJpIHgwLCB4MSwgeDIsIHgzLCB4NCwgeDUsIHg2LCB4NywgeDgs IHk1LCB5NiwgeTcsIHk4OworCQlfX20xMjhpIGExLCBhMjsKKworCQkvKgorCQkgKiBBVlgt NTEyIE9wdGltaXplZCBjcmMzMmMgYWxnb3JpdGhtIHdpdGggbWltaW11bSBvZiAyNTYgYnl0 ZXMgYWxpZ25lZAorCQkgKiB0byAzMiBieXRlcy4KKwkJICogPj4+IEJFR0lOCisJCSAqLwor CisJCS8qCisJCSogVGhlcmUncyBhdCBsZWFzdCBvbmUgYmxvY2sgb2YgMjU2LgorCQkqLwor CQl4MSA9IF9tbTUxMl9sb2FkdV9zaTUxMigoX19tNTEyaSAqKShpbnB1dCArIDB4MDApKTsK KwkJeDIgPSBfbW01MTJfbG9hZHVfc2k1MTIoKF9fbTUxMmkgKikoaW5wdXQgKyAweDQwKSk7 CisJCXgzID0gX21tNTEyX2xvYWR1X3NpNTEyKChfX201MTJpICopKGlucHV0ICsgMHg4MCkp OworCQl4NCA9IF9tbTUxMl9sb2FkdV9zaTUxMigoX19tNTEyaSAqKShpbnB1dCArIDB4QzAp KTsKKworCQl4MSA9IF9tbTUxMl94b3Jfc2k1MTIoeDEsIF9tbTUxMl9jYXN0c2kxMjhfc2k1 MTIoX21tX2N2dHNpMzJfc2kxMjgoY3JjKSkpOworCisJCXgwID0gX21tNTEyX2xvYWRfc2k1 MTIoKF9fbTUxMmkgKilrMWsyKTsKKworCQlpbnB1dCArPSAyNTY7CisJCWxlbmd0aCAtPSAy NTY7CisKKwkJLyoKKwkJKiBQYXJhbGxlbCBmb2xkIGJsb2NrcyBvZiAyNTYsIGlmIGFueS4K KwkJKi8KKwkJd2hpbGUgKGxlbmd0aCA+PSAyNTYpCisJCXsKKwkJCXg1ID0gX21tNTEyX2Ns bXVsZXBpNjRfZXBpMTI4KHgxLCB4MCwgMHgwMCk7CisJCQl4NiA9IF9tbTUxMl9jbG11bGVw aTY0X2VwaTEyOCh4MiwgeDAsIDB4MDApOworCQkJeDcgPSBfbW01MTJfY2xtdWxlcGk2NF9l cGkxMjgoeDMsIHgwLCAweDAwKTsKKwkJCXg4ID0gX21tNTEyX2NsbXVsZXBpNjRfZXBpMTI4 KHg0LCB4MCwgMHgwMCk7CisKKwkJCXgxID0gX21tNTEyX2NsbXVsZXBpNjRfZXBpMTI4KHgx LCB4MCwgMHgxMSk7CisJCQl4MiA9IF9tbTUxMl9jbG11bGVwaTY0X2VwaTEyOCh4MiwgeDAs IDB4MTEpOworCQkJeDMgPSBfbW01MTJfY2xtdWxlcGk2NF9lcGkxMjgoeDMsIHgwLCAweDEx KTsKKwkJCXg0ID0gX21tNTEyX2NsbXVsZXBpNjRfZXBpMTI4KHg0LCB4MCwgMHgxMSk7CisK KwkJCXk1ID0gX21tNTEyX2xvYWR1X3NpNTEyKChfX201MTJpICopKGlucHV0ICsgMHgwMCkp OworCQkJeTYgPSBfbW01MTJfbG9hZHVfc2k1MTIoKF9fbTUxMmkgKikoaW5wdXQgKyAweDQw KSk7CisJCQl5NyA9IF9tbTUxMl9sb2FkdV9zaTUxMigoX19tNTEyaSAqKShpbnB1dCArIDB4 ODApKTsKKwkJCXk4ID0gX21tNTEyX2xvYWR1X3NpNTEyKChfX201MTJpICopKGlucHV0ICsg MHhDMCkpOworCisJCQl4MSA9IF9tbTUxMl90ZXJuYXJ5bG9naWNfZXBpNjQoeDEsIHg1LCB5 NSwgMHg5Nik7CisJCQl4MiA9IF9tbTUxMl90ZXJuYXJ5bG9naWNfZXBpNjQoeDIsIHg2LCB5 NiwgMHg5Nik7CisJCQl4MyA9IF9tbTUxMl90ZXJuYXJ5bG9naWNfZXBpNjQoeDMsIHg3LCB5 NywgMHg5Nik7CisJCQl4NCA9IF9tbTUxMl90ZXJuYXJ5bG9naWNfZXBpNjQoeDQsIHg4LCB5 OCwgMHg5Nik7CisKKwkJCWlucHV0ICs9IDI1NjsKKwkJCWxlbmd0aCAtPSAyNTY7CisJCQkJ fQorCisJCS8qCisJCSAqIEZvbGQgMjU2IGJ5dGVzIGludG8gNjQgYnl0ZXMuCisJCSAqLwor CQl4MCA9IF9tbTUxMl9sb2FkX3NpNTEyKChfX201MTJpICopazlrMTApOworCQl4NSA9IF9t bTUxMl9jbG11bGVwaTY0X2VwaTEyOCh4MSwgeDAsIDB4MDApOworCQl4NiA9IF9tbTUxMl9j bG11bGVwaTY0X2VwaTEyOCh4MSwgeDAsIDB4MTEpOworCQl4MyA9IF9tbTUxMl90ZXJuYXJ5 bG9naWNfZXBpNjQoeDMsIHg1LCB4NiwgMHg5Nik7CisKKwkJeDcgPSBfbW01MTJfY2xtdWxl cGk2NF9lcGkxMjgoeDIsIHgwLCAweDAwKTsKKwkJeDggPSBfbW01MTJfY2xtdWxlcGk2NF9l cGkxMjgoeDIsIHgwLCAweDExKTsKKwkJeDQgPSBfbW01MTJfdGVybmFyeWxvZ2ljX2VwaTY0 KHg0LCB4NywgeDgsIDB4OTYpOworCisJCXgwID0gX21tNTEyX2xvYWRfc2k1MTIoKF9fbTUx MmkgKilrM2s0KTsKKwkJeTUgPSBfbW01MTJfY2xtdWxlcGk2NF9lcGkxMjgoeDMsIHgwLCAw eDAwKTsKKwkJeTYgPSBfbW01MTJfY2xtdWxlcGk2NF9lcGkxMjgoeDMsIHgwLCAweDExKTsK KwkJeDEgPSBfbW01MTJfdGVybmFyeWxvZ2ljX2VwaTY0KHg0LCB5NSwgeTYsIDB4OTYpOwor CisJCS8qCisJCSAqIFNpbmdsZSBmb2xkIGJsb2NrcyBvZiA2NCwgaWYgYW55LgorCQkgKi8K KwkJd2hpbGUgKGxlbmd0aCA+PSA2NCkKKwkJeworCQkJeDIgPSBfbW01MTJfbG9hZHVfc2k1 MTIoKF9fbTUxMmkgKilpbnB1dCk7CisKKwkJCXg1ID0gX21tNTEyX2NsbXVsZXBpNjRfZXBp MTI4KHgxLCB4MCwgMHgwMCk7CisJCQl4MSA9IF9tbTUxMl9jbG11bGVwaTY0X2VwaTEyOCh4 MSwgeDAsIDB4MTEpOworCQkJeDEgPSBfbW01MTJfdGVybmFyeWxvZ2ljX2VwaTY0KHgxLCB4 MiwgeDUsIDB4OTYpOworCisJCQlpbnB1dCArPSA2NDsKKwkJCWxlbmd0aCAtPSA2NDsKKwkJ fQorCisJCS8qCisJCSAqIEZvbGQgNTEyLWJpdHMgdG8gMTI4LWJpdHMuCisJCSAqLworCQl4 MCA9IF9tbTUxMl9sb2FkdV9zaTUxMigoX19tNTEyaSAqKWsxazQpOworCisJCWEyID0gX21t NTEyX2V4dHJhY3RpMzJ4NF9lcGkzMih4MSwgMyk7CisJCXg1ID0gX21tNTEyX2NsbXVsZXBp NjRfZXBpMTI4KHgxLCB4MCwgMHgwMCk7CisJCXgxID0gX21tNTEyX2NsbXVsZXBpNjRfZXBp MTI4KHgxLCB4MCwgMHgxMSk7CisJCXgxID0gX21tNTEyX3Rlcm5hcnlsb2dpY19lcGk2NCh4 MSwgeDUsIF9tbTUxMl9jYXN0c2kxMjhfc2k1MTIoYTIpLCAweDk2KTsKKworCQl4MCA9IF9t bTUxMl9zaHVmZmxlX2k2NHgyKHgxLCB4MSwgMHg0RSk7CisJCXgwID0gX21tNTEyX3hvcl9l cGk2NCh4MSwgeDApOworCQlhMSA9IF9tbTUxMl9leHRyYWN0aTMyeDRfZXBpMzIoeDAsIDEp OworCQlhMSA9IF9tbV94b3JfZXBpNjQoYTEsIF9tbTUxMl9jYXN0c2k1MTJfc2kxMjgoeDAp KTsKKworCQkvKgorCQkgKiBGb2xkIDEyOC1iaXRzIHRvIDMyLWJpdHMuCisJCSAqLworCQl2 YWwgPSBfbW1fY3JjMzJfdTY0KDAsIF9tbV9leHRyYWN0X2VwaTY0KGExLCAwKSk7CisJCWNy YyA9ICh1aW50MzJfdClfbW1fY3JjMzJfdTY0KHZhbCwgX21tX2V4dHJhY3RfZXBpNjQoYTEs IDEpKTsKKwkJLyoKKwkJICogQVZYLTUxMiBPcHRpbWl6ZWQgY3JjMzJjIGFsZ29yaXRobSB3 aXRoIG1pbWltdW0gb2YgMjU2IGJ5dGVzIGFsaWduZWQKKwkJICogdG8gMzIgYnl0ZXMuCisJ CSAqIDw8PCBFTkQKKwkJICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwl9CisKKwkvKgorCSAqIEZpbmlzaCBh bnkgcmVtYWluaW5nIGJ5dGVzIHdpdGggbGVnYWN5IEFWWCBhbGdvcml0aG0uCisJICovCisJ cmV0dXJuIHBnX2NvbXBfY3JjMzJjX3NzZTQyKGNyYywgaW5wdXQsIGxlbmd0aCk7Cit9Cisj ZW5kaWYgLy8gQVZYNTEyX0NSQzMyCmRpZmYgLS1naXQgYS9zcmMvcG9ydC9wZ19jcmMzMmNf c3NlNDIuYyBiL3NyYy9wb3J0L3BnX2NyYzMyY19zc2U0Mi5jCmluZGV4IGRjYzQ5MDRhODIu LjkwZDE1NWU4MDQgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L3BnX2NyYzMyY19zc2U0Mi5jCisr KyBiL3NyYy9wb3J0L3BnX2NyYzMyY19zc2U0Mi5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKi8K ICNpbmNsdWRlICJjLmgiCiAKKyNpZiBkZWZpbmVkKFVTRV9TU0U0Ml9DUkMzMkMpIHx8IGRl ZmluZWQoVVNFX1NTRTQyX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0spCiAjaW5jbHVkZSA8 bm1taW50cmluLmg+CiAKICNpbmNsdWRlICJwb3J0L3BnX2NyYzMyYy5oIgpAQCAtNjgsMyAr NjksNCBAQCBwZ19jb21wX2NyYzMyY19zc2U0MihwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lk ICpkYXRhLCBzaXplX3QgbGVuKQogCiAJcmV0dXJuIGNyYzsKIH0KKyNlbmRpZgpkaWZmIC0t Z2l0IGEvc3JjL3BvcnQvcGdfY3JjMzJjX3NzZTQyX2Nob29zZS5jIGIvc3JjL3BvcnQvcGdf Y3JjMzJjX3NzZTQyX2Nob29zZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj NjU5OTE3YWYwLi4wMDAwMDAwMDAwCi0tLSBhL3NyYy9wb3J0L3BnX2NyYzMyY19zc2U0Ml9j aG9vc2UuYworKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQotICoKLSAqIHBnX2NyYzMyY19zc2U0Ml9jaG9vc2UuYwotICoJICBDaG9vc2Ug YmV0d2VlbiBJbnRlbCBTU0UgNC4yIGFuZCBzb2Z0d2FyZSBDUkMtMzJDIGltcGxlbWVudGF0 aW9uLgotICoKLSAqIE9uIGZpcnN0IGNhbGwsIGNoZWNrcyBpZiB0aGUgQ1BVIHdlJ3JlIHJ1 bm5pbmcgb24gc3VwcG9ydHMgSW50ZWwgU1NFCi0gKiA0LjIuIElmIGl0IGRvZXMsIHVzZSB0 aGUgc3BlY2lhbCBTU0UgaW5zdHJ1Y3Rpb25zIGZvciBDUkMtMzJDCi0gKiBjb21wdXRhdGlv bi4gT3RoZXJ3aXNlLCBmYWxsIGJhY2sgdG8gdGhlIHB1cmUgc29mdHdhcmUgaW1wbGVtZW50 YXRpb24KLSAqIChzbGljaW5nLWJ5LTgpLgotICoKLSAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5Ni0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAotICog UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5 IG9mIENhbGlmb3JuaWEKLSAqCi0gKgotICogSURFTlRJRklDQVRJT04KLSAqCSAgc3JjL3Bv cnQvcGdfY3JjMzJjX3NzZTQyX2Nob29zZS5jCi0gKgotICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0gKi8KLQotI2luY2x1ZGUgImMuaCIKLQotI2lmIGRlZmluZWQoVVNFX1NTRTQyX0NSQzMy Q19XSVRIX1JVTlRJTUVfQ0hFQ0spCi0jaWZkZWYgSEFWRV9fR0VUX0NQVUlECi0jaW5jbHVk ZSA8Y3B1aWQuaD4KLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9fQ1BVSUQKLSNpbmNsdWRlIDxp bnRyaW4uaD4KLSNlbmRpZgotCi0jaW5jbHVkZSAicG9ydC9wZ19jcmMzMmMuaCIKLSNpbmNs dWRlICJwb3J0L3BnX2h3X2ZlYXRfY2hlY2suaCIKLQotLyoKLSAqIFRoaXMgZ2V0cyBjYWxs ZWQgb24gdGhlIGZpcnN0IGNhbGwuIEl0IHJlcGxhY2VzIHRoZSBmdW5jdGlvbiBwb2ludGVy Ci0gKiBzbyB0aGF0IHN1YnNlcXVlbnQgY2FsbHMgYXJlIHJvdXRlZCBkaXJlY3RseSB0byB0 aGUgY2hvc2VuIGltcGxlbWVudGF0aW9uLgotICovCi1zdGF0aWMgcGdfY3JjMzJjCi1wZ19j b21wX2NyYzMyY19jaG9vc2UocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6 ZV90IGxlbikKLXsKLQlpZiAocGdfY3JjMzJjX3NzZTQyX2F2YWlsYWJsZSgpKQotCQlwZ19j b21wX2NyYzMyYyA9IHBnX2NvbXBfY3JjMzJjX3NzZTQyOwotCWVsc2UKLQkJcGdfY29tcF9j cmMzMmMgPSBwZ19jb21wX2NyYzMyY19zYjg7Ci0KLQlyZXR1cm4gcGdfY29tcF9jcmMzMmMo Y3JjLCBkYXRhLCBsZW4pOwotfQotCi1wZ19jcmMzMmMgKCpwZ19jb21wX2NyYzMyYykgKHBn X2NyYzMyYyBjcmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pID0gcGdfY29tcF9j cmMzMmNfY2hvb3NlOwotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvcG9ydC9wZ19jcmMzMmNf eDg2X2Nob29zZS5jIGIvc3JjL3BvcnQvcGdfY3JjMzJjX3g4Nl9jaG9vc2UuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zY2U4YmUxMWE2Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3BvcnQvcGdfY3JjMzJjX3g4Nl9jaG9vc2UuYwpAQCAtMCwwICsxLDU3 IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19jcmMzMmNfeDg2X2Nob29z ZS5jCisgKgkgIENob29zZSBiZXR3ZWVuIEludGVsIEFWWC01MTIsIFNTRSA0LjIgYW5kIHNv ZnR3YXJlIENSQy0zMkMgaW1wbGVtZW50YXRpb24uCisgKgorICogT24gZmlyc3QgY2FsbCwg Y2hlY2tzIGlmIHRoZSBDUFUgd2UncmUgcnVubmluZyBvbiBzdXBwb3J0cyBJbnRlbCBBVlgt NTEyLiBJZgorICogaXQgZG9lcywgdXNlIHRoZSBzcGVjaWFsIFNTRSBpbnN0cnVjdGlvbnMg Zm9yIENSQy0zMkMgY29tcHV0YXRpb24uCisgKiBPdGhlcndpc2UsIGZhbGwgYmFjayB0byB0 aGUgcHVyZSBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbiAoc2xpY2luZy1ieS04KS4KKyAqCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVn ZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICoKKyAqIElERU5U SUZJQ0FUSU9OCisgKgkgIHNyYy9wb3J0L3BnX2NyYzMyY194ODZfY2hvb3NlLmMKKyAqCisg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAiYy5oIgorI2luY2x1ZGUg InBnX2NwdS5oIgorCisjaWYgZGVmaW5lZChQR19DUFVfWDg2KSB8fCBkZWZpbmVkKFBHX0NQ VV94ODZfNjQpCisKKyNpbmNsdWRlICJwb3J0L3BnX2NyYzMyYy5oIgorI2luY2x1ZGUgInBv cnQvcGdfaHdfZmVhdF9jaGVjay5oIgorCisvKgorICogVGhpcyBnZXRzIGNhbGxlZCBvbiB0 aGUgZmlyc3QgY2FsbC4gSXQgcmVwbGFjZXMgdGhlIGZ1bmN0aW9uIHBvaW50ZXIKKyAqIHNv IHRoYXQgc3Vic2VxdWVudCBjYWxscyBhcmUgcm91dGVkIGRpcmVjdGx5IHRvIHRoZSBjaG9z ZW4gaW1wbGVtZW50YXRpb24uCisgKiAoMSkgc2V0IHBnX2NvbXBfY3JjMzJjIHBvaW50ZXIg YW5kICgyKSByZXR1cm4gdGhlIGNvbXB1dGVkIGNyYyB2YWx1ZQorICovCitzdGF0aWMgcGdf Y3JjMzJjCitwZ19jb21wX2NyYzMyY19jaG9vc2UocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9p ZCAqZGF0YSwgc2l6ZV90IGxlbikKK3sKKyNpZmRlZiBVU0VfQVZYNTEyX0NSQzMyQ19XSVRI X1JVTlRJTUVfQ0hFQ0sKKwlpZiAocGdfY3JjMzJjX2F2eDUxMl9hdmFpbGFibGUoKSkgewor CQlwZ19jb21wX2NyYzMyYyA9IHBnX2NvbXBfY3JjMzJjX2F2eDUxMjsKKyAgICAgICAgICAg ICAgICByZXR1cm4gcGdfY29tcF9jcmMzMmMoY3JjLCBkYXRhLCBsZW4pOworICAgICAgICB9 CisjZW5kaWYKKyNpZmRlZiBVU0VfU1NFNDJfQ1JDMzJDCisgICAgICAgIHBnX2NvbXBfY3Jj MzJjID0gcGdfY29tcF9jcmMzMmNfc3NlNDI7CisgICAgICAgIHJldHVybiBwZ19jb21wX2Ny YzMyYyhjcmMsIGRhdGEsIGxlbik7CisjZWxpZiBVU0VfU1NFNDJfQ1JDMzJDX1dJVEhfUlVO VElNRV9DSEVDSworICAgICAgICBpZiAocGdfY3JjMzJjX3NzZTQyX2F2YWlsYWJsZSgpKSB7 CisgICAgICAgICAgICAgICAgcGdfY29tcF9jcmMzMmMgPSBwZ19jb21wX2NyYzMyY19zc2U0 MjsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGdfY29tcF9jcmMzMmMoY3JjLCBkYXRhLCBs ZW4pOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgcGdfY29tcF9jcmMzMmMgPSBwZ19j b21wX2NyYzMyY19zYjg7CisgICAgICAgIHJldHVybiBwZ19jb21wX2NyYzMyYyhjcmMsIGRh dGEsIGxlbik7Cit9CisKK3BnX2NyYzMyYyAoKnBnX2NvbXBfY3JjMzJjKSAocGdfY3JjMzJj IGNyYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbikgPSBwZ19jb21wX2NyYzMyY19j aG9vc2U7CisKKyNlbmRpZiAvLyB4ODYveDg2XzY0CmRpZmYgLS1naXQgYS9zcmMvcG9ydC9w Z19od19mZWF0X2NoZWNrLmMgYi9zcmMvcG9ydC9wZ19od19mZWF0X2NoZWNrLmMKaW5kZXgg MjYwYWE2MDUwMi4uYjI4NzJmYTcwOCAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvcGdfaHdfZmVh dF9jaGVjay5jCisrKyBiL3NyYy9wb3J0L3BnX2h3X2ZlYXRfY2hlY2suYwpAQCAtMTEsNiAr MTEsOSBAQAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KICNpbmNsdWRlICJjLmgiCisj aW5jbHVkZSAicGdfY3B1LmgiCisKKyNpZiBkZWZpbmVkKFBHX0NQVV9YODYpIHx8IGRlZmlu ZWQoUEdfQ1BVX3g4Nl82NCkKIAogI2lmIGRlZmluZWQoSEFWRV9fR0VUX0NQVUlEKSB8fCBk ZWZpbmVkKEhBVkVfX0dFVF9DUFVJRF9DT1VOVCkKICNpbmNsdWRlIDxjcHVpZC5oPgpAQCAt MTM1LDkgKzEzOCw2MCBAQCBib29sIFBHRExMSU1QT1JUIHBnX3BvcGNvdW50X2F2YWlsYWJs ZSh2b2lkKQogCXJldHVybiBpc19iaXRfc2V0X2luX2V4eChleHgsIEVDWCwgMjMpOwogIH0K IAorLyoKKyAqIENoZWNrIGZvciBDUFUgc3VwcHJ0IGZvciBDUFVJREVYOiBhdng1MTItZgor ICovCitpbmxpbmUgc3RhdGljIGJvb2wKK2F2eDUxMmZfYXZhaWxhYmxlKHZvaWQpCit7CisJ ZXh4X3QgZXh4WzRdID0gezAsIDAsIDAsIDB9OworCisJcGdfZ2V0Y3B1aWRleCg3LCAwLCBl eHgpOworCXJldHVybiBpc19iaXRfc2V0X2luX2V4eChleHgsIEVCWCwgMTYpOyAvKiBhdng1 MTItZiAqLworfQorCisvKgorICogQ2hlY2sgZm9yIENQVSBzdXBwcnQgZm9yIENQVUlERVg6 IHZwY2xtdWxxZHEKKyAqLworaW5saW5lIHN0YXRpYyBib29sCit2cGNsbXVscWRxX2F2YWls YWJsZSh2b2lkKQoreworCWV4eF90IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKKworCXBnX2dl dGNwdWlkZXgoNywgMCwgZXh4KTsKKwlyZXR1cm4gaXNfYml0X3NldF9pbl9leHgoZXh4LCBF Q1gsIDEwKTsgLyogdnBjbG11bHFkcSAqLworfQorCisvKgorICogQ2hlY2sgZm9yIENQVSBz dXBwcnQgZm9yIENQVUlERVg6IHZwY2xtdWxxZHEKKyAqLworaW5saW5lIHN0YXRpYyBib29s Cithdng1MTJ2bF9hdmFpbGFibGUodm9pZCkKK3sKKwlleHhfdCBleHhbNF0gPSB7MCwgMCwg MCwgMH07CisKKwlwZ19nZXRjcHVpZGV4KDcsIDAsIGV4eCk7CisJcmV0dXJuIGlzX2JpdF9z ZXRfaW5fZXh4KGV4eCwgRUJYLCAzMSk7IC8qIGF2eDUxMi12bCAqLworfQorCisvKgorICog Q2hlY2sgZm9yIENQVSBzdXBwcnQgZm9yIENQVUlEOiBzc2U0LjIKKyAqLworaW5saW5lIHN0 YXRpYyBib29sCitzc2U0Ml9hdmFpbGFibGUodm9pZCkKK3sKKwlleHhfdCBleHhbNF0gPSB7 MCwgMCwgMCwgMH07CisKKwlwZ19nZXRjcHVpZCgxLCBleHgpOworCXJldHVybiBpc19iaXRf c2V0X2luX2V4eChleHgsIEVDWCwgMjApOyAvKiBzc2U0LjIgKi8KK30KKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwogIC8qCi0gICogUmV0dXJucyB0cnVlIGlmIHRoZSBDUFUgc3VwcG9y dHMgdGhlIGluc3RydWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEFWWC01MTIKLSAgKiBwZ19w b3Bjb3VudCgpIGltcGxlbWVudGF0aW9uLgorICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgQ1BV IHN1cHBvcnRzIHRoZSBpbnN0cnVjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZQorICAqIEFWWC01 MTIgcGdfcG9wY291bnQoKSBpbXBsZW1lbnRhdGlvbi4KICAgKgogICAqIFBBOiBUaGUgY2Fs bCB0byAnb3N4c2F2ZV9hdmFpbGFibGUnIE1VU1QgcHJlY2VlZCB0aGUgY2FsbCB0bwogICAq ICAgICAnem1tX3JlZ3NfYXZhaWxhYmxlJyBmdW5jdGlvbiBwZXIgTkIgYWJvdmUuCkBAIC0x NTQsMTAgKzIwOCwxOSBAQCBib29sIFBHRExMSU1QT1JUIHBnX3BvcGNvdW50X2F2eDUxMl9h dmFpbGFibGUodm9pZCkKICAqLwogYm9vbCBQR0RMTElNUE9SVCBwZ19jcmMzMmNfc3NlNDJf YXZhaWxhYmxlKHZvaWQpCiB7Ci0JZXh4X3QgZXh4WzRdID0gezAsIDAsIDAsIDB9OwotCi0J cGdfZ2V0Y3B1aWQoMSwgZXh4KTsKKwlyZXR1cm4gc3NlNDJfYXZhaWxhYmxlKCk7Cit9CiAK LQlyZXR1cm4gaXNfYml0X3NldF9pbl9leHgoZXh4LCBFQ1gsIDIwKTsKKy8qCisgKiBSZXR1 cm5zIHRydWUgaWYgdGhlIENQVSBzdXBwb3J0cyB0aGUgaW5zdHJ1Y3Rpb25zIHJlcXVpcmVk IGZvciB0aGUgQVZYLTUxMgorICogcGdfY3JjMzJjIGltcGxlbWVudGF0aW9uLgorICovCiti b29sIFBHRExMSU1QT1JUCitwZ19jcmMzMmNfYXZ4NTEyX2F2YWlsYWJsZSh2b2lkKQorewor CXJldHVybiBzc2U0Ml9hdmFpbGFibGUoKSAmJiBvc3hzYXZlX2F2YWlsYWJsZSgpICYmCisJ CSAgIGF2eDUxMmZfYXZhaWxhYmxlKCkgJiYgdnBjbG11bHFkcV9hdmFpbGFibGUoKSAmJgor CQkgICBhdng1MTJ2bF9hdmFpbGFibGUoKSAmJiB6bW1fcmVnc19hdmFpbGFibGUoKTsKIH0K IAorI2VuZGlmIC8vICNpZiBkZWZpbmVkKFBHX0NQVV9YODYpIHx8IGRlZmluZWQoUEdfQ1BV X3g4Nl82NCkKLS0gCjIuMzQuMQoK --------------TC1EMrt04ioXLzZoZV6xN3sh Content-Type: text/plain; charset=UTF-8; name="v10-0004-Mark-pg_comp_crc32c-as-PGDLLIMPORT-for-Windows-b.patch" Content-Disposition: attachment; filename*0="v10-0004-Mark-pg_comp_crc32c-as-PGDLLIMPORT-for-Windows-b.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2ZThmNTU3Yzg1Nzc3MmIwYzIyNjA3ODY2ZDFiODkzMGE2N2RmMDVlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0aGV3IFN0ZXJyZXR0IDxtYXR0aGV3LnN0ZXJy ZXR0QGludGVsLmNvbT4KRGF0ZTogV2VkLCAxOCBEZWMgMjAyNCAxNDoxMTozMyAtMDgwMApT dWJqZWN0OiBbUEFUQ0ggdjEwIDQvNF0gTWFyayBwZ19jb21wX2NyYzMyYyBhcyBQR0RMTElN UE9SVCBmb3IgV2luZG93cyBidWlsZAoKLS0tCiBzcmMvaW5jbHVkZS9wb3J0L3BnX2NyYzMy Yy5oIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9ydC9wZ19jcmMzMmMuaCBiL3NyYy9p bmNsdWRlL3BvcnQvcGdfY3JjMzJjLmgKaW5kZXggNjkwMjczNTA2Yi4uNTM0ZDA3ZGQ1ZCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9ydC9wZ19jcmMzMmMuaAorKysgYi9zcmMvaW5j bHVkZS9wb3J0L3BnX2NyYzMyYy5oCkBAIC00OCw3ICs0OCw3IEBAIHR5cGVkZWYgdWludDMy IHBnX2NyYzMyYzsKIGV4dGVybiBwZ19jcmMzMmMgcGdfY29tcF9jcmMzMmNfc2I4KHBnX2Ny YzMyYyBjcmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOwogZXh0ZXJuIHBnX2Ny YzMyYyBwZ19jb21wX2NyYzMyY19zc2U0MihwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpk YXRhLCBzaXplX3QgbGVuKTsKIGV4dGVybiBwZ19jcmMzMmMgcGdfY29tcF9jcmMzMmNfYXZ4 NTEyKHBnX2NyYzMyYyBjcmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOwotZXh0 ZXJuIHBnX2NyYzMyYyAoKnBnX2NvbXBfY3JjMzJjKSAocGdfY3JjMzJjIGNyYywgY29uc3Qg dm9pZCAqZGF0YSwgc2l6ZV90IGxlbik7CitleHRlcm4gUEdETExJTVBPUlQgcGdfY3JjMzJj ICgqcGdfY29tcF9jcmMzMmMpIChwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBz aXplX3QgbGVuKTsKICNkZWZpbmUgQ09NUF9DUkMzMkMoY3JjLCBkYXRhLCBsZW4pIFwKIAko KGNyYykgPSBwZ19jb21wX2NyYzMyYygoY3JjKSwgKGRhdGEpLCAobGVuKSkpCiAKLS0gCjIu MzQuMQoK --------------TC1EMrt04ioXLzZoZV6xN3sh--