From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7A5FFC369A2 for ; Tue, 8 Apr 2025 15:17:43 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2AhX-0001J3-6J; Tue, 08 Apr 2025 11:17:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u2AhT-0001I5-Up for grub-devel@gnu.org; Tue, 08 Apr 2025 11:17:19 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u2AhN-0008Dv-KR for grub-devel@gnu.org; Tue, 08 Apr 2025 11:17:19 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-43ce71582e9so40150885e9.1 for ; Tue, 08 Apr 2025 08:17:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744125431; x=1744730231; darn=gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wZOwZvfUAPG3AlwU2Pgc1J+H0knh4AVvo434pwd9A9c=; b=C8EB5W4Mrmk63XCWTdks29lKeD79OwZ2LihiJgK2CNg+UftqzxceduBGJoCf0Id4QH NtadgdTeQqEbdJH7RUHIZFQi5AW3ZmYtzdQVBdw/Ejj96v8qJv6Yo8e3QV+UjQ8VoDnr Pq0qoOTainNjCY5HgAX47Yo9qrvUCI5Q3vAcg+MpaENgLzeSlO0rA++SX0mwt13TB46l krbR/JJIoCvDzZ2b5D4IBMC1PoEXwqpa+yx3z8LccpfTeMSSiYdE68WL3ZLeBftXLVWd WPFACR9yGb7KLyE9g+Lh/ulDP1ClgSWd6U9WP73ANVWZg9HAEg94IL63ZhuIsewaKBGP TFwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744125431; x=1744730231; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wZOwZvfUAPG3AlwU2Pgc1J+H0knh4AVvo434pwd9A9c=; b=t6OE/XWrVlu2jgIkEwJRZXpYo+XOHP5ihMNfePSWipnKQ9jVucracg2GCI9O1MYrBf qrj4C0I2yru6tFSdYinZMnvtGo2Hdf50vkcLNU1pbTu4j/rviyPZrpe5B6Unqc0vj/Fk qC4KRCtqpmQJQRwwPGvC+1q5OKBdxkNXo6QdATTRpkeLirONRWwGRgGTEwlty5Llhwt+ Iqdt1Z3o/tQgroCf7SMxtXUAOG1iPeYlNK6hTiKGk7NeSJcYXD251Il6KbUOjtWi33vh 5UoJUeL5VPYFNDtF1CYZDkIBGA+Gl6Vfx45Y98sK2Bc/OeMa47g08nTtZOol+Xic4EFH HtsQ== X-Gm-Message-State: AOJu0YxCy8KHpxicv3xo+5WNkolDXbD7vQ9bJ8aEudH06jWOs/ZTnq2f sO3BMSFuGljkcffCkwn2cDV/VfVLPV1tQ0+teoa3HY7IV+kpMEt0CrfYKfs4 X-Gm-Gg: ASbGnctlWIsJKN6zssN+l2b0Fs91S+3VwvffdU2Unh+VOYfJHX9aMnBLJxS6rAUJjLA 4UKX8DU4if+Bnn0Gji00iLlA7NrktPV+b5470PL3+j2WRbun5sEahHutdbwRQrkHBW+W4XoTV4X jywHrYsG7X/7KE8tpVqFTZV+sH45SDvv+z5I+y13WqEbTfy1bSb+8FrXdk3DBBn1Drme998P3ez pK18T4vrE0gF4Gj49xTi8CCOPZpvnscCHXuXWQkbR2MV/rtSVYNYh/tgDm/dDpF6v4HeAseG+Ej 6Wi7C4+6zZd/QvwRGWlvGZ//QHbjWIIEbwb6lUq2d7QnTA== X-Google-Smtp-Source: AGHT+IHykGNChurXrafPD2FmJliLrgFftnVsSvAj5TDsjmVl5ldCMBBBANKMgpX9y1ql1v2GIVoTMg== X-Received: by 2002:a05:600c:5394:b0:43e:bdf7:7975 with SMTP id 5b1f17b1804b1-43ed0db4aa5mr123188075e9.32.1744125430180; Tue, 08 Apr 2025 08:17:10 -0700 (PDT) Received: from localhost ([5.166.19.28]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ec36691b3sm166816475e9.34.2025.04.08.08.17.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 08:17:09 -0700 (PDT) From: Vladimir Serbinenko To: grub-devel@gnu.org Cc: Vladimir Serbinenko Subject: [PATCH 1/3] Use ET_DYN instead of ET_REL modules Date: Tue, 8 Apr 2025 15:16:23 +0000 Message-ID: <20250408151657.3303174-2-phcoder@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250408151657.3303174-1-phcoder@gmail.com> References: <20250408151657.3303174-1-phcoder@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=phcoder@gmail.com; helo=mail-wm1-x331.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org RVRfRFlOIGFsc28ga25vd24gYXMgLnNvIGZpbGVzIGFyZSBhY3R1YWxseSBtZWFudCB0byBiZSBs b2FkZWQgZHluYW1pY2FsbHkuCk1vc3Qgb2YgdGhlIHdvcmsgb2YgbGlua2luZyBpcyBkb25lIGJ5 IG5vcm1hbCBsaW5rZXIgYW5kIHdlIG5lZWQgdG8gZG8Kb25seSBzaW1wbGUgcmVsb2NhdGlvbiBi eSBvZmZzZXQuIFRoaXMgc2lnbmlmaWNhbnRseSBzaW1wbGlmaWVzIG91cgpkeW5hbWljIGxvYWRp bmcuIE1vcmVvdmVyIHRoZSB0b29scyBhcmUgbWVhbnQgdG8gcHJvZHVjZSAuc28gZmlsZXMgYW5k IHNvCml0J3MgZWFzaWVyIHRvIGdldCB0aGVtIHRvIHByb2R1Y2UgY29ycmVjdCBvdXRwdXQuIEFs c28gaXQgcmVkdWNlIHRoZQpjb3JlIHNpemUgb24gaTM4Ni1wYyBieSA0NCBieXRlcyBvbiBjb25m aWcgYmlvc2Rpc2srcGFydF9tc2RvcytleHQyCgpUaGlzIHJlcXVpcmVkIHRvIHVzZSAtZlBJQyBv biBtaXBzIGFzIG90aGVyd2lzZSBsaW5rZXIgY2hva2VzIG9uIHJlbG9jYXRpb25zCmluY29tcGF0 aWJsZSB3aXRoIC1zaGFyZWQKClRoaXMgd2FzIG9yaWdpbmFsbHkgbWVhbnQgZm9yIFJ1c3QgYXMg cnVzdGMgcHJvZHVjZXMgLnNvIG91dHB1dAphcyBhIHBvc3NpYmlsaXR5IGJ1dCBpdCBzaW1wbGlm aWVzIHRoZSBjb2RlLCBzbyBpdCdzIHVzZWZ1bCBpbmRlcGVuZGVudGx5IG9mClJ1c3QKClNpZ25l ZC1vZmYtYnk6IFZsYWRpbWlyIFNlcmJpbmVua28gPHBoY29kZXJAZ21haWwuY29tPgotLS0KIGNv bmYvTWFrZWZpbGUuY29tbW9uICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArLQogY29u Zi9pMzg2LW1vZHVsZXMuc2MgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM1ICsrKwogY29u ZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM5ICstLQogLi4u L2NvbW1hbmRzL3RwbTJfa2V5X3Byb3RlY3Rvci90cG0ya2V5LmMgICAgIHwgICA3ICsKIGdydWIt Y29yZS9nZW5tb2Quc2guaW4gICAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArLQogZ3J1Yi1j b3JlL2dlbm1vZGRlcC5hd2sgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBncnViLWNv cmUva2Vybi9hcm0vZGwuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMjAgKy0KIGdydWItY29y ZS9rZXJuL2FybTY0L2RsLmMgICAgICAgICAgICAgICAgICAgICB8ICAyMiArLQogZ3J1Yi1jb3Jl L2tlcm4vZGwuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjc0ICsrKysrKysrLS0tLS0t LS0tLQogZ3J1Yi1jb3JlL2tlcm4vZW11L2Z1bGwuYyAgICAgICAgICAgICAgICAgICAgIHwgICA0 ICstCiBncnViLWNvcmUva2Vybi9pMzg2L2RsLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMTkg Ky0KIGdydWItY29yZS9rZXJuL2lhNjQvZGwuYyAgICAgICAgICAgICAgICAgICAgICB8ICA0OSAr KystCiBncnViLWNvcmUva2Vybi9sb29uZ2FyY2g2NC9kbC5jICAgICAgICAgICAgICAgfCAgMjAg Ky0KIGdydWItY29yZS9rZXJuL21pcHMvZGwuYyAgICAgICAgICAgICAgICAgICAgICB8ICA3OCAr KysrLQogZ3J1Yi1jb3JlL2tlcm4vcG93ZXJwYy9kbC5jICAgICAgICAgICAgICAgICAgIHwgIDE1 ICstCiBncnViLWNvcmUva2Vybi9yaXNjdi9kbC5jICAgICAgICAgICAgICAgICAgICAgfCAgMjMg Ky0KIGdydWItY29yZS9rZXJuL3NwYXJjNjQvZGwuYyAgICAgICAgICAgICAgICAgICB8ICAxNSAr LQogZ3J1Yi1jb3JlL2tlcm4veDg2XzY0L2RsLmMgICAgICAgICAgICAgICAgICAgIHwgIDIxICst CiBncnViLWNvcmUvbGliL2JhY2t0cmFjZS5jICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0K IGluY2x1ZGUvZ3J1Yi9kbC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMyArKy0K IGluY2x1ZGUvZ3J1Yi9lbGYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiB1 dGlsL2dydWItbWtpbWFnZXh4LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogdXRp bC9ncnViLW1vZHVsZS12ZXJpZmllci5jICAgICAgICAgICAgICAgICAgIHwgIDMwICstCiB1dGls L2dydWItbW9kdWxlLXZlcmlmaWVyWFguYyAgICAgICAgICAgICAgICAgfCAgNTYgKysrLQogMjQg ZmlsZXMgY2hhbmdlZCwgNTE5IGluc2VydGlvbnMoKyksIDI4OCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBjb25mL2kzODYtbW9kdWxlcy5zYwoKZGlmZiAtLWdpdCBhL2NvbmYvTWFr ZWZpbGUuY29tbW9uIGIvY29uZi9NYWtlZmlsZS5jb21tb24KaW5kZXggYzYwZjU1Mzg2Li4zZTJk ZmYwOTAgMTAwNjQ0Ci0tLSBhL2NvbmYvTWFrZWZpbGUuY29tbW9uCisrKyBiL2NvbmYvTWFrZWZp bGUuY29tbW9uCkBAIC01MSw3ICs1MSwxNSBAQCBlbmRpZgogZW5kaWYKIAogQ0ZMQUdTX01PRFVM RSA9ICQoQ0ZMQUdTX1BMQVRGT1JNKSAtZmZyZWVzdGFuZGluZwotTERGTEFHU19NT0RVTEUgPSAk KExERkxBR1NfUExBVEZPUk0pIC1ub3N0ZGxpYiAkKFRBUkdFVF9MREZMQUdTX09MRE1BR0lDKSAt V2wsLXIKK2lmIENPTkRfZW11CitMREZMQUdTX01PRFVMRSA9ICQoTERGTEFHU19QTEFURk9STSkg LW5vc3RkbGliIC1XbCwtcgorZWxzZQoraWYgQ09ORF9taXBzCitMREZMQUdTX01PRFVMRSA9ICQo TERGTEFHU19QTEFURk9STSkgLW5vc3RkbGliICQoVEFSR0VUX0xERkxBR1NfT0xETUFHSUMpIC1z aGFyZWQKK2Vsc2UKK0xERkxBR1NfTU9EVUxFID0gJChMREZMQUdTX1BMQVRGT1JNKSAtbm9zdGRs aWIgJChUQVJHRVRfTERGTEFHU19PTERNQUdJQykgLXNoYXJlZCAtV2wsLVR0ZXh0LXNlZ21lbnQ9 MCAtV2wsLUJzdGF0aWMgLVdsLC1UJHtzcmNkaXJ9Ly4uL2NvbmYvbW9kdWxlcy5zYworZW5kaWYK K2VuZGlmCiBDUFBGTEFHU19NT0RVTEUgPSAkKENQUEZMQUdTX0NQVSkgJChDUFBGTEFHU19QTEFU Rk9STSkKIENDQVNGTEFHU19NT0RVTEUgPSAkKENDQVNGTEFHU19DUFUpICQoQ0NBU0ZMQUdTX1BM QVRGT1JNKQogCmRpZmYgLS1naXQgYS9jb25mL2kzODYtbW9kdWxlcy5zYyBiL2NvbmYvaTM4Ni1t b2R1bGVzLnNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uYWFiMjZlNGEx Ci0tLSAvZGV2L251bGwKKysrIGIvY29uZi9pMzg2LW1vZHVsZXMuc2MKQEAgLTAsMCArMSwzNSBA QAorU0VDVElPTlMKK3sKKyAgLnRleHQgOgorICB7CisgICAgKigudGV4dCkKKyAgfQorICAuZGF0 YSA6CisgIHsKKyAgICAqKC5kYXRhKQorICAgICooLnJkYXRhKQorICAgICooLnBkYXRhKQorICB9 CisgIC5ic3MgOgorICB7CisgICAgKiguYnNzKQorICAgICooQ09NTU9OKQorICB9CisgIC5lZGF0 YSA6CisgIHsKKyAgICAqKC5lZGF0YSkKKyAgfQorICAuc3RhYiA6CisgIHsKKyAgICAqKC5zdGFi KQorICB9CisgIC5zdGFic3RyIDoKKyAgeworICAgICooLnN0YWJzdHIpCisgIH0KKworICAvRElT Q0FSRC8gOgorICB7CisgICAgICooLmR5bmFtaWMpCisgIH0KK30KZGlmZiAtLWdpdCBhL2NvbmZp Z3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBhZDFlN2JlYTUuLmNkYjZhNWM0MSAxMDA2NDQK LS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtODc2LDE2ICs4NzYsOCBA QCBpZiAoIHRlc3QgIngkdGFyZ2V0X2NwdSIgPSB4aTM4NiB8fCB0ZXN0ICJ4JHRhcmdldF9jcHUi ID0geHg4Nl82NCApOyB0aGVuCiBmaQogCiBpZiB0ZXN0ICJ4JHRhcmdldF9jcHUiID0geGxvb25n YXJjaDY0OyB0aGVuCi0gIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIF9tbm9fZXhwbGljaXRfcmVs b2NzIHdvcmtzXSwgW2dydWJfY3ZfY2NfbW5vX2V4cGxpY2l0X3JlbG9jc10sIFsKLSAgICBDRkxB R1M9IiRUQVJHRVRfQ0ZMQUdTIC1tbm8tZXhwbGljaXQtcmVsb2NzIC1XZXJyb3IiCi0gICAgQUNf Q09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKV0sCi0JW2dydWJfY3Zf Y2NfbW5vX2V4cGxpY2l0X3JlbG9jcz15ZXNdLAotCVtncnViX2N2X2NjX21ub19leHBsaWNpdF9y ZWxvY3M9bm9dKQotICBdKQotICBpZiB0ZXN0ICJ4JGdydWJfY3ZfY2NfbW5vX2V4cGxpY2l0X3Jl bG9jcyIgPSB4eWVzOyB0aGVuCi0gICAgVEFSR0VUX0NGTEFHUz0iJFRBUkdFVF9DRkxBR1MgLW1u by1leHBsaWNpdC1yZWxvY3MgLWZuby1wbHQiCi0gICAgVEFSR0VUX0NDQVNGTEFHUz0iJFRBUkdF VF9DQ0FTRkxBR1MgLW1uby1leHBsaWNpdC1yZWxvY3MgLWZuby1wbHQiCi0gIGZpCisgIFRBUkdF VF9DRkxBR1M9IiRUQVJHRVRfQ0ZMQUdTIC1mbm8tcGx0IgorICBUQVJHRVRfQ0NBU0ZMQUdTPSIk VEFSR0VUX0NDQVNGTEFHUyAtZm5vLXBsdCIKIAogICBBQ19DQUNIRV9DSEVDSyhbZm9yIG5vLXJl bGF4IG9wdGlvbnNdLCBncnViX2N2X3RhcmdldF9jY19tbm9fcmVsYXgsIFsKICAgICBncnViX2N2 X3RhcmdldF9jY19tbm9fcmVsYXg9bm8KQEAgLTEyMTUsNiArMTIwNywxMCBAQCBlbHNlCiAgIFRB UkdFVF9JTUdfQ0ZMQUdTPQogZmkKIAoraWYgdGVzdCB4JHtwbGF0Zm9ybX0gPSB4ZWZpIHx8IHRl c3QgeCR7cGxhdGZvcm19ID0geGVtdTsgdGhlbgorICBUQVJHRVRfTERGTEFHU19PTERNQUdJQz0K K2ZpCisKIENGTEFHUz0iJFRBUkdFVF9DRkxBR1MiCiAKIEFDX0FSR19FTkFCTEUoW2VmaWVtdV0s CkBAIC0xMzk1LDE4ICsxMzkxLDI3IEBAIGdydWJfQ0hFQ0tfUElDCiBbIyBPbiBtb3N0IHBsYXRm b3JtcyB3ZSBkb24ndCB3YW50IFBJQyBhcyBpdCBvbmx5IG1ha2VzIHJlbG9jYXRpb25zIGhhcmRl cgogIyBhbmQgY29kZSBsZXNzIGVmZmljaWVudC4gT24gbWlwcyB3ZSB3YW50IHRvIGhhdmUgb25l IGdvdCB0YWJsZSBwZXIgbW9kdWxlCiAjIGFuZCByZWxvYWQgJGdwIGluIGV2ZXJ5IGZ1bmN0aW9u LgotIyBHQ0MgaW1wbGVtZW50cyBpdCB1c2luZyBzeW1ib2wgX19nbnVfbG9jYWxfZ3AgaW4gbm9u LVBJQyBhcyB3ZWxsLgotIyBIb3dldmVyIHdpdGggY2xhbmcgd2UgbmVlZCBQSUMgZm9yIHRoaXMg cmVsb2FkaW5nIHRvIGhhcHBlbi4KICMgV2l0aCBhcm02NCB3ZSBuZWVkIHJlbG9jYXRpb25zIHRo YXQgYXJlIGluIHNvbWUgd2F5IHJlcHJlc2VudGFibGUgaW4KICMgUEUgYXMgd2UgbmVlZCB0byBz dXBwb3J0IGFybTY0LWVmaS4gV2l0aG91dCAtZlBJQyBjbGFuZyBnZW5lcmF0ZXMKICMgbW92aydz IHdoaWNoIGFyZW4ndCByZXByZXNlbnRhYmxlLgogIyBTaW5jZSBkZWZhdWx0IHZhcmllcyBhY3Jv c3MgZGljdHJpYnV0aW9ucyB1c2UgZWl0aGVyIC1mUElDIG9yIC1mbm8tUElDCiAjIGV4cGxpY2l0 bHkuCi1pZiAoIHRlc3QgeCR0YXJnZXRfY3B1ID0geG1pcHMgfHwgdGVzdCB4JHRhcmdldF9jcHUg PSB4bWlwc2VsIHx8IHRlc3QgeCR0YXJnZXRfY3B1ID0geGFybTY0ICkgJiYgdGVzdCAieCRncnVi X2N2X2NjX3RhcmdldF9jbGFuZyIgPSB4eWVzIDsgdGhlbgotICAgVEFSR0VUX0NGTEFHUz0iJFRB UkdFVF9DRkxBR1MgLWZQSUMiCi1lbGlmIFsgeCIkcGljX3Bvc3NpYmxlIiA9IHh5ZXMgXTsgdGhl bgotICAgVEFSR0VUX0NGTEFHUz0iJFRBUkdFVF9DRkxBR1MgLWZuby1QSUMiCi1maV0KK2Nhc2Ug JHRhcmdldF9jcHUtJHBsYXRmb3JtIGluCisgICAgIG1pcHMtKiB8IG1pcHNlbC0qKQorICAgICAg ICBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VUX0NGTEFHUyAtZlBJQyAtbWFiaWNhbGxzIgorCTs7Cisg ICAgIGFybTY0LSopCisJaWYgdGVzdCAieCRncnViX2N2X2NjX3RhcmdldF9jbGFuZyIgPSB4eWVz IDsgdGhlbgorCSAgIFRBUkdFVF9DRkxBR1M9IiRUQVJHRVRfQ0ZMQUdTIC1mUElDIgorCWZpCisJ OzsKKyAgICAgcmlzY3YzMi0qIHwgaWE2NC0qKQorICAgICAgICBUQVJHRVRfQ0ZMQUdTPSIkVEFS R0VUX0NGTEFHUyAtZlBJQyIKKwk7OworICAgICAqKQorICAgICAgICBUQVJHRVRfQ0ZMQUdTPSIk VEFSR0VUX0NGTEFHUyAtZm5vLVBJQyIKKwk7OworZXNhY10KIAogQ0ZMQUdTPSIkVEFSR0VUX0NG TEFHUyIKIApkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL3RwbTJfa2V5X3Byb3RlY3Rv ci90cG0ya2V5LmMgYi9ncnViLWNvcmUvY29tbWFuZHMvdHBtMl9rZXlfcHJvdGVjdG9yL3RwbTJr ZXkuYwppbmRleCAzYjYwMDFkODQuLmI4ZDUyMjdkZCAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2Nv bW1hbmRzL3RwbTJfa2V5X3Byb3RlY3Rvci90cG0ya2V5LmMKKysrIGIvZ3J1Yi1jb3JlL2NvbW1h bmRzL3RwbTJfa2V5X3Byb3RlY3Rvci90cG0ya2V5LmMKQEAgLTM5LDYgKzM5LDEzIEBAIGFzbjFf YWxsb2NhdGVfYW5kX3JlYWQgKGFzbjFfbm9kZSBub2RlLCBjb25zdCBjaGFyICpuYW1lLCB2b2lk ICoqY29udGVudCwgZ3J1Yl9zCiAgICAgcmV0dXJuIEFTTjFfTUVNX0VSUk9SOwogCiAgIHJldCA9 IGFzbjFfcmVhZF92YWx1ZSAobm9kZSwgbmFtZSwgTlVMTCwgJnRtcHN0cl9zaXplKTsKKyAgaWYg KHJldCA9PSBBU04xX1NVQ0NFU1MpCisgICAgeworICAgICAgKmNvbnRlbnQgPSBOVUxMOworICAg ICAgKmNvbnRlbnRfc2l6ZSA9IDA7CisKKyAgICAgIHJldHVybiBBU04xX1NVQ0NFU1M7CisgICAg fQogICBpZiAocmV0ICE9IEFTTjFfTUVNX0VSUk9SKQogICAgIHJldHVybiByZXQ7CiAKZGlmZiAt LWdpdCBhL2dydWItY29yZS9nZW5tb2Quc2guaW4gYi9ncnViLWNvcmUvZ2VubW9kLnNoLmluCmlu ZGV4IDMzNzc1M2M1Ny4uZmIxNWI2NjA4IDEwMDY0NAotLS0gYS9ncnViLWNvcmUvZ2VubW9kLnNo LmluCisrKyBiL2dydWItY29yZS9nZW5tb2Quc2guaW4KQEAgLTIzLDYgKzIzLDcgQEAgaW5maWxl PSQyCiBvdXRmaWxlPSQ0CiAKIHRtcGZpbGU9JHtvdXRmaWxlfS50bXAKK3RtcGZpbGUyPSR7b3V0 ZmlsZX0udG1wMgogbW9kbmFtZT1gZWNobyAkaW5maWxlIHwgc2VkIC1lICdzQFwubW9kdWxlLiok QEAnYAogCiBpZiAhIGdyZXAgXiRtb2RuYW1lOiAkbW9kZGVwID4vZGV2L251bGw7IHRoZW4KQEAg LTMzLDcgKzM0LDcgQEAgZmkKIGRlcHM9YGdyZXAgXiRtb2RuYW1lOiAkbW9kZGVwIHwgc2VkIHNA Xi4qOkBAYAogCiAjIHJlbW92ZSBvbGQgZmlsZXMgaWYgYW55Ci1ybSAtZiAkdG1wZmlsZSAkb3V0 ZmlsZQorcm0gLWYgJHRtcGZpbGUgJHRtcGZpbGUyICRvdXRmaWxlCiAKIGlmIHRlc3QgeEBUQVJH RVRfQVBQTEVfTElOS0VSQCAhPSB4MTsgdGhlbgogICAgICMgc3RyaXBvdXQgLm1vZG5hbWUgYW5k IC5tb2RkZXBzIHNlY3Rpb25zIGZyb20gaW5wdXQgbW9kdWxlCkBAIC01MywxMCArNTQsOCBAQCBp ZiB0ZXN0IHhAVEFSR0VUX0FQUExFX0xJTktFUkAgIT0geDE7IHRoZW4KICAgICBmaQogICAgIHJt IC1mICR0MSAkdDIKIAotCWlmIHRlc3QgeEBwbGF0Zm9ybUAgIT0geGVtdTsgdGhlbgotCSAgICBA VEFSR0VUX1NUUklQQCAtLXN0cmlwLXVubmVlZGVkIFwKLQkJLUsgZ3J1Yl9tb2RfaW5pdCAtSyBn cnViX21vZF9maW5pIFwKLQkJLUsgX2dydWJfbW9kX2luaXQgLUsgX2dydWJfbW9kX2ZpbmkgXAor ICAgIGlmIHRlc3QgeEBwbGF0Zm9ybUAgIT0geGVtdTsgdGhlbgorCVNUUklQX0ZMQUdTPSItLXN0 cmlwLXVubmVlZGVkIFwKIAkJLVIgLm5vdGUuR05VLXN0YWNrIFwKIAkJLVIgLm5vdGUuZ251Lmdv bGQtdmVyc2lvbiBcCiAJCS1SIC5ub3RlLmdudS5wcm9wZXJ0eSBcCkBAIC02NSwxMyArNjQsMjAg QEAgaWYgdGVzdCB4QFRBUkdFVF9BUFBMRV9MSU5LRVJAICE9IHgxOyB0aGVuCiAJCS1SIC5yZWwu Z251LmJ1aWxkLmF0dHJpYnV0ZXMgXAogCQktUiAucmVsYS5nbnUuYnVpbGQuYXR0cmlidXRlcyBc CiAJCS1SIC5laF9mcmFtZSAtUiAucmVsYS5laF9mcmFtZSAtUiAucmVsLmVoX2ZyYW1lIFwKLQkJ LVIgLm5vdGUgLVIgLmNvbW1lbnQgLVIgLkFSTS5leGlkeCAkdG1wZmlsZSB8fCBleGl0IDEKKwkJ LVIgLm5vdGUgLVIgLmNvbW1lbnQgLVIgLmdudS5oYXNoIC1SIC5BUk0uZXhpZHggXAorCQktUiAu c3ltdGFiIC1SIC5zdHJ0YWIgLVIgLnNoc3RydGFiIgorCWlmIHRlc3QgeEB0YXJnZXRfY3B1QCAh PSB4bWlwcyAmJiB0ZXN0IHhAdGFyZ2V0X2NwdUAgIT0geG1pcHNlbCAmJiB0ZXN0IHhAdGFyZ2V0 X2NwdUAgIT0geGlhNjQ7IHRoZW4KKwkgICAgU1RSSVBfRkxBR1M9IiRTVFJJUF9GTEFHUyAtUiAu ZHluYW1pYyIKIAlmaQorCUBUQVJHRVRfU1RSSVBAICRTVFJJUF9GTEFHUyAtcyAkdG1wZmlsZSB8 fCBleGl0IDEKKyAgICBlbHNlCisJQFRBUkdFVF9DQ0AgLVdsLC0tZXhwb3J0LWR5bmFtaWMgLW8g JHRtcGZpbGUyIC1zaGFyZWQgLW5vc3RkbGliICR0bXBmaWxlCisJY3AgJHRtcGZpbGUyICR0bXBm aWxlCisgICAgZmkKIAlpZiAhIHRlc3QgLXogIiR7VEFSR0VUX09CSjJFTEZ9IjsgdGhlbgogCSAg ICAiJHtUQVJHRVRfT0JKMkVMRn0iICR0bXBmaWxlIHx8IGV4aXQgMQogCWZpCiBlbHNlCi0gICAg dG1wZmlsZTI9JHtvdXRmaWxlfS50bXAyCiAgICAgdDE9JHtvdXRmaWxlfS50MS5jCiAgICAgdDI9 JHtvdXRmaWxlfS50Mi5jCiAKZGlmZiAtLWdpdCBhL2dydWItY29yZS9nZW5tb2RkZXAuYXdrIGIv Z3J1Yi1jb3JlL2dlbm1vZGRlcC5hd2sKaW5kZXggYWI0NTdjYjJiLi4wOTgzMmFiOTEgMTAwNjQ0 Ci0tLSBhL2dydWItY29yZS9nZW5tb2RkZXAuYXdrCisrKyBiL2dydWItY29yZS9nZW5tb2RkZXAu YXdrCkBAIC0xOCw3ICsxOCw3IEBAIEJFR0lOIHsKIAogewogICBpZiAoJDEgPT0gImRlZmluZWQi KSB7Ci0gICAgaWYgKCQzICF+IC9eXC5yZWZwdHJcLi8gJiYgJDMgaW4gc3ltdGFiKSB7CisgICAg aWYgKCQzICF+IC9eXC5yZWZwdHJcLi8gJiYgJDMgIT0gImdydWJfbW9kX2luaXQiICYmICQzICE9 ICJncnViX21vZF9maW5pIiAmJiAkMyAhPSAiX19ic3Nfc3RhcnQiICYmICQzICE9ICJfZmRhdGEi ICYmICQzICE9ICJfZnRleHQiICYmICQzICE9ICJfZmJzcyIgJiYgJDMgIT0gIl9lZGF0YSIgJiYg JDMgIT0gIl9lbmQiICYmICQzICE9ICJfX2FlYWJpX3VpZGl2bW9kIiAmJiAkMyAhPSAiX19hZWFi aV9pZGl2bW9kIiAmJiAkMyBpbiBzeW10YWIpIHsKICAgICAgIHByaW50ZiAiJXMgaW4gJXMgaXMg ZHVwbGljYXRlZCBpbiAlc1xuIiwgJDMsICQyLCBzeW10YWJbJDNdID4iL2Rldi9zdGRlcnIiOwog ICAgICAgZXJyb3IrKzsKICAgICB9CmRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9hcm0vZGwu YyBiL2dydWItY29yZS9rZXJuL2FybS9kbC5jCmluZGV4IGVhYjlkMTdmZi4uM2Q4YmQ5ZjlhIDEw MDY0NAotLS0gYS9ncnViLWNvcmUva2Vybi9hcm0vZGwuYworKysgYi9ncnViLWNvcmUva2Vybi9h cm0vZGwuYwpAQCAtMTA4LDggKzEwOCw3IEBAIGdydWJfYXJjaF9kbF9nZXRfdHJhbXBfZ290X3Np emUgKGNvbnN0IHZvaWQgKmVoZHIsIGdydWJfc2l6ZV90ICp0cmFtcCwKICAqIFJ1bnRpbWUgZHlu YW1pYyBsaW5rZXIgd2l0aCBoZWxwZXIgZnVuY3Rpb25zLiAqCiAgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIGdydWJfZXJyX3QKLWdydWJfYXJjaF9k bF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAotCQkJICAgICAg IEVsZl9TaGRyICpzLCBncnViX2RsX3NlZ21lbnRfdCBzZWcpCitncnViX2FyY2hfZGxfcmVsb2Nh dGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwgRWxmX1NoZHIgKnMpCiB7CiAg IEVsZl9SZWwgKnJlbCwgKm1heDsKIApAQCAtMTIyLDEwICsxMjEsMTEgQEAgZ3J1Yl9hcmNoX2Rs X3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAgICAgICBncnVi X2Vycl90IHJldHZhbDsKICAgICAgIEVsZl9TeW0gKnN5bTsKIAotICAgICAgaWYgKHNlZy0+c2l6 ZSA8IHJlbC0+cl9vZmZzZXQpCisgICAgICBpZiAobW9kLT5taW5fYWRkciArIG1vZC0+c3ogPD0g cmVsLT5yX29mZnNldCB8fCBtb2QtPm1pbl9hZGRyID4gcmVsLT5yX29mZnNldCkKIAlyZXR1cm4g Z3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwKLQkJCSAgICJyZWxvYyBvZmZzZXQgaXMg b3V0IG9mIHRoZSBzZWdtZW50Iik7Ci0gICAgICB0YXJnZXQgPSAodm9pZCAqKSAoKGNoYXIgKikg c2VnLT5hZGRyICsgcmVsLT5yX29mZnNldCk7CisJCQkgICAicmVsb2Mgb2Zmc2V0IGlzIG91dCBv ZiB0aGUgc2VnbWVudDogJXggbm90IGluIFsleC4uJXhdIiwKKwkJCSAgIHJlbC0+cl9vZmZzZXQs IG1vZC0+bWluX2FkZHIsIG1vZC0+bWluX2FkZHIgKyBtb2QtPnN6KTsKKyAgICAgIHRhcmdldCA9 ICh2b2lkICopICgoY2hhciAqKSBtb2QtPmJhc2UgKyByZWwtPnJfb2Zmc2V0IC0gbW9kLT5taW5f YWRkcik7CiAgICAgICBzeW0gPSAoRWxmX1N5bSAqKSAoKGNoYXIgKikgbW9kLT5zeW10YWIKIAkJ CSArIG1vZC0+c3ltc2l6ZSAqIEVMRl9SX1NZTSAocmVsLT5yX2luZm8pKTsKIApAQCAtMTM0LDYg KzEzNCw3IEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2 b2lkICplaGRyLAogICAgICAgc3dpdGNoIChFTEZfUl9UWVBFIChyZWwtPnJfaW5mbykpCiAJewog CWNhc2UgUl9BUk1fQUJTMzI6CisJY2FzZSBSX0FSTV9HTE9CX0RBVDoKIAkgIHsKIAkgICAgLyog RGF0YSB3aWxsIGJlIG5hdHVyYWxseSBhbGlnbmVkICovCiAJICAgIHJldHZhbCA9IGdydWJfYXJt X3JlbG9jX2FiczMyICh0YXJnZXQsIHN5bV9hZGRyKTsKQEAgLTE0MSw2ICsxNDIsMTUgQEAgZ3J1 Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAJ ICAgICAgcmV0dXJuIHJldHZhbDsKIAkgIH0KIAkgIGJyZWFrOworCisJY2FzZSBSX0FSTV9KVU1Q X1NMT1Q6CisJICAqdGFyZ2V0ID0gc3ltX2FkZHI7CisJICBicmVhazsKKworCWNhc2UgUl9BUk1f UkVMQVRJVkU6CisJICAqdGFyZ2V0ICs9IChncnViX2FkZHJfdCkgbW9kLT5iYXNlIC0gbW9kLT5t aW5fYWRkcjsKKwkgIGJyZWFrOworCiAJY2FzZSBSX0FSTV9DQUxMOgogCWNhc2UgUl9BUk1fSlVN UDI0OgogCSAgewpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4vYXJtNjQvZGwuYyBiL2dydWIt Y29yZS9rZXJuL2FybTY0L2RsLmMKaW5kZXggYTJiNTc4OWE5Li43YWNlZmYwNzcgMTAwNjQ0Ci0t LSBhL2dydWItY29yZS9rZXJuL2FybTY0L2RsLmMKKysrIGIvZ3J1Yi1jb3JlL2tlcm4vYXJtNjQv ZGwuYwpAQCAtNTIsOCArNTIsNyBAQCBncnViX2FyY2hfZGxfY2hlY2tfaGVhZGVyICh2b2lkICpl aGRyKQogICogVW5pZmllZCBmdW5jdGlvbiBmb3IgYm90aCBSRUwgYW5kIFJFTEEKICAqLwogZ3J1 Yl9lcnJfdAotZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZv aWQgKmVoZHIsCi0JCQkgICAgICAgRWxmX1NoZHIgKnMsIGdydWJfZGxfc2VnbWVudF90IHNlZykK K2dydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRy LCBFbGZfU2hkciAqcykKIHsKICAgRWxmX1JlbCAqcmVsLCAqbWF4OwogICB1bnNpZ25lZCB1bm1h dGNoZWRfYWRyX2dvdF9wYWdlID0gMDsKQEAgLTY3LDkgKzY2LDEwIEBAIGdydWJfYXJjaF9kbF9y ZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAogICAgICAgdm9pZCAq cGxhY2U7CiAgICAgICBncnViX3VpbnQ2NF90IHN5bV9hZGRyOwogCi0gICAgICBpZiAocmVsLT5y X29mZnNldCA+PSBzZWctPnNpemUpCisgICAgICBpZiAobW9kLT5taW5fYWRkciArIG1vZC0+c3og PD0gcmVsLT5yX29mZnNldCB8fCBtb2QtPm1pbl9hZGRyID4gcmVsLT5yX29mZnNldCkKIAlyZXR1 cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwKLQkJCSAgICJyZWxvYyBvZmZzZXQg aXMgb3V0IG9mIHRoZSBzZWdtZW50Iik7CisJCQkgICAicmVsb2Mgb2Zmc2V0IGlzIG91dCBvZiB0 aGUgc2VnbWVudDogJWx4IG5vdCBpbiBbJWx4Li4lbHhdIiwKKwkJCSAgIHJlbC0+cl9vZmZzZXQs IG1vZC0+bWluX2FkZHIsIG1vZC0+bWluX2FkZHIgKyBtb2QtPnN6KTsKIAogICAgICAgc3ltID0g KEVsZl9TeW0gKikgKChjaGFyICopIG1vZC0+c3ltdGFiCiAJCQkgKyBtb2QtPnN5bXNpemUgKiBF TEZfUl9TWU0gKHJlbC0+cl9pbmZvKSk7CkBAIC03OCwxMSArNzgsMTMgQEAgZ3J1Yl9hcmNoX2Rs X3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAgICAgICBpZiAo cy0+c2hfdHlwZSA9PSBTSFRfUkVMQSkKIAlzeW1fYWRkciArPSAoKEVsZl9SZWxhICopIHJlbCkt PnJfYWRkZW5kOwogCi0gICAgICBwbGFjZSA9ICh2b2lkICopICgoZ3J1Yl9hZGRyX3QpIHNlZy0+ YWRkciArIHJlbC0+cl9vZmZzZXQpOworICAgICAgcGxhY2UgPSAodm9pZCAqKSAoKGNoYXIgKikg bW9kLT5iYXNlICsgcmVsLT5yX29mZnNldCAtIG1vZC0+bWluX2FkZHIpOwogCiAgICAgICBzd2l0 Y2ggKEVMRl9SX1RZUEUgKHJlbC0+cl9pbmZvKSkKIAl7CiAJY2FzZSBSX0FBUkNINjRfQUJTNjQ6 CisJY2FzZSBSX0FBUkNINjRfSlVNUF9TTE9UOgorCWNhc2UgUl9BQVJDSDY0X0dMT0JfREFUOgog CSAgewogCSAgICBncnViX3VpbnQ2NF90ICphYnNfcGxhY2UgPSBwbGFjZTsKIApAQCAtMTI1LDcg KzEyNyw3IEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2 b2lkICplaGRyLAogCSAgICBncnViX2ludDY0X3QgdmFsdWU7CiAJICAgIEVsZjY0X1dvcmQgKmFk ZHIzMiA9IHBsYWNlOwogCSAgICB2YWx1ZSA9ICgoZ3J1Yl9pbnQzMl90KSAqYWRkcjMyKSArIHN5 bV9hZGRyIC0KLQkgICAgICAoRWxmNjRfWHdvcmQpIChncnViX2FkZHJfdCkgc2VnLT5hZGRyIC0g cmVsLT5yX29mZnNldDsKKwkgICAgICAoRWxmNjRfWHdvcmQpIChncnViX2FkZHJfdCkgcGxhY2U7 CiAJICAgIGlmICh2YWx1ZSAhPSAoZ3J1Yl9pbnQzMl90KSB2YWx1ZSkKIAkgICAgICByZXR1cm4g Z3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwgInJlbG9jYXRpb24gb3V0IG9mIHJhbmdl Iik7CiAJICAgIGdydWJfZHByaW50ZigiZGwiLCAiICByZWxvY19wcmVsMzIgJXAgPT4gMHglMDE2 bGx4XG4iLApAQCAtMTU1LDcgKzE1Nyw3IEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xz IChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAogCQkgICYmICgoRWxmX1JlbGEgKikgcmVsKS0+ cl9hZGRlbmQgPT0gcmVsMi0+cl9hZGRlbmQKIAkJICAmJiBFTEZfUl9UWVBFIChyZWwyLT5yX2lu Zm8pID09IFJfQUFSQ0g2NF9MRDY0X0dPVF9MTzEyX05DKQogCQl7Ci0JCSAgZ3J1Yl9hcm02NF9z ZXRfYWJzX2xvMTJfbGRzdDY0ICgodm9pZCAqKSAoKGdydWJfYWRkcl90KSBzZWctPmFkZHIgKyBy ZWwyLT5yX29mZnNldCksCisJCSAgZ3J1Yl9hcm02NF9zZXRfYWJzX2xvMTJfbGRzdDY0ICgodm9p ZCAqKSAoKGNoYXIgKikgbW9kLT5iYXNlICsgcmVsMi0+cl9vZmZzZXQgLSBtb2QtPm1pbl9hZGRy KSwKIAkJCQkJCSAgKGdydWJfdWludDY0X3QpZ3ApOwogCQkgIGJyZWFrOwogCQl9CkBAIC0xODIs NiArMTg0LDEyIEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9k LCB2b2lkICplaGRyLAogCSAgfQogCSAgYnJlYWs7CiAKKwljYXNlIFJfQUFSQ0g2NF9SRUxBVElW RToKKwkgICooZ3J1Yl91aW50NjRfdCAqKXBsYWNlID0gKGdydWJfYWRkcl90KSBtb2QtPmJhc2Ug LSBtb2QtPm1pbl9hZGRyOworCSAgaWYgKHMtPnNoX3R5cGUgPT0gU0hUX1JFTEEpCisJICAgICoo Z3J1Yl91aW50NjRfdCAqKXBsYWNlICs9ICgoRWxmX1JlbGEgKikgcmVsKS0+cl9hZGRlbmQ7CisJ ICBicmVhazsKKwogCWRlZmF1bHQ6CiAJICB7CiAJICAgIGNoYXIgcmVsX2luZm9bMTddOyAvKiBs b2cxNigyXjY0KSA9IDE2LCBwbHVzIE5VTC4gKi8KZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJu L2RsLmMgYi9ncnViLWNvcmUva2Vybi9kbC5jCmluZGV4IGRlOGMzYWE4ZC4uZTVmZDE2YmQ1IDEw MDY0NAotLS0gYS9ncnViLWNvcmUva2Vybi9kbC5jCisrKyBiL2dydWItY29yZS9rZXJuL2RsLmMK QEAgLTE4NywxOSArMTg3LDYgQEAgZ3J1Yl9kbF91bnJlZ2lzdGVyX3N5bWJvbHMgKGdydWJfZGxf dCBtb2QpCiAgICAgfQogfQogCi0vKiBSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgYSBzZWN0aW9uIHdo b3NlIGluZGV4IGlzIE4uICAqLwotc3RhdGljIHZvaWQgKgotZ3J1Yl9kbF9nZXRfc2VjdGlvbl9h ZGRyIChncnViX2RsX3QgbW9kLCB1bnNpZ25lZCBuKQotewotICBncnViX2RsX3NlZ21lbnRfdCBz ZWc7Ci0KLSAgZm9yIChzZWcgPSBtb2QtPnNlZ21lbnQ7IHNlZzsgc2VnID0gc2VnLT5uZXh0KQot ICAgIGlmIChzZWctPnNlY3Rpb24gPT0gbikKLSAgICAgIHJldHVybiBzZWctPmFkZHI7Ci0KLSAg cmV0dXJuIDA7Ci19Ci0KIC8qIENoZWNrIGlmIEVIRFIgaXMgYSB2YWxpZCBFTEYgaGVhZGVyLiAg Ki8KIHN0YXRpYyBncnViX2Vycl90CiBncnViX2RsX2NoZWNrX2hlYWRlciAodm9pZCAqZWhkciwg Z3J1Yl9zaXplX3Qgc2l6ZSkKQEAgLTIzMiwzNSArMjE5LDMxIEBAIHN0YXRpYyBncnViX2Vycl90 CiBncnViX2RsX2xvYWRfc2VnbWVudHMgKGdydWJfZGxfdCBtb2QsIGNvbnN0IEVsZl9FaGRyICpl KQogewogICB1bnNpZ25lZCBpOwotICBjb25zdCBFbGZfU2hkciAqczsKLSAgZ3J1Yl9zaXplX3Qg dHNpemUgPSAwLCB0YWxpZ24gPSAxLCBhcmNoX2FkZHJhbGlnbiA9IDE7CisgIGNvbnN0IEVsZl9Q aGRyICpwOworICBncnViX3NpemVfdCB0YWxpZ24gPSBETF9BTElHTjsKICNpZiAhZGVmaW5lZCAo X19pMzg2X18pICYmICFkZWZpbmVkIChfX3g4Nl82NF9fKSAmJiAhZGVmaW5lZChfX3Jpc2N2KSAm JiBcCiAgICFkZWZpbmVkIChfX2xvb25nYXJjaF9fKQogICBncnViX3NpemVfdCB0cmFtcDsKICAg Z3J1Yl9zaXplX3QgdHJhbXBfYWxpZ247CiAgIGdydWJfc2l6ZV90IGdvdDsKICAgZ3J1Yl9zaXpl X3QgZ290X2FsaWduOworICBncnViX2FkZHJfdCB0cmFtcF9hZGRyID0gMDsKKyAgZ3J1Yl9hZGRy X3QgZ290X2FkZHIgPSAwOwogICBncnViX2Vycl90IGVycjsKICNlbmRpZgotICBjaGFyICpwdHI7 CisgIGdydWJfYWRkcl90IG1pbl9hZGRyID0gfihncnViX2FkZHJfdCkwOworICBncnViX2FkZHJf dCBtYXhfYWRkciA9IDA7CiAKLSAgYXJjaF9hZGRyYWxpZ24gPSBETF9BTElHTjsKLQotICBmb3Ig KGkgPSAwLCBzID0gKGNvbnN0IEVsZl9TaGRyICopKChjb25zdCBjaGFyICopIGUgKyBlLT5lX3No b2ZmKTsKLSAgICAgICBpIDwgZS0+ZV9zaG51bTsKLSAgICAgICBpKyssIHMgPSAoY29uc3QgRWxm X1NoZHIgKikoKGNvbnN0IGNoYXIgKikgcyArIGUtPmVfc2hlbnRzaXplKSkKKyAgZm9yIChpID0g MCwgcCA9IChjb25zdCBFbGZfUGhkciAqKSgoY29uc3QgY2hhciAqKSBlICsgZS0+ZV9waG9mZik7 CisgICAgICAgaSA8IGUtPmVfcGhudW07CisgICAgICAgaSsrLCBwID0gKGNvbnN0IEVsZl9QaGRy ICopKChjb25zdCBjaGFyICopIHAgKyBlLT5lX3BoZW50c2l6ZSkpCiAgICAgewotICAgICAgZ3J1 Yl9zaXplX3Qgc2hfYWRkcmFsaWduOwotICAgICAgZ3J1Yl9zaXplX3Qgc2hfc2l6ZTsKLQotICAg ICAgaWYgKHMtPnNoX3NpemUgPT0gMCB8fCAhKHMtPnNoX2ZsYWdzICYgU0hGX0FMTE9DKSkKKyAg ICAgIGlmIChwLT5wX3R5cGUgIT0gUFRfTE9BRCkKIAljb250aW51ZTsKIAotICAgICAgc2hfYWRk cmFsaWduID0gQUxJR05fVVAgKHMtPnNoX2FkZHJhbGlnbiwgYXJjaF9hZGRyYWxpZ24pOwotICAg ICAgc2hfc2l6ZSA9IEFMSUdOX1VQIChzLT5zaF9zaXplLCBzaF9hZGRyYWxpZ24pOwotCi0gICAg ICB0c2l6ZSA9IEFMSUdOX1VQICh0c2l6ZSwgc2hfYWRkcmFsaWduKSArIHNoX3NpemU7Ci0gICAg ICB0YWxpZ24gPSBncnViX21heCAodGFsaWduLCBzaF9hZGRyYWxpZ24pOworICAgICAgbWluX2Fk ZHIgPSBncnViX21pbihtaW5fYWRkciwgcC0+cF92YWRkcik7CisgICAgICBtYXhfYWRkciA9IGdy dWJfbWF4KG1heF9hZGRyLCBwLT5wX3ZhZGRyICsgcC0+cF9tZW1zeik7CisgICAgICB0YWxpZ24g PSBncnViX21heCAodGFsaWduLCBwLT5wX2FsaWduKTsKICAgICB9CiAKICNpZiAhZGVmaW5lZCAo X19pMzg2X18pICYmICFkZWZpbmVkIChfX3g4Nl82NF9fKSAmJiAhZGVmaW5lZChfX3Jpc2N2KSAm JiBcCkBAIC0yNjgsNzkgKzI1MSw0OCBAQCBncnViX2RsX2xvYWRfc2VnbWVudHMgKGdydWJfZGxf dCBtb2QsIGNvbnN0IEVsZl9FaGRyICplKQogICBlcnIgPSBncnViX2FyY2hfZGxfZ2V0X3RyYW1w X2dvdF9zaXplIChlLCAmdHJhbXAsICZnb3QpOwogICBpZiAoZXJyKQogICAgIHJldHVybiBlcnI7 Ci0gIHRyYW1wX2FsaWduID0gZ3J1Yl9tYXggKEdSVUJfQVJDSF9ETF9UUkFNUF9BTElHTiwgYXJj aF9hZGRyYWxpZ24pOwotICB0c2l6ZSArPSBBTElHTl9VUCAodHJhbXAsIHRyYW1wX2FsaWduKTsK KyAgdHJhbXBfYWxpZ24gPSBncnViX21heCAoR1JVQl9BUkNIX0RMX1RSQU1QX0FMSUdOLCBETF9B TElHTik7CisgIHRyYW1wX2FkZHIgPSBBTElHTl9VUCAobWF4X2FkZHIsIHRyYW1wX2FsaWduKTsK KyAgbWF4X2FkZHIgPSBBTElHTl9VUCAodHJhbXBfYWRkcit0cmFtcCwgdHJhbXBfYWxpZ24pOwog ICB0YWxpZ24gPSBncnViX21heCAodGFsaWduLCB0cmFtcF9hbGlnbik7Ci0gIGdvdF9hbGlnbiA9 IGdydWJfbWF4IChHUlVCX0FSQ0hfRExfR09UX0FMSUdOLCBhcmNoX2FkZHJhbGlnbik7Ci0gIHRz aXplICs9IEFMSUdOX1VQIChnb3QsIGdvdF9hbGlnbik7CisgIGdvdF9hbGlnbiA9IGdydWJfbWF4 IChHUlVCX0FSQ0hfRExfR09UX0FMSUdOLCBETF9BTElHTik7CisgIGdvdF9hZGRyID0gQUxJR05f VVAobWF4X2FkZHIsIGdvdF9hbGlnbik7CisgIG1heF9hZGRyID0gQUxJR05fVVAoZ290X2FkZHIg KyBnb3QsIGdvdF9hbGlnbik7CiAgIHRhbGlnbiA9IGdydWJfbWF4ICh0YWxpZ24sIGdvdF9hbGln bik7CiAjZW5kaWYKIAorICBtaW5fYWRkciA9IEFMSUdOX0RPV04obWluX2FkZHIsIHRhbGlnbik7 CisKICNpZmRlZiBHUlVCX01BQ0hJTkVfRU1VCi0gIG1vZC0+YmFzZSA9IGdydWJfb3NkZXBfZGxf bWVtYWxpZ24gKHRhbGlnbiwgdHNpemUpOworICBtb2QtPmJhc2UgPSBncnViX29zZGVwX2RsX21l bWFsaWduICh0YWxpZ24sIG1heF9hZGRyIC0gbWluX2FkZHIpOwogI2Vsc2UKLSAgbW9kLT5iYXNl ID0gZ3J1Yl9tZW1hbGlnbiAodGFsaWduLCB0c2l6ZSk7CisgIG1vZC0+YmFzZSA9IGdydWJfbWVt YWxpZ24gKHRhbGlnbiwgbWF4X2FkZHIgLSBtaW5fYWRkcik7CiAjZW5kaWYKICAgaWYgKCFtb2Qt PmJhc2UpCiAgICAgcmV0dXJuIGdydWJfZXJybm87Ci0gIG1vZC0+c3ogPSB0c2l6ZTsKLSAgcHRy ID0gbW9kLT5iYXNlOworICBtb2QtPnN6ID0gbWF4X2FkZHIgLSBtaW5fYWRkcjsKKyAgbW9kLT5t aW5fYWRkciA9IG1pbl9hZGRyOwogCi0gIGZvciAoaSA9IDAsIHMgPSAoRWxmX1NoZHIgKikoKGNo YXIgKikgZSArIGUtPmVfc2hvZmYpOwotICAgICAgIGkgPCBlLT5lX3NobnVtOwotICAgICAgIGkr KywgcyA9IChFbGZfU2hkciAqKSgoY2hhciAqKSBzICsgZS0+ZV9zaGVudHNpemUpKQorICBmb3Ig KGkgPSAwLCBwID0gKGNvbnN0IEVsZl9QaGRyICopKChjb25zdCBjaGFyICopIGUgKyBlLT5lX3Bo b2ZmKTsKKyAgICAgICBpIDwgZS0+ZV9waG51bTsKKyAgICAgICBpKyssIHAgPSAoY29uc3QgRWxm X1BoZHIgKikoKGNvbnN0IGNoYXIgKikgcCArIGUtPmVfcGhlbnRzaXplKSkKICAgICB7Ci0gICAg ICBncnViX3NpemVfdCBzaF9hZGRyYWxpZ24gPSBBTElHTl9VUCAocy0+c2hfYWRkcmFsaWduLCBh cmNoX2FkZHJhbGlnbik7Ci0gICAgICBncnViX3NpemVfdCBzaF9zaXplID0gQUxJR05fVVAgKHMt PnNoX3NpemUsIHNoX2FkZHJhbGlnbik7Ci0KLSAgICAgIGlmIChzLT5zaF9mbGFncyAmIFNIRl9B TExPQykKLQl7Ci0JICBncnViX2RsX3NlZ21lbnRfdCBzZWc7Ci0KLQkgIHNlZyA9IChncnViX2Rs X3NlZ21lbnRfdCkgZ3J1Yl9tYWxsb2MgKHNpemVvZiAoKnNlZykpOwotCSAgaWYgKCEgc2VnKQot CSAgICByZXR1cm4gZ3J1Yl9lcnJubzsKLQotCSAgaWYgKHMtPnNoX3NpemUpCi0JICAgIHsKLQkg ICAgICB2b2lkICphZGRyOwotCi0JICAgICAgcHRyID0gKGNoYXIgKikgQUxJR05fVVAgKChncnVi X2FkZHJfdCkgcHRyLCBzaF9hZGRyYWxpZ24pOwotCSAgICAgIGFkZHIgPSBwdHI7Ci0JICAgICAg cHRyICs9IHNoX3NpemU7Ci0KLQkgICAgICBzd2l0Y2ggKHMtPnNoX3R5cGUpCi0JCXsKLQkJY2Fz ZSBTSFRfUFJPR0JJVFM6Ci0JCSAgZ3J1Yl9tZW1jcHkgKGFkZHIsIChjaGFyICopIGUgKyBzLT5z aF9vZmZzZXQsIHMtPnNoX3NpemUpOwotCQkgIGdydWJfbWVtc2V0ICgoY2hhciAqKSBhZGRyICsg cy0+c2hfc2l6ZSwgMCwgc2hfc2l6ZSAtIHMtPnNoX3NpemUpOwotCQkgIGJyZWFrOwotCQljYXNl IFNIVF9OT0JJVFM6Ci0JCSAgZ3J1Yl9tZW1zZXQgKGFkZHIsIDAsIHNoX3NpemUpOwotCQkgIGJy ZWFrOwotCQl9CisjaWYgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX2lhNjRfXykKKyAg ICAgIGlmIChwLT5wX3R5cGUgPT0gUFRfRFlOQU1JQykKKwlncnViX2FyY2hfZGxfcGFyc2VfZHlu YW1pYyAobW9kLCAoRWxmX0R5biAqKSAoKGNoYXIgKikgZSArIHAtPnBfb2Zmc2V0KSwgcC0+cF9m aWxlc3opOworI2VuZGlmCiAKLQkgICAgICBzZWctPmFkZHIgPSBhZGRyOwotCSAgICB9Ci0JICBl bHNlCi0JICAgIHNlZy0+YWRkciA9IDA7CisgICAgICBpZiAocC0+cF90eXBlICE9IFBUX0xPQUQp CisJY29udGludWU7CiAKLQkgIHNlZy0+c2l6ZSA9IHNoX3NpemU7Ci0JICBzZWctPnNlY3Rpb24g PSBpOwotCSAgc2VnLT5uZXh0ID0gbW9kLT5zZWdtZW50OwotCSAgbW9kLT5zZWdtZW50ID0gc2Vn OwotCX0KKyAgICAgIHZvaWQgKmFkZHIgPSAoY2hhciAqKW1vZC0+YmFzZSArIChwLT5wX3ZhZGRy IC0gbW9kLT5taW5fYWRkcik7CisgICAgICBncnViX21lbWNweSAoYWRkciwgKGNoYXIgKikgZSAr IHAtPnBfb2Zmc2V0LCBwLT5wX2ZpbGVzeik7CisgICAgICBncnViX21lbXNldCAoKGNoYXIgKikg YWRkciArIHAtPnBfZmlsZXN6LCAwLCBwLT5wX21lbXN6IC0gcC0+cF9maWxlc3opOwogICAgIH0K ICNpZiAhZGVmaW5lZCAoX19pMzg2X18pICYmICFkZWZpbmVkIChfX3g4Nl82NF9fKSAmJiAhZGVm aW5lZChfX3Jpc2N2KSAmJiBcCiAgICFkZWZpbmVkIChfX2xvb25nYXJjaF9fKQotICBwdHIgPSAo Y2hhciAqKSBBTElHTl9VUCAoKGdydWJfYWRkcl90KSBwdHIsIHRyYW1wX2FsaWduKTsKLSAgbW9k LT50cmFtcCA9IHB0cjsKLSAgbW9kLT50cmFtcHB0ciA9IHB0cjsKLSAgcHRyICs9IHRyYW1wOwot ICBwdHIgPSAoY2hhciAqKSBBTElHTl9VUCAoKGdydWJfYWRkcl90KSBwdHIsIGdvdF9hbGlnbik7 Ci0gIG1vZC0+Z290ID0gcHRyOwotICBtb2QtPmdvdHB0ciA9IHB0cjsKLSAgcHRyICs9IGdvdDsK KyAgbW9kLT50cmFtcHB0ciA9IG1vZC0+dHJhbXAgPSAoY2hhciAqKSBtb2QtPmJhc2UgKyAodHJh bXBfYWRkciAtIG1vZC0+bWluX2FkZHIpOworICBtb2QtPmdvdHB0ciA9IG1vZC0+Z290ID0gKGNo YXIgKikgbW9kLT5iYXNlICsgKGdvdF9hZGRyIC0gbW9kLT5taW5fYWRkcik7CiAjZW5kaWYKIAog ICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKQEAgLTM1NSwxMCArMzA3LDQyIEBAIGdydWJfZGxfcmVz b2x2ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCBFbGZfRWhkciAqZSkKICAgY29uc3QgY2hhciAq c3RyOwogICBFbGZfV29yZCBzaXplLCBlbnRzaXplOwogCisgIC8qIE9uIGVtdSBtb2RfaW5pdC9t b2RfZmluaSBhcmUgbm90IGV4cG9ydGVkLiAgKi8KKyNpZmRlZiBHUlVCX01BQ0hJTkVfRU1VCisg ICAgZm9yIChpID0gMCwgcyA9IChFbGZfU2hkciAqKSAoKGNoYXIgKikgZSArIGUtPmVfc2hvZmYp OworICAgICAgIGkgPCBlLT5lX3NobnVtOworICAgICAgIGkrKywgcyA9IChFbGZfU2hkciAqKSAo KGNoYXIgKikgcyArIGUtPmVfc2hlbnRzaXplKSkKKyAgICAgIGlmIChzLT5zaF90eXBlID09IFNI VF9TWU1UQUIpCisJeworCSAgRWxmX1NoZHIgKnMyOworCSAgc3ltID0gKEVsZl9TeW0gKikgKChj aGFyICopIGUgKyBzLT5zaF9vZmZzZXQpOworCSAgc2l6ZSA9IHMtPnNoX3NpemU7CisJICBlbnRz aXplID0gcy0+c2hfZW50c2l6ZTsKKworCSAgczIgPSAoRWxmX1NoZHIgKikgKChjaGFyICopIGUg KyBlLT5lX3Nob2ZmICsgZS0+ZV9zaGVudHNpemUgKiBzLT5zaF9saW5rKTsKKwkgIHN0ciA9IChj aGFyICopIGUgKyBzMi0+c2hfb2Zmc2V0OworCisJICBmb3IgKGkgPSAwOworCSAgICAgICBpIDwg c2l6ZSAvIGVudHNpemU7CisJICAgICAgIGkrKywgc3ltID0gKEVsZl9TeW0gKikgKChjaGFyICop IHN5bSArIGVudHNpemUpKQorCSAgICB7CisJICAgICAgY29uc3QgY2hhciAqbmFtZSA9IHN0ciAr IHN5bS0+c3RfbmFtZTsKKworCSAgICAgIGlmIChFTEZfU1RfVFlQRSAoc3ltLT5zdF9pbmZvKSA9 PSBTVFRfRlVOQykKKwkJeworCQkgIGlmIChncnViX3N0cmNtcCAobmFtZSwgImdydWJfbW9kX2lu aXQiKSA9PSAwKQorCQkgICAgbW9kLT5pbml0ID0gKHZvaWQgKCopIChncnViX2RsX3QpKSAoc3lt LT5zdF92YWx1ZSArIChFbGZfQWRkcikgbW9kLT5iYXNlIC0gbW9kLT5taW5fYWRkcik7CisJCSAg ZWxzZSBpZiAoZ3J1Yl9zdHJjbXAgKG5hbWUsICJncnViX21vZF9maW5pIikgPT0gMCkKKwkJICAg IG1vZC0+ZmluaSA9ICh2b2lkICgqKSAodm9pZCkpIChzeW0tPnN0X3ZhbHVlICsgKEVsZl9BZGRy KSBtb2QtPmJhc2UgLSBtb2QtPm1pbl9hZGRyKTsKKwkJfQorCSAgICB9CisJfQorI2VuZGlmCisK ICAgZm9yIChpID0gMCwgcyA9IChFbGZfU2hkciAqKSAoKGNoYXIgKikgZSArIGUtPmVfc2hvZmYp OwogICAgICAgIGkgPCBlLT5lX3NobnVtOwogICAgICAgIGkrKywgcyA9IChFbGZfU2hkciAqKSAo KGNoYXIgKikgcyArIGUtPmVfc2hlbnRzaXplKSkKLSAgICBpZiAocy0+c2hfdHlwZSA9PSBTSFRf U1lNVEFCKQorICAgIGlmIChzLT5zaF90eXBlID09IFNIVF9EWU5TWU0pCiAgICAgICBicmVhazsK IAogICAvKiBNb2R1bGUgd2l0aG91dCBzeW1ib2wgdGFibGUgbWF5IHN0aWxsIGJlIHVzZWQgdG8g cHVsbCBpbiBkZXBlbmRlbmNpZXMuCkBAIC0zOTAsMTUgKzM3NCwxOSBAQCBncnViX2RsX3Jlc29s dmVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgRWxmX0VoZHIgKmUpCiAgICAgICB1bnNpZ25lZCBj aGFyIHR5cGUgPSBFTEZfU1RfVFlQRSAoc3ltLT5zdF9pbmZvKTsKICAgICAgIHVuc2lnbmVkIGNo YXIgYmluZCA9IEVMRl9TVF9CSU5EIChzeW0tPnN0X2luZm8pOwogICAgICAgY29uc3QgY2hhciAq bmFtZSA9IHN0ciArIHN5bS0+c3RfbmFtZTsKKyAgICAgIGludCBpc2Z1bmMgPSB0eXBlID09IFNU VF9GVU5DOwogCiAgICAgICBzd2l0Y2ggKHR5cGUpCiAJewogCWNhc2UgU1RUX05PVFlQRToKIAlj YXNlIFNUVF9PQkpFQ1Q6CisJY2FzZSBTVFRfRlVOQzoKIAkgIC8qIFJlc29sdmUgYSBnbG9iYWwg c3ltYm9sLiAgKi8KIAkgIGlmIChzeW0tPnN0X25hbWUgIT0gMCAmJiBzeW0tPnN0X3NobmR4ID09 IDApCiAJICAgIHsKIAkgICAgICBncnViX3N5bWJvbF90IG5zeW0gPSBncnViX2RsX3Jlc29sdmVf c3ltYm9sIChuYW1lKTsKKwkgICAgICBpZiAoISBuc3ltICYmIGJpbmQgPT0gU1RCX1dFQUspCisJ CWJyZWFrOwogCSAgICAgIGlmICghIG5zeW0pCiAJCXJldHVybiBncnViX2Vycm9yIChHUlVCX0VS Ul9CQURfTU9EVUxFLAogCQkJCSAgIE5fKCJzeW1ib2wgYCVzJyBub3QgZm91bmQiKSwgbmFtZSk7 CkBAIC00MDgsNDEgKzM5NiwzMiBAQCBncnViX2RsX3Jlc29sdmVfc3ltYm9scyAoZ3J1Yl9kbF90 IG1vZCwgRWxmX0VoZHIgKmUpCiAJICAgIH0KIAkgIGVsc2UKIAkgICAgewotCSAgICAgIHN5bS0+ c3RfdmFsdWUgKz0gKEVsZl9BZGRyKSBncnViX2RsX2dldF9zZWN0aW9uX2FkZHIgKG1vZCwKLQkJ CQkJCQkJICAgIHN5bS0+c3Rfc2huZHgpOworCSAgICAgIHN5bS0+c3RfdmFsdWUgKz0gKEVsZl9B ZGRyKSBtb2QtPmJhc2UgLSBtb2QtPm1pbl9hZGRyOworI2lmZGVmIF9faWE2NF9fCisJICAgICAg aWYgKGlzZnVuYykKKwkJeworCQkgIC8qIEZJWE1FOiBmcmVlIGRlc2NyaXB0b3Igb25jZSBpdCdz IG5vdCB1c2VkIGFueW1vcmUuICovCisJCSAgY2hhciAqKmRlc2M7CisJCSAgZGVzYyA9IGdydWJf bWFsbG9jICgyICogc2l6ZW9mIChjaGFyICopKTsKKwkJICBpZiAoIWRlc2MpCisJCSAgICByZXR1 cm4gZ3J1Yl9lcnJubzsKKwkJICBkZXNjWzBdID0gKHZvaWQgKikgc3ltLT5zdF92YWx1ZTsKKwkJ ICBkZXNjWzFdID0gKGNoYXIgKikgbW9kLT5iYXNlICsgbW9kLT5wbHRnb3Q7CisJCSAgc3ltLT5z dF92YWx1ZSA9IChncnViX2FkZHJfdCkgZGVzYzsKKwkJfQorI2VuZGlmCiAJICAgICAgaWYgKGJp bmQgIT0gU1RCX0xPQ0FMKQotCQlpZiAoZ3J1Yl9kbF9yZWdpc3Rlcl9zeW1ib2wgKG5hbWUsICh2 b2lkICopIHN5bS0+c3RfdmFsdWUsIDAsIG1vZCkpCisJCWlmIChncnViX2RsX3JlZ2lzdGVyX3N5 bWJvbCAobmFtZSwgKHZvaWQgKikgc3ltLT5zdF92YWx1ZSwgaXNmdW5jLCBtb2QpKQogCQkgIHJl dHVybiBncnViX2Vycm5vOworCSAgICAgIGlmIChpc2Z1bmMgJiYgZ3J1Yl9zdHJjbXAgKG5hbWUs ICJncnViX21vZF9pbml0IikgPT0gMCkKKwkJbW9kLT5pbml0ID0gKHZvaWQgKCopIChncnViX2Rs X3QpKSBzeW0tPnN0X3ZhbHVlOworCSAgICAgIGVsc2UgaWYgKGlzZnVuYyAmJiBncnViX3N0cmNt cCAobmFtZSwgImdydWJfbW9kX2ZpbmkiKSA9PSAwKQorCQltb2QtPmZpbmkgPSAodm9pZCAoKikg KHZvaWQpKSBzeW0tPnN0X3ZhbHVlOwogCSAgICB9CiAJICBicmVhazsKIAotCWNhc2UgU1RUX0ZV TkM6Ci0JICBzeW0tPnN0X3ZhbHVlICs9IChFbGZfQWRkcikgZ3J1Yl9kbF9nZXRfc2VjdGlvbl9h ZGRyIChtb2QsCi0JCQkJCQkJCXN5bS0+c3Rfc2huZHgpOwotI2lmZGVmIF9faWE2NF9fCi0JICB7 Ci0JICAgICAgLyogRklYTUU6IGZyZWUgZGVzY3JpcHRvciBvbmNlIGl0J3Mgbm90IHVzZWQgYW55 bW9yZS4gKi8KLQkgICAgICBjaGFyICoqZGVzYzsKLQkgICAgICBkZXNjID0gZ3J1Yl9tYWxsb2Mg KDIgKiBzaXplb2YgKGNoYXIgKikpOwotCSAgICAgIGlmICghZGVzYykKLQkJcmV0dXJuIGdydWJf ZXJybm87Ci0JICAgICAgZGVzY1swXSA9ICh2b2lkICopIHN5bS0+c3RfdmFsdWU7Ci0JICAgICAg ZGVzY1sxXSA9IG1vZC0+YmFzZTsKLQkgICAgICBzeW0tPnN0X3ZhbHVlID0gKGdydWJfYWRkcl90 KSBkZXNjOwotCSAgfQotI2VuZGlmCi0JICBpZiAoYmluZCAhPSBTVEJfTE9DQUwpCi0JICAgIGlm IChncnViX2RsX3JlZ2lzdGVyX3N5bWJvbCAobmFtZSwgKHZvaWQgKikgc3ltLT5zdF92YWx1ZSwg MSwgbW9kKSkKLQkgICAgICByZXR1cm4gZ3J1Yl9lcnJubzsKLQkgIGlmIChncnViX3N0cmNtcCAo bmFtZSwgImdydWJfbW9kX2luaXQiKSA9PSAwKQotCSAgICBtb2QtPmluaXQgPSAodm9pZCAoKikg KGdydWJfZGxfdCkpIHN5bS0+c3RfdmFsdWU7Ci0JICBlbHNlIGlmIChncnViX3N0cmNtcCAobmFt ZSwgImdydWJfbW9kX2ZpbmkiKSA9PSAwKQotCSAgICBtb2QtPmZpbmkgPSAodm9pZCAoKikgKHZv aWQpKSBzeW0tPnN0X3ZhbHVlOwotCSAgYnJlYWs7Ci0KIAljYXNlIFNUVF9TRUNUSU9OOgotCSAg c3ltLT5zdF92YWx1ZSA9IChFbGZfQWRkcikgZ3J1Yl9kbF9nZXRfc2VjdGlvbl9hZGRyIChtb2Qs Ci0JCQkJCQkJICAgICAgIHN5bS0+c3Rfc2huZHgpOworCSAgc3ltLT5zdF92YWx1ZSA9IChFbGZf QWRkcikgbW9kLT5iYXNlIC0gbW9kLT5taW5fYWRkcjsKIAkgIGJyZWFrOwogCiAJY2FzZSBTVFRf RklMRToKQEAgLTYyMCwyNiArNTk5LDE0IEBAIGdydWJfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1 Yl9kbF90IG1vZCwgdm9pZCAqZWhkcikKICAgICAgICBpKyssIHMgPSAoRWxmX1NoZHIgKikgKChj aGFyICopIHMgKyBlLT5lX3NoZW50c2l6ZSkpCiAgICAgaWYgKHMtPnNoX3R5cGUgPT0gU0hUX1JF TCB8fCBzLT5zaF90eXBlID09IFNIVF9SRUxBKQogICAgICAgewotCWdydWJfZGxfc2VnbWVudF90 IHNlZzsKIAlncnViX2Vycl90IGVycjsKIAotCWlmICghKHMtPnNoX2ZsYWdzICYgU0hGX0lORk9f TElOSykpCi0JICBjb250aW51ZTsKLQotCS8qIEZpbmQgdGhlIHRhcmdldCBzZWdtZW50LiAgKi8K LQlmb3IgKHNlZyA9IG1vZC0+c2VnbWVudDsgc2VnOyBzZWcgPSBzZWctPm5leHQpCi0JICBpZiAo c2VnLT5zZWN0aW9uID09IHMtPnNoX2luZm8pCi0JICAgIGJyZWFrOwotCi0JaWYgKHNlZykKLQkg IHsKLQkgICAgaWYgKCFtb2QtPnN5bXRhYikKLQkgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JV Ql9FUlJfQkFEX01PRFVMRSwgInJlbG9jYXRpb24gd2l0aG91dCBzeW1ib2wgdGFibGUiKTsKKwlp ZiAoIW1vZC0+c3ltdGFiKQorCSAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RV TEUsICJyZWxvY2F0aW9uIHdpdGhvdXQgc3ltYm9sIHRhYmxlIik7CiAKLQkgICAgZXJyID0gZ3J1 Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKG1vZCwgZWhkciwgcywgc2VnKTsKLQkgICAgaWYg KGVycikKLQkgICAgICByZXR1cm4gZXJyOwotCSAgfQorCWVyciA9IGdydWJfYXJjaF9kbF9yZWxv Y2F0ZV9zeW1ib2xzIChtb2QsIGVoZHIsIHMpOworCWlmIChlcnIpCisJICByZXR1cm4gZXJyOwog ICAgICAgfQogCiAgIHJldHVybiBHUlVCX0VSUl9OT05FOwpAQCAtNjUxLDcgKzYxOCw3IEBAIHN0 YXRpYyBncnViX2Vycl90CiBncnViX2RsX3NldF9tZW1fYXR0cnMgKGdydWJfZGxfdCBtb2QsIHZv aWQgKmVoZHIpCiB7CiAgIHVuc2lnbmVkIGk7Ci0gIGNvbnN0IEVsZl9TaGRyICpzOworICBjb25z dCBFbGZfUGhkciAqcDsKICAgY29uc3QgRWxmX0VoZHIgKmUgPSBlaGRyOwogICBncnViX2Vycl90 IGVycjsKICNpZiAhZGVmaW5lZCAoX19pMzg2X18pICYmICFkZWZpbmVkIChfX3g4Nl82NF9fKSAm JiAhZGVmaW5lZChfX3Jpc2N2KSAmJiBcCkBAIC02NjEsMzkgKzYyOCwzMyBAQCBncnViX2RsX3Nl dF9tZW1fYXR0cnMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIpCiAgIGdydWJfc2l6ZV90IHRn c3o7CiAjZW5kaWYKIAotICBmb3IgKGkgPSAwLCBzID0gKGNvbnN0IEVsZl9TaGRyICopICgoY29u c3QgY2hhciAqKSBlICsgZS0+ZV9zaG9mZik7Ci0gICAgICAgaSA8IGUtPmVfc2hudW07Ci0gICAg ICAgaSsrLCBzID0gKGNvbnN0IEVsZl9TaGRyICopICgoY29uc3QgY2hhciAqKSBzICsgZS0+ZV9z aGVudHNpemUpKQorICBmb3IgKGkgPSAwLCBwID0gKGNvbnN0IEVsZl9QaGRyICopICgoY29uc3Qg Y2hhciAqKSBlICsgZS0+ZV9waG9mZik7CisgICAgICAgaSA8IGUtPmVfcGhudW07CisgICAgICAg aSsrLCBwID0gKGNvbnN0IEVsZl9QaGRyICopICgoY29uc3QgY2hhciAqKSBwICsgZS0+ZV9waGVu dHNpemUpKQogICAgIHsKLSAgICAgIGdydWJfZGxfc2VnbWVudF90IHNlZzsKICAgICAgIGdydWJf dWludDY0X3Qgc2V0X2F0dHJzID0gR1JVQl9NRU1fQVRUUl9SOwogICAgICAgZ3J1Yl91aW50NjRf dCBjbGVhcl9hdHRycyA9IEdSVUJfTUVNX0FUVFJfVyB8IEdSVUJfTUVNX0FUVFJfWDsKIAotICAg ICAgZm9yIChzZWcgPSBtb2QtPnNlZ21lbnQ7IHNlZzsgc2VnID0gc2VnLT5uZXh0KQotCS8qIERv ZXMgdGhpcyBFTEYgc2VjdGlvbidzIGluZGV4IG1hdGNoIEdSVUIgREwgc2VnbWVudD8gKi8KLQlp ZiAoc2VnLT5zZWN0aW9uID09IGkpCi0JICBicmVhazsKLQotICAgICAgLyogTm8gR1JVQiBETCBz ZWdtZW50IGZvdW5kIGZvciB0aGlzIEVMRiBzZWN0aW9uLCBza2lwIGl0LiAqLwotICAgICAgaWYg KCFzZWcpCisgICAgICBpZiAocC0+cF9tZW1zeiA9PSAwKQogCWNvbnRpbnVlOwogCi0gICAgICBp ZiAoc2VnLT5zaXplID09IDAgfHwgIShzLT5zaF9mbGFncyAmIFNIRl9BTExPQykpCi0JY29udGlu dWU7Ci0KLSAgICAgIGlmIChzLT5zaF9mbGFncyAmIFNIRl9XUklURSkKKyAgICAgIGlmIChwLT5w X2ZsYWdzICYgUEZfVykKIAl7CiAJICBzZXRfYXR0cnMgfD0gR1JVQl9NRU1fQVRUUl9XOwogCSAg Y2xlYXJfYXR0cnMgJj0gfkdSVUJfTUVNX0FUVFJfVzsKIAl9CiAKLSAgICAgIGlmIChzLT5zaF9m bGFncyAmIFNIRl9FWEVDSU5TVFIpCisgICAgICBpZiAocC0+cF9mbGFncyAmIFBGX1gpCiAJewog CSAgc2V0X2F0dHJzIHw9IEdSVUJfTUVNX0FUVFJfWDsKIAkgIGNsZWFyX2F0dHJzICY9IH5HUlVC X01FTV9BVFRSX1g7CiAJfQogCi0gICAgICBlcnIgPSBncnViX3VwZGF0ZV9tZW1fYXR0cnMgKChn cnViX2FkZHJfdCkgc2VnLT5hZGRyLCBzZWctPnNpemUsCisgICAgICBncnViX2FkZHJfdCBmcm9t ID0gKGdydWJfYWRkcl90KSAoKGNoYXIgKiltb2QtPmJhc2UgKyAocC0+cF92YWRkciAtIG1vZC0+ bWluX2FkZHIpKTsKKyAgICAgIGdydWJfYWRkcl90IHRvID0gZnJvbSArIHAtPnBfbWVtc3o7CisK KyAgICAgIGVyciA9IGdydWJfdXBkYXRlX21lbV9hdHRycyAoQUxJR05fRE9XTihmcm9tLCBETF9B TElHTiksCisJCQkJICAgQUxJR05fVVAodG8sIERMX0FMSUdOKSAtIEFMSUdOX0RPV04oZnJvbSwg RExfQUxJR04pLAogCQkJCSAgIHNldF9hdHRycywgY2xlYXJfYXR0cnMpOwogICAgICAgaWYgKGVy ciAhPSBHUlVCX0VSUl9OT05FKQogCXJldHVybiBlcnI7CkBAIC03NDYsMTYgKzcwNywxNiBAQCBn cnViX2RsX2xvYWRfY29yZV9ub2luaXQgKHZvaWQgKmFkZHIsIGdydWJfc2l6ZV90IHNpemUpCiAg IGlmIChncnViX2RsX2NoZWNrX2hlYWRlciAoZSwgc2l6ZSkpCiAgICAgcmV0dXJuIDA7CiAKLSAg aWYgKGUtPmVfdHlwZSAhPSBFVF9SRUwpCisgIGlmIChlLT5lX3R5cGUgIT0gRVRfUkVMICYmIDAp CiAgICAgewogICAgICAgZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwgTl8oInRoaXMg RUxGIGZpbGUgaXMgbm90IG9mIHRoZSByaWdodCB0eXBlIikpOwogICAgICAgcmV0dXJuIDA7CiAg ICAgfQogCiAgIC8qIE1ha2Ugc3VyZSB0aGF0IGV2ZXJ5IHNlY3Rpb24gaXMgd2l0aGluIHRoZSBj b3JlLiAgKi8KLSAgaWYgKHNpemUgPCBlLT5lX3Nob2ZmICsgKGdydWJfdWludDMyX3QpIGUtPmVf c2hlbnRzaXplICogZS0+ZV9zaG51bSkKKyAgaWYgKHNpemUgPCBlLT5lX3Bob2ZmICsgKGdydWJf dWludDMyX3QpIGUtPmVfcGhlbnRzaXplICogZS0+ZV9waG51bSkKICAgICB7Ci0gICAgICBncnVi X2Vycm9yIChHUlVCX0VSUl9CQURfT1MsICJFTEYgc2VjdGlvbnMgb3V0c2lkZSBjb3JlIik7Cisg ICAgICBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfT1MsICJFTEYgcHJvZ3JhbSBoZWFkZXJzIG91 dHNpZGUgY29yZSIpOwogICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC03ODAsNiArNzQxLDkg QEAgZ3J1Yl9kbF9sb2FkX2NvcmVfbm9pbml0ICh2b2lkICphZGRyLCBncnViX3NpemVfdCBzaXpl KQogICAgICAgfHwgZ3J1Yl9kbF9sb2FkX3NlZ21lbnRzIChtb2QsIGUpCiAgICAgICB8fCBncnVi X2RsX3Jlc29sdmVfc3ltYm9scyAobW9kLCBlKQogICAgICAgfHwgZ3J1Yl9kbF9yZWxvY2F0ZV9z eW1ib2xzIChtb2QsIGUpCisjaWZkZWYgX19taXBzX18KKyAgICAgIHx8IGdydWJfYXJjaF9kbF9y ZWxvY2F0ZV9wbHRnb3QgKG1vZCkKKyNlbmRpZgogICAgICAgfHwgZ3J1Yl9kbF9zZXRfbWVtX2F0 dHJzIChtb2QsIGUpKQogICAgIHsKICAgICAgIG1vZC0+ZmluaSA9IDA7CmRpZmYgLS1naXQgYS9n cnViLWNvcmUva2Vybi9lbXUvZnVsbC5jIGIvZ3J1Yi1jb3JlL2tlcm4vZW11L2Z1bGwuYwppbmRl eCBlOGQ2M2IxZjUuLjE4ZTFhYjM0NiAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2tlcm4vZW11L2Z1 bGwuYworKysgYi9ncnViLWNvcmUva2Vybi9lbXUvZnVsbC5jCkBAIC0zOSwxMyArMzksMTEgQEAg Z3J1Yl9hcmNoX2RsX2NoZWNrX2hlYWRlciAodm9pZCAqZWhkcikKIH0KIAogZ3J1Yl9lcnJfdAot Z3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIs Ci0JCQkgICAgICAgRWxmX1NoZHIgKnMsIGdydWJfZGxfc2VnbWVudF90IHNlZykKK2dydWJfYXJj aF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLCBFbGZfU2hk ciAqcykKIHsKICAgKHZvaWQpIG1vZDsKICAgKHZvaWQpIGVoZHI7CiAgICh2b2lkKSBzOwotICAo dm9pZCkgc2VnOwogICByZXR1cm4gR1JVQl9FUlJfQkFEX01PRFVMRTsKIH0KIApkaWZmIC0tZ2l0 IGEvZ3J1Yi1jb3JlL2tlcm4vaTM4Ni9kbC5jIGIvZ3J1Yi1jb3JlL2tlcm4vaTM4Ni9kbC5jCmlu ZGV4IDEzNDZkYTVjYy4uN2M0MzUzYmFiIDEwMDY0NAotLS0gYS9ncnViLWNvcmUva2Vybi9pMzg2 L2RsLmMKKysrIGIvZ3J1Yi1jb3JlL2tlcm4vaTM4Ni9kbC5jCkBAIC00MSw3ICs0MSw3IEBAIGdy dWJfYXJjaF9kbF9jaGVja19oZWFkZXIgKHZvaWQgKmVoZHIpCiAvKiBSZWxvY2F0ZSBzeW1ib2xz LiAgKi8KIGdydWJfZXJyX3QKIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2Rs X3QgbW9kLCB2b2lkICplaGRyLAotCQkJICAgICAgIEVsZl9TaGRyICpzLCBncnViX2RsX3NlZ21l bnRfdCBzZWcpCisJCQkgICAgICAgRWxmX1NoZHIgKnMpCiB7CiAgIEVsZl9SZWwgKnJlbCwgKm1h eDsKIApAQCAtNTMsMTYgKzUzLDIyIEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChn cnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAogICAgICAgRWxmX1dvcmQgKmFkZHI7CiAgICAgICBF bGZfU3ltICpzeW07CiAKLSAgICAgIGlmIChzZWctPnNpemUgPCByZWwtPnJfb2Zmc2V0KQorICAg ICAgaWYgKG1vZC0+bWluX2FkZHIgKyBtb2QtPnN6IDw9IHJlbC0+cl9vZmZzZXQgfHwgbW9kLT5t aW5fYWRkciA+IHJlbC0+cl9vZmZzZXQpCiAJcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JB RF9NT0RVTEUsCi0JCQkgICAicmVsb2Mgb2Zmc2V0IGlzIG91dCBvZiB0aGUgc2VnbWVudCIpOwor CQkJICAgInJlbG9jIG9mZnNldCBpcyBvdXQgb2YgdGhlIHNlZ21lbnQ6ICV4IG5vdCBpbiBbJXgu LiV4XSIsCisJCQkgICByZWwtPnJfb2Zmc2V0LCBtb2QtPm1pbl9hZGRyLCBtb2QtPm1pbl9hZGRy ICsgbW9kLT5zeik7CiAKLSAgICAgIGFkZHIgPSAoRWxmX1dvcmQgKikgKChjaGFyICopIHNlZy0+ YWRkciArIHJlbC0+cl9vZmZzZXQpOworICAgICAgYWRkciA9IChFbGZfV29yZCAqKSAoKGNoYXIg KikgbW9kLT5iYXNlICsgcmVsLT5yX29mZnNldCAtIG1vZC0+bWluX2FkZHIpOwogICAgICAgc3lt ID0gKEVsZl9TeW0gKikgKChjaGFyICopIG1vZC0+c3ltdGFiCiAJCQkgKyBtb2QtPnN5bXNpemUg KiBFTEZfUl9TWU0gKHJlbC0+cl9pbmZvKSk7CiAKICAgICAgIHN3aXRjaCAoRUxGX1JfVFlQRSAo cmVsLT5yX2luZm8pKQogCXsKKwljYXNlIFJfMzg2X0pNUF9TTE9UOgorCSAgKmFkZHIgPSBzeW0t PnN0X3ZhbHVlOworCSAgYnJlYWs7CisKKwljYXNlIFJfMzg2X0dMT0JfREFUOgogCWNhc2UgUl8z ODZfMzI6CiAJICAqYWRkciArPSBzeW0tPnN0X3ZhbHVlOwogCSAgYnJlYWs7CkBAIC03MCw2ICs3 NiwxMSBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9p ZCAqZWhkciwKIAljYXNlIFJfMzg2X1BDMzI6CiAJICAqYWRkciArPSAoc3ltLT5zdF92YWx1ZSAt IChncnViX2FkZHJfdCkgYWRkcik7CiAJICBicmVhazsKKworCWNhc2UgUl8zODZfUkVMQVRJVkU6 CisJICAqYWRkciArPSAoZ3J1Yl9hZGRyX3QpIG1vZC0+YmFzZSAtIG1vZC0+bWluX2FkZHI7CisJ ICBicmVhazsKKwogCWRlZmF1bHQ6CiAJICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfTk9U X0lNUExFTUVOVEVEX1lFVCwKIAkJCSAgICAgTl8oInJlbG9jYXRpb24gMHgleCBpcyBub3QgaW1w bGVtZW50ZWQgeWV0IiksCmRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9pYTY0L2RsLmMgYi9n cnViLWNvcmUva2Vybi9pYTY0L2RsLmMKaW5kZXggZGI1OTMwMGZlLi43NWI2M2E3OWYgMTAwNjQ0 Ci0tLSBhL2dydWItY29yZS9rZXJuL2lhNjQvZGwuYworKysgYi9ncnViLWNvcmUva2Vybi9pYTY0 L2RsLmMKQEAgLTQzLDE0ICs0MywyOSBAQCBncnViX2FyY2hfZGxfY2hlY2tfaGVhZGVyICh2b2lk ICplaGRyKQogICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKIH0KIAordm9pZAorZ3J1Yl9hcmNoX2Rs X3BhcnNlX2R5bmFtaWMgKGdydWJfZGxfdCBtb2QsIEVsZl9EeW4gKmR5biwgZ3J1Yl9zaXplX3Qg c3opCit7CisgIHVuc2lnbmVkIGk7CisgIGZvciAoaSA9IDA7IGkgPCBzeiAvIHNpemVvZihkeW5b MF0pOyBpKyspCisgICAgc3dpdGNoIChkeW5baV0uZF90YWcpCisgICAgICB7CisgICAgICBjYXNl IERUX1BMVEdPVDoKKwltb2QtPnBsdGdvdCA9IGR5bltpXS5kX3VuLmRfcHRyOworCWJyZWFrOwor ICAgICAgY2FzZSBEVF9OVUxMOgorCXJldHVybjsKKyAgICAgIH0KK30KKwogI3ByYWdtYSBHQ0Mg ZGlhZ25vc3RpYyBpZ25vcmVkICItV2Nhc3QtYWxpZ24iCiAKIC8qIFJlbG9jYXRlIHN5bWJvbHMu ICAqLwogZ3J1Yl9lcnJfdAotZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxf dCBtb2QsIHZvaWQgKmVoZHIsCi0JCQkgICAgICAgRWxmX1NoZHIgKnMsIGdydWJfZGxfc2VnbWVu dF90IHNlZykKK2dydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2 b2lkICplaGRyLCBFbGZfU2hkciAqcykKIHsKICAgRWxmX1JlbGEgKnJlbCwgKm1heDsKKyAgZ3J1 Yl9hZGRyX3QgZ3AgPSAoZ3J1Yl9hZGRyX3QpIG1vZC0+YmFzZSArIChncnViX2FkZHJfdCkgbW9k LT5wbHRnb3Q7CiAKICAgZm9yIChyZWwgPSAoRWxmX1JlbGEgKikgKChjaGFyICopIGVoZHIgKyBz LT5zaF9vZmZzZXQpLAogCSBtYXggPSAoRWxmX1JlbGEgKikgKChjaGFyICopIHJlbCArIHMtPnNo X3NpemUpOwpAQCAtNjEsMTEgKzc2LDEyIEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xz IChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAogICAgICAgRWxmX1N5bSAqc3ltOwogICAgICAg Z3J1Yl91aW50NjRfdCB2YWx1ZTsKIAotICAgICAgaWYgKHNlZy0+c2l6ZSA8IChyZWwtPnJfb2Zm c2V0ICYgfjMpKQorICAgICAgaWYgKG1vZC0+bWluX2FkZHIgKyBtb2QtPnN6IDw9IHJlbC0+cl9v ZmZzZXQgfHwgbW9kLT5taW5fYWRkciA+IHJlbC0+cl9vZmZzZXQpCiAJcmV0dXJuIGdydWJfZXJy b3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsCi0JCQkgICAicmVsb2Mgb2Zmc2V0IGlzIG91dCBvZiB0 aGUgc2VnbWVudCIpOworCQkJICAgInJlbG9jIG9mZnNldCBpcyBvdXQgb2YgdGhlIHNlZ21lbnQ6 ICVseCBub3QgaW4gWyVseC4uJWx4XSIsCisJCQkgICByZWwtPnJfb2Zmc2V0LCBtb2QtPm1pbl9h ZGRyLCBtb2QtPm1pbl9hZGRyICsgbW9kLT5zeik7CiAKLSAgICAgIGFkZHIgPSAoZ3J1Yl9hZGRy X3QpIHNlZy0+YWRkciArIHJlbC0+cl9vZmZzZXQ7CisgICAgICBhZGRyID0gKGdydWJfYWRkcl90 KSAoKGNoYXIgKikgbW9kLT5iYXNlICsgcmVsLT5yX29mZnNldCAtIG1vZC0+bWluX2FkZHIpOwog ICAgICAgc3ltID0gKEVsZl9TeW0gKikgKChjaGFyICopIG1vZC0+c3ltdGFiCiAJCQkgKyBtb2Qt PnN5bXNpemUgKiBFTEZfUl9TWU0gKHJlbC0+cl9pbmZvKSk7CiAKQEAgLTk0LDI1ICsxMTAsMjgg QEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVo ZHIsCiAJICAgIGdydWJfaWE2NF9hZGRfdmFsdWVfdG9fc2xvdF8yMGIgKGFkZHIsIG5vZmYpOwog CSAgfQogCSAgYnJlYWs7Ci0JY2FzZSBSX0lBNjRfU0VHUkVMNjRMU0I6Ci0JICAqKGdydWJfdWlu dDY0X3QgKikgYWRkciArPSB2YWx1ZSAtIChncnViX2FkZHJfdCkgc2VnLT5hZGRyOworCWNhc2Ug Ul9JQTY0X0lQTFRMU0I6CisJICBncnViX21lbWNweSgodm9pZCAqKSBhZGRyLCAodm9pZCAqKSB2 YWx1ZSwgMTYpOwogCSAgYnJlYWs7CiAJY2FzZSBSX0lBNjRfRlBUUjY0TFNCOgogCWNhc2UgUl9J QTY0X0RJUjY0TFNCOgotCSAgKihncnViX3VpbnQ2NF90ICopIGFkZHIgKz0gdmFsdWU7CisJICAq KGdydWJfdWludDY0X3QgKikgYWRkciA9IHZhbHVlOworCSAgYnJlYWs7CisJY2FzZSBSX0lBNjRf UkVMNjRMU0I6CisJICAqKGdydWJfdWludDY0X3QgKikgYWRkciA9IChncnViX2FkZHJfdCkgbW9k LT5iYXNlIC0gbW9kLT5taW5fYWRkciArIHJlbC0+cl9hZGRlbmQ7CiAJICBicmVhazsKIAljYXNl IFJfSUE2NF9QQ1JFTDY0TFNCOgogCSAgKihncnViX3VpbnQ2NF90ICopIGFkZHIgKz0gdmFsdWUg LSBhZGRyOwogCSAgYnJlYWs7CiAJY2FzZSBSX0lBNjRfR1BSRUw2NEk6Ci0JICBncnViX2lhNjRf c2V0X2ltbXU2NCAoYWRkciwgdmFsdWUgLSAoZ3J1Yl9hZGRyX3QpIG1vZC0+YmFzZSk7CisJICBn cnViX2lhNjRfc2V0X2ltbXU2NCAoYWRkciwgdmFsdWUgLSBncCk7CiAJICBicmVhazsKIAljYXNl IFJfSUE2NF9HUFJFTDIyOgotCSAgaWYgKCh2YWx1ZSAtIChncnViX2FkZHJfdCkgbW9kLT5iYXNl KSAmIH5NQVNLMjApCisJICBpZiAoKHZhbHVlIC0gZ3ApICYgfk1BU0syMCkKIAkgICAgcmV0dXJu IGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsCiAJCQkgICAgICAgImdwcmVsIG9mZnNl dCB0b28gYmlnICglbHgpIiwKLQkJCSAgICAgICB2YWx1ZSAtIChncnViX2FkZHJfdCkgbW9kLT5i YXNlKTsKLQkgIGdydWJfaWE2NF9hZGRfdmFsdWVfdG9fc2xvdF8yMSAoYWRkciwgdmFsdWUgLSAo Z3J1Yl9hZGRyX3QpIG1vZC0+YmFzZSk7CisJCQkgICAgICAgdmFsdWUgLSBncCk7CisJICBncnVi X2lhNjRfYWRkX3ZhbHVlX3RvX3Nsb3RfMjEgKGFkZHIsIHZhbHVlIC0gZ3ApOwogCSAgYnJlYWs7 CiAKIAljYXNlIFJfSUE2NF9MVE9GRjIyWDoKQEAgLTEyNCwxMSArMTQzLDExIEBAIGdydWJfYXJj aF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAogCSAgewog CSAgICBncnViX3VpbnQ2NF90ICpncHB0ciA9IG1vZC0+Z290cHRyOwogCSAgICAqZ3BwdHIgPSB2 YWx1ZTsKLQkgICAgaWYgKCgoZ3J1Yl9hZGRyX3QpIGdwcHRyIC0gKGdydWJfYWRkcl90KSBtb2Qt PmJhc2UpICYgfk1BU0syMCkKKwkgICAgaWYgKCgoZ3J1Yl9hZGRyX3QpIGdwcHRyIC0gZ3ApICYg fk1BU0syMCkKIAkgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwK IAkJCQkgImdwcmVsIG9mZnNldCB0b28gYmlnICglbHgpIiwKLQkJCQkgKGdydWJfYWRkcl90KSBn cHB0ciAtIChncnViX2FkZHJfdCkgbW9kLT5iYXNlKTsKLQkgICAgZ3J1Yl9pYTY0X2FkZF92YWx1 ZV90b19zbG90XzIxIChhZGRyLCAoZ3J1Yl9hZGRyX3QpIGdwcHRyIC0gKGdydWJfYWRkcl90KSBt b2QtPmJhc2UpOworCQkJCSAoZ3J1Yl9hZGRyX3QpIGdwcHRyIC0gZ3ApOworCSAgICBncnViX2lh NjRfYWRkX3ZhbHVlX3RvX3Nsb3RfMjEgKGFkZHIsIChncnViX2FkZHJfdCkgZ3BwdHIgLSBncCk7 CiAJICAgIG1vZC0+Z290cHRyID0gZ3BwdHIgKyAxOwogCSAgICBicmVhazsKIAkgIH0KZGlmZiAt LWdpdCBhL2dydWItY29yZS9rZXJuL2xvb25nYXJjaDY0L2RsLmMgYi9ncnViLWNvcmUva2Vybi9s b29uZ2FyY2g2NC9kbC5jCmluZGV4IDdmOTIzYjQxNS4uNjcwY2E4ODdlIDEwMDY0NAotLS0gYS9n cnViLWNvcmUva2Vybi9sb29uZ2FyY2g2NC9kbC5jCisrKyBiL2dydWItY29yZS9rZXJuL2xvb25n YXJjaDY0L2RsLmMKQEAgLTQ2LDcgKzQ2LDcgQEAgZ3J1Yl9hcmNoX2RsX2NoZWNrX2hlYWRlciAo dm9pZCAqZWhkcikKICAqLwogZ3J1Yl9lcnJfdAogZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJv bHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCi0JCQkgICAgICAgRWxmX1NoZHIgKnMsIGdy dWJfZGxfc2VnbWVudF90IHNlZykKKwkJCSAgICAgICBFbGZfU2hkciAqcykKIHsKICAgRWxmX1Jl bCAqcmVsLCAqbWF4OwogICBzdHJ1Y3QgZ3J1Yl9sb29uZ2FyY2g2NF9zdGFjayBzdGFjazsKQEAg LTYxLDkgKzYxLDEwIEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3Qg bW9kLCB2b2lkICplaGRyLAogICAgICAgdm9pZCAqcGxhY2U7CiAgICAgICBncnViX3VpbnQ2NF90 IHN5bV9hZGRyOwogCi0gICAgICBpZiAocmVsLT5yX29mZnNldCA+PSBzZWctPnNpemUpCisgICAg ICBpZiAobW9kLT5taW5fYWRkciArIG1vZC0+c3ogPD0gcmVsLT5yX29mZnNldCB8fCBtb2QtPm1p bl9hZGRyID4gcmVsLT5yX29mZnNldCkKIAlyZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFE X01PRFVMRSwKLQkJCSAgICJyZWxvYyBvZmZzZXQgaXMgb3V0c2lkZSB0aGUgc2VnbWVudCIpOwor CQkJICAgInJlbG9jIG9mZnNldCBpcyBvdXQgb2YgdGhlIHNlZ21lbnQ6ICVseCBub3QgaW4gWyVs eC4uJWx4XSIsCisJCQkgICByZWwtPnJfb2Zmc2V0LCBtb2QtPm1pbl9hZGRyLCBtb2QtPm1pbl9h ZGRyICsgbW9kLT5zeik7CiAKICAgICAgIHN5bSA9IChFbGZfU3ltICopICgoY2hhciopIG1vZC0+ c3ltdGFiCiAJCQkgKyBtb2QtPnN5bXNpemUgKiBFTEZfUl9TWU0gKHJlbC0+cl9pbmZvKSk7CkBA IC03MiwxMCArNzMsMTQgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxf dCBtb2QsIHZvaWQgKmVoZHIsCiAgICAgICBpZiAocy0+c2hfdHlwZSA9PSBTSFRfUkVMQSkKIAlz eW1fYWRkciArPSAoKEVsZl9SZWxhICopIHJlbCktPnJfYWRkZW5kOwogCi0gICAgICBwbGFjZSA9 ICh2b2lkICopICgoZ3J1Yl9hZGRyX3QpIHNlZy0+YWRkciArIHJlbC0+cl9vZmZzZXQpOworICAg ICAgcGxhY2UgPSAodm9pZCAqKSAoKGNoYXIgKikgbW9kLT5iYXNlICsgcmVsLT5yX29mZnNldCAt IG1vZC0+bWluX2FkZHIpOwogCiAgICAgICBzd2l0Y2ggKEVMRl9SX1RZUEUgKHJlbC0+cl9pbmZv KSkKIAl7CisJY2FzZSBSX0xBUkNIX0pVTVBfU0xPVDoKKwkgICooZ3J1Yl91aW50NjRfdCAqKXBs YWNlID0gc3ltX2FkZHI7CisJICBicmVhazsKKwogCWNhc2UgUl9MQVJDSF82NDoKIAkgIHsKIAkg ICAgZ3J1Yl91aW50NjRfdCAqYWJzX3BsYWNlID0gcGxhY2U7CkBAIC04Myw5ICs4OCwxNCBAQCBn cnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwK IAkgICAgZ3J1Yl9kcHJpbnRmICgiZGwiLCAicmVsb2NfYWJzNjQgJXAgPT4gMHglMDE2bGx4LCAl cFxuIiwKIAkJCSAgcGxhY2UsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN5bV9hZGRyLCBhYnNfcGxh Y2UpOwogCi0JICAgICphYnNfcGxhY2UgKz0gKGdydWJfdWludDY0X3QpIHN5bV9hZGRyOworCSAg ICAqYWJzX3BsYWNlID0gKGdydWJfdWludDY0X3QpIHN5bV9hZGRyOwogCSAgfQogCSAgYnJlYWs7 CisJY2FzZSBSX0xBUkNIX1JFTEFUSVZFOgorCSAgKihncnViX3VpbnQ2NF90ICopcGxhY2UgPSAo Z3J1Yl9hZGRyX3QpIG1vZC0+YmFzZSAtIG1vZC0+bWluX2FkZHI7CisJICBpZiAocy0+c2hfdHlw ZSA9PSBTSFRfUkVMQSkKKwkgICAgKihncnViX3VpbnQ2NF90ICopcGxhY2UgKz0gKChFbGZfUmVs YSAqKSByZWwpLT5yX2FkZGVuZDsKKwkgIGJyZWFrOwogCWNhc2UgUl9MQVJDSF9NQVJLX0xBOgog CSAgYnJlYWs7CiAJY2FzZSBSX0xBUkNIX1NPUF9QVVNIX1BDUkVMOgpkaWZmIC0tZ2l0IGEvZ3J1 Yi1jb3JlL2tlcm4vbWlwcy9kbC5jIGIvZ3J1Yi1jb3JlL2tlcm4vbWlwcy9kbC5jCmluZGV4IDVi MDJmOTdmYy4uY2RhNDBmZDA3IDEwMDY0NAotLS0gYS9ncnViLWNvcmUva2Vybi9taXBzL2RsLmMK KysrIGIvZ3J1Yi1jb3JlL2tlcm4vbWlwcy9kbC5jCkBAIC0yOSw2ICsyOSw1NCBAQAogc3RhdGlj IGNoYXIgX19nbnVfbG9jYWxfZ3BfZHVtbXk7CiBzdGF0aWMgY2hhciBfZ3BfZGlzcF9kdW1teTsK IAorCit2b2lkCitncnViX2FyY2hfZGxfcGFyc2VfZHluYW1pYyAoZ3J1Yl9kbF90IG1vZCwgRWxm X0R5biAqZHluLCBncnViX3NpemVfdCBzeikKK3sKKyAgdW5zaWduZWQgaTsKKyAgZm9yIChpID0g MDsgaSA8IHN6IC8gc2l6ZW9mKGR5blswXSk7IGkrKykKKyAgICBzd2l0Y2ggKGR5bltpXS5kX3Rh ZykKKyAgICAgIHsKKyAgICAgIGNhc2UgRFRfUExUR09UOgorCW1vZC0+cGx0Z290ID0gZHluW2ld LmRfdW4uZF9wdHI7CisJYnJlYWs7CisgICAgICBjYXNlIERUX01JUFNfR09UU1lNOgorCW1vZC0+ Z290c3ltID0gZHluW2ldLmRfdW4uZF92YWw7CisJYnJlYWs7CisgICAgICBjYXNlIERUX01JUFNf U1lNVEFCTk86CisJbW9kLT5zeW10YWJubyA9IGR5bltpXS5kX3VuLmRfdmFsOworCWJyZWFrOwor ICAgICAgY2FzZSBEVF9NSVBTX0xPQ0FMX0dPVE5POgorCW1vZC0+bG9jYWxfZ290bm8gPSBkeW5b aV0uZF91bi5kX3ZhbDsKKwlicmVhazsKKyAgICAgIGNhc2UgRFRfTlVMTDoKKwlyZXR1cm47Cisg ICAgICB9Cit9CisKK2dydWJfZXJyX3QKK2dydWJfYXJjaF9kbF9yZWxvY2F0ZV9wbHRnb3QgKGdy dWJfZGxfdCBtb2QpCit7CisgIGdydWJfdWludDMyX3QgaSA9IDA7CisgIGdydWJfdWludDMyX3Qg KnBsdGdvdCA9IChncnViX3VpbnQzMl90ICopICh2b2lkICopICgoY2hhciAqKSBtb2QtPmJhc2Ug KyAobW9kLT5wbHRnb3QgLSBtb2QtPm1pbl9hZGRyKSk7CisKKyAgZm9yIChpID0gMDsgaSA8IG1v ZC0+bG9jYWxfZ290bm87IGkrKykKKyAgICB7CisgICAgICBwbHRnb3RbaV0gKz0gKGdydWJfYWRk cl90KW1vZC0+YmFzZSAtIG1vZC0+bWluX2FkZHI7CisgICAgICBncnViX2RwcmludGYoImRsIiwg IkxvY2F0aW5nIGxvY2FsICVwWyV4XSB0byAleFxuIiwgJnBsdGdvdFtpXSwgbW9kLT5wbHRnb3Qg KyAoaSkgKiA0LCBwbHRnb3RbaV0pOworICAgIH0KKyAgZm9yIChpID0gMDsgaSA8IG1vZC0+c3lt dGFibm8gLSBtb2QtPmdvdHN5bTsgaSsrKQorICAgIHsKKyAgICAgIEVsZl9TeW0gKnN5bTsKKyAg ICAgIHN5bSA9IChFbGZfU3ltICopICh2b2lkICopICgoY2hhciAqKSBtb2QtPnN5bXRhYgorCQkJ CSAgKyBtb2QtPnN5bXNpemUgKiAoaSArIG1vZC0+Z290c3ltKSk7CisgICAgICBwbHRnb3RbaStt b2QtPmxvY2FsX2dvdG5vXSA9IHN5bS0+c3RfdmFsdWU7CisgICAgICBncnViX2RwcmludGYoImRs IiwgIkxvY2F0aW5nICVwWyV4XSB0byAleFxuIiwgJnBsdGdvdFtpK21vZC0+bG9jYWxfZ290bm9d LCBtb2QtPnBsdGdvdCArIChpK21vZC0+bG9jYWxfZ290bm8pICogNCwgc3ltLT5zdF92YWx1ZSk7 CisgICAgfQorCisgIHJldHVybiBHUlVCX0VSUl9OT05FOworfQorCiAvKiBDaGVjayBpZiBFSERS IGlzIGEgdmFsaWQgRUxGIGhlYWRlci4gICovCiBncnViX2Vycl90CiBncnViX2FyY2hfZGxfY2hl Y2tfaGVhZGVyICh2b2lkICplaGRyKQpAQCAtOTYsOCArMTQ0LDcgQEAgZ3J1Yl9hcmNoX2RsX2dl dF90cmFtcF9nb3Rfc2l6ZSAoY29uc3Qgdm9pZCAqZWhkciwgZ3J1Yl9zaXplX3QgKnRyYW1wLAog CiAvKiBSZWxvY2F0ZSBzeW1ib2xzLiAgKi8KIGdydWJfZXJyX3QKLWdydWJfYXJjaF9kbF9yZWxv Y2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAotCQkJICAgICAgIEVsZl9T aGRyICpzLCBncnViX2RsX3NlZ21lbnRfdCBzZWcpCitncnViX2FyY2hfZGxfcmVsb2NhdGVfc3lt Ym9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwgRWxmX1NoZHIgKnMpCiB7CiAgIGdydWJf dWludDMyX3QgZ3AwOwogICBFbGZfRWhkciAqZSA9IGVoZHI7CkBAIC0xMzAsMTEgKzE3NywxNCBA QCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhk ciwKICAgICAgIEVsZl9TeW0gKnN5bTsKICAgICAgIGdydWJfdWludDMyX3Qgc3ltX3ZhbHVlOwog Ci0gICAgICBpZiAoc2VnLT5zaXplIDwgcmVsLT5yX29mZnNldCkKLQlyZXR1cm4gZ3J1Yl9lcnJv ciAoR1JVQl9FUlJfQkFEX01PRFVMRSwKLQkJCSAgICJyZWxvYyBvZmZzZXQgaXMgb3V0IG9mIHRo ZSBzZWdtZW50Iik7CisgICAgICBpZiAoRUxGX1JfVFlQRSAocmVsLT5yX2luZm8pID09IFJfTUlQ U19OT05FKQorCWNvbnRpbnVlOwogCi0gICAgICBhZGRyID0gKGdydWJfdWludDhfdCAqKSAoKGNo YXIgKikgc2VnLT5hZGRyICsgcmVsLT5yX29mZnNldCk7CisgICAgICBpZiAobW9kLT5taW5fYWRk ciArIG1vZC0+c3ogPD0gcmVsLT5yX29mZnNldCB8fCBtb2QtPm1pbl9hZGRyID4gcmVsLT5yX29m ZnNldCkKKwlyZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwKKwkJCSAgICJy ZWxvYyBvZmZzZXQgaXMgb3V0IG9mIHRoZSBzZWdtZW50OiAleCBub3QgaW4gWyV4Li4leF0iLAor CQkJICAgcmVsLT5yX29mZnNldCwgbW9kLT5taW5fYWRkciwgbW9kLT5taW5fYWRkciArIG1vZC0+ c3opOworICAgICAgYWRkciA9ICh2b2lkICopICgoY2hhciAqKSBtb2QtPmJhc2UgKyByZWwtPnJf b2Zmc2V0IC0gbW9kLT5taW5fYWRkcik7CiAgICAgICBzeW0gPSAoRWxmX1N5bSAqKSAoKGNoYXIg KikgbW9kLT5zeW10YWIKIAkJCSArIG1vZC0+c3ltc2l6ZSAqIEVMRl9SX1NZTSAocmVsLT5yX2lu Zm8pKTsKICAgICAgIHN5bV92YWx1ZSA9IHN5bS0+c3RfdmFsdWU7CkBAIC0xNzQsNyArMjI0LDcg QEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVo ZHIsCiAJCSAgJiYgRUxGX1JfVFlQRSAocmVsMi0+cl9pbmZvKSA9PSBSX01JUFNfTE8xNikKIAkJ ewogCQkgIHZhbHVlICs9ICooZ3J1Yl9pbnQxNl90ICopCi0JCSAgICAoKGNoYXIgKikgc2VnLT5h ZGRyICsgcmVsMi0+cl9vZmZzZXQKKwkJICAgICgoKGNoYXIgKikgbW9kLT5iYXNlICsgcmVsMi0+ cl9vZmZzZXQgLSBtb2QtPm1pbl9hZGRyKQogI2lmZGVmIEdSVUJfQ1BVX1dPUkRTX0JJR0VORElB TgogCQkgICAgICsgMgogI2VuZGlmCkBAIC0xOTAsNiArMjQwLDE4IEBAIGdydWJfYXJjaF9kbF9y ZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAogI2VuZGlmCiAJICAq KGdydWJfdWludDE2X3QgKikgYWRkciArPSBzeW1fdmFsdWUgJiAweGZmZmY7CiAJICBicmVhazsK KwljYXNlIFJfTUlQU19SRUwzMjoKKwkgIGlmIChFTEZfUl9TWU0gKHJlbC0+cl9pbmZvKSA9PSAw IHx8IEVMRl9TVF9UWVBFIChzeW0tPnN0X2luZm8pID09IFNUVF9TRUNUSU9OKQorCSAgICB7CisJ ICAgICAgKihncnViX3VpbnQzMl90ICopIGFkZHIgKz0gKGdydWJfYWRkcl90KSBtb2QtPmJhc2Ug LSBtb2QtPm1pbl9hZGRyOworCSAgICAgIGlmIChzLT5zaF90eXBlID09IFNIVF9SRUxBKQorCQkq KGdydWJfdWludDMyX3QgKikgYWRkciArPSAoKEVsZl9SZWxhICopIHJlbCktPnJfYWRkZW5kOwor CSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICAqKGdydWJfdWludDMyX3QgKikgYWRkciA9 IChncnViX2FkZHJfdCkgc3ltX3ZhbHVlOworCSAgICB9CisJICBicmVhazsKIAljYXNlIFJfTUlQ U18zMjoKIAkgICooZ3J1Yl91aW50MzJfdCAqKSBhZGRyICs9IHN5bV92YWx1ZTsKIAkgIGJyZWFr OwpAQCAtMjI2LDcgKzI4OCw3IEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnVi X2RsX3QgbW9kLCB2b2lkICplaGRyLAogCQkgICAgJiYgRUxGX1JfVFlQRSAocmVsMi0+cl9pbmZv KSA9PSBSX01JUFNfTE8xNikKIAkJICB7CiAJCSAgICBzeW1fdmFsdWUgKz0gKihncnViX2ludDE2 X3QgKikKLQkJICAgICAgKChjaGFyICopIHNlZy0+YWRkciArIHJlbDItPnJfb2Zmc2V0CisJCSAg ICAgICgoKGNoYXIgKikgbW9kLT5iYXNlICsgcmVsMi0+cl9vZmZzZXQgLSBtb2QtPm1pbl9hZGRy KQogI2lmZGVmIEdSVUJfQ1BVX1dPUkRTX0JJR0VORElBTgogCQkgICAgICAgKyAyCiAjZW5kaWYK ZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL3Bvd2VycGMvZGwuYyBiL2dydWItY29yZS9rZXJu L3Bvd2VycGMvZGwuYwppbmRleCA3YjY0MThlYWIuLjAzY2NhOTNmMCAxMDA2NDQKLS0tIGEvZ3J1 Yi1jb3JlL2tlcm4vcG93ZXJwYy9kbC5jCisrKyBiL2dydWItY29yZS9rZXJuL3Bvd2VycGMvZGwu YwpAQCAtOTIsOCArOTIsNyBAQCBncnViX2FyY2hfZGxfZ2V0X3RyYW1wX2dvdF9zaXplIChjb25z dCB2b2lkICplaGRyLCBncnViX3NpemVfdCAqdHJhbXAsCiAKIC8qIFJlbG9jYXRlIHN5bWJvbHMu ICAqLwogZ3J1Yl9lcnJfdAotZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxf dCBtb2QsIHZvaWQgKmVoZHIsCi0JCQkgICAgICAgRWxmX1NoZHIgKnMsIGdydWJfZGxfc2VnbWVu dF90IHNlZykKK2dydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2 b2lkICplaGRyLCBFbGZfU2hkciAqcykKIHsKICAgRWxmX1JlbGEgKnJlbCwgKm1heDsKIApAQCAt MTA2LDExICsxMDUsMTIgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxf dCBtb2QsIHZvaWQgKmVoZHIsCiAgICAgICBFbGZfU3ltICpzeW07CiAgICAgICBncnViX3VpbnQz Ml90IHZhbHVlOwogCi0gICAgICBpZiAoc2VnLT5zaXplIDwgcmVsLT5yX29mZnNldCkKKyAgICAg IGlmIChtb2QtPm1pbl9hZGRyICsgbW9kLT5zeiA8PSByZWwtPnJfb2Zmc2V0IHx8IG1vZC0+bWlu X2FkZHIgPiByZWwtPnJfb2Zmc2V0KQogCXJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURf TU9EVUxFLAotCQkJICAgInJlbG9jIG9mZnNldCBpcyBvdXQgb2YgdGhlIHNlZ21lbnQiKTsKKwkJ CSAgICJyZWxvYyBvZmZzZXQgaXMgb3V0IG9mIHRoZSBzZWdtZW50OiAleCBub3QgaW4gWyV4Li4l eF0iLAorCQkJICAgcmVsLT5yX29mZnNldCwgbW9kLT5taW5fYWRkciwgbW9kLT5taW5fYWRkciAr IG1vZC0+c3opOwogCi0gICAgICBhZGRyID0gKEVsZl9Xb3JkICopICgoY2hhciAqKSBzZWctPmFk ZHIgKyByZWwtPnJfb2Zmc2V0KTsKKyAgICAgIGFkZHIgPSAoRWxmX1dvcmQgKikgKChjaGFyICop IG1vZC0+YmFzZSArIHJlbC0+cl9vZmZzZXQgLSBtb2QtPm1pbl9hZGRyKTsKICAgICAgIHN5bSA9 IChFbGZfU3ltICopICgoY2hhciAqKSBtb2QtPnN5bXRhYgogCQkJICsgbW9kLT5zeW1zaXplICog RUxGX1JfU1lNIChyZWwtPnJfaW5mbykpOwogCkBAIC0xNTAsMTAgKzE1MCwxNSBAQCBncnViX2Fy Y2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKIAkgICoo RWxmX0hhbGYgKikgYWRkciA9ICh2YWx1ZSArIDB4ODAwMCkgPj4gMTY7CiAJICBicmVhazsKIAor CWNhc2UgR1JVQl9FTEZfUl9QUENfSk1QX1NMT1Q6CiAJY2FzZSBHUlVCX0VMRl9SX1BQQ19BRERS MzI6CiAJICAqYWRkciA9IHZhbHVlOwogCSAgYnJlYWs7CiAKKwljYXNlIEdSVUJfRUxGX1JfUFBD X1JFTEFUSVZFOgorCSAgKmFkZHIgKz0gKGdydWJfYWRkcl90KSBtb2QtPmJhc2UgLSBtb2QtPm1p bl9hZGRyICsgcmVsLT5yX2FkZGVuZDsKKwkgIGJyZWFrOworCiAJY2FzZSBHUlVCX0VMRl9SX1BQ Q19SRUwzMjoKIAkgICphZGRyID0gdmFsdWUgLSAoRWxmX1dvcmQpIGFkZHI7CiAJICBicmVhazsK ZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL3Jpc2N2L2RsLmMgYi9ncnViLWNvcmUva2Vybi9y aXNjdi9kbC5jCmluZGV4IDg5NjY1M2JiNC4uNWIzNDNmMzQyIDEwMDY0NAotLS0gYS9ncnViLWNv cmUva2Vybi9yaXNjdi9kbC5jCisrKyBiL2dydWItY29yZS9rZXJuL3Jpc2N2L2RsLmMKQEAgLTU0 LDcgKzU0LDcgQEAgZ3J1Yl9hcmNoX2RsX2NoZWNrX2hlYWRlciAodm9pZCAqZWhkcikKIC8qIFJl bG9jYXRlIHN5bWJvbHMuICovCiBncnViX2Vycl90CiBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3lt Ym9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKLQkJCSAgICAgICBFbGZfU2hkciAqcywg Z3J1Yl9kbF9zZWdtZW50X3Qgc2VnKQorCQkJICAgICAgIEVsZl9TaGRyICpzKQogewogICBFbGZf UmVsICpyZWwsICptYXg7CiAKQEAgLTY3LDkgKzY3LDExIEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0 ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAogICAgICAgdm9pZCAqcGxhY2U7 CiAgICAgICBncnViX3NpemVfdCBzeW1fYWRkcjsKIAotICAgICAgaWYgKHJlbC0+cl9vZmZzZXQg Pj0gc2VnLT5zaXplKQorICAgICAgaWYgKG1vZC0+bWluX2FkZHIgKyBtb2QtPnN6IDw9IHJlbC0+ cl9vZmZzZXQgfHwgbW9kLT5taW5fYWRkciA+IHJlbC0+cl9vZmZzZXQpCiAJcmV0dXJuIGdydWJf ZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsCi0JCQkgICAicmVsb2Mgb2Zmc2V0IGlzIG91dCBv ZiB0aGUgc2VnbWVudCIpOworCQkJICAgInJlbG9jIG9mZnNldCBpcyBvdXQgb2YgdGhlIHNlZ21l bnQ6ICVseCBub3QgaW4gWyVseC4uJWx4XSIsCisJCQkgICAodW5zaWduZWQgbG9uZykgcmVsLT5y X29mZnNldCwgKHVuc2lnbmVkIGxvbmcpIG1vZC0+bWluX2FkZHIsCisJCQkgICAodW5zaWduZWQg bG9uZykgbW9kLT5taW5fYWRkciArIG1vZC0+c3opOwogCiAgICAgICBzeW0gPSAoRWxmX1N5bSAq KSAoKGNoYXIgKikgbW9kLT5zeW10YWIKIAkJCSArIG1vZC0+c3ltc2l6ZSAqIEVMRl9SX1NZTSAo cmVsLT5yX2luZm8pKTsKQEAgLTc4LDcgKzgwLDcgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5 bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAgICAgICBpZiAocy0+c2hfdHlwZSA9 PSBTSFRfUkVMQSkKIAlzeW1fYWRkciArPSAoKEVsZl9SZWxhICopIHJlbCktPnJfYWRkZW5kOwog Ci0gICAgICBwbGFjZSA9ICh2b2lkICopICgoZ3J1Yl9hZGRyX3QpIHNlZy0+YWRkciArIHJlbC0+ cl9vZmZzZXQpOworICAgICAgcGxhY2UgPSAodm9pZCAqKSAoKGNoYXIgKikgbW9kLT5iYXNlICsg cmVsLT5yX29mZnNldCAtIG1vZC0+bWluX2FkZHIpOwogCiAgICAgICBzd2l0Y2ggKEVMRl9SX1RZ UEUgKHJlbC0+cl9pbmZvKSkKIAl7CkBAIC0yNzAsNyArMjcyLDcgQEAgZ3J1Yl9hcmNoX2RsX3Jl bG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAKIAkJcmVsMl9vZmZz ZXQgPSByZWwyLT5yX29mZnNldDsKIAkJcmVsMl9pbmZvID0gcmVsMi0+cl9pbmZvOwotCQlyZWwy X2xvYyA9IChncnViX2FkZHJfdCkgc2VnLT5hZGRyICsgcmVsMl9vZmZzZXQ7CisJCXJlbDJfbG9j ID0gKEVsZl9BZGRyKSAoKGNoYXIgKikgbW9kLT5iYXNlICsgcmVsMl9vZmZzZXQgLSBtb2QtPm1p bl9hZGRyKTsKIAogCQlpZiAoRUxGX1JfVFlQRSAocmVsMl9pbmZvKSA9PSBSX1JJU0NWX1BDUkVM X0hJMjAKIAkJICAgICYmIHJlbDJfbG9jID09IHN5bV9hZGRyKQpAQCAtMzMwLDYgKzMzMiwxNyBA QCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhk ciwKIAogCWNhc2UgUl9SSVNDVl9SRUxBWDoKIAkgIGJyZWFrOworCisJY2FzZSBSX1JJU0NWX0pV TVBfU0xPVDoKKwkgICooZ3J1Yl9zaXplX3QgKilwbGFjZSA9IHN5bV9hZGRyOworCSAgYnJlYWs7 CisKKwljYXNlIFJfUklTQ1ZfUkVMQVRJVkU6CisJICAqKGdydWJfc2l6ZV90ICopcGxhY2UgKz0g KGdydWJfYWRkcl90KSBtb2QtPmJhc2UgLSBtb2QtPm1pbl9hZGRyOworCSAgaWYgKHMtPnNoX3R5 cGUgPT0gU0hUX1JFTEEpCisJICAgICooZ3J1Yl9zaXplX3QgKilwbGFjZSArPSAoKEVsZl9SZWxh ICopIHJlbCktPnJfYWRkZW5kOworCSAgYnJlYWs7CisKIAlkZWZhdWx0OgogCSAgewogCSAgICBj aGFyIHJlbF9pbmZvWzE3XTsgLyogbG9nMTYoMl42NCkgPSAxNiwgcGx1cyBOVUwuICovCmRpZmYg LS1naXQgYS9ncnViLWNvcmUva2Vybi9zcGFyYzY0L2RsLmMgYi9ncnViLWNvcmUva2Vybi9zcGFy YzY0L2RsLmMKaW5kZXggZjNkOTYwMTg2Li42NTcxZWRhZWEgMTAwNjQ0Ci0tLSBhL2dydWItY29y ZS9rZXJuL3NwYXJjNjQvZGwuYworKysgYi9ncnViLWNvcmUva2Vybi9zcGFyYzY0L2RsLmMKQEAg LTk3LDggKzk3LDcgQEAgZ3J1Yl9hcmNoX2RsX2dldF90cmFtcF9nb3Rfc2l6ZSAoY29uc3Qgdm9p ZCAqZWhkciwgZ3J1Yl9zaXplX3QgKnRyYW1wLAogCiAvKiBSZWxvY2F0ZSBzeW1ib2xzLiAgKi8K IGdydWJfZXJyX3QKLWdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9k LCB2b2lkICplaGRyLAotCQkJICAgICAgIEVsZl9TaGRyICpzLCBncnViX2RsX3NlZ21lbnRfdCBz ZWcpCitncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAq ZWhkciwgRWxmX1NoZHIgKnMpCiB7CiAgIEVsZl9SZWxhICpyZWwsICptYXg7CiAKQEAgLTExMSwx NyArMTEwLDIxIEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9k LCB2b2lkICplaGRyLAogICAgICAgRWxmX1N5bSAqc3ltOwogICAgICAgRWxmX0FkZHIgdmFsdWU7 CiAKLSAgICAgIGlmIChzZWctPnNpemUgPCByZWwtPnJfb2Zmc2V0KQorICAgICAgaWYgKG1vZC0+ bWluX2FkZHIgKyBtb2QtPnN6IDw9IHJlbC0+cl9vZmZzZXQgfHwgbW9kLT5taW5fYWRkciA+IHJl bC0+cl9vZmZzZXQpCiAJcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsCi0J CQkgICAicmVsb2Mgb2Zmc2V0IGlzIG91dCBvZiB0aGUgc2VnbWVudCIpOworCQkJICAgInJlbG9j IG9mZnNldCBpcyBvdXQgb2YgdGhlIHNlZ21lbnQ6ICVseCBub3QgaW4gWyVseC4uJWx4XSIsCisJ CQkgICByZWwtPnJfb2Zmc2V0LCBtb2QtPm1pbl9hZGRyLCBtb2QtPm1pbl9hZGRyICsgbW9kLT5z eik7CiAKLSAgICAgIGFkZHIgPSAoRWxmX1dvcmQgKikgKChjaGFyICopIHNlZy0+YWRkciArIHJl bC0+cl9vZmZzZXQpOworICAgICAgYWRkciA9IChFbGZfV29yZCAqKSAoKGNoYXIgKikgbW9kLT5i YXNlICsgcmVsLT5yX29mZnNldCAtIG1vZC0+bWluX2FkZHIpOwogICAgICAgc3ltID0gKEVsZl9T eW0gKikgKChjaGFyICopIG1vZC0+c3ltdGFiCiAJCQkgKyBtb2QtPnN5bXNpemUgKiBFTEZfUl9T WU0gKHJlbC0+cl9pbmZvKSk7CiAKICAgICAgIHZhbHVlID0gc3ltLT5zdF92YWx1ZSArIHJlbC0+ cl9hZGRlbmQ7CiAgICAgICBzd2l0Y2ggKEVMRl9SX1RZUEUgKHJlbC0+cl9pbmZvKSAmIDB4ZmYp CiAJeworCWNhc2UgUl9TUEFSQ19SRUxBVElWRToKKwkgICooRWxmX1h3b3JkICopIGFkZHIgKz0g KGdydWJfYWRkcl90KSBtb2QtPmJhc2UgLSBtb2QtPm1pbl9hZGRyICsgcmVsLT5yX2FkZGVuZDsK KwkgIGJyZWFrOwogCWNhc2UgUl9TUEFSQ18zMjogLyogMyBWLXdvcmQzMiAqLwogCSAgaWYgKHZh bHVlICYgMHhGRkZGRkZGRjAwMDAwMDAwKQogCSAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9F UlJfQkFEX01PRFVMRSwKQEAgLTE2Niw2ICsxNjksOCBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVf c3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKIAljYXNlIFJfU1BBUkNfTE8xMDog LyogMTIgVC1zaW1tMTMgKi8KIAkgICphZGRyID0gKCphZGRyICYgMHhGRkZGRkMwMCkgfCAodmFs dWUgJiAweDNGRik7CiAJICBicmVhazsKKwljYXNlIFJfU1BBUkNfSk1QX1NMT1Q6CisJY2FzZSBS X1NQQVJDX0dMT0JfREFUOgogCWNhc2UgUl9TUEFSQ182NDogLyogMzIgVi14d29yZHM2NCAqLwog CSAgKihFbGZfWHdvcmQgKikgYWRkciA9IHZhbHVlOwogCSAgYnJlYWs7CmRpZmYgLS1naXQgYS9n cnViLWNvcmUva2Vybi94ODZfNjQvZGwuYyBiL2dydWItY29yZS9rZXJuL3g4Nl82NC9kbC5jCmlu ZGV4IGU1YThiZGNmNC4uNWNkMDUwMzliIDEwMDY0NAotLS0gYS9ncnViLWNvcmUva2Vybi94ODZf NjQvZGwuYworKysgYi9ncnViLWNvcmUva2Vybi94ODZfNjQvZGwuYwpAQCAtNDEsNyArNDEsNyBA QCBncnViX2FyY2hfZGxfY2hlY2tfaGVhZGVyICh2b2lkICplaGRyKQogLyogUmVsb2NhdGUgc3lt Ym9scy4gICovCiBncnViX2Vycl90CiBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1 Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKLQkJCSAgICAgICBFbGZfU2hkciAqcywgZ3J1Yl9kbF9z ZWdtZW50X3Qgc2VnKQorCQkJICAgICAgIEVsZl9TaGRyICpzKQogewogICBFbGY2NF9SZWxhICpy ZWwsICptYXg7CiAKQEAgLTU0LDExICs1NCwxMiBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3lt Ym9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKICAgICAgIEVsZjY0X1h3b3JkICphZGRy NjQ7CiAgICAgICBFbGY2NF9TeW0gKnN5bTsKIAotICAgICAgaWYgKHNlZy0+c2l6ZSA8IHJlbC0+ cl9vZmZzZXQpCisgICAgICBpZiAobW9kLT5taW5fYWRkciArIG1vZC0+c3ogPD0gcmVsLT5yX29m ZnNldCB8fCBtb2QtPm1pbl9hZGRyID4gcmVsLT5yX29mZnNldCkKIAlyZXR1cm4gZ3J1Yl9lcnJv ciAoR1JVQl9FUlJfQkFEX01PRFVMRSwKLQkJCSAgICJyZWxvYyBvZmZzZXQgaXMgb3V0IG9mIHRo ZSBzZWdtZW50Iik7CisJCQkgICAicmVsb2Mgb2Zmc2V0IGlzIG91dCBvZiB0aGUgc2VnbWVudDog JWx4IG5vdCBpbiBbJWx4Li4lbHhdIiwKKwkJCSAgIHJlbC0+cl9vZmZzZXQsIG1vZC0+bWluX2Fk ZHIsIG1vZC0+bWluX2FkZHIgKyBtb2QtPnN6KTsKIAotICAgICAgYWRkcjMyID0gKEVsZjY0X1dv cmQgKikgKChjaGFyICopIHNlZy0+YWRkciArIHJlbC0+cl9vZmZzZXQpOworICAgICAgYWRkcjMy ID0gKEVsZjY0X1dvcmQgKikgKChjaGFyICopIG1vZC0+YmFzZSArIHJlbC0+cl9vZmZzZXQgLSBt b2QtPm1pbl9hZGRyKTsKICAgICAgIGFkZHI2NCA9IChFbGY2NF9Yd29yZCAqKSBhZGRyMzI7CiAg ICAgICBzeW0gPSAoRWxmNjRfU3ltICopICgoY2hhciAqKSBtb2QtPnN5bXRhYgogCQkJICAgKyBt b2QtPnN5bXNpemUgKiBFTEZfUl9TWU0gKHJlbC0+cl9pbmZvKSk7CkBAIC02Niw3ICs2NywxMyBA QCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhk ciwKICAgICAgIHN3aXRjaCAoRUxGX1JfVFlQRSAocmVsLT5yX2luZm8pKQogCXsKIAljYXNlIFJf WDg2XzY0XzY0OgotCSAgKmFkZHI2NCArPSByZWwtPnJfYWRkZW5kICsgc3ltLT5zdF92YWx1ZTsK KwljYXNlIFJfWDg2XzY0X0dMT0JfREFUOgorCWNhc2UgUl9YODZfNjRfSlVNUF9TTE9UOgorCSAg KmFkZHI2NCA9IHJlbC0+cl9hZGRlbmQgKyBzeW0tPnN0X3ZhbHVlOworCSAgYnJlYWs7CisKKwlj YXNlIFJfWDg2XzY0X1JFTEFUSVZFOgorCSAgKmFkZHI2NCA9IChncnViX2FkZHJfdCkgbW9kLT5i YXNlIC0gbW9kLT5taW5fYWRkciArIHJlbC0+cl9hZGRlbmQ7CiAJICBicmVhazsKIAogCWNhc2Ug Ul9YODZfNjRfUEMzMjoKQEAgLTc0LDcgKzgxLDcgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5 bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAJICB7CiAJICAgIGdydWJfaW50NjRf dCB2YWx1ZTsKIAkgICAgdmFsdWUgPSAoKGdydWJfaW50MzJfdCkgKmFkZHIzMikgKyByZWwtPnJf YWRkZW5kICsgc3ltLT5zdF92YWx1ZSAtCi0JICAgICAgKEVsZjY0X1h3b3JkKSAoZ3J1Yl9hZGRy X3QpIHNlZy0+YWRkciAtIHJlbC0+cl9vZmZzZXQ7CisJICAgICAgKEVsZjY0X1h3b3JkKSAoZ3J1 Yl9hZGRyX3QpIGFkZHIzMjsKIAkgICAgaWYgKHZhbHVlICE9IChncnViX2ludDMyX3QpIHZhbHVl KQogCSAgICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxFLCAicmVsb2Nh dGlvbiBvdXQgb2YgcmFuZ2UiKTsKIAkgICAgKmFkZHIzMiA9IHZhbHVlOwpAQCAtODQsNyArOTEs NyBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAq ZWhkciwKIAljYXNlIFJfWDg2XzY0X1BDNjQ6CiAJICB7CiAJICAgICphZGRyNjQgKz0gcmVsLT5y X2FkZGVuZCArIHN5bS0+c3RfdmFsdWUgLQotCSAgICAgIChFbGY2NF9Yd29yZCkgKGdydWJfYWRk cl90KSBzZWctPmFkZHIgLSByZWwtPnJfb2Zmc2V0OworCSAgICAgIChFbGY2NF9Yd29yZCkgKGdy dWJfYWRkcl90KSBhZGRyNjQ7CiAJICB9CiAJICBicmVhazsKIApkaWZmIC0tZ2l0IGEvZ3J1Yi1j b3JlL2xpYi9iYWNrdHJhY2UuYyBiL2dydWItY29yZS9saWIvYmFja3RyYWNlLmMKaW5kZXggODI1 YTg4MDBlLi4yM2Y0ZDE4YWYgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9saWIvYmFja3RyYWNlLmMK KysrIGIvZ3J1Yi1jb3JlL2xpYi9iYWNrdHJhY2UuYwpAQCAtMzMsMTMgKzMzLDEwIEBAIGdydWJf YmFja3RyYWNlX3ByaW50X2FkZHJlc3MgKHZvaWQgKmFkZHIpCiAKICAgRk9SX0RMX01PRFVMRVMg KG1vZCkKICAgewotICAgIGdydWJfZGxfc2VnbWVudF90IHNlZ21lbnQ7Ci0gICAgZm9yIChzZWdt ZW50ID0gbW9kLT5zZWdtZW50OyBzZWdtZW50OyBzZWdtZW50ID0gc2VnbWVudC0+bmV4dCkKLSAg ICAgIGlmIChzZWdtZW50LT5hZGRyIDw9IGFkZHIgJiYgKGdydWJfdWludDhfdCAqKSBzZWdtZW50 LT5hZGRyCi0JICArIHNlZ21lbnQtPnNpemUgPiAoZ3J1Yl91aW50OF90ICopIGFkZHIpCisgICAg aWYgKG1vZC0+YmFzZSA8PSBhZGRyICYmIChncnViX3VpbnQ4X3QgKikgbW9kLT5iYXNlICsgbW9k LT5zeiA+IChncnViX3VpbnQ4X3QgKikgYWRkcikKIAl7Ci0JICBncnViX3ByaW50ZiAoIiVzLiV4 KyUiIFBSSXhHUlVCX1NJWkUsIG1vZC0+bmFtZSwgc2VnbWVudC0+c2VjdGlvbiwKLQkJICAgICAg IChncnViX3NpemVfdCkgKChncnViX3VpbnQ4X3QgKikgYWRkciAtIChncnViX3VpbnQ4X3QgKikg c2VnbWVudC0+YWRkcikpOworCSAgZ3J1Yl9wcmludGYgKCIlc1sweCUiIFBSSXhHUlVCX1NJWkUg Il0iLCBtb2QtPm5hbWUsCisJCSAgICAgICAoZ3J1Yl9zaXplX3QpIChtb2QtPm1pbl9hZGRyICsg KChncnViX3VpbnQ4X3QgKikgYWRkciAtIChncnViX3VpbnQ4X3QgKikgbW9kLT5iYXNlKSkpOwog CSAgcmV0dXJuOwogCX0KICAgfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL2RsLmggYi9pbmNs dWRlL2dydWIvZGwuaAppbmRleCA4NDUwOWM1YzEuLmIzMGU5NTA2YyAxMDA2NDQKLS0tIGEvaW5j bHVkZS9ncnViL2RsLmgKKysrIGIvaW5jbHVkZS9ncnViL2RsLmgKQEAgLTQxLDEzICs0MSwxMyBA QAogI2lmICFkZWZpbmVkIChHUlVCX1VUSUwpICYmICFkZWZpbmVkIChHUlVCX01BQ0hJTkVfRU1V KSAmJiAhZGVmaW5lZCAoR1JVQl9LRVJORUwpCiAKICNkZWZpbmUgR1JVQl9NT0RfSU5JVChuYW1l KQlcCi1zdGF0aWMgdm9pZCBncnViX21vZF9pbml0IChncnViX2RsX3QgbW9kIF9fYXR0cmlidXRl X18gKCh1bnVzZWQpKSkgX19hdHRyaWJ1dGVfXyAoKHVzZWQpKTsgXAotc3RhdGljIHZvaWQgXAor dm9pZCBncnViX21vZF9pbml0IChncnViX2RsX3QgbW9kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQp KSkgX19hdHRyaWJ1dGVfXyAoKHVzZWQpKTsgXAordm9pZCBcCiBncnViX21vZF9pbml0IChncnVi X2RsX3QgbW9kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKIAogI2RlZmluZSBHUlVCX01PRF9G SU5JKG5hbWUpCVwKLXN0YXRpYyB2b2lkIGdydWJfbW9kX2ZpbmkgKHZvaWQpIF9fYXR0cmlidXRl X18gKCh1c2VkKSk7IFwKLXN0YXRpYyB2b2lkIFwKK3ZvaWQgZ3J1Yl9tb2RfZmluaSAodm9pZCkg X19hdHRyaWJ1dGVfXyAoKHVzZWQpKTsgXAordm9pZCBcCiBncnViX21vZF9maW5pICh2b2lkKQog CiAjZWxpZiBkZWZpbmVkIChHUlVCX0tFUk5FTCkKQEAgLTE1MiwxNSArMTUyLDYgQEAgc3RhdGlj IGNvbnN0IGNoYXIgZ3J1Yl9tb2R1bGVfbmFtZV8jI25hbWVbXSBcCiAKICNpZm5kZWYgQVNNX0ZJ TEUKIAotc3RydWN0IGdydWJfZGxfc2VnbWVudAotewotICBzdHJ1Y3QgZ3J1Yl9kbF9zZWdtZW50 ICpuZXh0OwotICB2b2lkICphZGRyOwotICBncnViX3NpemVfdCBzaXplOwotICB1bnNpZ25lZCBz ZWN0aW9uOwotfTsKLXR5cGVkZWYgc3RydWN0IGdydWJfZGxfc2VnbWVudCAqZ3J1Yl9kbF9zZWdt ZW50X3Q7Ci0KIHN0cnVjdCBncnViX2RsOwogCiBzdHJ1Y3QgZ3J1Yl9kbF9kZXAKQEAgLTE3Nyw3 ICsxNjgsNiBAQCBzdHJ1Y3QgZ3J1Yl9kbAogICBncnViX3VpbnQ2NF90IHJlZl9jb3VudDsKICAg aW50IHBlcnNpc3RlbnQ7CiAgIGdydWJfZGxfZGVwX3QgZGVwOwotICBncnViX2RsX3NlZ21lbnRf dCBzZWdtZW50OwogICBFbGZfU3ltICpzeW10YWI7CiAgIGdydWJfc2l6ZV90IHN5bXNpemU7CiAg IHZvaWQgKCppbml0KSAoc3RydWN0IGdydWJfZGwgKm1vZCk7CkBAIC0xOTAsOSArMTgwLDE2IEBA IHN0cnVjdCBncnViX2RsCiAjZW5kaWYKICNpZmRlZiBfX21pcHNfXwogICBncnViX3VpbnQzMl90 ICpyZWdpbmZvOworICBncnViX3VpbnQzMl90IGdvdHN5bTsKKyAgZ3J1Yl91aW50MzJfdCBsb2Nh bF9nb3RubzsKKyAgZ3J1Yl91aW50MzJfdCBzeW10YWJubzsKKyNlbmRpZgorI2lmIGRlZmluZWQg KF9fbWlwc19fKSB8fCBkZWZpbmVkKF9faWE2NF9fKQorICBncnViX3NpemVfdCBwbHRnb3Q7CiAj ZW5kaWYKICAgdm9pZCAqYmFzZTsKICAgZ3J1Yl9zaXplX3Qgc3o7CisgIGdydWJfYWRkcl90IG1p bl9hZGRyOwogICBzdHJ1Y3QgZ3J1Yl9kbCAqbmV4dDsKIH07CiAjZW5kaWYKQEAgLTI2MywxMiAr MjYwLDE0IEBAIGdydWJfZXJyX3QgZ3J1Yl9hcmNoX2RsX2NoZWNrX2hlYWRlciAodm9pZCAqZWhk cik7CiAjaWZuZGVmIEdSVUJfVVRJTAogZ3J1Yl9lcnJfdAogZ3J1Yl9hcmNoX2RsX3JlbG9jYXRl X3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCi0JCQkgICAgICAgRWxmX1NoZHIg KnMsIGdydWJfZGxfc2VnbWVudF90IHNlZyk7CisJCQkgICAgICAgRWxmX1NoZHIgKnMpOwogI2Vu ZGlmCiAKICNpZiBkZWZpbmVkIChfbWlwcykKICNkZWZpbmUgR1JVQl9MSU5LRVJfSEFWRV9JTklU IDEKIHZvaWQgZ3J1Yl9hcmNoX2RsX2luaXRfbGlua2VyICh2b2lkKTsKKworZ3J1Yl9lcnJfdCBn cnViX2FyY2hfZGxfcmVsb2NhdGVfcGx0Z290IChncnViX2RsX3QgbW9kKTsKICNlbmRpZgogCiAj ZGVmaW5lIEdSVUJfSUE2NF9ETF9UUkFNUF9BTElHTiAxNgpAQCAtMjgxLDYgKzI4MCwxMCBAQCBn cnViX2Vycl90CiBncnViX2FybTY0X2RsX2dldF90cmFtcF9nb3Rfc2l6ZSAoY29uc3Qgdm9pZCAq ZWhkciwgZ3J1Yl9zaXplX3QgKnRyYW1wLAogCQkJCSAgZ3J1Yl9zaXplX3QgKmdvdCk7CiAKKyNp ZiBkZWZpbmVkIChfX2lhNjRfXykgfHwgZGVmaW5lZCAoX19taXBzX18pCit2b2lkIGdydWJfYXJj aF9kbF9wYXJzZV9keW5hbWljIChncnViX2RsX3QgbW9kLCBFbGZfRHluICpkeW4sIGdydWJfc2l6 ZV90IHN6KTsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZCAoX19pYTY0X18pCiAjZGVmaW5lIEdSVUJf QVJDSF9ETF9UUkFNUF9BTElHTiBHUlVCX0lBNjRfRExfVFJBTVBfQUxJR04KICNkZWZpbmUgR1JV Ql9BUkNIX0RMX0dPVF9BTElHTiBHUlVCX0lBNjRfRExfR09UX0FMSUdOCmRpZmYgLS1naXQgYS9p bmNsdWRlL2dydWIvZWxmLmggYi9pbmNsdWRlL2dydWIvZWxmLmgKaW5kZXggYmQzMTNhNzBiLi5m YzkxNDg0NTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9lbGYuaAorKysgYi9pbmNsdWRlL2dy dWIvZWxmLmgKQEAgLTI1NDAsNiArMjU0MCw4IEBAIHR5cGVkZWYgRWxmMzJfQWRkciBFbGYzMl9D b25mbGljdDsKIC8qIExvb25nQXJjaCByZWxvY2F0aW9ucyAqLwogI2RlZmluZSBSX0xBUkNIX05P TkUJCQkgICAgICAwCiAjZGVmaW5lIFJfTEFSQ0hfNjQJCQkgICAgICAyCisjZGVmaW5lIFJfTEFS Q0hfUkVMQVRJVkUJCSAgICAgIDMKKyNkZWZpbmUgUl9MQVJDSF9KVU1QX1NMT1QJCSAgICAgIDUK ICNkZWZpbmUgUl9MQVJDSF9NQVJLX0xBCQkJICAgICAgMjAKICNkZWZpbmUgUl9MQVJDSF9TT1Bf UFVTSF9QQ1JFTAkJICAgICAgMjIKICNkZWZpbmUgUl9MQVJDSF9TT1BfUFVTSF9BQlNPTFVURQkg ICAgICAyMwpAQCAtMjU4MSw2ICsyNTgzLDcgQEAgdHlwZWRlZiBFbGYzMl9BZGRyIEVsZl9BZGRy OwogdHlwZWRlZiBFbGYzMl9OaGRyIEVsZl9OaGRyOwogdHlwZWRlZiBFbGYzMl9FaGRyIEVsZl9F aGRyOwogdHlwZWRlZiBFbGYzMl9QaGRyIEVsZl9QaGRyOwordHlwZWRlZiBFbGYzMl9EeW4gRWxm X0R5bjsKIHR5cGVkZWYgRWxmMzJfSGFsZiBFbGZfSGFsZjsKIHR5cGVkZWYgRWxmMzJfT2ZmIEVs Zl9PZmY7CiB0eXBlZGVmIEVsZjMyX1JlbCBFbGZfUmVsOwpAQCAtMjYxMSw2ICsyNjE0LDcgQEAg dHlwZWRlZiBFbGY2NF9BZGRyIEVsZl9BZGRyOwogdHlwZWRlZiBFbGY2NF9OaGRyIEVsZl9OaGRy OwogdHlwZWRlZiBFbGY2NF9FaGRyIEVsZl9FaGRyOwogdHlwZWRlZiBFbGY2NF9QaGRyIEVsZl9Q aGRyOwordHlwZWRlZiBFbGY2NF9EeW4gRWxmX0R5bjsKIHR5cGVkZWYgRWxmNjRfSGFsZiBFbGZf SGFsZjsKIHR5cGVkZWYgRWxmNjRfT2ZmIEVsZl9PZmY7CiB0eXBlZGVmIEVsZjY0X1JlbCBFbGZf UmVsOwpkaWZmIC0tZ2l0IGEvdXRpbC9ncnViLW1raW1hZ2V4eC5jIGIvdXRpbC9ncnViLW1raW1h Z2V4eC5jCmluZGV4IDQ0ODg2MmIyZS4uOTdlODM2NzFhIDEwMDY0NAotLS0gYS91dGlsL2dydWIt bWtpbWFnZXh4LmMKKysrIGIvdXRpbC9ncnViLW1raW1hZ2V4eC5jCkBAIC0xNDEwLDggKzE0MTAs MTAgQEAgU1VGRklYIChyZWxvY2F0ZV9hZGRycykgKEVsZl9FaGRyICplLCBzdHJ1Y3Qgc2VjdGlv bl9tZXRhZGF0YSAqc21kLAogCQkgICAgIHsKIAkJICAgICAgIGdydWJfdWludDMyX3QgaGkyMCwg bG8xMjsKIAorI2lmIGRlZmluZWQoTUtJTUFHRV9FTEY2NCkKIAkJICAgICAgIGlmIChvZmYgIT0g KGdydWJfaW50MzJfdClvZmYpCiAJCQkgZ3J1Yl91dGlsX2Vycm9yICgidGFyZ2V0ICVseCBub3Qg cmVhY2hhYmxlIGZyb20gcGM9JWx4IiwgKGxvbmcpc3ltX2FkZHIsIChsb25nKSgoY2hhciAqKXRh cmdldCAtIChjaGFyICopZSkpOworI2VuZGlmCiAKIAkJICAgICAgIGhpMjAgPSAob2ZmICsgMHg4 MDApICYgMHhmZmZmZjAwMDsKIAkJICAgICAgIGxvMTIgPSAob2ZmIC0gaGkyMCkgJiAweGZmZjsK ZGlmZiAtLWdpdCBhL3V0aWwvZ3J1Yi1tb2R1bGUtdmVyaWZpZXIuYyBiL3V0aWwvZ3J1Yi1tb2R1 bGUtdmVyaWZpZXIuYwppbmRleCA5MWQ5ZThmODguLjgwMmFhODg5OSAxMDA2NDQKLS0tIGEvdXRp bC9ncnViLW1vZHVsZS12ZXJpZmllci5jCisrKyBiL3V0aWwvZ3J1Yi1tb2R1bGUtdmVyaWZpZXIu YwpAQCAtMTAsMTEgKzEwLDE3IEBAIHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoIGFy Y2hzW10gPSB7CiAgIHsgImkzODYiLCA0LCAwLCBFTV8zODYsIEdSVUJfTU9EVUxFX1ZFUklGWV9T VVBQT1JUU19SRUwsIChpbnRbXSl7CiAgICAgICBSXzM4Nl8zMiwKICAgICAgIFJfMzg2X1BDMzIs CisgICAgICBSXzM4Nl9SRUxBVElWRSwKKyAgICAgIFJfMzg2X0pNUF9TTE9ULAorICAgICAgUl8z ODZfR0xPQl9EQVQsCiAgICAgICAtMQogICAgIH0gfSwKICAgeyAieDg2XzY0IiwgOCwgMCwgRU1f WDg2XzY0LCBHUlVCX01PRFVMRV9WRVJJRllfU1VQUE9SVFNfUkVMQSwgKGludFtdKXsKICAgICAg IFJfWDg2XzY0XzY0LAogICAgICAgUl9YODZfNjRfUEM2NCwKKyAgICAgIFJfWDg2XzY0X1JFTEFU SVZFLAorICAgICAgUl9YODZfNjRfR0xPQl9EQVQsCisgICAgICBSX1g4Nl82NF9KVU1QX1NMT1Qs CiAgICAgICAvKiBSX1g4Nl82NF8zMiwgUl9YODZfNjRfMzJTIGFyZSBzdXBwb3J0ZWQgYnV0IHNo b3VsZG4ndCBiZSB1c2VkIGJlY2F1c2Ugb2YgdGhlaXIgbGltaXRlZCByYW5nZS4gICovCiAgICAg ICAtMQogICAgIH0sIChpbnRbXSl7CkBAIC0zMCw2ICszNiw4IEBAIHN0cnVjdCBncnViX21vZHVs ZV92ZXJpZmllcl9hcmNoIGFyY2hzW10gPSB7CiAgICAgICBHUlVCX0VMRl9SX1BQQ19BRERSMzIs CiAgICAgICBHUlVCX0VMRl9SX1BQQ19SRUwzMiwKICAgICAgIEdSVUJfRUxGX1JfUFBDX1BMVFJF TDI0LAorICAgICAgR1JVQl9FTEZfUl9QUENfUkVMQVRJVkUsCisgICAgICBHUlVCX0VMRl9SX1BQ Q19KTVBfU0xPVCwKICAgICAgIC0xCiAgICAgfSB9LAogICB7ICJzcGFyYzY0IiwgOCwgMSwgRU1f U1BBUkNWOSwgR1JVQl9NT0RVTEVfVkVSSUZZX1NVUFBPUlRTX1JFTEEsIChpbnRbXSl7CkBAIC00 Niw2ICs1NCw5IEBAIHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoIGFyY2hzW10gPSB7 CiAJIHVzdWFsbHkuICovCiAgICAgICBSX1NQQVJDX0hJMjIsCiAgICAgICBSX1NQQVJDXzMyLAor ICAgICAgUl9TUEFSQ19SRUxBVElWRSwKKyAgICAgIFJfU1BBUkNfR0xPQl9EQVQsCisgICAgICBS X1NQQVJDX0pNUF9TTE9ULAogICAgICAgLTEKICAgICB9IH0sCiAgIHsgImlhNjQiLCA4LCAwLCBF TV9JQV82NCwgR1JVQl9NT0RVTEVfVkVSSUZZX1NVUFBPUlRTX1JFTEEsIChpbnRbXSl7CkBAIC01 Niw3ICs2Nyw2IEBAIHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoIGFyY2hzW10gPSB7 CiAJCQkgIGZvciBhbnl0aGluZyBlbHNlLCBzbyBhc3N1bWUgdGhhdCBpdCBhbHdheXMgcG9pbnRz IHRvIGEKIAkJCSAgZnVuY3Rpb24uCiAJCSAgICAgICAqLwotICAgICAgUl9JQTY0X1NFR1JFTDY0 TFNCLAogICAgICAgUl9JQTY0X0ZQVFI2NExTQiwKICAgICAgIFJfSUE2NF9ESVI2NExTQiwKICAg ICAgIFJfSUE2NF9QQ1JFTDY0TFNCLApAQCAtNjUsMTIgKzc1LDE2IEBAIHN0cnVjdCBncnViX21v ZHVsZV92ZXJpZmllcl9hcmNoIGFyY2hzW10gPSB7CiAgICAgICBSX0lBNjRfR1BSRUw2NEksCiAg ICAgICBSX0lBNjRfTFRPRkZfRlBUUjIyLAogICAgICAgUl9JQTY0X0xEWE1PViwKKyAgICAgIFJf SUE2NF9JUExUTFNCLAorICAgICAgUl9JQTY0X1JFTDY0TFNCLAogICAgICAgLTEKICAgICB9LCAo aW50W10pewogICAgICAgUl9JQTY0X0dQUkVMMjIsCiAgICAgICAtMQogICAgIH0gfSwKICAgeyAi bWlwc2VsIiwgNCwgMCwgRU1fTUlQUywgR1JVQl9NT0RVTEVfVkVSSUZZX1NVUFBPUlRTX1JFTCB8 IEdSVUJfTU9EVUxFX1ZFUklGWV9TVVBQT1JUU19SRUxBLCAoaW50W10peworICAgICAgUl9NSVBT X05PTkUsCisgICAgICBSX01JUFNfUkVMMzIsCiAgICAgICBSX01JUFNfSEkxNiwKICAgICAgIFJf TUlQU19MTzE2LAogICAgICAgUl9NSVBTXzMyLApAQCAtODIsNiArOTYsOCBAQCBzdHJ1Y3QgZ3J1 Yl9tb2R1bGVfdmVyaWZpZXJfYXJjaCBhcmNoc1tdID0gewogICAgICAgLTEKICAgICB9IH0sCiAg IHsgIm1pcHMiLCA0LCAxLCBFTV9NSVBTLCBHUlVCX01PRFVMRV9WRVJJRllfU1VQUE9SVFNfUkVM IHwgR1JVQl9NT0RVTEVfVkVSSUZZX1NVUFBPUlRTX1JFTEEsIChpbnRbXSl7CisgICAgICBSX01J UFNfTk9ORSwKKyAgICAgIFJfTUlQU19SRUwzMiwKICAgICAgIFJfTUlQU19ISTE2LAogICAgICAg Ul9NSVBTX0xPMTYsCiAgICAgICBSX01JUFNfMzIsCkBAIC0xMDMsNiArMTE5LDkgQEAgc3RydWN0 IGdydWJfbW9kdWxlX3ZlcmlmaWVyX2FyY2ggYXJjaHNbXSA9IHsKICAgICAgIFJfQVJNX1RITV9N T1ZXX0FCU19OQywKICAgICAgIFJfQVJNX1RITV9NT1ZUX0FCUywKICAgICAgIFJfQVJNX1RITV9K VU1QMTksCisgICAgICBSX0FSTV9SRUxBVElWRSwKKyAgICAgIFJfQVJNX0pVTVBfU0xPVCwKKyAg ICAgIFJfQVJNX0dMT0JfREFULAogICAgICAgLTEKICAgICB9IH0sCiAgIHsgImFybTY0IiwgOCwg MCwgRU1fQUFSQ0g2NCwgR1JVQl9NT0RVTEVfVkVSSUZZX1NVUFBPUlRTX1JFTCB8IEdSVUJfTU9E VUxFX1ZFUklGWV9TVVBQT1JUU19SRUxBLCAoaW50W10pewpAQCAtMTExLDYgKzEzMCw5IEBAIHN0 cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoIGFyY2hzW10gPSB7CiAgICAgICBSX0FBUkNI NjRfSlVNUDI2LAogICAgICAgUl9BQVJDSDY0X0FEUl9HT1RfUEFHRSwKICAgICAgIFJfQUFSQ0g2 NF9MRDY0X0dPVF9MTzEyX05DLAorICAgICAgUl9BQVJDSDY0X1JFTEFUSVZFLAorICAgICAgUl9B QVJDSDY0X0pVTVBfU0xPVCwKKyAgICAgIFJfQUFSQ0g2NF9HTE9CX0RBVCwKICAgICAgIC0xCiAg ICAgfSwgKGludFtdKXsKICAgICAgIFJfQUFSQ0g2NF9BRFJfUFJFTF9QR19ISTIxLApAQCAtMTIy LDYgKzE0NCw4IEBAIHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoIGFyY2hzW10gPSB7 CiAgIHsgImxvb25nYXJjaDY0IiwgOCwgMCwgRU1fTE9PTkdBUkNILCBHUlVCX01PRFVMRV9WRVJJ RllfU1VQUE9SVFNfUkVMIHwgR1JVQl9NT0RVTEVfVkVSSUZZX1NVUFBPUlRTX1JFTEEsIChpbnRb XSl7CiAgICAgICBSX0xBUkNIX05PTkUsCiAgICAgICBSX0xBUkNIXzY0LAorICAgICAgUl9MQVJD SF9SRUxBVElWRSwKKyAgICAgIFJfTEFSQ0hfSlVNUF9TTE9ULAogICAgICAgUl9MQVJDSF9NQVJL X0xBLAogICAgICAgUl9MQVJDSF9TT1BfUFVTSF9QQ1JFTCwKICAgICAgIFJfTEFSQ0hfU09QX1BV U0hfQUJTT0xVVEUsCkBAIC0xNzgsNiArMjAyLDggQEAgc3RydWN0IGdydWJfbW9kdWxlX3Zlcmlm aWVyX2FyY2ggYXJjaHNbXSA9IHsKICAgICAgIFJfUklTQ1ZfUkVMQVgsCiAgICAgICBSX1JJU0NW X1JWQ19CUkFOQ0gsCiAgICAgICBSX1JJU0NWX1JWQ19KVU1QLAorICAgICAgUl9SSVNDVl9SRUxB VElWRSwKKyAgICAgIFJfUklTQ1ZfSlVNUF9TTE9ULAogICAgICAgLTEKICAgICB9IH0sCiAgIHsg InJpc2N2NjQiLCA4LCAwLCBFTV9SSVNDViwgR1JVQl9NT0RVTEVfVkVSSUZZX1NVUFBPUlRTX1JF TCB8IEdSVUJfTU9EVUxFX1ZFUklGWV9TVVBQT1JUU19SRUxBLCAoaW50W10pewpAQCAtMjA2LDYg KzIzMiw4IEBAIHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoIGFyY2hzW10gPSB7CiAg ICAgICBSX1JJU0NWX1JFTEFYLAogICAgICAgUl9SSVNDVl9SVkNfQlJBTkNILAogICAgICAgUl9S SVNDVl9SVkNfSlVNUCwKKyAgICAgIFJfUklTQ1ZfUkVMQVRJVkUsCisgICAgICBSX1JJU0NWX0pV TVBfU0xPVCwKICAgICAgIC0xCiAgICAgfQogICB9LApkaWZmIC0tZ2l0IGEvdXRpbC9ncnViLW1v ZHVsZS12ZXJpZmllclhYLmMgYi91dGlsL2dydWItbW9kdWxlLXZlcmlmaWVyWFguYwppbmRleCBh NDJjMjBiZDEuLjM3MjRmNjk2ZSAxMDA2NDQKLS0tIGEvdXRpbC9ncnViLW1vZHVsZS12ZXJpZmll clhYLmMKKysrIGIvdXRpbC9ncnViLW1vZHVsZS12ZXJpZmllclhYLmMKQEAgLTE2Myw2ICsxNjMs MTYgQEAgZ2V0X3NoZHIgKGNvbnN0IHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoICph cmNoLCBFbGZfRWhkciAqZSwgRWxmX1dvcmQgaW4KICAgcmV0dXJuIHM7CiB9CiAKK3N0YXRpYyBF bGZfUGhkciAqCitnZXRfcGhkciAoY29uc3Qgc3RydWN0IGdydWJfbW9kdWxlX3ZlcmlmaWVyX2Fy Y2ggKmFyY2gsIEVsZl9FaGRyICplLCBFbGZfV29yZCBpbmRleCkKK3sKKyAgaWYgKGdydWJfdGFy Z2V0X3RvX2hvc3QgKGUtPmVfcGhvZmYpID09IDApCisgICAgZ3J1Yl91dGlsX2Vycm9yICgiSW52 YWxpZCBwcm9ncmFtIGhlYWRlciBvZmZzZXQiKTsKKworICByZXR1cm4gKEVsZl9QaGRyICopICgo Y2hhciAqKSBlICsgZ3J1Yl90YXJnZXRfdG9faG9zdCAoZS0+ZV9waG9mZikgKworCQkgICAgaW5k ZXggKiBncnViX3RhcmdldF90b19ob3N0MTYgKGUtPmVfcGhlbnRzaXplKSk7Cit9CisKIHN0YXRp YyBFbGZfU2hudW0KIGdldF9zaG51bSAoY29uc3Qgc3RydWN0IGdydWJfbW9kdWxlX3ZlcmlmaWVy X2FyY2ggKmFyY2gsIEVsZl9FaGRyICplKQogewpAQCAtMjUyLDcgKzI2Miw3IEBAIGdldF9zeW10 YWIgKGNvbnN0IHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoICphcmNoLCBFbGZfRWhk ciAqZSwgRWxmX1dvcmQKICAgICB7CiAgICAgICBzID0gZ2V0X3NoZHIgKGFyY2gsIGUsIGksIG1v ZHVsZV9zaXplKTsKIAotICAgICAgaWYgKGdydWJfdGFyZ2V0X3RvX2hvc3QzMiAocy0+c2hfdHlw ZSkgPT0gU0hUX1NZTVRBQikKKyAgICAgIGlmIChncnViX3RhcmdldF90b19ob3N0MzIgKHMtPnNo X3R5cGUpID09IFNIVF9EWU5TWU0pCiAJYnJlYWs7CiAgICAgfQogCkBAIC0zNTcsNyArMzY3LDgg QEAgaXNfc3ltYm9sX2xvY2FsKEVsZl9TeW0gKnN5bSkKIHN0YXRpYyB2b2lkCiBzZWN0aW9uX2No ZWNrX3JlbG9jYXRpb25zIChjb25zdCBjaGFyICogY29uc3QgbW9kbmFtZSwKIAkJCSAgIGNvbnN0 IHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoICphcmNoLCB2b2lkICplaGRyLAotCQkJ ICAgRWxmX1NoZHIgKnMsIHNpemVfdCB0YXJnZXRfc2VnX3NpemUsIHNpemVfdCBtb2R1bGVfc2l6 ZSkKKwkJCSAgIEVsZl9TaGRyICpzLCBzaXplX3QgbW9kdWxlX3NpemUsCisJCQkgICBncnViX3Vp bnQ2NF90IG1pbl9hZGRyLCBncnViX3VpbnQ2NF90IG1heF9hZGRyKQogewogICBFbGZfUmVsICpy ZWwsICptYXg7CiAgIEVsZl9TeW0gKnN5bXRhYjsKQEAgLTM3NCwxMSArMzg1LDE2IEBAIHNlY3Rp b25fY2hlY2tfcmVsb2NhdGlvbnMgKGNvbnN0IGNoYXIgKiBjb25zdCBtb2RuYW1lLAogICAgIHsK ICAgICAgIEVsZl9TeW0gKnN5bTsKICAgICAgIHVuc2lnbmVkIGk7CisgICAgICBncnViX3VpbnQz Ml90IHR5cGUgPSBFTEZfUl9UWVBFIChncnViX3RhcmdldF90b19ob3N0IChyZWwtPnJfaW5mbykp OwogCi0gICAgICBpZiAodGFyZ2V0X3NlZ19zaXplIDwgZ3J1Yl90YXJnZXRfdG9faG9zdCAocmVs LT5yX29mZnNldCkpCi0JZ3J1Yl91dGlsX2Vycm9yICgiJXM6IHJlbG9jIG9mZnNldCBpcyBvdXQg b2YgdGhlIHNlZ21lbnQiLCBtb2RuYW1lKTsKKyAgICAgIGlmICh0eXBlID09IDApCisJY29udGlu dWU7CiAKLSAgICAgIGdydWJfdWludDMyX3QgdHlwZSA9IEVMRl9SX1RZUEUgKGdydWJfdGFyZ2V0 X3RvX2hvc3QgKHJlbC0+cl9pbmZvKSk7CisgICAgICBpZiAoZ3J1Yl90YXJnZXRfdG9faG9zdCAo cmVsLT5yX29mZnNldCkgPCBtaW5fYWRkciB8fCBncnViX3RhcmdldF90b19ob3N0IChyZWwtPnJf b2Zmc2V0KSA+PSBtYXhfYWRkcikKKwlncnViX3V0aWxfZXJyb3IgKCIlczogcmVsb2Mgb2Zmc2V0 IGlzIG91dCBvZiB0aGUgc2VnbWVudDogJWxseCBub3QgaW4gJWxseC0lbGx4IiwKKwkJCSBtb2Ru YW1lLAorCQkJIChsb25nIGxvbmcpIGdydWJfdGFyZ2V0X3RvX2hvc3QgKHJlbC0+cl9vZmZzZXQp LAorCQkJIChsb25nIGxvbmcpIG1pbl9hZGRyLCAobG9uZyBsb25nKSBtYXhfYWRkcik7CiAKICAg ICAgIGlmIChhcmNoLT5tYWNoaW5lID09IEVNX1NQQVJDVjkpCiAJdHlwZSAmPSAweGZmOwpAQCAt NDM5LDcgKzQ1NSw3IEBAIHNlY3Rpb25fY2hlY2tfcmVsb2NhdGlvbnMgKGNvbnN0IGNoYXIgKiBj b25zdCBtb2RuYW1lLAogCiBzdGF0aWMgdm9pZAogY2hlY2tfcmVsb2NhdGlvbnMgKGNvbnN0IGNo YXIgKiBjb25zdCBtb2RuYW1lLAotCQkgICBjb25zdCBzdHJ1Y3QgZ3J1Yl9tb2R1bGVfdmVyaWZp ZXJfYXJjaCAqYXJjaCwgRWxmX0VoZHIgKmUsIHNpemVfdCBtb2R1bGVfc2l6ZSkKKwkJICAgY29u c3Qgc3RydWN0IGdydWJfbW9kdWxlX3ZlcmlmaWVyX2FyY2ggKmFyY2gsIEVsZl9FaGRyICplLCBz aXplX3QgbW9kdWxlX3NpemUsIGdydWJfdWludDY0X3QgbWluX2FkZHIsIGdydWJfdWludDY0X3Qg bWF4X2FkZHIpCiB7CiAgIEVsZl9TaGRyICpzOwogICB1bnNpZ25lZCBpOwpAQCAtNDU3LDEyICs0 NzMsNyBAQCBjaGVja19yZWxvY2F0aW9ucyAoY29uc3QgY2hhciAqIGNvbnN0IG1vZG5hbWUsCiAJ ICBpZiAoZ3J1Yl90YXJnZXRfdG9faG9zdDMyIChzLT5zaF90eXBlKSA9PSBTSFRfUkVMQSAmJiAh KGFyY2gtPmZsYWdzICYgR1JVQl9NT0RVTEVfVkVSSUZZX1NVUFBPUlRTX1JFTEEpKQogCSAgICBn cnViX3V0aWxfZXJyb3IgKCIlczogdW5zdXBwb3J0ZWQgU0hUX1JFTEEiLCBtb2RuYW1lKTsKIAot CSAgLyogRmluZCB0aGUgdGFyZ2V0IHNlZ21lbnQuICovCi0JICBpZiAoZ3J1Yl90YXJnZXRfdG9f aG9zdDMyIChzLT5zaF9pbmZvKSA+PSBnZXRfc2hudW0gKGFyY2gsIGUpKQotCSAgICBncnViX3V0 aWxfZXJyb3IgKCIlczogb3JwaGFuZWQgcmVsb2Mgc2VjdGlvbiIsIG1vZG5hbWUpOwotCSAgdHMg PSBnZXRfc2hkciAoYXJjaCwgZSwgZ3J1Yl90YXJnZXRfdG9faG9zdDMyIChzLT5zaF9pbmZvKSwg bW9kdWxlX3NpemUpOwotCi0JICBzZWN0aW9uX2NoZWNrX3JlbG9jYXRpb25zIChtb2RuYW1lLCBh cmNoLCBlLCBzLCBncnViX3RhcmdldF90b19ob3N0ICh0cy0+c2hfc2l6ZSksIG1vZHVsZV9zaXpl KTsKKwkgIHNlY3Rpb25fY2hlY2tfcmVsb2NhdGlvbnMgKG1vZG5hbWUsIGFyY2gsIGUsIHMsIG1v ZHVsZV9zaXplLCBtaW5fYWRkciwgbWF4X2FkZHIpOwogCX0KICAgICB9CiB9CkBAIC00OTMsMTQg KzUwNCwxNCBAQCBTVUZGSVgoZ3J1Yl9tb2R1bGVfdmVyaWZ5KSAoY29uc3QgY2hhciAqIGNvbnN0 IGZpbGVuYW1lLAogICAgICAgfHwgZ3J1Yl90YXJnZXRfdG9faG9zdDE2IChlLT5lX21hY2hpbmUp ICE9IGFyY2gtPm1hY2hpbmUpCiAgICAgZ3J1Yl91dGlsX2Vycm9yICgiJXM6IGludmFsaWQgYXJj aC1kZXBlbmRlbnQgRUxGIG1hZ2ljIiwgZmlsZW5hbWUpOwogCi0gIGlmIChncnViX3RhcmdldF90 b19ob3N0MTYgKGUtPmVfdHlwZSkgIT0gRVRfUkVMKQorICBpZiAoZ3J1Yl90YXJnZXRfdG9faG9z dDE2IChlLT5lX3R5cGUpICE9IEVUX0RZTikKICAgICB7CiAgICAgICBncnViX3V0aWxfZXJyb3Ig KCIlczogdGhpcyBFTEYgZmlsZSBpcyBub3Qgb2YgdGhlIHJpZ2h0IHR5cGUiLCBmaWxlbmFtZSk7 CiAgICAgfQogCiAgIC8qIE1ha2Ugc3VyZSB0aGF0IGV2ZXJ5IHNlY3Rpb24gaXMgd2l0aGluIHRo ZSBjb3JlLiAgKi8KLSAgaWYgKHNpemUgPCBncnViX3RhcmdldF90b19ob3N0IChlLT5lX3Nob2Zm KQotICAgICAgKyAoZ3J1Yl91aW50MzJfdCkgZ3J1Yl90YXJnZXRfdG9faG9zdDE2IChlLT5lX3No ZW50c2l6ZSkgKiBnZXRfc2hudW0gKGFyY2gsIGUpKQorICBpZiAoc2l6ZSA8IGdydWJfdGFyZ2V0 X3RvX2hvc3QgKGUtPmVfcGhvZmYpCisgICAgICArIChncnViX3VpbnQzMl90KSBncnViX3Rhcmdl dF90b19ob3N0MTYgKGUtPmVfcGhlbnRzaXplKSAqIGdydWJfdGFyZ2V0X3RvX2hvc3QxNiAoZS0+ ZV9waG51bSkpCiAgICAgewogICAgICAgZ3J1Yl91dGlsX2Vycm9yICgiJXM6IEVMRiBzZWN0aW9u cyBvdXRzaWRlIGNvcmUiLCBmaWxlbmFtZSk7CiAgICAgfQpAQCAtNTE2LDYgKzUyNywxOSBAQCBT VUZGSVgoZ3J1Yl9tb2R1bGVfdmVyaWZ5KSAoY29uc3QgY2hhciAqIGNvbnN0IGZpbGVuYW1lLAog CiAgIG1vZG5hbWUgPSAoY29uc3QgY2hhciAqKSBlICsgZ3J1Yl90YXJnZXRfdG9faG9zdCAocy0+ c2hfb2Zmc2V0KTsKIAorICB1bnNpZ25lZCBpOworICBncnViX3VpbnQ2NF90IG1pbl9hZGRyID0g fihncnViX3VpbnQ2NF90KTA7CisgIGdydWJfdWludDY0X3QgbWF4X2FkZHIgPSAwOworCisgIGZv ciAoaSA9IDA7IGkgPCBncnViX3RhcmdldF90b19ob3N0MTYgKGUtPmVfcGhudW0pOyBpKyspCisg ICAgeworICAgICAgRWxmX1BoZHIgKnAgPSBnZXRfcGhkciAoYXJjaCwgZSwgaSk7CisKKyAgICAg IG1pbl9hZGRyID0gZ3J1Yl9taW4obWluX2FkZHIsIGdydWJfdGFyZ2V0X3RvX2hvc3QocC0+cF92 YWRkcikpOworICAgICAgbWF4X2FkZHIgPSBncnViX21heChtYXhfYWRkciwgZ3J1Yl90YXJnZXRf dG9faG9zdChwLT5wX3ZhZGRyKSArIGdydWJfdGFyZ2V0X3RvX2hvc3QocC0+cF9tZW1zeikpOwor ICAgIH0KKworCiAgIGNoZWNrX3N5bWJvbHMoYXJjaCwgZSwgbW9kbmFtZSwgd2hpdGVsaXN0X2Vt cHR5LCBzaXplKTsKLSAgY2hlY2tfcmVsb2NhdGlvbnMobW9kbmFtZSwgYXJjaCwgZSwgc2l6ZSk7 CisgIGNoZWNrX3JlbG9jYXRpb25zKG1vZG5hbWUsIGFyY2gsIGUsIHNpemUsIG1pbl9hZGRyLCBt YXhfYWRkcik7CiB9Ci0tIAoyLjQ5LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpHcnViLWRldmVsIG1haWxpbmcgbGlzdApHcnViLWRldmVsQGdudS5v cmcKaHR0cHM6Ly9saXN0cy5nbnUub3JnL21haWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZlbAo=