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 1mwGIf-0000H9-2z for pgsql-hackers@arkaria.postgresql.org; Sun, 12 Dec 2021 04:17:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mwGIb-0007GP-UX for pgsql-hackers@arkaria.postgresql.org; Sun, 12 Dec 2021 04:17:21 +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 1mwGIb-0007GG-6g for pgsql-hackers@lists.postgresql.org; Sun, 12 Dec 2021 04:17:21 +0000 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1mwGIV-000715-FM for pgsql-hackers@postgresql.org; Sun, 12 Dec 2021 04:17:20 +0000 Received: by mail-ed1-x535.google.com with SMTP id x15so42698060edv.1 for ; Sat, 11 Dec 2021 20:17:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=message-id:date:mime-version:user-agent:subject:content-language:to :cc:references:from:in-reply-to; bh=TBamV6/LLL4uIZy052RFsh732L6S9rmc29qUYhkstm0=; b=cjOjXtv6RzS4sFNPcnobwoXvFnS++O1zOi9epasWBizc1qWCsmsaveGIJ4TuRV2tVz aJp2+duQBFWrzeVu7H/utW4SeXEuDi6Fy5UCEmbeZI35WWqva2gc7rgjxRI3hl+D+Svu TTHQ965OJq2p+0BWv6xMO2031wuRFq58WnTltYKLXQNnLOdVR9DYByqJetOM87gToLMn u8JUtc9SpszTFTv7VeOy/58Mo1hq2hqOXcRXK4Y1ggWOvLbchhWg8eVEXZAJ7LzHHBGT 8JVp2yMPJ5/rdMDs1b2MgoG588BJ6s4VhSCCkQamMRNZASCHUGa9hd9/EvWV5vRjRECL LJ+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:in-reply-to; bh=TBamV6/LLL4uIZy052RFsh732L6S9rmc29qUYhkstm0=; b=hMqADFP9NUYSlYM5G7BNYhV3xdTKehUjm7dr+hLGpm9dlasVNokuIqwsSYd0RUSENk VsIzrO7acjUsbBvtpj9SovxIp3+flYeaf8Hwkp6fFKfTNSw2iA5OTOkUiIicFR8Oabps SQirk3swATjTnDK8oVypk6PBo2GLm5cVIBugjGgtA2msyGsYE0z64cHiTUZE5jkbZ+Tw 2s5m8P6cdMIemoILwBcCsbVKOjAOARn71Ho5HpLRnDFrDjdxKHbAs44EhVBF4rwx36UU 6TNocqcBNAS+3y3c3mBHX/ZUmr4fRklk6Caq0e4YwgE2o3QG+3qe+DHCGrcoYBiCKH44 uULQ== X-Gm-Message-State: AOAM531H+vnCuikLAXYV/Y/JMo11QbGpdTU5N9dli9o8vR1OgpG2CEiJ 0WBvdG+SBJVXVty612c4Vd6oE6Hge78KPECQgkG0NdZ0h5di/d7Dx2ZJDQTOc5oHkmLNUomS/qz kzoZLx0N2WU47J9zvV9fKcO21O3DPtBdaRH3iB76j5a2diPLZXFA9C0pCwgOyKDpe3IpbYOBvij ceIx1QEyN1KV9UxY3QeSUJLNmrjieynnUqwV7d90a5JPQI X-Google-Smtp-Source: ABdhPJyWq3ziObY721JrKLkVNK+vBCV+XWpE28AwE7Pa/vlTaniG8oqq+m46jSi2gQ3NvzKwhUJjiA== X-Received: by 2002:a17:906:7954:: with SMTP id l20mr33946711ejo.143.1639282632328; Sat, 11 Dec 2021 20:17:12 -0800 (PST) Received: from [10.137.0.19] (ip-86-49-251-241.net.upcbroadband.cz. [86.49.251.241]) by smtp.gmail.com with ESMTPSA id go17sm3814337ejc.76.2021.12.11.20.17.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 11 Dec 2021 20:17:11 -0800 (PST) Content-Type: multipart/mixed; boundary="------------Z0h5dcbvAVY37pTuKRhuxFdH" Message-ID: <8052505e-2dd2-e8cb-26c9-cbb5dff7d750@enterprisedb.com> Date: Sun, 12 Dec 2021 05:17:10 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Subject: Re: extended stats on partitioned tables Content-Language: en-US To: Zhihong Yu , Justin Pryzby Cc: Jaime Casanova , PostgreSQL-development References: <20210923212624.GI831@telsasoft.com> <20210925223152.GA7877@telsasoft.com> <20210926202550.GA831@telsasoft.com> <20211007202646.GA9522@ahch-to> <20211007224543.GH27491@telsasoft.com> <46f37069-55cb-db6a-a15a-e351a2606592@enterprisedb.com> <20211103231904.GP17618@telsasoft.com> <689accb1-76e8-5115-6ed0-336749cdca57@enterprisedb.com> <20211203052411.GU17618@telsasoft.com> From: Tomas Vondra In-Reply-To: X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 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. --------------Z0h5dcbvAVY37pTuKRhuxFdH Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, Attached is a rebased and cleaned-up version of these patches, with more comments, refactorings etc. Justin and Zhihong, can you take a look? 0001 - Ignore extended statistics for inheritance trees 0002 - Build inherited extended stats on partitioned tables Those are mostly just Justin's patches, with more detailed comments and updated commit message. I've considered moving the rel->inh check to statext_clauselist_selectivity, and then removing the check from dependencies and MCV. But I decided no to do that, because someone might be calling those functions directly (even if that's very unlikely). The one thing bugging me a bit is that the regression test checks only a GROUP BY query. It'd be nice to add queries testing MCV/dependencies too, but that seems tricky because most queries will use per-partitions stats. 0003 - Add stxdinherit flag to pg_statistic_ext_data This is the patch for master, allowing to build stats for both inherits flag values. It adds the flag to pg_stats_ext_exprs view to, reworked how we deal with iterating both flags etc. I've adopted most of the Justin's fixup patches, except that in plancat.c I've refactored how we load the stats to process keys/expressions just once. It has the same issue with regression test using just a GROUP BY query, but if we add a test to 0001/0002, that'll fix this too. 0004 - Refactor parent ACL check Not sure about this - I doubt saving 30 rows in an 8kB file is really worth it. Maybe it is, but then maybe we should try cleaning up the other ACL checks in this file too? Seems mostly orthogonal to this thread, though. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------Z0h5dcbvAVY37pTuKRhuxFdH Content-Type: text/x-patch; charset=UTF-8; name="0004-Refactor-parent-ACL-check-20211212.patch" Content-Disposition: attachment; filename="0004-Refactor-parent-ACL-check-20211212.patch" Content-Transfer-Encoding: base64 RnJvbSA1NjkwOTljNWQxNDUzNWE5NWNjMjE3OThjYjA0MWNhZTdlZWUwZTM2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogU3VuLCAxMiBEZWMgMjAyMSAwMjoyODo0MSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggNC80XSBSZWZhY3RvciBwYXJlbnQgQUNMIGNoZWNrCgpzZWxmdW5jcy5jIGlzIDhr IGxpbmVzIGxvbmcsIGFuZCB0aGlzIG1ha2VzIGl0IDMwIExPQyBzaG9ydGVyLgotLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jIHwgMTQwICsrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCA4OCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IDg4NmQ4NWI3 ZjMuLjlmNjU2MzE2YmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCkBAIC0xODcs NiArMTg3LDggQEAgc3RhdGljIGNoYXIgKmNvbnZlcnRfc3RyaW5nX2RhdHVtKERhdHVtIHZh bHVlLCBPaWQgdHlwaWQsIE9pZCBjb2xsaWQsCiAJCQkJCQkJCSAgYm9vbCAqZmFpbHVyZSk7 CiBzdGF0aWMgZG91YmxlIGNvbnZlcnRfdGltZXZhbHVlX3RvX3NjYWxhcihEYXR1bSB2YWx1 ZSwgT2lkIHR5cGlkLAogCQkJCQkJCQkJCSAgYm9vbCAqZmFpbHVyZSk7CitzdGF0aWMgdm9p ZCByZWNoZWNrX3BhcmVudF9hY2woUGxhbm5lckluZm8gKnJvb3QsIFZhcmlhYmxlU3RhdERh dGEgKnZhcmRhdGEsCisJCQkJCQkJCU9pZCByZWxpZCk7CiBzdGF0aWMgdm9pZCBleGFtaW5l X3NpbXBsZV92YXJpYWJsZShQbGFubmVySW5mbyAqcm9vdCwgVmFyICp2YXIsCiAJCQkJCQkJ CQlWYXJpYWJsZVN0YXREYXRhICp2YXJkYXRhKTsKIHN0YXRpYyBib29sIGdldF92YXJpYWJs ZV9yYW5nZShQbGFubmVySW5mbyAqcm9vdCwgVmFyaWFibGVTdGF0RGF0YSAqdmFyZGF0YSwK QEAgLTUxNTMsNTEgKzUxNTUsNyBAQCBleGFtaW5lX3ZhcmlhYmxlKFBsYW5uZXJJbmZvICpy b290LCBOb2RlICpub2RlLCBpbnQgdmFyUmVsaWQsCiAJCQkJCQkJCQkocGdfY2xhc3NfYWNs Y2hlY2socnRlLT5yZWxpZCwgdXNlcmlkLAogCQkJCQkJCQkJCQkJCSAgIEFDTF9TRUxFQ1Qp ID09IEFDTENIRUNLX09LKTsKIAotCQkJCQkJCQkvKgotCQkJCQkJCQkgKiBJZiB0aGUgdXNl ciBkb2Vzbid0IGhhdmUgcGVybWlzc2lvbnMgdG8KLQkJCQkJCQkJICogYWNjZXNzIGFuIGlu aGVyaXRhbmNlIGNoaWxkIHJlbGF0aW9uLCBjaGVjawotCQkJCQkJCQkgKiB0aGUgcGVybWlz c2lvbnMgb2YgdGhlIHRhYmxlIGFjdHVhbGx5Ci0JCQkJCQkJCSAqIG1lbnRpb25lZCBpbiB0 aGUgcXVlcnksIHNpbmNlIG1vc3QgbGlrZWx5Ci0JCQkJCQkJCSAqIHRoZSB1c2VyIGRvZXMg aGF2ZSB0aGF0IHBlcm1pc3Npb24uICBOb3RlCi0JCQkJCQkJCSAqIHRoYXQgd2hvbGUtdGFi bGUgc2VsZWN0IHByaXZpbGVnZSBvbiB0aGUKLQkJCQkJCQkJICogcGFyZW50IGRvZXNuJ3Qg cXVpdGUgZ3VhcmFudGVlIHRoYXQgdGhlCi0JCQkJCQkJCSAqIHVzZXIgY291bGQgcmVhZCBh bGwgY29sdW1ucyBvZiB0aGUgY2hpbGQuCi0JCQkJCQkJCSAqIEJ1dCBpbiBwcmFjdGljZSBp dCdzIHVubGlrZWx5IHRoYXQgYW55Ci0JCQkJCQkJCSAqIGludGVyZXN0aW5nIHNlY3VyaXR5 IHZpb2xhdGlvbiBjb3VsZCByZXN1bHQKLQkJCQkJCQkJICogZnJvbSBhbGxvd2luZyBhY2Nl c3MgdG8gdGhlIGV4cHJlc3Npb24KLQkJCQkJCQkJICogaW5kZXgncyBzdGF0cywgc28gd2Ug YWxsb3cgaXQgYW55d2F5LiAgU2VlCi0JCQkJCQkJCSAqIHNpbWlsYXIgY29kZSBpbiBleGFt aW5lX3NpbXBsZV92YXJpYWJsZSgpCi0JCQkJCQkJCSAqIGZvciBhZGRpdGlvbmFsIGNvbW1l bnRzLgotCQkJCQkJCQkgKi8KLQkJCQkJCQkJaWYgKCF2YXJkYXRhLT5hY2xfb2sgJiYKLQkJ CQkJCQkJCXJvb3QtPmFwcGVuZF9yZWxfYXJyYXkgIT0gTlVMTCkKLQkJCQkJCQkJewotCQkJ CQkJCQkJQXBwZW5kUmVsSW5mbyAqYXBwaW5mbzsKLQkJCQkJCQkJCUluZGV4CQl2YXJubyA9 IGluZGV4LT5yZWwtPnJlbGlkOwotCi0JCQkJCQkJCQlhcHBpbmZvID0gcm9vdC0+YXBwZW5k X3JlbF9hcnJheVt2YXJub107Ci0JCQkJCQkJCQl3aGlsZSAoYXBwaW5mbyAmJgotCQkJCQkJ CQkJCSAgIHBsYW5uZXJfcnRfZmV0Y2goYXBwaW5mby0+cGFyZW50X3JlbGlkLAotCQkJCQkJ CQkJCQkJCQkJcm9vdCktPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKQotCQkJCQkJCQkJewot CQkJCQkJCQkJCXZhcm5vID0gYXBwaW5mby0+cGFyZW50X3JlbGlkOwotCQkJCQkJCQkJCWFw cGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3Zhcm5vXTsKLQkJCQkJCQkJCX0KLQkJ CQkJCQkJCWlmICh2YXJubyAhPSBpbmRleC0+cmVsLT5yZWxpZCkKLQkJCQkJCQkJCXsKLQkJ CQkJCQkJCQkvKiBSZXBlYXQgYWNjZXNzIGNoZWNrIG9uIHRoaXMgcmVsICovCi0JCQkJCQkJ CQkJcnRlID0gcGxhbm5lcl9ydF9mZXRjaCh2YXJubywgcm9vdCk7Ci0JCQkJCQkJCQkJQXNz ZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOwotCi0JCQkJCQkJCQkJdXNlcmlk ID0gcnRlLT5jaGVja0FzVXNlciA/IHJ0ZS0+Y2hlY2tBc1VzZXIgOiBHZXRVc2VySWQoKTsK LQotCQkJCQkJCQkJCXZhcmRhdGEtPmFjbF9vayA9Ci0JCQkJCQkJCQkJCXJ0ZS0+c2VjdXJp dHlRdWFscyA9PSBOSUwgJiYKLQkJCQkJCQkJCQkJKHBnX2NsYXNzX2FjbGNoZWNrKHJ0ZS0+ cmVsaWQsCi0JCQkJCQkJCQkJCQkJCQkgICB1c2VyaWQsCi0JCQkJCQkJCQkJCQkJCQkgICBB Q0xfU0VMRUNUKSA9PSBBQ0xDSEVDS19PSyk7Ci0JCQkJCQkJCQl9Ci0JCQkJCQkJCX0KKwkJ CQkJCQkJcmVjaGVja19wYXJlbnRfYWNsKHJvb3QsIHZhcmRhdGEsIGluZGV4LT5yZWwtPnJl bGlkKTsKIAkJCQkJCQl9CiAJCQkJCQkJZWxzZQogCQkJCQkJCXsKQEAgLTUzMDIsNDkgKzUy NjAsNyBAQCBleGFtaW5lX3ZhcmlhYmxlKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpub2Rl LCBpbnQgdmFyUmVsaWQsCiAJCQkJCQkocGdfY2xhc3NfYWNsY2hlY2socnRlLT5yZWxpZCwg dXNlcmlkLAogCQkJCQkJCQkJCSAgIEFDTF9TRUxFQ1QpID09IEFDTENIRUNLX09LKTsKIAot CQkJCQkvKgotCQkJCQkgKiBJZiB0aGUgdXNlciBkb2Vzbid0IGhhdmUgcGVybWlzc2lvbnMg dG8gYWNjZXNzIGFuCi0JCQkJCSAqIGluaGVyaXRhbmNlIGNoaWxkIHJlbGF0aW9uLCBjaGVj ayB0aGUgcGVybWlzc2lvbnMgb2YKLQkJCQkJICogdGhlIHRhYmxlIGFjdHVhbGx5IG1lbnRp b25lZCBpbiB0aGUgcXVlcnksIHNpbmNlIG1vc3QKLQkJCQkJICogbGlrZWx5IHRoZSB1c2Vy IGRvZXMgaGF2ZSB0aGF0IHBlcm1pc3Npb24uICBOb3RlIHRoYXQKLQkJCQkJICogd2hvbGUt dGFibGUgc2VsZWN0IHByaXZpbGVnZSBvbiB0aGUgcGFyZW50IGRvZXNuJ3QKLQkJCQkJICog cXVpdGUgZ3VhcmFudGVlIHRoYXQgdGhlIHVzZXIgY291bGQgcmVhZCBhbGwgY29sdW1ucyBv ZgotCQkJCQkgKiB0aGUgY2hpbGQuIEJ1dCBpbiBwcmFjdGljZSBpdCdzIHVubGlrZWx5IHRo YXQgYW55Ci0JCQkJCSAqIGludGVyZXN0aW5nIHNlY3VyaXR5IHZpb2xhdGlvbiBjb3VsZCBy ZXN1bHQgZnJvbQotCQkJCQkgKiBhbGxvd2luZyBhY2Nlc3MgdG8gdGhlIGV4cHJlc3Npb24g c3RhdHMsIHNvIHdlIGFsbG93IGl0Ci0JCQkJCSAqIGFueXdheS4gIFNlZSBzaW1pbGFyIGNv ZGUgaW4gZXhhbWluZV9zaW1wbGVfdmFyaWFibGUoKQotCQkJCQkgKiBmb3IgYWRkaXRpb25h bCBjb21tZW50cy4KLQkJCQkJICovCi0JCQkJCWlmICghdmFyZGF0YS0+YWNsX29rICYmCi0J CQkJCQlyb290LT5hcHBlbmRfcmVsX2FycmF5ICE9IE5VTEwpCi0JCQkJCXsKLQkJCQkJCUFw cGVuZFJlbEluZm8gKmFwcGluZm87Ci0JCQkJCQlJbmRleAkJdmFybm8gPSBvbmVyZWwtPnJl bGlkOwotCi0JCQkJCQlhcHBpbmZvID0gcm9vdC0+YXBwZW5kX3JlbF9hcnJheVt2YXJub107 Ci0JCQkJCQl3aGlsZSAoYXBwaW5mbyAmJgotCQkJCQkJCSAgIHBsYW5uZXJfcnRfZmV0Y2go YXBwaW5mby0+cGFyZW50X3JlbGlkLAotCQkJCQkJCQkJCQkJcm9vdCktPnJ0ZWtpbmQgPT0g UlRFX1JFTEFUSU9OKQotCQkJCQkJewotCQkJCQkJCXZhcm5vID0gYXBwaW5mby0+cGFyZW50 X3JlbGlkOwotCQkJCQkJCWFwcGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3Zhcm5v XTsKLQkJCQkJCX0KLQkJCQkJCWlmICh2YXJubyAhPSBvbmVyZWwtPnJlbGlkKQotCQkJCQkJ ewotCQkJCQkJCS8qIFJlcGVhdCBhY2Nlc3MgY2hlY2sgb24gdGhpcyByZWwgKi8KLQkJCQkJ CQlydGUgPSBwbGFubmVyX3J0X2ZldGNoKHZhcm5vLCByb290KTsKLQkJCQkJCQlBc3NlcnQo cnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7Ci0KLQkJCQkJCQl1c2VyaWQgPSBydGUt PmNoZWNrQXNVc2VyID8gcnRlLT5jaGVja0FzVXNlciA6IEdldFVzZXJJZCgpOwotCi0JCQkJ CQkJdmFyZGF0YS0+YWNsX29rID0KLQkJCQkJCQkJcnRlLT5zZWN1cml0eVF1YWxzID09IE5J TCAmJgotCQkJCQkJCQkocGdfY2xhc3NfYWNsY2hlY2socnRlLT5yZWxpZCwKLQkJCQkJCQkJ CQkJCSAgIHVzZXJpZCwKLQkJCQkJCQkJCQkJCSAgIEFDTF9TRUxFQ1QpID09IEFDTENIRUNL X09LKTsKLQkJCQkJCX0KLQkJCQkJfQotCisJCQkJCXJlY2hlY2tfcGFyZW50X2FjbChyb290 LCB2YXJkYXRhLCBvbmVyZWwtPnJlbGlkKTsKIAkJCQkJYnJlYWs7CiAJCQkJfQogCkBAIC01 MzU0LDYgKzUyNzAsNTQgQEAgZXhhbWluZV92YXJpYWJsZShQbGFubmVySW5mbyAqcm9vdCwg Tm9kZSAqbm9kZSwgaW50IHZhclJlbGlkLAogCX0KIH0KIAorLyoKKyAqIElmIHRoZSB1c2Vy IGRvZXNuJ3QgaGF2ZSBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgYW4gaW5oZXJpdGFuY2UgY2hp bGQKKyAqIHJlbGF0aW9uLCBjaGVjayB0aGUgcGVybWlzc2lvbnMgb2YgdGhlIHRhYmxlIGFj dHVhbGx5IG1lbnRpb25lZCBpbiB0aGUKKyAqIHF1ZXJ5LCBzaW5jZSBtb3N0IGxpa2VseSB0 aGUgdXNlciBkb2VzIGhhdmUgdGhhdCBwZXJtaXNzaW9uLiAgTm90ZSB0aGF0CisgKiB3aG9s ZS10YWJsZSBzZWxlY3QgcHJpdmlsZWdlIG9uIHRoZSBwYXJlbnQgZG9lc24ndCBxdWl0ZSBn dWFyYW50ZWUgdGhhdCB0aGUKKyAqIHVzZXIgY291bGQgcmVhZCBhbGwgY29sdW1ucyBvZiB0 aGUgY2hpbGQuICBCdXQgaW4gcHJhY3RpY2UgaXQncyB1bmxpa2VseQorICogdGhhdCBhbnkg aW50ZXJlc3Rpbmcgc2VjdXJpdHkgdmlvbGF0aW9uIGNvdWxkIHJlc3VsdCBmcm9tIGFsbG93 aW5nIGFjY2VzcyB0bworICogdGhlIGV4cHJlc3Npb24gc3RhdHMsIHNvIHdlIGFsbG93IGl0 IGFueXdheS4gIFNlZSBzaW1pbGFyIGNvZGUgaW4KKyAqIGV4YW1pbmVfc2ltcGxlX3Zhcmlh YmxlKCkgZm9yIGFkZGl0aW9uYWwgY29tbWVudHMuCisgKi8KK3N0YXRpYyB2b2lkCityZWNo ZWNrX3BhcmVudF9hY2woUGxhbm5lckluZm8gKnJvb3QsIFZhcmlhYmxlU3RhdERhdGEgKnZh cmRhdGEsIE9pZCByZWxpZCkKK3sKKwlSYW5nZVRibEVudHJ5CSpydGU7CisJT2lkCQl1c2Vy aWQ7CisKKwlpZiAoIXZhcmRhdGEtPmFjbF9vayAmJgorCQlyb290LT5hcHBlbmRfcmVsX2Fy cmF5ICE9IE5VTEwpCisJeworCQlBcHBlbmRSZWxJbmZvICphcHBpbmZvOworCQlJbmRleAkJ dmFybm8gPSByZWxpZDsKKworCQlhcHBpbmZvID0gcm9vdC0+YXBwZW5kX3JlbF9hcnJheVt2 YXJub107CisJCXdoaWxlIChhcHBpbmZvICYmCisJCQkgICBwbGFubmVyX3J0X2ZldGNoKGFw cGluZm8tPnBhcmVudF9yZWxpZCwKKwkJCQkJCQkJcm9vdCktPnJ0ZWtpbmQgPT0gUlRFX1JF TEFUSU9OKQorCQl7CisJCQl2YXJubyA9IGFwcGluZm8tPnBhcmVudF9yZWxpZDsKKwkJCWFw cGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3Zhcm5vXTsKKwkJfQorCisJCWlmICh2 YXJubyAhPSByZWxpZCkKKwkJeworCQkJLyogUmVwZWF0IGFjY2VzcyBjaGVjayBvbiB0aGlz IHJlbCAqLworCQkJcnRlID0gcGxhbm5lcl9ydF9mZXRjaCh2YXJubywgcm9vdCk7CisJCQlB c3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7CisKKwkJCXVzZXJpZCA9IHJ0 ZS0+Y2hlY2tBc1VzZXIgPyBydGUtPmNoZWNrQXNVc2VyIDogR2V0VXNlcklkKCk7CisKKwkJ CXZhcmRhdGEtPmFjbF9vayA9CisJCQkJcnRlLT5zZWN1cml0eVF1YWxzID09IE5JTCAmJgor CQkJCShwZ19jbGFzc19hY2xjaGVjayhydGUtPnJlbGlkLAorCQkJCQkJCQkgICB1c2VyaWQs CisJCQkJCQkJCSAgIEFDTF9TRUxFQ1QpID09IEFDTENIRUNLX09LKTsKKwkJfQorCX0KK30K KwogLyoKICAqIGV4YW1pbmVfc2ltcGxlX3ZhcmlhYmxlCiAgKgkJSGFuZGxlIGEgc2ltcGxl IFZhciBmb3IgZXhhbWluZV92YXJpYWJsZQotLSAKMi4zMS4xCgo= --------------Z0h5dcbvAVY37pTuKRhuxFdH Content-Type: text/x-patch; charset=UTF-8; name="0003-Add-stxdinherit-flag-to-pg_statistic_ext_da-20211212.patch" Content-Disposition: attachment; filename*0="0003-Add-stxdinherit-flag-to-pg_statistic_ext_da-20211212.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0Yzc0YWNiYTA2MTQ4OGY1YzA5NTRjNDI0MGNhMjYzNjU5MWI5YzYxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogU3VuLCAxMiBEZWMgMjAyMSAwMDowNzoyNyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMy80XSBBZGQgc3R4ZGluaGVyaXQgZmxhZyB0byBwZ19zdGF0aXN0aWNfZXh0X2Rh dGEKClRoZSBzdXBwb3J0IGZvciBleHRlbmRlZCBzdGF0aXN0aWNzIG9uIGluaGVyaXRhbmNl IHRyZWVzIHdhcyBzb21ld2hhdApwcm9ibGVtYXRpYywgYmVjYXVzZSB0aGUgY2F0YWxvZyBw Z19zdGF0aXN0aWNfZXh0X2RhdGEgZGlkIG5vdCBoYXZlIGEKZmxhZyBpZGVudGlmeWluZyB3 aGV0aGVyIHRoZSBkYXRhIHdhcyBidWlsdCB3aXRoL3dpdGhvdXQgZGF0YSBmb3IgdGhlCmNo aWxkIHJlbGF0aW9ucy4KCkZvciBwYXJ0aXRpb25lZCB0YWJsZXMgd2UndmUgYmVlbiBhYmxl IHRvIHdvcmsgYXJvdW5kIHRoaXMgYmVjYXVzZSB0aGUKbm9uLWxlYWYgcmVsYXRpb25zIGNh bid0IGNvbnRhaW4gZGF0YSwgc28gdGhlcmUncyByZWFsbHkganVzdCBvbmUgc2V0IG9mCnN0 YXRpc3RpY3MgdG8gc3RvcmUuIEJ1dCBmb3IgcmVndWxhciBpbmhlcml0YW5jZSB0cmVlcyB3 ZSBoYWQgdG8gcGljaywKYW5kIHRoZXJlIG5vIGNsZWFyIHdpbm5lci4KClRoaXMgaW50cm9k dWNlcyB0aGUgcGdfc3RhdGlzdGljX2V4dF9kYXRhLnN0eGRpbmhlcml0IGZsYWcsIGFuYWxv Z291cyB0bwpwZ19zdGF0aXN0aWMuc3RhaW5oZXJpdCwgYW5kIG1vZGlmaWVzIGFuYWx5emUg dG8gYnVpbGQgc3RhdGlzdGljcyBmb3IKYm90aCBjYXNlcy4KClRoaXMgcmVsYXhlcyB0aGUg cmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHR3byBjYXRhbG9ncyAtIHVudGlsIG5vdyB3ZSd2 ZQpjcmVhdGVkIHRoZSBwZ19zdGF0aXN0aWNfZXh0X2RhdGEgb25lIHdoZW4gY3JlYXRpbmcg dGhlIHN0YXRpc3RpY3MsIGFuZAp0aGVuIG9ubHkgdXBkYXRlZCBpdCBsYXRlci4gVGhlcmUg d2FzIGFsd2F5cyAxOjEgcmVsYXRpb25zaGlwIGJldHdlZW4Kcm93cyBpbiB0aGUgdHdvIGNh dGFsb2dzLiBXaXRoIHRoaXMgY2hhbmdlIHdlIG5vIGxvbmdlciBpbnNlcnQgYW55IGRhdGEK cm93cyB3aGlsZSBjcmVhdGluZyBzdGF0aXN0aWNzLCBiZWNhdXNlIHdlIGRvbid0IGtub3cg d2hpY2ggZmxhZyB2YWx1ZQp0byBjcmVhdGUsIGFuZCBpdCBzZWVtIHdhc3RlZnVsIHRvIGlu aXRpYWxpemUgYm90aCBmb3IgZXZlcnkgcmVsYXRpb24uClRoZSB0aGVyZSBtYXkgYmUgMCwg MSBvciAyIGRhdGEgcm93cyBmb3IgZWFjaCBzdGF0aXN0aWNzIGRlZmluaXRpb24uCgpQYXRj aCBieSBtZSwgd2l0aCBleHRlbnNpdmUgaW1wcm92ZW1lbnRzIGFuZCBmaXhlcyBieSBKdXN0 aW4gUHJ5emJ5LgoKQXV0aG9yOiBUb21hcyBWb25kcmEsIEp1c3RpbiBQcnl6YnkKUmV2aWV3 ZWQtYnk6IFRvbWFzIFZvbmRyYSwgSnVzdGluIFByeXpieQpEaXNjdXNzaW9uOiBodHRwczov L3Bvc3Rnci5lcy9tLzIwMjEwOTIzMjEyNjI0LkdJODMxJTQwdGVsc2Fzb2Z0LmNvbQotLS0K IGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgfCAgMjMgKysr CiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgIHwgICAyICsK IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyAgICAgICAgICAgICAgfCAgMjggKy0t LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3RhdHNjbWRzLmMgICAgICAgICAgICB8ICA3MiAr KysrKy0tLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgICAgICAg IHwgMTQ3ICsrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdGF0aXN0aWNzL2Rl cGVuZGVuY2llcy5jICAgICAgIHwgIDIyICsrLQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9l eHRlbmRlZF9zdGF0cy5jICAgICB8ICA3NSArKysrKy0tLS0tCiBzcmMvYmFja2VuZC9zdGF0 aXN0aWNzL21jdi5jICAgICAgICAgICAgICAgIHwgICA5ICstCiBzcmMvYmFja2VuZC9zdGF0 aXN0aWNzL212ZGlzdGluY3QuYyAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC91dGls cy9hZHQvc2VsZnVuY3MuYyAgICAgICAgICAgIHwgIDM2ICsrKy0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9zeXNjYWNoZS5jICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3N0YXRpc3RpY19leHRfZGF0YS5oIHwgICA0ICstCiBzcmMvaW5jbHVkZS9j b21tYW5kcy9kZWZyZW0uaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvc3Rh dGlzdGljcy9zdGF0aXN0aWNzLmggICAgICAgICB8ICAxMSArLQogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQgICAgIHwgIDE4ICsrLQogc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3RhdHNfZXh0LnNxbCAgICAgICAgICB8ICAgNCArLQogMTggZmlsZXMgY2hhbmdl ZCwgMjUxIGluc2VydGlvbnMoKyksIDIxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s CmluZGV4IDAyNWRiOTg3NjMuLjlhYjJjYjUyYTcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC03 NTIxLDYgKzc1MjEsMTkgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJh dGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgIGNyZWF0 ZWQgd2l0aCA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3RhdGlzdGljcyI+PGNvbW1hbmQ+ Q1JFQVRFIFNUQVRJU1RJQ1M8L2NvbW1hbmQ+PC9saW5rPi4KICAgPC9wYXJhPgogCisgIDxw YXJhPgorICAgTm9ybWFsbHkgdGhlcmUgaXMgb25lIGVudHJ5LCB3aXRoIDxzdHJ1Y3RmaWVs ZD5zdHhkaW5oZXJpdDwvc3RydWN0ZmllbGQ+ID0KKyAgIDxsaXRlcmFsPmZhbHNlPC9saXRl cmFsPiwgZm9yIGVhY2ggc3RhdGlzdGljcyBvYmplY3QgdGhhdCBoYXMgYmVlbiBhbmFseXpl ZC4KKyAgIElmIHRoZSB0YWJsZSBoYXMgaW5oZXJpdGFuY2UgY2hpbGRyZW4sIGEgc2Vjb25k IGVudHJ5IHdpdGgKKyAgIDxzdHJ1Y3RmaWVsZD5zdHhkaW5oZXJpdDwvc3RydWN0ZmllbGQ+ ID0gPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4gaXMgYWxzbyBjcmVhdGVkLgorICAgVGhpcyBy b3cgcmVwcmVzZW50cyB0aGUgc3RhdGlzdGljcyBvYmplY3Qgb3ZlciB0aGUgaW5oZXJpdGFu Y2UgdHJlZSwgaS5lLiwKKyAgIHN0YXRpc3RpY3MgZm9yIHRoZSBkYXRhIHlvdSdkIHNlZSB3 aXRoCisgICA8bGl0ZXJhbD5TRUxFQ1QgKiBGUk9NIDxyZXBsYWNlYWJsZT50YWJsZTwvcmVw bGFjZWFibGU+KjwvbGl0ZXJhbD4sCisgICB3aGVyZWFzIHRoZSA8c3RydWN0ZmllbGQ+c3R4 ZGluaGVyaXQ8L3N0cnVjdGZpZWxkPiA9IDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiByb3cK KyAgIHJlcHJlc2VudHMgdGhlIHJlc3VsdHMgb2YKKyAgIDxsaXRlcmFsPlNFTEVDVCAqIEZS T00gT05MWSA8cmVwbGFjZWFibGU+dGFibGU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4uCisg IDwvcGFyYT4KKwogICA8cGFyYT4KICAgIExpa2UgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1w Zy1zdGF0aXN0aWMiPjxzdHJ1Y3RuYW1lPnBnX3N0YXRpc3RpYzwvc3RydWN0bmFtZT48L2xp bms+LAogICAgPHN0cnVjdG5hbWU+cGdfc3RhdGlzdGljX2V4dF9kYXRhPC9zdHJ1Y3RuYW1l PiBzaG91bGQgbm90IGJlCkBAIC03NTYwLDYgKzc1NzMsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8 cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVw bGFjZWFibGU+JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3R4ZGlu aGVyaXQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgSWYgdHJ1ZSwgdGhlIHN0YXRzIGluY2x1ZGUgaW5oZXJp dGFuY2UgY2hpbGQgY29sdW1ucywgbm90IGp1c3QgdGhlCisgICAgICAgdmFsdWVzIGluIHRo ZSBzcGVjaWZpZWQgcmVsYXRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jv dz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0Zmll bGQ+c3R4ZG5kaXN0aW5jdDwvc3RydWN0ZmllbGQ+IDx0eXBlPnBnX25kaXN0aW5jdDwvdHlw ZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA2MWI1MTVjZGI4 Li4zMTk2NTM3ODliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBA IC0yNjYsNiArMjY2LDcgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdHNfZXh0IFdJVEggKHNlY3Vy aXR5X2JhcnJpZXIpIEFTCiAgICAgICAgICAgICkgQVMgYXR0bmFtZXMsCiAgICAgICAgICAg IHBnX2dldF9zdGF0aXN0aWNzb2JqZGVmX2V4cHJlc3Npb25zKHMub2lkKSBhcyBleHBycywK ICAgICAgICAgICAgcy5zdHhraW5kIEFTIGtpbmRzLAorICAgICAgICAgICBzZC5zdHhkaW5o ZXJpdCBBUyBpbmhlcml0ZWQsCiAgICAgICAgICAgIHNkLnN0eGRuZGlzdGluY3QgQVMgbl9k aXN0aW5jdCwKICAgICAgICAgICAgc2Quc3R4ZGRlcGVuZGVuY2llcyBBUyBkZXBlbmRlbmNp ZXMsCiAgICAgICAgICAgIG0ubW9zdF9jb21tb25fdmFscywKQEAgLTI5OCw2ICsyOTksNyBA QCBDUkVBVEUgVklFVyBwZ19zdGF0c19leHRfZXhwcnMgV0lUSCAoc2VjdXJpdHlfYmFycmll cikgQVMKICAgICAgICAgICAgcy5zdHhuYW1lIEFTIHN0YXRpc3RpY3NfbmFtZSwKICAgICAg ICAgICAgcGdfZ2V0X3VzZXJieWlkKHMuc3R4b3duZXIpIEFTIHN0YXRpc3RpY3Nfb3duZXIs CiAgICAgICAgICAgIHN0YXQuZXhwciwKKyAgICAgICAgICAgc2Quc3R4ZGluaGVyaXQgQVMg aW5oZXJpdGVkLAogICAgICAgICAgICAoc3RhdC5hKS5zdGFudWxsZnJhYyBBUyBudWxsX2Zy YWMsCiAgICAgICAgICAgIChzdGF0LmEpLnN0YXdpZHRoIEFTIGF2Z193aWR0aCwKICAgICAg ICAgICAgKHN0YXQuYSkuc3RhZGlzdGluY3QgQVMgbl9kaXN0aW5jdCwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2FuYWx5emUuYwppbmRleCA1OGE4MmU0OTI5Li4zNDM2ZjA5ZDYzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvYW5hbHl6ZS5jCkBAIC01NDksNyArNTQ5LDYgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRp b24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAl7CiAJCU1lbW9yeUNvbnRleHQg Y29sX2NvbnRleHQsCiAJCQkJCW9sZF9jb250ZXh0OwotCQlib29sCQlidWlsZF9leHRfc3Rh dHM7CiAKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19BTkFMWVpF X1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0FOQUxZWkVfUEhBU0VfQ09NUFVURV9TVEFU Uyk7CkBAIC02MTMsMzAgKzYxMiw5IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJl bCwgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJdGhpc2RhdGEtPmF0dHJfY250LCB0 aGlzZGF0YS0+dmFjYXR0cnN0YXRzKTsKIAkJfQogCi0JCS8qCi0JCSAqIFNob3VsZCB3ZSBi dWlsZCBleHRlbmRlZCBzdGF0aXN0aWNzIGZvciB0aGlzIHJlbGF0aW9uPwotCQkgKgotCQkg KiBUaGUgZXh0ZW5kZWQgc3RhdGlzdGljcyBjYXRhbG9nIGRvZXMgbm90IGluY2x1ZGUgYW4g aW5oZXJpdGFuY2UKLQkJICogZmxhZywgc28gd2UgY2FuJ3Qgc3RvcmUgc3RhdGlzdGljcyBi dWlsdCBib3RoIHdpdGggYW5kIHdpdGhvdXQKLQkJICogZGF0YSBmcm9tIGNoaWxkIHJlbGF0 aW9ucy4gV2UgY2FuIHN0b3JlIGp1c3Qgb25lIHNldCBvZiBzdGF0aXN0aWNzCi0JCSAqIHBl ciByZWxhdGlvbi4gRm9yIHBsYWluIHJlbGF0aW9ucyB0aGF0J3MgZmluZSwgYnV0IGZvciBp bmhlcml0YW5jZQotCQkgKiB0cmVlcyB3ZSBoYXZlIHRvIHBpY2sgd2hldGhlciB0byBzdG9y ZSBzdGF0aXN0aWNzIGZvciBqdXN0IHRoZQotCQkgKiBvbmUgcmVsYXRpb24gb3IgdGhlIHdo b2xlIHRyZWUuIEZvciBwbGFpbiBpbmhlcml0YW5jZSB3ZSBzdG9yZQotCQkgKiB0aGUgKCFp bmgpIHZlcnNpb24sIG1vc3RseSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29u cy4KLQkJICogRm9yIHBhcnRpdGlvbmVkIHRhYmxlcyB0aGF0J3MgcG9pbnRsZXNzICh0aGUg bm9uLWxlYWYgdGFibGVzIGFyZQotCQkgKiBhbHdheXMgZW1wdHkpLCBzbyB3ZSBzdG9yZSBz dGF0cyByZXByZXNlbnRpbmcgdGhlIHdob2xlIHRyZWUuCi0JCSAqLwotCQlidWlsZF9leHRf c3RhdHMgPSAob25lcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05F RF9UQUJMRSkgPyBpbmggOiAoIWluaCk7Ci0KLQkJLyoKLQkJICogQnVpbGQgZXh0ZW5kZWQg c3RhdGlzdGljcyAoaWYgdGhlcmUgYXJlIGFueSkuCi0JCSAqCi0JCSAqIEZvciBub3cgd2Ug b25seSBidWlsZCBleHRlbmRlZCBzdGF0aXN0aWNzIG9uIGluZGl2aWR1YWwgcmVsYXRpb25z LAotCQkgKiBub3QgZm9yIHJlbGF0aW9ucyByZXByZXNlbnRpbmcgaW5oZXJpdGFuY2UgdHJl ZXMuCi0JCSAqLwotCQlpZiAoYnVpbGRfZXh0X3N0YXRzKQotCQkJQnVpbGRSZWxhdGlvbkV4 dFN0YXRpc3RpY3Mob25lcmVsLCB0b3RhbHJvd3MsIG51bXJvd3MsIHJvd3MsCi0JCQkJCQkJ CQkgICBhdHRyX2NudCwgdmFjYXR0cnN0YXRzKTsKKwkJLyogQnVpbGQgZXh0ZW5kZWQgc3Rh dGlzdGljcyAoaWYgdGhlcmUgYXJlIGFueSkuICovCisJCUJ1aWxkUmVsYXRpb25FeHRTdGF0 aXN0aWNzKG9uZXJlbCwgaW5oLCB0b3RhbHJvd3MsIG51bXJvd3MsIHJvd3MsCisJCQkJCQkJ CSAgIGF0dHJfY250LCB2YWNhdHRyc3RhdHMpOwogCX0KIAogCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oUFJPR1JFU1NfQU5BTFlaRV9QSEFTRSwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3N0YXRzY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Rh dHNjbWRzLmMKaW5kZXggOGYxNTUwZWM4MC4uMWZhMzllNmYyMSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3RhdHNjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc3RhdHNjbWRzLmMKQEAgLTc1LDEzICs3NSwxMCBAQCBDcmVhdGVTdGF0aXN0aWNzKENy ZWF0ZVN0YXRzU3RtdCAqc3RtdCkKIAlIZWFwVHVwbGUJaHR1cDsKIAlEYXR1bQkJdmFsdWVz W05hdHRzX3BnX3N0YXRpc3RpY19leHRdOwogCWJvb2wJCW51bGxzW05hdHRzX3BnX3N0YXRp c3RpY19leHRdOwotCURhdHVtCQlkYXRhdmFsdWVzW05hdHRzX3BnX3N0YXRpc3RpY19leHRf ZGF0YV07Ci0JYm9vbAkJZGF0YW51bGxzW05hdHRzX3BnX3N0YXRpc3RpY19leHRfZGF0YV07 CiAJaW50MnZlY3RvciAqc3R4a2V5czsKIAlMaXN0CSAgICpzdHhleHBycyA9IE5JTDsKIAlE YXR1bQkJZXhwcnNEYXR1bTsKIAlSZWxhdGlvbglzdGF0cmVsOwotCVJlbGF0aW9uCWRhdGFy ZWw7CiAJUmVsYXRpb24JcmVsID0gTlVMTDsKIAlPaWQJCQlyZWxpZDsKIAlPYmplY3RBZGRy ZXNzIHBhcmVudG9iamVjdCwKQEAgLTUxNCwyOCArNTExLDEwIEBAIENyZWF0ZVN0YXRpc3Rp Y3MoQ3JlYXRlU3RhdHNTdG10ICpzdG10KQogCXJlbGF0aW9uX2Nsb3NlKHN0YXRyZWwsIFJv d0V4Y2x1c2l2ZUxvY2spOwogCiAJLyoKLQkgKiBBbHNvIGJ1aWxkIHRoZSBwZ19zdGF0aXN0 aWNfZXh0X2RhdGEgdHVwbGUsIHRvIGhvbGQgdGhlIGFjdHVhbAotCSAqIHN0YXRpc3RpY3Mg ZGF0YS4KKwkgKiBXZSB1c2VkIHRvIGNyZWF0ZSB0aGUgcGdfc3RhdGlzdGljX2V4dF9kYXRh IHR1cGxlIHRvbywgYnV0IGl0J3Mgbm90IGNsZWFyCisJICogd2hhdCB2YWx1ZSBzaG91bGQg dGhlIHN0eGRpbmhlcml0IGZsYWcgaGF2ZSAoaXQgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBy ZWwKKwkgKiBpcyBwYXJ0aXRpb25lZCwgY29udGFpbnMgZGF0YSwgZXRjLikKIAkgKi8KLQlk YXRhcmVsID0gdGFibGVfb3BlbihTdGF0aXN0aWNFeHREYXRhUmVsYXRpb25JZCwgUm93RXhj bHVzaXZlTG9jayk7Ci0KLQltZW1zZXQoZGF0YXZhbHVlcywgMCwgc2l6ZW9mKGRhdGF2YWx1 ZXMpKTsKLQltZW1zZXQoZGF0YW51bGxzLCBmYWxzZSwgc2l6ZW9mKGRhdGFudWxscykpOwot Ci0JZGF0YXZhbHVlc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhvaWQgLSAxXSA9 IE9iamVjdElkR2V0RGF0dW0oc3RhdG9pZCk7Ci0KLQkvKiBubyBzdGF0aXN0aWNzIGJ1aWx0 IHlldCAqLwotCWRhdGFudWxsc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkbmRp c3RpbmN0IC0gMV0gPSB0cnVlOwotCWRhdGFudWxsc1tBbnVtX3BnX3N0YXRpc3RpY19leHRf ZGF0YV9zdHhkZGVwZW5kZW5jaWVzIC0gMV0gPSB0cnVlOwotCWRhdGFudWxsc1tBbnVtX3Bn X3N0YXRpc3RpY19leHRfZGF0YV9zdHhkbWN2IC0gMV0gPSB0cnVlOwotCWRhdGFudWxsc1tB bnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkZXhwciAtIDFdID0gdHJ1ZTsKLQotCS8q IGluc2VydCBpdCBpbnRvIHBnX3N0YXRpc3RpY19leHRfZGF0YSAqLwotCWh0dXAgPSBoZWFw X2Zvcm1fdHVwbGUoZGF0YXJlbC0+cmRfYXR0LCBkYXRhdmFsdWVzLCBkYXRhbnVsbHMpOwot CUNhdGFsb2dUdXBsZUluc2VydChkYXRhcmVsLCBodHVwKTsKLQloZWFwX2ZyZWV0dXBsZSho dHVwKTsKLQotCXJlbGF0aW9uX2Nsb3NlKGRhdGFyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwog CiAJSW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soU3RhdGlzdGljRXh0UmVsYXRpb25JZCwg c3RhdG9pZCwgMCk7CiAKQEAgLTcxNywzMiArNjk2LDQ5IEBAIEFsdGVyU3RhdGlzdGljcyhB bHRlclN0YXRzU3RtdCAqc3RtdCkKIH0KIAogLyoKLSAqIEd1dHMgb2Ygc3RhdGlzdGljcyBv YmplY3QgZGVsZXRpb24uCisgKiBEZWxldGUgZW50cnkgaW4gcGdfc3RhdGlzdGljX2V4dF9k YXRhIGNhdGFsb2cuIFdlIGRvbid0IGtub3cgaWYgdGhlIHJvdworICogZXhpc3RzLCBzbyBk b24ndCBlcnJvciBvdXQuCiAgKi8KIHZvaWQKLVJlbW92ZVN0YXRpc3RpY3NCeUlkKE9pZCBz dGF0c09pZCkKK1JlbW92ZVN0YXRpc3RpY3NEYXRhQnlJZChPaWQgc3RhdHNPaWQsIGJvb2wg aW5oKQogewogCVJlbGF0aW9uCXJlbGF0aW9uOwogCUhlYXBUdXBsZQl0dXA7Ci0JRm9ybV9w Z19zdGF0aXN0aWNfZXh0IHN0YXRleHQ7Ci0JT2lkCQkJcmVsaWQ7CiAKLQkvKgotCSAqIEZp cnN0IGRlbGV0ZSB0aGUgcGdfc3RhdGlzdGljX2V4dF9kYXRhIHR1cGxlIGhvbGRpbmcgdGhl IGFjdHVhbAotCSAqIHN0YXRpc3RpY2FsIGRhdGEuCi0JICovCiAJcmVsYXRpb24gPSB0YWJs ZV9vcGVuKFN0YXRpc3RpY0V4dERhdGFSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsK IAotCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShTVEFURVhUREFUQVNUWE9JRCwgT2JqZWN0SWRH ZXREYXR1bShzdGF0c09pZCkpOwotCi0JaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpIC8q IHNob3VsZCBub3QgaGFwcGVuICovCi0JCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciBzdGF0aXN0aWNzIGRhdGEgJXUiLCBzdGF0c09pZCk7CisJdHVwID0gU2VhcmNo U3lzQ2FjaGUyKFNUQVRFWFREQVRBU1RYT0lELCBPYmplY3RJZEdldERhdHVtKHN0YXRzT2lk KSwKKwkJCQkJCSAgQm9vbEdldERhdHVtKGluaCkpOwogCi0JQ2F0YWxvZ1R1cGxlRGVsZXRl KHJlbGF0aW9uLCAmdHVwLT50X3NlbGYpOworCS8qIFdlIGRvbid0IGtub3cgaWYgdGhlIGRh dGEgcm93IGZvciBpbmggdmFsdWUgZXhpc3RzLiAqLworCWlmIChIZWFwVHVwbGVJc1ZhbGlk KHR1cCkpCisJeworCQlDYXRhbG9nVHVwbGVEZWxldGUocmVsYXRpb24sICZ0dXAtPnRfc2Vs Zik7CiAKLQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7 CisJfQogCiAJdGFibGVfY2xvc2UocmVsYXRpb24sIFJvd0V4Y2x1c2l2ZUxvY2spOworfQor CisvKgorICogR3V0cyBvZiBzdGF0aXN0aWNzIG9iamVjdCBkZWxldGlvbi4KKyAqLwordm9p ZAorUmVtb3ZlU3RhdGlzdGljc0J5SWQoT2lkIHN0YXRzT2lkKQoreworCVJlbGF0aW9uCXJl bGF0aW9uOworCUhlYXBUdXBsZQl0dXA7CisJRm9ybV9wZ19zdGF0aXN0aWNfZXh0IHN0YXRl eHQ7CisJT2lkCQkJcmVsaWQ7CisKKwkvKgorCSAqIEZpcnN0IGRlbGV0ZSB0aGUgcGdfc3Rh dGlzdGljX2V4dF9kYXRhIHR1cGxlcyBob2xkaW5nIHRoZSBhY3R1YWwKKwkgKiBzdGF0aXN0 aWNhbCBkYXRhLiBUaGVyZSBtaWdodCBiZSBkYXRhIHdpdGgvd2l0aG91dCBpbmhlcml0YW5j ZSwgc28KKwkgKiBhdHRlbXB0IGRlbGV0aW5nIGJvdGguCisJICovCisJUmVtb3ZlU3RhdGlz dGljc0RhdGFCeUlkKHN0YXRzT2lkLCB0cnVlKTsKKwlSZW1vdmVTdGF0aXN0aWNzRGF0YUJ5 SWQoc3RhdHNPaWQsIGZhbHNlKTsKIAogCS8qCiAJICogRGVsZXRlIHRoZSBwZ19zdGF0aXN0 aWNfZXh0IHR1cGxlLiAgQWxzbyBzZW5kIG91dCBhIGNhY2hlIGludmFsIG9uIHRoZQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCmluZGV4IDU2NGEzOGExM2UuLjhiYTNh M2M1OWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAgLTMwLDYg KzMwLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0X2RhdGEuaCIKICNpbmNsdWRlICJm b3JlaWduL2Zkd2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5v ZGVzL21ha2VmdW5jcy5oIgpAQCAtMTI3Niw2ICsxMjc3LDg3IEBAIGdldF9yZWxhdGlvbl9j b25zdHJhaW50cyhQbGFubmVySW5mbyAqcm9vdCwKIAlyZXR1cm4gcmVzdWx0OwogfQogCisv KgorICogVHJ5IGxvYWRpbmcgZGF0YSBmb3IgdGhlIHN0YXRpc3RpY3Mgb2JqZWN0LgorICoK KyAqIFdlIGRvbid0IGtub3cgaWYgdGhlIGRhdGEgKHNwZWNpZmllZCBieSBzdGF0T2lkIGFu ZCBpbmggdmFsdWUpIGV4aXN0LgorICogVGhlIHJlc3VsdCBpcyBzdG9yZWQgaW4gc3RhaW5m b3MgbGlzdC4KKyAqLworc3RhdGljIHZvaWQKK2dldF9yZWxhdGlvbl9zdGF0aXN0aWNzX3dv cmtlcihMaXN0ICoqc3RhaW5mb3MsIFJlbE9wdEluZm8gKnJlbCwKKwkJCQkJCQkgICBPaWQg c3RhdE9pZCwgYm9vbCBpbmgsCisJCQkJCQkJICAgQml0bWFwc2V0ICprZXlzLCBMaXN0ICpl eHBycykKK3sKKwlGb3JtX3BnX3N0YXRpc3RpY19leHRfZGF0YSBkYXRhRm9ybTsKKwlIZWFw VHVwbGUJZHR1cDsKKworCWR0dXAgPSBTZWFyY2hTeXNDYWNoZTIoU1RBVEVYVERBVEFTVFhP SUQsCisJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHN0YXRPaWQpLCBCb29sR2V0RGF0dW0o aW5oKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGR0dXApKQorCQlyZXR1cm47CisKKwlk YXRhRm9ybSA9IChGb3JtX3BnX3N0YXRpc3RpY19leHRfZGF0YSkgR0VUU1RSVUNUKGR0dXAp OworCisJLyogYWRkIG9uZSBTdGF0aXN0aWNFeHRJbmZvIGZvciBlYWNoIGtpbmQgYnVpbHQg Ki8KKwlpZiAoc3RhdGV4dF9pc19raW5kX2J1aWx0KGR0dXAsIFNUQVRTX0VYVF9ORElTVElO Q1QpKQorCXsKKwkJU3RhdGlzdGljRXh0SW5mbyAqaW5mbyA9IG1ha2VOb2RlKFN0YXRpc3Rp Y0V4dEluZm8pOworCisJCWluZm8tPnN0YXRPaWQgPSBzdGF0T2lkOworCQlpbmZvLT5pbmhl cml0ID0gZGF0YUZvcm0tPnN0eGRpbmhlcml0OworCQlpbmZvLT5yZWwgPSByZWw7CisJCWlu Zm8tPmtpbmQgPSBTVEFUU19FWFRfTkRJU1RJTkNUOworCQlpbmZvLT5rZXlzID0gYm1zX2Nv cHkoa2V5cyk7CisJCWluZm8tPmV4cHJzID0gZXhwcnM7CisKKwkJKnN0YWluZm9zID0gbGFw cGVuZCgqc3RhaW5mb3MsIGluZm8pOworCX0KKworCWlmIChzdGF0ZXh0X2lzX2tpbmRfYnVp bHQoZHR1cCwgU1RBVFNfRVhUX0RFUEVOREVOQ0lFUykpCisJeworCQlTdGF0aXN0aWNFeHRJ bmZvICppbmZvID0gbWFrZU5vZGUoU3RhdGlzdGljRXh0SW5mbyk7CisKKwkJaW5mby0+c3Rh dE9pZCA9IHN0YXRPaWQ7CisJCWluZm8tPmluaGVyaXQgPSBkYXRhRm9ybS0+c3R4ZGluaGVy aXQ7CisJCWluZm8tPnJlbCA9IHJlbDsKKwkJaW5mby0+a2luZCA9IFNUQVRTX0VYVF9ERVBF TkRFTkNJRVM7CisJCWluZm8tPmtleXMgPSBibXNfY29weShrZXlzKTsKKwkJaW5mby0+ZXhw cnMgPSBleHByczsKKworCQkqc3RhaW5mb3MgPSBsYXBwZW5kKCpzdGFpbmZvcywgaW5mbyk7 CisJfQorCisJaWYgKHN0YXRleHRfaXNfa2luZF9idWlsdChkdHVwLCBTVEFUU19FWFRfTUNW KSkKKwl7CisJCVN0YXRpc3RpY0V4dEluZm8gKmluZm8gPSBtYWtlTm9kZShTdGF0aXN0aWNF eHRJbmZvKTsKKworCQlpbmZvLT5zdGF0T2lkID0gc3RhdE9pZDsKKwkJaW5mby0+aW5oZXJp dCA9IGRhdGFGb3JtLT5zdHhkaW5oZXJpdDsKKwkJaW5mby0+cmVsID0gcmVsOworCQlpbmZv LT5raW5kID0gU1RBVFNfRVhUX01DVjsKKwkJaW5mby0+a2V5cyA9IGJtc19jb3B5KGtleXMp OworCQlpbmZvLT5leHBycyA9IGV4cHJzOworCisJCSpzdGFpbmZvcyA9IGxhcHBlbmQoKnN0 YWluZm9zLCBpbmZvKTsKKwl9CisKKwlpZiAoc3RhdGV4dF9pc19raW5kX2J1aWx0KGR0dXAs IFNUQVRTX0VYVF9FWFBSRVNTSU9OUykpCisJeworCQlTdGF0aXN0aWNFeHRJbmZvICppbmZv ID0gbWFrZU5vZGUoU3RhdGlzdGljRXh0SW5mbyk7CisKKwkJaW5mby0+c3RhdE9pZCA9IHN0 YXRPaWQ7CisJCWluZm8tPmluaGVyaXQgPSBkYXRhRm9ybS0+c3R4ZGluaGVyaXQ7CisJCWlu Zm8tPnJlbCA9IHJlbDsKKwkJaW5mby0+a2luZCA9IFNUQVRTX0VYVF9FWFBSRVNTSU9OUzsK KwkJaW5mby0+a2V5cyA9IGJtc19jb3B5KGtleXMpOworCQlpbmZvLT5leHBycyA9IGV4cHJz OworCisJCSpzdGFpbmZvcyA9IGxhcHBlbmQoKnN0YWluZm9zLCBpbmZvKTsKKwl9CisKKwlS ZWxlYXNlU3lzQ2FjaGUoZHR1cCk7Cit9CisKIC8qCiAgKiBnZXRfcmVsYXRpb25fc3RhdGlz dGljcwogICoJCVJldHJpZXZlIGV4dGVuZGVkIHN0YXRpc3RpY3MgZGVmaW5lZCBvbiB0aGUg dGFibGUuCkBAIC0xMjk5LDcgKzEzODEsNiBAQCBnZXRfcmVsYXRpb25fc3RhdGlzdGljcyhS ZWxPcHRJbmZvICpyZWwsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQlPaWQJCQlzdGF0T2lkID0g bGZpcnN0X29pZChsKTsKIAkJRm9ybV9wZ19zdGF0aXN0aWNfZXh0IHN0YUZvcm07CiAJCUhl YXBUdXBsZQlodHVwOwotCQlIZWFwVHVwbGUJZHR1cDsKIAkJQml0bWFwc2V0ICAqa2V5cyA9 IE5VTEw7CiAJCUxpc3QJICAgKmV4cHJzID0gTklMOwogCQlpbnQJCQlpOwpAQCAtMTMwOSwx MCArMTM5MCw2IEBAIGdldF9yZWxhdGlvbl9zdGF0aXN0aWNzKFJlbE9wdEluZm8gKnJlbCwg UmVsYXRpb24gcmVsYXRpb24pCiAJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3Igc3RhdGlzdGljcyBvYmplY3QgJXUiLCBzdGF0T2lkKTsKIAkJc3RhRm9ybSA9IChG b3JtX3BnX3N0YXRpc3RpY19leHQpIEdFVFNUUlVDVChodHVwKTsKIAotCQlkdHVwID0gU2Vh cmNoU3lzQ2FjaGUxKFNUQVRFWFREQVRBU1RYT0lELCBPYmplY3RJZEdldERhdHVtKHN0YXRP aWQpKTsKLQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGR0dXApKQotCQkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHN0YXRpc3RpY3Mgb2JqZWN0ICV1Iiwgc3RhdE9p ZCk7Ci0KIAkJLyoKIAkJICogRmlyc3QsIGJ1aWxkIHRoZSBhcnJheSBvZiBjb2x1bW5zIGNv dmVyZWQuICBUaGlzIGlzIHVsdGltYXRlbHkKIAkJICogd2FzdGVkIGlmIG5vIHN0YXRzIHdp dGhpbiB0aGUgb2JqZWN0IGhhdmUgYWN0dWFsbHkgYmVlbiBidWlsdCwgYnV0CkBAIC0xMzI0 LDYgKzE0MDEsMTEgQEAgZ2V0X3JlbGF0aW9uX3N0YXRpc3RpY3MoUmVsT3B0SW5mbyAqcmVs LCBSZWxhdGlvbiByZWxhdGlvbikKIAkJLyoKIAkJICogUHJlcHJvY2VzcyBleHByZXNzaW9u cyAoaWYgYW55KS4gV2UgcmVhZCB0aGUgZXhwcmVzc2lvbnMsIHJ1biB0aGVtCiAJCSAqIHRo cm91Z2ggZXZhbF9jb25zdF9leHByZXNzaW9ucywgYW5kIGZpeCB0aGUgdmFybm9zLgorCQkg KgorCQkgKiBYWFggV2UgZG9uJ3Qga25vdyB5ZXQgaWYgdGhlcmUgYXJlIGFueSBkYXRhIGZv ciB0aGlzIHN0YXRzIG9iamVjdCwKKwkJICogd2l0aCBlaXRoZXIgc3R4ZGluaGVyaXQgdmFs dWUuIEJ1dCBpdCdzIHJlYXNvbmFibGUgdG8gYXNzdW1lIHRoZXJlCisJCSAqIGlzIGF0IGxl YXN0IG9uZSBvZiB0aG9zZSwgcG9zc2libHkgYm90aC4gU28gaXQncyBiZXR0ZXIgdG8gcHJv Y2VzcworCQkgKiBrZXlzIGFuZCBleHByZXNzaW9ucyBoZXJlLgogCQkgKi8KIAkJewogCQkJ Ym9vbAkJaXNudWxsOwpAQCAtMTM2NCw2MSArMTQ0NiwxNCBAQCBnZXRfcmVsYXRpb25fc3Rh dGlzdGljcyhSZWxPcHRJbmZvICpyZWwsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJfQogCQl9 CiAKLQkJLyogYWRkIG9uZSBTdGF0aXN0aWNFeHRJbmZvIGZvciBlYWNoIGtpbmQgYnVpbHQg Ki8KLQkJaWYgKHN0YXRleHRfaXNfa2luZF9idWlsdChkdHVwLCBTVEFUU19FWFRfTkRJU1RJ TkNUKSkKLQkJewotCQkJU3RhdGlzdGljRXh0SW5mbyAqaW5mbyA9IG1ha2VOb2RlKFN0YXRp c3RpY0V4dEluZm8pOwotCi0JCQlpbmZvLT5zdGF0T2lkID0gc3RhdE9pZDsKLQkJCWluZm8t PnJlbCA9IHJlbDsKLQkJCWluZm8tPmtpbmQgPSBTVEFUU19FWFRfTkRJU1RJTkNUOwotCQkJ aW5mby0+a2V5cyA9IGJtc19jb3B5KGtleXMpOwotCQkJaW5mby0+ZXhwcnMgPSBleHByczsK LQotCQkJc3RhaW5mb3MgPSBsYXBwZW5kKHN0YWluZm9zLCBpbmZvKTsKLQkJfQotCi0JCWlm IChzdGF0ZXh0X2lzX2tpbmRfYnVpbHQoZHR1cCwgU1RBVFNfRVhUX0RFUEVOREVOQ0lFUykp Ci0JCXsKLQkJCVN0YXRpc3RpY0V4dEluZm8gKmluZm8gPSBtYWtlTm9kZShTdGF0aXN0aWNF eHRJbmZvKTsKLQotCQkJaW5mby0+c3RhdE9pZCA9IHN0YXRPaWQ7Ci0JCQlpbmZvLT5yZWwg PSByZWw7Ci0JCQlpbmZvLT5raW5kID0gU1RBVFNfRVhUX0RFUEVOREVOQ0lFUzsKLQkJCWlu Zm8tPmtleXMgPSBibXNfY29weShrZXlzKTsKLQkJCWluZm8tPmV4cHJzID0gZXhwcnM7Ci0K LQkJCXN0YWluZm9zID0gbGFwcGVuZChzdGFpbmZvcywgaW5mbyk7Ci0JCX0KLQotCQlpZiAo c3RhdGV4dF9pc19raW5kX2J1aWx0KGR0dXAsIFNUQVRTX0VYVF9NQ1YpKQotCQl7Ci0JCQlT dGF0aXN0aWNFeHRJbmZvICppbmZvID0gbWFrZU5vZGUoU3RhdGlzdGljRXh0SW5mbyk7Ci0K LQkJCWluZm8tPnN0YXRPaWQgPSBzdGF0T2lkOwotCQkJaW5mby0+cmVsID0gcmVsOwotCQkJ aW5mby0+a2luZCA9IFNUQVRTX0VYVF9NQ1Y7Ci0JCQlpbmZvLT5rZXlzID0gYm1zX2NvcHko a2V5cyk7Ci0JCQlpbmZvLT5leHBycyA9IGV4cHJzOwotCi0JCQlzdGFpbmZvcyA9IGxhcHBl bmQoc3RhaW5mb3MsIGluZm8pOwotCQl9Ci0KLQkJaWYgKHN0YXRleHRfaXNfa2luZF9idWls dChkdHVwLCBTVEFUU19FWFRfRVhQUkVTU0lPTlMpKQotCQl7Ci0JCQlTdGF0aXN0aWNFeHRJ bmZvICppbmZvID0gbWFrZU5vZGUoU3RhdGlzdGljRXh0SW5mbyk7CisJCS8qIGV4dHJhY3Qg c3RhdGlzdGljcyBmb3IgcG9zc2libGUgdmFsdWVzIG9mIHN0eGRpbmhlcml0IGZsYWcgKi8K IAotCQkJaW5mby0+c3RhdE9pZCA9IHN0YXRPaWQ7Ci0JCQlpbmZvLT5yZWwgPSByZWw7Ci0J CQlpbmZvLT5raW5kID0gU1RBVFNfRVhUX0VYUFJFU1NJT05TOwotCQkJaW5mby0+a2V5cyA9 IGJtc19jb3B5KGtleXMpOwotCQkJaW5mby0+ZXhwcnMgPSBleHByczsKKwkJZ2V0X3JlbGF0 aW9uX3N0YXRpc3RpY3Nfd29ya2VyKCZzdGFpbmZvcywgcmVsLCBzdGF0T2lkLCB0cnVlLCBr ZXlzLCBleHBycyk7CiAKLQkJCXN0YWluZm9zID0gbGFwcGVuZChzdGFpbmZvcywgaW5mbyk7 Ci0JCX0KKwkJZ2V0X3JlbGF0aW9uX3N0YXRpc3RpY3Nfd29ya2VyKCZzdGFpbmZvcywgcmVs LCBzdGF0T2lkLCBmYWxzZSwga2V5cywgZXhwcnMpOwogCiAJCVJlbGVhc2VTeXNDYWNoZSho dHVwKTsKLQkJUmVsZWFzZVN5c0NhY2hlKGR0dXApOworCiAJCWJtc19mcmVlKGtleXMpOwog CX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9kZXBlbmRlbmNpZXMu YyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZGVwZW5kZW5jaWVzLmMKaW5kZXggYTIyY2E3 MzgwNy4uNjcyMDkxYjUxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9k ZXBlbmRlbmNpZXMuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2ll cy5jCkBAIC02MTksMTQgKzYxOSwxNiBAQCBkZXBlbmRlbmN5X2lzX2Z1bGx5X21hdGNoZWQo TVZEZXBlbmRlbmN5ICpkZXBlbmRlbmN5LCBCaXRtYXBzZXQgKmF0dG51bXMpCiAgKgkJTG9h ZCB0aGUgZnVuY3Rpb25hbCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBpbmRpY2F0ZWQgcGdfc3Rh dGlzdGljX2V4dCB0dXBsZQogICovCiBNVkRlcGVuZGVuY2llcyAqCi1zdGF0ZXh0X2RlcGVu ZGVuY2llc19sb2FkKE9pZCBtdm9pZCkKK3N0YXRleHRfZGVwZW5kZW5jaWVzX2xvYWQoT2lk IG12b2lkLCBib29sIGluaCkKIHsKIAlNVkRlcGVuZGVuY2llcyAqcmVzdWx0OwogCWJvb2wJ CWlzbnVsbDsKIAlEYXR1bQkJZGVwczsKIAlIZWFwVHVwbGUJaHR1cDsKIAotCWh0dXAgPSBT ZWFyY2hTeXNDYWNoZTEoU1RBVEVYVERBVEFTVFhPSUQsIE9iamVjdElkR2V0RGF0dW0obXZv aWQpKTsKKwlodHVwID0gU2VhcmNoU3lzQ2FjaGUyKFNUQVRFWFREQVRBU1RYT0lELAorCQkJ CQkJICAgT2JqZWN0SWRHZXREYXR1bShtdm9pZCksCisJCQkJCQkgICBCb29sR2V0RGF0dW0o aW5oKSk7CiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGh0dXApKQogCQllbG9nKEVSUk9SLCAi Y2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc3RhdGlzdGljcyBvYmplY3QgJXUiLCBtdm9pZCk7 CiAKQEAgLTE0MTcsMTYgKzE0MTksNiBAQCBkZXBlbmRlbmNpZXNfY2xhdXNlbGlzdF9zZWxl Y3Rpdml0eShQbGFubmVySW5mbyAqcm9vdCwKIAlOb2RlCSAgKip1bmlxdWVfZXhwcnM7CiAJ aW50CQkJdW5pcXVlX2V4cHJzX2NudDsKIAotCS8qCi0JICogV2hlbiBkZWFsaW5nIHdpdGgg cmVndWxhciBpbmhlcml0ZW5jZSB0cmVlcywgaWdub3JlIGV4dGVuZGVkIHN0YXRzCi0JICog KHdoaWNoIHdlcmUgYnVpbHQgd2l0aG91dCBkYXRhIGZyb20gY2hpbGQgcmVscywgYW5kIHRo dXMgZG8gbm90Ci0JICogcmVwcmVzZW50IHRoZW0pLiBGb3IgcGFydGl0aW9uZWQgdGFibGVz IGRhdGEgZnJvbSBwYXJ0aXRpb25zIGFyZQotCSAqIGluIHRoZSBzdGF0cyAoYW5kIHRoZXJl J3Mgbm8gZGF0YSBpbiB0aGUgbm9uLWxlYWYgcmVsYXRpb25zKSwgc28KLQkgKiBpbiB0aGlz IGNhc2Ugd2UgZG8gY29uc2lkZXIgZXh0ZW5kZWQgc3RhdHMuCi0JICovCi0JaWYgKHJ0ZS0+ aW5oICYmIHJ0ZS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQotCQly ZXR1cm4gMS4wOwotCiAJLyogY2hlY2sgaWYgdGhlcmUncyBhbnkgc3RhdHMgdGhhdCBtaWdo dCBiZSB1c2VmdWwgZm9yIHVzLiAqLwogCWlmICghaGFzX3N0YXRzX29mX2tpbmQocmVsLT5z dGF0bGlzdCwgU1RBVFNfRVhUX0RFUEVOREVOQ0lFUykpCiAJCXJldHVybiAxLjA7CkBAIC0x NjEwLDYgKzE2MDIsMTAgQEAgZGVwZW5kZW5jaWVzX2NsYXVzZWxpc3Rfc2VsZWN0aXZpdHko UGxhbm5lckluZm8gKnJvb3QsCiAJCWlmIChzdGF0LT5raW5kICE9IFNUQVRTX0VYVF9ERVBF TkRFTkNJRVMpCiAJCQljb250aW51ZTsKIAorCQkvKiBza2lwIHN0YXRpc3RpY3Mgd2l0aCBt aXNtYXRjaGluZyBzdHhkaW5oZXJpdCB2YWx1ZSAqLworCQlpZiAoc3RhdC0+aW5oZXJpdCAh PSBydGUtPmluaCkKKwkJCWNvbnRpbnVlOworCiAJCS8qCiAJCSAqIENvdW50IG1hdGNoaW5n IGF0dHJpYnV0ZXMgLSB3ZSBoYXZlIHRvIHVuZG8gdGhlIGF0dG51bSBvZmZzZXRzLiBUaGUK IAkJICogaW5wdXQgYXR0cmlidXRlIG51bWJlcnMgYXJlIG5vdCBvZmZzZXQgKGV4cHJlc3Np b25zIGFyZSBub3QKQEAgLTE2NTYsNyArMTY1Miw3IEBAIGRlcGVuZGVuY2llc19jbGF1c2Vs aXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJbmZvICpyb290LAogCQlpZiAobm1hdGNoZWQgKyBu ZXhwcnMgPCAyKQogCQkJY29udGludWU7CiAKLQkJZGVwcyA9IHN0YXRleHRfZGVwZW5kZW5j aWVzX2xvYWQoc3RhdC0+c3RhdE9pZCk7CisJCWRlcHMgPSBzdGF0ZXh0X2RlcGVuZGVuY2ll c19sb2FkKHN0YXQtPnN0YXRPaWQsIHJ0ZS0+aW5oKTsKIAogCQkvKgogCQkgKiBUaGUgZXhw cmVzc2lvbnMgbWF5IGJlIHJlcHJlc2VudGVkIGJ5IGRpZmZlcmVudCBhdHRudW1zIGluIHRo ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5j IGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCmluZGV4IDY4YmUw MDBmM2QuLjM0MjM2MDNkZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3Mv ZXh0ZW5kZWRfc3RhdHMuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVk X3N0YXRzLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRp c3RpY19leHQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHRfZGF0YS5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAiY29tbWFuZHMv ZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKQEAgLTc4LDcgKzc5 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3RhdEV4dEVudHJ5CiBzdGF0aWMgTGlzdCAqZmV0Y2hf c3RhdGVudHJpZXNfZm9yX3JlbGF0aW9uKFJlbGF0aW9uIHBnX3N0YXRleHQsIE9pZCByZWxp ZCk7CiBzdGF0aWMgVmFjQXR0clN0YXRzICoqbG9va3VwX3Zhcl9hdHRyX3N0YXRzKFJlbGF0 aW9uIHJlbCwgQml0bWFwc2V0ICphdHRycywgTGlzdCAqZXhwcnMsCiAJCQkJCQkJCQkJCWlu dCBudmFjYXR0cywgVmFjQXR0clN0YXRzICoqdmFjYXR0cyk7Ci1zdGF0aWMgdm9pZCBzdGF0 ZXh0X3N0b3JlKE9pZCBzdGF0T2lkLAorc3RhdGljIHZvaWQgc3RhdGV4dF9zdG9yZShPaWQg c3RhdE9pZCwgYm9vbCBpbmgsCiAJCQkJCQkgIE1WTkRpc3RpbmN0ICpuZGlzdGluY3QsIE1W RGVwZW5kZW5jaWVzICpkZXBlbmRlbmNpZXMsCiAJCQkJCQkgIE1DVkxpc3QgKm1jdiwgRGF0 dW0gZXhwcnMsIFZhY0F0dHJTdGF0cyAqKnN0YXRzKTsKIHN0YXRpYyBpbnQJc3RhdGV4dF9j b21wdXRlX3N0YXR0YXJnZXQoaW50IHN0YXR0YXJnZXQsCkBAIC0xMTEsNyArMTEyLDcgQEAg c3RhdGljIFN0YXRzQnVpbGREYXRhICptYWtlX2J1aWxkX2RhdGEoUmVsYXRpb24gb25lcmVs LCBTdGF0RXh0RW50cnkgKnN0YXQsCiAgKiByZXF1ZXN0ZWQgc3RhdHMsIGFuZCBzZXJpYWxp emVzIHRoZW0gYmFjayBpbnRvIHRoZSBjYXRhbG9nLgogICovCiB2b2lkCi1CdWlsZFJlbGF0 aW9uRXh0U3RhdGlzdGljcyhSZWxhdGlvbiBvbmVyZWwsIGRvdWJsZSB0b3RhbHJvd3MsCitC dWlsZFJlbGF0aW9uRXh0U3RhdGlzdGljcyhSZWxhdGlvbiBvbmVyZWwsIGJvb2wgaW5oLCBk b3VibGUgdG90YWxyb3dzLAogCQkJCQkJICAgaW50IG51bXJvd3MsIEhlYXBUdXBsZSAqcm93 cywKIAkJCQkJCSAgIGludCBuYXR0cywgVmFjQXR0clN0YXRzICoqdmFjYXR0cnN0YXRzKQog ewpAQCAtMjMxLDcgKzIzMiw4IEBAIEJ1aWxkUmVsYXRpb25FeHRTdGF0aXN0aWNzKFJlbGF0 aW9uIG9uZXJlbCwgZG91YmxlIHRvdGFscm93cywKIAkJfQogCiAJCS8qIHN0b3JlIHRoZSBz dGF0aXN0aWNzIGluIHRoZSBjYXRhbG9nICovCi0JCXN0YXRleHRfc3RvcmUoc3RhdC0+c3Rh dE9pZCwgbmRpc3RpbmN0LCBkZXBlbmRlbmNpZXMsIG1jdiwgZXhwcnN0YXRzLCBzdGF0cyk7 CisJCXN0YXRleHRfc3RvcmUoc3RhdC0+c3RhdE9pZCwgaW5oLAorCQkJCQkgIG5kaXN0aW5j dCwgZGVwZW5kZW5jaWVzLCBtY3YsIGV4cHJzdGF0cywgc3RhdHMpOwogCiAJCS8qIGZvciBy ZXBvcnRpbmcgcHJvZ3Jlc3MgKi8KIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19BTkFMWVpFX0VYVF9TVEFUU19DT01QVVRFRCwKQEAgLTc4MiwyMyArNzg0LDI3 IEBAIGxvb2t1cF92YXJfYXR0cl9zdGF0cyhSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqYXR0 cnMsIExpc3QgKmV4cHJzLAogICoJdHVwbGUuCiAgKi8KIHN0YXRpYyB2b2lkCi1zdGF0ZXh0 X3N0b3JlKE9pZCBzdGF0T2lkLAorc3RhdGV4dF9zdG9yZShPaWQgc3RhdE9pZCwgYm9vbCBp bmgsCiAJCQkgIE1WTkRpc3RpbmN0ICpuZGlzdGluY3QsIE1WRGVwZW5kZW5jaWVzICpkZXBl bmRlbmNpZXMsCiAJCQkgIE1DVkxpc3QgKm1jdiwgRGF0dW0gZXhwcnMsIFZhY0F0dHJTdGF0 cyAqKnN0YXRzKQogewogCVJlbGF0aW9uCXBnX3N0ZXh0ZGF0YTsKLQlIZWFwVHVwbGUJc3R1 cCwKLQkJCQlvbGR0dXA7CisJSGVhcFR1cGxlCXN0dXA7CiAJRGF0dW0JCXZhbHVlc1tOYXR0 c19wZ19zdGF0aXN0aWNfZXh0X2RhdGFdOwogCWJvb2wJCW51bGxzW05hdHRzX3BnX3N0YXRp c3RpY19leHRfZGF0YV07Ci0JYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfc3RhdGlzdGljX2V4 dF9kYXRhXTsKIAogCXBnX3N0ZXh0ZGF0YSA9IHRhYmxlX29wZW4oU3RhdGlzdGljRXh0RGF0 YVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJbWVtc2V0KG51bGxzLCB0cnVl LCBzaXplb2YobnVsbHMpKTsKLQltZW1zZXQocmVwbGFjZXMsIGZhbHNlLCBzaXplb2YocmVw bGFjZXMpKTsKIAltZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CiAKKwkvKiBi YXNpYyBpbmZvICovCisJdmFsdWVzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eG9p ZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShzdGF0T2lkKTsKKwludWxsc1tBbnVtX3BnX3N0 YXRpc3RpY19leHRfZGF0YV9zdHhvaWQgLSAxXSA9IGZhbHNlOworCisJdmFsdWVzW0FudW1f cGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRpbmhlcml0IC0gMV0gPSBCb29sR2V0RGF0dW0o aW5oKTsKKwludWxsc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkaW5oZXJpdCAt IDFdID0gZmFsc2U7CisKIAkvKgogCSAqIENvbnN0cnVjdCBhIG5ldyBwZ19zdGF0aXN0aWNf ZXh0X2RhdGEgdHVwbGUsIHJlcGxhY2luZyB0aGUgY2FsY3VsYXRlZAogCSAqIHN0YXRzLgpA QCAtODMxLDI1ICs4MzcsMTUgQEAgc3RhdGV4dF9zdG9yZShPaWQgc3RhdE9pZCwKIAkJdmFs dWVzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRleHByIC0gMV0gPSBleHByczsK IAl9CiAKLQkvKiBhbHdheXMgcmVwbGFjZSB0aGUgdmFsdWUgKGVpdGhlciBieSBieXRlYSBv ciBOVUxMKSAqLwotCXJlcGxhY2VzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRu ZGlzdGluY3QgLSAxXSA9IHRydWU7Ci0JcmVwbGFjZXNbQW51bV9wZ19zdGF0aXN0aWNfZXh0 X2RhdGFfc3R4ZGRlcGVuZGVuY2llcyAtIDFdID0gdHJ1ZTsKLQlyZXBsYWNlc1tBbnVtX3Bn X3N0YXRpc3RpY19leHRfZGF0YV9zdHhkbWN2IC0gMV0gPSB0cnVlOwotCXJlcGxhY2VzW0Fu dW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRleHByIC0gMV0gPSB0cnVlOwotCi0JLyog dGhlcmUgc2hvdWxkIGFscmVhZHkgYmUgYSBwZ19zdGF0aXN0aWNfZXh0X2RhdGEgdHVwbGUg Ki8KLQlvbGR0dXAgPSBTZWFyY2hTeXNDYWNoZTEoU1RBVEVYVERBVEFTVFhPSUQsIE9iamVj dElkR2V0RGF0dW0oc3RhdE9pZCkpOwotCWlmICghSGVhcFR1cGxlSXNWYWxpZChvbGR0dXAp KQotCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc3RhdGlzdGljcyBv YmplY3QgJXUiLCBzdGF0T2lkKTsKLQotCS8qIHJlcGxhY2UgaXQgKi8KLQlzdHVwID0gaGVh cF9tb2RpZnlfdHVwbGUob2xkdHVwLAotCQkJCQkJCSBSZWxhdGlvbkdldERlc2NyKHBnX3N0 ZXh0ZGF0YSksCi0JCQkJCQkJIHZhbHVlcywKLQkJCQkJCQkgbnVsbHMsCi0JCQkJCQkJIHJl cGxhY2VzKTsKLQlSZWxlYXNlU3lzQ2FjaGUob2xkdHVwKTsKLQlDYXRhbG9nVHVwbGVVcGRh dGUocGdfc3RleHRkYXRhLCAmc3R1cC0+dF9zZWxmLCBzdHVwKTsKKwkvKgorCSAqIERlbGV0 ZSB0aGUgb2xkIHR1cGxlIGlmIGl0IGV4aXN0cywgYW5kIGluc2VydCBhIG5ldyBvbmUuIEl0 J3MgZWFzaWVyCisJICogdGhhbiB0cnlpbmcgdG8gdXBkYXRlIG9yIGluc2VydCwgYmFzZWQg b24gdmFyaW91cyBjb25kaXRpb25zLgorCSAqLworCVJlbW92ZVN0YXRpc3RpY3NEYXRhQnlJ ZChzdGF0T2lkLCBpbmgpOworCisJLyogZm9ybSBhbmQgaW5zZXJ0IGEgbmV3IHR1cGxlICov CisJc3R1cCA9IGhlYXBfZm9ybV90dXBsZShSZWxhdGlvbkdldERlc2NyKHBnX3N0ZXh0ZGF0 YSksIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBsZUluc2VydChwZ19zdGV4dGRhdGEs IHN0dXApOwogCiAJaGVhcF9mcmVldHVwbGUoc3R1cCk7CiAKQEAgLTEyMzUsNyArMTIzMSw3 IEBAIHN0YXRfY292ZXJzX2V4cHJlc3Npb25zKFN0YXRpc3RpY0V4dEluZm8gKnN0YXQsIExp c3QgKmV4cHJzLAogICogZnVydGhlciB0aWVicmVha2VycyBhcmUgbmVlZGVkLgogICovCiBT dGF0aXN0aWNFeHRJbmZvICoKLWNob29zZV9iZXN0X3N0YXRpc3RpY3MoTGlzdCAqc3RhdHMs IGNoYXIgcmVxdWlyZWRraW5kLAorY2hvb3NlX2Jlc3Rfc3RhdGlzdGljcyhMaXN0ICpzdGF0 cywgY2hhciByZXF1aXJlZGtpbmQsIGJvb2wgaW5oLAogCQkJCQkgICBCaXRtYXBzZXQgKipj bGF1c2VfYXR0bnVtcywgTGlzdCAqKmNsYXVzZV9leHBycywKIAkJCQkJICAgaW50IG5jbGF1 c2VzKQogewpAQCAtMTI1Nyw2ICsxMjUzLDEwIEBAIGNob29zZV9iZXN0X3N0YXRpc3RpY3Mo TGlzdCAqc3RhdHMsIGNoYXIgcmVxdWlyZWRraW5kLAogCQlpZiAoaW5mby0+a2luZCAhPSBy ZXF1aXJlZGtpbmQpCiAJCQljb250aW51ZTsKIAorCQkvKiBza2lwIHN0YXRpc3RpY3Mgd2l0 aCBtaXNtYXRjaGluZyBpbmhlcml0YW5jZSBmbGFnICovCisJCWlmIChpbmZvLT5pbmhlcml0 ICE9IGluaCkKKwkJCWNvbnRpbnVlOworCiAJCS8qCiAJCSAqIENvbGxlY3QgYXR0cmlidXRl cyBhbmQgZXhwcmVzc2lvbnMgaW4gcmVtYWluaW5nICh1bmVzdGltYXRlZCkKIAkJICogY2xh dXNlcyBmdWxseSBjb3ZlcmVkIGJ5IHRoaXMgc3RhdGlzdGljIG9iamVjdC4KQEAgLTE2OTcs MTYgKzE2OTcsNiBAQCBzdGF0ZXh0X21jdl9jbGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBsYW5u ZXJJbmZvICpyb290LCBMaXN0ICpjbGF1c2VzLCBpbnQgdmFyUmVsaQogCVNlbGVjdGl2aXR5 IHNlbCA9IChpc19vcikgPyAwLjAgOiAxLjA7CiAJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcGxh bm5lcl9ydF9mZXRjaChyZWwtPnJlbGlkLCByb290KTsKIAotCS8qCi0JICogV2hlbiBkZWFs aW5nIHdpdGggcmVndWxhciBpbmhlcml0ZW5jZSB0cmVlcywgaWdub3JlIGV4dGVuZGVkIHN0 YXRzCi0JICogKHdoaWNoIHdlcmUgYnVpbHQgd2l0aG91dCBkYXRhIGZyb20gY2hpbGQgcmVs cywgYW5kIHRodXMgZG8gbm90Ci0JICogcmVwcmVzZW50IHRoZW0pLiBGb3IgcGFydGl0aW9u ZWQgdGFibGVzIGRhdGEgZnJvbSBwYXJ0aXRpb25zIGFyZQotCSAqIGluIHRoZSBzdGF0cyAo YW5kIHRoZXJlJ3Mgbm8gZGF0YSBpbiB0aGUgbm9uLWxlYWYgcmVsYXRpb25zKSwgc28KLQkg KiBpbiB0aGlzIGNhc2Ugd2UgZG8gY29uc2lkZXIgZXh0ZW5kZWQgc3RhdHMuCi0JICovCi0J aWYgKHJ0ZS0+aW5oICYmIHJ0ZS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKQotCQlyZXR1cm4gc2VsOwotCiAJLyogY2hlY2sgaWYgdGhlcmUncyBhbnkgc3RhdHMg dGhhdCBtaWdodCBiZSB1c2VmdWwgZm9yIHVzLiAqLwogCWlmICghaGFzX3N0YXRzX29mX2tp bmQocmVsLT5zdGF0bGlzdCwgU1RBVFNfRVhUX01DVikpCiAJCXJldHVybiBzZWw7CkBAIC0x NzU4LDcgKzE3NDgsNyBAQCBzdGF0ZXh0X21jdl9jbGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBs YW5uZXJJbmZvICpyb290LCBMaXN0ICpjbGF1c2VzLCBpbnQgdmFyUmVsaQogCQlCaXRtYXBz ZXQgICpzaW1wbGVfY2xhdXNlczsKIAogCQkvKiBmaW5kIHRoZSBiZXN0IHN1aXRlZCBzdGF0 aXN0aWNzIG9iamVjdCBmb3IgdGhlc2UgYXR0bnVtcyAqLwotCQlzdGF0ID0gY2hvb3NlX2Jl c3Rfc3RhdGlzdGljcyhyZWwtPnN0YXRsaXN0LCBTVEFUU19FWFRfTUNWLAorCQlzdGF0ID0g Y2hvb3NlX2Jlc3Rfc3RhdGlzdGljcyhyZWwtPnN0YXRsaXN0LCBTVEFUU19FWFRfTUNWLCBy dGUtPmluaCwKIAkJCQkJCQkJCSAgbGlzdF9hdHRudW1zLCBsaXN0X2V4cHJzLAogCQkJCQkJ CQkJICBsaXN0X2xlbmd0aChjbGF1c2VzKSk7CiAKQEAgLTE4NDcsNyArMTgzNyw3IEBAIHN0 YXRleHRfbWN2X2NsYXVzZWxpc3Rfc2VsZWN0aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsIExp c3QgKmNsYXVzZXMsIGludCB2YXJSZWxpCiAJCQlNQ1ZMaXN0ICAgICptY3ZfbGlzdDsKIAog CQkJLyogTG9hZCB0aGUgTUNWIGxpc3Qgc3RvcmVkIGluIHRoZSBzdGF0aXN0aWNzIG9iamVj dCAqLwotCQkJbWN2X2xpc3QgPSBzdGF0ZXh0X21jdl9sb2FkKHN0YXQtPnN0YXRPaWQpOwor CQkJbWN2X2xpc3QgPSBzdGF0ZXh0X21jdl9sb2FkKHN0YXQtPnN0YXRPaWQsIHJ0ZS0+aW5o KTsKIAogCQkJLyoKIAkJCSAqIENvbXB1dGUgdGhlIHNlbGVjdGl2aXR5IG9mIHRoZSBPUmVk IGxpc3Qgb2YgY2xhdXNlcyBjb3ZlcmVkIGJ5CkBAIC0yNDA4LDcgKzIzOTgsNyBAQCBzZXJp YWxpemVfZXhwcl9zdGF0cyhBbmxFeHByRGF0YSAqZXhwcmRhdGEsIGludCBuZXhwcnMpCiAg KiBpZGVudGlmaWVkIGJ5IHRoZSBzdXBwbGllZCBpbmRleC4KICAqLwogSGVhcFR1cGxlCi1z dGF0ZXh0X2V4cHJlc3Npb25zX2xvYWQoT2lkIHN0eG9pZCwgaW50IGlkeCkKK3N0YXRleHRf ZXhwcmVzc2lvbnNfbG9hZChPaWQgc3R4b2lkLCBib29sIGluaCwgaW50IGlkeCkKIHsKIAli b29sCQlpc251bGw7CiAJRGF0dW0JCXZhbHVlOwpAQCAtMjQxOCw3ICsyNDA4LDggQEAgc3Rh dGV4dF9leHByZXNzaW9uc19sb2FkKE9pZCBzdHhvaWQsIGludCBpZHgpCiAJSGVhcFR1cGxl RGF0YSB0bXB0dXA7CiAJSGVhcFR1cGxlCXR1cDsKIAotCWh0dXAgPSBTZWFyY2hTeXNDYWNo ZTEoU1RBVEVYVERBVEFTVFhPSUQsIE9iamVjdElkR2V0RGF0dW0oc3R4b2lkKSk7CisJaHR1 cCA9IFNlYXJjaFN5c0NhY2hlMihTVEFURVhUREFUQVNUWE9JRCwKKwkJCQkJCSAgIE9iamVj dElkR2V0RGF0dW0oc3R4b2lkKSwgQm9vbEdldERhdHVtKGluaCkpOwogCWlmICghSGVhcFR1 cGxlSXNWYWxpZChodHVwKSkKIAkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIHN0YXRpc3RpY3Mgb2JqZWN0ICV1Iiwgc3R4b2lkKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RhdGlzdGljcy9tY3YuYyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2 LmMKaW5kZXggYjM1MGZjNWY3Yi4uNzVkN2QzNWNhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RhdGlzdGljcy9tY3YuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL21jdi5j CkBAIC01NTksMTIgKzU1OSwxMyBAQCBidWlsZF9jb2x1bW5fZnJlcXVlbmNpZXMoU29ydEl0 ZW0gKmdyb3VwcywgaW50IG5ncm91cHMsCiAgKgkJTG9hZCB0aGUgTUNWIGxpc3QgZm9yIHRo ZSBpbmRpY2F0ZWQgcGdfc3RhdGlzdGljX2V4dCB0dXBsZS4KICAqLwogTUNWTGlzdCAqCi1z dGF0ZXh0X21jdl9sb2FkKE9pZCBtdm9pZCkKK3N0YXRleHRfbWN2X2xvYWQoT2lkIG12b2lk LCBib29sIGluaCkKIHsKIAlNQ1ZMaXN0ICAgICpyZXN1bHQ7CiAJYm9vbAkJaXNudWxsOwog CURhdHVtCQltY3ZsaXN0OwotCUhlYXBUdXBsZQlodHVwID0gU2VhcmNoU3lzQ2FjaGUxKFNU QVRFWFREQVRBU1RYT0lELCBPYmplY3RJZEdldERhdHVtKG12b2lkKSk7CisJSGVhcFR1cGxl CWh0dXAgPSBTZWFyY2hTeXNDYWNoZTIoU1RBVEVYVERBVEFTVFhPSUQsCisJCQkJCQkJCQkg ICBPYmplY3RJZEdldERhdHVtKG12b2lkKSwgQm9vbEdldERhdHVtKGluaCkpOwogCiAJaWYg KCFIZWFwVHVwbGVJc1ZhbGlkKGh0dXApKQogCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3Vw IGZhaWxlZCBmb3Igc3RhdGlzdGljcyBvYmplY3QgJXUiLCBtdm9pZCk7CkBAIC0yMDM5LDEx ICsyMDQwLDEzIEBAIG1jdl9jbGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJbmZvICpy b290LCBTdGF0aXN0aWNFeHRJbmZvICpzdGF0LAogCU1DVkxpc3QgICAgKm1jdjsKIAlTZWxl Y3Rpdml0eSBzID0gMC4wOwogCisJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcm9vdC0+c2ltcGxl X3J0ZV9hcnJheVtyZWwtPnJlbGlkXTsKKwogCS8qIG1hdGNoL21pc21hdGNoIGJpdG1hcCBm b3IgZWFjaCBNQ1YgaXRlbSAqLwogCWJvb2wJICAgKm1hdGNoZXMgPSBOVUxMOwogCiAJLyog bG9hZCB0aGUgTUNWIGxpc3Qgc3RvcmVkIGluIHRoZSBzdGF0aXN0aWNzIG9iamVjdCAqLwot CW1jdiA9IHN0YXRleHRfbWN2X2xvYWQoc3RhdC0+c3RhdE9pZCk7CisJbWN2ID0gc3RhdGV4 dF9tY3ZfbG9hZChzdGF0LT5zdGF0T2lkLCBydGUtPmluaCk7CiAKIAkvKiBidWlsZCBhIG1h dGNoIGJpdG1hcCBmb3IgdGhlIGNsYXVzZXMgKi8KIAltYXRjaGVzID0gbWN2X2dldF9tYXRj aF9iaXRtYXAocm9vdCwgY2xhdXNlcywgc3RhdC0+a2V5cywgc3RhdC0+ZXhwcnMsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL212ZGlzdGluY3QuYyBiL3NyYy9iYWNr ZW5kL3N0YXRpc3RpY3MvbXZkaXN0aW5jdC5jCmluZGV4IDQ0ODEzMTJkNjEuLmFiMWYxMGQ2 YzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbXZkaXN0aW5jdC5jCisr KyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbXZkaXN0aW5jdC5jCkBAIC0xNDYsMTQgKzE0 NiwxNSBAQCBzdGF0ZXh0X25kaXN0aW5jdF9idWlsZChkb3VibGUgdG90YWxyb3dzLCBTdGF0 c0J1aWxkRGF0YSAqZGF0YSkKICAqCQlMb2FkIHRoZSBuZGlzdGluY3QgdmFsdWUgZm9yIHRo ZSBpbmRpY2F0ZWQgcGdfc3RhdGlzdGljX2V4dCB0dXBsZQogICovCiBNVk5EaXN0aW5jdCAq Ci1zdGF0ZXh0X25kaXN0aW5jdF9sb2FkKE9pZCBtdm9pZCkKK3N0YXRleHRfbmRpc3RpbmN0 X2xvYWQoT2lkIG12b2lkLCBib29sIGluaCkKIHsKIAlNVk5EaXN0aW5jdCAqcmVzdWx0Owog CWJvb2wJCWlzbnVsbDsKIAlEYXR1bQkJbmRpc3Q7CiAJSGVhcFR1cGxlCWh0dXA7CiAKLQlo dHVwID0gU2VhcmNoU3lzQ2FjaGUxKFNUQVRFWFREQVRBU1RYT0lELCBPYmplY3RJZEdldERh dHVtKG12b2lkKSk7CisJaHR1cCA9IFNlYXJjaFN5c0NhY2hlMihTVEFURVhUREFUQVNUWE9J RCwKKwkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0obXZvaWQpLCBCb29sR2V0RGF0dW0oaW5o KSk7CiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGh0dXApKQogCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3Igc3RhdGlzdGljcyBvYmplY3QgJXUiLCBtdm9pZCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKaW5kZXggYjI1MzM3MzcwYi4uODg2ZDg1Yjdm MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKQEAgLTM5MTksMTcgKzM5MTksNiBA QCBlc3RpbWF0ZV9tdWx0aXZhcmlhdGVfbmRpc3RpbmN0KFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwsCiAJaWYgKCFyZWwtPnN0YXRsaXN0KQogCQlyZXR1cm4gZmFsc2U7 CiAKLQkvKgotCSAqIFdoZW4gZGVhbGluZyB3aXRoIHJlZ3VsYXIgaW5oZXJpdGVuY2UgdHJl ZXMsIGlnbm9yZSBleHRlbmRlZCBzdGF0cwotCSAqICh3aGljaCB3ZXJlIGJ1aWx0IHdpdGhv dXQgZGF0YSBmcm9tIGNoaWxkIHJlbHMsIGFuZCB0aHVzIGRvIG5vdAotCSAqIHJlcHJlc2Vu dCB0aGVtKS4gRm9yIHBhcnRpdGlvbmVkIHRhYmxlcyBkYXRhIGZyb20gcGFydGl0aW9ucyBh cmUKLQkgKiBpbiB0aGUgc3RhdHMgKGFuZCB0aGVyZSdzIG5vIGRhdGEgaW4gdGhlIG5vbi1s ZWFmIHJlbGF0aW9ucyksIHNvCi0JICogaW4gdGhpcyBjYXNlIHdlIGRvIGNvbnNpZGVyIGV4 dGVuZGVkIHN0YXRzLgotCSAqLwotCXJ0ZSA9IHBsYW5uZXJfcnRfZmV0Y2gocmVsLT5yZWxp ZCwgcm9vdCk7Ci0JaWYgKHJ0ZS0+aW5oICYmIHJ0ZS0+cmVsa2luZCAhPSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFKQotCQlyZXR1cm4gZmFsc2U7Ci0KIAkvKiBsb29rIGZvciB0aGUg bmRpc3RpbmN0IHN0YXRpc3RpY3Mgb2JqZWN0IG1hdGNoaW5nIHRoZSBtb3N0IHZhcnMgKi8K IAlubWF0Y2hlc192YXJzID0gMDsJCQkvKiB3ZSByZXF1aXJlIGF0IGxlYXN0IHR3byBtYXRj aGVzICovCiAJbm1hdGNoZXNfZXhwcnMgPSAwOwpAQCAtNDAxNSw3ICs0MDA0LDggQEAgZXN0 aW1hdGVfbXVsdGl2YXJpYXRlX25kaXN0aW5jdChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqcmVsLAogCiAJQXNzZXJ0KG5tYXRjaGVzX3ZhcnMgKyBubWF0Y2hlc19leHBycyA+ IDEpOwogCi0Jc3RhdHMgPSBzdGF0ZXh0X25kaXN0aW5jdF9sb2FkKHN0YXRPaWQpOworCXJ0 ZSA9IHBsYW5uZXJfcnRfZmV0Y2gocmVsLT5yZWxpZCwgcm9vdCk7CisJc3RhdHMgPSBzdGF0 ZXh0X25kaXN0aW5jdF9sb2FkKHN0YXRPaWQsIHJ0ZS0+aW5oKTsKIAogCS8qCiAJICogSWYg d2UgaGF2ZSBhIG1hdGNoLCBzZWFyY2ggaXQgZm9yIHRoZSBzcGVjaWZpYyBpdGVtIHRoYXQg bWF0Y2hlcyAodGhlcmUKQEAgLTUyNzAsMjIgKzUyNjAsMjggQEAgZXhhbWluZV92YXJpYWJs ZShQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSwgaW50IHZhclJlbGlkLAogCQkJCS8q IGZvdW5kIGEgbWF0Y2gsIHNlZSBpZiB3ZSBjYW4gZXh0cmFjdCBwZ19zdGF0aXN0aWMgcm93 ICovCiAJCQkJaWYgKGVxdWFsKG5vZGUsIGV4cHIpKQogCQkJCXsKLQkJCQkJSGVhcFR1cGxl CXQgPSBzdGF0ZXh0X2V4cHJlc3Npb25zX2xvYWQoaW5mby0+c3RhdE9pZCwgcG9zKTsKLQot CQkJCQkvKiBHZXQgc3RhdGlzdGljcyBvYmplY3QncyB0YWJsZSBmb3IgcGVybWlzc2lvbiBj aGVjayAqLwotCQkJCQlSYW5nZVRibEVudHJ5ICpydGU7CisJCQkJCVJhbmdlVGJsRW50cnkg KnJ0ZSA9IHBsYW5uZXJfcnRfZmV0Y2gob25lcmVsLT5yZWxpZCwgcm9vdCk7CiAJCQkJCU9p ZAkJCXVzZXJpZDsKKwkJCQkJYm9vbAkJaW5oOwogCi0JCQkJCXZhcmRhdGEtPnN0YXRzVHVw bGUgPSB0OworCQkJCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7CisK KwkJCQkJLyoKKwkJCQkJICogRGV0ZXJtaW5lIGlmIHdlJ3JlZGVhbGluZyB3aXRoIGluaGVy aXRhbmNlIHRyZWUuCisJCQkJCSAqCisJCQkJCSAqIFhYWCBDYW4ndCB3ZSBzaW1wbHkgbG9v ayBhdCBydGUtPmluaD8KKwkJCQkJICovCisJCQkJCWluaCA9IHJvb3QtPmFwcGVuZF9yZWxf YXJyYXkgPT0gTlVMTCA/IGZhbHNlIDoKKwkJCQkJCXJvb3QtPmFwcGVuZF9yZWxfYXJyYXlb b25lcmVsLT5yZWxpZF0tPnBhcmVudF9yZWxpZCAhPSAwOwogCiAJCQkJCS8qCiAJCQkJCSAq IFhYWCBOb3Qgc3VyZSBpZiB3ZSBzaG91bGQgY2FjaGUgdGhlIHR1cGxlIHNvbWV3aGVyZS4K IAkJCQkJICogTm93IHdlIGp1c3QgY3JlYXRlIGEgbmV3IGNvcHkgZXZlcnkgdGltZS4KIAkJ CQkJICovCi0JCQkJCXZhcmRhdGEtPmZyZWVmdW5jID0gUmVsZWFzZUR1bW15OworCQkJCQl2 YXJkYXRhLT5zdGF0c1R1cGxlID0KKwkJCQkJCXN0YXRleHRfZXhwcmVzc2lvbnNfbG9hZChp bmZvLT5zdGF0T2lkLCBpbmgsIHBvcyk7CiAKLQkJCQkJcnRlID0gcGxhbm5lcl9ydF9mZXRj aChvbmVyZWwtPnJlbGlkLCByb290KTsKLQkJCQkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBS VEVfUkVMQVRJT04pOworCQkJCQl2YXJkYXRhLT5mcmVlZnVuYyA9IFJlbGVhc2VEdW1teTsK IAogCQkJCQkvKgogCQkJCQkgKiBVc2UgY2hlY2tBc1VzZXIgaWYgaXQncyBzZXQsIGluIGNh c2Ugd2UncmUgYWNjZXNzaW5nCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9zeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYwppbmRl eCA1Njg3MGI0NmU0Li42MTk0NzUxZTk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9zeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2Nh Y2hlLmMKQEAgLTc2MywxMSArNzYzLDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FjaGVk ZXNjIGNhY2hlaW5mb1tdID0gewogCQkzMgogCX0sCiAJe1N0YXRpc3RpY0V4dERhdGFSZWxh dGlvbklkLAkvKiBTVEFURVhUREFUQVNUWE9JRCAqLwotCQlTdGF0aXN0aWNFeHREYXRhU3R4 b2lkSW5kZXhJZCwKLQkJMSwKKwkJU3RhdGlzdGljRXh0RGF0YVN0eG9pZEluaEluZGV4SWQs CisJCTIsCiAJCXsKIAkJCUFudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eG9pZCwKLQkJ CTAsCisJCQlBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkaW5oZXJpdCwKIAkJCTAs CiAJCQkwCiAJCX0sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N0YXRp c3RpY19leHRfZGF0YS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0 X2RhdGEuaAppbmRleCA3YjczYjc5MGQyLi44ZmZkOGI2OGNkIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3N0YXRpc3RpY19leHRfZGF0YS5oCisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfc3RhdGlzdGljX2V4dF9kYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAg Q0FUQUxPRyhwZ19zdGF0aXN0aWNfZXh0X2RhdGEsMzQyOSxTdGF0aXN0aWNFeHREYXRhUmVs YXRpb25JZCkKIHsKIAlPaWQJCQlzdHhvaWQgQktJX0xPT0tVUChwZ19zdGF0aXN0aWNfZXh0 KTsJLyogc3RhdGlzdGljcyBvYmplY3QKIAkJCQkJCQkJCQkJCQkJICogdGhpcyBkYXRhIGlz IGZvciAqLworCWJvb2wJCXN0eGRpbmhlcml0OwkvKiB0cnVlIGlmIGluaGVyaXRhbmNlIGNo aWxkcmVuIGFyZSBpbmNsdWRlZCAqLwogCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2 YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIApAQCAtNTMsNiArNTQsNyBA QCB0eXBlZGVmIEZvcm1EYXRhX3BnX3N0YXRpc3RpY19leHRfZGF0YSAqIEZvcm1fcGdfc3Rh dGlzdGljX2V4dF9kYXRhOwogCiBERUNMQVJFX1RPQVNUKHBnX3N0YXRpc3RpY19leHRfZGF0 YSwgMzQzMCwgMzQzMSk7CiAKLURFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdfc3RhdGlz dGljX2V4dF9kYXRhX3N0eG9pZF9pbmRleCwgMzQzMywgU3RhdGlzdGljRXh0RGF0YVN0eG9p ZEluZGV4SWQsIG9uIHBnX3N0YXRpc3RpY19leHRfZGF0YSB1c2luZyBidHJlZShzdHhvaWQg b2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19zdGF0aXN0aWNfZXh0 X2RhdGFfc3R4b2lkX2luaF9pbmRleCwgMzQzMywgU3RhdGlzdGljRXh0RGF0YVN0eG9pZElu aEluZGV4SWQsIG9uIHBnX3N0YXRpc3RpY19leHRfZGF0YSB1c2luZyBidHJlZShzdHhvaWQg b2lkX29wcywgc3R4ZGluaGVyaXQgYm9vbF9vcHMpKTsKKwogCiAjZW5kaWYJCQkJCQkJLyog UEdfU1RBVElTVElDX0VYVF9EQVRBX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2RlZnJlbS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKaW5kZXgg Zjg0ZDA5OTU5Yy4uYWIzYzU5ZmNkNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvZGVmcmVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKQEAgLTgz LDYgKzgzLDcgQEAgZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJPcGVyYXRvcihBbHRlck9w ZXJhdG9yU3RtdCAqc3RtdCk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBDcmVhdGVTdGF0aXN0 aWNzKENyZWF0ZVN0YXRzU3RtdCAqc3RtdCk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRl clN0YXRpc3RpY3MoQWx0ZXJTdGF0c1N0bXQgKnN0bXQpOwogZXh0ZXJuIHZvaWQgUmVtb3Zl U3RhdGlzdGljc0J5SWQoT2lkIHN0YXRzT2lkKTsKK2V4dGVybiB2b2lkIFJlbW92ZVN0YXRp c3RpY3NEYXRhQnlJZChPaWQgc3RhdHNPaWQsIGJvb2wgaW5oKTsKIGV4dGVybiBPaWQJU3Rh dGlzdGljc0dldFJlbGF0aW9uKE9pZCBzdGF0SWQsIGJvb2wgbWlzc2luZ19vayk7CiAKIC8q IGNvbW1hbmRzL2FnZ3JlZ2F0ZWNtZHMuYyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRl eCAzMjRkOTI4ODBiLi4wMmFmZjk4NDdlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAt OTM0LDYgKzkzNCw3IEBAIHR5cGVkZWYgc3RydWN0IFN0YXRpc3RpY0V4dEluZm8KIAlOb2Rl VGFnCQl0eXBlOwogCiAJT2lkCQkJc3RhdE9pZDsJCS8qIE9JRCBvZiB0aGUgc3RhdGlzdGlj cyByb3cgKi8KKwlib29sCQlpbmhlcml0OwkJLyogaW5jbHVkZXMgY2hpbGQgcmVsYXRpb25z ICovCiAJUmVsT3B0SW5mbyAqcmVsOwkJCS8qIGJhY2stbGluayB0byBzdGF0aXN0aWMncyB0 YWJsZSAqLwogCWNoYXIJCWtpbmQ7CQkJLyogc3RhdGlzdGljcyBraW5kIG9mIHRoaXMgZW50 cnkgKi8KIAlCaXRtYXBzZXQgICprZXlzOwkJCS8qIGF0dG51bXMgb2YgdGhlIGNvbHVtbnMg Y292ZXJlZCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RhdGlzdGljcy9zdGF0aXN0 aWNzLmggYi9zcmMvaW5jbHVkZS9zdGF0aXN0aWNzL3N0YXRpc3RpY3MuaAppbmRleCAzMjZj ZjI2ZmVhLi4zODY4ZTQzZjhhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdGF0aXN0aWNz L3N0YXRpc3RpY3MuaAorKysgYi9zcmMvaW5jbHVkZS9zdGF0aXN0aWNzL3N0YXRpc3RpY3Mu aApAQCAtOTQsMTEgKzk0LDExIEBAIHR5cGVkZWYgc3RydWN0IE1DVkxpc3QKIAlNQ1ZJdGVt CQlpdGVtc1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwkvKiBhcnJheSBvZiBNQ1YgaXRlbXMg Ki8KIH0gTUNWTGlzdDsKIAotZXh0ZXJuIE1WTkRpc3RpbmN0ICpzdGF0ZXh0X25kaXN0aW5j dF9sb2FkKE9pZCBtdm9pZCk7Ci1leHRlcm4gTVZEZXBlbmRlbmNpZXMgKnN0YXRleHRfZGVw ZW5kZW5jaWVzX2xvYWQoT2lkIG12b2lkKTsKLWV4dGVybiBNQ1ZMaXN0ICpzdGF0ZXh0X21j dl9sb2FkKE9pZCBtdm9pZCk7CitleHRlcm4gTVZORGlzdGluY3QgKnN0YXRleHRfbmRpc3Rp bmN0X2xvYWQoT2lkIG12b2lkLCBib29sIGluaCk7CitleHRlcm4gTVZEZXBlbmRlbmNpZXMg KnN0YXRleHRfZGVwZW5kZW5jaWVzX2xvYWQoT2lkIG12b2lkLCBib29sIGluaCk7CitleHRl cm4gTUNWTGlzdCAqc3RhdGV4dF9tY3ZfbG9hZChPaWQgbXZvaWQsIGJvb2wgaW5oKTsKIAot ZXh0ZXJuIHZvaWQgQnVpbGRSZWxhdGlvbkV4dFN0YXRpc3RpY3MoUmVsYXRpb24gb25lcmVs LCBkb3VibGUgdG90YWxyb3dzLAorZXh0ZXJuIHZvaWQgQnVpbGRSZWxhdGlvbkV4dFN0YXRp c3RpY3MoUmVsYXRpb24gb25lcmVsLCBib29sIGluaCwgZG91YmxlIHRvdGFscm93cywKIAkJ CQkJCQkJCSAgIGludCBudW1yb3dzLCBIZWFwVHVwbGUgKnJvd3MsCiAJCQkJCQkJCQkgICBp bnQgbmF0dHMsIFZhY0F0dHJTdGF0cyAqKnZhY2F0dHJzdGF0cyk7CiBleHRlcm4gaW50CUNv bXB1dGVFeHRTdGF0aXN0aWNzUm93cyhSZWxhdGlvbiBvbmVyZWwsCkBAIC0xMjEsOSArMTIx LDEwIEBAIGV4dGVybiBTZWxlY3Rpdml0eSBzdGF0ZXh0X2NsYXVzZWxpc3Rfc2VsZWN0aXZp dHkoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkgIGJvb2wgaXNfb3IpOwogZXh0 ZXJuIGJvb2wgaGFzX3N0YXRzX29mX2tpbmQoTGlzdCAqc3RhdHMsIGNoYXIgcmVxdWlyZWRr aW5kKTsKIGV4dGVybiBTdGF0aXN0aWNFeHRJbmZvICpjaG9vc2VfYmVzdF9zdGF0aXN0aWNz KExpc3QgKnN0YXRzLCBjaGFyIHJlcXVpcmVka2luZCwKKwkJCQkJCQkJCQkJCWJvb2wgaW5o LAogCQkJCQkJCQkJCQkJQml0bWFwc2V0ICoqY2xhdXNlX2F0dG51bXMsCiAJCQkJCQkJCQkJ CQlMaXN0ICoqY2xhdXNlX2V4cHJzLAogCQkJCQkJCQkJCQkJaW50IG5jbGF1c2VzKTsKLWV4 dGVybiBIZWFwVHVwbGUgc3RhdGV4dF9leHByZXNzaW9uc19sb2FkKE9pZCBzdHhvaWQsIGlu dCBpZHgpOworZXh0ZXJuIEhlYXBUdXBsZSBzdGF0ZXh0X2V4cHJlc3Npb25zX2xvYWQoT2lk IHN0eG9pZCwgYm9vbCBpbmgsIGludCBpZHgpOwogCiAjZW5kaWYJCQkJCQkJLyogU1RBVElT VElDU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IGI1OGIw NjJiMTAuLmQ2NTJmN2I1ZmIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 CkBAIC0yNDQzLDYgKzI0NDMsNyBAQCBwZ19zdGF0c19leHR8IFNFTEVDVCBjbi5uc3BuYW1l IEFTIHNjaGVtYW5hbWUsCiAgICAgICAgICAgICAgSk9JTiBwZ19hdHRyaWJ1dGUgYSBPTiAo KChhLmF0dHJlbGlkID0gcy5zdHhyZWxpZCkgQU5EIChhLmF0dG51bSA9IGsuaykpKSkpIEFT IGF0dG5hbWVzLAogICAgIHBnX2dldF9zdGF0aXN0aWNzb2JqZGVmX2V4cHJlc3Npb25zKHMu b2lkKSBBUyBleHBycywKICAgICBzLnN0eGtpbmQgQVMga2luZHMsCisgICAgc2Quc3R4ZGlu aGVyaXQgQVMgaW5oZXJpdGVkLAogICAgIHNkLnN0eGRuZGlzdGluY3QgQVMgbl9kaXN0aW5j dCwKICAgICBzZC5zdHhkZGVwZW5kZW5jaWVzIEFTIGRlcGVuZGVuY2llcywKICAgICBtLm1v c3RfY29tbW9uX3ZhbHMsCkBAIC0yNDY5LDYgKzI0NzAsNyBAQCBwZ19zdGF0c19leHRfZXhw cnN8IFNFTEVDVCBjbi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgcy5zdHhuYW1lIEFT IHN0YXRpc3RpY3NfbmFtZSwKICAgICBwZ19nZXRfdXNlcmJ5aWQocy5zdHhvd25lcikgQVMg c3RhdGlzdGljc19vd25lciwKICAgICBzdGF0LmV4cHIsCisgICAgc2Quc3R4ZGluaGVyaXQg QVMgaW5oZXJpdGVkLAogICAgIChzdGF0LmEpLnN0YW51bGxmcmFjIEFTIG51bGxfZnJhYywK ICAgICAoc3RhdC5hKS5zdGF3aWR0aCBBUyBhdmdfd2lkdGgsCiAgICAgKHN0YXQuYSkuc3Rh ZGlzdGluY3QgQVMgbl9kaXN0aW5jdCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Rh dHNfZXh0Lm91dAppbmRleCBhMTFmZmY2NTVhLi40Mjc4ODRjZGE4IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CkBAIC0xNDQsMTAgKzE0NCw5IEBAIFNF TEVDVCBzdHhuYW1lLCBzdHhkbmRpc3RpbmN0LCBzdHhkZGVwZW5kZW5jaWVzLCBzdHhkbWN2 CiAgIEZST00gcGdfc3RhdGlzdGljX2V4dCBzLCBwZ19zdGF0aXN0aWNfZXh0X2RhdGEgZAog IFdIRVJFIHMuc3R4bmFtZSA9ICdhYjFfYV9iX3N0YXRzJwogICAgQU5EIGQuc3R4b2lkID0g cy5vaWQ7Ci0gICAgc3R4bmFtZSAgICB8IHN0eGRuZGlzdGluY3QgfCBzdHhkZGVwZW5kZW5j aWVzIHwgc3R4ZG1jdiAKLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLQotIGFiMV9hX2Jfc3RhdHMgfCAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICB8IAotKDEgcm93KQorIHN0eG5hbWUgfCBzdHhkbmRpc3Rp bmN0IHwgc3R4ZGRlcGVuZGVuY2llcyB8IHN0eGRtY3YgCistLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKygwIHJvd3MpCiAKIEFMVEVS IFNUQVRJU1RJQ1MgYWIxX2FfYl9zdGF0cyBTRVQgU1RBVElTVElDUyAtMTsKIFxkKyBhYjEK QEAgLTE5MiwxMSArMTkxLDE4IEBAIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jv d3MoJ1NFTEVDVCAqIEZST00gc3R4ZGluaCogR1JPVVAgQlkgMSwyJyk7CiAKIENSRUFURSBT VEFUSVNUSUNTIHN0eGRpbmggT04gaSxqIEZST00gc3R4ZGluaDsKIFZBQ1VVTSBBTkFMWVpF IHN0eGRpbmgsIHN0eGRpbmgxOwotLS0gU2luY2UgdGhlIHN0YXRzIG9iamVjdCBkb2VzIG5v dCBpbmNsdWRlIGluaGVyaXRlZCBzdGF0cywgaXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGVz dGltYXRlcworLS0gU2VlIGlmIHRoZSBleHRlbmRlZCBzdGF0cyBhZmZlY3QgdGhlIGVzdGlt YXRlcwogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJP TSBzdHhkaW5oKiBHUk9VUCBCWSAxLDInKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0t LS0tLS0tLSstLS0tLS0tLQotICAgICAgMTAwMCB8ICAgMTAwOAorICAgICAgMTAwOCB8ICAg MTAwOAorKDEgcm93KQorCistLSBFbnN1cmUgY29ycmVjdCAobm9uLWluaGVyaXRlZCkgc3Rh dHMgYXJlIGFwcGxpZWQgdG8gaW5oZXJpdGVkIHF1ZXJ5CitTRUxFQ1QgKiBGUk9NIGNoZWNr X2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIE9OTFkgc3R4ZGluaCBHUk9VUCBCWSAx LDInKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0tLSstLS0tLS0tLQorICAg ICAgICAgOSB8ICAgICAgOQogKDEgcm93KQogCiBEUk9QIFRBQkxFIHN0eGRpbmgsIHN0eGRp bmgxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwKaW5kZXggMDEzODNlOGY1Zi4u OGRlYjAxMGIzYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0 LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsCkBAIC0xMjMs OCArMTIzLDEwIEBAIFZBQ1VVTSBBTkFMWVpFIHN0eGRpbmgsIHN0eGRpbmgxOwogU0VMRUNU ICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBzdHhkaW5oKiBH Uk9VUCBCWSAxLDInKTsKIENSRUFURSBTVEFUSVNUSUNTIHN0eGRpbmggT04gaSxqIEZST00g c3R4ZGluaDsKIFZBQ1VVTSBBTkFMWVpFIHN0eGRpbmgsIHN0eGRpbmgxOwotLS0gU2luY2Ug dGhlIHN0YXRzIG9iamVjdCBkb2VzIG5vdCBpbmNsdWRlIGluaGVyaXRlZCBzdGF0cywgaXQg c2hvdWxkIG5vdCBhZmZlY3QgdGhlIGVzdGltYXRlcworLS0gU2VlIGlmIHRoZSBleHRlbmRl ZCBzdGF0cyBhZmZlY3QgdGhlIGVzdGltYXRlcwogU0VMRUNUICogRlJPTSBjaGVja19lc3Rp bWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBzdHhkaW5oKiBHUk9VUCBCWSAxLDInKTsKKy0t IEVuc3VyZSBjb3JyZWN0IChub24taW5oZXJpdGVkKSBzdGF0cyBhcmUgYXBwbGllZCB0byBp bmhlcml0ZWQgcXVlcnkKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NF TEVDVCAqIEZST00gT05MWSBzdHhkaW5oIEdST1VQIEJZIDEsMicpOwogRFJPUCBUQUJMRSBz dHhkaW5oLCBzdHhkaW5oMTsKIAogLS0gRW5zdXJlIGluaGVyaXRlZCBzdGF0cyBBUkUgYXBw bGllZCB0byBpbmhlcml0ZWQgcXVlcnkgaW4gcGFydGl0aW9uZWQgdGFibGUKLS0gCjIuMzEu MQoK --------------Z0h5dcbvAVY37pTuKRhuxFdH Content-Type: text/x-patch; charset=UTF-8; name="0002-Build-inherited-extended-stats-on-partition-20211212.patch" Content-Disposition: attachment; filename*0="0002-Build-inherited-extended-stats-on-partition-20211212.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmMjkxODM5M2ZmMzExZWMxNjQ2YjAwODJmMWIwYTBmMzVhODhlNzdjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogU2F0LCAxMSBEZWMgMjAyMSAyMjozODowOCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMi80XSBCdWlsZCBpbmhlcml0ZWQgZXh0ZW5kZWQgc3RhdHMgb24gcGFydGl0aW9u ZWQgdGFibGVzCgpDb21taXQgODU5YjMwMDNkZSBkaXNhYmxlZCBidWlsZGluZyBvZiBleHRl bmRlZCBzdGF0cyBmb3IgaW5oZXJpdGFuY2UKdHJlZXMsIHRvIHByZXZlbnQgdXBkYXRpbmcg dGhlIHNhbWUgY2F0YWxvZyByb3cgdHdpY2UuIFRoYXQgcmVzb2x2ZWQgdGhlCmlzc3VlLCBi dXQgaXQgYWxzbyBtZWFucyB0aGVyZSBhcmUgbm8gZXh0ZW5kZWQgc3RhdHMgZm9yIHBhcnRp dGlvbmVkCnRhYmxlcywgYmVjYXVzZSB0aGUgKCFpbmgpIGNhc2UgaGFzIGVtcHR5IHNhbXBs ZS4gVGhpcyBpcyBhIHJlZ3Jlc3Npb24sCmFmZmVjdGluZyBxdWVyaWVzIHRoYXQgZG9uJ3Qg ZXN0aW1hdGUgdGhlIGxlYWYgcmVsYXRpb25zIGRpcmVjdGx5LgoKQnV0IGJlY2F1c2UgcGFy dGl0aW9uZWQgdGFibGVzIGFyZSBlbXB0eSwgd2UgY2FuIGludmVydCB0aGUgY29uZGl0aW9u CmFuZCBidWlsZCBzdGF0aXN0aWNzIG9ubHkgZm9yIHRoZSBjYXNlIHdpdGggaW5oZXJpdGFu Y2UsIHdpdGhvdXQgbG9zaW5nCmFueXRoaW5nLiBBbmQgd2UgY2FuIGNvbnNpZGVyIHRoZW0g d2hlbiBjYWxjdWxhdGluZyBlc3RpbWF0ZXMuCgpSZXBvcnQgYW5kIHBhdGNoIGJ5IEp1c3Rp biBQcnl6YnksIG1pbm9yIGZpeGVzIGFuZCBjbGVhbnVwIGJ5IG1lLgpCYWNrcGF0Y2ggYWxs IHRoZSB3YXkgYmFjayB0byBQb3N0Z3JlU1FMIDEwLCB3aGVyZSBleHRlbmRlZCBzdGF0aXN0 aWNzCndlcmUgaW50cm9kdWNlZCAoc2FtZSBhcyA4NTliMzAwM2RlKS4KCkF1dGhvcjogSnVz dGluIFByeXpieQpSZXBvcnRlZC1ieTogSnVzdGluIFByeXpieQpCYWNrcGF0Y2gtdGhyb3Vn aDogMTAKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8yMDIxMDkyMzIxMjYyNC5H STgzMSU0MHRlbHNhc29mdC5jb20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXpl LmMgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3N0YXRp c3RpY3MvZGVwZW5kZW5jaWVzLmMgICB8ICA5ICsrKysrKy0tLQogc3JjL2JhY2tlbmQvc3Rh dGlzdGljcy9leHRlbmRlZF9zdGF0cy5jIHwgIDkgKysrKysrLS0tCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvc2VsZnVuY3MuYyAgICAgICAgfCAyMCArKysrKysrKysrKystLS0tLS0tLQog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0IHwgMTkgKysrKysrKysr KysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbCAgICAgIHwg MTAgKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCAxNSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXpl LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXggY2Q3NzkwN2ZjNy4u NThhODJlNDkyOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpAQCAtNTQ5LDYgKzU0OSw3 IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgVmFjdXVtUGFyYW1zICpwYXJh bXMsCiAJewogCQlNZW1vcnlDb250ZXh0IGNvbF9jb250ZXh0LAogCQkJCQlvbGRfY29udGV4 dDsKKwkJYm9vbAkJYnVpbGRfZXh0X3N0YXRzOwogCiAJCXBnc3RhdF9wcm9ncmVzc191cGRh dGVfcGFyYW0oUFJPR1JFU1NfQU5BTFlaRV9QSEFTRSwKIAkJCQkJCQkJCSBQUk9HUkVTU19B TkFMWVpFX1BIQVNFX0NPTVBVVEVfU1RBVFMpOwpAQCAtNjEyLDEzICs2MTMsMjggQEAgZG9f YW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJ CQkJCQl0aGlzZGF0YS0+YXR0cl9jbnQsIHRoaXNkYXRhLT52YWNhdHRyc3RhdHMpOwogCQl9 CiAKKwkJLyoKKwkJICogU2hvdWxkIHdlIGJ1aWxkIGV4dGVuZGVkIHN0YXRpc3RpY3MgZm9y IHRoaXMgcmVsYXRpb24/CisJCSAqCisJCSAqIFRoZSBleHRlbmRlZCBzdGF0aXN0aWNzIGNh dGFsb2cgZG9lcyBub3QgaW5jbHVkZSBhbiBpbmhlcml0YW5jZQorCQkgKiBmbGFnLCBzbyB3 ZSBjYW4ndCBzdG9yZSBzdGF0aXN0aWNzIGJ1aWx0IGJvdGggd2l0aCBhbmQgd2l0aG91dAor CQkgKiBkYXRhIGZyb20gY2hpbGQgcmVsYXRpb25zLiBXZSBjYW4gc3RvcmUganVzdCBvbmUg c2V0IG9mIHN0YXRpc3RpY3MKKwkJICogcGVyIHJlbGF0aW9uLiBGb3IgcGxhaW4gcmVsYXRp b25zIHRoYXQncyBmaW5lLCBidXQgZm9yIGluaGVyaXRhbmNlCisJCSAqIHRyZWVzIHdlIGhh dmUgdG8gcGljayB3aGV0aGVyIHRvIHN0b3JlIHN0YXRpc3RpY3MgZm9yIGp1c3QgdGhlCisJ CSAqIG9uZSByZWxhdGlvbiBvciB0aGUgd2hvbGUgdHJlZS4gRm9yIHBsYWluIGluaGVyaXRh bmNlIHdlIHN0b3JlCisJCSAqIHRoZSAoIWluaCkgdmVyc2lvbiwgbW9zdGx5IGZvciBiYWNr d2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLgorCQkgKiBGb3IgcGFydGl0aW9uZWQgdGFi bGVzIHRoYXQncyBwb2ludGxlc3MgKHRoZSBub24tbGVhZiB0YWJsZXMgYXJlCisJCSAqIGFs d2F5cyBlbXB0eSksIHNvIHdlIHN0b3JlIHN0YXRzIHJlcHJlc2VudGluZyB0aGUgd2hvbGUg dHJlZS4KKwkJICovCisJCWJ1aWxkX2V4dF9zdGF0cyA9IChvbmVyZWwtPnJkX3JlbC0+cmVs a2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSA/IGluaCA6ICghaW5oKTsKKwog CQkvKgogCQkgKiBCdWlsZCBleHRlbmRlZCBzdGF0aXN0aWNzIChpZiB0aGVyZSBhcmUgYW55 KS4KIAkJICoKIAkJICogRm9yIG5vdyB3ZSBvbmx5IGJ1aWxkIGV4dGVuZGVkIHN0YXRpc3Rp Y3Mgb24gaW5kaXZpZHVhbCByZWxhdGlvbnMsCiAJCSAqIG5vdCBmb3IgcmVsYXRpb25zIHJl cHJlc2VudGluZyBpbmhlcml0YW5jZSB0cmVlcy4KIAkJICovCi0JCWlmICghaW5oKQorCQlp ZiAoYnVpbGRfZXh0X3N0YXRzKQogCQkJQnVpbGRSZWxhdGlvbkV4dFN0YXRpc3RpY3Mob25l cmVsLCB0b3RhbHJvd3MsIG51bXJvd3MsIHJvd3MsCiAJCQkJCQkJCQkgICBhdHRyX2NudCwg dmFjYXR0cnN0YXRzKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNz L2RlcGVuZGVuY2llcy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9kZXBlbmRlbmNpZXMu YwppbmRleCA4ODQ3OWVlZThiLi5hMjJjYTczODA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0YXRpc3Rp Y3MvZGVwZW5kZW5jaWVzLmMKQEAgLTE0MTgsMTAgKzE0MTgsMTMgQEAgZGVwZW5kZW5jaWVz X2NsYXVzZWxpc3Rfc2VsZWN0aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsCiAJaW50CQkJdW5p cXVlX2V4cHJzX2NudDsKIAogCS8qCi0JICogV2hlbiBkZWFsaW5nIHdpdGggaW5oZXJpdGVu Y2UgdHJlZXMsIGlnbm9yZSBleHRlbmRlZCBzdGF0cyAod2hpY2ggd2VyZQotCSAqIGJ1aWx0 IHdpdGhvdXQgZGF0YSBmcm9tIGNoaWxkIHJlbHMsIGFuZCB0aHVzIGRvIG5vdCByZXByZXNl bnQgdGhlbSkuCisJICogV2hlbiBkZWFsaW5nIHdpdGggcmVndWxhciBpbmhlcml0ZW5jZSB0 cmVlcywgaWdub3JlIGV4dGVuZGVkIHN0YXRzCisJICogKHdoaWNoIHdlcmUgYnVpbHQgd2l0 aG91dCBkYXRhIGZyb20gY2hpbGQgcmVscywgYW5kIHRodXMgZG8gbm90CisJICogcmVwcmVz ZW50IHRoZW0pLiBGb3IgcGFydGl0aW9uZWQgdGFibGVzIGRhdGEgZnJvbSBwYXJ0aXRpb25z IGFyZQorCSAqIGluIHRoZSBzdGF0cyAoYW5kIHRoZXJlJ3Mgbm8gZGF0YSBpbiB0aGUgbm9u LWxlYWYgcmVsYXRpb25zKSwgc28KKwkgKiBpbiB0aGlzIGNhc2Ugd2UgZG8gY29uc2lkZXIg ZXh0ZW5kZWQgc3RhdHMuCiAJICovCi0JaWYgKHJ0ZS0+aW5oKQorCWlmIChydGUtPmluaCAm JiBydGUtPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKIAkJcmV0dXJu IDEuMDsKIAogCS8qIGNoZWNrIGlmIHRoZXJlJ3MgYW55IHN0YXRzIHRoYXQgbWlnaHQgYmUg dXNlZnVsIGZvciB1cy4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3Mv ZXh0ZW5kZWRfc3RhdHMuYyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3Rh dHMuYwppbmRleCA2MDdiMDJhYjhlLi42OGJlMDAwZjNkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rh dGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCkBAIC0xNjk4LDEwICsxNjk4LDEzIEBAIHN0YXRl eHRfbWN2X2NsYXVzZWxpc3Rfc2VsZWN0aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsIExpc3Qg KmNsYXVzZXMsIGludCB2YXJSZWxpCiAJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcGxhbm5lcl9y dF9mZXRjaChyZWwtPnJlbGlkLCByb290KTsKIAogCS8qCi0JICogV2hlbiBkZWFsaW5nIHdp dGggaW5oZXJpdGVuY2UgdHJlZXMsIGlnbm9yZSBleHRlbmRlZCBzdGF0cyAod2hpY2ggd2Vy ZQotCSAqIGJ1aWx0IHdpdGhvdXQgZGF0YSBmcm9tIGNoaWxkIHJlbHMsIGFuZCB0aHVzIGRv IG5vdCByZXByZXNlbnQgdGhlbSkuCisJICogV2hlbiBkZWFsaW5nIHdpdGggcmVndWxhciBp bmhlcml0ZW5jZSB0cmVlcywgaWdub3JlIGV4dGVuZGVkIHN0YXRzCisJICogKHdoaWNoIHdl cmUgYnVpbHQgd2l0aG91dCBkYXRhIGZyb20gY2hpbGQgcmVscywgYW5kIHRodXMgZG8gbm90 CisJICogcmVwcmVzZW50IHRoZW0pLiBGb3IgcGFydGl0aW9uZWQgdGFibGVzIGRhdGEgZnJv bSBwYXJ0aXRpb25zIGFyZQorCSAqIGluIHRoZSBzdGF0cyAoYW5kIHRoZXJlJ3Mgbm8gZGF0 YSBpbiB0aGUgbm9uLWxlYWYgcmVsYXRpb25zKSwgc28KKwkgKiBpbiB0aGlzIGNhc2Ugd2Ug ZG8gY29uc2lkZXIgZXh0ZW5kZWQgc3RhdHMuCiAJICovCi0JaWYgKHJ0ZS0+aW5oKQorCWlm IChydGUtPmluaCAmJiBydGUtPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJM RSkKIAkJcmV0dXJuIHNlbDsKIAogCS8qIGNoZWNrIGlmIHRoZXJlJ3MgYW55IHN0YXRzIHRo YXQgbWlnaHQgYmUgdXNlZnVsIGZvciB1cy4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9zZWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNz LmMKaW5kZXggMGIxMmY1Mjg4ZS4uYjI1MzM3MzcwYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Nl bGZ1bmNzLmMKQEAgLTM5MTMsMTkgKzM5MTMsMjMgQEAgZXN0aW1hdGVfbXVsdGl2YXJpYXRl X25kaXN0aW5jdChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCU9pZAkJ CXN0YXRPaWQgPSBJbnZhbGlkT2lkOwogCU1WTkRpc3RpbmN0ICpzdGF0czsKIAlTdGF0aXN0 aWNFeHRJbmZvICptYXRjaGVkX2luZm8gPSBOVUxMOwotCVJhbmdlVGJsRW50cnkJCSpydGUg PSBwbGFubmVyX3J0X2ZldGNoKHJlbC0+cmVsaWQsIHJvb3QpOwotCi0JLyoKLQkgKiBXaGVu IGRlYWxpbmcgd2l0aCBpbmhlcml0ZW5jZSB0cmVlcywgaWdub3JlIGV4dGVuZGVkIHN0YXRz ICh3aGljaCB3ZXJlCi0JICogYnVpbHQgd2l0aG91dCBkYXRhIGZyb20gY2hpbGQgcmVscywg YW5kIHRodXMgZG8gbm90IHJlcHJlc2VudCB0aGVtKS4KLQkgKi8KLQlpZiAocnRlLT5pbmgp Ci0JCXJldHVybiBmYWxzZTsKKwlSYW5nZVRibEVudHJ5CQkqcnRlOwogCiAJLyogYmFpbCBv dXQgaW1tZWRpYXRlbHkgaWYgdGhlIHRhYmxlIGhhcyBubyBleHRlbmRlZCBzdGF0aXN0aWNz ICovCiAJaWYgKCFyZWwtPnN0YXRsaXN0KQogCQlyZXR1cm4gZmFsc2U7CiAKKwkvKgorCSAq IFdoZW4gZGVhbGluZyB3aXRoIHJlZ3VsYXIgaW5oZXJpdGVuY2UgdHJlZXMsIGlnbm9yZSBl eHRlbmRlZCBzdGF0cworCSAqICh3aGljaCB3ZXJlIGJ1aWx0IHdpdGhvdXQgZGF0YSBmcm9t IGNoaWxkIHJlbHMsIGFuZCB0aHVzIGRvIG5vdAorCSAqIHJlcHJlc2VudCB0aGVtKS4gRm9y IHBhcnRpdGlvbmVkIHRhYmxlcyBkYXRhIGZyb20gcGFydGl0aW9ucyBhcmUKKwkgKiBpbiB0 aGUgc3RhdHMgKGFuZCB0aGVyZSdzIG5vIGRhdGEgaW4gdGhlIG5vbi1sZWFmIHJlbGF0aW9u cyksIHNvCisJICogaW4gdGhpcyBjYXNlIHdlIGRvIGNvbnNpZGVyIGV4dGVuZGVkIHN0YXRz LgorCSAqLworCXJ0ZSA9IHBsYW5uZXJfcnRfZmV0Y2gocmVsLT5yZWxpZCwgcm9vdCk7CisJ aWYgKHJ0ZS0+aW5oICYmIHJ0ZS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKQorCQlyZXR1cm4gZmFsc2U7CisKIAkvKiBsb29rIGZvciB0aGUgbmRpc3RpbmN0IHN0 YXRpc3RpY3Mgb2JqZWN0IG1hdGNoaW5nIHRoZSBtb3N0IHZhcnMgKi8KIAlubWF0Y2hlc192 YXJzID0gMDsJCQkvKiB3ZSByZXF1aXJlIGF0IGxlYXN0IHR3byBtYXRjaGVzICovCiAJbm1h dGNoZXNfZXhwcnMgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zdGF0c19leHQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQu b3V0CmluZGV4IDU0MTBmNThmN2YuLmExMWZmZjY1NWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKQEAgLTIwMCw2ICsyMDAsMjUgQEAgU0VMRUNUICog RlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBzdHhkaW5oKiBHUk9V UCBCWSAxLDInKTsKICgxIHJvdykKIAogRFJPUCBUQUJMRSBzdHhkaW5oLCBzdHhkaW5oMTsK Ky0tIEVuc3VyZSBpbmhlcml0ZWQgc3RhdHMgQVJFIGFwcGxpZWQgdG8gaW5oZXJpdGVkIHF1 ZXJ5IGluIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgc3R4ZGlucChpIGludCwg YSBpbnQsIGIgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHN0 eGRpbnAxIFBBUlRJVElPTiBPRiBzdHhkaW5wIEZPUiBWQUxVRVMgRlJPTSAoMSlUTygxMDAp OworSU5TRVJUIElOVE8gc3R4ZGlucCBTRUxFQ1QgMSwgYS8xMDAsIGEvMTAwIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsOTk5KWE7CitDUkVBVEUgU1RBVElTVElDUyBzdHhkaW5wIE9OIChh KSwoYikgRlJPTSBzdHhkaW5wOworVkFDVVVNIEFOQUxZWkUgc3R4ZGlucDsgLS0gcGFydGl0 aW9ucyBhcmUgcHJvY2Vzc2VkIHJlY3Vyc2l2ZWx5CitTRUxFQ1QgMSBGUk9NIHBnX3N0YXRp c3RpY19leHQgV0hFUkUgc3R4cmVsaWQ9J3N0eGRpbnAnOjpyZWdjbGFzczsKKyA/Y29sdW1u PyAKKy0tLS0tLS0tLS0KKyAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGNo ZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgYSwgYiBGUk9NIHN0eGRpbnAgR1JPVVAgQlkg MSwyJyk7CisgZXN0aW1hdGVkIHwgYWN0dWFsIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAg ICAgICAgMTAgfCAgICAgMTAKKygxIHJvdykKKworRFJPUCBUQUJMRSBzdHhkaW5wOwogLS0g YmFzaWMgdGVzdCBmb3Igc3RhdGlzdGljcyBvbiBleHByZXNzaW9ucwogQ1JFQVRFIFRBQkxF IGFiMSAoYSBJTlRFR0VSLCBiIElOVEVHRVIsIGMgVElNRVNUQU1QLCBkIFRJTUVTVEFNUFRa KTsKIC0tIGV4cHJlc3Npb24gc3RhdHMgbWF5IGJlIGJ1aWx0IG9uIGEgc2luZ2xlIGV4cHJl c3Npb24gY29sdW1uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19l eHQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbAppbmRleCBhMTk2 ZDVlMmY4Li4wMTM4M2U4ZjVmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9z dGF0c19leHQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwK QEAgLTEyNyw2ICsxMjcsMTYgQEAgVkFDVVVNIEFOQUxZWkUgc3R4ZGluaCwgc3R4ZGluaDE7 CiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIHN0 eGRpbmgqIEdST1VQIEJZIDEsMicpOwogRFJPUCBUQUJMRSBzdHhkaW5oLCBzdHhkaW5oMTsK IAorLS0gRW5zdXJlIGluaGVyaXRlZCBzdGF0cyBBUkUgYXBwbGllZCB0byBpbmhlcml0ZWQg cXVlcnkgaW4gcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSBzdHhkaW5wKGkgaW50 LCBhIGludCwgYiBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUg c3R4ZGlucDEgUEFSVElUSU9OIE9GIHN0eGRpbnAgRk9SIFZBTFVFUyBGUk9NICgxKVRPKDEw MCk7CitJTlNFUlQgSU5UTyBzdHhkaW5wIFNFTEVDVCAxLCBhLzEwMCwgYS8xMDAgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSw5OTkpYTsKK0NSRUFURSBTVEFUSVNUSUNTIHN0eGRpbnAgT04g KGEpLChiKSBGUk9NIHN0eGRpbnA7CitWQUNVVU0gQU5BTFlaRSBzdHhkaW5wOyAtLSBwYXJ0 aXRpb25zIGFyZSBwcm9jZXNzZWQgcmVjdXJzaXZlbHkKK1NFTEVDVCAxIEZST00gcGdfc3Rh dGlzdGljX2V4dCBXSEVSRSBzdHhyZWxpZD0nc3R4ZGlucCc6OnJlZ2NsYXNzOworU0VMRUNU ICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUIGEsIGIgRlJPTSBzdHhkaW5w IEdST1VQIEJZIDEsMicpOworRFJPUCBUQUJMRSBzdHhkaW5wOworCiAtLSBiYXNpYyB0ZXN0 IGZvciBzdGF0aXN0aWNzIG9uIGV4cHJlc3Npb25zCiBDUkVBVEUgVEFCTEUgYWIxIChhIElO VEVHRVIsIGIgSU5URUdFUiwgYyBUSU1FU1RBTVAsIGQgVElNRVNUQU1QVFopOwogCi0tIAoy LjMxLjEKCg== --------------Z0h5dcbvAVY37pTuKRhuxFdH Content-Type: text/x-patch; charset=UTF-8; name="0001-Ignore-extended-statistics-for-inheritance--20211212.patch" Content-Disposition: attachment; filename*0="0001-Ignore-extended-statistics-for-inheritance--20211212.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzMjJiNTJiOTI2NDljMjYyNWZiYmJhMzY5Yjc2NzAyOWNlZmY4MDUxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlqQHRlbHNhc29m dC5jb20+CkRhdGU6IFNhdCwgMjUgU2VwIDIwMjEgMTk6NDI6NDEgLTA1MDAKU3ViamVjdDog W1BBVENIIDEvNF0gSWdub3JlIGV4dGVuZGVkIHN0YXRpc3RpY3MgZm9yIGluaGVyaXRhbmNl IHRyZWVzCgpTaW5jZSBjb21taXQgODU5YjMwMDNkZSB3ZSBvbmx5IGJ1aWxkIGV4dGVuZGVk IHN0YXRpc3RpY3MgZm9yIHJlbGF0aW9ucwp3aXRob3V0IHRoZSBjaGlsZCByZWxhdGlvbnMs IHNvIHRoYXQgd2UgdXBkYXRlIHRoZSBjYXRhbG9nIHJvdyBvbmx5Cm9uY2UuIEhvd2V2ZXIs IHRoZSBub24taW5oZXJpdGVkIHN0YXRpc3RpY3Mgd2VyZSBzdGlsbCB1c2VkIGZvciBwbGFu bmluZwpvZiBxdWVyaWVzIG9uIGluaGVyaXRhbmNlIHRyZWVzLCB3aGljaCBtYXkgcHJvZHVj ZSBib2d1cyBlc3RpbWF0ZXMuCgpUaGlzIGlzIHJvdWdobHkgdGhlIHNhbWUgaXNzdWUgNDI3 YzZiNWI5IGFkZHJlc3NlZCB+MTUgeWVhcnMgYWdvLCBhbmQgd2UKZml4IGl0IHRoZSBzYW1l IHdheSAtIGJ5IGlnbm9yaW5nIGV4dGVuZGVkIHN0YXRpc3RpY3Mgd2hlbiBjYWxjdWxhdGlu Zwplc3RpbWF0ZXMgZm9yIHRoZSBpbmhlcml0YW5jZSB0cmVlIGFzIGEgd2hvbGUuIFdlIHN0 aWxsIGNvbnNpZGVyCmV4dGVuZGVkIHN0YXRpc3RpY3Mgd2hlbiBjYWxjdWxhdGluZyBlc3Rp bWF0ZXMgZm9yIGluZGl2aWR1YWwgY2hpbGQKcmVsYXRpb25zLCBvZiBjb3Vyc2UuCgpSZXBv cnQgYW5kIHBhdGNoIGJ5IEp1c3RpbiBQcnl6YnksIG1pbm9yIGZpeGVzIGFuZCBjbGVhbnVw IGJ5IG1lLgpCYWNrcGF0Y2ggYWxsIHRoZSB3YXkgYmFjayB0byBQb3N0Z3JlU1FMIDEwLCB3 aGVyZSBleHRlbmRlZCBzdGF0aXN0aWNzCndlcmUgaW50cm9kdWNlZCAoc2FtZSBhcyA4NTli MzAwM2RlKS4KCkF1dGhvcjogSnVzdGluIFByeXpieQpSZXBvcnRlZC1ieTogSnVzdGluIFBy eXpieQpCYWNrcGF0Y2gtdGhyb3VnaDogMTAKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS8yMDIxMDkyMzIxMjYyNC5HSTgzMSU0MHRlbHNhc29mdC5jb20KLS0tCiBzcmMvYmFj a2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jICAgfCAgOSArKysrKysrKysKIHNyYy9i YWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYyB8ICA5ICsrKysrKysrKwogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgICAgICAgIHwgMTYgKysrKysrKysrKysr KysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0IHwgMjQgKysr KysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQu c3FsICAgICAgfCAxNSArKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgNzMgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZGVwZW5k ZW5jaWVzLmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jCmluZGV4 IDhiZjgwZGI4ZTQuLjg4NDc5ZWVlOGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRp c3RpY3MvZGVwZW5kZW5jaWVzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9kZXBl bmRlbmNpZXMuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIm5vZGVzL3BhdGhub2Rl cy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9jbGF1c2VzLmgiCiAjaW5jbHVkZSAib3B0aW1p emVyL29wdGltaXplci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNs dWRlICJzdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzX2ludGVybmFsLmgiCiAjaW5jbHVkZSAi c3RhdGlzdGljcy9zdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAidXRpbHMvYnl0ZWEuaCIKQEAg LTE0MTAsMTEgKzE0MTEsMTkgQEAgZGVwZW5kZW5jaWVzX2NsYXVzZWxpc3Rfc2VsZWN0aXZp dHkoUGxhbm5lckluZm8gKnJvb3QsCiAJaW50CQkJbmRlcGVuZGVuY2llczsKIAlpbnQJCQlp OwogCUF0dHJOdW1iZXIJYXR0bnVtX29mZnNldDsKKwlSYW5nZVRibEVudHJ5ICpydGUgPSBw bGFubmVyX3J0X2ZldGNoKHJlbC0+cmVsaWQsIHJvb3QpOwogCiAJLyogdW5pcXVlIGV4cHJl c3Npb25zICovCiAJTm9kZQkgICoqdW5pcXVlX2V4cHJzOwogCWludAkJCXVuaXF1ZV9leHBy c19jbnQ7CiAKKwkvKgorCSAqIFdoZW4gZGVhbGluZyB3aXRoIGluaGVyaXRlbmNlIHRyZWVz LCBpZ25vcmUgZXh0ZW5kZWQgc3RhdHMgKHdoaWNoIHdlcmUKKwkgKiBidWlsdCB3aXRob3V0 IGRhdGEgZnJvbSBjaGlsZCByZWxzLCBhbmQgdGh1cyBkbyBub3QgcmVwcmVzZW50IHRoZW0p LgorCSAqLworCWlmIChydGUtPmluaCkKKwkJcmV0dXJuIDEuMDsKKwogCS8qIGNoZWNrIGlm IHRoZXJlJ3MgYW55IHN0YXRzIHRoYXQgbWlnaHQgYmUgdXNlZnVsIGZvciB1cy4gKi8KIAlp ZiAoIWhhc19zdGF0c19vZl9raW5kKHJlbC0+c3RhdGxpc3QsIFNUQVRTX0VYVF9ERVBFTkRF TkNJRVMpKQogCQlyZXR1cm4gMS4wOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlz dGljcy9leHRlbmRlZF9zdGF0cy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRl ZF9zdGF0cy5jCmluZGV4IDY5Y2E1MjA5NGYuLjYwN2IwMmFiOGUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYworKysgYi9zcmMvYmFja2Vu ZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs dWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvY2xhdXNlcy5o IgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJwYXJzZXIv cGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rl ci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAic3RhdGlzdGljcy9leHRlbmRlZF9zdGF0c19p bnRlcm5hbC5oIgpAQCAtMTY5NCw2ICsxNjk1LDE0IEBAIHN0YXRleHRfbWN2X2NsYXVzZWxp c3Rfc2VsZWN0aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmNsYXVzZXMsIGludCB2 YXJSZWxpCiAJTGlzdAkgICoqbGlzdF9leHByczsJCS8qIGV4cHJlc3Npb25zIG1hdGNoZWQg dG8gYW55IHN0YXRpc3RpYyAqLwogCWludAkJCWxpc3RpZHg7CiAJU2VsZWN0aXZpdHkgc2Vs ID0gKGlzX29yKSA/IDAuMCA6IDEuMDsKKwlSYW5nZVRibEVudHJ5ICpydGUgPSBwbGFubmVy X3J0X2ZldGNoKHJlbC0+cmVsaWQsIHJvb3QpOworCisJLyoKKwkgKiBXaGVuIGRlYWxpbmcg d2l0aCBpbmhlcml0ZW5jZSB0cmVlcywgaWdub3JlIGV4dGVuZGVkIHN0YXRzICh3aGljaCB3 ZXJlCisJICogYnVpbHQgd2l0aG91dCBkYXRhIGZyb20gY2hpbGQgcmVscywgYW5kIHRodXMg ZG8gbm90IHJlcHJlc2VudCB0aGVtKS4KKwkgKi8KKwlpZiAocnRlLT5pbmgpCisJCXJldHVy biBzZWw7CiAKIAkvKiBjaGVjayBpZiB0aGVyZSdzIGFueSBzdGF0cyB0aGF0IG1pZ2h0IGJl IHVzZWZ1bCBmb3IgdXMuICovCiAJaWYgKCFoYXNfc3RhdHNfb2Zfa2luZChyZWwtPnN0YXRs aXN0LCBTVEFUU19FWFRfTUNWKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9zZWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKaW5kZXgg MTA4OTVmYjI4Ny4uMGIxMmY1Mjg4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMK QEAgLTM5MTMsNiArMzkxMywxNCBAQCBlc3RpbWF0ZV9tdWx0aXZhcmlhdGVfbmRpc3RpbmN0 KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJT2lkCQkJc3RhdE9pZCA9 IEludmFsaWRPaWQ7CiAJTVZORGlzdGluY3QgKnN0YXRzOwogCVN0YXRpc3RpY0V4dEluZm8g Km1hdGNoZWRfaW5mbyA9IE5VTEw7CisJUmFuZ2VUYmxFbnRyeQkJKnJ0ZSA9IHBsYW5uZXJf cnRfZmV0Y2gocmVsLT5yZWxpZCwgcm9vdCk7CisKKwkvKgorCSAqIFdoZW4gZGVhbGluZyB3 aXRoIGluaGVyaXRlbmNlIHRyZWVzLCBpZ25vcmUgZXh0ZW5kZWQgc3RhdHMgKHdoaWNoIHdl cmUKKwkgKiBidWlsdCB3aXRob3V0IGRhdGEgZnJvbSBjaGlsZCByZWxzLCBhbmQgdGh1cyBk byBub3QgcmVwcmVzZW50IHRoZW0pLgorCSAqLworCWlmIChydGUtPmluaCkKKwkJcmV0dXJu IGZhbHNlOwogCiAJLyogYmFpbCBvdXQgaW1tZWRpYXRlbHkgaWYgdGhlIHRhYmxlIGhhcyBu byBleHRlbmRlZCBzdGF0aXN0aWNzICovCiAJaWYgKCFyZWwtPnN0YXRsaXN0KQpAQCAtNTIz Miw2ICs1MjQwLDE0IEBAIGV4YW1pbmVfdmFyaWFibGUoUGxhbm5lckluZm8gKnJvb3QsIE5v ZGUgKm5vZGUsIGludCB2YXJSZWxpZCwKIAkJCWlmICh2YXJkYXRhLT5zdGF0c1R1cGxlKQog CQkJCWJyZWFrOwogCisJCQkvKgorCQkJICogV2hlbiBkZWFsaW5nIHdpdGggaW5oZXJpdGVu Y2UgdHJlZXMsIGlnbm9yZSBleHRlbmRlZCBzdGF0cyAod2hpY2gKKwkJCSAqIHdlcmUgYnVp bHQgd2l0aG91dCBkYXRhIGZyb20gY2hpbGQgcmVscywgYW5kIHNvIGRvIG5vdCByZXByZXNl bnQKKwkJCSAqIHRoZW0pLgorCQkJICovCisJCQlpZiAocGxhbm5lcl9ydF9mZXRjaChvbmVy ZWwtPnJlbGlkLCByb290KS0+aW5oKQorCQkJCWJyZWFrOworCiAJCQkvKiBza2lwIHN0YXRz IHdpdGhvdXQgcGVyLWV4cHJlc3Npb24gc3RhdHMgKi8KIAkJCWlmIChpbmZvLT5raW5kICE9 IFNUQVRTX0VYVF9FWFBSRVNTSU9OUykKIAkJCQljb250aW51ZTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dAppbmRleCBjNjBiYTQ1YWJhLi41NDEwZjU4Zjdm IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CkBAIC0xNzYs NiArMTc2LDMwIEBAIENSRUFURSBTVEFUSVNUSUNTIGFiMV9hX2Jfc3RhdHMgT04gYSwgYiBG Uk9NIGFiMTsKIEFOQUxZWkUgYWIxOwogRFJPUCBUQUJMRSBhYjEgQ0FTQ0FERTsKIE5PVElD RTogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgYWIxYworLS0gVGVzdHMgZm9yIHN0YXRzIHdp dGggaW5oZXJpdGFuY2UKK0NSRUFURSBUQUJMRSBzdHhkaW5oKGkgaW50LCBqIGludCk7CitD UkVBVEUgVEFCTEUgc3R4ZGluaDEoKSBJTkhFUklUUyhzdHhkaW5oKTsKK0lOU0VSVCBJTlRP IHN0eGRpbmggU0VMRUNUIGEsIGEvMTAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw5KWE7CitJ TlNFUlQgSU5UTyBzdHhkaW5oMSBTRUxFQ1QgYSwgYSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LDk5OSlhOworVkFDVVVNIEFOQUxZWkUgc3R4ZGluaCwgc3R4ZGluaDE7CistLSBFbnN1cmUg bm9uLWluaGVyaXRlZCBzdGF0cyBhcmUgbm90IGFwcGxpZWQgdG8gaW5oZXJpdGVkIHF1ZXJ5 CistLSBXaXRob3V0IHN0YXRzIG9iamVjdCwgaXQgbG9va3MgbGlrZSB0aGlzCitTRUxFQ1Qg KiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIHN0eGRpbmgqIEdS T1VQIEJZIDEsMicpOworIGVzdGltYXRlZCB8IGFjdHVhbCAKKy0tLS0tLS0tLS0tKy0tLS0t LS0tCisgICAgICAxMDAwIHwgICAxMDA4CisoMSByb3cpCisKK0NSRUFURSBTVEFUSVNUSUNT IHN0eGRpbmggT04gaSxqIEZST00gc3R4ZGluaDsKK1ZBQ1VVTSBBTkFMWVpFIHN0eGRpbmgs IHN0eGRpbmgxOworLS0gU2luY2UgdGhlIHN0YXRzIG9iamVjdCBkb2VzIG5vdCBpbmNsdWRl IGluaGVyaXRlZCBzdGF0cywgaXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGVzdGltYXRlcwor U0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBzdHhk aW5oKiBHUk9VUCBCWSAxLDInKTsKKyBlc3RpbWF0ZWQgfCBhY3R1YWwgCistLS0tLS0tLS0t LSstLS0tLS0tLQorICAgICAgMTAwMCB8ICAgMTAwOAorKDEgcm93KQorCitEUk9QIFRBQkxF IHN0eGRpbmgsIHN0eGRpbmgxOwogLS0gYmFzaWMgdGVzdCBmb3Igc3RhdGlzdGljcyBvbiBl eHByZXNzaW9ucwogQ1JFQVRFIFRBQkxFIGFiMSAoYSBJTlRFR0VSLCBiIElOVEVHRVIsIGMg VElNRVNUQU1QLCBkIFRJTUVTVEFNUFRaKTsKIC0tIGV4cHJlc3Npb24gc3RhdHMgbWF5IGJl IGJ1aWx0IG9uIGEgc2luZ2xlIGV4cHJlc3Npb24gY29sdW1uCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv c3RhdHNfZXh0LnNxbAppbmRleCA2ZmIzNzk2MmE3Li5hMTk2ZDVlMmY4IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwKQEAgLTExMiw2ICsxMTIsMjEgQEAgQ1JFQVRFIFNU QVRJU1RJQ1MgYWIxX2FfYl9zdGF0cyBPTiBhLCBiIEZST00gYWIxOwogQU5BTFlaRSBhYjE7 CiBEUk9QIFRBQkxFIGFiMSBDQVNDQURFOwogCistLSBUZXN0cyBmb3Igc3RhdHMgd2l0aCBp bmhlcml0YW5jZQorQ1JFQVRFIFRBQkxFIHN0eGRpbmgoaSBpbnQsIGogaW50KTsKK0NSRUFU RSBUQUJMRSBzdHhkaW5oMSgpIElOSEVSSVRTKHN0eGRpbmgpOworSU5TRVJUIElOVE8gc3R4 ZGluaCBTRUxFQ1QgYSwgYS8xMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDkpYTsKK0lOU0VS VCBJTlRPIHN0eGRpbmgxIFNFTEVDVCBhLCBhIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsOTk5 KWE7CitWQUNVVU0gQU5BTFlaRSBzdHhkaW5oLCBzdHhkaW5oMTsKKy0tIEVuc3VyZSBub24t aW5oZXJpdGVkIHN0YXRzIGFyZSBub3QgYXBwbGllZCB0byBpbmhlcml0ZWQgcXVlcnkKKy0t IFdpdGhvdXQgc3RhdHMgb2JqZWN0LCBpdCBsb29rcyBsaWtlIHRoaXMKK1NFTEVDVCAqIEZS T00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gc3R4ZGluaCogR1JPVVAg QlkgMSwyJyk7CitDUkVBVEUgU1RBVElTVElDUyBzdHhkaW5oIE9OIGksaiBGUk9NIHN0eGRp bmg7CitWQUNVVU0gQU5BTFlaRSBzdHhkaW5oLCBzdHhkaW5oMTsKKy0tIFNpbmNlIHRoZSBz dGF0cyBvYmplY3QgZG9lcyBub3QgaW5jbHVkZSBpbmhlcml0ZWQgc3RhdHMsIGl0IHNob3Vs ZCBub3QgYWZmZWN0IHRoZSBlc3RpbWF0ZXMKK1NFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1h dGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gc3R4ZGluaCogR1JPVVAgQlkgMSwyJyk7CitEUk9Q IFRBQkxFIHN0eGRpbmgsIHN0eGRpbmgxOworCiAtLSBiYXNpYyB0ZXN0IGZvciBzdGF0aXN0 aWNzIG9uIGV4cHJlc3Npb25zCiBDUkVBVEUgVEFCTEUgYWIxIChhIElOVEVHRVIsIGIgSU5U RUdFUiwgYyBUSU1FU1RBTVAsIGQgVElNRVNUQU1QVFopOwogCi0tIAoyLjMxLjEKCg== --------------Z0h5dcbvAVY37pTuKRhuxFdH--