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 1p5m92-0000om-QO for pgsql-hackers@arkaria.postgresql.org; Thu, 15 Dec 2022 11:11:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p5m91-0005pn-Mk for pgsql-hackers@arkaria.postgresql.org; Thu, 15 Dec 2022 11:11:19 +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 1p5m91-0005pe-9T for pgsql-hackers@lists.postgresql.org; Thu, 15 Dec 2022 11:11:19 +0000 Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1p5m8x-0004Ze-3N for pgsql-hackers@lists.postgresql.org; Thu, 15 Dec 2022 11:11:18 +0000 Received: by mail-ot1-x32e.google.com with SMTP id i26-20020a9d68da000000b00672301a1664so2630249oto.6 for ; Thu, 15 Dec 2022 03:11:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=yN4nU5JoK9CM8W7pHxvwkhg2ijQM6ElmdJx1p7ORydA=; b=c53BqUtk0w47KwRfd7RgA9cLqgBefA0lecUEBMH2mOBViwa3R2XeFSdIc7uIWjChV7 umq2VoFLL1ViJpGNGNOUyGuYjrZC4YA7ITJWt5P7FqFwmGD4Ugq2GbGKKYWJNXmBKgCO q0Q5L8YQITRgBQhz4HSRqsdFPwpgZoc5+MZaRgmICffFmYI3aYugOO5Q8x993zSkqG7X hV7uT6/is9joycUz/AuRuhN38303/9ntavZsoifz/04hFKTpwx/2JIqtfZ/dT2loGI6d I0eTLFBXCH8eE1L/hxmMdDiJ1Cjx5aa5XajUBYkZaFfxYhxs4crntOM6Tr3CuorU/yCW 3NEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=yN4nU5JoK9CM8W7pHxvwkhg2ijQM6ElmdJx1p7ORydA=; b=V15GbIA3c3GO7Mbe3eTCXiGDcrU5Mi+MCBQbkIKfYyWMp3e5tKgK6rE+AT9Gfm2imi S6g8fLST/ThEFaH8ehUq0w91X75WlUd3VPDd7yJ4iQm0RsAgVuMZf1+kwmtgRBp7nhHr qf6MLun6uiYIS1O3cTwX7Bdf7XOuU7w9SDJIXAhNIb4vGJpgyx847idRbmx2FEjc8aQh ynz/y37T7TztM0cgqtvs5lZDscAT+h+HQeOI+NvvUq8FJLFm+4ZGVfEiImN1LlnKSDH8 bgB8iXG1yMpItdv4yCdtMl1P1yB8h4v2u22xdL8I9G9ICOPSBbNclE1HZqxkxiI8sXNE dIHw== X-Gm-Message-State: ANoB5pkXvOHJvawP1jczsN9ilJIQfSPK7Ps/pcINY+BVNQZ2/ItTpV8r 4Lqhu7D1rMslfkMHGfqlvg9ScJuEp26Fa6sOCmM= X-Google-Smtp-Source: AA0mqf7YA+w43WpAU49ZPgfBxIgVejBMd3BGK4C9+h82fd2uttSb+ECIUAtIqvpUT/iGXQIoAucaa59Rkd0WPN9Zsk0= X-Received: by 2002:a9d:6308:0:b0:66e:7d90:b6a8 with SMTP id q8-20020a9d6308000000b0066e7d90b6a8mr15148891otk.211.1671102673412; Thu, 15 Dec 2022 03:11:13 -0800 (PST) MIME-Version: 1.0 References: <3163474.aeNJFYEL58@aivenronan> <9f61ddbf-2989-1536-b31e-6459370a6baa@postgrespro.ru> <2202180.iZASKD2KPV@aivenlaptop> In-Reply-To: From: David Rowley Date: Fri, 16 Dec 2022 00:10:44 +1300 Message-ID: Subject: Re: Add proper planner support for ORDER BY / DISTINCT aggregates To: Richard Guo Cc: Ronan Dunklau , Justin Pryzby , Pavel Luzanov , Tom Lane , pgsql-hackers@lists.postgresql.org, Ranier Vilela Content-Type: multipart/mixed; boundary="0000000000003c012d05efdbe98c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003c012d05efdbe98c Content-Type: text/plain; charset="UTF-8" On Tue, 13 Dec 2022 at 20:53, David Rowley wrote: > I think what we need to do is: Do our best to give incremental sort > the most realistic costs we can and accept that it might choose a > worse plan in some cases. Users can turn it off if they really have no > other means to convince the planner it's wrong. > > Additionally, I think what we also need to add a GUC such as > enable_presorted_aggregate. People can use that when their Index Scan > -> Incremental Sort -> Aggregate plan is worse than their previous Seq > Scan -> Sort -> Aggregate plan that they were getting in < 16. > Turning off enable_incremental_sort alone won't give them the same > aggregate plan that they had in pg15 as we always set the > query_pathkeys to request a sort order that will suit the order by / > distinct aggregates. > > I'll draft up a patch for the enable_presorted_aggregate. I've attached a patch series for this. v3-0001 can be ignored here. I've posted about that in [1]. Any discussion about that patch should take place over there. The patch is required to get the 0002 patch to pass isolation check v3-0002 removes the 1.5 x cost pessimism from incremental sort and also rewrites how we make incremental sort paths. I've now gone through the remaining places where we create an incremental sort path to give all those the same treatment that I'd added to add_paths_to_grouping_rel(). There was a 1 or 2 plan changes in the regression tests. One was the isolation test change, which I claim to be a broken test and should be fixed another way. The other was performing a Sort on the cheapest input path which had presorted keys. That plan now uses an Incremental Sort to make use of the presorted keys. I'm happy to see just how much redundant code this removes. About 200 lines. v3-0003 adds the enable_presorted_aggregate GUC. David [1] https://www.postgresql.org/message-id/CAApHDvrbDhObhLV+=U_K_-t+2Av2av1aL9d+2j_3AO-XndaviA@mail.gmail.com --0000000000003c012d05efdbe98c Content-Type: text/plain; charset="US-ASCII"; name="v3-0001-Re-adjust-drop-index-concurrently-1-isolation-tes.patch" Content-Disposition: attachment; filename="v3-0001-Re-adjust-drop-index-concurrently-1-isolation-tes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lbozb1880 RnJvbSBlZDBlMGJkNTI1ZWExNmVhNzI0ZTk3OTRiNWY0ZmVkZGYyOWRhNDk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCAxNSBEZWMgMjAyMiAxNzo0OTo0MCArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjMgMS8z XSBSZS1hZGp1c3QgZHJvcC1pbmRleC1jb25jdXJyZW50bHktMSBpc29sYXRpb24gdGVzdAoKSXQg c2VlbXMgdGhhdCBkcm9wLWluZGV4LWNvbmN1cnJlbnRseSBoYXMgc3RhcnRlZCB0byBmb3JnZXQg d2hhdCBpdCB3YXMKb3JpZ2luYWxseSBtZWFudCB0byBiZSB0ZXN0aW5nLiAgZDJkOGEyMjliLCB3 aGljaCBhZGRlZCBpbmNyZW1lbnRhbCBzb3J0cwpjaGFuZ2VkIHRoZSBleHBlY3RlZCBwbGFuIHRv IGJlIGFuIEluZGV4IFNjYW4gcGxhbiBpbnN0ZWFkIG9mIGEgU2VxIFNjYW4KcGxhbi4gIFRoaXMg b2NjdXJyZWQgYXMgdGhlIHByaW1hcnkga2V5IGluZGV4IG9mIHRoZSB0YWJsZSBpbiBxdWVzdGlv bgpwcm92aWRlZCBwcmVzb3J0ZWQgaW5wdXQgYW5kLCBiZWNhdXNlIHRoYXQgaW5kZXggaGFwcGVu ZWQgdG8gYmUgdGhlCmNoZWFwZXN0IGlucHV0IHBhdGggZHVlIHRvIGVuYWJsZV9zZXFzY2FuIGJl aW5nIGRpc2FibGVkLCB0aGUgaW5jcmVtZW50YWwKc29ydCBjaGFuZ2VzIGp1c3QgYWRkZWQgYSBT b3J0IG9uIHRvcCBvZiB0aGF0LiAgSXQgc2VlbXMgYmFzZWQgb24gdGhlIG5hbWUKb2YgdGhlIFBS RVBBUkVkIHN0YXRlbWVudCB0aGF0IHRoZSBpbnRlbnRpb24gaGVyZSBpcyB0aGF0IHF1ZXJ5IHBy b2R1Y2UgYQpzZXFzY2FuIHBsYW4uCgpUaGUgcmVhc29uIHRoaXMgdGVzdCBoYXMgYmVjb21lIGJy b2tlbiBzZWVtcyB0byBiZSBkdWUgdG8gaG93IHRoZSB0ZXN0IHdhcwpvcmlnaW5hbGx5IGNvZGVk LiBJdCB0cmllZCB0byBmb3JjZSBhIHNlcXNjYW4gcGxhbiBieSBwZXJmb3JtaW5nIHNvbWUKY2Fz dGluZyB0byBtYWtlIGl0IHNvIHRoZSB0ZXN0X2RjIGNvdWxkbid0IGJlIHVzZWQgdG8gcGVyZm9y bSB0aGUgcmVxdWlyZWQKZmlsdGVyaW5nLiAgVGhpcyBsaWtlbHkgd2Fzbid0IHRoZSBiZXN0IGRl c2lnbi4gIEl0IHNlZW1zIG11Y2ggYmV0dGVyIGp1c3QKdG8gdG9nZ2xlIGVuYWJsZV9zZXFzY2Fu IHRvIGFsbG93IHRoZSBwbGFubmVyIHRvIHByb2R1Y2UgYSBtb3JlCnByZWRpY3RhYmxlIHBsYW4u ICBUcnlpbmcgdG8gY29heCB0aGUgcGxhbm5lciBpbnRvIHVzaW5nIGEgcGxhbiB3aGljaCBoYXMK Y29zdGVkIGluIGEgZGlzYWJsZV9jb3N0IHNlZW1zIGxpa2UgaXQncyBhbHdheXMgZ29pbmcgdG8g YmUgZmxha2V5LiAgU28KbGV0J3MgZ2V0IHJpZCBvZiB0aGF0IGFuZCBwdXQgdGhlIGV4cGVjdGVk IHBsYW5zIGNsb3NlciB0byB3aGF0IHRoZXkgd2VyZQpvcmlnaW5hbGx5IHdoZW4gdGhlIHRlc3Qg d2FzIGFkZGVkLgoKQWRkaXRpb25hbGx5LCByZW5hbWUgYSBmZXcgdGhpbmdzIGluIHRoZSB0ZXN0 IGFuZCBhZGQgc29tZSBhZGRpdGlvbmFsCndvcmRpbmcgdG8gdGhlIGNvbW1lbnRzIHRvIHRyeSBh bmQgbWFrZSBpdCBtb3JlIGNsZWFyIGluIHRoZSBmdXR1cmUgd2hhdAp3ZSBleHBlY3QgdGhpcyB0 ZXN0IHRvIGJlIGRvaW5nLgotLS0KIC4uLi9leHBlY3RlZC9kcm9wLWluZGV4LWNvbmN1cnJlbnRs eS0xLm91dCAgICB8IDMxICsrKysrKysrKystLS0tLS0tLS0KIC4uLi9leHBlY3RlZC9kcm9wLWlu ZGV4LWNvbmN1cnJlbnRseS0xXzIub3V0ICB8IDMxICsrKysrKysrKystLS0tLS0tLS0KIC4uLi9z cGVjcy9kcm9wLWluZGV4LWNvbmN1cnJlbnRseS0xLnNwZWMgICAgICB8IDIyICsrKysrKystLS0t LS0KIDMgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2Ryb3AtaW5kZXgtY29uY3Vy cmVudGx5LTEub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2Ryb3AtaW5kZXgtY29u Y3VycmVudGx5LTEub3V0CmluZGV4IDk3ZTFhNmU3NzkuLjFjYjIyNTA4OTEgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9kcm9wLWluZGV4LWNvbmN1cnJlbnRseS0xLm91 dAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvZHJvcC1pbmRleC1jb25jdXJyZW50 bHktMS5vdXQKQEAgLTEsMTcgKzEsMTcgQEAKIFBhcnNlZCB0ZXN0IHNwZWMgd2l0aCAzIHNlc3Np b25zCiAKLXN0YXJ0aW5nIHBlcm11dGF0aW9uOiBub3NlcSBjaGtpc28gcHJlcGkgcHJlcHMgYmVn aW4gZXhwbGFpbmkgZXhwbGFpbnMgc2VsZWN0MiBkcm9wIGluc2VydDIgZW5kMiBzZWxlY3RpIHNl bGVjdHMgZW5kCi1zdGVwIG5vc2VxOiBTRVQgZW5hYmxlX3NlcXNjYW4gPSBmYWxzZTsKK3N0YXJ0 aW5nIHBlcm11dGF0aW9uOiBjaGtpc28gcHJlcGkgcHJlcHMgYmVnaW4gZGlzYWJsZXNlcSBleHBs YWluaSBlbmFibGVzZXEgZXhwbGFpbnMgc2VsZWN0MiBkcm9wIGluc2VydDIgZW5kMiBzZWxlY3Rp IHNlbGVjdHMgZW5kCiBzdGVwIGNoa2lzbzogU0VMRUNUIChzZXR0aW5nIGluICgncmVhZCBjb21t aXR0ZWQnLCdyZWFkIHVuY29tbWl0dGVkJykpIEFTIGlzX3JlYWRfY29tbWl0dGVkIEZST00gcGdf c2V0dGluZ3MgV0hFUkUgbmFtZSA9ICdkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbic7CiBp c19yZWFkX2NvbW1pdHRlZAogLS0tLS0tLS0tLS0tLS0tLS0KIHQgICAgICAgICAgICAgICAgCiAo MSByb3cpCiAKLXN0ZXAgcHJlcGk6IFBSRVBBUkUgZ2V0cm93X2lkeCBBUyBTRUxFQ1QgKiBGUk9N IHRlc3RfZGMgV0hFUkUgZGF0YT0zNCBPUkRFUiBCWSBpZCxkYXRhOwotc3RlcCBwcmVwczogUFJF UEFSRSBnZXRyb3dfc2VxIEFTIFNFTEVDVCAqIEZST00gdGVzdF9kYyBXSEVSRSBkYXRhOjp0ZXh0 PTM0Ojp0ZXh0IE9SREVSIEJZIGlkLGRhdGE7CitzdGVwIHByZXBpOiBQUkVQQVJFIGdldHJvd19p ZHhzY2FuIEFTIFNFTEVDVCAqIEZST00gdGVzdF9kYyBXSEVSRSBkYXRhID0gMzQgT1JERVIgQlkg aWQsZGF0YTsKK3N0ZXAgcHJlcHM6IFBSRVBBUkUgZ2V0cm93X3NlcXNjYW4gQVMgU0VMRUNUICog RlJPTSB0ZXN0X2RjIFdIRVJFIGRhdGEgPSAzNCBPUkRFUiBCWSBpZCxkYXRhOwogc3RlcCBiZWdp bjogQkVHSU47Ci1zdGVwIGV4cGxhaW5pOiBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgZ2V0 cm93X2lkeDsKK3N0ZXAgZGlzYWJsZXNlcTogU0VUIGVuYWJsZV9zZXFzY2FuID0gZmFsc2U7Citz dGVwIGV4cGxhaW5pOiBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgZ2V0cm93X2lkeHNjYW47 CiBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBTb3J0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkBAIC0yMCwxNiArMjAsMTcgQEAgU29ydAog ICAgICAgICBJbmRleCBDb25kOiAoZGF0YSA9IDM0KSAgICAgICAgICAgICAgIAogKDQgcm93cykK IAotc3RlcCBleHBsYWluczogRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIGdldHJvd19zZXE7 Ci1RVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Tb3J0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gIFNvcnQgS2V5OiBpZCwgZGF0YSAgICAg ICAgICAgICAgICAgICAgICAgICAgCi0gIC0+ICBJbmRleCBTY2FuIHVzaW5nIHRlc3RfZGNfcGtl eSBvbiB0ZXN0X2RjCi0gICAgICAgIEZpbHRlcjogKChkYXRhKTo6dGV4dCA9ICczNCc6OnRleHQp ICAgCitzdGVwIGVuYWJsZXNlcTogU0VUIGVuYWJsZV9zZXFzY2FuID0gdHJ1ZTsKK3N0ZXAgZXhw bGFpbnM6IEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBnZXRyb3dfc2Vxc2NhbjsKK1FVRVJZ IFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTb3J0 ICAgICAgICAgICAgICAgICAgICAgICAKKyAgU29ydCBLZXk6IGlkICAgICAgICAgICAgIAorICAt PiAgU2VxIFNjYW4gb24gdGVzdF9kYyAgCisgICAgICAgIEZpbHRlcjogKGRhdGEgPSAzNCkKICg0 IHJvd3MpCiAKLXN0ZXAgc2VsZWN0MjogU0VMRUNUICogRlJPTSB0ZXN0X2RjIFdIRVJFIGRhdGE9 MzQgT1JERVIgQlkgaWQsZGF0YTsKK3N0ZXAgc2VsZWN0MjogU0VMRUNUICogRlJPTSB0ZXN0X2Rj IFdIRVJFIGRhdGEgPSAzNCBPUkRFUiBCWSBpZCxkYXRhOwogaWR8ZGF0YQogLS0rLS0tLQogMzR8 ICAzNApAQCAtMzgsMTQgKzM5LDE0IEBAIGlkfGRhdGEKIHN0ZXAgZHJvcDogRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgdGVzdF9kY19kYXRhOyA8d2FpdGluZyAuLi4+CiBzdGVwIGluc2VydDI6IElO U0VSVCBJTlRPIHRlc3RfZGMoZGF0YSkgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MTAwKTsKIHN0ZXAgZW5kMjogQ09NTUlUOwotc3RlcCBzZWxlY3RpOiBFWEVDVVRFIGdldHJvd19p ZHg7CitzdGVwIHNlbGVjdGk6IEVYRUNVVEUgZ2V0cm93X2lkeHNjYW47CiAgaWR8ZGF0YQogLS0t Ky0tLS0KICAzNHwgIDM0CiAxMzR8ICAzNAogKDIgcm93cykKIAotc3RlcCBzZWxlY3RzOiBFWEVD VVRFIGdldHJvd19zZXE7CitzdGVwIHNlbGVjdHM6IEVYRUNVVEUgZ2V0cm93X3NlcXNjYW47CiAg aWR8ZGF0YQogLS0tKy0tLS0KICAzNHwgIDM0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRp b24vZXhwZWN0ZWQvZHJvcC1pbmRleC1jb25jdXJyZW50bHktMV8yLm91dCBiL3NyYy90ZXN0L2lz b2xhdGlvbi9leHBlY3RlZC9kcm9wLWluZGV4LWNvbmN1cnJlbnRseS0xXzIub3V0CmluZGV4IDA0 NjEyZDNjYWMuLjI2NmIwZTRhZGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBl Y3RlZC9kcm9wLWluZGV4LWNvbmN1cnJlbnRseS0xXzIub3V0CisrKyBiL3NyYy90ZXN0L2lzb2xh dGlvbi9leHBlY3RlZC9kcm9wLWluZGV4LWNvbmN1cnJlbnRseS0xXzIub3V0CkBAIC0xLDE3ICsx LDE3IEBACiBQYXJzZWQgdGVzdCBzcGVjIHdpdGggMyBzZXNzaW9ucwogCi1zdGFydGluZyBwZXJt dXRhdGlvbjogbm9zZXEgY2hraXNvIHByZXBpIHByZXBzIGJlZ2luIGV4cGxhaW5pIGV4cGxhaW5z IHNlbGVjdDIgZHJvcCBpbnNlcnQyIGVuZDIgc2VsZWN0aSBzZWxlY3RzIGVuZAotc3RlcCBub3Nl cTogU0VUIGVuYWJsZV9zZXFzY2FuID0gZmFsc2U7CitzdGFydGluZyBwZXJtdXRhdGlvbjogY2hr aXNvIHByZXBpIHByZXBzIGJlZ2luIGRpc2FibGVzZXEgZXhwbGFpbmkgZW5hYmxlc2VxIGV4cGxh aW5zIHNlbGVjdDIgZHJvcCBpbnNlcnQyIGVuZDIgc2VsZWN0aSBzZWxlY3RzIGVuZAogc3RlcCBj aGtpc286IFNFTEVDVCAoc2V0dGluZyBpbiAoJ3JlYWQgY29tbWl0dGVkJywncmVhZCB1bmNvbW1p dHRlZCcpKSBBUyBpc19yZWFkX2NvbW1pdHRlZCBGUk9NIHBnX3NldHRpbmdzIFdIRVJFIG5hbWUg PSAnZGVmYXVsdF90cmFuc2FjdGlvbl9pc29sYXRpb24nOwogaXNfcmVhZF9jb21taXR0ZWQKIC0t LS0tLS0tLS0tLS0tLS0tCiBmICAgICAgICAgICAgICAgIAogKDEgcm93KQogCi1zdGVwIHByZXBp OiBQUkVQQVJFIGdldHJvd19pZHggQVMgU0VMRUNUICogRlJPTSB0ZXN0X2RjIFdIRVJFIGRhdGE9 MzQgT1JERVIgQlkgaWQsZGF0YTsKLXN0ZXAgcHJlcHM6IFBSRVBBUkUgZ2V0cm93X3NlcSBBUyBT RUxFQ1QgKiBGUk9NIHRlc3RfZGMgV0hFUkUgZGF0YTo6dGV4dD0zNDo6dGV4dCBPUkRFUiBCWSBp ZCxkYXRhOworc3RlcCBwcmVwaTogUFJFUEFSRSBnZXRyb3dfaWR4c2NhbiBBUyBTRUxFQ1QgKiBG Uk9NIHRlc3RfZGMgV0hFUkUgZGF0YSA9IDM0IE9SREVSIEJZIGlkLGRhdGE7CitzdGVwIHByZXBz OiBQUkVQQVJFIGdldHJvd19zZXFzY2FuIEFTIFNFTEVDVCAqIEZST00gdGVzdF9kYyBXSEVSRSBk YXRhID0gMzQgT1JERVIgQlkgaWQsZGF0YTsKIHN0ZXAgYmVnaW46IEJFR0lOOwotc3RlcCBleHBs YWluaTogRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIGdldHJvd19pZHg7CitzdGVwIGRpc2Fi bGVzZXE6IFNFVCBlbmFibGVfc2Vxc2NhbiA9IGZhbHNlOworc3RlcCBleHBsYWluaTogRVhQTEFJ TiAoQ09TVFMgT0ZGKSBFWEVDVVRFIGdldHJvd19pZHhzY2FuOwogUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogU29ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIApAQCAtMjAsMTYgKzIwLDE3IEBAIFNvcnQKICAgICAgICAgSW5kZXggQ29uZDog KGRhdGEgPSAzNCkgICAgICAgICAgICAgICAKICg0IHJvd3MpCiAKLXN0ZXAgZXhwbGFpbnM6IEVY UExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBnZXRyb3dfc2VxOwotUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotU29ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAotICBTb3J0IEtleTogaWQsIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAg IAotICAtPiAgSW5kZXggU2NhbiB1c2luZyB0ZXN0X2RjX3BrZXkgb24gdGVzdF9kYwotICAgICAg ICBGaWx0ZXI6ICgoZGF0YSk6OnRleHQgPSAnMzQnOjp0ZXh0KSAgIAorc3RlcCBlbmFibGVzZXE6 IFNFVCBlbmFibGVfc2Vxc2NhbiA9IHRydWU7CitzdGVwIGV4cGxhaW5zOiBFWFBMQUlOIChDT1NU UyBPRkYpIEVYRUNVVEUgZ2V0cm93X3NlcXNjYW47CitRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU29ydCAgICAgICAgICAgICAgICAgICAg ICAgCisgIFNvcnQgS2V5OiBpZCAgICAgICAgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9uIHRlc3Rf ZGMgIAorICAgICAgICBGaWx0ZXI6IChkYXRhID0gMzQpCiAoNCByb3dzKQogCi1zdGVwIHNlbGVj dDI6IFNFTEVDVCAqIEZST00gdGVzdF9kYyBXSEVSRSBkYXRhPTM0IE9SREVSIEJZIGlkLGRhdGE7 CitzdGVwIHNlbGVjdDI6IFNFTEVDVCAqIEZST00gdGVzdF9kYyBXSEVSRSBkYXRhID0gMzQgT1JE RVIgQlkgaWQsZGF0YTsKIGlkfGRhdGEKIC0tKy0tLS0KIDM0fCAgMzQKQEAgLTM4LDEzICszOSwx MyBAQCBpZHxkYXRhCiBzdGVwIGRyb3A6IERST1AgSU5ERVggQ09OQ1VSUkVOVExZIHRlc3RfZGNf ZGF0YTsgPHdhaXRpbmcgLi4uPgogc3RlcCBpbnNlcnQyOiBJTlNFUlQgSU5UTyB0ZXN0X2RjKGRh dGEpIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCk7CiBzdGVwIGVuZDI6IENP TU1JVDsKLXN0ZXAgc2VsZWN0aTogRVhFQ1VURSBnZXRyb3dfaWR4Oworc3RlcCBzZWxlY3RpOiBF WEVDVVRFIGdldHJvd19pZHhzY2FuOwogaWR8ZGF0YQogLS0rLS0tLQogMzR8ICAzNAogKDEgcm93 KQogCi1zdGVwIHNlbGVjdHM6IEVYRUNVVEUgZ2V0cm93X3NlcTsKK3N0ZXAgc2VsZWN0czogRVhF Q1VURSBnZXRyb3dfc2Vxc2NhbjsKIGlkfGRhdGEKIC0tKy0tLS0KIDM0fCAgMzQKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9kcm9wLWluZGV4LWNvbmN1cnJlbnRseS0xLnNw ZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvZHJvcC1pbmRleC1jb25jdXJyZW50bHktMS5z cGVjCmluZGV4IDgxMmI1ZGUyMjYuLmE1N2EwMjQ2OWQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lz b2xhdGlvbi9zcGVjcy9kcm9wLWluZGV4LWNvbmN1cnJlbnRseS0xLnNwZWMKKysrIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL2Ryb3AtaW5kZXgtY29uY3VycmVudGx5LTEuc3BlYwpAQCAtMyw3 ICszLDggQEAKICMgVGhpcyB0ZXN0IHNob3dzIHRoYXQgdGhlIGNvbmN1cnJlbnQgd3JpdGUgYmVo YXZpb3VyIHdvcmtzIGNvcnJlY3RseQogIyB3aXRoIHRoZSBleHBlY3RlZCBvdXRwdXQgYmVpbmcg MiByb3dzIGF0IHRoZSBSRUFEIENPTU1JVFRFRCBhbmQgUkVBRAogIyBVTkNPTU1JVFRFRCB0cmFu c2FjdGlvbiBpc29sYXRpb24gbGV2ZWxzLCBhbmQgMSByb3cgYXQgdGhlIG90aGVyCi0jIHRyYW5z YWN0aW9uIGlzb2xhdGlvbiBsZXZlbHMuCisjIHRyYW5zYWN0aW9uIGlzb2xhdGlvbiBsZXZlbHMu ICBXZSBlbnN1cmUgdGhpcyBpcyB0aGUgY2FzZSBieSBjaGVja2luZworIyB0aGUgcmV0dXJuZWQg cm93cyBpbiBhbiBpbmRleCBzY2FuIHBsYW4gYW5kIGEgc2VxIHNjYW4gcGxhbi4KICMKIHNldHVw CiB7CkBAIC0xOCwyNCArMTksMjUgQEAgdGVhcmRvd24KIH0KIAogc2Vzc2lvbiBzMQotc3RlcCBu b3NlcSB7IFNFVCBlbmFibGVfc2Vxc2NhbiA9IGZhbHNlOyB9CiBzdGVwIGNoa2lzbyB7IFNFTEVD VCAoc2V0dGluZyBpbiAoJ3JlYWQgY29tbWl0dGVkJywncmVhZCB1bmNvbW1pdHRlZCcpKSBBUyBp c19yZWFkX2NvbW1pdHRlZCBGUk9NIHBnX3NldHRpbmdzIFdIRVJFIG5hbWUgPSAnZGVmYXVsdF90 cmFuc2FjdGlvbl9pc29sYXRpb24nOyB9Ci1zdGVwIHByZXBpIHsgUFJFUEFSRSBnZXRyb3dfaWR4 IEFTIFNFTEVDVCAqIEZST00gdGVzdF9kYyBXSEVSRSBkYXRhPTM0IE9SREVSIEJZIGlkLGRhdGE7 IH0KLXN0ZXAgcHJlcHMgeyBQUkVQQVJFIGdldHJvd19zZXEgQVMgU0VMRUNUICogRlJPTSB0ZXN0 X2RjIFdIRVJFIGRhdGE6OnRleHQ9MzQ6OnRleHQgT1JERVIgQlkgaWQsZGF0YTsgfQorc3RlcCBw cmVwaSB7IFBSRVBBUkUgZ2V0cm93X2lkeHNjYW4gQVMgU0VMRUNUICogRlJPTSB0ZXN0X2RjIFdI RVJFIGRhdGEgPSAzNCBPUkRFUiBCWSBpZCxkYXRhOyB9CitzdGVwIHByZXBzIHsgUFJFUEFSRSBn ZXRyb3dfc2Vxc2NhbiBBUyBTRUxFQ1QgKiBGUk9NIHRlc3RfZGMgV0hFUkUgZGF0YSA9IDM0IE9S REVSIEJZIGlkLGRhdGE7IH0KIHN0ZXAgYmVnaW4geyBCRUdJTjsgfQotc3RlcCBleHBsYWluaSB7 IEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBnZXRyb3dfaWR4OyB9Ci1zdGVwIGV4cGxhaW5z IHsgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIGdldHJvd19zZXE7IH0KLXN0ZXAgc2VsZWN0 aSB7IEVYRUNVVEUgZ2V0cm93X2lkeDsgfQotc3RlcCBzZWxlY3RzIHsgRVhFQ1VURSBnZXRyb3df c2VxOyB9CitzdGVwIGRpc2FibGVzZXEgeyBTRVQgZW5hYmxlX3NlcXNjYW4gPSBmYWxzZTsgfQor c3RlcCBleHBsYWluaSB7IEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBnZXRyb3dfaWR4c2Nh bjsgfQorc3RlcCBlbmFibGVzZXEgeyBTRVQgZW5hYmxlX3NlcXNjYW4gPSB0cnVlOyB9CitzdGVw IGV4cGxhaW5zIHsgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIGdldHJvd19zZXFzY2FuOyB9 CitzdGVwIHNlbGVjdGkgeyBFWEVDVVRFIGdldHJvd19pZHhzY2FuOyB9CitzdGVwIHNlbGVjdHMg eyBFWEVDVVRFIGdldHJvd19zZXFzY2FuOyB9CiBzdGVwIGVuZCB7IENPTU1JVDsgfQogCiBzZXNz aW9uIHMyCiBzZXR1cCB7IEJFR0lOOyB9Ci1zdGVwIHNlbGVjdDIgeyBTRUxFQ1QgKiBGUk9NIHRl c3RfZGMgV0hFUkUgZGF0YT0zNCBPUkRFUiBCWSBpZCxkYXRhOyB9CitzdGVwIHNlbGVjdDIgeyBT RUxFQ1QgKiBGUk9NIHRlc3RfZGMgV0hFUkUgZGF0YSA9IDM0IE9SREVSIEJZIGlkLGRhdGE7IH0K IHN0ZXAgaW5zZXJ0MiB7IElOU0VSVCBJTlRPIHRlc3RfZGMoZGF0YSkgU0VMRUNUICogRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKTsgfQogc3RlcCBlbmQyIHsgQ09NTUlUOyB9CiAKIHNlc3Np b24gczMKIHN0ZXAgZHJvcCB7IERST1AgSU5ERVggQ09OQ1VSUkVOVExZIHRlc3RfZGNfZGF0YTsg fQogCi1wZXJtdXRhdGlvbiBub3NlcSBjaGtpc28gcHJlcGkgcHJlcHMgYmVnaW4gZXhwbGFpbmkg ZXhwbGFpbnMgc2VsZWN0MiBkcm9wIGluc2VydDIgZW5kMiBzZWxlY3RpIHNlbGVjdHMgZW5kCitw ZXJtdXRhdGlvbiBjaGtpc28gcHJlcGkgcHJlcHMgYmVnaW4gZGlzYWJsZXNlcSBleHBsYWluaSBl bmFibGVzZXEgZXhwbGFpbnMgc2VsZWN0MiBkcm9wIGluc2VydDIgZW5kMiBzZWxlY3RpIHNlbGVj dHMgZW5kCi0tIAoyLjM1LjEud2luZG93cy4yCgo= --0000000000003c012d05efdbe98c Content-Type: text/plain; charset="US-ASCII"; name="v3-0002-Remove-pessimistic-cost-penalization-from-Increme.patch" Content-Disposition: attachment; filename="v3-0002-Remove-pessimistic-cost-penalization-from-Increme.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lbozb5271 RnJvbSAzMTEyY2M3ZTQwNzc4ZDNkMzc3NjYwZDg2NGRiMWYyMThhM2IyY2Y2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCA4IE5vdiAyMDIyIDE0OjM2OjM4ICsxMzAwClN1YmplY3Q6IFtQQVRDSCB2MyAyLzNd IFJlbW92ZSBwZXNzaW1pc3RpYyBjb3N0IHBlbmFsaXphdGlvbiBmcm9tIEluY3JlbWVudGFsCiBT b3J0CgpXaGVuIGluY3JlbWVudGFsIHNvcnRzIHdlcmUgYWRkZWQgaW4gdjEzIGEgMS41eCBwZXNz aW1pc20gZmFjdG9yIHdhcyBhZGRlZAp0byB0aGUgY29zdCBtb2RhbC4gIFNlZW1pbmdseSB0aGlz IHdhcyBkb25lIGJlY2F1c2UgdGhlIGNvc3QgbW9kYWwgb25seQpoYXMgYW4gZXN0aW1hdGUgb2Yg dGhlIHRvdGFsIG51bWJlciBvZiBpbnB1dCByb3dzIGFuZCB0aGUgbnVtYmVyIG9mCnByZXNvcnRl ZCBncm91cHMuICBJdCBhc3N1bWVzIHRoYXQgdGhlIGlucHV0IHJvd3Mgd2lsbCBiZSBldmVubHkK ZGlzdHJpYnV0ZWQgdGhyb3VnaG91dCB0aGUgcHJlc29ydGVkIGdyb3Vwcy4gIFRoZSAxLjV4IHBl c3NpbWlzbSBmYWN0b3IKd2FzIGFkZGVkIHRvIHNsaWdodGx5IHJlZHVjZSB0aGUgbGlrZWxpaG9v ZCBvZiBpbmNyZW1lbnRhbCBzb3J0cyBiZWluZwp1c2VkIGluIHRoZSBob3BlIHRvIGF2b2lkIHBl cmZvcm1hbmNlIHJlZ3Jlc3Npb25zIHdoZXJlIGFuIGluY3JlbWVudGFsCnNvcnQgcGxhbiB3YXMg cGlja2VkIGFuZCB0dXJuZWQgb3V0IHNsb3dlciBkdWUgdG8gYSBsYXJnZSBza2V3IGluIHRoZQpu dW1iZXIgb2Ygcm93cyBpbiB0aGUgcHJlc29ydGVkIGdyb3Vwcy4KCkFuIGFkZGl0aW9uYWwgcXVp cmsgd2l0aCB0aGUgcGF0aCBnZW5lcmF0aW9uIGNvZGUgbWVhbnQgdGhhdCB3ZSBjb3VsZApjb25z aWRlciBib3RoIGEgc29ydCBhbmQgYW4gaW5jcmVtZW50YWwgc29ydCBvbiBwYXRocyB3aXRoIHBy ZXNvcnRlZCBrZXlzLgpUaGlzIG1lYW50IHRoYXQgd2l0aCB0aGUgcGVzc2ltaXNtIGZhY3Rvciwg aXQgd2FzIHBvc3NpYmxlIHRoYXQgd2Ugb3B0ZWQKdG8gcGVyZm9ybSBhIHNvcnQgcmF0aGVyIHRo YW4gYW4gaW5jcmVtZW50YWwgc29ydCB3aGVuIHRoZSBnaXZlbiBwYXRoIGhhZApwcmVzb3J0ZWQg a2V5cy4KCkhlcmUgd2UgcmVtb3ZlIHRoZSAxLjV4IHBlc3NpbWlzbSBmYWN0b3IgdG8gYWxsb3cg aW5jcmVtZW50YWwgc29ydHMgdG8KaGF2ZSBhIGZhaXJlciBjaGFuY2UgYXQgYmVpbmcgY2hvc2Vu IGFnYWluc3QgYSBmdWxsIHNvcnQuCgpBZGRpdGlvbmFsbHksIHRoaXMgY2hhbmdlcyBob3cgaW5j cmVtZW50YWwgc29ydCBwYXRocyBhcmUgZ2VuZXJhdGVkLgoKUHJldmlvdXNseSB3ZSB3b3VsZCBn ZW5lcmFsbHkgY3JlYXRlIGEgc29ydCBwYXRoIG9uIHRoZSBjaGVhcGVzdCBpbnB1dApwYXRoIChp ZiB0aGF0IHdhc24ndCBzb3J0ZWQgYWxyZWFkeSkgYW5kIGluY3JlbWVudGFsIHNvcnQgcGF0aHMg b24gYW55CnBhdGggd2hpY2ggaGFkIHByZXNvcnRlZCBrZXlzLiAgVGhpcyBtZWFudCB0aGF0IGlm IHRoZSBjaGVhcGVzdCBpbnB1dCBwYXRoCndhc24ndCBjb21wbGV0ZWx5IHNvcnRlZCBidXQgaGFw cGVuZWQgdG8gaGF2ZSBwcmVzb3J0ZWQga2V5cywgd2Ugd291bGQKY3JlYXRlIGEgZnVsbCBzb3J0 IHBhdGggKmFuZCogYW4gaW5jcmVtZW50YWwgc29ydCBwYXRoIG9uIHRoYXQgaW5wdXQgcGF0aC4K SGVyZSB3ZSBjaGFuZ2UgdGhpcyBsb2dpYyBzbyB0aGF0IGlmIHRoZXJlIGFyZSBwcmVzb3J0ZWQg a2V5cywgd2Ugb25seQpjcmVhdGUgYW4gaW5jcmVtZW50YWwgc29ydCBwYXRoLCBhbmQgY3JlYXRl IHNvcnQgcGF0aHMgb25seSB3aGVuIGEgZnVsbApzb3J0IGlzIHJlcXVpcmVkIG9yIGVuYWJsZV9p bmNyZW1lbnRhbF9zb3J0IGlzIGRpc2FibGVkLgoKQm90aCB0aGUgcmVtb3ZhbCBvZiB0aGUgY29z dCBwZXNzaW1pc20gZmFjdG9yIGFuZCB0aGUgY2hhbmdlcyBtYWRlIHRvIHRoZQpwYXRoIGdlbmVy YXRpb24gbWFrZSBpdCBtb3JlIGxpa2VseSB0aGF0IGluY3JlbWVudGFsIHNvcnRzIHdpbGwgbm93 IGJlCmNob3Nlbi4gIFRoYXQsIG9mIGNvdXJzZSwgYXMgd2l0aCB0ZWFjaGluZyB0aGUgcGxhbm5l ciBhbnkgbmV3IHRyaWNrcywKbWVhbnMgYW4gaW5jcmVhc2VkIGxpa2VsaWhvb2QgdGhhdCB0aGUg cGxhbm5lciB3aWxsIHBlcmZvcm0gYW4gaW5jcmVtZW50YWwKc29ydCB3aGVuIGl0J3Mgbm90IHRo ZSBiZXN0IG1ldGhvZC4gIE91ciBzdGFuZGFyZCBlc2NhcGUgaGF0Y2ggZm9yIHRoZXNlCmNhc2Vz IGlzIGFuIGVuYWJsZV8qIEdVQy4gIGVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0IGFscmVhZHkgZXhp c3RzIGZvcgp0aGlzLgoKVGhpcyBjYW1lIG91dCBvZiBhIHJlcG9ydCBieSBQYXZlbCBMdXphbm92 IHdoZXJlIGhlIG1lbnRpb25lZCB0aGF0IHYxNgp3YXMgY2hvb3NpbmcgdG8gcGVyZm9ybSBhIFNl cSBTY2FuIC0+IFNvcnQgLT4gR3JvdXAgQWdncmVnYXRlIGZvciBoaXMKcXVlcnkgd2l0aCBhbiBP UkRFUiBCWSBhZ2dyZWdhdGUgZnVuY3Rpb24uICBUaGUgdjE1IHBsYW4gZm9yIGhpcyBxdWVyeQpw ZXJmb3JtZWQgYW4gSW5kZXggU2NhbiAtPiBHcm91cCBBZ2dyZWdhdGUsIG9mIGNvdXJzZSwgdGhl IGFnZ3JlZ2F0ZQpwZXJmb3JtZWQgdGhlIGZpbmFsIHNvcnQgaW50ZXJuYWxseSBpbiBub2RlQWdn LmMgZm9yIHRoZSBhZ2dyZWdhdGUncyBPUkRFUgpCWS4gIFRoZSBpZGVhbCBwbGFuIHdvdWxkIGhh dmUgYmVlbiB0byB1c2UgdGhlIGluZGV4LCB3aGljaCBwcm92aWRlZApwYXJ0aWFsbHkgc29ydGVk IGlucHV0IHRoZW4gdXNlIGFuIGluY3JlbWVudGFsIHNvcnQgdG8gcHJvdmlkZSB0aGUKYWdncmVn YXRlIHdpdGggdGhlIHNvcnRlZCBpbnB1dC4gIFRoaXMgd2FzIG5vdCBiZWluZyBjaG9zZW4gZHVl IHRvIHRoZQpwZXNzaW1pc20gaW4gdGhlIGluY3JlbWVudGFsIHNvcnQgY29zdCBtb2RhbCwgc28g aGVyZSB3ZSByZW1vdmUgdGhhdCBhbmQKcmF0aW9uYWxpemUgdGhlIHBhdGggZ2VuZXJhdGlvbiBz byB0aGF0IHNvcnQgYW5kIGluY3JlbWVudGFsIHNvcnQgcGxhbnMKZG9uJ3QgaGF2ZSB0byBuZWVk bGVzc2x5IGNvbXBsZXRlLgoKUmVwb3J0ZWQtYnk6IFBhdmVsIEx1emFub3YKUmV2aWV3ZWQtYnk6 IFJpY2hhcmQgR3VvCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vOWY2MWRkYmYtMjk4 OS0xNTM2LWIzMWUtNjQ1OTM3MGE2YmFhJTQwcG9zdGdyZXNwcm8ucnUKLS0tCiAuLi4vcG9zdGdy ZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgICAgfCAgIDIgKwogY29udHJpYi9wb3N0 Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2FsbHBhdGhzLmMgICAgICAgICB8ICA5NCArKy0tCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jICAgICAgICAgfCAgMzggKy0KIHNyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8IDQ4MCArKysrKystLS0tLS0tLS0tLS0K IC4uLi9yZWdyZXNzL2V4cGVjdGVkL2luY3JlbWVudGFsX3NvcnQub3V0ICAgICB8ICAxMyAtCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dCAgfCAgIDUgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2luY3JlbWVudGFsX3NvcnQuc3FsICAgICB8ICAgNSAtCiA4IGZp bGVzIGNoYW5nZWQsIDIyMCBpbnNlcnRpb25zKCspLCA0MTkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggMmFiM2Yx ZWZhYS4uNWY2ZTFmOTgzMyAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0 ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9w b3N0Z3Jlc19mZHcub3V0CkBAIC0yNzk2LDYgKzI3OTYsNyBAQCBzZWxlY3QgYzIvMiwgc3VtKGMy KSAqIChjMi8yKSBmcm9tIGZ0MSBncm91cCBieSBjMi8yIG9yZGVyIGJ5IGMyLzI7CiAoNSByb3dz KQogCiAtLSBBZ2dyZWdhdGVzIGluIHN1YnF1ZXJ5IGFyZSBwdXNoZWQgZG93bi4KK3NldCBlbmFi bGVfaW5jcmVtZW50YWxfc29ydCA9IG9mZjsKIGV4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikK IHNlbGVjdCBjb3VudCh4LmEpLCBzdW0oeC5hKSBmcm9tIChzZWxlY3QgYzIgYSwgc3VtKGMxKSBi IGZyb20gZnQxIGdyb3VwIGJ5IGMyLCBzcXJ0KGMxKSBvcmRlciBieSAxLCAyKSB4OwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCkBAIC0yODE0LDYgKzI4MTUsNyBAQCBzZWxlY3QgY291bnQo eC5hKSwgc3VtKHguYSkgZnJvbSAoc2VsZWN0IGMyIGEsIHN1bShjMSkgYiBmcm9tIGZ0MSBncm91 cCBieSBjMiwgcwogICAxMDAwIHwgNDUwMAogKDEgcm93KQogCityZXNldCBlbmFibGVfaW5jcmVt ZW50YWxfc29ydDsKIC0tIEFnZ3JlZ2F0ZSBpcyBzdGlsbCBwdXNoZWQgZG93biBieSB0YWtpbmcg dW5zaGlwcGFibGUgZXhwcmVzc2lvbiBvdXQKIGV4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikK IHNlbGVjdCBjMiAqIChyYW5kb20oKSA8PSAxKTo6aW50IGFzIHN1bTEsIHN1bShjMSkgKiBjMiBh cyBzdW0yIGZyb20gZnQxIGdyb3VwIGJ5IGMyIG9yZGVyIGJ5IDEsIDI7CmRpZmYgLS1naXQgYS9j b250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbCBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCmluZGV4IDUxNTYwNDI5ZTAuLmJmY2FjNGVhMTQg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCisr KyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC03NTAsOSAr NzUwLDExIEBAIHNlbGVjdCBjMi8yLCBzdW0oYzIpICogKGMyLzIpIGZyb20gZnQxIGdyb3VwIGJ5 IGMyLzIgb3JkZXIgYnkgYzIvMjsKIHNlbGVjdCBjMi8yLCBzdW0oYzIpICogKGMyLzIpIGZyb20g ZnQxIGdyb3VwIGJ5IGMyLzIgb3JkZXIgYnkgYzIvMjsKIAogLS0gQWdncmVnYXRlcyBpbiBzdWJx dWVyeSBhcmUgcHVzaGVkIGRvd24uCitzZXQgZW5hYmxlX2luY3JlbWVudGFsX3NvcnQgPSBvZmY7 CiBleHBsYWluICh2ZXJib3NlLCBjb3N0cyBvZmYpCiBzZWxlY3QgY291bnQoeC5hKSwgc3VtKHgu YSkgZnJvbSAoc2VsZWN0IGMyIGEsIHN1bShjMSkgYiBmcm9tIGZ0MSBncm91cCBieSBjMiwgc3Fy dChjMSkgb3JkZXIgYnkgMSwgMikgeDsKIHNlbGVjdCBjb3VudCh4LmEpLCBzdW0oeC5hKSBmcm9t IChzZWxlY3QgYzIgYSwgc3VtKGMxKSBiIGZyb20gZnQxIGdyb3VwIGJ5IGMyLCBzcXJ0KGMxKSBv cmRlciBieSAxLCAyKSB4OworcmVzZXQgZW5hYmxlX2luY3JlbWVudGFsX3NvcnQ7CiAKIC0tIEFn Z3JlZ2F0ZSBpcyBzdGlsbCBwdXNoZWQgZG93biBieSB0YWtpbmcgdW5zaGlwcGFibGUgZXhwcmVz c2lvbiBvdXQKIGV4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9hbGxwYXRocy5jCmluZGV4IDBjNTY0YmU3ZjYuLjBjZmEzYTFkNmMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwpAQCAtMzIwNyw3MCArMzIwNyw1MiBAQCBnZW5lcmF0 ZV91c2VmdWxfZ2F0aGVyX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWws IGJvb2wgb3ZlcnJpZGVfcgogCQkJCWNvbnRpbnVlOwogCiAJCQkvKgotCQkJICogQ29uc2lkZXIg cmVndWxhciBzb3J0IGZvciB0aGUgY2hlYXBlc3QgcGFydGlhbCBwYXRoIChmb3IgZWFjaAotCQkJ ICogdXNlZnVsIHBhdGhrZXlzKS4gV2Uga25vdyB0aGUgcGF0aCBpcyBub3Qgc29ydGVkLCBiZWNh dXNlIHdlJ2QKLQkJCSAqIG5vdCBnZXQgaGVyZSBvdGhlcndpc2UuCisJCQkgKiBUcnkgYXQgbGVh c3Qgc29ydGluZyB0aGUgY2hlYXBlc3QgcGF0aCBhbmQgYWxzbyB0cnkKKwkJCSAqIGluY3JlbWVu dGFsbHkgc29ydGluZyBhbnkgcGF0aCB3aGljaCBpcyBwYXJ0aWFsbHkgc29ydGVkCisJCQkgKiBh bHJlYWR5IChubyBuZWVkIHRvIGRlYWwgd2l0aCBwYXRocyB3aGljaCBoYXZlIHByZXNvcnRlZCBr ZXlzCisJCQkgKiB3aGVuIGluY3JlbWVudGFsIHNvcnQgaXMgZGlzYWJsZWQgdW5sZXNzIGl0J3Mg dGhlIGNoZWFwZXN0CisJCQkgKiBpbnB1dCBwYXRoKS4KKwkJCSAqLworCQkJaWYgKHN1YnBhdGgg IT0gY2hlYXBlc3RfcGFydGlhbF9wYXRoICYmCisJCQkJKHByZXNvcnRlZF9rZXlzID09IDAgfHwg IWVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0KSkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAq IENvbnNpZGVyIHJlZ3VsYXIgc29ydCBmb3IgYW55IHBhdGggdGhhdCdzIG5vdCBwcmVzb3J0ZWQg b3IgaWYKKwkJCSAqIGluY3JlbWVudGFsIHNvcnQgaXMgZGlzYWJsZWQuICBXZSd2ZSBubyBuZWVk IHRvIGNvbnNpZGVyIGJvdGgKKwkJCSAqIHNvcnQgYW5kIGluY3JlbWVudGFsIHNvcnQgb24gdGhl IHNhbWUgcGF0aC4gIFdlIGFzc3VtZSB0aGF0CisJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IGlzIGFs d2F5cyBmYXN0ZXIgd2hlbiB0aGVyZSBhcmUgcHJlc29ydGVkCisJCQkgKiBrZXlzLgogCQkJICoK IAkJCSAqIFRoaXMgaXMgbm90IHJlZHVuZGFudCB3aXRoIHRoZSBnYXRoZXIgcGF0aHMgY3JlYXRl ZCBpbgogCQkJICogZ2VuZXJhdGVfZ2F0aGVyX3BhdGhzLCBiZWNhdXNlIHRoYXQgZG9lc24ndCBn ZW5lcmF0ZSBvcmRlcmVkCiAJCQkgKiBvdXRwdXQuIEhlcmUgd2UgYWRkIGFuIGV4cGxpY2l0IHNv cnQgdG8gbWF0Y2ggdGhlIHVzZWZ1bAogCQkJICogb3JkZXJpbmcuCiAJCQkgKi8KLQkJCWlmIChj aGVhcGVzdF9wYXJ0aWFsX3BhdGggPT0gc3VicGF0aCkKKwkJCWlmIChwcmVzb3J0ZWRfa2V5cyA9 PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKIAkJCXsKLQkJCQlQYXRoCSAgICp0bXA7 Ci0KLQkJCQl0bXAgPSAoUGF0aCAqKSBjcmVhdGVfc29ydF9wYXRoKHJvb3QsCi0JCQkJCQkJCQkJ CQlyZWwsCi0JCQkJCQkJCQkJCQlzdWJwYXRoLAotCQkJCQkJCQkJCQkJdXNlZnVsX3BhdGhrZXlz LAotCQkJCQkJCQkJCQkJLTEuMCk7Ci0KLQkJCQlyb3dzID0gdG1wLT5yb3dzICogdG1wLT5wYXJh bGxlbF93b3JrZXJzOwotCi0JCQkJcGF0aCA9IGNyZWF0ZV9nYXRoZXJfbWVyZ2VfcGF0aChyb290 LCByZWwsCi0JCQkJCQkJCQkJCQl0bXAsCi0JCQkJCQkJCQkJCQlyZWwtPnJlbHRhcmdldCwKLQkJ CQkJCQkJCQkJCXRtcC0+cGF0aGtleXMsCi0JCQkJCQkJCQkJCQlOVUxMLAotCQkJCQkJCQkJCQkJ cm93c3ApOwotCi0JCQkJYWRkX3BhdGgocmVsLCAmcGF0aC0+cGF0aCk7Ci0KLQkJCQkvKiBGYWxs IHRocm91Z2ggKi8KLQkJCX0KLQotCQkJLyoKLQkJCSAqIENvbnNpZGVyIGluY3JlbWVudGFsIHNv cnQsIGJ1dCBvbmx5IHdoZW4gdGhlIHN1YnBhdGggaXMgYWxyZWFkeQotCQkJICogcGFydGlhbGx5 IHNvcnRlZCBvbiBhIHBhdGhrZXkgcHJlZml4LgotCQkJICovCi0JCQlpZiAoZW5hYmxlX2luY3Jl bWVudGFsX3NvcnQgJiYgcHJlc29ydGVkX2tleXMgPiAwKQotCQkJewotCQkJCVBhdGgJICAgKnRt cDsKLQotCQkJCS8qCi0JCQkJICogV2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBleGNsdWRlZCBwYXRo a2V5cyBvZiBsZW5ndGggMQotCQkJCSAqIGJlY2F1c2UgdGhlbiBwcmVzb3J0ZWRfa2V5cyA+IDAg d291bGQgaW1wbHkgaXNfc29ydGVkIHdhcwotCQkJCSAqIHRydWUuCi0JCQkJICovCi0JCQkJQXNz ZXJ0KGxpc3RfbGVuZ3RoKHVzZWZ1bF9wYXRoa2V5cykgIT0gMSk7Ci0KLQkJCQl0bXAgPSAoUGF0 aCAqKSBjcmVhdGVfaW5jcmVtZW50YWxfc29ydF9wYXRoKHJvb3QsCi0JCQkJCQkJCQkJCQkJCQly ZWwsCi0JCQkJCQkJCQkJCQkJCQlzdWJwYXRoLAotCQkJCQkJCQkJCQkJCQkJdXNlZnVsX3BhdGhr ZXlzLAotCQkJCQkJCQkJCQkJCQkJcHJlc29ydGVkX2tleXMsCi0JCQkJCQkJCQkJCQkJCQktMSk7 Ci0KLQkJCQlwYXRoID0gY3JlYXRlX2dhdGhlcl9tZXJnZV9wYXRoKHJvb3QsIHJlbCwKLQkJCQkJ CQkJCQkJCXRtcCwKLQkJCQkJCQkJCQkJCXJlbC0+cmVsdGFyZ2V0LAotCQkJCQkJCQkJCQkJdG1w LT5wYXRoa2V5cywKLQkJCQkJCQkJCQkJCU5VTEwsCi0JCQkJCQkJCQkJCQlyb3dzcCk7Ci0KLQkJ CQlhZGRfcGF0aChyZWwsICZwYXRoLT5wYXRoKTsKKwkJCQlzdWJwYXRoID0gKFBhdGggKikgY3Jl YXRlX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCXJlbCwKKwkJCQkJCQkJCQkJCQlzdWJw YXRoLAorCQkJCQkJCQkJCQkJCXVzZWZ1bF9wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQktMS4wKTsK KwkJCQlyb3dzID0gc3VicGF0aC0+cm93cyAqIHN1YnBhdGgtPnBhcmFsbGVsX3dvcmtlcnM7CiAJ CQl9CisJCQllbHNlCisJCQkJc3VicGF0aCA9IChQYXRoICopIGNyZWF0ZV9pbmNyZW1lbnRhbF9z b3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkJCQlyZWwsCisJCQkJCQkJCQkJCQkJCQkJc3Vi cGF0aCwKKwkJCQkJCQkJCQkJCQkJCQl1c2VmdWxfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJCQkJ cHJlc29ydGVkX2tleXMsCisJCQkJCQkJCQkJCQkJCQkJLTEpOworCQkJcGF0aCA9IGNyZWF0ZV9n YXRoZXJfbWVyZ2VfcGF0aChyb290LCByZWwsCisJCQkJCQkJCQkJCXN1YnBhdGgsCisJCQkJCQkJ CQkJCXJlbC0+cmVsdGFyZ2V0LAorCQkJCQkJCQkJCQlzdWJwYXRoLT5wYXRoa2V5cywKKwkJCQkJ CQkJCQkJTlVMTCwKKwkJCQkJCQkJCQkJcm93c3ApOworCisJCQlhZGRfcGF0aChyZWwsICZwYXRo LT5wYXRoKTsKIAkJfQogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2Nvc3RzaXplLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCmlu ZGV4IDg5NzMwOWQ3ZWMuLjBmMGJjZmI3ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2Nvc3RzaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29z dHNpemUuYwpAQCAtMTk1OSw4ICsxOTU5LDggQEAgY29zdF9pbmNyZW1lbnRhbF9zb3J0KFBhdGgg KnBhdGgsCiAJCQkJCSAgZG91YmxlIGlucHV0X3R1cGxlcywgaW50IHdpZHRoLCBDb3N0IGNvbXBh cmlzb25fY29zdCwgaW50IHNvcnRfbWVtLAogCQkJCQkgIGRvdWJsZSBsaW1pdF90dXBsZXMpCiB7 Ci0JQ29zdAkJc3RhcnR1cF9jb3N0ID0gMCwKLQkJCQlydW5fY29zdCA9IDAsCisJQ29zdAkJc3Rh cnR1cF9jb3N0LAorCQkJCXJ1bl9jb3N0LAogCQkJCWlucHV0X3J1bl9jb3N0ID0gaW5wdXRfdG90 YWxfY29zdCAtIGlucHV0X3N0YXJ0dXBfY29zdDsKIAlkb3VibGUJCWdyb3VwX3R1cGxlcywKIAkJ CQlpbnB1dF9ncm91cHM7CkBAIC0xOTY5LDEwICsxOTY5LDkgQEAgY29zdF9pbmNyZW1lbnRhbF9z b3J0KFBhdGggKnBhdGgsCiAJCQkJZ3JvdXBfaW5wdXRfcnVuX2Nvc3Q7CiAJTGlzdAkgICAqcHJl c29ydGVkRXhwcnMgPSBOSUw7CiAJTGlzdENlbGwgICAqbDsKLQlpbnQJCQlpID0gMDsKIAlib29s CQl1bmtub3duX3Zhcm5vID0gZmFsc2U7CiAKLQlBc3NlcnQocHJlc29ydGVkX2tleXMgIT0gMCk7 CisJQXNzZXJ0KHByZXNvcnRlZF9rZXlzID4gMCAmJiBwcmVzb3J0ZWRfa2V5cyA8IGxpc3RfbGVu Z3RoKHBhdGhrZXlzKSk7CiAKIAkvKgogCSAqIFdlIHdhbnQgdG8gYmUgc3VyZSB0aGUgY29zdCBv ZiBhIHNvcnQgaXMgbmV2ZXIgZXN0aW1hdGVkIGFzIHplcm8sIGV2ZW4KQEAgLTIwMjUsMTIgKzIw MjQsMTEgQEAgY29zdF9pbmNyZW1lbnRhbF9zb3J0KFBhdGggKnBhdGgsCiAJCS8qIGV4cHJlc3Np b24gbm90IGNvbnRhaW5pbmcgYW55IFZhcnMgd2l0aCAidmFybm8gMCIgKi8KIAkJcHJlc29ydGVk RXhwcnMgPSBsYXBwZW5kKHByZXNvcnRlZEV4cHJzLCBtZW1iZXItPmVtX2V4cHIpOwogCi0JCWkr KzsKLQkJaWYgKGkgPj0gcHJlc29ydGVkX2tleXMpCisJCWlmIChmb3JlYWNoX2N1cnJlbnRfaW5k ZXgobCkgKyAxID49IHByZXNvcnRlZF9rZXlzKQogCQkJYnJlYWs7CiAJfQogCi0JLyogRXN0aW1h dGUgbnVtYmVyIG9mIGdyb3VwcyB3aXRoIGVxdWFsIHByZXNvcnRlZCBrZXlzLiAqLworCS8qIEVz dGltYXRlIHRoZSBudW1iZXIgb2YgZ3JvdXBzIHdpdGggZXF1YWwgcHJlc29ydGVkIGtleXMuICov CiAJaWYgKCF1bmtub3duX3Zhcm5vKQogCQlpbnB1dF9ncm91cHMgPSBlc3RpbWF0ZV9udW1fZ3Jv dXBzKHJvb3QsIHByZXNvcnRlZEV4cHJzLCBpbnB1dF90dXBsZXMsCiAJCQkJCQkJCQkJICAgTlVM TCwgTlVMTCk7CkBAIC0yMDM5LDIyICsyMDM3LDE5IEBAIGNvc3RfaW5jcmVtZW50YWxfc29ydChQ YXRoICpwYXRoLAogCWdyb3VwX2lucHV0X3J1bl9jb3N0ID0gaW5wdXRfcnVuX2Nvc3QgLyBpbnB1 dF9ncm91cHM7CiAKIAkvKgotCSAqIEVzdGltYXRlIGF2ZXJhZ2UgY29zdCBvZiBzb3J0aW5nIG9m IG9uZSBncm91cCB3aGVyZSBwcmVzb3J0ZWQga2V5cyBhcmUKLQkgKiBlcXVhbC4gIEluY3JlbWVu dGFsIHNvcnQgaXMgc2Vuc2l0aXZlIHRvIGRpc3RyaWJ1dGlvbiBvZiB0dXBsZXMgdG8gdGhlCi0J ICogZ3JvdXBzLCB3aGVyZSB3ZSdyZSByZWx5aW5nIG9uIHF1aXRlIHJvdWdoIGFzc3VtcHRpb25z LiAgVGh1cywgd2UncmUKLQkgKiBwZXNzaW1pc3RpYyBhYm91dCBpbmNyZW1lbnRhbCBzb3J0IHBl cmZvcm1hbmNlIGFuZCBpbmNyZWFzZSBpdHMgYXZlcmFnZQotCSAqIGdyb3VwIHNpemUgYnkgaGFs Zi4KKwkgKiBFc3RpbWF0ZSB0aGUgYXZlcmFnZSBjb3N0IG9mIHNvcnRpbmcgb2Ygb25lIGdyb3Vw IHdoZXJlIHByZXNvcnRlZCBrZXlzCisJICogYXJlIGVxdWFsLgogCSAqLwogCWNvc3RfdHVwbGVz b3J0KCZncm91cF9zdGFydHVwX2Nvc3QsICZncm91cF9ydW5fY29zdCwKLQkJCQkgICAxLjUgKiBn cm91cF90dXBsZXMsIHdpZHRoLCBjb21wYXJpc29uX2Nvc3QsIHNvcnRfbWVtLAorCQkJCSAgIGdy b3VwX3R1cGxlcywgd2lkdGgsIGNvbXBhcmlzb25fY29zdCwgc29ydF9tZW0sCiAJCQkJICAgbGlt aXRfdHVwbGVzKTsKIAogCS8qCiAJICogU3RhcnR1cCBjb3N0IG9mIGluY3JlbWVudGFsIHNvcnQg aXMgdGhlIHN0YXJ0dXAgY29zdCBvZiBpdHMgZmlyc3QgZ3JvdXAKIAkgKiBwbHVzIHRoZSBjb3N0 IG9mIGl0cyBpbnB1dC4KIAkgKi8KLQlzdGFydHVwX2Nvc3QgKz0gZ3JvdXBfc3RhcnR1cF9jb3N0 Ci0JCSsgaW5wdXRfc3RhcnR1cF9jb3N0ICsgZ3JvdXBfaW5wdXRfcnVuX2Nvc3Q7CisJc3RhcnR1 cF9jb3N0ID0gZ3JvdXBfc3RhcnR1cF9jb3N0ICsgaW5wdXRfc3RhcnR1cF9jb3N0ICsKKwkJZ3Jv dXBfaW5wdXRfcnVuX2Nvc3Q7CiAKIAkvKgogCSAqIEFmdGVyIHdlIHN0YXJ0ZWQgcHJvZHVjaW5n IHR1cGxlcyBmcm9tIHRoZSBmaXJzdCBncm91cCwgdGhlIGNvc3Qgb2YKQEAgLTIwNjIsMTcgKzIw NTcsMjAgQEAgY29zdF9pbmNyZW1lbnRhbF9zb3J0KFBhdGggKnBhdGgsCiAJICogZ3JvdXAsIHBs dXMgdGhlIHRvdGFsIGNvc3QgdG8gcHJvY2VzcyB0aGUgcmVtYWluaW5nIGdyb3VwcywgcGx1cyB0 aGUKIAkgKiByZW1haW5pbmcgY29zdCBvZiBpbnB1dC4KIAkgKi8KLQlydW5fY29zdCArPSBncm91 cF9ydW5fY29zdAotCQkrIChncm91cF9ydW5fY29zdCArIGdyb3VwX3N0YXJ0dXBfY29zdCkgKiAo aW5wdXRfZ3JvdXBzIC0gMSkKLQkJKyBncm91cF9pbnB1dF9ydW5fY29zdCAqIChpbnB1dF9ncm91 cHMgLSAxKTsKKwlydW5fY29zdCA9IGdyb3VwX3J1bl9jb3N0ICsgKGdyb3VwX3J1bl9jb3N0ICsg Z3JvdXBfc3RhcnR1cF9jb3N0KSAqCisJCShpbnB1dF9ncm91cHMgLSAxKSArIGdyb3VwX2lucHV0 X3J1bl9jb3N0ICogKGlucHV0X2dyb3VwcyAtIDEpOwogCiAJLyoKIAkgKiBJbmNyZW1lbnRhbCBz b3J0IGFkZHMgc29tZSBvdmVyaGVhZCBieSBpdHNlbGYuIEZpcnN0bHksIGl0IGhhcyB0bwogCSAq IGRldGVjdCB0aGUgc29ydCBncm91cHMuIFRoaXMgaXMgcm91Z2hseSBlcXVhbCB0byBvbmUgZXh0 cmEgY29weSBhbmQKLQkgKiBjb21wYXJpc29uIHBlciB0dXBsZS4gU2Vjb25kbHksIGl0IGhhcyB0 byByZXNldCB0aGUgdHVwbGVzb3J0IGNvbnRleHQKLQkgKiBmb3IgZXZlcnkgZ3JvdXAuCisJICog Y29tcGFyaXNvbiBwZXIgdHVwbGUuCiAJICovCiAJcnVuX2Nvc3QgKz0gKGNwdV90dXBsZV9jb3N0 ICsgY29tcGFyaXNvbl9jb3N0KSAqIGlucHV0X3R1cGxlczsKKworCS8qCisJICogQWRkaXRpb25h bGx5LCB3ZSBjaGFyZ2UgZG91YmxlIGNwdV90dXBsZV9jb3N0IGZvciBlYWNoIGlucHV0IGdyb3Vw IHRvCisJICogYWNjb3VudCBmb3IgdGhlIHR1cGxlc29ydF9yZXNldCB0aGF0J3MgcGVyZm9ybWVk IGFmdGVyIGVhY2ggZ3JvdXAuCisJICovCiAJcnVuX2Nvc3QgKz0gMi4wICogY3B1X3R1cGxlX2Nv c3QgKiBpbnB1dF9ncm91cHM7CiAKIAlwYXRoLT5yb3dzID0gaW5wdXRfdHVwbGVzOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDVkZDRmOTI3MjAuLmRmZGEyNTFkOTUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTQ5NjUsNyArNDk2NSw3IEBAIGNy ZWF0ZV9vcmRlcmVkX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCWZvcmVhY2gobGMsIGlucHV0 X3JlbC0+cGF0aGxpc3QpCiAJewogCQlQYXRoCSAgICppbnB1dF9wYXRoID0gKFBhdGggKikgbGZp cnN0KGxjKTsKLQkJUGF0aAkgICAqc29ydGVkX3BhdGggPSBpbnB1dF9wYXRoOworCQlQYXRoCSAg ICpzb3J0ZWRfcGF0aDsKIAkJYm9vbAkJaXNfc29ydGVkOwogCQlpbnQJCQlwcmVzb3J0ZWRfa2V5 czsKIApAQCAtNDk3Myw2OSArNDk3Myw0NiBAQCBjcmVhdGVfb3JkZXJlZF9wYXRocyhQbGFubmVy SW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJCWlucHV0X3BhdGgtPnBhdGhrZXlzLCAmcHJlc29ydGVk X2tleXMpOwogCiAJCWlmIChpc19zb3J0ZWQpCi0JCXsKLQkJCS8qIFVzZSB0aGUgaW5wdXQgcGF0 aCBhcyBpcywgYnV0IGFkZCBhIHByb2plY3Rpb24gc3RlcCBpZiBuZWVkZWQgKi8KLQkJCWlmIChz b3J0ZWRfcGF0aC0+cGF0aHRhcmdldCAhPSB0YXJnZXQpCi0JCQkJc29ydGVkX3BhdGggPSBhcHBs eV9wcm9qZWN0aW9uX3RvX3BhdGgocm9vdCwgb3JkZXJlZF9yZWwsCi0JCQkJCQkJCQkJCQkJICAg c29ydGVkX3BhdGgsIHRhcmdldCk7Ci0KLQkJCWFkZF9wYXRoKG9yZGVyZWRfcmVsLCBzb3J0ZWRf cGF0aCk7Ci0JCX0KKwkJCXNvcnRlZF9wYXRoID0gaW5wdXRfcGF0aDsKIAkJZWxzZQogCQl7CiAJ CQkvKgotCQkJICogVHJ5IGFkZGluZyBhbiBleHBsaWNpdCBzb3J0LCBidXQgb25seSB0byB0aGUg Y2hlYXBlc3QgdG90YWwKLQkJCSAqIHBhdGggc2luY2UgYSBmdWxsIHNvcnQgc2hvdWxkIGdlbmVy YWxseSBhZGQgdGhlIHNhbWUgY29zdCB0bwotCQkJICogYWxsIHBhdGhzLgorCQkJICogVHJ5IGF0 IGxlYXN0IHNvcnRpbmcgdGhlIGNoZWFwZXN0IHBhdGggYW5kIGFsc28gdHJ5CisJCQkgKiBpbmNy ZW1lbnRhbGx5IHNvcnRpbmcgYW55IHBhdGggd2hpY2ggaXMgcGFydGlhbGx5IHNvcnRlZAorCQkJ ICogYWxyZWFkeSAobm8gbmVlZCB0byBkZWFsIHdpdGggcGF0aHMgd2hpY2ggaGF2ZSBwcmVzb3J0 ZWQga2V5cworCQkJICogd2hlbiBpbmNyZW1lbnRhbCBzb3J0IGlzIGRpc2FibGVkIHVubGVzcyBp dCdzIHRoZSBjaGVhcGVzdAorCQkJICogaW5wdXQgcGF0aCkuCiAJCQkgKi8KLQkJCWlmIChpbnB1 dF9wYXRoID09IGNoZWFwZXN0X2lucHV0X3BhdGgpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBTb3J0 IHRoZSBjaGVhcGVzdCBpbnB1dCBwYXRoLiBBbiBleHBsaWNpdCBzb3J0IGhlcmUgY2FuCi0JCQkJ ICogdGFrZSBhZHZhbnRhZ2Ugb2YgTElNSVQuCi0JCQkJICovCisJCQlpZiAoaW5wdXRfcGF0aCAh PSBjaGVhcGVzdF9pbnB1dF9wYXRoICYmCisJCQkJKHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVu YWJsZV9pbmNyZW1lbnRhbF9zb3J0KSkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIFdl J3ZlIG5vIG5lZWQgdG8gY29uc2lkZXIgYm90aCBhIHNvcnQgYW5kIGluY3JlbWVudGFsIHNvcnQu CisJCQkgKiBXZSdsbCBqdXN0IGRvIGEgc29ydCBpZiB0aGVyZSBhcmUgbm8gcHJlc29ydGVkIGtl eXMgYW5kIGFuCisJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IHdoZW4gdGhlcmUgYXJlIHByZXNvcnRl ZCBrZXlzLgorCQkJICovCisJCQlpZiAocHJlc29ydGVkX2tleXMgPT0gMCB8fCAhZW5hYmxlX2lu Y3JlbWVudGFsX3NvcnQpCiAJCQkJc29ydGVkX3BhdGggPSAoUGF0aCAqKSBjcmVhdGVfc29ydF9w YXRoKHJvb3QsCiAJCQkJCQkJCQkJCQkJCW9yZGVyZWRfcmVsLAogCQkJCQkJCQkJCQkJCQlpbnB1 dF9wYXRoLAogCQkJCQkJCQkJCQkJCQlyb290LT5zb3J0X3BhdGhrZXlzLAogCQkJCQkJCQkJCQkJ CQlsaW1pdF90dXBsZXMpOwotCQkJCS8qIEFkZCBwcm9qZWN0aW9uIHN0ZXAgaWYgbmVlZGVkICov Ci0JCQkJaWYgKHNvcnRlZF9wYXRoLT5wYXRodGFyZ2V0ICE9IHRhcmdldCkKLQkJCQkJc29ydGVk X3BhdGggPSBhcHBseV9wcm9qZWN0aW9uX3RvX3BhdGgocm9vdCwgb3JkZXJlZF9yZWwsCi0JCQkJ CQkJCQkJCQkJCSAgIHNvcnRlZF9wYXRoLCB0YXJnZXQpOwotCi0JCQkJYWRkX3BhdGgob3JkZXJl ZF9yZWwsIHNvcnRlZF9wYXRoKTsKLQkJCX0KLQotCQkJLyoKLQkJCSAqIElmIGluY3JlbWVudGFs IHNvcnQgaXMgZW5hYmxlZCwgdGhlbiB0cnkgaXQgYXMgd2VsbC4gVW5saWtlCi0JCQkgKiB3aXRo IHJlZ3VsYXIgc29ydHMsIHdlIGNhbid0IGp1c3QgbG9vayBhdCB0aGUgY2hlYXBlc3QgcGF0aCwK LQkJCSAqIGJlY2F1c2UgdGhlIGNvc3Qgb2YgaW5jcmVtZW50YWwgc29ydCBkZXBlbmRzIG9uIGhv dyB3ZWxsCi0JCQkgKiBwcmVzb3J0ZWQgdGhlIHBhdGggaXMuIEFkZGl0aW9uYWxseSBpbmNyZW1l bnRhbCBzb3J0IG1heSBlbmFibGUKLQkJCSAqIGEgY2hlYXBlciBzdGFydHVwIHBhdGggdG8gd2lu IG91dCBkZXNwaXRlIGhpZ2hlciB0b3RhbCBjb3N0LgotCQkJICovCi0JCQlpZiAoIWVuYWJsZV9p bmNyZW1lbnRhbF9zb3J0KQotCQkJCWNvbnRpbnVlOwotCi0JCQkvKiBMaWtld2lzZSwgaWYgdGhl IHBhdGggY2FuJ3QgYmUgdXNlZCBmb3IgaW5jcmVtZW50YWwgc29ydC4gKi8KLQkJCWlmICghcHJl c29ydGVkX2tleXMpCi0JCQkJY29udGludWU7Ci0KLQkJCS8qIEFsc28gY29uc2lkZXIgaW5jcmVt ZW50YWwgc29ydC4gKi8KLQkJCXNvcnRlZF9wYXRoID0gKFBhdGggKikgY3JlYXRlX2luY3JlbWVu dGFsX3NvcnRfcGF0aChyb290LAotCQkJCQkJCQkJCQkJCQkJCW9yZGVyZWRfcmVsLAotCQkJCQkJ CQkJCQkJCQkJCWlucHV0X3BhdGgsCi0JCQkJCQkJCQkJCQkJCQkJcm9vdC0+c29ydF9wYXRoa2V5 cywKLQkJCQkJCQkJCQkJCQkJCQlwcmVzb3J0ZWRfa2V5cywKLQkJCQkJCQkJCQkJCQkJCQlsaW1p dF90dXBsZXMpOworCQkJZWxzZQorCQkJCXNvcnRlZF9wYXRoID0gKFBhdGggKikgY3JlYXRlX2lu Y3JlbWVudGFsX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkJCQlvcmRlcmVkX3JlbCwK KwkJCQkJCQkJCQkJCQkJCQkJaW5wdXRfcGF0aCwKKwkJCQkJCQkJCQkJCQkJCQkJcm9vdC0+c29y dF9wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQkJCQkJcHJlc29ydGVkX2tleXMsCisJCQkJCQkJCQkJ CQkJCQkJCWxpbWl0X3R1cGxlcyk7CisJCX0KIAotCQkJLyogQWRkIHByb2plY3Rpb24gc3RlcCBp ZiBuZWVkZWQgKi8KLQkJCWlmIChzb3J0ZWRfcGF0aC0+cGF0aHRhcmdldCAhPSB0YXJnZXQpCi0J CQkJc29ydGVkX3BhdGggPSBhcHBseV9wcm9qZWN0aW9uX3RvX3BhdGgocm9vdCwgb3JkZXJlZF9y ZWwsCi0JCQkJCQkJCQkJCQkJICAgc29ydGVkX3BhdGgsIHRhcmdldCk7CisJCS8qIEFkZCBwcm9q ZWN0aW9uIHN0ZXAgaWYgbmVlZGVkICovCisJCWlmIChzb3J0ZWRfcGF0aC0+cGF0aHRhcmdldCAh PSB0YXJnZXQpCisJCQlzb3J0ZWRfcGF0aCA9IGFwcGx5X3Byb2plY3Rpb25fdG9fcGF0aChyb290 LCBvcmRlcmVkX3JlbCwKKwkJCQkJCQkJCQkJCSAgIHNvcnRlZF9wYXRoLCB0YXJnZXQpOwogCi0J CQlhZGRfcGF0aChvcmRlcmVkX3JlbCwgc29ydGVkX3BhdGgpOwotCQl9CisJCWFkZF9wYXRoKG9y ZGVyZWRfcmVsLCBzb3J0ZWRfcGF0aCk7CiAJfQogCiAJLyoKQEAgLTY1MDEsMTIgKzY0NzgsMTIg QEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqaW5wdXRfcmVsLAogCXsKIAkJLyoKIAkJICogVXNlIGFueSBhdmFpbGFibGUgc3VpdGFibHkt c29ydGVkIHBhdGggYXMgaW5wdXQsIGFuZCBhbHNvIGNvbnNpZGVyCi0JCSAqIHNvcnRpbmcgdGhl IGNoZWFwZXN0LXRvdGFsIHBhdGguCisJCSAqIHNvcnRpbmcgdGhlIGNoZWFwZXN0LXRvdGFsIHBh dGggYW5kIGluY3JlbWVudGFsIHNvcnQgb24gYW55IHBhdGhzCisJCSAqIHdpdGggcHJlc29ydGVk IGtleXMuCiAJCSAqLwogCQlmb3JlYWNoKGxjLCBpbnB1dF9yZWwtPnBhdGhsaXN0KQogCQl7CiAJ CQlQYXRoCSAgICpwYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKLQkJCVBhdGgJICAgKnBhdGhf b3JpZ2luYWwgPSBwYXRoOwogCQkJYm9vbAkJaXNfc29ydGVkOwogCQkJaW50CQkJcHJlc29ydGVk X2tleXM7CiAKQEAgLTY1MTQsOTAgKzY0OTEsMzkgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3Jl bChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCQkJCQkJ CXBhdGgtPnBhdGhrZXlzLAogCQkJCQkJCQkJCQkJCSZwcmVzb3J0ZWRfa2V5cyk7CiAKLQkJCWlm IChwYXRoID09IGNoZWFwZXN0X3BhdGggfHwgaXNfc29ydGVkKQorCQkJaWYgKCFpc19zb3J0ZWQp CiAJCQl7Ci0JCQkJLyogU29ydCB0aGUgY2hlYXBlc3QtdG90YWwgcGF0aCBpZiBpdCBpc24ndCBh bHJlYWR5IHNvcnRlZCAqLwotCQkJCWlmICghaXNfc29ydGVkKQorCQkJCS8qCisJCQkJICogVHJ5 IGF0IGxlYXN0IHNvcnRpbmcgdGhlIGNoZWFwZXN0IHBhdGggYW5kIGFsc28gdHJ5CisJCQkJICog aW5jcmVtZW50YWxseSBzb3J0aW5nIGFueSBwYXRoIHdoaWNoIGlzIHBhcnRpYWxseSBzb3J0ZWQK KwkJCQkgKiBhbHJlYWR5IChubyBuZWVkIHRvIGRlYWwgd2l0aCBwYXRocyB3aGljaCBoYXZlIHBy ZXNvcnRlZAorCQkJCSAqIGtleXMgd2hlbiBpbmNyZW1lbnRhbCBzb3J0IGlzIGRpc2FibGVkIHVu bGVzcyBpdCdzIHRoZQorCQkJCSAqIGNoZWFwZXN0IGlucHV0IHBhdGgpLgorCQkJCSAqLworCQkJ CWlmIChwYXRoICE9IGNoZWFwZXN0X3BhdGggJiYKKwkJCQkJKHByZXNvcnRlZF9rZXlzID09IDAg fHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0KSkKKwkJCQkJY29udGludWU7CisKKwkJCQkvKgor CQkJCSAqIFdlJ3ZlIG5vIG5lZWQgdG8gY29uc2lkZXIgYm90aCBhIHNvcnQgYW5kIGluY3JlbWVu dGFsIHNvcnQuCisJCQkJICogV2UnbGwganVzdCBkbyBhIHNvcnQgaWYgdGhlcmUgYXJlIG5vIHBy ZXNvcnRlZCBrZXlzIGFuZCBhbgorCQkJCSAqIGluY3JlbWVudGFsIHNvcnQgd2hlbiB0aGVyZSBh cmUgcHJlc29ydGVkIGtleXMuCisJCQkJICovCisJCQkJaWYgKHByZXNvcnRlZF9rZXlzID09IDAg fHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0KQogCQkJCQlwYXRoID0gKFBhdGggKikgY3JlYXRl X3NvcnRfcGF0aChyb290LAogCQkJCQkJCQkJCQkJCSBncm91cGVkX3JlbCwKIAkJCQkJCQkJCQkJ CQkgcGF0aCwKIAkJCQkJCQkJCQkJCQkgcm9vdC0+Z3JvdXBfcGF0aGtleXMsCiAJCQkJCQkJCQkJ CQkJIC0xLjApOwotCi0JCQkJLyogTm93IGRlY2lkZSB3aGF0IHRvIHN0aWNrIGF0b3AgaXQgKi8K LQkJCQlpZiAocGFyc2UtPmdyb3VwaW5nU2V0cykKLQkJCQl7Ci0JCQkJCWNvbnNpZGVyX2dyb3Vw aW5nc2V0c19wYXRocyhyb290LCBncm91cGVkX3JlbCwKLQkJCQkJCQkJCQkJCXBhdGgsIHRydWUs IGNhbl9oYXNoLAotCQkJCQkJCQkJCQkJZ2QsIGFnZ19jb3N0cywgZE51bUdyb3Vwcyk7Ci0JCQkJ fQotCQkJCWVsc2UgaWYgKHBhcnNlLT5oYXNBZ2dzKQotCQkJCXsKLQkJCQkJLyoKLQkJCQkJICog V2UgaGF2ZSBhZ2dyZWdhdGlvbiwgcG9zc2libHkgd2l0aCBwbGFpbiBHUk9VUCBCWS4gTWFrZQot CQkJCQkgKiBhbiBBZ2dQYXRoLgotCQkJCQkgKi8KLQkJCQkJYWRkX3BhdGgoZ3JvdXBlZF9yZWws IChQYXRoICopCi0JCQkJCQkJIGNyZWF0ZV9hZ2dfcGF0aChyb290LAotCQkJCQkJCQkJCQkgZ3Jv dXBlZF9yZWwsCi0JCQkJCQkJCQkJCSBwYXRoLAotCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwtPnJl bHRhcmdldCwKLQkJCQkJCQkJCQkJIHBhcnNlLT5ncm91cENsYXVzZSA/IEFHR19TT1JURUQgOiBB R0dfUExBSU4sCi0JCQkJCQkJCQkJCSBBR0dTUExJVF9TSU1QTEUsCi0JCQkJCQkJCQkJCSBwYXJz ZS0+Z3JvdXBDbGF1c2UsCi0JCQkJCQkJCQkJCSBoYXZpbmdRdWFsLAotCQkJCQkJCQkJCQkgYWdn X2Nvc3RzLAotCQkJCQkJCQkJCQkgZE51bUdyb3VwcykpOwotCQkJCX0KLQkJCQllbHNlIGlmIChw YXJzZS0+Z3JvdXBDbGF1c2UpCi0JCQkJewotCQkJCQkvKgotCQkJCQkgKiBXZSBoYXZlIEdST1VQ IEJZIHdpdGhvdXQgYWdncmVnYXRpb24gb3IgZ3JvdXBpbmcgc2V0cy4KLQkJCQkJICogTWFrZSBh IEdyb3VwUGF0aC4KLQkJCQkJICovCi0JCQkJCWFkZF9wYXRoKGdyb3VwZWRfcmVsLCAoUGF0aCAq KQotCQkJCQkJCSBjcmVhdGVfZ3JvdXBfcGF0aChyb290LAotCQkJCQkJCQkJCQkgICBncm91cGVk X3JlbCwKLQkJCQkJCQkJCQkJICAgcGF0aCwKLQkJCQkJCQkJCQkJICAgcGFyc2UtPmdyb3VwQ2xh dXNlLAotCQkJCQkJCQkJCQkgICBoYXZpbmdRdWFsLAotCQkJCQkJCQkJCQkgICBkTnVtR3JvdXBz KSk7Ci0JCQkJfQogCQkJCWVsc2UKLQkJCQl7Ci0JCQkJCS8qIE90aGVyIGNhc2VzIHNob3VsZCBo YXZlIGJlZW4gaGFuZGxlZCBhYm92ZSAqLwotCQkJCQlBc3NlcnQoZmFsc2UpOwotCQkJCX0KKwkJ CQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9pbmNyZW1lbnRhbF9zb3J0X3BhdGgocm9vdCwKKwkJ CQkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkJCQkJIHBhdGgsCisJCQkJ CQkJCQkJCQkJCQkJIHJvb3QtPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVz b3J0ZWRfa2V5cywKKwkJCQkJCQkJCQkJCQkJCQkgLTEuMCk7CiAJCQl9CiAKLQkJCS8qCi0JCQkg KiBOb3cgd2UgbWF5IGNvbnNpZGVyIGluY3JlbWVudGFsIHNvcnQgb24gdGhpcyBwYXRoLCBidXQg b25seQotCQkJICogd2hlbiB0aGUgcGF0aCBpcyBub3QgYWxyZWFkeSBzb3J0ZWQgYW5kIHdoZW4g aW5jcmVtZW50YWwgc29ydAotCQkJICogaXMgZW5hYmxlZC4KLQkJCSAqLwotCQkJaWYgKGlzX3Nv cnRlZCB8fCAhZW5hYmxlX2luY3JlbWVudGFsX3NvcnQpCi0JCQkJY29udGludWU7Ci0KLQkJCS8q IFJlc3RvcmUgdGhlIGlucHV0IHBhdGggKHdlIG1pZ2h0IGhhdmUgYWRkZWQgU29ydCBvbiB0b3Ap LiAqLwotCQkJcGF0aCA9IHBhdGhfb3JpZ2luYWw7Ci0KLQkJCS8qIG5vIHNoYXJlZCBwcmVmaXgs IG5vIHBvaW50IGluIGJ1aWxkaW5nIGluY3JlbWVudGFsIHNvcnQgKi8KLQkJCWlmIChwcmVzb3J0 ZWRfa2V5cyA9PSAwKQotCQkJCWNvbnRpbnVlOwotCi0JCQkvKgotCQkJICogV2Ugc2hvdWxkIGhh dmUgYWxyZWFkeSBleGNsdWRlZCBwYXRoa2V5cyBvZiBsZW5ndGggMSBiZWNhdXNlCi0JCQkgKiB0 aGVuIHByZXNvcnRlZF9rZXlzID4gMCB3b3VsZCBpbXBseSBpc19zb3J0ZWQgd2FzIHRydWUuCi0J CQkgKi8KLQkJCUFzc2VydChsaXN0X2xlbmd0aChyb290LT5ncm91cF9wYXRoa2V5cykgIT0gMSk7 Ci0KLQkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfaW5jcmVtZW50YWxfc29ydF9wYXRoKHJvb3Qs Ci0JCQkJCQkJCQkJCQkJCSBncm91cGVkX3JlbCwKLQkJCQkJCQkJCQkJCQkJIHBhdGgsCi0JCQkJ CQkJCQkJCQkJCSByb290LT5ncm91cF9wYXRoa2V5cywKLQkJCQkJCQkJCQkJCQkJIHByZXNvcnRl ZF9rZXlzLAotCQkJCQkJCQkJCQkJCQkgLTEuMCk7Ci0KIAkJCS8qIE5vdyBkZWNpZGUgd2hhdCB0 byBzdGljayBhdG9wIGl0ICovCiAJCQlpZiAocGFyc2UtPmdyb3VwaW5nU2V0cykKIAkJCXsKQEAg LTY2NTMsNyArNjU3OSw2IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCWZvcmVhY2gobGMsIHBhcnRpYWxseV9n cm91cGVkX3JlbC0+cGF0aGxpc3QpCiAJCQl7CiAJCQkJUGF0aAkgICAqcGF0aCA9IChQYXRoICop IGxmaXJzdChsYyk7Ci0JCQkJUGF0aAkgICAqcGF0aF9vcmlnaW5hbCA9IHBhdGg7CiAJCQkJYm9v bAkJaXNfc29ydGVkOwogCQkJCWludAkJCXByZXNvcnRlZF9rZXlzOwogCkBAIC02NjYxLDE5ICs2 NTg2LDM4IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkJCQkJCQkJcGF0aC0+cGF0aGtleXMsCiAJCQkJ CQkJCQkJCQkJCSZwcmVzb3J0ZWRfa2V5cyk7CiAKLQkJCQkvKgotCQkJCSAqIEluc2VydCBhIFNv cnQgbm9kZSwgaWYgcmVxdWlyZWQuICBCdXQgdGhlcmUncyBubyBwb2ludCBpbgotCQkJCSAqIHNv cnRpbmcgYW55dGhpbmcgYnV0IHRoZSBjaGVhcGVzdCBwYXRoLgotCQkJCSAqLwogCQkJCWlmICgh aXNfc29ydGVkKQogCQkJCXsKLQkJCQkJaWYgKHBhdGggIT0gcGFydGlhbGx5X2dyb3VwZWRfcmVs LT5jaGVhcGVzdF90b3RhbF9wYXRoKQorCQkJCQkvKgorCQkJCQkgKiBUcnkgYXQgbGVhc3Qgc29y dGluZyB0aGUgY2hlYXBlc3QgcGF0aCBhbmQgYWxzbyB0cnkKKwkJCQkJICogaW5jcmVtZW50YWxs eSBzb3J0aW5nIGFueSBwYXRoIHdoaWNoIGlzIHBhcnRpYWxseQorCQkJCQkgKiBzb3J0ZWQgYWxy ZWFkeSAobm8gbmVlZCB0byBkZWFsIHdpdGggcGF0aHMgd2hpY2ggaGF2ZQorCQkJCQkgKiBwcmVz b3J0ZWQga2V5cyB3aGVuIGluY3JlbWVudGFsIHNvcnQgaXMgZGlzYWJsZWQgdW5sZXNzCisJCQkJ CSAqIGl0J3MgdGhlIGNoZWFwZXN0IGlucHV0IHBhdGgpLgorCQkJCQkgKi8KKwkJCQkJaWYgKHBh dGggIT0gcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoICYmCisJCQkJ CQkocHJlc29ydGVkX2tleXMgPT0gMCB8fCAhZW5hYmxlX2luY3JlbWVudGFsX3NvcnQpKQogCQkJ CQkJY29udGludWU7Ci0JCQkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfc29ydF9wYXRoKHJvb3Qs Ci0JCQkJCQkJCQkJCQkJIGdyb3VwZWRfcmVsLAotCQkJCQkJCQkJCQkJCSBwYXRoLAotCQkJCQkJ CQkJCQkJCSByb290LT5ncm91cF9wYXRoa2V5cywKLQkJCQkJCQkJCQkJCQkgLTEuMCk7CisKKwkJ CQkJLyoKKwkJCQkJICogV2UndmUgbm8gbmVlZCB0byBjb25zaWRlciBib3RoIGEgc29ydCBhbmQg aW5jcmVtZW50YWwKKwkJCQkJICogc29ydC4gIFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRoZXJl IGFyZSBubyBwcmUtc29ydGVkCisJCQkJCSAqIGtleXMgYW5kIGFuIGluY3JlbWVudGFsIHNvcnQg d2hlbiB0aGVyZSBhcmUgcHJlc29ydGVkCisJCQkJCSAqIGtleXMuCisJCQkJCSAqLworCQkJCQlp ZiAocHJlc29ydGVkX2tleXMgPT0gMCB8fCAhZW5hYmxlX2luY3JlbWVudGFsX3NvcnQpCisJCQkJ CQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkg Z3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkJCSBwYXRoLAorCQkJCQkJCQkJCQkJCQkgcm9vdC0+ Z3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJCSAtMS4wKTsKKwkJCQkJZWxzZQorCQkJCQkJ cGF0aCA9IChQYXRoICopIGNyZWF0ZV9pbmNyZW1lbnRhbF9zb3J0X3BhdGgocm9vdCwKKwkJCQkJ CQkJCQkJCQkJCQkJIGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJ CQkJCQkJCQkJCQkJIHJvb3QtPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCQkgcHJl c29ydGVkX2tleXMsCisJCQkJCQkJCQkJCQkJCQkJCSAtMS4wKTsKIAkJCQl9CiAKIAkJCQlpZiAo cGFyc2UtPmhhc0FnZ3MpCkBAIC02Njk3LDU1ICs2NjQxLDYgQEAgYWRkX3BhdGhzX3RvX2dyb3Vw aW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJ CQkJCQkgICBoYXZpbmdRdWFsLAogCQkJCQkJCQkJCQkgICBkTnVtR3JvdXBzKSk7CiAKLQkJCQkv KgotCQkJCSAqIE5vdyB3ZSBtYXkgY29uc2lkZXIgaW5jcmVtZW50YWwgc29ydCBvbiB0aGlzIHBh dGgsIGJ1dCBvbmx5Ci0JCQkJICogd2hlbiB0aGUgcGF0aCBpcyBub3QgYWxyZWFkeSBzb3J0ZWQg YW5kIHdoZW4gaW5jcmVtZW50YWwKLQkJCQkgKiBzb3J0IGlzIGVuYWJsZWQuCi0JCQkJICovCi0J CQkJaWYgKGlzX3NvcnRlZCB8fCAhZW5hYmxlX2luY3JlbWVudGFsX3NvcnQpCi0JCQkJCWNvbnRp bnVlOwotCi0JCQkJLyogUmVzdG9yZSB0aGUgaW5wdXQgcGF0aCAod2UgbWlnaHQgaGF2ZSBhZGRl ZCBTb3J0IG9uIHRvcCkuICovCi0JCQkJcGF0aCA9IHBhdGhfb3JpZ2luYWw7Ci0KLQkJCQkvKiBu byBzaGFyZWQgcHJlZml4LCBub3QgcG9pbnQgaW4gYnVpbGRpbmcgaW5jcmVtZW50YWwgc29ydCAq LwotCQkJCWlmIChwcmVzb3J0ZWRfa2V5cyA9PSAwKQotCQkJCQljb250aW51ZTsKLQotCQkJCS8q Ci0JCQkJICogV2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBleGNsdWRlZCBwYXRoa2V5cyBvZiBsZW5n dGggMQotCQkJCSAqIGJlY2F1c2UgdGhlbiBwcmVzb3J0ZWRfa2V5cyA+IDAgd291bGQgaW1wbHkg aXNfc29ydGVkIHdhcwotCQkJCSAqIHRydWUuCi0JCQkJICovCi0JCQkJQXNzZXJ0KGxpc3RfbGVu Z3RoKHJvb3QtPmdyb3VwX3BhdGhrZXlzKSAhPSAxKTsKLQotCQkJCXBhdGggPSAoUGF0aCAqKSBj cmVhdGVfaW5jcmVtZW50YWxfc29ydF9wYXRoKHJvb3QsCi0JCQkJCQkJCQkJCQkJCQkgZ3JvdXBl ZF9yZWwsCi0JCQkJCQkJCQkJCQkJCQkgcGF0aCwKLQkJCQkJCQkJCQkJCQkJCSByb290LT5ncm91 cF9wYXRoa2V5cywKLQkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywKLQkJCQkJCQkJCQkJ CQkJCSAtMS4wKTsKLQotCQkJCWlmIChwYXJzZS0+aGFzQWdncykKLQkJCQkJYWRkX3BhdGgoZ3Jv dXBlZF9yZWwsIChQYXRoICopCi0JCQkJCQkJIGNyZWF0ZV9hZ2dfcGF0aChyb290LAotCQkJCQkJ CQkJCQkgZ3JvdXBlZF9yZWwsCi0JCQkJCQkJCQkJCSBwYXRoLAotCQkJCQkJCQkJCQkgZ3JvdXBl ZF9yZWwtPnJlbHRhcmdldCwKLQkJCQkJCQkJCQkJIHBhcnNlLT5ncm91cENsYXVzZSA/IEFHR19T T1JURUQgOiBBR0dfUExBSU4sCi0JCQkJCQkJCQkJCSBBR0dTUExJVF9GSU5BTF9ERVNFUklBTCwK LQkJCQkJCQkJCQkJIHBhcnNlLT5ncm91cENsYXVzZSwKLQkJCQkJCQkJCQkJIGhhdmluZ1F1YWws Ci0JCQkJCQkJCQkJCSBhZ2dfZmluYWxfY29zdHMsCi0JCQkJCQkJCQkJCSBkTnVtR3JvdXBzKSk7 Ci0JCQkJZWxzZQotCQkJCQlhZGRfcGF0aChncm91cGVkX3JlbCwgKFBhdGggKikKLQkJCQkJCQkg Y3JlYXRlX2dyb3VwX3BhdGgocm9vdCwKLQkJCQkJCQkJCQkJICAgZ3JvdXBlZF9yZWwsCi0JCQkJ CQkJCQkJCSAgIHBhdGgsCi0JCQkJCQkJCQkJCSAgIHBhcnNlLT5ncm91cENsYXVzZSwKLQkJCQkJ CQkJCQkJICAgaGF2aW5nUXVhbCwKLQkJCQkJCQkJCQkJICAgZE51bUdyb3VwcykpOwogCQkJfQog CQl9CiAJfQpAQCAtNjk1MCw5NyArNjg0NSw2NCBAQCBjcmVhdGVfcGFydGlhbF9ncm91cGluZ19w YXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkJewogCQkJUGF0aAkgICAqcGF0aCA9IChQYXRoICop IGxmaXJzdChsYyk7CiAJCQlib29sCQlpc19zb3J0ZWQ7CisJCQlpbnQJCQlwcmVzb3J0ZWRfa2V5 czsKIAotCQkJaXNfc29ydGVkID0gcGF0aGtleXNfY29udGFpbmVkX2luKHJvb3QtPmdyb3VwX3Bh dGhrZXlzLAotCQkJCQkJCQkJCQkgIHBhdGgtPnBhdGhrZXlzKTsKLQkJCWlmIChwYXRoID09IGNo ZWFwZXN0X3RvdGFsX3BhdGggfHwgaXNfc29ydGVkKQorCQkJaXNfc29ydGVkID0gcGF0aGtleXNf Y291bnRfY29udGFpbmVkX2luKHJvb3QtPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJCQkJCXBh dGgtPnBhdGhrZXlzLAorCQkJCQkJCQkJCQkJCSZwcmVzb3J0ZWRfa2V5cyk7CisJCQlpZiAoIWlz X3NvcnRlZCkKIAkJCXsKLQkJCQkvKiBTb3J0IHRoZSBjaGVhcGVzdCBwYXJ0aWFsIHBhdGgsIGlm IGl0IGlzbid0IGFscmVhZHkgKi8KLQkJCQlpZiAoIWlzX3NvcnRlZCkKKwkJCQkvKgorCQkJCSAq IFRyeSBhdCBsZWFzdCBzb3J0aW5nIHRoZSBjaGVhcGVzdCBwYXRoIGFuZCBhbHNvIHRyeQorCQkJ CSAqIGluY3JlbWVudGFsbHkgc29ydGluZyBhbnkgcGF0aCB3aGljaCBpcyBwYXJ0aWFsbHkgc29y dGVkCisJCQkJICogYWxyZWFkeSAobm8gbmVlZCB0byBkZWFsIHdpdGggcGF0aHMgd2hpY2ggaGF2 ZSBwcmVzb3J0ZWQKKwkJCQkgKiBrZXlzIHdoZW4gaW5jcmVtZW50YWwgc29ydCBpcyBkaXNhYmxl ZCB1bmxlc3MgaXQncyB0aGUKKwkJCQkgKiBjaGVhcGVzdCBpbnB1dCBwYXRoKS4KKwkJCQkgKi8K KwkJCQlpZiAocGF0aCAhPSBjaGVhcGVzdF90b3RhbF9wYXRoICYmCisJCQkJCShwcmVzb3J0ZWRf a2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkpCisJCQkJCWNvbnRpbnVlOwor CisJCQkJLyoKKwkJCQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVyIGJvdGggYSBzb3J0IGFu ZCBpbmNyZW1lbnRhbCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRoZXJl IGFyZSBubyBwcmVzb3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IHdo ZW4gdGhlcmUgYXJlIHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJCWlmIChwcmVzb3J0ZWRf a2V5cyA9PSAwIHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKIAkJCQkJcGF0aCA9IChQYXRo ICopIGNyZWF0ZV9zb3J0X3BhdGgocm9vdCwKIAkJCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3Vw ZWRfcmVsLAogCQkJCQkJCQkJCQkJCSBwYXRoLAogCQkJCQkJCQkJCQkJCSByb290LT5ncm91cF9w YXRoa2V5cywKIAkJCQkJCQkJCQkJCQkgLTEuMCk7Ci0KLQkJCQlpZiAocGFyc2UtPmhhc0FnZ3Mp Ci0JCQkJCWFkZF9wYXRoKHBhcnRpYWxseV9ncm91cGVkX3JlbCwgKFBhdGggKikKLQkJCQkJCQkg Y3JlYXRlX2FnZ19wYXRoKHJvb3QsCi0JCQkJCQkJCQkJCSBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWws Ci0JCQkJCQkJCQkJCSBwYXRoLAotCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5y ZWx0YXJnZXQsCi0JCQkJCQkJCQkJCSBwYXJzZS0+Z3JvdXBDbGF1c2UgPyBBR0dfU09SVEVEIDog QUdHX1BMQUlOLAotCQkJCQkJCQkJCQkgQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwsCi0JCQkJCQkJ CQkJCSBwYXJzZS0+Z3JvdXBDbGF1c2UsCi0JCQkJCQkJCQkJCSBOSUwsCi0JCQkJCQkJCQkJCSBh Z2dfcGFydGlhbF9jb3N0cywKLQkJCQkJCQkJCQkJIGROdW1QYXJ0aWFsR3JvdXBzKSk7CiAJCQkJ ZWxzZQotCQkJCQlhZGRfcGF0aChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIChQYXRoICopCi0JCQkJ CQkJIGNyZWF0ZV9ncm91cF9wYXRoKHJvb3QsCi0JCQkJCQkJCQkJCSAgIHBhcnRpYWxseV9ncm91 cGVkX3JlbCwKLQkJCQkJCQkJCQkJICAgcGF0aCwKLQkJCQkJCQkJCQkJICAgcGFyc2UtPmdyb3Vw Q2xhdXNlLAotCQkJCQkJCQkJCQkgICBOSUwsCi0JCQkJCQkJCQkJCSAgIGROdW1QYXJ0aWFsR3Jv dXBzKSk7CisJCQkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfaW5jcmVtZW50YWxfc29ydF9wYXRo KHJvb3QsCisJCQkJCQkJCQkJCQkJCQkJIHBhcnRpYWxseV9ncm91cGVkX3JlbCwKKwkJCQkJCQkJ CQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkJCQkgcm9vdC0+Z3JvdXBfcGF0aGtleXMsCisJ CQkJCQkJCQkJCQkJCQkJIHByZXNvcnRlZF9rZXlzLAorCQkJCQkJCQkJCQkJCQkJCSAtMS4wKTsK IAkJCX0KLQkJfQotCi0JCS8qCi0JCSAqIENvbnNpZGVyIGluY3JlbWVudGFsIHNvcnQgb24gYWxs IHBhcnRpYWwgcGF0aHMsIGlmIGVuYWJsZWQuCi0JCSAqCi0JCSAqIFdlIGNhbiBhbHNvIHNraXAg dGhlIGVudGlyZSBsb29wIHdoZW4gd2Ugb25seSBoYXZlIGEgc2luZ2xlLWl0ZW0KLQkJICogZ3Jv dXBfcGF0aGtleXMgYmVjYXVzZSB0aGVuIHdlIGNhbid0IHBvc3NpYmx5IGhhdmUgYSBwcmVzb3J0 ZWQKLQkJICogcHJlZml4IG9mIHRoZSBsaXN0IHdpdGhvdXQgaGF2aW5nIHRoZSBsaXN0IGJlIGZ1 bGx5IHNvcnRlZC4KLQkJICovCi0JCWlmIChlbmFibGVfaW5jcmVtZW50YWxfc29ydCAmJiBsaXN0 X2xlbmd0aChyb290LT5ncm91cF9wYXRoa2V5cykgPiAxKQotCQl7Ci0JCQlmb3JlYWNoKGxjLCBp bnB1dF9yZWwtPnBhdGhsaXN0KQotCQkJewotCQkJCVBhdGgJICAgKnBhdGggPSAoUGF0aCAqKSBs Zmlyc3QobGMpOwotCQkJCWJvb2wJCWlzX3NvcnRlZDsKLQkJCQlpbnQJCQlwcmVzb3J0ZWRfa2V5 czsKLQotCQkJCWlzX3NvcnRlZCA9IHBhdGhrZXlzX2NvdW50X2NvbnRhaW5lZF9pbihyb290LT5n cm91cF9wYXRoa2V5cywKLQkJCQkJCQkJCQkJCQkJcGF0aC0+cGF0aGtleXMsCi0JCQkJCQkJCQkJ CQkJCSZwcmVzb3J0ZWRfa2V5cyk7Ci0KLQkJCQkvKiBJZ25vcmUgYWxyZWFkeSBzb3J0ZWQgcGF0 aHMgKi8KLQkJCQlpZiAoaXNfc29ydGVkKQotCQkJCQljb250aW51ZTsKLQotCQkJCWlmIChwcmVz b3J0ZWRfa2V5cyA9PSAwKQotCQkJCQljb250aW51ZTsKIAotCQkJCS8qIFNpbmNlIHdlIGhhdmUg cHJlc29ydGVkIGtleXMsIGNvbnNpZGVyIGluY3JlbWVudGFsIHNvcnQuICovCi0JCQkJcGF0aCA9 IChQYXRoICopIGNyZWF0ZV9pbmNyZW1lbnRhbF9zb3J0X3BhdGgocm9vdCwKLQkJCQkJCQkJCQkJ CQkJCSBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCi0JCQkJCQkJCQkJCQkJCQkgcGF0aCwKLQkJCQkJ CQkJCQkJCQkJCSByb290LT5ncm91cF9wYXRoa2V5cywKLQkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0 ZWRfa2V5cywKLQkJCQkJCQkJCQkJCQkJCSAtMS4wKTsKLQotCQkJCWlmIChwYXJzZS0+aGFzQWdn cykKLQkJCQkJYWRkX3BhdGgocGFydGlhbGx5X2dyb3VwZWRfcmVsLCAoUGF0aCAqKQotCQkJCQkJ CSBjcmVhdGVfYWdnX3BhdGgocm9vdCwKLQkJCQkJCQkJCQkJIHBhcnRpYWxseV9ncm91cGVkX3Jl bCwKLQkJCQkJCQkJCQkJIHBhdGgsCi0JCQkJCQkJCQkJCSBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwt PnJlbHRhcmdldCwKLQkJCQkJCQkJCQkJIHBhcnNlLT5ncm91cENsYXVzZSA/IEFHR19TT1JURUQg OiBBR0dfUExBSU4sCi0JCQkJCQkJCQkJCSBBR0dTUExJVF9JTklUSUFMX1NFUklBTCwKLQkJCQkJ CQkJCQkJIHBhcnNlLT5ncm91cENsYXVzZSwKLQkJCQkJCQkJCQkJIE5JTCwKLQkJCQkJCQkJCQkJ IGFnZ19wYXJ0aWFsX2Nvc3RzLAotCQkJCQkJCQkJCQkgZE51bVBhcnRpYWxHcm91cHMpKTsKLQkJ CQllbHNlCi0JCQkJCWFkZF9wYXRoKHBhcnRpYWxseV9ncm91cGVkX3JlbCwgKFBhdGggKikKLQkJ CQkJCQkgY3JlYXRlX2dyb3VwX3BhdGgocm9vdCwKLQkJCQkJCQkJCQkJICAgcGFydGlhbGx5X2dy b3VwZWRfcmVsLAotCQkJCQkJCQkJCQkgICBwYXRoLAotCQkJCQkJCQkJCQkgICBwYXJzZS0+Z3Jv dXBDbGF1c2UsCi0JCQkJCQkJCQkJCSAgIE5JTCwKLQkJCQkJCQkJCQkJICAgZE51bVBhcnRpYWxH cm91cHMpKTsKLQkJCX0KKwkJCWlmIChwYXJzZS0+aGFzQWdncykKKwkJCQlhZGRfcGF0aChwYXJ0 aWFsbHlfZ3JvdXBlZF9yZWwsIChQYXRoICopCisJCQkJCQkgY3JlYXRlX2FnZ19wYXRoKHJvb3Qs CisJCQkJCQkJCQkJIHBhcnRpYWxseV9ncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkgcGF0aCwKKwkJ CQkJCQkJCQkgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5yZWx0YXJnZXQsCisJCQkJCQkJCQkJIHBh cnNlLT5ncm91cENsYXVzZSA/IEFHR19TT1JURUQgOiBBR0dfUExBSU4sCisJCQkJCQkJCQkJIEFH R1NQTElUX0lOSVRJQUxfU0VSSUFMLAorCQkJCQkJCQkJCSBwYXJzZS0+Z3JvdXBDbGF1c2UsCisJ CQkJCQkJCQkJIE5JTCwKKwkJCQkJCQkJCQkgYWdnX3BhcnRpYWxfY29zdHMsCisJCQkJCQkJCQkJ IGROdW1QYXJ0aWFsR3JvdXBzKSk7CisJCQllbHNlCisJCQkJYWRkX3BhdGgocGFydGlhbGx5X2dy b3VwZWRfcmVsLCAoUGF0aCAqKQorCQkJCQkJIGNyZWF0ZV9ncm91cF9wYXRoKHJvb3QsCisJCQkJ CQkJCQkJICAgcGFydGlhbGx5X2dyb3VwZWRfcmVsLAorCQkJCQkJCQkJCSAgIHBhdGgsCisJCQkJ CQkJCQkJICAgcGFyc2UtPmdyb3VwQ2xhdXNlLAorCQkJCQkJCQkJCSAgIE5JTCwKKwkJCQkJCQkJ CQkgICBkTnVtUGFydGlhbEdyb3VwcykpOwogCQl9CiAJfQogCkBAIC03MDUwLDcgKzY5MTIsNiBA QCBjcmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkJZm9y ZWFjaChsYywgaW5wdXRfcmVsLT5wYXJ0aWFsX3BhdGhsaXN0KQogCQl7CiAJCQlQYXRoCSAgICpw YXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKLQkJCVBhdGgJICAgKnBhdGhfb3JpZ2luYWwgPSBw YXRoOwogCQkJYm9vbAkJaXNfc29ydGVkOwogCQkJaW50CQkJcHJlc29ydGVkX2tleXM7CiAKQEAg LTcwNTgsNjYgKzY5MTksMzkgQEAgY3JlYXRlX3BhcnRpYWxfZ3JvdXBpbmdfcGF0aHMoUGxhbm5l ckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkJcGF0aC0+cGF0aGtleXMsCiAJCQkJCQkJCQkJCQkJ JnByZXNvcnRlZF9rZXlzKTsKIAotCQkJaWYgKHBhdGggPT0gY2hlYXBlc3RfcGFydGlhbF9wYXRo IHx8IGlzX3NvcnRlZCkKKwkJCWlmICghaXNfc29ydGVkKQogCQkJewotCQkJCS8qIFNvcnQgdGhl IGNoZWFwZXN0IHBhcnRpYWwgcGF0aCwgaWYgaXQgaXNuJ3QgYWxyZWFkeSAqLwotCQkJCWlmICgh aXNfc29ydGVkKQorCQkJCS8qCisJCQkJICogVHJ5IGF0IGxlYXN0IHNvcnRpbmcgdGhlIGNoZWFw ZXN0IHBhdGggYW5kIGFsc28gdHJ5CisJCQkJICogaW5jcmVtZW50YWxseSBzb3J0aW5nIGFueSBw YXRoIHdoaWNoIGlzIHBhcnRpYWxseSBzb3J0ZWQKKwkJCQkgKiBhbHJlYWR5IChubyBuZWVkIHRv IGRlYWwgd2l0aCBwYXRocyB3aGljaCBoYXZlIHByZXNvcnRlZAorCQkJCSAqIGtleXMgd2hlbiBp bmNyZW1lbnRhbCBzb3J0IGlzIGRpc2FibGVkIHVubGVzcyBpdCdzIHRoZQorCQkJCSAqIGNoZWFw ZXN0IGlucHV0IHBhdGgpLgorCQkJCSAqLworCQkJCWlmIChwYXRoICE9IGNoZWFwZXN0X3BhcnRp YWxfcGF0aCAmJgorCQkJCQkocHJlc29ydGVkX2tleXMgPT0gMCB8fCAhZW5hYmxlX2luY3JlbWVu dGFsX3NvcnQpKQorCQkJCQljb250aW51ZTsKKworCQkJCS8qCisJCQkJICogV2UndmUgbm8gbmVl ZCB0byBjb25zaWRlciBib3RoIGEgc29ydCBhbmQgaW5jcmVtZW50YWwgc29ydC4KKwkJCQkgKiBX ZSdsbCBqdXN0IGRvIGEgc29ydCBpZiB0aGVyZSBhcmUgbm8gcHJlc29ydGVkIGtleXMgYW5kIGFu CisJCQkJICogaW5jcmVtZW50YWwgc29ydCB3aGVuIHRoZXJlIGFyZSBwcmVzb3J0ZWQga2V5cy4K KwkJCQkgKi8KKwkJCQlpZiAocHJlc29ydGVkX2tleXMgPT0gMCB8fCAhZW5hYmxlX2luY3JlbWVu dGFsX3NvcnQpCiAJCQkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfc29ydF9wYXRoKHJvb3QsCiAJ CQkJCQkJCQkJCQkJIHBhcnRpYWxseV9ncm91cGVkX3JlbCwKIAkJCQkJCQkJCQkJCQkgcGF0aCwK IAkJCQkJCQkJCQkJCQkgcm9vdC0+Z3JvdXBfcGF0aGtleXMsCiAJCQkJCQkJCQkJCQkJIC0xLjAp OwotCi0JCQkJaWYgKHBhcnNlLT5oYXNBZ2dzKQotCQkJCQlhZGRfcGFydGlhbF9wYXRoKHBhcnRp YWxseV9ncm91cGVkX3JlbCwgKFBhdGggKikKLQkJCQkJCQkJCSBjcmVhdGVfYWdnX3BhdGgocm9v dCwKLQkJCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3VwZWRfcmVsLAotCQkJCQkJCQkJCQkJCSBw YXRoLAotCQkJCQkJCQkJCQkJCSBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnJlbHRhcmdldCwKLQkJ CQkJCQkJCQkJCQkgcGFyc2UtPmdyb3VwQ2xhdXNlID8gQUdHX1NPUlRFRCA6IEFHR19QTEFJTiwK LQkJCQkJCQkJCQkJCQkgQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwsCi0JCQkJCQkJCQkJCQkJIHBh cnNlLT5ncm91cENsYXVzZSwKLQkJCQkJCQkJCQkJCQkgTklMLAotCQkJCQkJCQkJCQkJCSBhZ2df cGFydGlhbF9jb3N0cywKLQkJCQkJCQkJCQkJCQkgZE51bVBhcnRpYWxQYXJ0aWFsR3JvdXBzKSk7 CiAJCQkJZWxzZQotCQkJCQlhZGRfcGFydGlhbF9wYXRoKHBhcnRpYWxseV9ncm91cGVkX3JlbCwg KFBhdGggKikKLQkJCQkJCQkJCSBjcmVhdGVfZ3JvdXBfcGF0aChyb290LAotCQkJCQkJCQkJCQkJ CSAgIHBhcnRpYWxseV9ncm91cGVkX3JlbCwKLQkJCQkJCQkJCQkJCQkgICBwYXRoLAotCQkJCQkJ CQkJCQkJCSAgIHBhcnNlLT5ncm91cENsYXVzZSwKLQkJCQkJCQkJCQkJCQkgICBOSUwsCi0JCQkJ CQkJCQkJCQkJICAgZE51bVBhcnRpYWxQYXJ0aWFsR3JvdXBzKSk7CisJCQkJCXBhdGggPSAoUGF0 aCAqKSBjcmVhdGVfaW5jcmVtZW50YWxfc29ydF9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkJCQkJ IHBhcnRpYWxseV9ncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJ CQkJCQkJCQkgcm9vdC0+Z3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJCQkJIHByZXNvcnRl ZF9rZXlzLAorCQkJCQkJCQkJCQkJCQkJCSAtMS4wKTsKIAkJCX0KIAotCQkJLyoKLQkJCSAqIE5v dyB3ZSBtYXkgY29uc2lkZXIgaW5jcmVtZW50YWwgc29ydCBvbiB0aGlzIHBhdGgsIGJ1dCBvbmx5 Ci0JCQkgKiB3aGVuIHRoZSBwYXRoIGlzIG5vdCBhbHJlYWR5IHNvcnRlZCBhbmQgd2hlbiBpbmNy ZW1lbnRhbCBzb3J0Ci0JCQkgKiBpcyBlbmFibGVkLgotCQkJICovCi0JCQlpZiAoaXNfc29ydGVk IHx8ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKLQkJCQljb250aW51ZTsKLQotCQkJLyogUmVz dG9yZSB0aGUgaW5wdXQgcGF0aCAod2UgbWlnaHQgaGF2ZSBhZGRlZCBTb3J0IG9uIHRvcCkuICov Ci0JCQlwYXRoID0gcGF0aF9vcmlnaW5hbDsKLQotCQkJLyogbm8gc2hhcmVkIHByZWZpeCwgbm90 IHBvaW50IGluIGJ1aWxkaW5nIGluY3JlbWVudGFsIHNvcnQgKi8KLQkJCWlmIChwcmVzb3J0ZWRf a2V5cyA9PSAwKQotCQkJCWNvbnRpbnVlOwotCi0JCQkvKgotCQkJICogV2Ugc2hvdWxkIGhhdmUg YWxyZWFkeSBleGNsdWRlZCBwYXRoa2V5cyBvZiBsZW5ndGggMSBiZWNhdXNlCi0JCQkgKiB0aGVu IHByZXNvcnRlZF9rZXlzID4gMCB3b3VsZCBpbXBseSBpc19zb3J0ZWQgd2FzIHRydWUuCi0JCQkg Ki8KLQkJCUFzc2VydChsaXN0X2xlbmd0aChyb290LT5ncm91cF9wYXRoa2V5cykgIT0gMSk7Ci0K LQkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfaW5jcmVtZW50YWxfc29ydF9wYXRoKHJvb3QsCi0J CQkJCQkJCQkJCQkJCSBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCi0JCQkJCQkJCQkJCQkJCSBwYXRo LAotCQkJCQkJCQkJCQkJCQkgcm9vdC0+Z3JvdXBfcGF0aGtleXMsCi0JCQkJCQkJCQkJCQkJCSBw cmVzb3J0ZWRfa2V5cywKLQkJCQkJCQkJCQkJCQkJIC0xLjApOwotCiAJCQlpZiAocGFyc2UtPmhh c0FnZ3MpCiAJCQkJYWRkX3BhcnRpYWxfcGF0aChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIChQYXRo ICopCiAJCQkJCQkJCSBjcmVhdGVfYWdnX3BhdGgocm9vdCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5jcmVtZW50YWxfc29ydC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2luY3JlbWVudGFsX3NvcnQub3V0CmluZGV4IDBhNjMxMTI0YzIuLjFhMWU4YjIz NjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5jcmVtZW50YWxfc29y dC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmNyZW1lbnRhbF9zb3J0Lm91 dApAQCAtMSwxNiArMSwzIEBACi0tLSBXaGVuIHdlIGhhdmUgdG8gc29ydCB0aGUgZW50aXJlIHRh YmxlLCBpbmNyZW1lbnRhbCBzb3J0IHdpbGwKLS0tIGJlIHNsb3dlciB0aGFuIHBsYWluIHNvcnQs IHNvIGl0IHNob3VsZCBub3QgYmUgdXNlZC4KLWV4cGxhaW4gKGNvc3RzIG9mZikKLXNlbGVjdCAq IGZyb20gKHNlbGVjdCAqIGZyb20gdGVuazEgb3JkZXIgYnkgZm91cikgdCBvcmRlciBieSBmb3Vy LCB0ZW47Ci0gICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBTb3J0Ci0gICBTb3J0IEtleTogdGVuazEuZm91ciwg dGVuazEudGVuCi0gICAtPiAgU29ydAotICAgICAgICAgU29ydCBLZXk6IHRlbmsxLmZvdXIKLSAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0ZW5rMQotKDUgcm93cykKLQogLS0gV2hlbiB0aGVyZSBp cyBhIExJTUlUIGNsYXVzZSwgaW5jcmVtZW50YWwgc29ydCBpcyBiZW5lZmljaWFsIGJlY2F1c2UK IC0tIGl0IG9ubHkgaGFzIHRvIHNvcnQgc29tZSBvZiB0aGUgZ3JvdXBzLCBhbmQgbm90IHRoZSBl bnRpcmUgdGFibGUuCiBleHBsYWluIChjb3N0cyBvZmYpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGFydGl0aW9uX2pvaW4ub3V0CmluZGV4IGIyMGZhY2MxOWYuLmM1OWNhZjFjYjMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2pvaW4ub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2pvaW4ub3V0CkBAIC0xMTcz LDggKzExNzMsOSBAQCBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgdDEuYSwgdDIuYiBGUk9N IChTRUxFQ1QgKiBGUk9NIHBydDEgV0hFUkUgYSA8IDQ1MCkgdDEgTEVGVCBKT0lOIChTRUxFQ1Qg KiBGUk9NIHBydDIgV0hFUkUgYiA+IDI1MCkgdDIgT04gdDEuYSA9IHQyLmIgV0hFUkUgdDEuYiA9 IDAgT1JERVIgQlkgdDEuYSwgdDIuYjsKICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFNvcnQKKyBJbmNyZW1lbnRhbCBTb3J0 CiAgICBTb3J0IEtleTogcHJ0MS5hLCBwcnQyLmIKKyAgIFByZXNvcnRlZCBLZXk6IHBydDEuYQog ICAgLT4gIE1lcmdlIExlZnQgSm9pbgogICAgICAgICAgTWVyZ2UgQ29uZDogKHBydDEuYSA9IHBy dDIuYikKICAgICAgICAgIC0+ICBTb3J0CkBAIC0xMTkxLDcgKzExOTIsNyBAQCBTRUxFQ1QgdDEu YSwgdDIuYiBGUk9NIChTRUxFQ1QgKiBGUk9NIHBydDEgV0hFUkUgYSA8IDQ1MCkgdDEgTEVGVCBK T0lOIChTRUxFQ1QgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoYiA+IDI1 MCkKICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnQyX3AzIHBydDJfMgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoYiA+IDI1MCkKLSgxOCByb3dzKQor KDE5IHJvd3MpCiAKIFNFTEVDVCB0MS5hLCB0Mi5iIEZST00gKFNFTEVDVCAqIEZST00gcHJ0MSBX SEVSRSBhIDwgNDUwKSB0MSBMRUZUIEpPSU4gKFNFTEVDVCAqIEZST00gcHJ0MiBXSEVSRSBiID4g MjUwKSB0MiBPTiB0MS5hID0gdDIuYiBXSEVSRSB0MS5iID0gMCBPUkRFUiBCWSB0MS5hLCB0Mi5i OwogICBhICB8ICBiICAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luY3JlbWVu dGFsX3NvcnQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5jcmVtZW50YWxfc29ydC5zcWwK aW5kZXggMjg0YTM1NGRiYi4uMDcxZjhhNTI2OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvaW5jcmVtZW50YWxfc29ydC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5j cmVtZW50YWxfc29ydC5zcWwKQEAgLTEsOCArMSwzIEBACi0tLSBXaGVuIHdlIGhhdmUgdG8gc29y dCB0aGUgZW50aXJlIHRhYmxlLCBpbmNyZW1lbnRhbCBzb3J0IHdpbGwKLS0tIGJlIHNsb3dlciB0 aGFuIHBsYWluIHNvcnQsIHNvIGl0IHNob3VsZCBub3QgYmUgdXNlZC4KLWV4cGxhaW4gKGNvc3Rz IG9mZikKLXNlbGVjdCAqIGZyb20gKHNlbGVjdCAqIGZyb20gdGVuazEgb3JkZXIgYnkgZm91cikg dCBvcmRlciBieSBmb3VyLCB0ZW47Ci0KIC0tIFdoZW4gdGhlcmUgaXMgYSBMSU1JVCBjbGF1c2Us IGluY3JlbWVudGFsIHNvcnQgaXMgYmVuZWZpY2lhbCBiZWNhdXNlCiAtLSBpdCBvbmx5IGhhcyB0 byBzb3J0IHNvbWUgb2YgdGhlIGdyb3VwcywgYW5kIG5vdCB0aGUgZW50aXJlIHRhYmxlLgogZXhw bGFpbiAoY29zdHMgb2ZmKQotLSAKMi4zNS4xLndpbmRvd3MuMgoK --0000000000003c012d05efdbe98c Content-Type: text/plain; charset="US-ASCII"; name="v3-0003-Add-enable_presorted_aggregate-GUC.patch" Content-Disposition: attachment; filename="v3-0003-Add-enable_presorted_aggregate-GUC.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lbozba9r2 RnJvbSAwZWI2NTBkZDc3NzkyNWQyOGZmM2M0N2ZmYmFlMjQ0ZjA2Mzg2ZDU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAxNCBEZWMgMjAyMiAxMDoyNToxOSArMTMwMApTdWJqZWN0OiBbUEFUQ0ggdjMgMy8z XSBBZGQgZW5hYmxlX3ByZXNvcnRlZF9hZ2dyZWdhdGUgR1VDCgoxMzQ5ZDI3OSBhZGRlZCBxdWVy eSBwbGFubmVyIHN1cHBvcnQgdG8gYWxsb3cgbW9yZSBlZmZpY2llbnQgZXhlY3V0aW9uIG9mCmFn Z3JlZ2F0ZSBmdW5jdGlvbnMgd2hpY2ggaGF2ZSBhbiBPUkRFUiBCWSBvciBhIERJU1RJTkNUIGNs YXVzZS4gIFByaW9yIHRvCnRoYXQgY29tbWl0LCB0aGUgcGxhbm5lciB3b3VsZCBvbmx5IHJlcXVl c3QgdGhhdCB0aGUgbG93ZXIgcGxhbm5lciBwcm9kdWNlCmEgcGxhbiB3aXRoIHRoZSBvcmRlciBy ZXF1aXJlZCBmb3IgdGhlIEdST1VQIEJZIGNsYXVzZSBhbmQgaXQgd291bGQgYmUKbGVmdCB1cCB0 byBub2RlQWdnLmMgdG8gcGVyZm9ybSB0aGUgZmluYWwgc29ydCBvZiByZWNvcmRzIHdpdGhpbiBl YWNoCmdyb3VwIHNvIHRoYXQgdGhlIGFnZ3JlZ2F0ZSB0cmFuc2l0aW9uIGZ1bmN0aW9ucyB3ZXJl IGNhbGxlZCBpbiB0aGUKY29ycmVjdCBvcmRlci4gIE5vdyB0aGF0IHRoZSBwbGFubmVyIHJlcXVl c3RzIHRoZSBsb3dlciBwbGFubmVyIHByb2R1Y2UgYQpwbGFuIHdpdGggdGhlIEdST1VQIEJZIGFu ZCB0aGUgT1JERVIgQlkgLyBESVNUSU5DVCBhZ2dyZWdhdGVzIGluIG1pbmQsCnRoZXJlIGlzIHRo ZSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBwbGFubmVyIGNob29zZXMgYSBwbGFuIHdoaWNoIGNvdWxk IGJlCmxlc3MgZWZmaWNpZW50IHRoYW4gd2hhdCB3b3VsZCBoYXZlIGJlZW4gcHJvZHVjZWQgYmVm b3JlIDEzNDlkMjc5LgoKV2hpbGUgZGV2ZWxvcGluZyAxMzQ5ZDI3OSwgSSBoYWQgaW4gbWluZCB0 aGF0IEluY3JlbWVudGFsIFNvcnQgd291bGQgaGVscAp1cyBpbiBjYXNlcyB3aGVyZSBhbiBpbmRl eCBleGlzdHMgb25seSBvbiB0aGUgR1JPVVAgQlkgY29sdW1uKHMpLgpJbmNyZW1lbnRhbCBTb3J0 IHdvdWxkIGp1c3QgcmVwbGFjZSB0aGUgaW1wbGljaXQgdHVwbGVzb3J0cyB3aGljaCBhcmUKYmVp bmcgcGVyZm9ybWVkIGluIG5vZGVBZ2cuYy4gIEhvd2V2ZXIsIGJlY2F1c2UgdGhlIHBsYW5uZXIg aGFzIHRoZQpmbGV4aWJpbGl0eSB0byBpbnN0ZWFkIGNob29zZSBhIHBsYW4gd2hpY2gganVzdCBw ZXJmb3JtcyBhIGZ1bGwgc29ydCBvbgpib3RoIHRoZSBHUk9VUCBCWSBhbmQgT1JERVIgQlkgLyBE SVNUSU5DVCBhZ2dyZWdhdGUgY29sdW1ucywgdGhlcmUgaXMKcG90ZW50aWFsIGZvciB0aGUgcGxh bm5lciB0byBtYWtlIGEgYmFkIGNob2ljZS4gIFRoZSBjb3N0aW5nIGZvcgpJbmNyZW1lbnRhbCBT b3J0IGlzIG5vdCBwZXJmZWN0IGFzIGl0IGFzc3VtZXMgYW4gZXZlbiBkaXN0cmlidXRpb24gb2Yg cm93cwp0byBzb3J0IHdpdGhpbiBlYWNoIHNvcnQgZ3JvdXAuCgpIZXJlIHdlIGFkZCBhbiBlc2Nh cGUgaGF0Y2ggaW4gdGhlIGZvcm0gb2YgdGhlIGVuYWJsZV9wcmVzb3J0ZWRfYWdncmVnYXRlCkdV Qy4gIFRoaXMgd2lsbCBhbGxvdyB1c2VycyB0byBnZXQgdGhlIHByZS1QRzE2IGJlaGF2aW9yIGlu IGNhc2VzIHdoZXJlCnRoZXkgaGF2ZSBubyBvdGhlciBtZWFucyB0byBjb252aW5jZSB0aGUgcXVl cnkgcGxhbm5lciB0byBwcm9kdWNlIGEgcGxhbgp3aGljaCBvbmx5IHNvcnRzIG9uIHRoZSBHUk9V UCBCWSBjb2x1bW4ocykuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQXBIRHZy MVNtK2c5aGJ2NFJFT1Z1dlFLZURXWGNLVUFobWJLNUsrZGZ1bjBzOUN2QUBtYWlsLmdtYWlsLmNv bQotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8IDIz ICsrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXpl LmMgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAg ICAgICAgICB8ICAzICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAg ICAgICAgIHwgMTUgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUgfCAgMSArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY29zdC5oICAgICAg ICAgICAgICAgICAgfCAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3JlZ2F0ZXMu b3V0ICAgICAgfCAxMSArKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmll d3Mub3V0ICAgICAgICB8ICAzICsrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRlcy5z cWwgICAgICAgICAgIHwgIDYgKysrKysKIDkgZmlsZXMgY2hhbmdlZCwgNjIgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggOGU0MTQ1OTc5ZC4uOWVlZGFiNjUyZCAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbApAQCAtNTMxMSw2ICs1MzExLDI5IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlz dGVudHJ5IGlkPSJndWMtZW5hYmxlLXByZXNvcnRlZC1hZ2dyZWdhdGUiIHhyZWZsYWJlbD0iZW5h YmxlX3ByZXNvcnRlZF9hZ2dyZWdhdGUiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+ZW5hYmxlX3By ZXNvcnRlZF9hZ2dyZWdhdGU8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90eXBlPikKKyAgICAg IDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+ZW5hYmxlX3ByZXNvcnRlZF9h Z2dyZWdhdGU8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAg ICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAg PHBhcmE+CisgICAgICAgIENvbnRyb2xzIGlmIHRoZSBxdWVyeSBwbGFubmVyIHdpbGwgcHJvZHVj ZSBhIHBsYW4gd2hpY2ggd2lsbCBwcm92aWRlCisgICAgICAgIHJvd3Mgd2hpY2ggYXJlIHByZXNv cnRlZCBpbiB0aGUgb3JkZXIgcmVxdWlyZWQgZm9yIHRoZSBxdWVyeSdzCisgICAgICAgIDxsaXRl cmFsPk9SREVSIEJZPC9saXRlcmFsPiAvIDxsaXRlcmFsPkRJU1RJTkNUPC9saXRlcmFsPiBhZ2dy ZWdhdGUKKyAgICAgICAgZnVuY3Rpb25zLiAgV2hlbiBkaXNhYmxlZCwgdGhlIHF1ZXJ5IHBsYW5u ZXIgd2lsbCBwcm9kdWNlIGEgcGxhbiB3aGljaAorICAgICAgICB3aWxsIGFsd2F5cyByZXF1aXJl IHRoZSBleGVjdXRvciB0byBwZXJmb3JtIGEgc29ydCBiZWZvcmUgcGVyZm9ybWluZworICAgICAg ICBhZ2dyZWdhdGlvbiBvZiBlYWNoIGFnZ3JlZ2F0ZSBmdW5jdGlvbiBjb250YWluaW5nIGFuCisg ICAgICAgIDxsaXRlcmFsPk9SREVSIEJZPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5ESVNUSU5DVDwv bGl0ZXJhbD4gY2xhdXNlLgorICAgICAgICBXaGVuIGVuYWJsZWQsIHRoZSBwbGFubmVyIHdpbGwg dHJ5IHRvIHByb2R1Y2UgYSBtb3JlIGVmZmljaWVudCBwbGFuCisgICAgICAgIHdoaWNoIHByb3Zp ZGVzIGlucHV0IHRvIHRoZSBhZ2dyZWdhdGUgZnVuY3Rpb25zIHdoaWNoIGlzIHByZXNvcnRlZCBp bgorICAgICAgICB0aGUgb3JkZXIgdGhleSByZXF1aXJlIGZvciBhZ2dyZWdhdGlvbi4gIFRoZSBk ZWZhdWx0IHZhbHVlIGlzCisgICAgICAgIDxsaXRlcmFsPm9uPC9saXRlcmFsPi4KKyAgICAgICA8 L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8 dmFybGlzdGVudHJ5IGlkPSJndWMtZW5hYmxlLXNlcXNjYW4iIHhyZWZsYWJlbD0iZW5hYmxlX3Nl cXNjYW4iPgogICAgICAgPHRlcm0+PHZhcm5hbWU+ZW5hYmxlX3NlcXNjYW48L3Zhcm5hbWU+ICg8 dHlwZT5ib29sZWFuPC90eXBlPikKICAgICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvY29zdHNpemUuYwppbmRleCAwZjBiY2ZiN2U1Li44OWQzYzQzNTJjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKQEAgLTE1MSw2ICsxNTEsNyBAQCBib29sCQllbmFi bGVfcGFydGl0aW9ud2lzZV9hZ2dyZWdhdGUgPSBmYWxzZTsKIGJvb2wJCWVuYWJsZV9wYXJhbGxl bF9hcHBlbmQgPSB0cnVlOwogYm9vbAkJZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSB0cnVlOwogYm9v bAkJZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nID0gdHJ1ZTsKK2Jvb2wJCWVuYWJsZV9wcmVzb3J0 ZWRfYWdncmVnYXRlID0gdHJ1ZTsKIGJvb2wJCWVuYWJsZV9hc3luY19hcHBlbmQgPSB0cnVlOwog CiB0eXBlZGVmIHN0cnVjdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v cGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IGRm ZGEyNTFkOTUuLmUyMWU3MmViODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK QEAgLTMxOTEsNyArMzE5MSw4IEBAIG1ha2VfcGF0aGtleXNfZm9yX2dyb3VwYWdnKFBsYW5uZXJJ bmZvICpyb290LCBMaXN0ICpncm91cENsYXVzZSwgTGlzdCAqdGxpc3QsCiAJICogc2V0cy4gIEFs bCBoYW5kbGluZyBzcGVjaWZpYyB0byBvcmRlcmVkIGFnZ3JlZ2F0ZXMgbXVzdCBiZSBkb25lIGJ5 IHRoZQogCSAqIGV4ZWN1dG9yIGluIHRoYXQgY2FzZS4KIAkgKi8KLQlpZiAocm9vdC0+bnVtT3Jk ZXJlZEFnZ3MgPT0gMCB8fCByb290LT5wYXJzZS0+Z3JvdXBpbmdTZXRzICE9IE5JTCkKKwlpZiAo cm9vdC0+bnVtT3JkZXJlZEFnZ3MgPT0gMCB8fCByb290LT5wYXJzZS0+Z3JvdXBpbmdTZXRzICE9 IE5JTCB8fAorCQkhZW5hYmxlX3ByZXNvcnRlZF9hZ2dyZWdhdGUpCiAJCXJldHVybiBncm91cHBh dGhrZXlzOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggMWJmMTRl ZWM2Ni4uNDM2YWZlMWQyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTk3 MSw2ICs5NzEsMjEgQEAgc3RydWN0IGNvbmZpZ19ib29sIENvbmZpZ3VyZU5hbWVzQm9vbFtdID0K IAkJdHJ1ZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCisJeworCQl7ImVuYWJsZV9wcmVzb3J0 ZWRfYWdncmVnYXRlIiwgUEdDX1VTRVJTRVQsIFFVRVJZX1RVTklOR19NRVRIT0QsCisJCQlnZXR0 ZXh0X25vb3AoIkVuYWJsZXMgdGhlIHBsYW5uZXIncyBhYmlsaXR5IHRvIHByb2R1Y2UgcGxhbnMg d2hpY2ggIgorCQkJCQkJICJwcm92aWRlIHByZXNvcnRlZCBpbnB1dCBmb3IgT1JERVIgQlkgLyBE SVNUSU5DVCBhZ2dyZWdhdGUgIgorCQkJCQkJICJmdW5jdGlvbnMuIiksCisJCQlnZXR0ZXh0X25v b3AoIkFsbG93cyB0aGUgcXVlcnkgcGxhbm5lciB0byBidWlsZCBwbGFucyB3aGljaCBwcm92aWRl ICIKKwkJCQkJCSAicHJlc29ydGVkIGlucHV0IGZvciBhZ2dyZWdhdGUgZnVuY3Rpb25zIHdpdGgg YW4gT1JERVIgQlkgLyAiCisJCQkJCQkgIkRJU1RJTkNUIGNsYXVzZS4gIFdoZW4gZGlzYWJsZWQs IGltcGxpY2l0IHNvcnRzIGFyZSBhbHdheXMgIgorCQkJCQkJICJwZXJmb3JtZWQgZHVyaW5nIGV4 ZWN1dGlvbi4iKSwKKwkJCUdVQ19FWFBMQUlOCisJCX0sCisJCSZlbmFibGVfcHJlc29ydGVkX2Fn Z3JlZ2F0ZSwKKwkJdHJ1ZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCiAJewogCQl7ImVuYWJs ZV9hc3luY19hcHBlbmQiLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX01FVEhPRCwKIAkJCWdl dHRleHRfbm9vcCgiRW5hYmxlcyB0aGUgcGxhbm5lcidzIHVzZSBvZiBhc3luYyBhcHBlbmQgcGxh bnMuIiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUK aW5kZXggMDQzODY0NTk3Zi4uNWFmZGViMDRkZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzg0LDYgKzM4NCw3IEBACiAjZW5hYmxlX3Bh cnRpdGlvbl9wcnVuaW5nID0gb24KICNlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luID0gb2ZmCiAj ZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlID0gb2ZmCisjZW5hYmxlX3ByZXNvcnRlZF9h Z2dyZWdhdGUgPSBvbgogI2VuYWJsZV9zZXFzY2FuID0gb24KICNlbmFibGVfc29ydCA9IG9uCiAj ZW5hYmxlX3RpZHNjYW4gPSBvbgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Nv c3QuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmgKaW5kZXggMjA0ZTk0YjZkMS4uYjZj YzJjOWNkNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Nvc3QuaAorKysgYi9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvY29zdC5oCkBAIC02OCw2ICs2OCw3IEBAIGV4dGVybiBQR0RM TElNUE9SVCBib29sIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZTsKIGV4dGVybiBQR0RM TElNUE9SVCBib29sIGVuYWJsZV9wYXJhbGxlbF9hcHBlbmQ7CiBleHRlcm4gUEdETExJTVBPUlQg Ym9vbCBlbmFibGVfcGFyYWxsZWxfaGFzaDsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJs ZV9wYXJ0aXRpb25fcHJ1bmluZzsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9wcmVz b3J0ZWRfYWdncmVnYXRlOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX2FzeW5jX2Fw cGVuZDsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgY29uc3RyYWludF9leGNsdXNpb247CiAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3JlZ2F0ZXMub3V0CmluZGV4IGZjMmJkNDBiZTIuLjMw OWMyZGM4NjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRl cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hZ2dyZWdhdGVzLm91dApAQCAt MTQ3MSw2ICsxNDcxLDE3IEBAIGdyb3VwIGJ5IHRlbjsKICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biB0ZW5rMQogKDUgcm93cykKIAorLS0gRW5zdXJlIG5vIG9yZGVyaW5nIGlzIHJlcXVlc3RlZCB3 aGVuIGVuYWJsZV9wcmVzb3J0ZWRfYWdncmVnYXRlIGlzIG9mZgorc2V0IGVuYWJsZV9wcmVzb3J0 ZWRfYWdncmVnYXRlIHRvIG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCBzdW0odHdv IG9yZGVyIGJ5IHR3bykgZnJvbSB0ZW5rMTsKKyAgICAgICBRVUVSWSBQTEFOICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2NhbiBvbiB0 ZW5rMQorKDIgcm93cykKKworcmVzZXQgZW5hYmxlX3ByZXNvcnRlZF9hZ2dyZWdhdGU7CiAtLQog LS0gVGVzdCBjb21iaW5hdGlvbnMgb2YgRElTVElOQ1QgYW5kL29yIE9SREVSIEJZCiAtLQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dAppbmRleCA1NzliODYxZDg0Li4wMDFjNmU3 ZWI5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dApAQCAtMTI4LDEwICsx MjgsMTEgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1l IGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAgICAgICB8IG9uCiAg ZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlIHwgb2ZmCiAgZW5hYmxlX3BhcnRpdGlvbndp c2Vfam9pbiAgICAgIHwgb2ZmCisgZW5hYmxlX3ByZXNvcnRlZF9hZ2dyZWdhdGUgICAgIHwgb24K ICBlbmFibGVfc2Vxc2NhbiAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9zb3J0ICAgICAg ICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3RpZHNjYW4gICAgICAgICAgICAgICAgIHwgb24K LSgyMCByb3dzKQorKDIxIHJvd3MpCiAKIC0tIFRlc3QgdGhhdCB0aGUgcGdfdGltZXpvbmVfbmFt ZXMgYW5kIHBnX3RpbWV6b25lX2FiYnJldnMgdmlld3MgYXJlCiAtLSBtb3JlLW9yLWxlc3Mgd29y a2luZy4gIFdlIGNhbid0IHRlc3QgdGhlaXIgY29udGVudHMgaW4gYW55IGdyZWF0IGRldGFpbApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRlcy5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbAppbmRleCBhNGMwMGZmN2E5Li4xNWY2YmU4ZTE1 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbApAQCAtNTQ2LDYgKzU0NiwxMiBAQCBz ZWxlY3QKIGZyb20gdGVuazEKIGdyb3VwIGJ5IHRlbjsKIAorLS0gRW5zdXJlIG5vIG9yZGVyaW5n IGlzIHJlcXVlc3RlZCB3aGVuIGVuYWJsZV9wcmVzb3J0ZWRfYWdncmVnYXRlIGlzIG9mZgorc2V0 IGVuYWJsZV9wcmVzb3J0ZWRfYWdncmVnYXRlIHRvIG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikK K3NlbGVjdCBzdW0odHdvIG9yZGVyIGJ5IHR3bykgZnJvbSB0ZW5rMTsKK3Jlc2V0IGVuYWJsZV9w cmVzb3J0ZWRfYWdncmVnYXRlOworCiAtLQogLS0gVGVzdCBjb21iaW5hdGlvbnMgb2YgRElTVElO Q1QgYW5kL29yIE9SREVSIEJZCiAtLQotLSAKMi4zNS4xLndpbmRvd3MuMgoK --0000000000003c012d05efdbe98c--