From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 25D1B1FF389 for ; Tue, 7 May 2024 17:02:28 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 1F420111FC; Tue, 7 May 2024 17:02:30 +0200 (CEST) From: Stoiko Ivanov To: pve-devel@lists.proxmox.com Date: Tue, 7 May 2024 17:02:09 +0200 Message-Id: <20240507150210.1391522-2-s.ivanov@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240507150210.1391522-1-s.ivanov@proxmox.com> References: <20240507150210.1391522-1-s.ivanov@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.049 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_LOTSOFHASH 0.25 Emails with lots of hash-like gibberish SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record X-Mailman-Approved-At: Tue, 07 May 2024 17:02:29 +0200 Subject: [pve-devel] [PATCH zfsonlinux v2 1/2] update zfs submodule to 2.2.4 and refresh patches X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" bW9zdGx5IC0gZHJvcCBhbGwgcGF0Y2hlcyB3ZSBoYWQgcXVldWVkIHVwIHRvIGdldCBrZXJuZWwg Ni44CnN1cHBvcnRlZC4KClNpZ25lZC1vZmYtYnk6IFN0b2lrbyBJdmFub3YgPHMuaXZhbm92QHBy b3htb3guY29tPgotLS0KIC4uLm1kLXVuaXQtZm9yLWltcG9ydGluZy1zcGVjaWZpYy1wb29scy5w YXRjaCB8ICAgNCArLQogLi4uLW1vdmUtbWFucGFnZS1hcmNzdGF0LTEtdG8tYXJjc3RhdC04LnBh dGNoIHwgICAyICstCiAuLi4tZ3VhcmQtYWNjZXNzLXRvLWwyYXJjLU1GVS1NUlUtc3RhdHMucGF0 Y2ggfCAgMTIgKy0KIC4uLmh0ZW4tYm91bmRzLWZvci1ub2FsbG9jLXN0YXQtYXZhaWxhYi5wYXRj aCB8ICAgNCArLQogLi4ucmVjdGx5LWhhbmRsZS1wYXJ0aXRpb24tMTYtYW5kLWxhdGVyLnBhdGNo IHwgIDUyIC0tCiAuLi4tdXNlLXNwbGljZV9jb3B5X2ZpbGVfcmFuZ2UtZm9yLWZhbGwucGF0Y2gg fCAxMzUgLS0tLQogLi4uLzAwMTQtbGludXgtNS40LWNvbXBhdC1wYWdlX3NpemUucGF0Y2ggICAg IHwgMTIxIC0tLS0KIC4uLi9wYXRjaGVzLzAwMTUtYWJkLWFkZC1wYWdlLWl0ZXJhdG9yLnBhdGNo ICB8IDMzNCAtLS0tLS0tLS0KIC4uLi1leGlzdGluZy1mdW5jdGlvbnMtdG8tdmRldl9jbGFzc2lj Xy5wYXRjaCB8IDM0OSAtLS0tLS0tLS0KIC4uLnZfZGlzay1yZW9yZ2FuaXNlLXZkZXZfZGlza19p b19zdGFydC5wYXRjaCB8IDExMSAtLS0KIC4uLi1yZWFkLXdyaXRlLUlPLWZ1bmN0aW9uLWNvbmZp Z3VyYWJsZS5wYXRjaCB8ICA2OSAtLQogLi4uZS1CSU8tZmlsbGluZy1tYWNoaW5lcnktdG8tYXZv aWQtc3BsLnBhdGNoIHwgNjcxIC0tLS0tLS0tLS0tLS0tLS0tLQogLi4uZHVsZS1wYXJhbWV0ZXIt dG8tc2VsZWN0LUJJTy1zdWJtaXNzLnBhdGNoIHwgMTA0IC0tLQogLi4uc2UtYmlvX2NoYWluLXRv LXN1Ym1pdC1tdWx0aXBsZS1CSU9zLnBhdGNoIHwgMzYzIC0tLS0tLS0tLS0KIC4uLm9uLXQtdXNl LWNvbXBvdW5kLWhlYWRzLW9uLUxpbnV4LTQuNS5wYXRjaCB8ICA5NiAtLS0KIC4uLmF1bHQtdG8t Y2xhc3NpYy1zdWJtaXNzaW9uLWZvci0yLjIueC5wYXRjaCB8ICA5MCAtLS0KIC4uLmlvbi1jYXVz ZWQtYnktbW1hcC1mbHVzaGluZy1wcm9ibGVtcy5wYXRjaCB8IDEwNCAtLS0KIC4uLnRvdWNoLXZi aW8tYWZ0ZXItaXRzLWhhbmRlZC1vZmYtdG8tdC5wYXRjaCB8ICA1NyAtLQogZGViaWFuL3BhdGNo ZXMvc2VyaWVzICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE0IC0KIHVwc3RyZWFtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogMjAgZmlsZXMgY2hhbmdl ZCwgMTIgaW5zZXJ0aW9ucygrKSwgMjY4MiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBkZWJpYW4vcGF0Y2hlcy8wMDEyLXVkZXYtY29ycmVjdGx5LWhhbmRsZS1wYXJ0aXRpb24tMTYt YW5kLWxhdGVyLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgZGViaWFuL3BhdGNoZXMvMDAxMy1M aW51eC02LjgtY29tcGF0LXVzZS1zcGxpY2VfY29weV9maWxlX3JhbmdlLWZvci1mYWxsLnBhdGNo CiBkZWxldGUgbW9kZSAxMDA2NDQgZGViaWFuL3BhdGNoZXMvMDAxNC1saW51eC01LjQtY29tcGF0 LXBhZ2Vfc2l6ZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGRlYmlhbi9wYXRjaGVzLzAwMTUt YWJkLWFkZC1wYWdlLWl0ZXJhdG9yLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgZGViaWFuL3Bh dGNoZXMvMDAxNi12ZGV2X2Rpc2stcmVuYW1lLWV4aXN0aW5nLWZ1bmN0aW9ucy10by12ZGV2X2Ns YXNzaWNfLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgZGViaWFuL3BhdGNoZXMvMDAxNy12ZGV2 X2Rpc2stcmVvcmdhbmlzZS12ZGV2X2Rpc2tfaW9fc3RhcnQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEw MDY0NCBkZWJpYW4vcGF0Y2hlcy8wMDE4LXZkZXZfZGlzay1tYWtlLXJlYWQtd3JpdGUtSU8tZnVu Y3Rpb24tY29uZmlndXJhYmxlLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgZGViaWFuL3BhdGNo ZXMvMDAxOS12ZGV2X2Rpc2stcmV3cml0ZS1CSU8tZmlsbGluZy1tYWNoaW5lcnktdG8tYXZvaWQt c3BsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgZGViaWFuL3BhdGNoZXMvMDAyMC12ZGV2X2Rp c2stYWRkLW1vZHVsZS1wYXJhbWV0ZXItdG8tc2VsZWN0LUJJTy1zdWJtaXNzLnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgZGViaWFuL3BhdGNoZXMvMDAyMS12ZGV2X2Rpc2stdXNlLWJpb19jaGFp bi10by1zdWJtaXQtbXVsdGlwbGUtQklPcy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGRlYmlh bi9wYXRjaGVzLzAwMjItYWJkX2l0ZXJfcGFnZS1kb24tdC11c2UtY29tcG91bmQtaGVhZHMtb24t TGludXgtNC41LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgZGViaWFuL3BhdGNoZXMvMDAyMy12 ZGV2X2Rpc2stZGVmYXVsdC10by1jbGFzc2ljLXN1Ym1pc3Npb24tZm9yLTIuMi54LnBhdGNoCiBk ZWxldGUgbW9kZSAxMDA2NDQgZGViaWFuL3BhdGNoZXMvMDAyNC1GaXgtY29ycnVwdGlvbi1jYXVz ZWQtYnktbW1hcC1mbHVzaGluZy1wcm9ibGVtcy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGRl Ymlhbi9wYXRjaGVzLzAwMjUtdmRldl9kaXNrLWRvbi10LXRvdWNoLXZiaW8tYWZ0ZXItaXRzLWhh bmRlZC1vZmYtdG8tdC5wYXRjaAoKZGlmZiAtLWdpdCBhL2RlYmlhbi9wYXRjaGVzLzAwMDctQWRk LXN5c3RlbWQtdW5pdC1mb3ItaW1wb3J0aW5nLXNwZWNpZmljLXBvb2xzLnBhdGNoIGIvZGViaWFu L3BhdGNoZXMvMDAwNy1BZGQtc3lzdGVtZC11bml0LWZvci1pbXBvcnRpbmctc3BlY2lmaWMtcG9v bHMucGF0Y2gKaW5kZXggODIzMjk3OGMuLjA2MDAyOTZmIDEwMDY0NAotLS0gYS9kZWJpYW4vcGF0 Y2hlcy8wMDA3LUFkZC1zeXN0ZW1kLXVuaXQtZm9yLWltcG9ydGluZy1zcGVjaWZpYy1wb29scy5w YXRjaAorKysgYi9kZWJpYW4vcGF0Y2hlcy8wMDA3LUFkZC1zeXN0ZW1kLXVuaXQtZm9yLWltcG9y dGluZy1zcGVjaWZpYy1wb29scy5wYXRjaApAQCAtMTgsNyArMTgsNyBAQCBTaWduZWQtb2ZmLWJ5 OiBUaG9tYXMgTGFtcHJlY2h0IDx0LmxhbXByZWNodEBwcm94bW94LmNvbT4KIC0tLQogIGV0Yy9N YWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIGV0Yy9zeXN0ZW1k L3N5c3RlbS81MC16ZnMucHJlc2V0ICAgICAgICAgIHwgIDEgKwotIGV0Yy9zeXN0ZW1kL3N5c3Rl bS96ZnMtaW1wb3J0QC5zZXJ2aWNlLmluIHwgMTggKysrKysrKysrKysrKysrKworIGV0Yy9zeXN0 ZW1kL3N5c3RlbS96ZnMtaW1wb3J0QC5zZXJ2aWNlLmluIHwgMTggKysrKysrKysrKysrKysrKysr CiAgMyBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspCiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGV0Yy9zeXN0ZW1kL3N5c3RlbS96ZnMtaW1wb3J0QC5zZXJ2aWNlLmluCiAKQEAgLTQ4LDcgKzQ4 LDcgQEAgaW5kZXggZTQwNTZhOTJjLi4wMzA2MTE0MTkgMTAwNjQ0CiAgZW5hYmxlIHpmcy1zaGFy ZS5zZXJ2aWNlCiBkaWZmIC0tZ2l0IGEvZXRjL3N5c3RlbWQvc3lzdGVtL3pmcy1pbXBvcnRALnNl cnZpY2UuaW4gYi9ldGMvc3lzdGVtZC9zeXN0ZW0vemZzLWltcG9ydEAuc2VydmljZS5pbgogbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uOWI0ZWU5MzcxCitpbmRleCAwMDAw MDAwMDAuLjViZDE5ZmI3OQogLS0tIC9kZXYvbnVsbAogKysrIGIvZXRjL3N5c3RlbWQvc3lzdGVt L3pmcy1pbXBvcnRALnNlcnZpY2UuaW4KIEBAIC0wLDAgKzEsMTggQEAKZGlmZiAtLWdpdCBhL2Rl Ymlhbi9wYXRjaGVzLzAwMDgtUGF0Y2gtbW92ZS1tYW5wYWdlLWFyY3N0YXQtMS10by1hcmNzdGF0 LTgucGF0Y2ggYi9kZWJpYW4vcGF0Y2hlcy8wMDA4LVBhdGNoLW1vdmUtbWFucGFnZS1hcmNzdGF0 LTEtdG8tYXJjc3RhdC04LnBhdGNoCmluZGV4IGMxMWMxYWU4Li45YTRhZWE1NiAxMDA2NDQKLS0t IGEvZGViaWFuL3BhdGNoZXMvMDAwOC1QYXRjaC1tb3ZlLW1hbnBhZ2UtYXJjc3RhdC0xLXRvLWFy Y3N0YXQtOC5wYXRjaAorKysgYi9kZWJpYW4vcGF0Y2hlcy8wMDA4LVBhdGNoLW1vdmUtbWFucGFn ZS1hcmNzdGF0LTEtdG8tYXJjc3RhdC04LnBhdGNoCkBAIC0xNSw3ICsxNSw3IEBAIFNpZ25lZC1v ZmYtYnk6IFRob21hcyBMYW1wcmVjaHQgPHQubGFtcHJlY2h0QHByb3htb3guY29tPgogIHJlbmFt ZSBtYW4ve21hbjEvYXJjc3RhdC4xID0+IG1hbjgvYXJjc3RhdC44fSAoOTklKQogCiBkaWZmIC0t Z2l0IGEvbWFuL01ha2VmaWxlLmFtIGIvbWFuL01ha2VmaWxlLmFtCi1pbmRleCA0NTE1NjU3MWUu LjM3MTNlOTM3MSAxMDA2NDQKK2luZGV4IDQzYmIwMTRkZC4uYTkyOTM0NjhhIDEwMDY0NAogLS0t IGEvbWFuL01ha2VmaWxlLmFtCiArKysgYi9tYW4vTWFrZWZpbGUuYW0KIEBAIC0yLDcgKzIsNiBA QCBkaXN0X25vaW5zdF9tYW5fTUFOUyA9IFwKZGlmZiAtLWdpdCBhL2RlYmlhbi9wYXRjaGVzLzAw MDktYXJjLXN0YXQtc3VtbWFyeS1ndWFyZC1hY2Nlc3MtdG8tbDJhcmMtTUZVLU1SVS1zdGF0cy5w YXRjaCBiL2RlYmlhbi9wYXRjaGVzLzAwMDktYXJjLXN0YXQtc3VtbWFyeS1ndWFyZC1hY2Nlc3Mt dG8tbDJhcmMtTUZVLU1SVS1zdGF0cy5wYXRjaAppbmRleCBmOGNiMzUzOS4uMmU3YzIwN2QgMTAw NjQ0Ci0tLSBhL2RlYmlhbi9wYXRjaGVzLzAwMDktYXJjLXN0YXQtc3VtbWFyeS1ndWFyZC1hY2Nl c3MtdG8tbDJhcmMtTUZVLU1SVS1zdGF0cy5wYXRjaAorKysgYi9kZWJpYW4vcGF0Y2hlcy8wMDA5 LWFyYy1zdGF0LXN1bW1hcnktZ3VhcmQtYWNjZXNzLXRvLWwyYXJjLU1GVS1NUlUtc3RhdHMucGF0 Y2gKQEAgLTI3LDcgKzI3LDcgQEAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIExhbXByZWNodCA8dC5s YW1wcmVjaHRAcHJveG1veC5jb20+CiAgMiBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCsp LCAyMSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NtZC9hcmNfc3VtbWFyeSBiL2NtZC9h cmNfc3VtbWFyeQotaW5kZXggOWM2OWVjNGY4Li5lZGY5NGVhMmEgMTAwNzU1CitpbmRleCAxMDBm YjE5ODcuLjg2YjIyNjBhMSAxMDA3NTUKIC0tLSBhL2NtZC9hcmNfc3VtbWFyeQogKysrIGIvY21k L2FyY19zdW1tYXJ5CiBAQCAtNjU1LDEzICs2NTUsMTMgQEAgZGVmIHNlY3Rpb25fYXJjKGtzdGF0 c19kaWN0KToKQEAgLTQ4LDcgKzQ4LDcgQEAgaW5kZXggOWM2OWVjNGY4Li5lZGY5NGVhMmEgMTAw NzU1CiAgICAgIHBydF9pMSgnTDIgaW5lbGlnaWJsZSBldmljdGlvbnM6JywKICAgICAgICAgICAg IGZfYnl0ZXMoYXJjX3N0YXRzWydldmljdF9sMl9pbmVsaWdpYmxlJ10pKQogICAgICBwcmludCgp Ci1AQCAtODUxLDIwICs4NTEsMjAgQEAgZGVmIHNlY3Rpb25fbDJhcmMoa3N0YXRzX2RpY3QpOgor QEAgLTg2MCwyMCArODYwLDIwIEBAIGRlZiBzZWN0aW9uX2wyYXJjKGtzdGF0c19kaWN0KToKICAg ICAgICAgICAgIGZfcGVyYyhhcmNfc3RhdHNbJ2wyX2hkcl9zaXplJ10sIGFyY19zdGF0c1snbDJf c2l6ZSddKSwKICAgICAgICAgICAgIGZfYnl0ZXMoYXJjX3N0YXRzWydsMl9oZHJfc2l6ZSddKSkK ICAgICAgcHJ0X2kyKCdNRlUgYWxsb2NhdGVkIHNpemU6JywKQEAgLTgwLDEwICs4MCwxMCBAQCBp bmRleCA5YzY5ZWM0ZjguLmVkZjk0ZWEyYSAxMDA3NTUKICAgICAgcHJpbnQoKQogICAgICBwcnRf MSgnTDJBUkMgYnJlYWtkb3duOicsIGZfaGl0cyhsMl9hY2Nlc3NfdG90YWwpKQogZGlmZiAtLWdp dCBhL2NtZC9hcmNzdGF0LmluIGIvY21kL2FyY3N0YXQuaW4KLWluZGV4IDhkZjFjNjJmNy4uODMz MzQ4ZDBlIDEwMDc1NQoraW5kZXggYzRmMTBhMWQ2Li5jNTcwZGNhODggMTAwNzU1CiAtLS0gYS9j bWQvYXJjc3RhdC5pbgogKysrIGIvY21kL2FyY3N0YXQuaW4KLUBAIC01NjUsOCArNTY1LDggQEAg ZGVmIGNhbGN1bGF0ZSgpOgorQEAgLTU5Nyw4ICs1OTcsOCBAQCBkZWYgY2FsY3VsYXRlKCk6CiAg ICAgIHZbImVsMnNraXAiXSA9IGRbImV2aWN0X2wyX3NraXAiXSAvLyBzaW50CiAgICAgIHZbImVs MmNhY2giXSA9IGRbImV2aWN0X2wyX2NhY2hlZCJdIC8vIHNpbnQKICAgICAgdlsiZWwyZWwiXSA9 IGRbImV2aWN0X2wyX2VsaWdpYmxlIl0gLy8gc2ludApAQCAtOTMsOCArOTMsOCBAQCBpbmRleCA4 ZGYxYzYyZjcuLjgzMzM0OGQwZSAxMDA3NTUKICsgICAgdlsiZWwybXJ1Il0gPSBkLmdldCgiZXZp Y3RfbDJfZWxpZ2libGVfbXJ1IiwgMCkgLy8gc2ludAogICAgICB2WyJlbDJpbmVsIl0gPSBkWyJl dmljdF9sMl9pbmVsaWdpYmxlIl0gLy8gc2ludAogICAgICB2WyJtdHhtaXMiXSA9IGRbIm11dGV4 X21pc3MiXSAvLyBzaW50Ci0gCi1AQCAtNTgxLDExICs1ODEsMTEgQEAgZGVmIGNhbGN1bGF0ZSgp OgorICAgICB2WyJ6dG90YWwiXSA9IChkWyJ6ZmV0Y2hfaGl0cyJdICsgZFsiemZldGNoX2Z1dHVy ZSJdICsgZFsiemZldGNoX3N0cmlkZSJdICsKK0BAIC02MjQsMTEgKzYyNCwxMSBAQCBkZWYgY2Fs Y3VsYXRlKCk6CiAgICAgICAgICB2WyJsMnNpemUiXSA9IGN1clsibDJfc2l6ZSJdCiAgICAgICAg ICB2WyJsMmJ5dGVzIl0gPSBkWyJsMl9yZWFkX2J5dGVzIl0gLy8gc2ludAogIApkaWZmIC0tZ2l0 IGEvZGViaWFuL3BhdGNoZXMvMDAxMS16cG9vbC1zdGF0dXMtdGlnaHRlbi1ib3VuZHMtZm9yLW5v YWxsb2Mtc3RhdC1hdmFpbGFiLnBhdGNoIGIvZGViaWFuL3BhdGNoZXMvMDAxMS16cG9vbC1zdGF0 dXMtdGlnaHRlbi1ib3VuZHMtZm9yLW5vYWxsb2Mtc3RhdC1hdmFpbGFiLnBhdGNoCmluZGV4IDNj ODdiMGNiLi4yOWM3ZjlhYiAxMDA2NDQKLS0tIGEvZGViaWFuL3BhdGNoZXMvMDAxMS16cG9vbC1z dGF0dXMtdGlnaHRlbi1ib3VuZHMtZm9yLW5vYWxsb2Mtc3RhdC1hdmFpbGFiLnBhdGNoCisrKyBi L2RlYmlhbi9wYXRjaGVzLzAwMTEtenBvb2wtc3RhdHVzLXRpZ2h0ZW4tYm91bmRzLWZvci1ub2Fs bG9jLXN0YXQtYXZhaWxhYi5wYXRjaApAQCAtNTEsMTAgKzUxLDEwIEBAIFNpZ25lZC1vZmYtYnk6 IFRob21hcyBMYW1wcmVjaHQgPHQubGFtcHJlY2h0QHByb3htb3guY29tPgogIDEgZmlsZSBjaGFu Z2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2NtZC96 cG9vbC96cG9vbF9tYWluLmMgYi9jbWQvenBvb2wvenBvb2xfbWFpbi5jCi1pbmRleCA2OWJmOTY0 OWEuLmZkNDJjZTdjMSAxMDA2NDQKK2luZGV4IGVkMGI4ZDdhMS4uZjNhY2M0OWQwIDEwMDY0NAog LS0tIGEvY21kL3pwb29sL3pwb29sX21haW4uYwogKysrIGIvY21kL3pwb29sL3pwb29sX21haW4u YwotQEAgLTI2MTYsNyArMjYxNiw4IEBAIHByaW50X3N0YXR1c19jb25maWcoenBvb2xfaGFuZGxl X3QgKnpocCwgc3RhdHVzX2NiZGF0YV90ICpjYiwgY29uc3QgY2hhciAqbmFtZSwKK0BAIC0yNjYz LDcgKzI2NjMsOCBAQCBwcmludF9zdGF0dXNfY29uZmlnKHpwb29sX2hhbmRsZV90ICp6aHAsIHN0 YXR1c19jYmRhdGFfdCAqY2IsIGNvbnN0IGNoYXIgKm5hbWUsCiAgCiAgCWlmICh2cy0+dnNfc2Nh bl9yZW1vdmluZyAhPSAwKSB7CiAgCQkodm9pZCkgcHJpbnRmKGdldHRleHQoIiAgKHJlbW92aW5n KSIpKTsKZGlmZiAtLWdpdCBhL2RlYmlhbi9wYXRjaGVzLzAwMTItdWRldi1jb3JyZWN0bHktaGFu ZGxlLXBhcnRpdGlvbi0xNi1hbmQtbGF0ZXIucGF0Y2ggYi9kZWJpYW4vcGF0Y2hlcy8wMDEyLXVk ZXYtY29ycmVjdGx5LWhhbmRsZS1wYXJ0aXRpb24tMTYtYW5kLWxhdGVyLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzhiNzRiZC4uMDAwMDAwMDAKLS0tIGEvZGViaWFuL3Bh dGNoZXMvMDAxMi11ZGV2LWNvcnJlY3RseS1oYW5kbGUtcGFydGl0aW9uLTE2LWFuZC1sYXRlci5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206 ID0/VVRGLTg/cT9GYWJpYW49MjBHcj1DMz1CQ25iaWNobGVyPz0gPGYuZ3J1ZW5iaWNobGVyQHBy b3htb3guY29tPgotRGF0ZTogV2VkLCA2IE1hciAyMDI0IDEwOjM5OjA2ICswMTAwCi1TdWJqZWN0 OiBbUEFUQ0hdIHVkZXY6IGNvcnJlY3RseSBoYW5kbGUgcGFydGl0aW9uICMxNiBhbmQgbGF0ZXIK LU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRG LTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotSWYgYSB6dm9sIGhhcyBtb3Jl IHRoYW4gMTUgcGFydGl0aW9ucywgdGhlIG1pbm9yIGRldmljZSBudW1iZXIgZXhoYXVzdHMKLXRo ZSBzbG90IGNvdW50IHJlc2VydmVkIGZvciBwYXJ0aXRpb25zIG5leHQgdG8gdGhlIHp2b2wgaXRz ZWxmLiBBcyBhCi1yZXN1bHQsIHRoZSBtaW5vciBudW1iZXIgY2Fubm90IGJlIHVzZWQgdG8gZGV0 ZXJtaW5lIHRoZSBwYXJ0aXRpb24KLW51bWJlciBmb3IgdGhlIGhpZ2hlciBwYXJ0aXRpb24sIGFu ZCBkb2luZyBzbyByZXN1bHRzIGluIHdyb25nIG5hbWVkCi1zeW1saW5rcyBiZWluZyBnZW5lcmF0 ZWQgYnkgdWRldi4KLQotU2luY2UgdGhlIHBhcnRpdGlvbiBudW1iZXIgaXMgZW5jb2RlZCBpbiB0 aGUgYmxvY2sgZGV2aWNlIG5hbWUgYW55d2F5LAotbGV0J3MganVzdCBleHRyYWN0IGl0IGZyb20g dGhlcmUgaW5zdGVhZC4KLQotRml4ZXM6ICMxNTkwNAotCi1TaWduZWQtb2ZmLWJ5OiBGYWJpYW4g R3LDvG5iaWNobGVyIDxmLmdydWVuYmljaGxlckBwcm94bW94LmNvbT4KLVNpZ25lZC1vZmYtYnk6 IFN0b2lrbyBJdmFub3YgPHMuaXZhbm92QHByb3htb3guY29tPgotLS0tCi0gdWRldi96dm9sX2lk LmMgfCA5ICsrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVs ZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS91ZGV2L3p2b2xfaWQuYyBiL3VkZXYvenZvbF9pZC5j Ci1pbmRleCA1OTYwYjk3ODcuLjYwOTM0OTU5NCAxMDA2NDQKLS0tLSBhL3VkZXYvenZvbF9pZC5j Ci0rKysgYi91ZGV2L3p2b2xfaWQuYwotQEAgLTUxLDcgKzUxLDcgQEAgY29uc3QgY2hhciAqX19h c2FuX2RlZmF1bHRfb3B0aW9ucyh2b2lkKSB7Ci0gaW50Ci0gbWFpbihpbnQgYXJnYywgY29uc3Qg Y2hhciAqY29uc3QgKmFyZ3YpCi0gewotLQlpZiAoYXJnYyAhPSAyKSB7Ci0rCWlmIChhcmdjICE9 IDIgfHwgc3RybmNtcChhcmd2WzFdLCAiL2Rldi96ZCIsIDcpICE9IDApIHsKLSAJCWZwcmludGYo c3RkZXJyLCAidXNhZ2U6ICVzIC9kZXYvemRYXG4iLCBhcmd2WzBdKTsKLSAJCXJldHVybiAoMSk7 Ci0gCX0KLUBAIC03Miw5ICs3MiwxMCBAQCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICpjb25z dCAqYXJndikKLSAJCXJldHVybiAoMSk7Ci0gCX0KLSAKLS0JdW5zaWduZWQgaW50IGRldl9wYXJ0 ID0gbWlub3Ioc2Iuc3RfcmRldikgJSBaVk9MX01JTk9SUzsKLS0JaWYgKGRldl9wYXJ0ICE9IDAp Ci0tCQlzcHJpbnRmKHp2b2xfbmFtZSArIHN0cmxlbih6dm9sX25hbWUpLCAiLXBhcnQldSIsIGRl dl9wYXJ0KTsKLSsJY29uc3QgY2hhciAqZGV2X3BhcnQgPSBzdHJyY2hyKGRldl9uYW1lLCAncCcp OwotKwlpZiAoZGV2X3BhcnQgIT0gTlVMTCkgewotKwkJc3ByaW50Zih6dm9sX25hbWUgKyBzdHJs ZW4oenZvbF9uYW1lKSwgIi1wYXJ0JXMiLCBkZXZfcGFydCArIDEpOwotKwl9Ci0gCi0gCWZvciAo c2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHp2b2xfbmFtZSk7ICsraSkKLSAJCWlmIChpc2JsYW5r KHp2b2xfbmFtZVtpXSkpCmRpZmYgLS1naXQgYS9kZWJpYW4vcGF0Y2hlcy8wMDEzLUxpbnV4LTYu OC1jb21wYXQtdXNlLXNwbGljZV9jb3B5X2ZpbGVfcmFuZ2UtZm9yLWZhbGwucGF0Y2ggYi9kZWJp YW4vcGF0Y2hlcy8wMDEzLUxpbnV4LTYuOC1jb21wYXQtdXNlLXNwbGljZV9jb3B5X2ZpbGVfcmFu Z2UtZm9yLWZhbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MGQ3N2M5 Li4wMDAwMDAwMAotLS0gYS9kZWJpYW4vcGF0Y2hlcy8wMDEzLUxpbnV4LTYuOC1jb21wYXQtdXNl LXNwbGljZV9jb3B5X2ZpbGVfcmFuZ2UtZm9yLWZhbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwxMzUgKzAsMCBAQAotRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iIE4gPHJvYm5AZGVzcGFpcmxh YnMuY29tPgotRGF0ZTogVGh1LCAyMSBNYXIgMjAyNCAxMDo0NjoxNSArMTEwMAotU3ViamVjdDog W1BBVENIXSBMaW51eCA2LjggY29tcGF0OiB1c2Ugc3BsaWNlX2NvcHlfZmlsZV9yYW5nZSgpIGZv ciBmYWxsYmFjawotCi1MaW51eCA2LjggcmVtb3ZlcyBnZW5lcmljX2NvcHlfZmlsZV9yYW5nZSgp LCB3aGljaCBoYWQgYmVlbiByZWR1Y2VkIHRvIGEKLXNpbXBsZSB3cmFwcGVyIGFyb3VuZCBzcGxp Y2VfY29weV9maWxlX3JhbmdlKCkuIERldGVjdCB0aGF0IGZ1bmN0aW9uCi1kaXJlY3RseSBhbmQg dXNlIGl0IGlmIGdlbmVyaWNfIGlzIG5vdCBhdmFpbGFibGUuCi0KLVNwb25zb3JlZC1ieTogaHR0 cHM6Ly9kZXNwYWlybGFicy5jb20vc3BvbnNvci8KLVJldmlld2VkLWJ5OiBUb255IEh1dHRlciA8 aHV0dGVyMkBsbG5sLmdvdj4KLVJldmlld2VkIGJ5OiBCcmlhbiBCZWhsZW5kb3JmIDxiZWhsZW5k b3JmMUBsbG5sLmdvdj4KLVNpZ25lZC1vZmYtYnk6IFJvYiBOb3JyaXMgPHJvYm5AZGVzcGFpcmxh YnMuY29tPgotQ2xvc2VzICMxNTkzMAotQ2xvc2VzICMxNTkzMQotKGNoZXJyeSBwaWNrZWQgZnJv bSBjb21taXQgZWYwOGE0ZDQwNjVkMjE0MTRkN2ZlZGNjYWMyMGRhNmJmZGE0ZGZkMCkKLS0tLQot IGNvbmZpZy9rZXJuZWwtdmZzLWZpbGVfcmFuZ2UubTQgICAgICB8IDI3ICsrKysrKysrKysrKysr KysrKysrKysrKysrKwotIGNvbmZpZy9rZXJuZWwubTQgICAgICAgICAgICAgICAgICAgICB8ICAy ICsrCi0gbW9kdWxlL29zL2xpbnV4L3pmcy96cGxfZmlsZV9yYW5nZS5jIHwgMTYgKysrKysrKysr KysrKystLQotIDMgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZy9rZXJuZWwtdmZzLWZpbGVfcmFuZ2UubTQgYi9jb25m aWcva2VybmVsLXZmcy1maWxlX3JhbmdlLm00Ci1pbmRleCBjYzk2NDA0ZDguLjhhNWNiZTJlZSAx MDA2NDQKLS0tLSBhL2NvbmZpZy9rZXJuZWwtdmZzLWZpbGVfcmFuZ2UubTQKLSsrKyBiL2NvbmZp Zy9rZXJuZWwtdmZzLWZpbGVfcmFuZ2UubTQKLUBAIC0xNiw2ICsxNiw5IEBAIGRubCAjCi0gZG5s ICMgNS4zOiBWRlMgY29weV9maWxlX3JhbmdlKCkgZXhwZWN0ZWQgdG8gZG8gaXRzIG93biBmYWxs YmFjaywKLSBkbmwgIyAgICAgIGdlbmVyaWNfY29weV9maWxlX3JhbmdlKCkgYWRkZWQgdG8gc3Vw cG9ydCBpdAotIGRubCAjCi0rZG5sICMgNi44OiBnZW5lcmljX2NvcHlfZmlsZV9yYW5nZSgpIHJl bW92ZWQsIHJlcGxhY2VkIGJ5Ci0rZG5sICMgICAgICBzcGxpY2VfY29weV9maWxlX3JhbmdlKCkK LStkbmwgIwotIEFDX0RFRlVOKFtaRlNfQUNfS0VSTkVMX1NSQ19WRlNfQ09QWV9GSUxFX1JBTkdF XSwgWwotIAlaRlNfTElOVVhfVEVTVF9TUkMoW3Zmc19jb3B5X2ZpbGVfcmFuZ2VdLCBbCi0gCQkj aW5jbHVkZSA8bGludXgvZnMuaD4KLUBAIC03Miw2ICs3NSwzMCBAQCBBQ19ERUZVTihbWkZTX0FD X0tFUk5FTF9WRlNfR0VORVJJQ19DT1BZX0ZJTEVfUkFOR0VdLCBbCi0gCV0pCi0gXSkKLSAKLStB Q19ERUZVTihbWkZTX0FDX0tFUk5FTF9TUkNfVkZTX1NQTElDRV9DT1BZX0ZJTEVfUkFOR0VdLCBb Ci0rCVpGU19MSU5VWF9URVNUX1NSQyhbc3BsaWNlX2NvcHlfZmlsZV9yYW5nZV0sIFsKLSsJCSNp bmNsdWRlIDxsaW51eC9zcGxpY2UuaD4KLSsJXSwgWwotKwkJc3RydWN0IGZpbGUgKnNyY19maWxl IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSA9IE5VTEw7Ci0rCQlsb2ZmX3Qgc3JjX29mZiBfX2F0 dHJpYnV0ZV9fICgodW51c2VkKSkgPSAwOwotKwkJc3RydWN0IGZpbGUgKmRzdF9maWxlIF9fYXR0 cmlidXRlX18gKCh1bnVzZWQpKSA9IE5VTEw7Ci0rCQlsb2ZmX3QgZHN0X29mZiBfX2F0dHJpYnV0 ZV9fICgodW51c2VkKSkgPSAwOwotKwkJc2l6ZV90IGxlbiBfX2F0dHJpYnV0ZV9fICgodW51c2Vk KSkgPSAwOwotKwkJc3BsaWNlX2NvcHlfZmlsZV9yYW5nZShzcmNfZmlsZSwgc3JjX29mZiwgZHN0 X2ZpbGUsIGRzdF9vZmYsCi0rCQkgICAgbGVuKTsKLSsJXSkKLStdKQotK0FDX0RFRlVOKFtaRlNf QUNfS0VSTkVMX1ZGU19TUExJQ0VfQ09QWV9GSUxFX1JBTkdFXSwgWwotKwlBQ19NU0dfQ0hFQ0tJ TkcoW3doZXRoZXIgc3BsaWNlX2NvcHlfZmlsZV9yYW5nZSgpIGlzIGF2YWlsYWJsZV0pCi0rCVpG U19MSU5VWF9URVNUX1JFU1VMVChbc3BsaWNlX2NvcHlfZmlsZV9yYW5nZV0sIFsKLSsJCUFDX01T R19SRVNVTFQoeWVzKQotKwkJQUNfREVGSU5FKEhBVkVfVkZTX1NQTElDRV9DT1BZX0ZJTEVfUkFO R0UsIDEsCi0rCQkgICAgW3NwbGljZV9jb3B5X2ZpbGVfcmFuZ2UoKSBpcyBhdmFpbGFibGVdKQot KwldLFsKLSsJCUFDX01TR19SRVNVTFQobm8pCi0rCV0pCi0rXSkKLSsKLSBBQ19ERUZVTihbWkZT X0FDX0tFUk5FTF9TUkNfVkZTX0NMT05FX0ZJTEVfUkFOR0VdLCBbCi0gCVpGU19MSU5VWF9URVNU X1NSQyhbdmZzX2Nsb25lX2ZpbGVfcmFuZ2VdLCBbCi0gCQkjaW5jbHVkZSA8bGludXgvZnMuaD4K LWRpZmYgLS1naXQgYS9jb25maWcva2VybmVsLm00IGIvY29uZmlnL2tlcm5lbC5tNAotaW5kZXgg ZTNmODY0NTc3Li4xZDBjNWEyN2YgMTAwNjQ0Ci0tLS0gYS9jb25maWcva2VybmVsLm00Ci0rKysg Yi9jb25maWcva2VybmVsLm00Ci1AQCAtMTE4LDYgKzExOCw3IEBAIEFDX0RFRlVOKFtaRlNfQUNf S0VSTkVMX1RFU1RfU1JDXSwgWwotIAlaRlNfQUNfS0VSTkVMX1NSQ19WRlNfSU9WX0lURVIKLSAJ WkZTX0FDX0tFUk5FTF9TUkNfVkZTX0NPUFlfRklMRV9SQU5HRQotIAlaRlNfQUNfS0VSTkVMX1NS Q19WRlNfR0VORVJJQ19DT1BZX0ZJTEVfUkFOR0UKLSsJWkZTX0FDX0tFUk5FTF9TUkNfVkZTX1NQ TElDRV9DT1BZX0ZJTEVfUkFOR0UKLSAJWkZTX0FDX0tFUk5FTF9TUkNfVkZTX1JFTUFQX0ZJTEVf UkFOR0UKLSAJWkZTX0FDX0tFUk5FTF9TUkNfVkZTX0NMT05FX0ZJTEVfUkFOR0UKLSAJWkZTX0FD X0tFUk5FTF9TUkNfVkZTX0RFRFVQRV9GSUxFX1JBTkdFCi1AQCAtMjY2LDYgKzI2Nyw3IEBAIEFD X0RFRlVOKFtaRlNfQUNfS0VSTkVMX1RFU1RfUkVTVUxUXSwgWwotIAlaRlNfQUNfS0VSTkVMX1ZG U19JT1ZfSVRFUgotIAlaRlNfQUNfS0VSTkVMX1ZGU19DT1BZX0ZJTEVfUkFOR0UKLSAJWkZTX0FD X0tFUk5FTF9WRlNfR0VORVJJQ19DT1BZX0ZJTEVfUkFOR0UKLSsJWkZTX0FDX0tFUk5FTF9WRlNf U1BMSUNFX0NPUFlfRklMRV9SQU5HRQotIAlaRlNfQUNfS0VSTkVMX1ZGU19SRU1BUF9GSUxFX1JB TkdFCi0gCVpGU19BQ19LRVJORUxfVkZTX0NMT05FX0ZJTEVfUkFOR0UKLSAJWkZTX0FDX0tFUk5F TF9WRlNfREVEVVBFX0ZJTEVfUkFOR0UKLWRpZmYgLS1naXQgYS9tb2R1bGUvb3MvbGludXgvemZz L3pwbF9maWxlX3JhbmdlLmMgYi9tb2R1bGUvb3MvbGludXgvemZzL3pwbF9maWxlX3JhbmdlLmMK LWluZGV4IDMwNjVkNTRmYS4uNjQ3MjhmZGIxIDEwMDY0NAotLS0tIGEvbW9kdWxlL29zL2xpbnV4 L3pmcy96cGxfZmlsZV9yYW5nZS5jCi0rKysgYi9tb2R1bGUvb3MvbGludXgvemZzL3pwbF9maWxl X3JhbmdlLmMKLUBAIC0yNiw2ICsyNiw5IEBACi0gI2luY2x1ZGUgPGxpbnV4L2NvbXBhdC5oPgot ICNlbmRpZgotICNpbmNsdWRlIDxsaW51eC9mcy5oPgotKyNpZmRlZiBIQVZFX1ZGU19TUExJQ0Vf Q09QWV9GSUxFX1JBTkdFCi0rI2luY2x1ZGUgPGxpbnV4L3NwbGljZS5oPgotKyNlbmRpZgotICNp bmNsdWRlIDxzeXMvZmlsZS5oPgotICNpbmNsdWRlIDxzeXMvemZzX3pub2RlLmg+Ci0gI2luY2x1 ZGUgPHN5cy96ZnNfdm5vcHMuaD4KLUBAIC0xMDIsNyArMTA1LDcgQEAgenBsX2NvcHlfZmlsZV9y YW5nZShzdHJ1Y3QgZmlsZSAqc3JjX2ZpbGUsIGxvZmZfdCBzcmNfb2ZmLAotIAlyZXQgPSB6cGxf Y2xvbmVfZmlsZV9yYW5nZV9pbXBsKHNyY19maWxlLCBzcmNfb2ZmLAotIAkgICAgZHN0X2ZpbGUs IGRzdF9vZmYsIGxlbik7Ci0gCi0tI2lmZGVmIEhBVkVfVkZTX0dFTkVSSUNfQ09QWV9GSUxFX1JB TkdFCi0rI2lmIGRlZmluZWQoSEFWRV9WRlNfR0VORVJJQ19DT1BZX0ZJTEVfUkFOR0UpCi0gCS8q Ci0gCSAqIFNpbmNlIExpbnV4IDUuMyB0aGUgZmlsZXN5c3RlbSBkcml2ZXIgaXMgcmVzcG9uc2li bGUgZm9yIGV4ZWN1dGluZwotIAkgKiBhbiBhcHByb3ByaWF0ZSBmYWxsYmFjaywgYW5kIGEgZ2Vu ZXJpYyBmYWxsYmFjayBmdW5jdGlvbiBpcyBwcm92aWRlZC4KLUBAIC0xMTEsNiArMTE0LDE1IEBA IHpwbF9jb3B5X2ZpbGVfcmFuZ2Uoc3RydWN0IGZpbGUgKnNyY19maWxlLCBsb2ZmX3Qgc3JjX29m ZiwKLSAJICAgIHJldCA9PSAtRUFHQUlOKQotIAkJcmV0ID0gZ2VuZXJpY19jb3B5X2ZpbGVfcmFu Z2Uoc3JjX2ZpbGUsIHNyY19vZmYsIGRzdF9maWxlLAotIAkJICAgIGRzdF9vZmYsIGxlbiwgZmxh Z3MpOwotKyNlbGlmIGRlZmluZWQoSEFWRV9WRlNfU1BMSUNFX0NPUFlfRklMRV9SQU5HRSkKLSsJ LyoKLSsJICogU2luY2UgNi44IHRoZSBmYWxsYmFjayBmdW5jdGlvbiBpcyBjYWxsZWQgc3BsaWNl X2NvcHlfZmlsZV9yYW5nZQotKwkgKiBhbmQgaGFzIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHNpZ25h dHVyZS4KLSsJICovCi0rCWlmIChyZXQgPT0gLUVPUE5PVFNVUFAgfHwgcmV0ID09IC1FSU5WQUwg fHwgcmV0ID09IC1FWERFViB8fAotKwkgICAgcmV0ID09IC1FQUdBSU4pCi0rCQlyZXQgPSBzcGxp Y2VfY29weV9maWxlX3JhbmdlKHNyY19maWxlLCBzcmNfb2ZmLCBkc3RfZmlsZSwKLSsJCSAgICBk c3Rfb2ZmLCBsZW4pOwotICNlbHNlCi0gCS8qCi0gCSAqIEJlZm9yZSBMaW51eCA1LjMgdGhlIGZp bGVzeXN0ZW0gaGFzIHRvIHJldHVybiAtRU9QTk9UU1VQUCB0byBzaWduYWwKLUBAIC0xMTgsNyAr MTMwLDcgQEAgenBsX2NvcHlfZmlsZV9yYW5nZShzdHJ1Y3QgZmlsZSAqc3JjX2ZpbGUsIGxvZmZf dCBzcmNfb2ZmLAotIAkgKi8KLSAJaWYgKHJldCA9PSAtRUlOVkFMIHx8IHJldCA9PSAtRVhERVYg fHwgcmV0ID09IC1FQUdBSU4pCi0gCQlyZXQgPSAtRU9QTk9UU1VQUDsKLS0jZW5kaWYgLyogSEFW RV9WRlNfR0VORVJJQ19DT1BZX0ZJTEVfUkFOR0UgKi8KLSsjZW5kaWYgLyogSEFWRV9WRlNfR0VO RVJJQ19DT1BZX0ZJTEVfUkFOR0UgfHwgSEFWRV9WRlNfU1BMSUNFX0NPUFlfRklMRV9SQU5HRSAq LwotIAotIAlyZXR1cm4gKHJldCk7Ci0gfQpkaWZmIC0tZ2l0IGEvZGViaWFuL3BhdGNoZXMvMDAx NC1saW51eC01LjQtY29tcGF0LXBhZ2Vfc2l6ZS5wYXRjaCBiL2RlYmlhbi9wYXRjaGVzLzAwMTQt bGludXgtNS40LWNvbXBhdC1wYWdlX3NpemUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDI1OGMwMjVkLi4wMDAwMDAwMAotLS0gYS9kZWJpYW4vcGF0Y2hlcy8wMDE0LWxpbnV4 LTUuNC1jb21wYXQtcGFnZV9zaXplLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAg QEAKLUZyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYiBOb3JyaXMgPHJvYi5ub3JyaXNAa2xhcmFzeXN0 ZW1zLmNvbT4KLURhdGU6IE1vbiwgMTMgTm92IDIwMjMgMTc6NTU6MjkgKzExMDAKLVN1YmplY3Q6 IFtQQVRDSF0gbGludXggNS40IGNvbXBhdDogcGFnZV9zaXplKCkKLQotQmVmb3JlIDUuNCB3ZSBo YXZlIHRvIGRvIGEgbGl0dGxlIG1hdGguCi0KLVJldmlld2VkLWJ5OiBBbGV4YW5kZXIgTW90aW4g PG1hdkBGcmVlQlNELm9yZz4KLVJldmlld2VkLWJ5OiBCcmlhbiBCZWhsZW5kb3JmIDxiZWhsZW5k b3JmMUBsbG5sLmdvdj4KLVNpZ25lZC1vZmYtYnk6IFJvYiBOb3JyaXMgPHJvYi5ub3JyaXNAa2xh cmFzeXN0ZW1zLmNvbT4KLVNwb25zb3JlZC1ieTogS2xhcmEsIEluYy4KLVNwb25zb3JlZC1ieTog V2FzYWJpIFRlY2hub2xvZ3ksIEluYy4KLUNsb3NlcyAjMTU1MzMKLUNsb3NlcyAjMTU1ODgKLShj aGVycnkgcGlja2VkIGZyb20gY29tbWl0IGRmMDRlZmUzMjFhNDljNjUwZjFmYmFhNmZkNzAxZmEy OTI4Y2JlMjEpCi0tLS0KLSBjb25maWcva2VybmVsLW1tLXBhZ2Utc2l6ZS5tNCAgICAgICAgICAg ICB8IDE3ICsrKysrKysrKysrCi0gY29uZmlnL2tlcm5lbC5tNCAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMiArKwotIGluY2x1ZGUvb3MvbGludXgvTWFrZWZpbGUuYW0gICAgICAgICAgICAg IHwgIDEgKwotIGluY2x1ZGUvb3MvbGludXgva2VybmVsL2xpbnV4L21tX2NvbXBhdC5oIHwgMzYg KysrKysrKysrKysrKysrKysrKysrKysKLSA0IGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlvbnMo KykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgY29uZmlnL2tlcm5lbC1tbS1wYWdlLXNpemUubTQKLSBj cmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9vcy9saW51eC9rZXJuZWwvbGludXgvbW1fY29tcGF0 LmgKLQotZGlmZiAtLWdpdCBhL2NvbmZpZy9rZXJuZWwtbW0tcGFnZS1zaXplLm00IGIvY29uZmln L2tlcm5lbC1tbS1wYWdlLXNpemUubTQKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwMDAuLmQ1ZWJkOTI2OQotLS0tIC9kZXYvbnVsbAotKysrIGIvY29uZmlnL2tlcm5lbC1tbS1w YWdlLXNpemUubTQKLUBAIC0wLDAgKzEsMTcgQEAKLStBQ19ERUZVTihbWkZTX0FDX0tFUk5FTF9T UkNfTU1fUEFHRV9TSVpFXSwgWwotKwlaRlNfTElOVVhfVEVTVF9TUkMoW3BhZ2Vfc2l6ZV0sIFsK LSsJCSNpbmNsdWRlIDxsaW51eC9tbS5oPgotKwldLFsKLSsJCXVuc2lnbmVkIGxvbmcgczsKLSsJ CXMgPSBwYWdlX3NpemUoTlVMTCk7Ci0rCV0pCi0rXSkKLStBQ19ERUZVTihbWkZTX0FDX0tFUk5F TF9NTV9QQUdFX1NJWkVdLCBbCi0rCUFDX01TR19DSEVDS0lORyhbd2hldGhlciBwYWdlX3NpemUo KSBpcyBhdmFpbGFibGVdKQotKwlaRlNfTElOVVhfVEVTVF9SRVNVTFQoW3BhZ2Vfc2l6ZV0sIFsK LSsJCUFDX01TR19SRVNVTFQoeWVzKQotKwkJQUNfREVGSU5FKEhBVkVfTU1fUEFHRV9TSVpFLCAx LCBbcGFnZV9zaXplKCkgaXMgYXZhaWxhYmxlXSkKLSsJXSxbCi0rCQlBQ19NU0dfUkVTVUxUKG5v KQotKwldKQotK10pCi1kaWZmIC0tZ2l0IGEvY29uZmlnL2tlcm5lbC5tNCBiL2NvbmZpZy9rZXJu ZWwubTQKLWluZGV4IDFkMGM1YTI3Zi4uNTQ4OTA1Y2NkIDEwMDY0NAotLS0tIGEvY29uZmlnL2tl cm5lbC5tNAotKysrIGIvY29uZmlnL2tlcm5lbC5tNAotQEAgLTE2Nyw2ICsxNjcsNyBAQCBBQ19E RUZVTihbWkZTX0FDX0tFUk5FTF9URVNUX1NSQ10sIFsKLSAJWkZTX0FDX0tFUk5FTF9TUkNfUkVH SVNURVJfU1lTQ1RMX1RBQkxFCi0gCVpGU19BQ19LRVJORUxfU1JDX0NPUFlfU1BMSUNFX1JFQUQK LSAJWkZTX0FDX0tFUk5FTF9TUkNfU1lOQ19CREVWCi0rCVpGU19BQ19LRVJORUxfU1JDX01NX1BB R0VfU0laRQotIAljYXNlICIkaG9zdF9jcHUiIGluCi0gCQlwb3dlcnBjKikKLSAJCQlaRlNfQUNf S0VSTkVMX1NSQ19DUFVfSEFTX0ZFQVRVUkUKLUBAIC0zMTYsNiArMzE3LDcgQEAgQUNfREVGVU4o W1pGU19BQ19LRVJORUxfVEVTVF9SRVNVTFRdLCBbCi0gCVpGU19BQ19LRVJORUxfUkVHSVNURVJf U1lTQ1RMX1RBQkxFCi0gCVpGU19BQ19LRVJORUxfQ09QWV9TUExJQ0VfUkVBRAotIAlaRlNfQUNf S0VSTkVMX1NZTkNfQkRFVgotKwlaRlNfQUNfS0VSTkVMX01NX1BBR0VfU0laRQotIAljYXNlICIk aG9zdF9jcHUiIGluCi0gCQlwb3dlcnBjKikKLSAJCQlaRlNfQUNfS0VSTkVMX0NQVV9IQVNfRkVB VFVSRQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3MvbGludXgvTWFrZWZpbGUuYW0gYi9pbmNsdWRl L29zL2xpbnV4L01ha2VmaWxlLmFtCi1pbmRleCAzODMwZDE5OGQuLjUxYzI3MTMyYiAxMDA2NDQK LS0tLSBhL2luY2x1ZGUvb3MvbGludXgvTWFrZWZpbGUuYW0KLSsrKyBiL2luY2x1ZGUvb3MvbGlu dXgvTWFrZWZpbGUuYW0KLUBAIC01LDYgKzUsNyBAQCBrZXJuZWxfbGludXhfSEVBREVSUyA9IFwK LSAJJUQlL2tlcm5lbC9saW51eC9jb21waWxlcl9jb21wYXQuaCBcCi0gCSVEJS9rZXJuZWwvbGlu dXgvZGNhY2hlX2NvbXBhdC5oIFwKLSAJJUQlL2tlcm5lbC9saW51eC9rbWFwX2NvbXBhdC5oIFwK LSsJJUQlL2tlcm5lbC9saW51eC9tbV9jb21wYXQuaCBcCi0gCSVEJS9rZXJuZWwvbGludXgvbW9k X2NvbXBhdC5oIFwKLSAJJUQlL2tlcm5lbC9saW51eC9wYWdlX2NvbXBhdC5oIFwKLSAJJUQlL2tl cm5lbC9saW51eC9wZXJjcHVfY29tcGF0LmggXAotZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3MvbGlu dXgva2VybmVsL2xpbnV4L21tX2NvbXBhdC5oIGIvaW5jbHVkZS9vcy9saW51eC9rZXJuZWwvbGlu dXgvbW1fY29tcGF0LmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLjQw MDU2YzY4ZAotLS0tIC9kZXYvbnVsbAotKysrIGIvaW5jbHVkZS9vcy9saW51eC9rZXJuZWwvbGlu dXgvbW1fY29tcGF0LmgKLUBAIC0wLDAgKzEsMzYgQEAKLSsvKgotKyAqIENEREwgSEVBREVSIFNU QVJUCi0rICoKLSsgKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRo ZSB0ZXJtcyBvZiB0aGUKLSsgKiBDb21tb24gRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBM aWNlbnNlICh0aGUgIkxpY2Vuc2UiKS4KLSsgKiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4 Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0rICoKLSsgKiBZb3UgY2FuIG9i dGFpbiBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYXQgdXNyL3NyYy9PUEVOU09MQVJJUy5MSUNFTlNF Ci0rICogb3IgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9DRERMLTEuMC4KLSsgKiBT ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz c2lvbnMKLSsgKiBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0rICoKLSsgKiBX aGVuIGRpc3RyaWJ1dGluZyBDb3ZlcmVkIENvZGUsIGluY2x1ZGUgdGhpcyBDRERMIEhFQURFUiBp biBlYWNoCi0rICogZmlsZSBhbmQgaW5jbHVkZSB0aGUgTGljZW5zZSBmaWxlIGF0IHVzci9zcmMv T1BFTlNPTEFSSVMuTElDRU5TRS4KLSsgKiBJZiBhcHBsaWNhYmxlLCBhZGQgdGhlIGZvbGxvd2lu ZyBiZWxvdyB0aGlzIENEREwgSEVBREVSLCB3aXRoIHRoZQotKyAqIGZpZWxkcyBlbmNsb3NlZCBi eSBicmFja2V0cyAiW10iIHJlcGxhY2VkIHdpdGggeW91ciBvd24gaWRlbnRpZnlpbmcKLSsgKiBp bmZvcm1hdGlvbjogUG9ydGlvbnMgQ29weXJpZ2h0IFt5eXl5XSBbbmFtZSBvZiBjb3B5cmlnaHQg b3duZXJdCi0rICoKLSsgKiBDRERMIEhFQURFUiBFTkQKLSsgKi8KLSsKLSsvKgotKyAqIENvcHly aWdodCAoYykgMjAyMywgMjAyNCwgS2xhcmEgSW5jLgotKyAqLwotKwotKyNpZm5kZWYgX1pGU19N TV9DT01QQVRfSAotKyNkZWZpbmUJX1pGU19NTV9DT01QQVRfSAotKwotKyNpbmNsdWRlIDxsaW51 eC9tbS5oPgotKwotKy8qIDUuNCBpbnRyb2R1Y2VkIHBhZ2Vfc2l6ZSgpLiBPbGRlciBrZXJuZWxz IGNhbiB1c2UgYSB0cml2aWFsIG1hY3JvIGluc3RlYWQgKi8KLSsjaWZuZGVmIEhBVkVfTU1fUEFH RV9TSVpFCi0rI2RlZmluZQlwYWdlX3NpemUocCkgKCh1bnNpZ25lZCBsb25nKShQQUdFX1NJWkUg PDwgY29tcG91bmRfb3JkZXIocCkpKQotKyNlbmRpZgotKwotKyNlbmRpZiAvKiBfWkZTX01NX0NP TVBBVF9IICovCmRpZmYgLS1naXQgYS9kZWJpYW4vcGF0Y2hlcy8wMDE1LWFiZC1hZGQtcGFnZS1p dGVyYXRvci5wYXRjaCBiL2RlYmlhbi9wYXRjaGVzLzAwMTUtYWJkLWFkZC1wYWdlLWl0ZXJhdG9y LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjkxZWEzMi4uMDAwMDAwMDAK LS0tIGEvZGViaWFuL3BhdGNoZXMvMDAxNS1hYmQtYWRkLXBhZ2UtaXRlcmF0b3IucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwzMzQgKzAsMCBAQAotRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iIE5v cnJpcyA8cm9iLm5vcnJpc0BrbGFyYXN5c3RlbXMuY29tPgotRGF0ZTogTW9uLCAxMSBEZWMgMjAy MyAxNjowNTo1NCArMTEwMAotU3ViamVjdDogW1BBVENIXSBhYmQ6IGFkZCBwYWdlIGl0ZXJhdG9y Ci0KLVRoZSByZWd1bGFyIEFCRCBpdGVyYXRvcnMgeWllbGQgZGF0YSBidWZmZXJzLCBzbyB0aGV5 IGhhdmUgdG8gbWFwIGFuZAotdW5tYXAgcGFnZXMgaW50byBrZXJuZWwgbWVtb3J5LiBJZiB0aGUg Y2FsbGVyIG9ubHkgd2FudHMgdG8gY291bnQKLWNodW5rcywgb3IgY2FuIHVzZSBwYWdlIHBvaW50 ZXJzIGRpcmVjdGx5LCB0aGVuIHRoZSBtYXAvdW5tYXAgaXMganVzdAotdW5uZWNlc3Nhcnkgb3Zl cmhlYWQuCi0KLVRoaXMgYWRkcyBhZGJfaXRlcmF0ZV9wYWdlX2Z1bmMsIHdoaWNoIHlpZWxkcyB1 bm1hcHBlZCBzdHJ1Y3QgcGFnZQotaW5zdGVhZC4KLQotUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBN b3RpbiA8bWF2QEZyZWVCU0Qub3JnPgotUmV2aWV3ZWQtYnk6IEJyaWFuIEJlaGxlbmRvcmYgPGJl aGxlbmRvcmYxQGxsbmwuZ292PgotU2lnbmVkLW9mZi1ieTogUm9iIE5vcnJpcyA8cm9iLm5vcnJp c0BrbGFyYXN5c3RlbXMuY29tPgotU3BvbnNvcmVkLWJ5OiBLbGFyYSwgSW5jLgotU3BvbnNvcmVk LWJ5OiBXYXNhYmkgVGVjaG5vbG9neSwgSW5jLgotQ2xvc2VzICMxNTUzMwotQ2xvc2VzICMxNTU4 OAotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMzkwYjQ0ODcyNmM1ODA5OTlkZDMzN2JlN2E0 MGIwZTk1Y2YxZDUwYikKLS0tLQotIGluY2x1ZGUvc3lzL2FiZC5oICAgICAgICAgICAgICB8ICAg NyArKysKLSBpbmNsdWRlL3N5cy9hYmRfaW1wbC5oICAgICAgICAgfCAgMjYgKysrKysrKystCi0g bW9kdWxlL29zL2ZyZWVic2QvemZzL2FiZF9vcy5jIHwgICA0ICstCi0gbW9kdWxlL29zL2xpbnV4 L3pmcy9hYmRfb3MuYyAgIHwgMTA0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQot IG1vZHVsZS96ZnMvYWJkLmMgICAgICAgICAgICAgICB8ICA0MiArKysrKysrKysrKysrCi0gNSBm aWxlcyBjaGFuZ2VkLCAxNjkgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYg LS1naXQgYS9pbmNsdWRlL3N5cy9hYmQuaCBiL2luY2x1ZGUvc3lzL2FiZC5oCi1pbmRleCA3NTBm OTk4NmMuLjhhMmRmMGJjYSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvc3lzL2FiZC5oCi0rKysgYi9p bmNsdWRlL3N5cy9hYmQuaAotQEAgLTc5LDYgKzc5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgYWJkIHsK LSAKLSB0eXBlZGVmIGludCBhYmRfaXRlcl9mdW5jX3Qodm9pZCAqYnVmLCBzaXplX3QgbGVuLCB2 b2lkICpwcml2KTsKLSB0eXBlZGVmIGludCBhYmRfaXRlcl9mdW5jMl90KHZvaWQgKmJ1ZmEsIHZv aWQgKmJ1ZmIsIHNpemVfdCBsZW4sIHZvaWQgKnByaXYpOwotKyNpZiBkZWZpbmVkKF9fbGludXhf XykgJiYgZGVmaW5lZChfS0VSTkVMKQotK3R5cGVkZWYgaW50IGFiZF9pdGVyX3BhZ2VfZnVuY190 KHN0cnVjdCBwYWdlICosIHNpemVfdCwgc2l6ZV90LCB2b2lkICopOwotKyNlbmRpZgotIAotIGV4 dGVybiBpbnQgemZzX2FiZF9zY2F0dGVyX2VuYWJsZWQ7Ci0gCi1AQCAtMTI1LDYgKzEyOCwxMCBA QCB2b2lkIGFiZF9yZWxlYXNlX293bmVyc2hpcF9vZl9idWYoYWJkX3QgKik7Ci0gaW50IGFiZF9p dGVyYXRlX2Z1bmMoYWJkX3QgKiwgc2l6ZV90LCBzaXplX3QsIGFiZF9pdGVyX2Z1bmNfdCAqLCB2 b2lkICopOwotIGludCBhYmRfaXRlcmF0ZV9mdW5jMihhYmRfdCAqLCBhYmRfdCAqLCBzaXplX3Qs IHNpemVfdCwgc2l6ZV90LAotICAgICBhYmRfaXRlcl9mdW5jMl90ICosIHZvaWQgKik7Ci0rI2lm IGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKF9LRVJORUwpCi0raW50IGFiZF9pdGVyYXRl X3BhZ2VfZnVuYyhhYmRfdCAqLCBzaXplX3QsIHNpemVfdCwgYWJkX2l0ZXJfcGFnZV9mdW5jX3Qg KiwKLSsgICAgdm9pZCAqKTsKLSsjZW5kaWYKLSB2b2lkIGFiZF9jb3B5X29mZihhYmRfdCAqLCBh YmRfdCAqLCBzaXplX3QsIHNpemVfdCwgc2l6ZV90KTsKLSB2b2lkIGFiZF9jb3B5X2Zyb21fYnVm X29mZihhYmRfdCAqLCBjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90KTsKLSB2b2lkIGFiZF9j b3B5X3RvX2J1Zl9vZmYodm9pZCAqLCBhYmRfdCAqLCBzaXplX3QsIHNpemVfdCk7Ci1kaWZmIC0t Z2l0IGEvaW5jbHVkZS9zeXMvYWJkX2ltcGwuaCBiL2luY2x1ZGUvc3lzL2FiZF9pbXBsLmgKLWlu ZGV4IDQwNTQ2ZDRhZi4uZjg4ZWEyNWUyIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9zeXMvYWJkX2lt cGwuaAotKysrIGIvaW5jbHVkZS9zeXMvYWJkX2ltcGwuaAotQEAgLTIxLDYgKzIxLDcgQEAKLSAv KgotICAqIENvcHlyaWdodCAoYykgMjAxNCBieSBDaHVud2VpIENoZW4uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCi0gICogQ29weXJpZ2h0IChjKSAyMDE2LCAyMDE5IGJ5IERlbHBoaXguIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCi0rICogQ29weXJpZ2h0IChjKSAyMDIzLCAyMDI0LCBLbGFyYSBJbmMuCi0g ICovCi0gCi0gI2lmbmRlZiBfQUJEX0lNUExfSAotQEAgLTM4LDEyICszOSwzMCBAQCB0eXBlZGVm IGVudW0gYWJkX3N0YXRzX29wIHsKLSAJQUJEU1RBVF9ERUNSICAvKiBEZWNyZWFzZSBhYmRzdGF0 IHZhbHVlcyAqLwotIH0gYWJkX3N0YXRzX29wX3Q7Ci0gCi0tc3RydWN0IHNjYXR0ZXJsaXN0OyAv KiBmb3J3YXJkIGRlY2xhcmF0aW9uICovCi0rLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KLStz dHJ1Y3Qgc2NhdHRlcmxpc3Q7Ci0rc3RydWN0IHBhZ2U7Ci0gCi0gc3RydWN0IGFiZF9pdGVyIHsK LSAJLyogcHVibGljIGludGVyZmFjZSAqLwotLQl2b2lkCQkqaXRlcl9tYXBhZGRyOwkvKiBhZGRy IGNvcnJlc3BvbmRpbmcgdG8gaXRlcl9wb3MgKi8KLS0Jc2l6ZV90CQlpdGVyX21hcHNpemU7CS8q IGxlbmd0aCBvZiBkYXRhIHZhbGlkIGF0IG1hcGFkZHIgKi8KLSsJdW5pb24gewotKwkJLyogZm9y IGFiZF9pdGVyX21hcCgpL2FiZF9pdGVyX3VubWFwKCkgKi8KLSsJCXN0cnVjdCB7Ci0rCQkJLyog YWRkciBjb3JyZXNwb25kaW5nIHRvIGl0ZXJfcG9zICovCi0rCQkJdm9pZAkJKml0ZXJfbWFwYWRk cjsKLSsJCQkvKiBsZW5ndGggb2YgZGF0YSB2YWxpZCBhdCBtYXBhZGRyICovCi0rCQkJc2l6ZV90 CQlpdGVyX21hcHNpemU7Ci0rCQl9OwotKwkJLyogZm9yIGFiZF9pdGVyX3BhZ2UoKSAqLwotKwkJ c3RydWN0IHsKLSsJCQkvKiBjdXJyZW50IHBhZ2UgKi8KLSsJCQlzdHJ1Y3QgcGFnZQkqaXRlcl9w YWdlOwotKwkJCS8qIG9mZnNldCBvZiBkYXRhIGluIHBhZ2UgKi8KLSsJCQlzaXplX3QJCWl0ZXJf cGFnZV9kb2ZmOwotKwkJCS8qIHNpemUgb2YgZGF0YSBpbiBwYWdlICovCi0rCQkJc2l6ZV90CQlp dGVyX3BhZ2VfZHNpemU7Ci0rCQl9OwotKwl9OwotIAotIAkvKiBwcml2YXRlICovCi0gCWFiZF90 CQkqaXRlcl9hYmQ7CS8qIEFCRCBiZWluZyBpdGVyYXRlZCB0aHJvdWdoICovCi1AQCAtNzgsNiAr OTcsNyBAQCBib29sZWFuX3QgYWJkX2l0ZXJfYXRfZW5kKHN0cnVjdCBhYmRfaXRlciAqKTsKLSB2 b2lkIGFiZF9pdGVyX2FkdmFuY2Uoc3RydWN0IGFiZF9pdGVyICosIHNpemVfdCk7Ci0gdm9pZCBh YmRfaXRlcl9tYXAoc3RydWN0IGFiZF9pdGVyICopOwotIHZvaWQgYWJkX2l0ZXJfdW5tYXAoc3Ry dWN0IGFiZF9pdGVyICopOwotK3ZvaWQgYWJkX2l0ZXJfcGFnZShzdHJ1Y3QgYWJkX2l0ZXIgKik7 Ci0gCi0gLyoKLSAgKiBIZWxwZXIgbWFjcm9zCi1kaWZmIC0tZ2l0IGEvbW9kdWxlL29zL2ZyZWVi c2QvemZzL2FiZF9vcy5jIGIvbW9kdWxlL29zL2ZyZWVic2QvemZzL2FiZF9vcy5jCi1pbmRleCA1 OGEzN2RmNjIuLjNiODEyMjcxZiAxMDA2NDQKLS0tLSBhL21vZHVsZS9vcy9mcmVlYnNkL3pmcy9h YmRfb3MuYwotKysrIGIvbW9kdWxlL29zL2ZyZWVic2QvemZzL2FiZF9vcy5jCi1AQCAtNDE3LDEw ICs0MTcsOCBAQCBhYmRfaXRlcl9pbml0KHN0cnVjdCBhYmRfaXRlciAqYWl0ZXIsIGFiZF90ICph YmQpCi0gewotIAlBU1NFUlQoIWFiZF9pc19nYW5nKGFiZCkpOwotIAlhYmRfdmVyaWZ5KGFiZCk7 Ci0rCW1lbXNldChhaXRlciwgMCwgc2l6ZW9mIChzdHJ1Y3QgYWJkX2l0ZXIpKTsKLSAJYWl0ZXIt Pml0ZXJfYWJkID0gYWJkOwotLQlhaXRlci0+aXRlcl9wb3MgPSAwOwotLQlhaXRlci0+aXRlcl9t YXBhZGRyID0gTlVMTDsKLS0JYWl0ZXItPml0ZXJfbWFwc2l6ZSA9IDA7Ci0gfQotIAotIC8qCi1k aWZmIC0tZ2l0IGEvbW9kdWxlL29zL2xpbnV4L3pmcy9hYmRfb3MuYyBiL21vZHVsZS9vcy9saW51 eC96ZnMvYWJkX29zLmMKLWluZGV4IDI0MzkwZmJiZi4uZGFlMTI4MDEyIDEwMDY0NAotLS0tIGEv bW9kdWxlL29zL2xpbnV4L3pmcy9hYmRfb3MuYwotKysrIGIvbW9kdWxlL29zL2xpbnV4L3pmcy9h YmRfb3MuYwotQEAgLTIxLDYgKzIxLDcgQEAKLSAvKgotICAqIENvcHlyaWdodCAoYykgMjAxNCBi eSBDaHVud2VpIENoZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gICogQ29weXJpZ2h0IChjKSAy MDE5IGJ5IERlbHBoaXguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICogQ29weXJpZ2h0IChjKSAy MDIzLCAyMDI0LCBLbGFyYSBJbmMuCi0gICovCi0gCi0gLyoKLUBAIC01OSw2ICs2MCw3IEBACi0g I2luY2x1ZGUgPHN5cy96ZnNfem5vZGUuaD4KLSAjaWZkZWYgX0tFUk5FTAotICNpbmNsdWRlIDxs aW51eC9rbWFwX2NvbXBhdC5oPgotKyNpbmNsdWRlIDxsaW51eC9tbV9jb21wYXQuaD4KLSAjaW5j bHVkZSA8bGludXgvc2NhdHRlcmxpc3QuaD4KLSAjZW5kaWYKLSAKLUBAIC04OTUsMTQgKzg5Nyw5 IEBAIGFiZF9pdGVyX2luaXQoc3RydWN0IGFiZF9pdGVyICphaXRlciwgYWJkX3QgKmFiZCkKLSB7 Ci0gCUFTU0VSVCghYWJkX2lzX2dhbmcoYWJkKSk7Ci0gCWFiZF92ZXJpZnkoYWJkKTsKLSsJbWVt c2V0KGFpdGVyLCAwLCBzaXplb2YgKHN0cnVjdCBhYmRfaXRlcikpOwotIAlhaXRlci0+aXRlcl9h YmQgPSBhYmQ7Ci0tCWFpdGVyLT5pdGVyX21hcGFkZHIgPSBOVUxMOwotLQlhaXRlci0+aXRlcl9t YXBzaXplID0gMDsKLS0JYWl0ZXItPml0ZXJfcG9zID0gMDsKLS0JaWYgKGFiZF9pc19saW5lYXIo YWJkKSkgewotLQkJYWl0ZXItPml0ZXJfb2Zmc2V0ID0gMDsKLS0JCWFpdGVyLT5pdGVyX3NnID0g TlVMTDsKLS0JfSBlbHNlIHsKLSsJaWYgKCFhYmRfaXNfbGluZWFyKGFiZCkpIHsKLSAJCWFpdGVy LT5pdGVyX29mZnNldCA9IEFCRF9TQ0FUVEVSKGFiZCkuYWJkX29mZnNldDsKLSAJCWFpdGVyLT5p dGVyX3NnID0gQUJEX1NDQVRURVIoYWJkKS5hYmRfc2dsOwotIAl9Ci1AQCAtOTE1LDYgKzkxMiw3 IEBAIGFiZF9pdGVyX2luaXQoc3RydWN0IGFiZF9pdGVyICphaXRlciwgYWJkX3QgKmFiZCkKLSBi b29sZWFuX3QKLSBhYmRfaXRlcl9hdF9lbmQoc3RydWN0IGFiZF9pdGVyICphaXRlcikKLSB7Ci0r CUFTU0VSVDNVKGFpdGVyLT5pdGVyX3BvcywgPD0sIGFpdGVyLT5pdGVyX2FiZC0+YWJkX3NpemUp OwotIAlyZXR1cm4gKGFpdGVyLT5pdGVyX3BvcyA9PSBhaXRlci0+aXRlcl9hYmQtPmFiZF9zaXpl KTsKLSB9Ci0gCi1AQCAtOTI2LDggKzkyNCwxNSBAQCBhYmRfaXRlcl9hdF9lbmQoc3RydWN0IGFi ZF9pdGVyICphaXRlcikKLSB2b2lkCi0gYWJkX2l0ZXJfYWR2YW5jZShzdHJ1Y3QgYWJkX2l0ZXIg KmFpdGVyLCBzaXplX3QgYW1vdW50KQotIHsKLSsJLyoKLSsJICogRW5zdXJlIHRoYXQgbGFzdCBj aHVuayBpcyBub3QgaW4gdXNlLiBhYmRfaXRlcmF0ZV8qKCkgbXVzdCBjbGVhcgotKwkgKiB0aGlz IHN0YXRlIChkaXJlY3RseSBvciBhYmRfaXRlcl91bm1hcCgpKSBiZWZvcmUgYWR2YW5jaW5nLgot KwkgKi8KLSAJQVNTRVJUM1AoYWl0ZXItPml0ZXJfbWFwYWRkciwgPT0sIE5VTEwpOwotIAlBU1NF UlQwKGFpdGVyLT5pdGVyX21hcHNpemUpOwotKwlBU1NFUlQzUChhaXRlci0+aXRlcl9wYWdlLCA9 PSwgTlVMTCk7Ci0rCUFTU0VSVDAoYWl0ZXItPml0ZXJfcGFnZV9kb2ZmKTsKLSsJQVNTRVJUMChh aXRlci0+aXRlcl9wYWdlX2RzaXplKTsKLSAKLSAJLyogVGhlcmUncyBub3RoaW5nIGxlZnQgdG8g YWR2YW5jZSB0bywgc28gZG8gbm90aGluZyAqLwotIAlpZiAoYWJkX2l0ZXJfYXRfZW5kKGFpdGVy KSkKLUBAIC0xMDA5LDYgKzEwMTQsODggQEAgYWJkX2NhY2hlX3JlYXBfbm93KHZvaWQpCi0gfQot IAotICNpZiBkZWZpbmVkKF9LRVJORUwpCi0rLyoKLSsgKiBZaWVsZCB0aGUgbmV4dCBwYWdlIHN0 cnVjdCBhbmQgZGF0YSBvZmZzZXQgYW5kIHNpemUgd2l0aGluIGl0LCB3aXRob3V0Ci0rICogbWFw cGluZyBpdCBpbnRvIHRoZSBhZGRyZXNzIHNwYWNlLgotKyAqLwotK3ZvaWQKLSthYmRfaXRlcl9w YWdlKHN0cnVjdCBhYmRfaXRlciAqYWl0ZXIpCi0rewotKwlpZiAoYWJkX2l0ZXJfYXRfZW5kKGFp dGVyKSkgewotKwkJYWl0ZXItPml0ZXJfcGFnZSA9IE5VTEw7Ci0rCQlhaXRlci0+aXRlcl9wYWdl X2RvZmYgPSAwOwotKwkJYWl0ZXItPml0ZXJfcGFnZV9kc2l6ZSA9IDA7Ci0rCQlyZXR1cm47Ci0r CX0KLSsKLSsJc3RydWN0IHBhZ2UgKnBhZ2U7Ci0rCXNpemVfdCBkb2ZmLCBkc2l6ZTsKLSsKLSsJ aWYgKGFiZF9pc19saW5lYXIoYWl0ZXItPml0ZXJfYWJkKSkgewotKwkJQVNTRVJUM1UoYWl0ZXIt Pml0ZXJfcG9zLCA9PSwgYWl0ZXItPml0ZXJfb2Zmc2V0KTsKLSsKLSsJCS8qIG1lbW9yeSBhZGRy ZXNzIGF0IGl0ZXJfcG9zICovCi0rCQl2b2lkICpwYWRkciA9IEFCRF9MSU5FQVJfQlVGKGFpdGVy LT5pdGVyX2FiZCkgKyBhaXRlci0+aXRlcl9wb3M7Ci0rCi0rCQkvKiBzdHJ1Y3QgcGFnZSBmb3Ig YWRkcmVzcyAqLwotKwkJcGFnZSA9IGlzX3ZtYWxsb2NfYWRkcihwYWRkcikgPwotKwkJICAgIHZt YWxsb2NfdG9fcGFnZShwYWRkcikgOiB2aXJ0X3RvX3BhZ2UocGFkZHIpOwotKwotKwkJLyogb2Zm c2V0IG9mIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlICovCi0rCQlkb2ZmID0gb2Zmc2V0X2luX3Bh Z2UocGFkZHIpOwotKwotKwkJLyogdG90YWwgZGF0YSByZW1haW5pbmcgaW4gYWJkIGZyb20gdGhp cyBwb3NpdGlvbiAqLwotKwkJZHNpemUgPSBhaXRlci0+aXRlcl9hYmQtPmFiZF9zaXplIC0gYWl0 ZXItPml0ZXJfb2Zmc2V0OwotKwl9IGVsc2UgewotKwkJQVNTRVJUKCFhYmRfaXNfZ2FuZyhhaXRl ci0+aXRlcl9hYmQpKTsKLSsKLSsJCS8qIGN1cnJlbnQgc2NhdHRlciBwYWdlICovCi0rCQlwYWdl ID0gc2dfcGFnZShhaXRlci0+aXRlcl9zZyk7Ci0rCi0rCQkvKiBwb3NpdGlvbiB3aXRoaW4gcGFn ZSAqLwotKwkJZG9mZiA9IGFpdGVyLT5pdGVyX29mZnNldDsKLSsKLSsJCS8qIHJlbWFpbmluZyBk YXRhIGluIHNjYXR0ZXJsaXN0ICovCi0rCQlkc2l6ZSA9IE1JTihhaXRlci0+aXRlcl9zZy0+bGVu Z3RoIC0gYWl0ZXItPml0ZXJfb2Zmc2V0LAotKwkJICAgIGFpdGVyLT5pdGVyX2FiZC0+YWJkX3Np emUgLSBhaXRlci0+aXRlcl9wb3MpOwotKwl9Ci0rCUFTU0VSVChwYWdlKTsKLSsKLSsJaWYgKFBh Z2VUYWlsKHBhZ2UpKSB7Ci0rCQkvKgotKwkJICogVGhpcyBwYWdlIGlzIHBhcnQgb2YgYSAiY29t cG91bmQgcGFnZSIsIHdoaWNoIGlzIGEgZ3JvdXAgb2YKLSsJCSAqIHBhZ2VzIHRoYXQgY2FuIGJl IHJlZmVyZW5jZWQgZnJvbSBhIHNpbmdsZSBzdHJ1Y3QgcGFnZSAqLgotKwkJICogSXRzIG9yZ2Fu aXNlZCBhcyBhICJoZWFkIiBwYWdlLCBmb2xsb3dlZCBieSBhIHNlcmllcyBvZgotKwkJICogInRh aWwiIHBhZ2VzLgotKwkJICoKLSsJCSAqIEluIE9wZW5aRlMsIGNvbXBvdW5kIHBhZ2VzIGFyZSBh bGxvY2F0ZWQgdXNpbmcgdGhlCi0rCQkgKiBfX0dGUF9DT01QIGZsYWcsIHdoaWNoIHdlIGdldCBm cm9tIHNjYXR0ZXIgQUJEcyBhbmQgU1BMCi0rCQkgKiB2bWFsbG9jIHNsYWJzIChpZSA+MTZLIGFs bG9jYXRpb25zKS4gU28gYSBncmVhdCBtYW55IG9mIHRoZQotKwkJICogSU8gYnVmZmVycyB3ZSBn ZXQgYXJlIGdvaW5nIHRvIGJlIG9mIHRoaXMgdHlwZS4KLSsJCSAqCi0rCQkgKiBUaGUgdGFpbCBw YWdlcyBhcmUganVzdCByZWd1bGFyIFBBR0VfU0laRSBwYWdlcywgYW5kIGNhbiBiZQotKwkJICog c2FmZWx5IHVzZWQgYXMtaXMuIEhvd2V2ZXIsIHRoZSBoZWFkIHBhZ2UgaGFzIGxlbmd0aAotKwkJ ICogY292ZXJpbmcgaXRzZWxmIGFuZCBhbGwgdGhlIHRhaWwgcGFnZXMuIElmIHRoaXMgQUJEIGNo dW5rCi0rCQkgKiBzcGFucyBtdWx0aXBsZSBwYWdlcywgdGhlbiB3ZSBjYW4gdXNlIHRoZSBoZWFk IHBhZ2UgYW5kIGEKLSsJCSAqID5QQUdFX1NJWkUgbGVuZ3RoLCB3aGljaCBpcyBmYXIgbW9yZSBl ZmZpY2llbnQuCi0rCQkgKgotKwkJICogVG8gZG8gdGhpcywgd2UgbmVlZCB0byBhZGp1c3QgdGhl IG9mZnNldCB0byBiZSBjb3VudGVkIGZyb20KLSsJCSAqIHRoZSBoZWFkIHBhZ2UuIHN0cnVjdCBw YWdlIGZvciBjb21wb3VuZCBwYWdlcyBhcmUgc3RvcmVkCi0rCQkgKiBjb250aWd1b3VzbHksIHNv IHdlIGNhbiBqdXN0IGFkanVzdCBieSBhIHNpbXBsZSBvZmZzZXQuCi0rCQkgKi8KLSsJCXN0cnVj dCBwYWdlICpoZWFkID0gY29tcG91bmRfaGVhZChwYWdlKTsKLSsJCWRvZmYgKz0gKChwYWdlIC0g aGVhZCkgKiBQQUdFU0laRSk7Ci0rCQlwYWdlID0gaGVhZDsKLSsJfQotKwotKwkvKiBmaW5hbCBw YWdlIGFuZCBwb3NpdGlvbiB3aXRoaW4gaXQgKi8KLSsJYWl0ZXItPml0ZXJfcGFnZSA9IHBhZ2U7 Ci0rCWFpdGVyLT5pdGVyX3BhZ2VfZG9mZiA9IGRvZmY7Ci0rCi0rCS8qIGFtb3VudCBvZiBkYXRh IGluIHRoZSBjaHVuaywgdXAgdG8gdGhlIGVuZCBvZiB0aGUgcGFnZSAqLwotKwlhaXRlci0+aXRl cl9wYWdlX2RzaXplID0gTUlOKGRzaXplLCBwYWdlX3NpemUocGFnZSkgLSBkb2ZmKTsKLSt9Ci0r Ci0gLyoKLSAgKiBiaW9fbnJfcGFnZXMgZm9yIEFCRC4KLSAgKiBAb2ZmIGlzIHRoZSBvZmZzZXQg aW4gQGFiZAotQEAgLTExNjMsNCArMTI1MCw1IEBAIE1PRFVMRV9QQVJNX0RFU0MoemZzX2FiZF9z Y2F0dGVyX21pbl9zaXplLAotIG1vZHVsZV9wYXJhbSh6ZnNfYWJkX3NjYXR0ZXJfbWF4X29yZGVy LCB1aW50LCAwNjQ0KTsKLSBNT0RVTEVfUEFSTV9ERVNDKHpmc19hYmRfc2NhdHRlcl9tYXhfb3Jk ZXIsCi0gCSJNYXhpbXVtIG9yZGVyIGFsbG9jYXRpb24gdXNlZCBmb3IgYSBzY2F0dGVyIEFCRC4i KTsKLS0jZW5kaWYKLSsKLSsjZW5kaWYgLyogX0tFUk5FTCAqLwotZGlmZiAtLWdpdCBhL21vZHVs ZS96ZnMvYWJkLmMgYi9tb2R1bGUvemZzL2FiZC5jCi1pbmRleCBkOTgyZjIwMWMuLjMzODhlMjM1 NyAxMDA2NDQKLS0tLSBhL21vZHVsZS96ZnMvYWJkLmMKLSsrKyBiL21vZHVsZS96ZnMvYWJkLmMK LUBAIC04MjYsNiArODI2LDQ4IEBAIGFiZF9pdGVyYXRlX2Z1bmMoYWJkX3QgKmFiZCwgc2l6ZV90 IG9mZiwgc2l6ZV90IHNpemUsCi0gCXJldHVybiAocmV0KTsKLSB9Ci0gCi0rI2lmIGRlZmluZWQo X19saW51eF9fKSAmJiBkZWZpbmVkKF9LRVJORUwpCi0raW50Ci0rYWJkX2l0ZXJhdGVfcGFnZV9m dW5jKGFiZF90ICphYmQsIHNpemVfdCBvZmYsIHNpemVfdCBzaXplLAotKyAgICBhYmRfaXRlcl9w YWdlX2Z1bmNfdCAqZnVuYywgdm9pZCAqcHJpdmF0ZSkKLSt7Ci0rCXN0cnVjdCBhYmRfaXRlciBh aXRlcjsKLSsJaW50IHJldCA9IDA7Ci0rCi0rCWlmIChzaXplID09IDApCi0rCQlyZXR1cm4gKDAp OwotKwotKwlhYmRfdmVyaWZ5KGFiZCk7Ci0rCUFTU0VSVDNVKG9mZiArIHNpemUsIDw9LCBhYmQt PmFiZF9zaXplKTsKLSsKLSsJYWJkX3QgKmNfYWJkID0gYWJkX2luaXRfYWJkX2l0ZXIoYWJkLCAm YWl0ZXIsIG9mZik7Ci0rCi0rCXdoaWxlIChzaXplID4gMCkgewotKwkJSU1QTFkoYWJkX2lzX2dh bmcoYWJkKSwgY19hYmQgIT0gTlVMTCk7Ci0rCi0rCQlhYmRfaXRlcl9wYWdlKCZhaXRlcik7Ci0r Ci0rCQlzaXplX3QgbGVuID0gTUlOKGFpdGVyLml0ZXJfcGFnZV9kc2l6ZSwgc2l6ZSk7Ci0rCQlB U1NFUlQzVShsZW4sID4sIDApOwotKwotKwkJcmV0ID0gZnVuYyhhaXRlci5pdGVyX3BhZ2UsIGFp dGVyLml0ZXJfcGFnZV9kb2ZmLAotKwkJICAgIGxlbiwgcHJpdmF0ZSk7Ci0rCi0rCQlhaXRlci5p dGVyX3BhZ2UgPSBOVUxMOwotKwkJYWl0ZXIuaXRlcl9wYWdlX2RvZmYgPSAwOwotKwkJYWl0ZXIu aXRlcl9wYWdlX2RzaXplID0gMDsKLSsKLSsJCWlmIChyZXQgIT0gMCkKLSsJCQlicmVhazsKLSsK LSsJCXNpemUgLT0gbGVuOwotKwkJY19hYmQgPSBhYmRfYWR2YW5jZV9hYmRfaXRlcihhYmQsIGNf YWJkLCAmYWl0ZXIsIGxlbik7Ci0rCX0KLSsKLSsJcmV0dXJuIChyZXQpOwotK30KLSsjZW5kaWYK LSsKLSBzdHJ1Y3QgYnVmX2FyZyB7Ci0gCXZvaWQgKmFyZ19idWY7Ci0gfTsKZGlmZiAtLWdpdCBh L2RlYmlhbi9wYXRjaGVzLzAwMTYtdmRldl9kaXNrLXJlbmFtZS1leGlzdGluZy1mdW5jdGlvbnMt dG8tdmRldl9jbGFzc2ljXy5wYXRjaCBiL2RlYmlhbi9wYXRjaGVzLzAwMTYtdmRldl9kaXNrLXJl bmFtZS1leGlzdGluZy1mdW5jdGlvbnMtdG8tdmRldl9jbGFzc2ljXy5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggZWJhYmIxYzguLjAwMDAwMDAwCi0tLSBhL2RlYmlhbi9wYXRj aGVzLzAwMTYtdmRldl9kaXNrLXJlbmFtZS1leGlzdGluZy1mdW5jdGlvbnMtdG8tdmRldl9jbGFz c2ljXy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0OSArMCwwIEBACi1Gcm9tIDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBSb2IgTm9ycmlzIDxyb2Iubm9ycmlzQGtsYXJhc3lzdGVtcy5jb20+Ci1EYXRlOiBU dWUsIDkgSmFuIDIwMjQgMTI6MTI6NTYgKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gdmRldl9kaXNr OiByZW5hbWUgZXhpc3RpbmcgZnVuY3Rpb25zIHRvIHZkZXZfY2xhc3NpY18qCi0KLVRoaXMgaXMg anVzdCByZW5hbWluZyB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIHdlJ3JlIGFib3V0IHRvIHJlcGxh Y2UgYW5kCi1ncm91cGluZyB0aGVtIHRvZ2V0aGVyIHRvIG1ha2UgdGhlIG5leHQgY29tbWl0cyBl YXNpZXIgdG8gZm9sbG93LgotCi1SZXZpZXdlZC1ieTogQWxleGFuZGVyIE1vdGluIDxtYXZARnJl ZUJTRC5vcmc+Ci1SZXZpZXdlZC1ieTogQnJpYW4gQmVobGVuZG9yZiA8YmVobGVuZG9yZjFAbGxu bC5nb3Y+Ci1TaWduZWQtb2ZmLWJ5OiBSb2IgTm9ycmlzIDxyb2Iubm9ycmlzQGtsYXJhc3lzdGVt cy5jb20+Ci1TcG9uc29yZWQtYnk6IEtsYXJhLCBJbmMuCi1TcG9uc29yZWQtYnk6IFdhc2FiaSBU ZWNobm9sb2d5LCBJbmMuCi1DbG9zZXMgIzE1NTMzCi1DbG9zZXMgIzE1NTg4Ci0oY2hlcnJ5IHBp Y2tlZCBmcm9tIGNvbW1pdCBmM2I4NWQ3MDZiYWU4Mjk1N2QyZTNlMGVmMWQ1M2ExY2ZhYjYwZWI0 KQotLS0tCi0gaW5jbHVkZS9zeXMvYWJkLmggICAgICAgICAgICAgICB8ICAgMiArCi0gbW9kdWxl L29zL2xpbnV4L3pmcy9hYmRfb3MuYyAgICB8ICAgNSArCi0gbW9kdWxlL29zL2xpbnV4L3pmcy92 ZGV2X2Rpc2suYyB8IDIxNSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQotIDMgZmls ZXMgY2hhbmdlZCwgMTIwIGluc2VydGlvbnMoKyksIDEwMiBkZWxldGlvbnMoLSkKLQotZGlmZiAt LWdpdCBhL2luY2x1ZGUvc3lzL2FiZC5oIGIvaW5jbHVkZS9zeXMvYWJkLmgKLWluZGV4IDhhMmRm MGJjYS4uYmVlMzhiODMxIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9zeXMvYWJkLmgKLSsrKyBiL2lu Y2x1ZGUvc3lzL2FiZC5oCi1AQCAtMjIwLDYgKzIyMCw4IEBAIHZvaWQgYWJkX2Zpbmkodm9pZCk7 Ci0gCi0gLyoKLSAgKiBMaW51eCBBQkQgYmlvIGZ1bmN0aW9ucwotKyAqIE5vdGU6IHRoZXNlIGFy ZSBvbmx5IG5lZWRlZCB0byBzdXBwb3J0IHZkZXZfY2xhc3NpYy4gU2VlIGNvbW1lbnQgaW4KLSsg KiB2ZGV2X2Rpc2suYy4KLSAgKi8KLSAjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQo X0tFUk5FTCkKLSB1bnNpZ25lZCBpbnQgYWJkX2Jpb19tYXBfb2ZmKHN0cnVjdCBiaW8gKiwgYWJk X3QgKiwgdW5zaWduZWQgaW50LCBzaXplX3QpOwotZGlmZiAtLWdpdCBhL21vZHVsZS9vcy9saW51 eC96ZnMvYWJkX29zLmMgYi9tb2R1bGUvb3MvbGludXgvemZzL2FiZF9vcy5jCi1pbmRleCBkYWUx MjgwMTIuLjNmZTAxYzBiNyAxMDA2NDQKLS0tLSBhL21vZHVsZS9vcy9saW51eC96ZnMvYWJkX29z LmMKLSsrKyBiL21vZHVsZS9vcy9saW51eC96ZnMvYWJkX29zLmMKLUBAIC0xMDk2LDYgKzEwOTYs MTEgQEAgYWJkX2l0ZXJfcGFnZShzdHJ1Y3QgYWJkX2l0ZXIgKmFpdGVyKQotIAlhaXRlci0+aXRl cl9wYWdlX2RzaXplID0gTUlOKGRzaXplLCBwYWdlX3NpemUocGFnZSkgLSBkb2ZmKTsKLSB9Ci0g Ci0rLyoKLSsgKiBOb3RlOiBBQkQgQklPIGZ1bmN0aW9ucyBvbmx5IG5lZWRlZCB0byBzdXBwb3J0 IHZkZXZfY2xhc3NpYy4gU2VlIGNvbW1lbnRzIGluCi0rICogdmRldl9kaXNrLmMuCi0rICovCi0r Ci0gLyoKLSAgKiBiaW9fbnJfcGFnZXMgZm9yIEFCRC4KLSAgKiBAb2ZmIGlzIHRoZSBvZmZzZXQg aW4gQGFiZAotZGlmZiAtLWdpdCBhL21vZHVsZS9vcy9saW51eC96ZnMvdmRldl9kaXNrLmMgYi9t b2R1bGUvb3MvbGludXgvemZzL3ZkZXZfZGlzay5jCi1pbmRleCBiMGJkYTVmYTIuLjk1NzYxOWI4 NyAxMDA2NDQKLS0tLSBhL21vZHVsZS9vcy9saW51eC96ZnMvdmRldl9kaXNrLmMKLSsrKyBiL21v ZHVsZS9vcy9saW51eC96ZnMvdmRldl9kaXNrLmMKLUBAIC04MywxNyArODMsNiBAQCBzdGF0aWMg dWludF90IHpmc192ZGV2X29wZW5fdGltZW91dF9tcyA9IDEwMDA7Ci0gICovCi0gI2RlZmluZQlF RklfTUlOX1JFU1ZfU0laRQkoMTYgKiAxMDI0KQotIAotLS8qCi0tICogVmlydHVhbCBkZXZpY2Ug dmVjdG9yIGZvciBkaXNrcy4KLS0gKi8KLS10eXBlZGVmIHN0cnVjdCBkaW9fcmVxdWVzdCB7Ci0t CXppb190CQkJKmRyX3ppbzsJLyogUGFyZW50IFpJTyAqLwotLQlhdG9taWNfdAkJZHJfcmVmOwkJ LyogUmVmZXJlbmNlcyAqLwotLQlpbnQJCQlkcl9lcnJvcjsJLyogQmlvIGVycm9yICovCi0tCWlu dAkJCWRyX2Jpb19jb3VudDsJLyogQ291bnQgb2YgYmlvJ3MgKi8KLS0Jc3RydWN0IGJpbwkJKmRy X2Jpb1tdOwkvKiBBdHRhY2hlZCBiaW8ncyAqLwotLX0gZGlvX3JlcXVlc3RfdDsKLS0KLSAvKgot ICAqIEJJTyByZXF1ZXN0IGZhaWxmYXN0IG1hc2suCi0gICovCi1AQCAtNDY3LDg1ICs0NTYsNiBA QCB2ZGV2X2Rpc2tfY2xvc2UodmRldl90ICp2KQotIAl2LT52ZGV2X3RzZCA9IE5VTEw7Ci0gfQot IAotLXN0YXRpYyBkaW9fcmVxdWVzdF90ICoKLS12ZGV2X2Rpc2tfZGlvX2FsbG9jKGludCBiaW9f Y291bnQpCi0tewotLQlkaW9fcmVxdWVzdF90ICpkciA9IGttZW1femFsbG9jKHNpemVvZiAoZGlv X3JlcXVlc3RfdCkgKwotLQkgICAgc2l6ZW9mIChzdHJ1Y3QgYmlvICopICogYmlvX2NvdW50LCBL TV9TTEVFUCk7Ci0tCWF0b21pY19zZXQoJmRyLT5kcl9yZWYsIDApOwotLQlkci0+ZHJfYmlvX2Nv dW50ID0gYmlvX2NvdW50OwotLQlkci0+ZHJfZXJyb3IgPSAwOwotLQotLQlmb3IgKGludCBpID0g MDsgaSA8IGRyLT5kcl9iaW9fY291bnQ7IGkrKykKLS0JCWRyLT5kcl9iaW9baV0gPSBOVUxMOwot LQotLQlyZXR1cm4gKGRyKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS12ZGV2X2Rpc2tfZGlvX2Zy ZWUoZGlvX3JlcXVlc3RfdCAqZHIpCi0tewotLQlpbnQgaTsKLS0KLS0JZm9yIChpID0gMDsgaSA8 IGRyLT5kcl9iaW9fY291bnQ7IGkrKykKLS0JCWlmIChkci0+ZHJfYmlvW2ldKQotLQkJCWJpb19w dXQoZHItPmRyX2Jpb1tpXSk7Ci0tCi0tCWttZW1fZnJlZShkciwgc2l6ZW9mIChkaW9fcmVxdWVz dF90KSArCi0tCSAgICBzaXplb2YgKHN0cnVjdCBiaW8gKikgKiBkci0+ZHJfYmlvX2NvdW50KTsK LS19Ci0tCi0tc3RhdGljIHZvaWQKLS12ZGV2X2Rpc2tfZGlvX2dldChkaW9fcmVxdWVzdF90ICpk cikKLS17Ci0tCWF0b21pY19pbmMoJmRyLT5kcl9yZWYpOwotLX0KLS0KLS1zdGF0aWMgdm9pZAot LXZkZXZfZGlza19kaW9fcHV0KGRpb19yZXF1ZXN0X3QgKmRyKQotLXsKLS0JaW50IHJjID0gYXRv bWljX2RlY19yZXR1cm4oJmRyLT5kcl9yZWYpOwotLQotLQkvKgotLQkgKiBGcmVlIHRoZSBkaW9f cmVxdWVzdCB3aGVuIHRoZSBsYXN0IHJlZmVyZW5jZSBpcyBkcm9wcGVkIGFuZAotLQkgKiBlbnN1 cmUgemlvX2ludGVycHJldCBpcyBjYWxsZWQgb25seSBvbmNlIHdpdGggdGhlIGNvcnJlY3Qgemlv Ci0tCSAqLwotLQlpZiAocmMgPT0gMCkgewotLQkJemlvX3QgKnppbyA9IGRyLT5kcl96aW87Ci0t CQlpbnQgZXJyb3IgPSBkci0+ZHJfZXJyb3I7Ci0tCi0tCQl2ZGV2X2Rpc2tfZGlvX2ZyZWUoZHIp OwotLQotLQkJaWYgKHppbykgewotLQkJCXppby0+aW9fZXJyb3IgPSBlcnJvcjsKLS0JCQlBU1NF UlQzUyh6aW8tPmlvX2Vycm9yLCA+PSwgMCk7Ci0tCQkJaWYgKHppby0+aW9fZXJyb3IpCi0tCQkJ CXZkZXZfZGlza19lcnJvcih6aW8pOwotLQotLQkJCXppb19kZWxheV9pbnRlcnJ1cHQoemlvKTsK LS0JCX0KLS0JfQotLX0KLS0KLS1CSU9fRU5EX0lPX1BST1RPKHZkZXZfZGlza19waHlzaW9fY29t cGxldGlvbiwgYmlvLCBlcnJvcikKLS17Ci0tCWRpb19yZXF1ZXN0X3QgKmRyID0gYmlvLT5iaV9w cml2YXRlOwotLQotLQlpZiAoZHItPmRyX2Vycm9yID09IDApIHsKLS0jaWZkZWYgSEFWRV8xQVJH X0JJT19FTkRfSU9fVAotLQkJZHItPmRyX2Vycm9yID0gQklPX0VORF9JT19FUlJPUihiaW8pOwot LSNlbHNlCi0tCQlpZiAoZXJyb3IpCi0tCQkJZHItPmRyX2Vycm9yID0gLShlcnJvcik7Ci0tCQll bHNlIGlmICghdGVzdF9iaXQoQklPX1VQVE9EQVRFLCAmYmlvLT5iaV9mbGFncykpCi0tCQkJZHIt PmRyX2Vycm9yID0gRUlPOwotLSNlbmRpZgotLQl9Ci0tCi0tCS8qIERyb3AgcmVmZXJlbmNlIGFj cXVpcmVkIGJ5IF9fdmRldl9kaXNrX3BoeXNpbyAqLwotLQl2ZGV2X2Rpc2tfZGlvX3B1dChkcik7 Ci0tfQotLQotIHN0YXRpYyBpbmxpbmUgdm9pZAotIHZkZXZfc3VibWl0X2Jpb19pbXBsKHN0cnVj dCBiaW8gKmJpbykKLSB7Ci1AQCAtNjk3LDggKzYwNywxMDcgQEAgdmRldl9iaW9fYWxsb2Moc3Ry dWN0IGJsb2NrX2RldmljZSAqYmRldiwgZ2ZwX3QgZ2ZwX21hc2ssCi0gCXJldHVybiAoYmlvKTsK LSB9Ci0gCi0rLyogPT09PT09PT09PSAqLwotKwotKy8qCi0rICogVGhpcyBpcyB0aGUgY2xhc3Np YywgYmF0dGxlLXRlc3RlZCBCSU8gc3VibWlzc2lvbiBjb2RlLgotKyAqCi0rICogVGhlc2UgZnVu Y3Rpb25zIGhhdmUgYmVlbiByZW5hbWVkIHRvIHZkZXZfY2xhc3NpY18qIHRvIG1ha2UgaXQgY2xl YXIgd2hhdAotKyAqIHRoZXkgYmVsb25nIHRvLCBidXQgdGhlaXIgaW1wbGVtZW50YXRpb25zIGFy ZSB1bmNoYW5nZWQuCi0rICovCi0rCi0rLyoKLSsgKiBWaXJ0dWFsIGRldmljZSB2ZWN0b3IgZm9y IGRpc2tzLgotKyAqLwotK3R5cGVkZWYgc3RydWN0IGRpb19yZXF1ZXN0IHsKLSsJemlvX3QJCQkq ZHJfemlvOwkvKiBQYXJlbnQgWklPICovCi0rCWF0b21pY190CQlkcl9yZWY7CQkvKiBSZWZlcmVu Y2VzICovCi0rCWludAkJCWRyX2Vycm9yOwkvKiBCaW8gZXJyb3IgKi8KLSsJaW50CQkJZHJfYmlv X2NvdW50OwkvKiBDb3VudCBvZiBiaW8ncyAqLwotKwlzdHJ1Y3QgYmlvCQkqZHJfYmlvW107CS8q IEF0dGFjaGVkIGJpbydzICovCi0rfSBkaW9fcmVxdWVzdF90OwotKwotK3N0YXRpYyBkaW9fcmVx dWVzdF90ICoKLSt2ZGV2X2NsYXNzaWNfZGlvX2FsbG9jKGludCBiaW9fY291bnQpCi0rewotKwlk aW9fcmVxdWVzdF90ICpkciA9IGttZW1femFsbG9jKHNpemVvZiAoZGlvX3JlcXVlc3RfdCkgKwot KwkgICAgc2l6ZW9mIChzdHJ1Y3QgYmlvICopICogYmlvX2NvdW50LCBLTV9TTEVFUCk7Ci0rCWF0 b21pY19zZXQoJmRyLT5kcl9yZWYsIDApOwotKwlkci0+ZHJfYmlvX2NvdW50ID0gYmlvX2NvdW50 OwotKwlkci0+ZHJfZXJyb3IgPSAwOwotKwotKwlmb3IgKGludCBpID0gMDsgaSA8IGRyLT5kcl9i aW9fY291bnQ7IGkrKykKLSsJCWRyLT5kcl9iaW9baV0gPSBOVUxMOwotKwotKwlyZXR1cm4gKGRy KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSt2ZGV2X2NsYXNzaWNfZGlvX2ZyZWUoZGlvX3JlcXVl c3RfdCAqZHIpCi0rewotKwlpbnQgaTsKLSsKLSsJZm9yIChpID0gMDsgaSA8IGRyLT5kcl9iaW9f Y291bnQ7IGkrKykKLSsJCWlmIChkci0+ZHJfYmlvW2ldKQotKwkJCWJpb19wdXQoZHItPmRyX2Jp b1tpXSk7Ci0rCi0rCWttZW1fZnJlZShkciwgc2l6ZW9mIChkaW9fcmVxdWVzdF90KSArCi0rCSAg ICBzaXplb2YgKHN0cnVjdCBiaW8gKikgKiBkci0+ZHJfYmlvX2NvdW50KTsKLSt9Ci0rCi0rc3Rh dGljIHZvaWQKLSt2ZGV2X2NsYXNzaWNfZGlvX2dldChkaW9fcmVxdWVzdF90ICpkcikKLSt7Ci0r CWF0b21pY19pbmMoJmRyLT5kcl9yZWYpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3ZkZXZfY2xh c3NpY19kaW9fcHV0KGRpb19yZXF1ZXN0X3QgKmRyKQotK3sKLSsJaW50IHJjID0gYXRvbWljX2Rl Y19yZXR1cm4oJmRyLT5kcl9yZWYpOwotKwotKwkvKgotKwkgKiBGcmVlIHRoZSBkaW9fcmVxdWVz dCB3aGVuIHRoZSBsYXN0IHJlZmVyZW5jZSBpcyBkcm9wcGVkIGFuZAotKwkgKiBlbnN1cmUgemlv X2ludGVycHJldCBpcyBjYWxsZWQgb25seSBvbmNlIHdpdGggdGhlIGNvcnJlY3QgemlvCi0rCSAq LwotKwlpZiAocmMgPT0gMCkgewotKwkJemlvX3QgKnppbyA9IGRyLT5kcl96aW87Ci0rCQlpbnQg ZXJyb3IgPSBkci0+ZHJfZXJyb3I7Ci0rCi0rCQl2ZGV2X2NsYXNzaWNfZGlvX2ZyZWUoZHIpOwot KwotKwkJaWYgKHppbykgewotKwkJCXppby0+aW9fZXJyb3IgPSBlcnJvcjsKLSsJCQlBU1NFUlQz Uyh6aW8tPmlvX2Vycm9yLCA+PSwgMCk7Ci0rCQkJaWYgKHppby0+aW9fZXJyb3IpCi0rCQkJCXZk ZXZfZGlza19lcnJvcih6aW8pOwotKwotKwkJCXppb19kZWxheV9pbnRlcnJ1cHQoemlvKTsKLSsJ CX0KLSsJfQotK30KLSsKLStCSU9fRU5EX0lPX1BST1RPKHZkZXZfY2xhc3NpY19waHlzaW9fY29t cGxldGlvbiwgYmlvLCBlcnJvcikKLSt7Ci0rCWRpb19yZXF1ZXN0X3QgKmRyID0gYmlvLT5iaV9w cml2YXRlOwotKwotKwlpZiAoZHItPmRyX2Vycm9yID09IDApIHsKLSsjaWZkZWYgSEFWRV8xQVJH X0JJT19FTkRfSU9fVAotKwkJZHItPmRyX2Vycm9yID0gQklPX0VORF9JT19FUlJPUihiaW8pOwot KyNlbHNlCi0rCQlpZiAoZXJyb3IpCi0rCQkJZHItPmRyX2Vycm9yID0gLShlcnJvcik7Ci0rCQll bHNlIGlmICghdGVzdF9iaXQoQklPX1VQVE9EQVRFLCAmYmlvLT5iaV9mbGFncykpCi0rCQkJZHIt PmRyX2Vycm9yID0gRUlPOwotKyNlbmRpZgotKwl9Ci0rCi0rCS8qIERyb3AgcmVmZXJlbmNlIGFj cXVpcmVkIGJ5IHZkZXZfY2xhc3NpY19waHlzaW8gKi8KLSsJdmRldl9jbGFzc2ljX2Rpb19wdXQo ZHIpOwotK30KLSsKLSBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludAotLXZkZXZfYmlvX21heF9z ZWdzKHppb190ICp6aW8sIGludCBiaW9fc2l6ZSwgdWludDY0X3QgYWJkX29mZnNldCkKLSt2ZGV2 X2NsYXNzaWNfYmlvX21heF9zZWdzKHppb190ICp6aW8sIGludCBiaW9fc2l6ZSwgdWludDY0X3Qg YWJkX29mZnNldCkKLSB7Ci0gCXVuc2lnbmVkIGxvbmcgbnJfc2VncyA9IGFiZF9ucl9wYWdlc19v ZmYoemlvLT5pb19hYmQsCi0gCSAgICBiaW9fc2l6ZSwgYWJkX29mZnNldCk7Ci1AQCAtNzExLDcg KzcyMCw3IEBAIHZkZXZfYmlvX21heF9zZWdzKHppb190ICp6aW8sIGludCBiaW9fc2l6ZSwgdWlu dDY0X3QgYWJkX29mZnNldCkKLSB9Ci0gCi0gc3RhdGljIGludAotLV9fdmRldl9kaXNrX3BoeXNp byhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCB6aW9fdCAqemlvLAotK3ZkZXZfY2xhc3NpY19w aHlzaW8oc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgemlvX3QgKnppbywKLSAgICAgc2l6ZV90 IGlvX3NpemUsIHVpbnQ2NF90IGlvX29mZnNldCwgaW50IHJ3LCBpbnQgZmxhZ3MpCi0gewotIAlk aW9fcmVxdWVzdF90ICpkcjsKLUBAIC03MzYsNyArNzQ1LDcgQEAgX192ZGV2X2Rpc2tfcGh5c2lv KHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHppb190ICp6aW8sCi0gCX0KLSAKLSByZXRyeToK LS0JZHIgPSB2ZGV2X2Rpc2tfZGlvX2FsbG9jKGJpb19jb3VudCk7Ci0rCWRyID0gdmRldl9jbGFz c2ljX2Rpb19hbGxvYyhiaW9fY291bnQpOwotIAotIAlpZiAoISh6aW8tPmlvX2ZsYWdzICYgKFpJ T19GTEFHX0lPX1JFVFJZIHwgWklPX0ZMQUdfVFJZSEFSRCkpICYmCi0gCSAgICB6aW8tPmlvX3Zk LT52ZGV2X2ZhaWxmYXN0ID09IEJfVFJVRSkgewotQEAgLTc3MSwyMyArNzgwLDIzIEBAIHJldHJ5 OgotIAkJICogdGhpcyBzaG91bGQgYmUgcmFyZSAtIHNlZSB0aGUgY29tbWVudCBhYm92ZS4KLSAJ CSAqLwotIAkJaWYgKGRyLT5kcl9iaW9fY291bnQgPT0gaSkgewotLQkJCXZkZXZfZGlza19kaW9f ZnJlZShkcik7Ci0rCQkJdmRldl9jbGFzc2ljX2Rpb19mcmVlKGRyKTsKLSAJCQliaW9fY291bnQg Kj0gMjsKLSAJCQlnb3RvIHJldHJ5OwotIAkJfQotIAotLQkJbnJfdmVjcyA9IHZkZXZfYmlvX21h eF9zZWdzKHppbywgYmlvX3NpemUsIGFiZF9vZmZzZXQpOwotKwkJbnJfdmVjcyA9IHZkZXZfY2xh c3NpY19iaW9fbWF4X3NlZ3MoemlvLCBiaW9fc2l6ZSwgYWJkX29mZnNldCk7Ci0gCQlkci0+ZHJf YmlvW2ldID0gdmRldl9iaW9fYWxsb2MoYmRldiwgR0ZQX05PSU8sIG5yX3ZlY3MpOwotIAkJaWYg KHVubGlrZWx5KGRyLT5kcl9iaW9baV0gPT0gTlVMTCkpIHsKLS0JCQl2ZGV2X2Rpc2tfZGlvX2Zy ZWUoZHIpOwotKwkJCXZkZXZfY2xhc3NpY19kaW9fZnJlZShkcik7Ci0gCQkJcmV0dXJuIChTRVRf RVJST1IoRU5PTUVNKSk7Ci0gCQl9Ci0gCi0tCQkvKiBNYXRjaGluZyBwdXQgY2FsbGVkIGJ5IHZk ZXZfZGlza19waHlzaW9fY29tcGxldGlvbiAqLwotLQkJdmRldl9kaXNrX2Rpb19nZXQoZHIpOwot KwkJLyogTWF0Y2hpbmcgcHV0IGNhbGxlZCBieSB2ZGV2X2NsYXNzaWNfcGh5c2lvX2NvbXBsZXRp b24gKi8KLSsJCXZkZXZfY2xhc3NpY19kaW9fZ2V0KGRyKTsKLSAKLSAJCUJJT19CSV9TRUNUT1Io ZHItPmRyX2Jpb1tpXSkgPSBiaW9fb2Zmc2V0ID4+IDk7Ci0tCQlkci0+ZHJfYmlvW2ldLT5iaV9l bmRfaW8gPSB2ZGV2X2Rpc2tfcGh5c2lvX2NvbXBsZXRpb247Ci0rCQlkci0+ZHJfYmlvW2ldLT5i aV9lbmRfaW8gPSB2ZGV2X2NsYXNzaWNfcGh5c2lvX2NvbXBsZXRpb247Ci0gCQlkci0+ZHJfYmlv W2ldLT5iaV9wcml2YXRlID0gZHI7Ci0gCQliaW9fc2V0X29wX2F0dHJzKGRyLT5kcl9iaW9baV0s IHJ3LCBmbGFncyk7Ci0gCi1AQCAtODAxLDcgKzgxMCw3IEBAIHJldHJ5OgotIAl9Ci0gCi0gCS8q IEV4dHJhIHJlZmVyZW5jZSB0byBwcm90ZWN0IGRpb19yZXF1ZXN0IGR1cmluZyB2ZGV2X3N1Ym1p dF9iaW8gKi8KLS0JdmRldl9kaXNrX2Rpb19nZXQoZHIpOwotKwl2ZGV2X2NsYXNzaWNfZGlvX2dl dChkcik7Ci0gCi0gCWlmIChkci0+ZHJfYmlvX2NvdW50ID4gMSkKLSAJCWJsa19zdGFydF9wbHVn KCZwbHVnKTsKLUBAIC04MTUsMTEgKzgyNCwxMyBAQCByZXRyeToKLSAJaWYgKGRyLT5kcl9iaW9f Y291bnQgPiAxKQotIAkJYmxrX2ZpbmlzaF9wbHVnKCZwbHVnKTsKLSAKLS0JdmRldl9kaXNrX2Rp b19wdXQoZHIpOwotKwl2ZGV2X2NsYXNzaWNfZGlvX3B1dChkcik7Ci0gCi0gCXJldHVybiAoZXJy b3IpOwotIH0KLSAKLSsvKiA9PT09PT09PT09ICovCi0rCi0gQklPX0VORF9JT19QUk9UTyh2ZGV2 X2Rpc2tfaW9fZmx1c2hfY29tcGxldGlvbiwgYmlvLCBlcnJvcikKLSB7Ci0gCXppb190ICp6aW8g PSBiaW8tPmJpX3ByaXZhdGU7Ci1AQCAtMTAyMyw3ICsxMDM0LDcgQEAgdmRldl9kaXNrX2lvX3N0 YXJ0KHppb190ICp6aW8pCi0gCX0KLSAKLSAJemlvLT5pb190YXJnZXRfdGltZXN0YW1wID0gemlv X2hhbmRsZV9pb19kZWxheSh6aW8pOwotLQllcnJvciA9IF9fdmRldl9kaXNrX3BoeXNpbyhCREhf QkRFVih2ZC0+dmRfYmRoKSwgemlvLAotKwllcnJvciA9IHZkZXZfY2xhc3NpY19waHlzaW8oQkRI X0JERVYodmQtPnZkX2JkaCksIHppbywKLSAJICAgIHppby0+aW9fc2l6ZSwgemlvLT5pb19vZmZz ZXQsIHJ3LCAwKTsKLSAJcndfZXhpdCgmdmQtPnZkX2xvY2spOwotIApkaWZmIC0tZ2l0IGEvZGVi aWFuL3BhdGNoZXMvMDAxNy12ZGV2X2Rpc2stcmVvcmdhbmlzZS12ZGV2X2Rpc2tfaW9fc3RhcnQu cGF0Y2ggYi9kZWJpYW4vcGF0Y2hlcy8wMDE3LXZkZXZfZGlzay1yZW9yZ2FuaXNlLXZkZXZfZGlz a19pb19zdGFydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNhOTQ2ZmMu LjAwMDAwMDAwCi0tLSBhL2RlYmlhbi9wYXRjaGVzLzAwMTctdmRldl9kaXNrLXJlb3JnYW5pc2Ut dmRldl9kaXNrX2lvX3N0YXJ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAK LUZyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYiBOb3JyaXMgPHJvYi5ub3JyaXNAa2xhcmFzeXN0ZW1z LmNvbT4KLURhdGU6IFR1ZSwgOSBKYW4gMjAyNCAxMjoyMzozMCArMTEwMAotU3ViamVjdDogW1BB VENIXSB2ZGV2X2Rpc2s6IHJlb3JnYW5pc2UgdmRldl9kaXNrX2lvX3N0YXJ0Ci0KLUxpZ2h0IHJl c2h1ZmZsZSB0byBtYWtlIGl0IGEgYml0IG1vcmUgbGluZWFyIHRvIHJlYWQgYW5kIGdldCByaWQg b2YgYQotYnVuY2ggb2YgYXJncyB0aGF0IGFyZW4ndCBuZWVkZWQgaW4gYWxsIGNhc2VzLgotCi1S ZXZpZXdlZC1ieTogQWxleGFuZGVyIE1vdGluIDxtYXZARnJlZUJTRC5vcmc+Ci1SZXZpZXdlZC1i eTogQnJpYW4gQmVobGVuZG9yZiA8YmVobGVuZG9yZjFAbGxubC5nb3Y+Ci1TaWduZWQtb2ZmLWJ5 OiBSb2IgTm9ycmlzIDxyb2Iubm9ycmlzQGtsYXJhc3lzdGVtcy5jb20+Ci1TcG9uc29yZWQtYnk6 IEtsYXJhLCBJbmMuCi1TcG9uc29yZWQtYnk6IFdhc2FiaSBUZWNobm9sb2d5LCBJbmMuCi1DbG9z ZXMgIzE1NTMzCi1DbG9zZXMgIzE1NTg4Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA4Njcx NzhhZTFkYjI4ZTczMDUxYzhhN2NlNjYyZjJmMmY4MWNkOGU2KQotLS0tCi0gbW9kdWxlL29zL2xp bnV4L3pmcy92ZGV2X2Rpc2suYyB8IDUxICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LQotIDEgZmlsZSBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKLQot ZGlmZiAtLWdpdCBhL21vZHVsZS9vcy9saW51eC96ZnMvdmRldl9kaXNrLmMgYi9tb2R1bGUvb3Mv bGludXgvemZzL3ZkZXZfZGlzay5jCi1pbmRleCA5NTc2MTliODcuLjUxZTdjZWYyZiAxMDA2NDQK LS0tLSBhL21vZHVsZS9vcy9saW51eC96ZnMvdmRldl9kaXNrLmMKLSsrKyBiL21vZHVsZS9vcy9s aW51eC96ZnMvdmRldl9kaXNrLmMKLUBAIC03MjAsOSArNzIwLDE2IEBAIHZkZXZfY2xhc3NpY19i aW9fbWF4X3NlZ3MoemlvX3QgKnppbywgaW50IGJpb19zaXplLCB1aW50NjRfdCBhYmRfb2Zmc2V0 KQotIH0KLSAKLSBzdGF0aWMgaW50Ci0tdmRldl9jbGFzc2ljX3BoeXNpbyhzdHJ1Y3QgYmxvY2tf ZGV2aWNlICpiZGV2LCB6aW9fdCAqemlvLAotLSAgICBzaXplX3QgaW9fc2l6ZSwgdWludDY0X3Qg aW9fb2Zmc2V0LCBpbnQgcncsIGludCBmbGFncykKLSt2ZGV2X2NsYXNzaWNfcGh5c2lvKHppb190 ICp6aW8pCi0gewotKwl2ZGV2X3QgKnYgPSB6aW8tPmlvX3ZkOwotKwl2ZGV2X2Rpc2tfdCAqdmQg PSB2LT52ZGV2X3RzZDsKLSsJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiA9IEJESF9CREVWKHZk LT52ZF9iZGgpOwotKwlzaXplX3QgaW9fc2l6ZSA9IHppby0+aW9fc2l6ZTsKLSsJdWludDY0X3Qg aW9fb2Zmc2V0ID0gemlvLT5pb19vZmZzZXQ7Ci0rCWludCBydyA9IHppby0+aW9fdHlwZSA9PSBa SU9fVFlQRV9SRUFEID8gUkVBRCA6IFdSSVRFOwotKwlpbnQgZmxhZ3MgPSAwOwotKwotIAlkaW9f cmVxdWVzdF90ICpkcjsKLSAJdWludDY0X3QgYWJkX29mZnNldDsKLSAJdWludDY0X3QgYmlvX29m ZnNldDsKLUBAIC05NDQsNyArOTUxLDcgQEAgdmRldl9kaXNrX2lvX3N0YXJ0KHppb190ICp6aW8p Ci0gewotIAl2ZGV2X3QgKnYgPSB6aW8tPmlvX3ZkOwotIAl2ZGV2X2Rpc2tfdCAqdmQgPSB2LT52 ZGV2X3RzZDsKLS0JaW50IHJ3LCBlcnJvcjsKLSsJaW50IGVycm9yOwotIAotIAkvKgotIAkgKiBJ ZiB0aGUgdmRldiBpcyBjbG9zZWQsIGl0J3MgbGlrZWx5IGluIHRoZSBSRU1PVkVEIG9yIEZBVUxU RUQgc3RhdGUuCi1AQCAtMTAwNywxMyArMTAxNCw2IEBAIHZkZXZfZGlza19pb19zdGFydCh6aW9f dCAqemlvKQotIAkJcndfZXhpdCgmdmQtPnZkX2xvY2spOwotIAkJemlvX2V4ZWN1dGUoemlvKTsK LSAJCXJldHVybjsKLS0JY2FzZSBaSU9fVFlQRV9XUklURToKLS0JCXJ3ID0gV1JJVEU7Ci0tCQli cmVhazsKLS0KLS0JY2FzZSBaSU9fVFlQRV9SRUFEOgotLQkJcncgPSBSRUFEOwotLQkJYnJlYWs7 Ci0gCi0gCWNhc2UgWklPX1RZUEVfVFJJTToKLSAJCXppby0+aW9fZXJyb3IgPSB2ZGV2X2Rpc2tf aW9fdHJpbSh6aW8pOwotQEAgLTEwMjYsMjMgKzEwMjYsMzQgQEAgdmRldl9kaXNrX2lvX3N0YXJ0 KHppb190ICp6aW8pCi0gI2VuZGlmCi0gCQlyZXR1cm47Ci0gCi0tCWRlZmF1bHQ6Ci0rCWNhc2Ug WklPX1RZUEVfUkVBRDoKLSsJY2FzZSBaSU9fVFlQRV9XUklURToKLSsJCXppby0+aW9fdGFyZ2V0 X3RpbWVzdGFtcCA9IHppb19oYW5kbGVfaW9fZGVsYXkoemlvKTsKLSsJCWVycm9yID0gdmRldl9j bGFzc2ljX3BoeXNpbyh6aW8pOwotIAkJcndfZXhpdCgmdmQtPnZkX2xvY2spOwotLQkJemlvLT5p b19lcnJvciA9IFNFVF9FUlJPUihFTk9UU1VQKTsKLS0JCXppb19pbnRlcnJ1cHQoemlvKTsKLSsJ CWlmIChlcnJvcikgewotKwkJCXppby0+aW9fZXJyb3IgPSBlcnJvcjsKLSsJCQl6aW9faW50ZXJy dXB0KHppbyk7Ci0rCQl9Ci0gCQlyZXR1cm47Ci0tCX0KLSAKLS0JemlvLT5pb190YXJnZXRfdGlt ZXN0YW1wID0gemlvX2hhbmRsZV9pb19kZWxheSh6aW8pOwotLQllcnJvciA9IHZkZXZfY2xhc3Np Y19waHlzaW8oQkRIX0JERVYodmQtPnZkX2JkaCksIHppbywKLS0JICAgIHppby0+aW9fc2l6ZSwg emlvLT5pb19vZmZzZXQsIHJ3LCAwKTsKLS0JcndfZXhpdCgmdmQtPnZkX2xvY2spOwotKwlkZWZh dWx0OgotKwkJLyoKLSsJCSAqIEdldHRpbmcgaGVyZSBtZWFucyBvdXIgcGFyZW50IHZkZXYgaGFz IG1hZGUgYSB2ZXJ5IHN0cmFuZ2UKLSsJCSAqIHJlcXVlc3Qgb2YgdXMsIGFuZCBzaG91bGRuJ3Qg aGFwcGVuLiBBc3NlcnQgaGVyZSB0byBmb3JjZSBhCi0rCQkgKiBjcmFzaCBpbiBkZXYgYnVpbGRz LCBidXQgaW4gcHJvZHVjdGlvbiByZXR1cm4gdGhlIElPCi0rCQkgKiB1bmhhbmRsZWQuIFRoZSBw b29sIHdpbGwgbGlrZWx5IHN1c3BlbmQgYW55d2F5IGJ1dCB0aGF0J3MKLSsJCSAqIG5pY2VyIHRo YW4gY3Jhc2hpbmcgdGhlIGtlcm5lbC4KLSsJCSAqLwotKwkJQVNTRVJUM1MoemlvLT5pb190eXBl LCA9PSwgLTEpOwotIAotLQlpZiAoZXJyb3IpIHsKLS0JCXppby0+aW9fZXJyb3IgPSBlcnJvcjsK LSsJCXJ3X2V4aXQoJnZkLT52ZF9sb2NrKTsKLSsJCXppby0+aW9fZXJyb3IgPSBTRVRfRVJST1Io RU5PVFNVUCk7Ci0gCQl6aW9faW50ZXJydXB0KHppbyk7Ci0gCQlyZXR1cm47Ci0gCX0KLSsKLSsJ X19idWlsdGluX3VucmVhY2hhYmxlKCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQg YS9kZWJpYW4vcGF0Y2hlcy8wMDE4LXZkZXZfZGlzay1tYWtlLXJlYWQtd3JpdGUtSU8tZnVuY3Rp b24tY29uZmlndXJhYmxlLnBhdGNoIGIvZGViaWFuL3BhdGNoZXMvMDAxOC12ZGV2X2Rpc2stbWFr ZS1yZWFkLXdyaXRlLUlPLWZ1bmN0aW9uLWNvbmZpZ3VyYWJsZS5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggYTE2OTk3OWMuLjAwMDAwMDAwCi0tLSBhL2RlYmlhbi9wYXRjaGVz LzAwMTgtdmRldl9kaXNrLW1ha2UtcmVhZC13cml0ZS1JTy1mdW5jdGlvbi1jb25maWd1cmFibGUu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1Gcm9tIDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBSb2IgTm9ycmlzIDxyb2Iubm9ycmlzQGtsYXJhc3lzdGVtcy5jb20+Ci1EYXRlOiBUdWUsIDkg SmFuIDIwMjQgMTI6Mjk6MTkgKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gdmRldl9kaXNrOiBtYWtl IHJlYWQvd3JpdGUgSU8gZnVuY3Rpb24gY29uZmlndXJhYmxlCi0KLVRoaXMgaXMganVzdCBzZXR0 aW5nIHVwIGZvciB0aGUgbmV4dCBjb3VwbGUgb2YgY29tbWl0cywgd2hpY2ggd2lsbCBhZGQgYQot bmV3IElPIGZ1bmN0aW9uIGFuZCBhIHBhcmFtZXRlciB0byBzZWxlY3QgaXQuCi0KLVJldmlld2Vk LWJ5OiBBbGV4YW5kZXIgTW90aW4gPG1hdkBGcmVlQlNELm9yZz4KLVJldmlld2VkLWJ5OiBCcmlh biBCZWhsZW5kb3JmIDxiZWhsZW5kb3JmMUBsbG5sLmdvdj4KLVNpZ25lZC1vZmYtYnk6IFJvYiBO b3JyaXMgPHJvYi5ub3JyaXNAa2xhcmFzeXN0ZW1zLmNvbT4KLVNwb25zb3JlZC1ieTogS2xhcmEs IEluYy4KLVNwb25zb3JlZC1ieTogV2FzYWJpIFRlY2hub2xvZ3ksIEluYy4KLUNsb3NlcyAjMTU1 MzMKLUNsb3NlcyAjMTU1ODgKLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGM0YTEzYmE0ODNm MDhhODFhYTQ3NDc5ZDJmNzYzYTQ3MGQ5NWIyYjApCi0tLS0KLSBtb2R1bGUvb3MvbGludXgvemZz L3ZkZXZfZGlzay5jIHwgMjMgKysrKysrKysrKysrKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdl ZCwgMjEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21vZHVs ZS9vcy9saW51eC96ZnMvdmRldl9kaXNrLmMgYi9tb2R1bGUvb3MvbGludXgvemZzL3ZkZXZfZGlz ay5jCi1pbmRleCA1MWU3Y2VmMmYuLmRlNGRiYTcyZiAxMDA2NDQKLS0tLSBhL21vZHVsZS9vcy9s aW51eC96ZnMvdmRldl9kaXNrLmMKLSsrKyBiL21vZHVsZS9vcy9saW51eC96ZnMvdmRldl9kaXNr LmMKLUBAIC05NDYsNiArOTQ2LDggQEAgdmRldl9kaXNrX2lvX3RyaW0oemlvX3QgKnppbykKLSAj ZW5kaWYKLSB9Ci0gCi0raW50ICgqdmRldl9kaXNrX2lvX3J3X2ZuKSh6aW9fdCAqemlvKSA9IE5V TEw7Ci0rCi0gc3RhdGljIHZvaWQKLSB2ZGV2X2Rpc2tfaW9fc3RhcnQoemlvX3QgKnppbykKLSB7 Ci1AQCAtMTAyOSw3ICsxMDMxLDcgQEAgdmRldl9kaXNrX2lvX3N0YXJ0KHppb190ICp6aW8pCi0g CWNhc2UgWklPX1RZUEVfUkVBRDoKLSAJY2FzZSBaSU9fVFlQRV9XUklURToKLSAJCXppby0+aW9f dGFyZ2V0X3RpbWVzdGFtcCA9IHppb19oYW5kbGVfaW9fZGVsYXkoemlvKTsKLS0JCWVycm9yID0g dmRldl9jbGFzc2ljX3BoeXNpbyh6aW8pOwotKwkJZXJyb3IgPSB2ZGV2X2Rpc2tfaW9fcndfZm4o emlvKTsKLSAJCXJ3X2V4aXQoJnZkLT52ZF9sb2NrKTsKLSAJCWlmIChlcnJvcikgewotIAkJCXpp by0+aW9fZXJyb3IgPSBlcnJvcjsKLUBAIC0xMTAyLDggKzExMDQsMjUgQEAgdmRldl9kaXNrX3Jl bGUodmRldl90ICp2ZCkKLSAJLyogWFhYOiBJbXBsZW1lbnQgbWUgYXMgYSB2bm9kZSByZWxlIGZv ciB0aGUgZGV2aWNlICovCi0gfQotIAotKy8qCi0rICogQXQgZmlyc3QgdXNlIHZkZXYgdXNlLCBz ZXQgdGhlIHN1Ym1pc3Npb24gZnVuY3Rpb24gZnJvbSB0aGUgZGVmYXVsdCB2YWx1ZSBpZgotKyAq IGl0IGhhc24ndCBiZWVuIHNldCBhbHJlYWR5LgotKyAqLwotK3N0YXRpYyBpbnQKLSt2ZGV2X2Rp c2tfaW5pdChzcGFfdCAqc3BhLCBudmxpc3RfdCAqbnYsIHZvaWQgKip0c2QpCi0rewotKwkodm9p ZCkgc3BhOwotKwkodm9pZCkgbnY7Ci0rCSh2b2lkKSB0c2Q7Ci0rCi0rCWlmICh2ZGV2X2Rpc2tf aW9fcndfZm4gPT0gTlVMTCkKLSsJCXZkZXZfZGlza19pb19yd19mbiA9IHZkZXZfY2xhc3NpY19w aHlzaW87Ci0rCi0rCXJldHVybiAoMCk7Ci0rfQotKwotIHZkZXZfb3BzX3QgdmRldl9kaXNrX29w cyA9IHsKLS0JLnZkZXZfb3BfaW5pdCA9IE5VTEwsCi0rCS52ZGV2X29wX2luaXQgPSB2ZGV2X2Rp c2tfaW5pdCwKLSAJLnZkZXZfb3BfZmluaSA9IE5VTEwsCi0gCS52ZGV2X29wX29wZW4gPSB2ZGV2 X2Rpc2tfb3BlbiwKLSAJLnZkZXZfb3BfY2xvc2UgPSB2ZGV2X2Rpc2tfY2xvc2UsCmRpZmYgLS1n aXQgYS9kZWJpYW4vcGF0Y2hlcy8wMDE5LXZkZXZfZGlzay1yZXdyaXRlLUJJTy1maWxsaW5nLW1h Y2hpbmVyeS10by1hdm9pZC1zcGwucGF0Y2ggYi9kZWJpYW4vcGF0Y2hlcy8wMDE5LXZkZXZfZGlz ay1yZXdyaXRlLUJJTy1maWxsaW5nLW1hY2hpbmVyeS10by1hdm9pZC1zcGwucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjY2JmNjU1Li4wMDAwMDAwMAotLS0gYS9kZWJpYW4v cGF0Y2hlcy8wMDE5LXZkZXZfZGlzay1yZXdyaXRlLUJJTy1maWxsaW5nLW1hY2hpbmVyeS10by1h dm9pZC1zcGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NzEgKzAsMCBAQAotRnJvbSAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogUm9iIE5vcnJpcyA8cm9iLm5vcnJpc0BrbGFyYXN5c3RlbXMuY29tPgotRGF0 ZTogVHVlLCAxOCBKdWwgMjAyMyAxMToxMToyOSArMTAwMAotU3ViamVjdDogW1BBVENIXSB2ZGV2 X2Rpc2s6IHJld3JpdGUgQklPIGZpbGxpbmcgbWFjaGluZXJ5IHRvIGF2b2lkIHNwbGl0IHBhZ2Vz Ci0KLVRoaXMgY29tbWl0IHRhY2tsZXMgYSBudW1iZXIgb2YgaXNzdWVzIGluIHRoZSB3YXkgQklP cyAoYHN0cnVjdCBiaW9gKQotYXJlIGNvbnN0cnVjdGVkIGZvciBzdWJtaXNzaW9uIHRvIHRoZSBM aW51eCBibG9jayBsYXllci4KLQotVGhlIGtlcm5lbCBoYXMgYSBoYXJkIHVwcGVyIGxpbWl0IG9u IHRoZSBudW1iZXIgb2YgcGFnZXMvc2VnbWVudHMgdGhhdAotY2FuIGJlIGFkZGVkIHRvIGEgQklP LCBhcyB3ZWxsIGFzIGEgc2VwYXJhdGUgbGltaXQgZm9yIGVhY2ggZGV2aWNlCi0ocmVsYXRlZCB0 byBpdHMgcXVldWUgZGVwdGggYW5kIG90aGVyIHNjaGVkdWxpbmcgY2hhcmFjdGVyaXN0aWNzKS4K LQotWkZTIGNvdW50cyB0aGUgbnVtYmVyIG9mIG1lbW9yeSBwYWdlcyBpbiB0aGUgcmVxdWVzdCBB QkQKLShgYWJkX25yX3BhZ2VzX29mZigpYCwgYW5kIHRoZW4gdXNlcyB0aGF0IGFzIHRoZSBudW1i ZXIgb2Ygc2VnbWVudHMgdG8KLXB1dCBpbnRvIHRoZSBCSU8sIHVwIHRvIHRoZSBoYXJkIHVwcGVy IGxpbWl0LiBJZiBpdCByZXF1aXJlcyBtb3JlIHRoYW4KLXRoZSBsaW1pdCwgaXQgd2lsbCBjcmVh dGUgbXVsdGlwbGUgQklPcy4KLQotTGVhdmluZyBhc2lkZSB0aGUgZmFjdCB0aGF0IHBhZ2UgY291 bnQgbWV0aG9kIGlzIHdyb25nIChzZWUgYmVsb3cpLCBub3QKLWxpbWl0aW5nIHRvIHRoZSBkZXZp Y2Ugc2VnbWVudCBtYXggbWVhbnMgdGhhdCB0aGUgZGV2aWNlIGRyaXZlciB3aWxsCi1uZWVkIHRv IHNwbGl0IHRoZSBCSU8gaW4gaGFsZi4gVGhpcyBpcyBhbG9uZSBpcyBub3QgbmVjZXNzYXJpbHkg YQotcHJvYmxlbSwgYnV0IGl0IGludGVyYWN0cyB3aXRoIGFub3RoZXIgaXNzdWUgdG8gY2F1c2Ug YSBtdWNoIGxhcmdlcgotcHJvYmxlbS4KLQotVGhlIGtlcm5lbCBmdW5jdGlvbiB0byBhZGQgYSBz ZWdtZW50IHRvIGEgQklPIChgYmlvX2FkZF9wYWdlKClgKSB0YWtlcyBhCi1gc3RydWN0IHBhZ2Vg IHBvaW50ZXIsIGFuZCBvZmZzZXQrbGVuIHdpdGhpbiBpdC4gYHN0cnVjdCBwYWdlYCBjYW4KLXJl cHJlc2VudCBhIHJ1biBvZiBjb250aWd1b3VzIG1lbW9yeSBwYWdlcyAoa25vd24gYXMgYSAiY29t cG91bmQgcGFnZSIpLgotSW4gY2FuIGJlIG9mIGFyYml0cmFyeSBsZW5ndGguCi0KLVRoZSBaRlMg ZnVuY3Rpb25zIHRoYXQgY291bnQgQUJEIHBhZ2VzIGFuZCBsb2FkIHRoZW0gaW50byB0aGUgQklP Ci0oYGFiZF9ucl9wYWdlc19vZmYoKWAsIGBiaW9fbWFwKClgIGFuZCBgYWJkX2Jpb19tYXBfb2Zm KClgKSB3aWxsIG5ldmVyCi1jb25zaWRlciBhIHBhZ2UgdG8gYmUgbW9yZSB0aGFuIGBQQUdFX1NJ WkVgICg0SyksIGV2ZW4gaWYgdGhlIGBzdHJ1Y3QKLXBhZ2VgIGlzIGZvciBtdWx0aXBsZSBwYWdl cy4gSW4gdGhpcyBjYXNlLCBpdCB3aWxsIGxvYWQgdGhlIHNhbWUgYHN0cnVjdAotcGFnZWAgaW50 byB0aGUgQklPIG11bHRpcGxlIHRpbWVzLCB3aXRoIHRoZSBvZmZzZXQgYWRqdXN0ZWQgZWFjaCB0 aW1lLgotCi1XaXRoIGEgc3VmZmljaWVudGx5IGxhcmdlIEFCRCwgdGhpcyBjYW4gZWFzaWx5IGxl YWQgdG8gdGhlIEJJTyBiZWluZwotZW50aXJlbHkgZmlsbGVkIG11Y2ggZWFybGllciB0aGFuIGl0 IGNvdWxkIGhhdmUgYmVlbi4gVGhpcyBpcyBhbHNvCi1mdXJ0aGVyIGNvbnRyaWJ1dGVzIHRvIHRo ZSBwcm9ibGVtIGNhdXNlZCBieSB0aGUgaW5jb3JyZWN0IHNlZ21lbnQgbGltaXQKLWNhbGN1bGF0 aW9uLCBhcyBpdHMgbXVjaCBlYXNpZXIgdG8gZ28gcGFzdCB0aGUgZGV2aWNlIGxpbWl0LCBhbmQg c28KLXJlcXVpcmUgYSBzcGxpdC4KLQotQWdhaW4sIHRoaXMgaXMgbm90IGEgcHJvYmxlbSBvbiBp dHMgb3duLgotCi1UaGUgbG9naWMgZm9yICJuZXZlciBzdWJtaXQgbW9yZSB0aGFuIGBQQUdFX1NJ WkVgIiBpcyBhY3R1YWxseSBhIGxpdHRsZQotbW9yZSBzdWJ0bGUuIEl0IHdpbGwgYWN0dWFsbHkg bmV2ZXIgc3VibWl0IGEgYnVmZmVyIHRoYXQgY3Jvc3NlcyBhIDRLCi1wYWdlIGJvdW5kYXJ5Lgot Ci1JbiBwcmFjdGljZSwgdGhpcyBpcyBmaW5lLCBhcyBtb3N0IEFCRHMgYXJlIHNjYXR0ZXJlZCwg dGhhdCBpcyBhIGxpc3Qgb2YKLWNvbXBsZXRlIDRLIHBhZ2VzLCBhbmQgc28gYXJlIGxvYWRlZCBp biBhcyBzdWNoLgotCi1MaW5lYXIgQUJEcyBhcmUgdHlwaWNhbGx5IGFsbG9jYXRlZCBmcm9tIHNs YWJzLCBhbmQgZm9yIHNtYWxsIHNpemVzIHRoZXkKLWFyZSBmcmVxdWVudGx5IG5vdCBhbGlnbmVk IHRvIHBhZ2UgYm91bmRhcmllcy4gRm9yIGV4YW1wbGUsIGEgMTJLCi1hbGxvY2F0aW9uIGNhbiBz cGFuIGZvdXIgcGFnZXMsIGVnOgotCi0gICAgIC0tIDRLIC0tIC0tIDRLIC0tIC0tIDRLIC0tIC0t IDRLIC0tCi0gICAgfCAgICAgICAgfCAgICAgICAgfCAgICAgICAgfCAgICAgICAgfAotICAgICAg ICAgIDojIyAjIyMjIyMjIyAjIyMjIyMjIyAjIyMjIyM6ICAgIFsxSywgNEssIDRLLCAzS10KLQot U3VjaCBhbiBhbGxvY2F0aW9uIHdvdWxkIGJlIGxvYWRlZCBpbnRvIGEgQklPIGFzIHlvdSBzZWU6 Ci0KLSAgICBbMUssIDRLLCA0SywgM0tdCi0KLVRoaXMgdGVuZHMgbm90IHRvIGJlIGEgcHJvYmxl bSBpbiBwcmFjdGljZSwgYmVjYXVzZSBldmVuIGlmIHRoZSBCSU8gd2VyZQotZmlsbGVkIGFuZCBu ZWVkZWQgdG8gYmUgc3BsaXQsIGVhY2ggaGFsZiB3b3VsZCBzdGlsbCBoYXZlIGVpdGhlciBhIHN0 YXJ0Ci1vciBlbmQgYWxpZ25lZCB0byB0aGUgbG9naWNhbCBibG9jayBzaXplIG9mIHRoZSBkZXZp Y2UgKGFzc3VtaW5nIDRLIGF0Ci1sZWFzdCkuCi0KLS0tLQotCi1JbiBpZGVhbCBjaXJjdW1zdGFu Y2VzLCB0aGVzZSBzaG9ydGNvbWluZ3MgZG9uJ3QgY2F1c2UgYW55IHBhcnRpY3VsYXIKLXByb2Js ZW1zLiBJdHMgd2hlbiB0aGV5IHN0YXJ0IHRvIGludGVyYWN0IHdpdGggb3RoZXIgWkZTIGZlYXR1 cmVzIHRoYXQKLXRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuCi0KLUFnZ3JlZ2F0aW9uIHdpbGwgY3Jl YXRlIGEgImdhbmciIEFCRCwgd2hpY2ggaXMgc2ltcGx5IGEgbGlzdCBvZiBvdGhlcgotQUJEcy4g SXRlcmF0aW5nIG92ZXIgYSBnYW5nIEFCRCBpcyBqdXN0IGl0ZXJhdGluZyBvdmVyIGVhY2ggQUJE IHdpdGhpbgotaXQgaW4gdHVybi4KLQotQmVjYXVzZSB0aGUgc2VnbWVudHMgYXJlIHNpbXBseSBs b2FkZWQgaW4gb3JkZXIsIHdlIGNhbiBlbmQgdXAgd2l0aAotdW5ldmVuIHNlZ21lbnRzIGVpdGhl ciBzaWRlIG9mIHRoZSAiZ2FwIiBiZXR3ZWVuIHRoZSB0d28gQUJEcy4gRm9yCi1leGFtcGxlLCB0 d28gMTJLIEFCRHMgbWlnaHQgYmUgYWdncmVnYXRlZCBhbmQgdGhlbiBsb2FkZWQgYXM6Ci0KLSAg ICBbMUssIDRLLCA0SywgM0ssIDJLLCA0SywgNEssIDJLXQotCi1TaG91bGQgYSBzcGxpdCBvY2N1 ciwgZWFjaCBpbmRpdmlkdWFsIEJJTyBjYW4gZW5kIHVwIGVpdGhlciBoYXZpbmcgYW4KLXN0YXJ0 IG9yIGVuZCBvZmZzZXQgdGhhdCBpcyBub3QgYWxpZ25lZCB0byB0aGUgbG9naWNhbCBibG9jayBz aXplLCB3aGljaAotc29tZSBkcml2ZXJzIChlZyBTQ1NJKSB3aWxsIHJlamVjdC4gSG93ZXZlciwg dGhpcyB0ZW5kcyBub3QgdG8gaGFwcGVuCi1iZWNhdXNlIHRoZSBkZWZhdWx0IGFnZ3JlZ2F0aW9u IGxpbWl0IHVzdWFsbHkga2VlcHMgdGhlIEJJTyBzbWFsbCBlbm91Z2gKLXRvIG5vdCByZXF1aXJl IG1vcmUgdGhhbiBvbmUgc3BsaXQsIGFuZCBtb3N0IHBhZ2VzIGFyZSBhY3R1YWxseSBmdWxsIDRL Ci1wYWdlcywgc28gaGl0dGluZyBhbiB1bmV2ZW4gZ2FwIGlzIHZlcnkgcmFyZSBhbnl3YXkuCi0K LUlmIHRoZSBwb29sIGlzIHVuZGVyIHBhcnRpY3VsYXIgbWVtb3J5IHByZXNzdXJlLCB0aGVuIGFu IElPIGNhbiBiZQotYnJva2VuIGRvd24gaW50byBhICJnYW5nIGJsb2NrIiwgYSA1MTItYnl0ZSBi bG9jayBjb21wb3NlZCBvZiBhIGhlYWRlcgotYW5kIHVwIHRvIHRocmVlIGJsb2NrIHBvaW50ZXJz LiBFYWNoIHBvaW50cyB0byBhIGZyYWdtZW50IG9mIHRoZQotb3JpZ2luYWwgd3JpdGUsIG9yIGlu IHR1cm4sIGFub3RoZXIgZ2FuZyBibG9jaywgYnJlYWtpbmcgdGhlIG9yaWdpbmFsCi1kYXRhIHVw IG92ZXIgYW5kIG92ZXIgdW50aWwgc3BhY2UgY2FuIGJlIGZvdW5kIGluIHRoZSBwb29sIGZvciBl YWNoIG9mCi10aGVtLgotCi1FYWNoIGdhbmcgaGVhZGVyIGlzIGEgc2VwYXJhdGUgNTEyLWJ5dGUg bWVtb3J5IGFsbG9jYXRpb24gZnJvbSBhIHNsYWIsCi10aGF0IG5lZWRzIHRvIGJlIHdyaXR0ZW4g ZG93biB0byBkaXNrLiBXaGVuIHRoZSBnYW5nIGhlYWRlciBpcyBhZGRlZCB0bwotdGhlIEJJTywg aXRzIGEgc2luZ2xlIDUxMi1ieXRlIHNlZ21lbnQuCi0KLVB1bGxpbmcgYWxsIHRoaXMgdG9nZXRo ZXIsIGNvbnNpZGVyIGEgbGFyZ2UgYWdncmVnYXRlZCB3cml0ZSBvZiBnYW5nCi1ibG9ja3MuIFRo aXMgcmVzdWx0cyBhIEJJTyBjb250YWluaW5nIGxvdHMgb2YgNTEyLWJ5dGUgc2VnbWVudHMuIEdp dmVuCi1vdXIgdGVuZGVuY3kgdG8gb3ZlcmZpbGwgdGhlIEJJTywgYSBzcGxpdCBpcyBsaWtlbHks IGFuZCBtb3N0IHBvc3NpYmxlCi1zcGxpdCBwb2ludHMgd2lsbCB5aWVsZCBhIHBhaXIgb2YgQklP cyB0aGF0IGFyZSBtaXNhbGlnbmVkLiBEcml2ZXJzIHRoYXQKLWNhcmUsIGxpa2UgdGhlIFNDU0kg ZHJpdmVyLCB3aWxsIHJlamVjdCB0aGVtLgotCi0tLS0KLQotVGhpcyBjb21taXQgaXMgYSBzdWJz dGFudGlhbCByZWZhY3RvciBhbmQgcmV3cml0ZSBvZiBtdWNoIG9mIGB2ZGV2X2Rpc2tgCi10byBz b3J0IGFsbCB0aGlzIG91dC4KLQotYHZkZXZfYmlvX21heF9zZWdzKClgIG5vdyByZXR1cm5zIHRo ZSBpZGVhbCBtYXhpbXVtIHNpemUgZm9yIHRoZSBkZXZpY2UsCi1pZiBhdmFpbGFibGUuIFRoZXJl J3MgYWxzbyBhIHR1bmVhYmxlIGB6ZnNfdmRldl9kaXNrX21heF9zZWdzYCB0bwotb3ZlcnJpZGUg dGhpcywgdG8gYXNzaXN0IHdpdGggdGVzdGluZy4KLQotV2Ugc2NhbiB0aGUgQUJEIHVwIGZyb250 IHRvIGNvdW50IHRoZSBudW1iZXIgb2YgcGFnZXMgd2l0aGluIGl0LCBhbmQgdG8KLWNvbmZpcm0g dGhhdCBpZiB3ZSBzdWJtaXR0ZWQgYWxsIHRob3NlIHBhZ2VzIHRvIG9uZSBvciBtb3JlIEJJT3Ms IGl0Ci1jb3VsZCBiZSBzcGxpdCBhdCBhbnkgcG9pbnQgd2l0aCBjcmVhdGluZyBhIG1pc2FsaWdu ZWQgQklPLiAgSWYgdGhlCi1wYWdlcyBpbiB0aGUgQklPIGFyZSBub3QgdXNhYmxlIChhcyBpbiBh bnkgb2YgdGhlIGFib3ZlIHNpdHVhdGlvbnMpLCB0aGUKLUFCRCBpcyBsaW5lYXJpc2VkLCBhbmQg dGhlbiBjaGVja2VkIGFnYWluLiBUaGlzIGlzIHRoZSBzYW1lIHRlY2huaXF1ZQotdXNlZCBpbiBg dmRldl9nZW9tYCBvbiBGcmVlQlNELCBhZGp1c3RlZCBmb3IgTGludXgncyB2YXJpYWJsZSBwYWdl IHNpemUKLWFuZCBhbGxvY2F0b3IgcXVpcmtzLgotCi1gdmJpb190YCBpcyBhIGNsZWFudXAgYW5k IGVuaGFuY2VtZW50IG9mIHRoZSBvbGQgYGRpb19yZXF1ZXN0X3RgLiBUaGUKLWlkZWEgaXMgc2lt cGx5IHRoYXQgaXQgY2FuIGhvbGQgYWxsIHRoZSBzdGF0ZSBuZWVkZWQgdG8gY3JlYXRlLCBzdWJt aXQKLWFuZCByZXR1cm4gbXVsdGlwbGUgQklPcywgaW5jbHVkaW5nIGFsbCB0aGUgcmVmY291bnRz LCB0aGUgQUJEIGNvcHkgaWYKLWl0IHdhcyBuZWVkZWQsIGFuZCBzbyBvbi4gQXBhcnQgZnJvbSB3 aGF0IEkgaG9wZSBpcyBhIGNsZWFyZXIgaW50ZXJmYWNlLAotdGhlIG1ham9yIGRpZmZlcmVuY2Ug aXMgdGhhdCBiZWNhdXNlIHdlIGtub3cgaG93IG1hbnkgQklPcyB3ZSdsbCBuZWVkIHVwCi1mcm9u dCwgd2UgZG9uJ3QgbmVlZCB0aGUgb2xkIG92ZXJmbG93IGxvZ2ljIHRoYXQgd291bGQgZ3JvdyB0 aGUgQklPCi1hcnJheSwgdGhyb3cgYXdheSBhbGwgdGhlIG9sZCB3b3JrIGFuZCByZXN0YXJ0LiBX ZSBjYW4gZ2V0IGl0IHJpZ2h0IGZyb20KLXRoZSBzdGFydC4KLQotUmV2aWV3ZWQtYnk6IEFsZXhh bmRlciBNb3RpbiA8bWF2QEZyZWVCU0Qub3JnPgotUmV2aWV3ZWQtYnk6IEJyaWFuIEJlaGxlbmRv cmYgPGJlaGxlbmRvcmYxQGxsbmwuZ292PgotU2lnbmVkLW9mZi1ieTogUm9iIE5vcnJpcyA8cm9i Lm5vcnJpc0BrbGFyYXN5c3RlbXMuY29tPgotU3BvbnNvcmVkLWJ5OiBLbGFyYSwgSW5jLgotU3Bv bnNvcmVkLWJ5OiBXYXNhYmkgVGVjaG5vbG9neSwgSW5jLgotQ2xvc2VzICMxNTUzMwotQ2xvc2Vz ICMxNTU4OAotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMDZhMTk2MDIwZTZmNzBkMmZlZGJk NGQwZDA1YmJlMGMxYWM2ZTRkOCkKLS0tLQotIGluY2x1ZGUvb3MvbGludXgva2VybmVsL2xpbnV4 L21vZF9jb21wYXQuaCB8ICAgMSArCi0gbWFuL21hbjQvemZzLjQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDEwICstCi0gbW9kdWxlL29zL2xpbnV4L3pmcy92ZGV2X2Rpc2suYyAgICAg ICAgICAgIHwgNDM5ICsrKysrKysrKysrKysrKysrKysrLQotIDMgZmlsZXMgY2hhbmdlZCwgNDQ3 IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL29z L2xpbnV4L2tlcm5lbC9saW51eC9tb2RfY29tcGF0LmggYi9pbmNsdWRlL29zL2xpbnV4L2tlcm5l bC9saW51eC9tb2RfY29tcGF0LmgKLWluZGV4IDhlMjBhOTYxMy4uMDM5ODY1YjcwIDEwMDY0NAot LS0tIGEvaW5jbHVkZS9vcy9saW51eC9rZXJuZWwvbGludXgvbW9kX2NvbXBhdC5oCi0rKysgYi9p bmNsdWRlL29zL2xpbnV4L2tlcm5lbC9saW51eC9tb2RfY29tcGF0LmgKLUBAIC02OCw2ICs2OCw3 IEBAIGVudW0gc2NvcGVfcHJlZml4X3R5cGVzIHsKLSAJemZzX3RyaW0sCi0gCXpmc190eGcsCi0g CXpmc192ZGV2LAotKwl6ZnNfdmRldl9kaXNrLAotIAl6ZnNfdmRldl9maWxlLAotIAl6ZnNfdmRl dl9taXJyb3IsCi0gCXpmc192bm9wcywKLWRpZmYgLS1naXQgYS9tYW4vbWFuNC96ZnMuNCBiL21h bi9tYW40L3pmcy40Ci1pbmRleCAzNTI5OTBlMDIuLmI1Njc5ZjJmMCAxMDA2NDQKLS0tLSBhL21h bi9tYW40L3pmcy40Ci0rKysgYi9tYW4vbWFuNC96ZnMuNAotQEAgLTIsNiArMiw3IEBACi0gLlwi IENvcHlyaWdodCAoYykgMjAxMyBieSBUdXJibyBGcmVkcmlrc3NvbiA8dHVyYm9AYmF5b3VyLmNv bT4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gLlwiIENvcHlyaWdodCAoYykgMjAxOSwgMjAyMSBi eSBEZWxwaGl4LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIC5cIiBDb3B5cmlnaHQgKGMpIDIwMTkg RGF0dG8gSW5jLgotKy5cIiBDb3B5cmlnaHQgKGMpIDIwMjMsIDIwMjQgS2xhcmEsIEluYy4KLSAu XCIgVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgdGVybXMgb2Yg dGhlIENvbW1vbiBEZXZlbG9wbWVudAotIC5cIiBhbmQgRGlzdHJpYnV0aW9uIExpY2Vuc2UgKHRo ZSAiTGljZW5zZSIpLiAgWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQKLSAuXCIgaW4g Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgY2FuIG9idGFpbiBhIGNvcHkgb2YgdGhl IGxpY2Vuc2UgYXQKLUBAIC0xNSw3ICsxNiw3IEBACi0gLlwiIG93biBpZGVudGlmeWluZyBpbmZv cm1hdGlvbjoKLSAuXCIgUG9ydGlvbnMgQ29weXJpZ2h0IFt5eXl5XSBbbmFtZSBvZiBjb3B5cmln aHQgb3duZXJdCi0gLlwiCi0tLkRkIEp1bHkgMjEsIDIwMjMKLSsuRGQgSmFudWFyeSA5LCAyMDI0 Ci0gLkR0IFpGUyA0Ci0gLk9zCi0gLgotQEAgLTEzNDUsNiArMTM0NiwxMyBAQCBfCi0gCTQJRHJp dmVyCU5vIGRyaXZlciByZXRyaWVzIG9uIGRyaXZlciBlcnJvcnMuCi0gLlRFCi0gLgotKy5JdCBT eSB6ZnNfdmRldl9kaXNrX21heF9zZWdzIE5zID0gTnMgU3kgMCBQcSB1aW50Ci0rTWF4aW11bSBu dW1iZXIgb2Ygc2VnbWVudHMgdG8gYWRkIHRvIGEgQklPIChtaW4gNCkuCi0rSWYgdGhpcyBpcyBo aWdoZXIgdGhhbiB0aGUgbWF4aW11bSBhbGxvd2VkIGJ5IHRoZSBkZXZpY2UgcXVldWUgb3IgdGhl IGtlcm5lbAotK2l0c2VsZiwgaXQgd2lsbCBiZSBjbGFtcGVkLgotK1NldHRpbmcgaXQgdG8gemVy byB3aWxsIGNhdXNlIHRoZSBrZXJuZWwncyBpZGVhbCBzaXplIHRvIGJlIHVzZWQuCi0rVGhpcyBw YXJhbWV0ZXIgb25seSBhcHBsaWVzIG9uIExpbnV4LgotKy4KLSAuSXQgU3kgemZzX2V4cGlyZV9z bmFwc2hvdCBOcyA9IE5zIFN5IDMwMCBOcyBzIFBxIGludAotIFRpbWUgYmVmb3JlIGV4cGlyaW5n Ci0gLlBhIC56ZnMvc25hcHNob3QgLgotZGlmZiAtLWdpdCBhL21vZHVsZS9vcy9saW51eC96ZnMv dmRldl9kaXNrLmMgYi9tb2R1bGUvb3MvbGludXgvemZzL3ZkZXZfZGlzay5jCi1pbmRleCBkZTRk YmE3MmYuLjBjY2I5YWQ5NiAxMDA2NDQKLS0tLSBhL21vZHVsZS9vcy9saW51eC96ZnMvdmRldl9k aXNrLmMKLSsrKyBiL21vZHVsZS9vcy9saW51eC96ZnMvdmRldl9kaXNrLmMKLUBAIC0yNCw2ICsy NCw3IEBACi0gICogUmV3cml0dGVuIGZvciBMaW51eCBieSBCcmlhbiBCZWhsZW5kb3JmIDxiZWhs ZW5kb3JmMUBsbG5sLmdvdj4uCi0gICogTExOTC1DT0RFLTQwMzA0OS4KLSAgKiBDb3B5cmlnaHQg KGMpIDIwMTIsIDIwMTkgYnkgRGVscGhpeC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKiBDb3B5 cmlnaHQgKGMpIDIwMjMsIDIwMjQsIEtsYXJhIEluYy4KLSAgKi8KLSAKLSAjaW5jbHVkZSA8c3lz L3pmc19jb250ZXh0Lmg+Ci1AQCAtNjYsNiArNjcsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgdmRldl9k aXNrIHsKLSAJa3J3bG9ja190CQkJdmRfbG9jazsKLSB9IHZkZXZfZGlza190OwotIAotKy8qCi0r ICogTWF4aW11bSBudW1iZXIgb2Ygc2VnbWVudHMgdG8gYWRkIHRvIGEgYmlvIChtaW4gNCkuIElm IHRoaXMgaXMgaGlnaGVyIHRoYW4KLSsgKiB0aGUgbWF4aW11bSBhbGxvd2VkIGJ5IHRoZSBkZXZp Y2UgcXVldWUgb3IgdGhlIGtlcm5lbCBpdHNlbGYsIGl0IHdpbGwgYmUKLSsgKiBjbGFtcGVkLiBT ZXR0aW5nIGl0IHRvIHplcm8gd2lsbCBjYXVzZSB0aGUga2VybmVsJ3MgaWRlYWwgc2l6ZSB0byBi ZSB1c2VkLgotKyAqLwotK3VpbnRfdCB6ZnNfdmRldl9kaXNrX21heF9zZWdzID0gMDsKLSsKLSAv KgotICAqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZXhjbHVzaXZlIHZkZXYgaG9sZGVyLgot ICAqLwotQEAgLTYwNywxMCArNjE1LDQzMyBAQCB2ZGV2X2Jpb19hbGxvYyhzdHJ1Y3QgYmxvY2tf ZGV2aWNlICpiZGV2LCBnZnBfdCBnZnBfbWFzaywKLSAJcmV0dXJuIChiaW8pOwotIH0KLSAKLStz dGF0aWMgaW5saW5lIHVpbnRfdAotK3ZkZXZfYmlvX21heF9zZWdzKHN0cnVjdCBibG9ja19kZXZp Y2UgKmJkZXYpCi0rewotKwkvKgotKwkgKiBTbWFsbGVzdCBvZiB0aGUgZGV2aWNlIG1heCBzZWdz IGFuZCB0aGUgdHVuZWFibGUgbWF4IHNlZ3MuIE1pbmltdW0KLSsJICogNCwgc28gdGhlcmUncyBy b29tIHRvIGZpbmlzaCBzcGxpdCBwYWdlcyBpZiB0aGV5IGNvbWUgdXAuCi0rCSAqLwotKwljb25z dCB1aW50X3QgZGV2X21heF9zZWdzID0gcXVldWVfbWF4X3NlZ21lbnRzKGJkZXZfZ2V0X3F1ZXVl KGJkZXYpKTsKLSsJY29uc3QgdWludF90IHR1bmVfbWF4X3NlZ3MgPSAoemZzX3ZkZXZfZGlza19t YXhfc2VncyA+IDApID8KLSsJICAgIE1BWCg0LCB6ZnNfdmRldl9kaXNrX21heF9zZWdzKSA6IGRl dl9tYXhfc2VnczsKLSsJY29uc3QgdWludF90IG1heF9zZWdzID0gTUlOKHR1bmVfbWF4X3NlZ3Ms IGRldl9tYXhfc2Vncyk7Ci0rCi0rI2lmZGVmIEhBVkVfQklPX01BWF9TRUdTCi0rCXJldHVybiAo YmlvX21heF9zZWdzKG1heF9zZWdzKSk7Ci0rI2Vsc2UKLSsJcmV0dXJuIChNSU4obWF4X3NlZ3Ms IEJJT19NQVhfUEFHRVMpKTsKLSsjZW5kaWYKLSt9Ci0rCi0rc3RhdGljIGlubGluZSB1aW50X3QK LSt2ZGV2X2Jpb19tYXhfYnl0ZXMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKLSt7Ci0rCXJl dHVybiAocXVldWVfbWF4X3NlY3RvcnMoYmRldl9nZXRfcXVldWUoYmRldikpIDw8IDkpOwotK30K LSsKLSsKLSsvKgotKyAqIFZpcnR1YWwgYmxvY2sgSU8gb2JqZWN0IChWQklPKQotKyAqCi0rICog TGludXggYmxvY2sgSU8gKEJJTykgb2JqZWN0cyBoYXZlIGEgbGltaXQgb24gaG93IG1hbnkgZGF0 YSBzZWdtZW50cyAocGFnZXMpCi0rICogdGhleSBjYW4gaG9sZC4gRGVwZW5kaW5nIG9uIGhvdyB0 aGV5J3JlIGFsbG9jYXRlZCBhbmQgc3RydWN0dXJlZCwgYSBsYXJnZQotKyAqIFpJTyBjYW4gcmVx dWlyZSBtb3JlIHRoYW4gb25lIEJJTyB0byBiZSBzdWJtaXR0ZWQgdG8gdGhlIGtlcm5lbCwgd2hp Y2ggdGhlbgotKyAqIGFsbCBoYXZlIHRvIGNvbXBsZXRlIGJlZm9yZSB3ZSBjYW4gcmV0dXJuIHRo ZSBjb21wbGV0ZWQgWklPIGJhY2sgdG8gWkZTLgotKyAqCi0rICogQSBWQklPIGlzIGEgd3JhcHBl ciBhcm91bmQgbXVsdGlwbGUgQklPcywgY2FycnlpbmcgZXZlcnl0aGluZyBuZWVkZWQgdG8KLSsg KiB0cmFuc2xhdGUgYSBaSU8gZG93biBpbnRvIHRoZSBrZXJuZWwgYmxvY2sgbGF5ZXIgYW5kIGJh Y2sgYWdhaW4uCi0rICoKLSsgKiBOb3RlIHRoYXQgdGhlc2UgYXJlIG9ubHkgdXNlZCBmb3IgZGF0 YSBaSU9zIChyZWFkL3dyaXRlKS4gTWV0YS1vcGVyYXRpb25zCi0rICogKGZsdXNoL3RyaW0pIGRv bid0IG5lZWQgbXVsdGlwbGUgQklPcyBhbmQgc28gY2FuIGp1c3QgbWFrZSB0aGUgY2FsbAotKyAq IGRpcmVjdGx5LgotKyAqLwotK3R5cGVkZWYgc3RydWN0IHsKLSsJemlvX3QJCSp2YmlvX3ppbzsJ LyogcGFyZW50IHppbyAqLwotKwotKwlzdHJ1Y3QgYmxvY2tfZGV2aWNlICp2YmlvX2JkZXY7CS8q IGJsb2NrZGV2IHRvIHN1Ym1pdCBiaW9zIHRvICovCi0rCi0rCWFiZF90CQkqdmJpb19hYmQ7CS8q IGFiZCBjYXJyeWluZyBib3Jyb3dlZCBsaW5lYXIgYnVmICovCi0rCi0rCWF0b21pY190CXZiaW9f cmVmOwkvKiBiaW8gcmVmY291bnQgKi8KLSsJaW50CQl2YmlvX2Vycm9yOwkvKiBlcnJvciBmcm9t IGZhaWxlZCBiaW8gKi8KLSsKLSsJdWludF90CQl2YmlvX21heF9zZWdzOwkvKiBtYXggc2VncyBw ZXIgYmlvICovCi0rCi0rCXVpbnRfdAkJdmJpb19tYXhfYnl0ZXM7CS8qIG1heCBieXRlcyBwZXIg YmlvICovCi0rCXVpbnRfdAkJdmJpb19sYnNfbWFzazsJLyogbG9naWNhbCBibG9jayBzaXplIG1h c2sgKi8KLSsKLSsJdWludDY0X3QJdmJpb19vZmZzZXQ7CS8qIHN0YXJ0IG9mZnNldCBvZiBuZXh0 IGJpbyAqLwotKwotKwlzdHJ1Y3QgYmlvCSp2YmlvX2JpbzsJLyogcG9pbnRlciB0byB0aGUgY3Vy cmVudCBiaW8gKi8KLSsJc3RydWN0IGJpbwkqdmJpb19iaW9zOwkvKiBsaXN0IG9mIGFsbCBiaW9z ICovCi0rfSB2YmlvX3Q7Ci0rCi0rc3RhdGljIHZiaW9fdCAqCi0rdmJpb19hbGxvYyh6aW9fdCAq emlvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KQotK3sKLSsJdmJpb190ICp2YmlvID0ga21l bV96YWxsb2Moc2l6ZW9mICh2YmlvX3QpLCBLTV9TTEVFUCk7Ci0rCi0rCXZiaW8tPnZiaW9femlv ID0gemlvOwotKwl2YmlvLT52YmlvX2JkZXYgPSBiZGV2OwotKwlhdG9taWNfc2V0KCZ2YmlvLT52 YmlvX3JlZiwgMCk7Ci0rCXZiaW8tPnZiaW9fbWF4X3NlZ3MgPSB2ZGV2X2Jpb19tYXhfc2Vncyhi ZGV2KTsKLSsJdmJpby0+dmJpb19tYXhfYnl0ZXMgPSB2ZGV2X2Jpb19tYXhfYnl0ZXMoYmRldik7 Ci0rCXZiaW8tPnZiaW9fbGJzX21hc2sgPSB+KGJkZXZfbG9naWNhbF9ibG9ja19zaXplKGJkZXYp LTEpOwotKwl2YmlvLT52YmlvX29mZnNldCA9IHppby0+aW9fb2Zmc2V0OwotKwotKwlyZXR1cm4g KHZiaW8pOwotK30KLSsKLStzdGF0aWMgaW50Ci0rdmJpb19hZGRfcGFnZSh2YmlvX3QgKnZiaW8s IHN0cnVjdCBwYWdlICpwYWdlLCB1aW50X3Qgc2l6ZSwgdWludF90IG9mZnNldCkKLSt7Ci0rCXN0 cnVjdCBiaW8gKmJpbzsKLSsJdWludF90IHNzaXplOwotKwotKwl3aGlsZSAoc2l6ZSA+IDApIHsK LSsJCWJpbyA9IHZiaW8tPnZiaW9fYmlvOwotKwkJaWYgKGJpbyA9PSBOVUxMKSB7Ci0rCQkJLyog TmV3IEJJTywgYWxsb2NhdGUgYW5kIHNldCB1cCAqLwotKwkJCWJpbyA9IHZkZXZfYmlvX2FsbG9j KHZiaW8tPnZiaW9fYmRldiwgR0ZQX05PSU8sCi0rCQkJICAgIHZiaW8tPnZiaW9fbWF4X3NlZ3Mp OwotKwkJCWlmICh1bmxpa2VseShiaW8gPT0gTlVMTCkpCi0rCQkJCXJldHVybiAoU0VUX0VSUk9S KEVOT01FTSkpOwotKwkJCUJJT19CSV9TRUNUT1IoYmlvKSA9IHZiaW8tPnZiaW9fb2Zmc2V0ID4+ IDk7Ci0rCi0rCQkJYmlvLT5iaV9uZXh0ID0gdmJpby0+dmJpb19iaW9zOwotKwkJCXZiaW8tPnZi aW9fYmlvcyA9IHZiaW8tPnZiaW9fYmlvID0gYmlvOwotKwkJfQotKwotKwkJLyoKLSsJCSAqIE9u bHkgbG9hZCBhcyBtdWNoIG9mIHRoZSBjdXJyZW50IHBhZ2UgZGF0YSBhcyB3aWxsIGZpdCBpbgot KwkJICogdGhlIHNwYWNlIGxlZnQgaW4gdGhlIEJJTywgcmVzcGVjdGluZyBsYnMgYWxpZ25tZW50 LiBPbGRlcgotKwkJICoga2VybmVscyB3aWxsIGVycm9yIGlmIHdlIHRyeSB0byBvdmVyZmlsbCB0 aGUgQklPLCB3aGlsZQotKwkJICogbmV3ZXIgb25lcyB3aWxsIGFjY2VwdCBpdCBhbmQgc3BsaXQg dGhlIEJJTy4gVGhpcyBlbnN1cmVzCi0rCQkgKiBldmVyeXRoaW5nIHdvcmtzIG9uIG9sZGVyIGtl cm5lbHMsIGFuZCBhdm9pZHMgYW4gYWRkaXRpb25hbAotKwkJICogb3ZlcmhlYWQgb24gdGhlIG5l dy4KLSsJCSAqLwotKwkJc3NpemUgPSBNSU4oc2l6ZSwgKHZiaW8tPnZiaW9fbWF4X2J5dGVzIC0g QklPX0JJX1NJWkUoYmlvKSkgJgotKwkJICAgIHZiaW8tPnZiaW9fbGJzX21hc2spOwotKwkJaWYg KHNzaXplID4gMCAmJgotKwkJICAgIGJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIHNzaXplLCBvZmZz ZXQpID09IHNzaXplKSB7Ci0rCQkJLyogQWNjZXB0ZWQsIGFkanVzdCBhbmQgbG9hZCBhbnkgcmVt YWluaW5nLiAqLwotKwkJCXNpemUgLT0gc3NpemU7Ci0rCQkJb2Zmc2V0ICs9IHNzaXplOwotKwkJ CWNvbnRpbnVlOwotKwkJfQotKwotKwkJLyogTm8gcm9vbSwgc2V0IHVwIGZvciBhIG5ldyBCSU8g YW5kIGxvb3AgKi8KLSsJCXZiaW8tPnZiaW9fb2Zmc2V0ICs9IEJJT19CSV9TSVpFKGJpbyk7Ci0r Ci0rCQkvKiBTaWduYWwgbmV3IEJJTyBhbGxvY2F0aW9uIHdhbnRlZCAqLwotKwkJdmJpby0+dmJp b19iaW8gPSBOVUxMOwotKwl9Ci0rCi0rCXJldHVybiAoMCk7Ci0rfQotKwotK0JJT19FTkRfSU9f UFJPVE8odmRldl9kaXNrX2lvX3J3X2NvbXBsZXRpb24sIGJpbywgZXJyb3IpOwotK3N0YXRpYyB2 b2lkIHZiaW9fcHV0KHZiaW9fdCAqdmJpbyk7Ci0rCi0rc3RhdGljIHZvaWQKLSt2YmlvX3N1Ym1p dCh2YmlvX3QgKnZiaW8sIGludCBmbGFncykKLSt7Ci0rCUFTU0VSVCh2YmlvLT52YmlvX2Jpb3Mp OwotKwlzdHJ1Y3QgYmlvICpiaW8gPSB2YmlvLT52YmlvX2Jpb3M7Ci0rCXZiaW8tPnZiaW9fYmlv ID0gdmJpby0+dmJpb19iaW9zID0gTlVMTDsKLSsKLSsJLyoKLSsJICogV2UgdGFrZSBhIHJlZmVy ZW5jZSBmb3IgZWFjaCBCSU8gYXMgd2Ugc3VibWl0IGl0LCBwbHVzIG9uZSB0bwotKwkgKiBwcm90 ZWN0IHVzIGZyb20gQklPcyBjb21wbGV0aW5nIGJlZm9yZSB3ZSdyZSBkb25lIHN1Ym1pdHRpbmcg dGhlbQotKwkgKiBhbGwsIGNhdXNpbmcgdmJpb19wdXQoKSB0byBmcmVlIHZiaW8gb3V0IGZyb20g dW5kZXIgdXMgYW5kL29yIHRoZQotKwkgKiB6aW8gdG8gYmUgcmV0dXJuZWQgYmVmb3JlIGFsbCBp dHMgSU8gaGFzIGNvbXBsZXRlZC4KLSsJICovCi0rCWF0b21pY19zZXQoJnZiaW8tPnZiaW9fcmVm LCAxKTsKLSsKLSsJLyoKLSsJICogSWYgd2UncmUgc3VibWl0dGluZyBtb3JlIHRoYW4gb25lIEJJ TywgaW5mb3JtIHRoZSBibG9jayBsYXllciBzbwotKwkgKiBpdCBjYW4gYmF0Y2ggdGhlbSBpZiBp dCB3YW50cy4KLSsJICovCi0rCXN0cnVjdCBibGtfcGx1ZyBwbHVnOwotKwlib29sZWFuX3QgZG9f cGx1ZyA9IChiaW8tPmJpX25leHQgIT0gTlVMTCk7Ci0rCWlmIChkb19wbHVnKQotKwkJYmxrX3N0 YXJ0X3BsdWcoJnBsdWcpOwotKwotKwkvKiBTdWJtaXQgYWxsIHRoZSBCSU9zICovCi0rCXdoaWxl IChiaW8gIT0gTlVMTCkgewotKwkJYXRvbWljX2luYygmdmJpby0+dmJpb19yZWYpOwotKwotKwkJ c3RydWN0IGJpbyAqbmV4dCA9IGJpby0+YmlfbmV4dDsKLSsJCWJpby0+YmlfbmV4dCA9IE5VTEw7 Ci0rCi0rCQliaW8tPmJpX2VuZF9pbyA9IHZkZXZfZGlza19pb19yd19jb21wbGV0aW9uOwotKwkJ YmlvLT5iaV9wcml2YXRlID0gdmJpbzsKLSsJCWJpb19zZXRfb3BfYXR0cnMoYmlvLAotKwkJICAg IHZiaW8tPnZiaW9femlvLT5pb190eXBlID09IFpJT19UWVBFX1dSSVRFID8KLSsJCSAgICBXUklU RSA6IFJFQUQsIGZsYWdzKTsKLSsKLSsJCXZkZXZfc3VibWl0X2JpbyhiaW8pOwotKwotKwkJYmlv ID0gbmV4dDsKLSsJfQotKwotKwkvKiBGaW5pc2ggdGhlIGJhdGNoICovCi0rCWlmIChkb19wbHVn KQotKwkJYmxrX2ZpbmlzaF9wbHVnKCZwbHVnKTsKLSsKLSsJLyogUmVsZWFzZSB0aGUgZXh0cmEg cmVmZXJlbmNlICovCi0rCXZiaW9fcHV0KHZiaW8pOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3Zi aW9fcmV0dXJuX2FiZCh2YmlvX3QgKnZiaW8pCi0rewotKwl6aW9fdCAqemlvID0gdmJpby0+dmJp b196aW87Ci0rCWlmICh2YmlvLT52YmlvX2FiZCA9PSBOVUxMKQotKwkJcmV0dXJuOwotKwotKwkv KgotKwkgKiBJZiB3ZSBjb3BpZWQgdGhlIEFCRCBiZWZvcmUgaXNzdWluZyBpdCwgY2xlYW4gdXAg YW5kIHJldHVybiB0aGUgY29weQotKwkgKiB0byB0aGUgQURCLCB3aXRoIGNoYW5nZXMgaWYgYXBw cm9wcmlhdGUuCi0rCSAqLwotKwl2b2lkICpidWYgPSBhYmRfdG9fYnVmKHZiaW8tPnZiaW9fYWJk KTsKLSsJYWJkX2ZyZWUodmJpby0+dmJpb19hYmQpOwotKwl2YmlvLT52YmlvX2FiZCA9IE5VTEw7 Ci0rCi0rCWlmICh6aW8tPmlvX3R5cGUgPT0gWklPX1RZUEVfUkVBRCkKLSsJCWFiZF9yZXR1cm5f YnVmX2NvcHkoemlvLT5pb19hYmQsIGJ1ZiwgemlvLT5pb19zaXplKTsKLSsJZWxzZQotKwkJYWJk X3JldHVybl9idWYoemlvLT5pb19hYmQsIGJ1ZiwgemlvLT5pb19zaXplKTsKLSt9Ci0rCi0rc3Rh dGljIHZvaWQKLSt2YmlvX2ZyZWUodmJpb190ICp2YmlvKQotK3sKLSsJVkVSSUZZMChhdG9taWNf cmVhZCgmdmJpby0+dmJpb19yZWYpKTsKLSsKLSsJdmJpb19yZXR1cm5fYWJkKHZiaW8pOwotKwot KwlrbWVtX2ZyZWUodmJpbywgc2l6ZW9mICh2YmlvX3QpKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQK LSt2YmlvX3B1dCh2YmlvX3QgKnZiaW8pCi0rewotKwlpZiAoYXRvbWljX2RlY19yZXR1cm4oJnZi aW8tPnZiaW9fcmVmKSA+IDApCi0rCQlyZXR1cm47Ci0rCi0rCS8qCi0rCSAqIFRoaXMgd2FzIHRo ZSBsYXN0IHJlZmVyZW5jZSwgc28gdGhlIGVudGlyZSBJTyBpcyBjb21wbGV0ZWQuIENsZWFuCi0r CSAqIHVwIGFuZCBzdWJtaXQgaXQgZm9yIHByb2Nlc3NpbmcuCi0rCSAqLwotKwotKwkvKgotKwkg KiBHZXQgYW55IGRhdGEgYnVmIGJhY2sgdG8gdGhlIG9yaWdpbmFsIEFCRCwgaWYgbmVjZXNzYXJ5 LiBXZSBkbyB0aGlzCi0rCSAqIG5vdyBzbyB3ZSBjYW4gZ2V0IHRoZSBaSU8gaW50byB0aGUgcGlw ZWxpbmUgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSwKLSsJICogYW5kIHRoZW4gZG8gdGhlIHJlbWFp bmluZyBjbGVhbnVwIGFmdGVyLgotKwkgKi8KLSsJdmJpb19yZXR1cm5fYWJkKHZiaW8pOwotKwot Kwl6aW9fdCAqemlvID0gdmJpby0+dmJpb196aW87Ci0rCi0rCS8qCi0rCSAqIFNldCB0aGUgb3Zl cmFsbCBlcnJvci4gSWYgbXVsdGlwbGUgQklPcyByZXR1cm5lZCBhbiBlcnJvciwgb25seSB0aGUK LSsJICogZmlyc3Qgd2lsbCBiZSB0YWtlbjsgdGhlIG90aGVycyBhcmUgZHJvcHBlZCAoc2VlCi0r CSAqIHZkZXZfZGlza19pb19yd19jb21wbGV0aW9uKCkpLiBJdHMgcHJldHR5IG11Y2ggaW1wb3Nz aWJsZSBmb3IKLSsJICogbXVsdGlwbGUgSU9zIHRvIHRoZSBzYW1lIGRldmljZSB0byBmYWlsIHdp dGggZGlmZmVyZW50IGVycm9ycywgc28KLSsJICogdGhlcmUncyBubyByZWFsIHJpc2suCi0rCSAq LwotKwl6aW8tPmlvX2Vycm9yID0gdmJpby0+dmJpb19lcnJvcjsKLSsJaWYgKHppby0+aW9fZXJy b3IpCi0rCQl2ZGV2X2Rpc2tfZXJyb3IoemlvKTsKLSsKLSsJLyogQWxsIGRvbmUsIHN1Ym1pdCBm b3IgcHJvY2Vzc2luZyAqLwotKwl6aW9fZGVsYXlfaW50ZXJydXB0KHppbyk7Ci0rCi0rCS8qIEZp bmlzaCBjbGVhbnVwICovCi0rCXZiaW9fZnJlZSh2YmlvKTsKLSt9Ci0rCi0rQklPX0VORF9JT19Q Uk9UTyh2ZGV2X2Rpc2tfaW9fcndfY29tcGxldGlvbiwgYmlvLCBlcnJvcikKLSt7Ci0rCXZiaW9f dCAqdmJpbyA9IGJpby0+YmlfcHJpdmF0ZTsKLSsKLSsJaWYgKHZiaW8tPnZiaW9fZXJyb3IgPT0g MCkgewotKyNpZmRlZiBIQVZFXzFBUkdfQklPX0VORF9JT19UCi0rCQl2YmlvLT52YmlvX2Vycm9y ID0gQklPX0VORF9JT19FUlJPUihiaW8pOwotKyNlbHNlCi0rCQlpZiAoZXJyb3IpCi0rCQkJdmJp by0+dmJpb19lcnJvciA9IC0oZXJyb3IpOwotKwkJZWxzZSBpZiAoIXRlc3RfYml0KEJJT19VUFRP REFURSwgJmJpby0+YmlfZmxhZ3MpKQotKwkJCXZiaW8tPnZiaW9fZXJyb3IgPSBFSU87Ci0rI2Vu ZGlmCi0rCX0KLSsKLSsJLyoKLSsJICogRGVzdHJveSB0aGUgQklPLiBUaGlzIGlzIHNhZmUgdG8g ZG87IHRoZSB2YmlvIG93bnMgaXRzIGRhdGEgYW5kIHRoZQotKwkgKiBrZXJuZWwgd29uJ3QgdG91 Y2ggaXQgYWdhaW4gYWZ0ZXIgdGhlIGNvbXBsZXRpb24gZnVuY3Rpb24gcnVucy4KLSsJICovCi0r CWJpb19wdXQoYmlvKTsKLSsKLSsJLyogRHJvcCB0aGlzIEJJT3MgcmVmZXJlbmNlIGFjcXVpcmVk IGJ5IHZiaW9fc3VibWl0KCkgKi8KLSsJdmJpb19wdXQodmJpbyk7Ci0rfQotKwotKy8qCi0rICog SXRlcmF0b3IgY2FsbGJhY2sgdG8gY291bnQgQUJEIHBhZ2VzIGFuZCBjaGVjayB0aGVpciBzaXpl ICYgYWxpZ25tZW50LgotKyAqCi0rICogT24gTGludXgsIGVhY2ggQklPIHNlZ21lbnQgY2FuIHRh a2UgYSBwYWdlIHBvaW50ZXIsIGFuZCBhbiBvZmZzZXQrbGVuZ3RoIG9mCi0rICogdGhlIGRhdGEg d2l0aGluIHRoYXQgcGFnZS4gQSBwYWdlIGNhbiBiZSBhcmJpdHJhcmlseSBsYXJnZSAoImNvbXBv dW5kIgotKyAqIHBhZ2VzKSBidXQgd2Ugc3RpbGwgaGF2ZSB0byBlbnN1cmUgdGhlIGRhdGEgcG9y dGlvbiBpcyBjb3JyZWN0bHkgc2l6ZWQgYW5kCi0rICogYWxpZ25lZCB0byB0aGUgbG9naWNhbCBi bG9jayBzaXplLCB0byBlbnN1cmUgdGhhdCBpZiB0aGUga2VybmVsIHdhbnRzIHRvCi0rICogc3Bs aXQgdGhlIEJJTywgdGhlIHR3byBoYWx2ZXMgd2lsbCBzdGlsbCBiZSBwcm9wZXJseSBhbGlnbmVk LgotKyAqLwotK3R5cGVkZWYgc3RydWN0IHsKLSsJdWludF90ICBibWFzazsKLSsJdWludF90ICBu cGFnZXM7Ci0rCXVpbnRfdCAgZW5kOwotK30gdmRldl9kaXNrX2NoZWNrX3BhZ2VzX3Q7Ci0rCi0r c3RhdGljIGludAotK3ZkZXZfZGlza19jaGVja19wYWdlc19jYihzdHJ1Y3QgcGFnZSAqcGFnZSwg c2l6ZV90IG9mZiwgc2l6ZV90IGxlbiwgdm9pZCAqcHJpdikKLSt7Ci0rCXZkZXZfZGlza19jaGVj a19wYWdlc190ICpzID0gcHJpdjsKLSsKLSsJLyoKLSsJICogSWYgd2UgZGlkbid0IGZpbmlzaCBv biBhIGJsb2NrIHNpemUgYm91bmRhcnkgbGFzdCB0aW1lLCB0aGVuIHRoZXJlCi0rCSAqIHdvdWxk IGJlIGEgZ2FwIGlmIHdlIHRyaWVkIHRvIHVzZSB0aGlzIEFCRCBhcy1pcywgc28gYWJvcnQuCi0r CSAqLwotKwlpZiAocy0+ZW5kICE9IDApCi0rCQlyZXR1cm4gKDEpOwotKwotKwkvKgotKwkgKiBO b3RlIGlmIHdlJ3JlIHRha2luZyBsZXNzIHRoYW4gYSBmdWxsIGJsb2NrLCBzbyB3ZSBjYW4gY2hl Y2sgaXQKLSsJICogYWJvdmUgb24gdGhlIG5leHQgY2FsbC4KLSsJICovCi0rCXMtPmVuZCA9IGxl biAmIHMtPmJtYXNrOwotKwotKwkvKiBBbGwgYmxvY2tzIGFmdGVyIHRoZSBmaXJzdCBtdXN0IHN0 YXJ0IG9uIGEgYmxvY2sgc2l6ZSBib3VuZGFyeS4gKi8KLSsJaWYgKHMtPm5wYWdlcyAhPSAwICYm IChvZmYgJiBzLT5ibWFzaykgIT0gMCkKLSsJCXJldHVybiAoMSk7Ci0rCi0rCXMtPm5wYWdlcysr OwotKwlyZXR1cm4gKDApOwotK30KLSsKLSsvKgotKyAqIENoZWNrIGlmIHdlIGNhbiBzdWJtaXQg dGhlIHBhZ2VzIGluIHRoaXMgQUJEIHRvIHRoZSBrZXJuZWwgYXMtaXMuIFJldHVybnMKLSsgKiB0 aGUgbnVtYmVyIG9mIHBhZ2VzLCBvciAwIGlmIGl0IGNhbid0IGJlIHN1Ym1pdHRlZCBsaWtlIHRo aXMuCi0rICovCi0rc3RhdGljIGJvb2xlYW5fdAotK3ZkZXZfZGlza19jaGVja19wYWdlcyhhYmRf dCAqYWJkLCB1aW50NjRfdCBzaXplLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KQotK3sKLSsJ dmRldl9kaXNrX2NoZWNrX3BhZ2VzX3QgcyA9IHsKLSsJICAgIC5ibWFzayA9IGJkZXZfbG9naWNh bF9ibG9ja19zaXplKGJkZXYpLTEsCi0rCSAgICAubnBhZ2VzID0gMCwKLSsJICAgIC5lbmQgPSAw LAotKwl9OwotKwotKwlpZiAoYWJkX2l0ZXJhdGVfcGFnZV9mdW5jKGFiZCwgMCwgc2l6ZSwgdmRl dl9kaXNrX2NoZWNrX3BhZ2VzX2NiLCAmcykpCi0rCQlyZXR1cm4gKEJfRkFMU0UpOwotKwotKwly ZXR1cm4gKEJfVFJVRSk7Ci0rfQotKwotKy8qIEl0ZXJhdG9yIGNhbGxiYWNrIHRvIHN1Ym1pdCBB QkQgcGFnZXMgdG8gdGhlIHZiaW8uICovCi0rc3RhdGljIGludAotK3ZkZXZfZGlza19maWxsX3Zi aW9fY2Ioc3RydWN0IHBhZ2UgKnBhZ2UsIHNpemVfdCBvZmYsIHNpemVfdCBsZW4sIHZvaWQgKnBy aXYpCi0rewotKwl2YmlvX3QgKnZiaW8gPSBwcml2OwotKwlyZXR1cm4gKHZiaW9fYWRkX3BhZ2Uo dmJpbywgcGFnZSwgbGVuLCBvZmYpKTsKLSt9Ci0rCi0rc3RhdGljIGludAotK3ZkZXZfZGlza19p b19ydyh6aW9fdCAqemlvKQotK3sKLSsJdmRldl90ICp2ID0gemlvLT5pb192ZDsKLSsJdmRldl9k aXNrX3QgKnZkID0gdi0+dmRldl90c2Q7Ci0rCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYgPSBC REhfQkRFVih2ZC0+dmRfYmRoKTsKLSsJaW50IGZsYWdzID0gMDsKLSsKLSsJLyoKLSsJICogQWNj ZXNzaW5nIG91dHNpZGUgdGhlIGJsb2NrIGRldmljZSBpcyBuZXZlciBhbGxvd2VkLgotKwkgKi8K LSsJaWYgKHppby0+aW9fb2Zmc2V0ICsgemlvLT5pb19zaXplID4gYmRldi0+YmRfaW5vZGUtPmlf c2l6ZSkgewotKwkJdmRldl9kYmdtc2coemlvLT5pb192ZCwKLSsJCSAgICAiSWxsZWdhbCBhY2Nl c3MgJWxsdSBzaXplICVsbHUsIGRldmljZSBzaXplICVsbHUiLAotKwkJICAgICh1X2xvbmdsb25n X3QpemlvLT5pb19vZmZzZXQsCi0rCQkgICAgKHVfbG9uZ2xvbmdfdCl6aW8tPmlvX3NpemUsCi0r CQkgICAgKHVfbG9uZ2xvbmdfdClpX3NpemVfcmVhZChiZGV2LT5iZF9pbm9kZSkpOwotKwkJcmV0 dXJuIChTRVRfRVJST1IoRUlPKSk7Ci0rCX0KLSsKLSsJaWYgKCEoemlvLT5pb19mbGFncyAmICha SU9fRkxBR19JT19SRVRSWSB8IFpJT19GTEFHX1RSWUhBUkQpKSAmJgotKwkgICAgdi0+dmRldl9m YWlsZmFzdCA9PSBCX1RSVUUpIHsKLSsJCWJpb19zZXRfZmxhZ3NfZmFpbGZhc3QoYmRldiwgJmZs YWdzLCB6ZnNfdmRldl9mYWlsZmFzdF9tYXNrICYgMSwKLSsJCSAgICB6ZnNfdmRldl9mYWlsZmFz dF9tYXNrICYgMiwgemZzX3ZkZXZfZmFpbGZhc3RfbWFzayAmIDQpOwotKwl9Ci0rCi0rCS8qCi0r CSAqIENoZWNrIGFsaWdubWVudCBvZiB0aGUgaW5jb21pbmcgQUJELiBJZiBhbnkgcGFydCBvZiBp dCB3b3VsZCByZXF1aXJlCi0rCSAqIHN1Ym1pdHRpbmcgYSBwYWdlIHRoYXQgaXMgbm90IGFsaWdu ZWQgdG8gdGhlIGxvZ2ljYWwgYmxvY2sgc2l6ZSwKLSsJICogdGhlbiB3ZSB0YWtlIGEgY29weSBp bnRvIGEgbGluZWFyIGJ1ZmZlciBhbmQgc3VibWl0IHRoYXQgaW5zdGVhZC4KLSsJICogVGhpcyBz aG91bGQgYmUgaW1wb3NzaWJsZSBvbiBhIDUxMmIgTEJTLCBhbmQgZmFpcmx5IHJhcmUgb24gNEss Ci0rCSAqIHVzdWFsbHkgcmVxdWlyaW5nIGFibm9ybWFsbHktc21hbGwgZGF0YSBibG9ja3MgKGVn IGdhbmcgYmxvY2tzKQotKwkgKiBtaXhlZCBpbnRvIHRoZSBzYW1lIEFCRCBhcyBsYXJnZXIgb25l cyAoZWcgYWdncmVnYXRlZCkuCi0rCSAqLwotKwlhYmRfdCAqYWJkID0gemlvLT5pb19hYmQ7Ci0r CWlmICghdmRldl9kaXNrX2NoZWNrX3BhZ2VzKGFiZCwgemlvLT5pb19zaXplLCBiZGV2KSkgewot KwkJdm9pZCAqYnVmOwotKwkJaWYgKHppby0+aW9fdHlwZSA9PSBaSU9fVFlQRV9SRUFEKQotKwkJ CWJ1ZiA9IGFiZF9ib3Jyb3dfYnVmKHppby0+aW9fYWJkLCB6aW8tPmlvX3NpemUpOwotKwkJZWxz ZQotKwkJCWJ1ZiA9IGFiZF9ib3Jyb3dfYnVmX2NvcHkoemlvLT5pb19hYmQsIHppby0+aW9fc2l6 ZSk7Ci0rCi0rCQkvKgotKwkJICogV3JhcCB0aGUgY29weSBpbiBhbiBhYmRfdCwgc28gd2UgY2Fu IHVzZSB0aGUgc2FtZSBpdGVyYXRvcnMKLSsJCSAqIHRvIGNvdW50IGFuZCBmaWxsIHRoZSB2Ymlv IGxhdGVyLgotKwkJICovCi0rCQlhYmQgPSBhYmRfZ2V0X2Zyb21fYnVmKGJ1ZiwgemlvLT5pb19z aXplKTsKLSsKLSsJCS8qCi0rCQkgKiBGYWxzZSBoZXJlIHdvdWxkIG1lYW4gdGhlIGJvcnJvd2Vk IGNvcHkgaGFzIGFuIGludmFsaWQKLSsJCSAqIGFsaWdubWVudCB0b28sIHdoaWNoIHdvdWxkIG1l YW4gd2UndmUgc29tZWhvdyBiZWVuIHBhc3NlZCBhCi0rCQkgKiBsaW5lYXIgQUJEIHdpdGggYW4g aW50ZXJpb3IgcGFnZSB0aGF0IGhhcyBhIG5vbi16ZXJvIG9mZnNldAotKwkJICogb3IgYSBzaXpl IG5vdCBhIG11bHRpcGxlIG9mIFBBR0VfU0laRS4gVGhpcyBpcyBub3QgcG9zc2libGUuCi0rCQkg KiBJdCB3b3VsZCBtZWFuIGVpdGhlciB6aW9fYnVmX2FsbG9jKCkgb3IgaXRzIHVuZGVybHlpbmcK LSsJCSAqIGFsbG9jYXRvcnMgaGF2ZSBkb25lIHNvbWV0aGluZyBleHRyZW1lbHkgc3RyYW5nZSwg b3Igb3VyCi0rCQkgKiBtYXRoIGluIHZkZXZfZGlza19jaGVja19wYWdlcygpIGlzIHdyb25nLiBJ biBlaXRoZXIgY2FzZSwKLSsJCSAqIHNvbWV0aGluZyBpbiBzZXJpb3VzbHkgd3JvbmcgYW5kIGl0 cyBub3Qgc2FmZSB0byBjb250aW51ZS4KLSsJCSAqLwotKwkJVkVSSUZZKHZkZXZfZGlza19jaGVj a19wYWdlcyhhYmQsIHppby0+aW9fc2l6ZSwgYmRldikpOwotKwl9Ci0rCi0rCS8qIEFsbG9jYXRl IHZiaW8sIHdpdGggYSBwb2ludGVyIHRvIHRoZSBib3Jyb3dlZCBBQkQgaWYgbmVjZXNzYXJ5ICov Ci0rCWludCBlcnJvciA9IDA7Ci0rCXZiaW9fdCAqdmJpbyA9IHZiaW9fYWxsb2MoemlvLCBiZGV2 KTsKLSsJaWYgKGFiZCAhPSB6aW8tPmlvX2FiZCkKLSsJCXZiaW8tPnZiaW9fYWJkID0gYWJkOwot KwotKwkvKiBGaWxsIGl0IHdpdGggcGFnZXMgKi8KLSsJZXJyb3IgPSBhYmRfaXRlcmF0ZV9wYWdl X2Z1bmMoYWJkLCAwLCB6aW8tPmlvX3NpemUsCi0rCSAgICB2ZGV2X2Rpc2tfZmlsbF92YmlvX2Ni LCB2YmlvKTsKLSsJaWYgKGVycm9yICE9IDApIHsKLSsJCXZiaW9fZnJlZSh2YmlvKTsKLSsJCXJl dHVybiAoZXJyb3IpOwotKwl9Ci0rCi0rCXZiaW9fc3VibWl0KHZiaW8sIGZsYWdzKTsKLSsJcmV0 dXJuICgwKTsKLSt9Ci0rCi0gLyogPT09PT09PT09PSAqLwotIAotIC8qCi0tICogVGhpcyBpcyB0 aGUgY2xhc3NpYywgYmF0dGxlLXRlc3RlZCBCSU8gc3VibWlzc2lvbiBjb2RlLgotKyAqIFRoaXMg aXMgdGhlIGNsYXNzaWMsIGJhdHRsZS10ZXN0ZWQgQklPIHN1Ym1pc3Npb24gY29kZS4gVW50aWwg d2UncmUgdG90YWxseQotKyAqIHN1cmUgdGhhdCB0aGUgbmV3IGNvZGUgaXMgc2FmZSBhbmQgY29y cmVjdCBpbiBhbGwgY2FzZXMsIHRoaXMgd2lsbCByZW1haW4KLSsgKiBhdmFpbGFibGUgYW5kIGNh biBiZSBlbmFibGVkIGJ5IHNldHRpbmcgemZzX3ZkZXZfZGlza19jbGFzc2ljPTEgYXQgbW9kdWxl Ci0rICogbG9hZCB0aW1lLgotICAqCi0gICogVGhlc2UgZnVuY3Rpb25zIGhhdmUgYmVlbiByZW5h bWVkIHRvIHZkZXZfY2xhc3NpY18qIHRvIG1ha2UgaXQgY2xlYXIgd2hhdAotICAqIHRoZXkgYmVs b25nIHRvLCBidXQgdGhlaXIgaW1wbGVtZW50YXRpb25zIGFyZSB1bmNoYW5nZWQuCi1AQCAtMTEx Niw3ICsxNTQ3LDggQEAgdmRldl9kaXNrX2luaXQoc3BhX3QgKnNwYSwgbnZsaXN0X3QgKm52LCB2 b2lkICoqdHNkKQotIAkodm9pZCkgdHNkOwotIAotIAlpZiAodmRldl9kaXNrX2lvX3J3X2ZuID09 IE5VTEwpCi0tCQl2ZGV2X2Rpc2tfaW9fcndfZm4gPSB2ZGV2X2NsYXNzaWNfcGh5c2lvOwotKwkJ LyogWFhYIG1ha2UgY29uZmlndXJhYmxlICovCi0rCQl2ZGV2X2Rpc2tfaW9fcndfZm4gPSAwID8g dmRldl9jbGFzc2ljX3BoeXNpbyA6IHZkZXZfZGlza19pb19ydzsKLSAKLSAJcmV0dXJuICgwKTsK LSB9Ci1AQCAtMTIxNSwzICsxNjQ3LDYgQEAgWkZTX01PRFVMRV9QQVJBTSh6ZnNfdmRldiwgemZz X3ZkZXZfLCBvcGVuX3RpbWVvdXRfbXMsIFVJTlQsIFpNT0RfUlcsCi0gCi0gWkZTX01PRFVMRV9Q QVJBTSh6ZnNfdmRldiwgemZzX3ZkZXZfLCBmYWlsZmFzdF9tYXNrLCBVSU5ULCBaTU9EX1JXLAot IAkiRGVmaW5lcyBmYWlsZmFzdCBtYXNrOiAxIC0gZGV2aWNlLCAyIC0gdHJhbnNwb3J0LCA0IC0g ZHJpdmVyIik7Ci0rCi0rWkZTX01PRFVMRV9QQVJBTSh6ZnNfdmRldl9kaXNrLCB6ZnNfdmRldl9k aXNrXywgbWF4X3NlZ3MsIFVJTlQsIFpNT0RfUlcsCi0rCSJNYXhpbXVtIG51bWJlciBvZiBkYXRh IHNlZ21lbnRzIHRvIGFkZCB0byBhbiBJTyByZXF1ZXN0IChtaW4gNCkiKTsKZGlmZiAtLWdpdCBh L2RlYmlhbi9wYXRjaGVzLzAwMjAtdmRldl9kaXNrLWFkZC1tb2R1bGUtcGFyYW1ldGVyLXRvLXNl bGVjdC1CSU8tc3VibWlzcy5wYXRjaCBiL2RlYmlhbi9wYXRjaGVzLzAwMjAtdmRldl9kaXNrLWFk ZC1tb2R1bGUtcGFyYW1ldGVyLXRvLXNlbGVjdC1CSU8tc3VibWlzcy5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggYjdhZWYzOGUuLjAwMDAwMDAwCi0tLSBhL2RlYmlhbi9wYXRj aGVzLzAwMjAtdmRldl9kaXNrLWFkZC1tb2R1bGUtcGFyYW1ldGVyLXRvLXNlbGVjdC1CSU8tc3Vi bWlzcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi1Gcm9tIDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBSb2IgTm9ycmlzIDxyb2Iubm9ycmlzQGtsYXJhc3lzdGVtcy5jb20+Ci1EYXRlOiBU dWUsIDkgSmFuIDIwMjQgMTM6Mjg6NTcgKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gdmRldl9kaXNr OiBhZGQgbW9kdWxlIHBhcmFtZXRlciB0byBzZWxlY3QgQklPIHN1Ym1pc3Npb24KLSBtZXRob2QK LQotVGhpcyBtYWtlcyB0aGUgc3VibWlzc2lvbiBtZXRob2Qgc2VsZWN0YWJsZSBhdCBtb2R1bGUg bG9hZCB0aW1lIHZpYSB0aGUKLWB6ZnNfdmRldl9kaXNrX2NsYXNzaWNgIHBhcmFtZXRlciwgYWxs b3dpbmcgdGhpcyBjaGFuZ2UgdG8gYmUgYmFja3BvcnRlZAotdG8gMi4yIHNhZmVseSwgYW5kIGRp c2FibGVkIGluIGZhdm91ciBvZiB0aGUgImNsYXNzaWMiIHN1Ym1pc3Npb24gbWV0aG9kCi1pZiBu ZXcgcHJvYmxlbXMgY29tZSB1cC4KLQotUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBNb3RpbiA8bWF2 QEZyZWVCU0Qub3JnPgotUmV2aWV3ZWQtYnk6IEJyaWFuIEJlaGxlbmRvcmYgPGJlaGxlbmRvcmYx QGxsbmwuZ292PgotU2lnbmVkLW9mZi1ieTogUm9iIE5vcnJpcyA8cm9iLm5vcnJpc0BrbGFyYXN5 c3RlbXMuY29tPgotU3BvbnNvcmVkLWJ5OiBLbGFyYSwgSW5jLgotU3BvbnNvcmVkLWJ5OiBXYXNh YmkgVGVjaG5vbG9neSwgSW5jLgotQ2xvc2VzICMxNTUzMwotQ2xvc2VzICMxNTU4OAotKGNoZXJy eSBwaWNrZWQgZnJvbSBjb21taXQgZGYyMTY5ZDE0MWFhZGMwYzJjYzcyOGM1YzUyNjFkNmY1YzJh MjdmNykKLS0tLQotIG1hbi9tYW40L3pmcy40ICAgICAgICAgICAgICAgICAgfCAxNiArKysrKysr KysrKysrKysrCi0gbW9kdWxlL29zL2xpbnV4L3pmcy92ZGV2X2Rpc2suYyB8IDMxICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tYW4vbWFuNC96ZnMuNCBiL21hbi9t YW40L3pmcy40Ci1pbmRleCBiNTY3OWYyZjAuLjZhNjI4ZTdmMyAxMDA2NDQKLS0tLSBhL21hbi9t YW40L3pmcy40Ci0rKysgYi9tYW4vbWFuNC96ZnMuNAotQEAgLTEzNTIsNiArMTM1MiwyMiBAQCBJ ZiB0aGlzIGlzIGhpZ2hlciB0aGFuIHRoZSBtYXhpbXVtIGFsbG93ZWQgYnkgdGhlIGRldmljZSBx dWV1ZSBvciB0aGUga2VybmVsCi0gaXRzZWxmLCBpdCB3aWxsIGJlIGNsYW1wZWQuCi0gU2V0dGlu ZyBpdCB0byB6ZXJvIHdpbGwgY2F1c2UgdGhlIGtlcm5lbCdzIGlkZWFsIHNpemUgdG8gYmUgdXNl ZC4KLSBUaGlzIHBhcmFtZXRlciBvbmx5IGFwcGxpZXMgb24gTGludXguCi0rVGhpcyBwYXJhbWV0 ZXIgaXMgaWdub3JlZCBpZgotKy5TeSB6ZnNfdmRldl9kaXNrX2NsYXNzaWMgTnMgPSBOcyBTeSAx IC4KLSsuCi0rLkl0IFN5IHpmc192ZGV2X2Rpc2tfY2xhc3NpYyBOcyA9IE5zIFN5IDAgTnMgfCBO cyAxIFBxIHVpbnQKLStJZiBzZXQgdG8gMSwgT3BlblpGUyB3aWxsIHN1Ym1pdCBJTyB0byBMaW51 eCB1c2luZyB0aGUgbWV0aG9kIGl0IHVzZWQgaW4gMi4yCi0rYW5kIGVhcmxpZXIuCi0rVGhpcyAi Y2xhc3NpYyIgbWV0aG9kIGhhcyBrbm93biBpc3N1ZXMgd2l0aCBoaWdobHkgZnJhZ21lbnRlZCBJ TyByZXF1ZXN0cyBhbmQKLStpcyBzbG93ZXIgb24gbWFueSB3b3JrbG9hZHMsIGJ1dCBpdCBoYXMg YmVlbiBpbiB1c2UgZm9yIG1hbnkgeWVhcnMgYW5kIGlzIGtub3duCi0rdG8gYmUgdmVyeSBzdGFi bGUuCi0rSWYgeW91IHNldCB0aGlzIHBhcmFtZXRlciwgcGxlYXNlIGFsc28gb3BlbiBhIGJ1ZyBy ZXBvcnQgd2h5IHlvdSBkaWQgc28sCi0raW5jbHVkaW5nIHRoZSB3b3JrbG9hZCBpbnZvbHZlZCBh bmQgYW55IGVycm9yIG1lc3NhZ2VzLgotKy5QcAotK1RoaXMgcGFyYW1ldGVyIGFuZCB0aGUgY2xh c3NpYyBzdWJtaXNzaW9uIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgb25jZSB3ZSBoYXZlCi0rdG90 YWwgY29uZmlkZW5jZSBpbiB0aGUgbmV3IG1ldGhvZC4KLSsuUHAKLStUaGlzIHBhcmFtZXRlciBv bmx5IGFwcGxpZXMgb24gTGludXgsIGFuZCBjYW4gb25seSBiZSBzZXQgYXQgbW9kdWxlIGxvYWQg dGltZS4KLSAuCi0gLkl0IFN5IHpmc19leHBpcmVfc25hcHNob3QgTnMgPSBOcyBTeSAzMDAgTnMg cyBQcSBpbnQKLSBUaW1lIGJlZm9yZSBleHBpcmluZwotZGlmZiAtLWdpdCBhL21vZHVsZS9vcy9s aW51eC96ZnMvdmRldl9kaXNrLmMgYi9tb2R1bGUvb3MvbGludXgvemZzL3ZkZXZfZGlzay5jCi1p bmRleCAwY2NiOWFkOTYuLmE5MTEwNjIzYSAxMDA2NDQKLS0tLSBhL21vZHVsZS9vcy9saW51eC96 ZnMvdmRldl9kaXNrLmMKLSsrKyBiL21vZHVsZS9vcy9saW51eC96ZnMvdmRldl9kaXNrLmMKLUBA IC0xNTM1LDYgKzE1MzUsMjkgQEAgdmRldl9kaXNrX3JlbGUodmRldl90ICp2ZCkKLSAJLyogWFhY OiBJbXBsZW1lbnQgbWUgYXMgYSB2bm9kZSByZWxlIGZvciB0aGUgZGV2aWNlICovCi0gfQotIAot Ky8qCi0rICogQklPIHN1Ym1pc3Npb24gbWV0aG9kLiBTZWUgY29tbWVudCBhYm92ZSBhYm91dCB2 ZGV2X2NsYXNzaWMuCi0rICogU2V0IHpmc192ZGV2X2Rpc2tfY2xhc3NpYz0wIGZvciBuZXcsID0x IGZvciBjbGFzc2ljCi0rICovCi0rc3RhdGljIHVpbnRfdCB6ZnNfdmRldl9kaXNrX2NsYXNzaWMg PSAwOwkvKiBkZWZhdWx0IG5ldyAqLwotKwotKy8qIFNldCBzdWJtaXNzaW9uIGZ1bmN0aW9uIGZy b20gbW9kdWxlIHBhcmFtZXRlciAqLwotK3N0YXRpYyBpbnQKLSt2ZGV2X2Rpc2tfcGFyYW1fc2V0 X2NsYXNzaWMoY29uc3QgY2hhciAqYnVmLCB6ZnNfa2VybmVsX3BhcmFtX3QgKmtwKQotK3sKLSsJ aW50IGVyciA9IHBhcmFtX3NldF91aW50KGJ1Ziwga3ApOwotKwlpZiAoZXJyIDwgMCkKLSsJCXJl dHVybiAoU0VUX0VSUk9SKGVycikpOwotKwotKwl2ZGV2X2Rpc2tfaW9fcndfZm4gPQotKwkgICAg emZzX3ZkZXZfZGlza19jbGFzc2ljID8gdmRldl9jbGFzc2ljX3BoeXNpbyA6IHZkZXZfZGlza19p b19ydzsKLSsKLSsJcHJpbnRrKEtFUk5fSU5GTyAiWkZTOiBmb3JjaW5nICVzIEJJTyBzdWJtaXNz aW9uXG4iLAotKwkgICAgemZzX3ZkZXZfZGlza19jbGFzc2ljID8gImNsYXNzaWMiIDogIm5ldyIp OwotKwotKwlyZXR1cm4gKDApOwotK30KLSsKLSAvKgotICAqIEF0IGZpcnN0IHVzZSB2ZGV2IHVz ZSwgc2V0IHRoZSBzdWJtaXNzaW9uIGZ1bmN0aW9uIGZyb20gdGhlIGRlZmF1bHQgdmFsdWUgaWYK LSAgKiBpdCBoYXNuJ3QgYmVlbiBzZXQgYWxyZWFkeS4KLUBAIC0xNTQ3LDggKzE1NzAsOCBAQCB2 ZGV2X2Rpc2tfaW5pdChzcGFfdCAqc3BhLCBudmxpc3RfdCAqbnYsIHZvaWQgKip0c2QpCi0gCSh2 b2lkKSB0c2Q7Ci0gCi0gCWlmICh2ZGV2X2Rpc2tfaW9fcndfZm4gPT0gTlVMTCkKLS0JCS8qIFhY WCBtYWtlIGNvbmZpZ3VyYWJsZSAqLwotLQkJdmRldl9kaXNrX2lvX3J3X2ZuID0gMCA/IHZkZXZf Y2xhc3NpY19waHlzaW8gOiB2ZGV2X2Rpc2tfaW9fcnc7Ci0rCQl2ZGV2X2Rpc2tfaW9fcndfZm4g PSB6ZnNfdmRldl9kaXNrX2NsYXNzaWMgPwotKwkJICAgIHZkZXZfY2xhc3NpY19waHlzaW8gOiB2 ZGV2X2Rpc2tfaW9fcnc7Ci0gCi0gCXJldHVybiAoMCk7Ci0gfQotQEAgLTE2NTAsMyArMTY3Myw3 IEBAIFpGU19NT0RVTEVfUEFSQU0oemZzX3ZkZXYsIHpmc192ZGV2XywgZmFpbGZhc3RfbWFzaywg VUlOVCwgWk1PRF9SVywKLSAKLSBaRlNfTU9EVUxFX1BBUkFNKHpmc192ZGV2X2Rpc2ssIHpmc192 ZGV2X2Rpc2tfLCBtYXhfc2VncywgVUlOVCwgWk1PRF9SVywKLSAJIk1heGltdW0gbnVtYmVyIG9m IGRhdGEgc2VnbWVudHMgdG8gYWRkIHRvIGFuIElPIHJlcXVlc3QgKG1pbiA0KSIpOwotKwotK1pG U19NT0RVTEVfUEFSQU1fQ0FMTCh6ZnNfdmRldl9kaXNrLCB6ZnNfdmRldl9kaXNrXywgY2xhc3Np YywKLSsgICAgdmRldl9kaXNrX3BhcmFtX3NldF9jbGFzc2ljLCBwYXJhbV9nZXRfdWludCwgWk1P RF9SRCwKLSsJIlVzZSBjbGFzc2ljIEJJTyBzdWJtaXNzaW9uIG1ldGhvZCIpOwpkaWZmIC0tZ2l0 IGEvZGViaWFuL3BhdGNoZXMvMDAyMS12ZGV2X2Rpc2stdXNlLWJpb19jaGFpbi10by1zdWJtaXQt bXVsdGlwbGUtQklPcy5wYXRjaCBiL2RlYmlhbi9wYXRjaGVzLzAwMjEtdmRldl9kaXNrLXVzZS1i aW9fY2hhaW4tdG8tc3VibWl0LW11bHRpcGxlLUJJT3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDJkYmY4OTE2Li4wMDAwMDAwMAotLS0gYS9kZWJpYW4vcGF0Y2hlcy8wMDIx LXZkZXZfZGlzay11c2UtYmlvX2NoYWluLXRvLXN1Ym1pdC1tdWx0aXBsZS1CSU9zLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMzYzICswLDAgQEAKLUZyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYiBO b3JyaXMgPHJvYi5ub3JyaXNAa2xhcmFzeXN0ZW1zLmNvbT4KLURhdGU6IFdlZCwgMjEgRmViIDIw MjQgMTE6MDc6MjEgKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gdmRldl9kaXNrOiB1c2UgYmlvX2No YWluKCkgdG8gc3VibWl0IG11bHRpcGxlIEJJT3MKLQotU2ltcGxpZmllcyBvdXIgY29kZSBhIGxv dCwgc28gd2UgZG9uJ3QgaGF2ZSB0byB3YWl0IGZvciBlYWNoIGFuZAotcmVhc3NlbWJsZSB0aGVt LgotCi1SZXZpZXdlZC1ieTogQWxleGFuZGVyIE1vdGluIDxtYXZARnJlZUJTRC5vcmc+Ci1SZXZp ZXdlZC1ieTogQnJpYW4gQmVobGVuZG9yZiA8YmVobGVuZG9yZjFAbGxubC5nb3Y+Ci1TaWduZWQt b2ZmLWJ5OiBSb2IgTm9ycmlzIDxyb2Iubm9ycmlzQGtsYXJhc3lzdGVtcy5jb20+Ci1TcG9uc29y ZWQtYnk6IEtsYXJhLCBJbmMuCi1TcG9uc29yZWQtYnk6IFdhc2FiaSBUZWNobm9sb2d5LCBJbmMu Ci1DbG9zZXMgIzE1NTMzCi1DbG9zZXMgIzE1NTg4Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1p dCA3MmZkODM0YzQ3NTU4Y2IxMGQ4NDc5NDhkMWE0NjE1ZTg5NGM3N2MzKQotLS0tCi0gbW9kdWxl L29zL2xpbnV4L3pmcy92ZGV2X2Rpc2suYyB8IDIzMSArKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA4MCBpbnNlcnRpb25zKCspLCAxNTEgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9tb2R1bGUvb3MvbGludXgvemZzL3ZkZXZfZGlzay5jIGIvbW9k dWxlL29zL2xpbnV4L3pmcy92ZGV2X2Rpc2suYwotaW5kZXggYTkxMTA2MjNhLi4zNjQ2OGZjMjEg MTAwNjQ0Ci0tLS0gYS9tb2R1bGUvb3MvbGludXgvemZzL3ZkZXZfZGlzay5jCi0rKysgYi9tb2R1 bGUvb3MvbGludXgvemZzL3ZkZXZfZGlzay5jCi1AQCAtNDU0LDEwICs0NTQsOSBAQCB2ZGV2X2Rp c2tfY2xvc2UodmRldl90ICp2KQotIAlpZiAodi0+dmRldl9yZW9wZW5pbmcgfHwgdmQgPT0gTlVM TCkKLSAJCXJldHVybjsKLSAKLS0JaWYgKHZkLT52ZF9iZGggIT0gTlVMTCkgewotKwlpZiAodmQt PnZkX2JkaCAhPSBOVUxMKQotIAkJdmRldl9ibGtkZXZfcHV0KHZkLT52ZF9iZGgsIHNwYV9tb2Rl KHYtPnZkZXZfc3BhKSwKLSAJCSAgICB6ZnNfdmRldl9ob2xkZXIpOwotLQl9Ci0gCi0gCXJ3X2Rl c3Ryb3koJnZkLT52ZF9sb2NrKTsKLSAJa21lbV9mcmVlKHZkLCBzaXplb2YgKHZkZXZfZGlza190 KSk7Ci1AQCAtNjYzLDkgKzY2Miw2IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAKLSAJYWJkX3QJCSp2 YmlvX2FiZDsJLyogYWJkIGNhcnJ5aW5nIGJvcnJvd2VkIGxpbmVhciBidWYgKi8KLSAKLS0JYXRv bWljX3QJdmJpb19yZWY7CS8qIGJpbyByZWZjb3VudCAqLwotLQlpbnQJCXZiaW9fZXJyb3I7CS8q IGVycm9yIGZyb20gZmFpbGVkIGJpbyAqLwotLQotIAl1aW50X3QJCXZiaW9fbWF4X3NlZ3M7CS8q IG1heCBzZWdzIHBlciBiaW8gKi8KLSAKLSAJdWludF90CQl2YmlvX21heF9ieXRlczsJLyogbWF4 IGJ5dGVzIHBlciBiaW8gKi8KLUBAIC02NzQsNDMgKzY3MCw1MiBAQCB0eXBlZGVmIHN0cnVjdCB7 Ci0gCXVpbnQ2NF90CXZiaW9fb2Zmc2V0OwkvKiBzdGFydCBvZmZzZXQgb2YgbmV4dCBiaW8gKi8K LSAKLSAJc3RydWN0IGJpbwkqdmJpb19iaW87CS8qIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgYmlv ICovCi0tCXN0cnVjdCBiaW8JKnZiaW9fYmlvczsJLyogbGlzdCBvZiBhbGwgYmlvcyAqLwotKwlp bnQJCXZiaW9fZmxhZ3M7CS8qIGJpbyBmbGFncyAqLwotIH0gdmJpb190OwotIAotIHN0YXRpYyB2 YmlvX3QgKgotLXZiaW9fYWxsb2MoemlvX3QgKnppbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRl dikKLSt2YmlvX2FsbG9jKHppb190ICp6aW8sIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGlu dCBmbGFncykKLSB7Ci0gCXZiaW9fdCAqdmJpbyA9IGttZW1femFsbG9jKHNpemVvZiAodmJpb190 KSwgS01fU0xFRVApOwotIAotIAl2YmlvLT52YmlvX3ppbyA9IHppbzsKLSAJdmJpby0+dmJpb19i ZGV2ID0gYmRldjsKLS0JYXRvbWljX3NldCgmdmJpby0+dmJpb19yZWYsIDApOwotKwl2YmlvLT52 YmlvX2FiZCA9IE5VTEw7Ci0gCXZiaW8tPnZiaW9fbWF4X3NlZ3MgPSB2ZGV2X2Jpb19tYXhfc2Vn cyhiZGV2KTsKLSAJdmJpby0+dmJpb19tYXhfYnl0ZXMgPSB2ZGV2X2Jpb19tYXhfYnl0ZXMoYmRl dik7Ci0gCXZiaW8tPnZiaW9fbGJzX21hc2sgPSB+KGJkZXZfbG9naWNhbF9ibG9ja19zaXplKGJk ZXYpLTEpOwotIAl2YmlvLT52YmlvX29mZnNldCA9IHppby0+aW9fb2Zmc2V0OwotKwl2YmlvLT52 YmlvX2JpbyA9IE5VTEw7Ci0rCXZiaW8tPnZiaW9fZmxhZ3MgPSBmbGFnczsKLSAKLSAJcmV0dXJu ICh2YmlvKTsKLSB9Ci0gCi0rQklPX0VORF9JT19QUk9UTyh2YmlvX2NvbXBsZXRpb24sIGJpbywg ZXJyb3IpOwotKwotIHN0YXRpYyBpbnQKLSB2YmlvX2FkZF9wYWdlKHZiaW9fdCAqdmJpbywgc3Ry dWN0IHBhZ2UgKnBhZ2UsIHVpbnRfdCBzaXplLCB1aW50X3Qgb2Zmc2V0KQotIHsKLS0Jc3RydWN0 IGJpbyAqYmlvOwotKwlzdHJ1Y3QgYmlvICpiaW8gPSB2YmlvLT52YmlvX2JpbzsKLSAJdWludF90 IHNzaXplOwotIAotIAl3aGlsZSAoc2l6ZSA+IDApIHsKLS0JCWJpbyA9IHZiaW8tPnZiaW9fYmlv OwotIAkJaWYgKGJpbyA9PSBOVUxMKSB7Ci0gCQkJLyogTmV3IEJJTywgYWxsb2NhdGUgYW5kIHNl dCB1cCAqLwotIAkJCWJpbyA9IHZkZXZfYmlvX2FsbG9jKHZiaW8tPnZiaW9fYmRldiwgR0ZQX05P SU8sCi0gCQkJICAgIHZiaW8tPnZiaW9fbWF4X3NlZ3MpOwotLQkJCWlmICh1bmxpa2VseShiaW8g PT0gTlVMTCkpCi0tCQkJCXJldHVybiAoU0VUX0VSUk9SKEVOT01FTSkpOwotKwkJCVZFUklGWShi aW8pOwotKwotIAkJCUJJT19CSV9TRUNUT1IoYmlvKSA9IHZiaW8tPnZiaW9fb2Zmc2V0ID4+IDk7 Ci0rCQkJYmlvX3NldF9vcF9hdHRycyhiaW8sCi0rCQkJICAgIHZiaW8tPnZiaW9femlvLT5pb190 eXBlID09IFpJT19UWVBFX1dSSVRFID8KLSsJCQkgICAgV1JJVEUgOiBSRUFELCB2YmlvLT52Ymlv X2ZsYWdzKTsKLSAKLS0JCQliaW8tPmJpX25leHQgPSB2YmlvLT52YmlvX2Jpb3M7Ci0tCQkJdmJp by0+dmJpb19iaW9zID0gdmJpby0+dmJpb19iaW8gPSBiaW87Ci0rCQkJaWYgKHZiaW8tPnZiaW9f YmlvKSB7Ci0rCQkJCWJpb19jaGFpbih2YmlvLT52YmlvX2JpbywgYmlvKTsKLSsJCQkJdmRldl9z dWJtaXRfYmlvKHZiaW8tPnZiaW9fYmlvKTsKLSsJCQl9Ci0rCQkJdmJpby0+dmJpb19iaW8gPSBi aW87Ci0gCQl9Ci0gCi0gCQkvKgotQEAgLTczNSwxNTcgKzc0MCw5NyBAQCB2YmlvX2FkZF9wYWdl KHZiaW9fdCAqdmJpbywgc3RydWN0IHBhZ2UgKnBhZ2UsIHVpbnRfdCBzaXplLCB1aW50X3Qgb2Zm c2V0KQotIAkJdmJpby0+dmJpb19vZmZzZXQgKz0gQklPX0JJX1NJWkUoYmlvKTsKLSAKLSAJCS8q IFNpZ25hbCBuZXcgQklPIGFsbG9jYXRpb24gd2FudGVkICovCi0tCQl2YmlvLT52YmlvX2JpbyA9 IE5VTEw7Ci0rCQliaW8gPSBOVUxMOwotIAl9Ci0gCi0gCXJldHVybiAoMCk7Ci0gfQotIAotLUJJ T19FTkRfSU9fUFJPVE8odmRldl9kaXNrX2lvX3J3X2NvbXBsZXRpb24sIGJpbywgZXJyb3IpOwot LXN0YXRpYyB2b2lkIHZiaW9fcHV0KHZiaW9fdCAqdmJpbyk7Ci0rLyogSXRlcmF0b3IgY2FsbGJh Y2sgdG8gc3VibWl0IEFCRCBwYWdlcyB0byB0aGUgdmJpby4gKi8KLStzdGF0aWMgaW50Ci0rdmJp b19maWxsX2NiKHN0cnVjdCBwYWdlICpwYWdlLCBzaXplX3Qgb2ZmLCBzaXplX3QgbGVuLCB2b2lk ICpwcml2KQotK3sKLSsJdmJpb190ICp2YmlvID0gcHJpdjsKLSsJcmV0dXJuICh2YmlvX2FkZF9w YWdlKHZiaW8sIHBhZ2UsIGxlbiwgb2ZmKSk7Ci0rfQotIAotKy8qIENyZWF0ZSBzb21lIEJJT3Ms IGZpbGwgdGhlbSB3aXRoIGRhdGEgYW5kIHN1Ym1pdCB0aGVtICovCi0gc3RhdGljIHZvaWQKLS12 YmlvX3N1Ym1pdCh2YmlvX3QgKnZiaW8sIGludCBmbGFncykKLSt2YmlvX3N1Ym1pdCh2YmlvX3Qg KnZiaW8sIGFiZF90ICphYmQsIHVpbnQ2NF90IHNpemUpCi0gewotLQlBU1NFUlQodmJpby0+dmJp b19iaW9zKTsKLS0Jc3RydWN0IGJpbyAqYmlvID0gdmJpby0+dmJpb19iaW9zOwotLQl2YmlvLT52 YmlvX2JpbyA9IHZiaW8tPnZiaW9fYmlvcyA9IE5VTEw7Ci0tCi0tCS8qCi0tCSAqIFdlIHRha2Ug YSByZWZlcmVuY2UgZm9yIGVhY2ggQklPIGFzIHdlIHN1Ym1pdCBpdCwgcGx1cyBvbmUgdG8KLS0J ICogcHJvdGVjdCB1cyBmcm9tIEJJT3MgY29tcGxldGluZyBiZWZvcmUgd2UncmUgZG9uZSBzdWJt aXR0aW5nIHRoZW0KLS0JICogYWxsLCBjYXVzaW5nIHZiaW9fcHV0KCkgdG8gZnJlZSB2YmlvIG91 dCBmcm9tIHVuZGVyIHVzIGFuZC9vciB0aGUKLS0JICogemlvIHRvIGJlIHJldHVybmVkIGJlZm9y ZSBhbGwgaXRzIElPIGhhcyBjb21wbGV0ZWQuCi0tCSAqLwotLQlhdG9taWNfc2V0KCZ2YmlvLT52 YmlvX3JlZiwgMSk7Ci0rCUFTU0VSVCh2YmlvLT52YmlvX2JkZXYpOwotIAotIAkvKgotLQkgKiBJ ZiB3ZSdyZSBzdWJtaXR0aW5nIG1vcmUgdGhhbiBvbmUgQklPLCBpbmZvcm0gdGhlIGJsb2NrIGxh eWVyIHNvCi0tCSAqIGl0IGNhbiBiYXRjaCB0aGVtIGlmIGl0IHdhbnRzLgotKwkgKiBXZSBwbHVn IHNvIHdlIGNhbiBzdWJtaXQgdGhlIEJJT3MgYXMgd2UgZ28gYW5kIG9ubHkgdW5wbHVnIHRoZW0g d2hlbgotKwkgKiB0aGV5IGFyZSBmdWxseSBjcmVhdGVkIGFuZCBzdWJtaXR0ZWQuIFRoaXMgaXMg aW1wb3J0YW50OyBpZiB3ZSBkb24ndAotKwkgKiBwbHVnLCB0aGVuIHRoZSBrZXJuZWwgbWF5IHN0 YXJ0IGV4ZWN1dGluZyBlYXJsaWVyIEJJT3Mgd2hpbGUgd2UncmUKLSsJICogc3RpbGwgY3JlYXRp bmcgYW5kIGV4ZWN1dGluZyBsYXRlciBvbmVzLCBhbmQgaWYgdGhlIGRldmljZSBnb2VzCi0rCSAq IGF3YXkgd2hpbGUgdGhhdCdzIGhhcHBlbmluZywgb2xkZXIga2VybmVscyBjYW4gZ2V0IGNvbmZ1 c2VkIGFuZAotKwkgKiB0cmFtcGxlIG1lbW9yeS4KLSAJICovCi0gCXN0cnVjdCBibGtfcGx1ZyBw bHVnOwotLQlib29sZWFuX3QgZG9fcGx1ZyA9IChiaW8tPmJpX25leHQgIT0gTlVMTCk7Ci0tCWlm IChkb19wbHVnKQotLQkJYmxrX3N0YXJ0X3BsdWcoJnBsdWcpOwotKwlibGtfc3RhcnRfcGx1Zygm cGx1Zyk7Ci0gCi0tCS8qIFN1Ym1pdCBhbGwgdGhlIEJJT3MgKi8KLS0Jd2hpbGUgKGJpbyAhPSBO VUxMKSB7Ci0tCQlhdG9taWNfaW5jKCZ2YmlvLT52YmlvX3JlZik7Ci0rCSh2b2lkKSBhYmRfaXRl cmF0ZV9wYWdlX2Z1bmMoYWJkLCAwLCBzaXplLCB2YmlvX2ZpbGxfY2IsIHZiaW8pOwotKwlBU1NF UlQodmJpby0+dmJpb19iaW8pOwotIAotLQkJc3RydWN0IGJpbyAqbmV4dCA9IGJpby0+YmlfbmV4 dDsKLS0JCWJpby0+YmlfbmV4dCA9IE5VTEw7Ci0rCXZiaW8tPnZiaW9fYmlvLT5iaV9lbmRfaW8g PSB2YmlvX2NvbXBsZXRpb247Ci0rCXZiaW8tPnZiaW9fYmlvLT5iaV9wcml2YXRlID0gdmJpbzsK LSAKLS0JCWJpby0+YmlfZW5kX2lvID0gdmRldl9kaXNrX2lvX3J3X2NvbXBsZXRpb247Ci0tCQli aW8tPmJpX3ByaXZhdGUgPSB2YmlvOwotLQkJYmlvX3NldF9vcF9hdHRycyhiaW8sCi0tCQkgICAg dmJpby0+dmJpb196aW8tPmlvX3R5cGUgPT0gWklPX1RZUEVfV1JJVEUgPwotLQkJICAgIFdSSVRF IDogUkVBRCwgZmxhZ3MpOwotKwl2ZGV2X3N1Ym1pdF9iaW8odmJpby0+dmJpb19iaW8pOwotIAot LQkJdmRldl9zdWJtaXRfYmlvKGJpbyk7Ci0tCi0tCQliaW8gPSBuZXh0OwotLQl9Ci0tCi0tCS8q IEZpbmlzaCB0aGUgYmF0Y2ggKi8KLS0JaWYgKGRvX3BsdWcpCi0tCQlibGtfZmluaXNoX3BsdWco JnBsdWcpOwotKwlibGtfZmluaXNoX3BsdWcoJnBsdWcpOwotIAotLQkvKiBSZWxlYXNlIHRoZSBl eHRyYSByZWZlcmVuY2UgKi8KLS0JdmJpb19wdXQodmJpbyk7Ci0rCXZiaW8tPnZiaW9fYmlvID0g TlVMTDsKLSsJdmJpby0+dmJpb19iZGV2ID0gTlVMTDsKLSB9Ci0gCi0tc3RhdGljIHZvaWQKLS12 YmlvX3JldHVybl9hYmQodmJpb190ICp2YmlvKQotKy8qIElPIGNvbXBsZXRpb24gY2FsbGJhY2sg Ki8KLStCSU9fRU5EX0lPX1BST1RPKHZiaW9fY29tcGxldGlvbiwgYmlvLCBlcnJvcikKLSB7Ci0r CXZiaW9fdCAqdmJpbyA9IGJpby0+YmlfcHJpdmF0ZTsKLSAJemlvX3QgKnppbyA9IHZiaW8tPnZi aW9femlvOwotLQlpZiAodmJpby0+dmJpb19hYmQgPT0gTlVMTCkKLS0JCXJldHVybjsKLS0KLS0J LyoKLS0JICogSWYgd2UgY29waWVkIHRoZSBBQkQgYmVmb3JlIGlzc3VpbmcgaXQsIGNsZWFuIHVw IGFuZCByZXR1cm4gdGhlIGNvcHkKLS0JICogdG8gdGhlIEFEQiwgd2l0aCBjaGFuZ2VzIGlmIGFw cHJvcHJpYXRlLgotLQkgKi8KLS0Jdm9pZCAqYnVmID0gYWJkX3RvX2J1Zih2YmlvLT52YmlvX2Fi ZCk7Ci0tCWFiZF9mcmVlKHZiaW8tPnZiaW9fYWJkKTsKLS0JdmJpby0+dmJpb19hYmQgPSBOVUxM OwotLQotLQlpZiAoemlvLT5pb190eXBlID09IFpJT19UWVBFX1JFQUQpCi0tCQlhYmRfcmV0dXJu X2J1Zl9jb3B5KHppby0+aW9fYWJkLCBidWYsIHppby0+aW9fc2l6ZSk7Ci0tCWVsc2UKLS0JCWFi ZF9yZXR1cm5fYnVmKHppby0+aW9fYWJkLCBidWYsIHppby0+aW9fc2l6ZSk7Ci0tfQotIAotLXN0 YXRpYyB2b2lkCi0tdmJpb19mcmVlKHZiaW9fdCAqdmJpbykKLS17Ci0tCVZFUklGWTAoYXRvbWlj X3JlYWQoJnZiaW8tPnZiaW9fcmVmKSk7Ci0tCi0tCXZiaW9fcmV0dXJuX2FiZCh2YmlvKTsKLSsJ QVNTRVJUKHppbyk7Ci0gCi0tCWttZW1fZnJlZSh2YmlvLCBzaXplb2YgKHZiaW9fdCkpOwotLX0K LSsJLyogQ2FwdHVyZSBhbmQgbG9nIGFueSBlcnJvcnMgKi8KLSsjaWZkZWYgSEFWRV8xQVJHX0JJ T19FTkRfSU9fVAotKwl6aW8tPmlvX2Vycm9yID0gQklPX0VORF9JT19FUlJPUihiaW8pOwotKyNl bHNlCi0rCXppby0+aW9fZXJyb3IgPSAwOwotKwlpZiAoZXJyb3IpCi0rCQl6aW8tPmlvX2Vycm9y ID0gLShlcnJvcik7Ci0rCWVsc2UgaWYgKCF0ZXN0X2JpdChCSU9fVVBUT0RBVEUsICZiaW8tPmJp X2ZsYWdzKSkKLSsJCXppby0+aW9fZXJyb3IgPSBFSU87Ci0rI2VuZGlmCi0rCUFTU0VSVDNVKHpp by0+aW9fZXJyb3IsID49LCAwKTsKLSAKLS1zdGF0aWMgdm9pZAotLXZiaW9fcHV0KHZiaW9fdCAq dmJpbykKLS17Ci0tCWlmIChhdG9taWNfZGVjX3JldHVybigmdmJpby0+dmJpb19yZWYpID4gMCkK LS0JCXJldHVybjsKLSsJaWYgKHppby0+aW9fZXJyb3IpCi0rCQl2ZGV2X2Rpc2tfZXJyb3Ioemlv KTsKLSAKLS0JLyoKLS0JICogVGhpcyB3YXMgdGhlIGxhc3QgcmVmZXJlbmNlLCBzbyB0aGUgZW50 aXJlIElPIGlzIGNvbXBsZXRlZC4gQ2xlYW4KLS0JICogdXAgYW5kIHN1Ym1pdCBpdCBmb3IgcHJv Y2Vzc2luZy4KLS0JICovCi0rCS8qIFJldHVybiB0aGUgQklPIHRvIHRoZSBrZXJuZWwgKi8KLSsJ YmlvX3B1dChiaW8pOwotIAotIAkvKgotLQkgKiBHZXQgYW55IGRhdGEgYnVmIGJhY2sgdG8gdGhl IG9yaWdpbmFsIEFCRCwgaWYgbmVjZXNzYXJ5LiBXZSBkbyB0aGlzCi0tCSAqIG5vdyBzbyB3ZSBj YW4gZ2V0IHRoZSBaSU8gaW50byB0aGUgcGlwZWxpbmUgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSwK LS0JICogYW5kIHRoZW4gZG8gdGhlIHJlbWFpbmluZyBjbGVhbnVwIGFmdGVyLgotKwkgKiBJZiB3 ZSBjb3BpZWQgdGhlIEFCRCBiZWZvcmUgaXNzdWluZyBpdCwgY2xlYW4gdXAgYW5kIHJldHVybiB0 aGUgY29weQotKwkgKiB0byB0aGUgQURCLCB3aXRoIGNoYW5nZXMgaWYgYXBwcm9wcmlhdGUuCi0g CSAqLwotLQl2YmlvX3JldHVybl9hYmQodmJpbyk7Ci0rCWlmICh2YmlvLT52YmlvX2FiZCAhPSBO VUxMKSB7Ci0rCQl2b2lkICpidWYgPSBhYmRfdG9fYnVmKHZiaW8tPnZiaW9fYWJkKTsKLSsJCWFi ZF9mcmVlKHZiaW8tPnZiaW9fYWJkKTsKLSsJCXZiaW8tPnZiaW9fYWJkID0gTlVMTDsKLSAKLS0J emlvX3QgKnppbyA9IHZiaW8tPnZiaW9femlvOwotKwkJaWYgKHppby0+aW9fdHlwZSA9PSBaSU9f VFlQRV9SRUFEKQotKwkJCWFiZF9yZXR1cm5fYnVmX2NvcHkoemlvLT5pb19hYmQsIGJ1Ziwgemlv LT5pb19zaXplKTsKLSsJCWVsc2UKLSsJCQlhYmRfcmV0dXJuX2J1Zih6aW8tPmlvX2FiZCwgYnVm LCB6aW8tPmlvX3NpemUpOwotKwl9Ci0gCi0tCS8qCi0tCSAqIFNldCB0aGUgb3ZlcmFsbCBlcnJv ci4gSWYgbXVsdGlwbGUgQklPcyByZXR1cm5lZCBhbiBlcnJvciwgb25seSB0aGUKLS0JICogZmly c3Qgd2lsbCBiZSB0YWtlbjsgdGhlIG90aGVycyBhcmUgZHJvcHBlZCAoc2VlCi0tCSAqIHZkZXZf ZGlza19pb19yd19jb21wbGV0aW9uKCkpLiBJdHMgcHJldHR5IG11Y2ggaW1wb3NzaWJsZSBmb3IK LS0JICogbXVsdGlwbGUgSU9zIHRvIHRoZSBzYW1lIGRldmljZSB0byBmYWlsIHdpdGggZGlmZmVy ZW50IGVycm9ycywgc28KLS0JICogdGhlcmUncyBubyByZWFsIHJpc2suCi0tCSAqLwotLQl6aW8t PmlvX2Vycm9yID0gdmJpby0+dmJpb19lcnJvcjsKLS0JaWYgKHppby0+aW9fZXJyb3IpCi0tCQl2 ZGV2X2Rpc2tfZXJyb3IoemlvKTsKLSsJLyogRmluYWwgY2xlYW51cCAqLwotKwlrbWVtX2ZyZWUo dmJpbywgc2l6ZW9mICh2YmlvX3QpKTsKLSAKLSAJLyogQWxsIGRvbmUsIHN1Ym1pdCBmb3IgcHJv Y2Vzc2luZyAqLwotIAl6aW9fZGVsYXlfaW50ZXJydXB0KHppbyk7Ci0tCi0tCS8qIEZpbmlzaCBj bGVhbnVwICovCi0tCXZiaW9fZnJlZSh2YmlvKTsKLS19Ci0tCi0tQklPX0VORF9JT19QUk9UTyh2 ZGV2X2Rpc2tfaW9fcndfY29tcGxldGlvbiwgYmlvLCBlcnJvcikKLS17Ci0tCXZiaW9fdCAqdmJp byA9IGJpby0+YmlfcHJpdmF0ZTsKLS0KLS0JaWYgKHZiaW8tPnZiaW9fZXJyb3IgPT0gMCkgewot LSNpZmRlZiBIQVZFXzFBUkdfQklPX0VORF9JT19UCi0tCQl2YmlvLT52YmlvX2Vycm9yID0gQklP X0VORF9JT19FUlJPUihiaW8pOwotLSNlbHNlCi0tCQlpZiAoZXJyb3IpCi0tCQkJdmJpby0+dmJp b19lcnJvciA9IC0oZXJyb3IpOwotLQkJZWxzZSBpZiAoIXRlc3RfYml0KEJJT19VUFRPREFURSwg JmJpby0+YmlfZmxhZ3MpKQotLQkJCXZiaW8tPnZiaW9fZXJyb3IgPSBFSU87Ci0tI2VuZGlmCi0t CX0KLS0KLS0JLyoKLS0JICogRGVzdHJveSB0aGUgQklPLiBUaGlzIGlzIHNhZmUgdG8gZG87IHRo ZSB2YmlvIG93bnMgaXRzIGRhdGEgYW5kIHRoZQotLQkgKiBrZXJuZWwgd29uJ3QgdG91Y2ggaXQg YWdhaW4gYWZ0ZXIgdGhlIGNvbXBsZXRpb24gZnVuY3Rpb24gcnVucy4KLS0JICovCi0tCWJpb19w dXQoYmlvKTsKLS0KLS0JLyogRHJvcCB0aGlzIEJJT3MgcmVmZXJlbmNlIGFjcXVpcmVkIGJ5IHZi aW9fc3VibWl0KCkgKi8KLS0JdmJpb19wdXQodmJpbyk7Ci0gfQotIAotIC8qCi1AQCAtOTQ4LDE0 ICs4OTMsNiBAQCB2ZGV2X2Rpc2tfY2hlY2tfcGFnZXMoYWJkX3QgKmFiZCwgdWludDY0X3Qgc2l6 ZSwgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldikKLSAJcmV0dXJuIChCX1RSVUUpOwotIH0KLSAK LS0vKiBJdGVyYXRvciBjYWxsYmFjayB0byBzdWJtaXQgQUJEIHBhZ2VzIHRvIHRoZSB2YmlvLiAq LwotLXN0YXRpYyBpbnQKLS12ZGV2X2Rpc2tfZmlsbF92YmlvX2NiKHN0cnVjdCBwYWdlICpwYWdl LCBzaXplX3Qgb2ZmLCBzaXplX3QgbGVuLCB2b2lkICpwcml2KQotLXsKLS0JdmJpb190ICp2Ymlv ID0gcHJpdjsKLS0JcmV0dXJuICh2YmlvX2FkZF9wYWdlKHZiaW8sIHBhZ2UsIGxlbiwgb2ZmKSk7 Ci0tfQotLQotIHN0YXRpYyBpbnQKLSB2ZGV2X2Rpc2tfaW9fcncoemlvX3QgKnppbykKLSB7Ci1A QCAtMTAxOCwyMCArOTU1LDEyIEBAIHZkZXZfZGlza19pb19ydyh6aW9fdCAqemlvKQotIAl9Ci0g Ci0gCS8qIEFsbG9jYXRlIHZiaW8sIHdpdGggYSBwb2ludGVyIHRvIHRoZSBib3Jyb3dlZCBBQkQg aWYgbmVjZXNzYXJ5ICovCi0tCWludCBlcnJvciA9IDA7Ci0tCXZiaW9fdCAqdmJpbyA9IHZiaW9f YWxsb2MoemlvLCBiZGV2KTsKLSsJdmJpb190ICp2YmlvID0gdmJpb19hbGxvYyh6aW8sIGJkZXYs IGZsYWdzKTsKLSAJaWYgKGFiZCAhPSB6aW8tPmlvX2FiZCkKLSAJCXZiaW8tPnZiaW9fYWJkID0g YWJkOwotIAotLQkvKiBGaWxsIGl0IHdpdGggcGFnZXMgKi8KLS0JZXJyb3IgPSBhYmRfaXRlcmF0 ZV9wYWdlX2Z1bmMoYWJkLCAwLCB6aW8tPmlvX3NpemUsCi0tCSAgICB2ZGV2X2Rpc2tfZmlsbF92 YmlvX2NiLCB2YmlvKTsKLS0JaWYgKGVycm9yICE9IDApIHsKLS0JCXZiaW9fZnJlZSh2YmlvKTsK LS0JCXJldHVybiAoZXJyb3IpOwotLQl9Ci0tCi0tCXZiaW9fc3VibWl0KHZiaW8sIGZsYWdzKTsK LSsJLyogRmlsbCBpdCB3aXRoIGRhdGEgcGFnZXMgYW5kIHN1Ym1pdCBpdCB0byB0aGUga2VybmVs ICovCi0rCXZiaW9fc3VibWl0KHZiaW8sIGFiZCwgemlvLT5pb19zaXplKTsKLSAJcmV0dXJuICgw KTsKLSB9Ci0gCmRpZmYgLS1naXQgYS9kZWJpYW4vcGF0Y2hlcy8wMDIyLWFiZF9pdGVyX3BhZ2Ut ZG9uLXQtdXNlLWNvbXBvdW5kLWhlYWRzLW9uLUxpbnV4LTQuNS5wYXRjaCBiL2RlYmlhbi9wYXRj aGVzLzAwMjItYWJkX2l0ZXJfcGFnZS1kb24tdC11c2UtY29tcG91bmQtaGVhZHMtb24tTGludXgt NC41LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGRiYmY5ZC4uMDAwMDAw MDAKLS0tIGEvZGViaWFuL3BhdGNoZXMvMDAyMi1hYmRfaXRlcl9wYWdlLWRvbi10LXVzZS1jb21w b3VuZC1oZWFkcy1vbi1MaW51eC00LjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCww IEBACi1Gcm9tIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2IgTm9ycmlzIDxyb2Iubm9ycmlzQGtsYXJhc3lz dGVtcy5jb20+Ci1EYXRlOiBUaHUsIDE0IE1hciAyMDI0IDEwOjU3OjMwICsxMTAwCi1TdWJqZWN0 OiBbUEFUQ0hdIGFiZF9pdGVyX3BhZ2U6IGRvbid0IHVzZSBjb21wb3VuZCBoZWFkcyBvbiBMaW51 eCA8NC41Ci0KLUJlZm9yZSA0LjUgKHNwZWNpZmljYWxseSwgdG9ydmFsZHMvbGludXhAZGRjNThm MiksIGhlYWQgYW5kIHRhaWwgcGFnZXMKLWluIGEgY29tcG91bmQgcGFnZSB3ZXJlIHJlZmNvdW50 ZWQgc2VwYXJhdGVseS4gVGhpcyBtZWFucyB0aGF0IHVzaW5nIHRoZQotaGVhZCBwYWdlIHdpdGhv dXQgdGFraW5nIGEgcmVmZXJlbmNlIHRvIGl0IGNvdWxkIHNlZSBpdCBjbGVhbmVkIHVwIGxhdGVy Ci1iZWZvcmUgd2UncmUgZmluaXNoZWQgd2l0aCBpdC4gU3BlY2lmaWNhbGx5LCBiaW9fYWRkX3Bh Z2UoKSB3b3VsZCB0YWtlIGEKLXJlZmVyZW5jZSwgYW5kIGRyb3AgaXRzIHJlZmVyZW5jZSBhZnRl ciB0aGUgYmlvIGNvbXBsZXRpb24gY2FsbGJhY2sKLXJldHVybnMuCi0KLUlmIHRoZSB6aW8gaXMg ZXhlY3V0ZWQgaW1tZWRpYXRlbHkgZnJvbSB0aGUgY29tcGxldGlvbiBjYWxsYmFjaywgdGhpcyBp cwotdXN1YWxseSBvaywgYXMgYW55IGRhdGEgaXMgcmVmZXJlbmNlZCB0aHJvdWdoIHRoZSB0YWls IHBhZ2UgcmVmZXJlbmNlZAotYnkgdGhlIEFCRCwgYW5kIHNvIGJlY29tZXMgImxpdmUiIHRoYXQg d2F5LiBJZiB0aGVyZSdzIGEgZGVsYXkgaW4gemlvCi1leGVjdXRpb24gKGhpZ2ggbG9hZCwgZXJy b3IgaW5qZWN0aW9uKSwgdGhlbiB0aGUgaGVhZCBwYWdlIGNhbiBiZSBmcmVlZCwKLWFsb25nIHdp dGggYW55IGRpcnR5IGZsYWdzIG9yIG90aGVyIGluZGljYXRvcnMgdGhhdCB0aGUgdW5kZXJseWlu ZwotbWVtb3J5IGlzIHVzZWQuIExhdGVyLCB3aGVuIHRoZSB6aW8gY29tcGxldGVzIGFuZCB0aGF0 IG1lbW9yeSBpcwotYWNjZXNzZWQsIGl0cyBlaXRoZXIgdW5tYXBwZWQgYW5kIGFuIHVuaGFuZGxl ZCBmYXVsdCB0YWtlcyBkb3duIHRoZQotZW50aXJlIHN5c3RlbSwgb3IgaXQgaXMgbWFwcGVkIGFu ZCB3ZSBlbmQgdXAgbWVzc2luZyBhcm91bmQgaW4gc29tZW9uZQotZWxzZSdzIG1lbW9yeS4gQm90 aCBvZiB0aGVzZSBhcmUgdmVyeSBiYWQuCi0KLVRoZSBzb2x1dGlvbiBvbiB0aGVzZSBvbGRlciBr ZXJuZWxzIGlzIHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIGhlYWQKLXBhZ2Ugd2hlbiB3ZSB1 c2UgaXQsIGFuZCByZWxlYXNlIGl0IHdoZW4gd2UncmUgZG9uZS4gVGhlcmUncyBub3QgcmVhbGx5 Ci1hIHNlbnNpYmxlIHdheSB1bmRlciBvdXIgY3VycmVudCBzdHJ1Y3R1cmUgdG8gZG8gdGhpczsg dGhlICJiZXN0IiB3b3VsZAotYmUgdG8ga2VlcCBhIGxpc3Qgb2YgaGVhZCBwYWdlIHJlZmVyZW5j ZXMgaW4gdGhlIEFCRCwgYW5kIHJlbGVhc2UgdGhlbQotd2hlbiB0aGUgQUJEIGlzIGZyZWVkLgot Ci1TaW5jZSB0aGlzIGFkZGl0aW9uYWwgb3ZlcmhlYWQgaXMgdG90YWxseSB1bm5lY2Vzc2FyeSBv biA0LjUrLCB3aGVyZQotaGVhZCBhbmQgdGFpbCBwYWdlcyBzaGFyZSByZWZjb3VudHMsIEkndmUg b3B0ZWQgdG8gc2ltcGx5IG5vdCB1c2UgdGhlCi1jb21wb3VuZCBoZWFkIGluIEFCRCBwYWdlIGl0 ZXJhdGlvbiB0aGVyZS4gVGhpcyBpcyB0aGVvcmV0aWNhbGx5IGxlc3MKLWVmZmljaWVudCAodGhv dWdoIGNsZWFuaW5nIHVwIGhlYWQgcGFnZSByZWZlcmVuY2VzIHdvdWxkIGFkZCBvdmVyaGVhZCks Ci1idXQgaXRzIHNhZmUsIGFuZCB3ZSBzdGlsbCBnZXQgdGhlIG90aGVyIGJlbmVmaXRzIG9mIG5v dCBtYXBwaW5nIHBhZ2VzCi1iZWZvcmUgYWRkaW5nIHRoZW0gdG8gYSBiaW8gYW5kIG5vdCBtaXMt c3BsaXR0aW5nIHBhZ2VzLgotCi1UaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhbiBvYnZpb3Vz IHN5bWJvbCBuYW1lIG9yIGNvbmZpZyBvcHRpb24gd2UKLWNhbiBtYXRjaCBvbiB0byBkaXNjb3Zl ciB0aGlzIGJlaGF2aW91ciBpbiBjb25maWd1cmUgKGFuZCB0aGUgbW0vcGFnZQotQVBJcyBoYXZl IGNoYW5nZWQgYSBsb3Qgc2luY2UgdGhlbiBhbnl3YXkpLCBzbyBJJ3ZlIGdvbmUgd2l0aCBhIHNp bXBsZQotdmVyc2lvbiBjaGVjay4KLQotUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBNb3RpbiA8bWF2 QEZyZWVCU0Qub3JnPgotUmV2aWV3ZWQtYnk6IEJyaWFuIEJlaGxlbmRvcmYgPGJlaGxlbmRvcmYx QGxsbmwuZ292PgotU2lnbmVkLW9mZi1ieTogUm9iIE5vcnJpcyA8cm9iLm5vcnJpc0BrbGFyYXN5 c3RlbXMuY29tPgotU3BvbnNvcmVkLWJ5OiBLbGFyYSwgSW5jLgotU3BvbnNvcmVkLWJ5OiBXYXNh YmkgVGVjaG5vbG9neSwgSW5jLgotQ2xvc2VzICMxNTUzMwotQ2xvc2VzICMxNTU4OAotKGNoZXJy eSBwaWNrZWQgZnJvbSBjb21taXQgYzZiZTZjZTE3NTVhM2Q5YTNjYmU3MDI1NmNkODk1OGVmODNk ODU0MikKLS0tLQotIG1vZHVsZS9vcy9saW51eC96ZnMvYWJkX29zLmMgfCAxNCArKysrKysrKysr KysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9t b2R1bGUvb3MvbGludXgvemZzL2FiZF9vcy5jIGIvbW9kdWxlL29zL2xpbnV4L3pmcy9hYmRfb3Mu YwotaW5kZXggM2ZlMDFjMGI3Li5kMzI1NWRjYmMgMTAwNjQ0Ci0tLS0gYS9tb2R1bGUvb3MvbGlu dXgvemZzL2FiZF9vcy5jCi0rKysgYi9tb2R1bGUvb3MvbGludXgvemZzL2FiZF9vcy5jCi1AQCAt NjIsNiArNjIsNyBAQAotICNpbmNsdWRlIDxsaW51eC9rbWFwX2NvbXBhdC5oPgotICNpbmNsdWRl IDxsaW51eC9tbV9jb21wYXQuaD4KLSAjaW5jbHVkZSA8bGludXgvc2NhdHRlcmxpc3QuaD4KLSsj aW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgotICNlbmRpZgotIAotICNpZmRlZiBfS0VSTkVMCi1A QCAtMTA2MSw2ICsxMDYyLDcgQEAgYWJkX2l0ZXJfcGFnZShzdHJ1Y3QgYWJkX2l0ZXIgKmFpdGVy KQotIAl9Ci0gCUFTU0VSVChwYWdlKTsKLSAKLSsjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtF Uk5FTF9WRVJTSU9OKDQsIDUsIDApCi0gCWlmIChQYWdlVGFpbChwYWdlKSkgewotIAkJLyoKLSAJ CSAqIFRoaXMgcGFnZSBpcyBwYXJ0IG9mIGEgImNvbXBvdW5kIHBhZ2UiLCB3aGljaCBpcyBhIGdy b3VwIG9mCi1AQCAtMTA4MiwxMSArMTA4NCwyMyBAQCBhYmRfaXRlcl9wYWdlKHN0cnVjdCBhYmRf aXRlciAqYWl0ZXIpCi0gCQkgKiBUbyBkbyB0aGlzLCB3ZSBuZWVkIHRvIGFkanVzdCB0aGUgb2Zm c2V0IHRvIGJlIGNvdW50ZWQgZnJvbQotIAkJICogdGhlIGhlYWQgcGFnZS4gc3RydWN0IHBhZ2Ug Zm9yIGNvbXBvdW5kIHBhZ2VzIGFyZSBzdG9yZWQKLSAJCSAqIGNvbnRpZ3VvdXNseSwgc28gd2Ug Y2FuIGp1c3QgYWRqdXN0IGJ5IGEgc2ltcGxlIG9mZnNldC4KLSsJCSAqCi0rCQkgKiBCZWZvcmUg a2VybmVsIDQuNSwgY29tcG91bmQgcGFnZSBoZWFkcyB3ZXJlIHJlZmNvdW50ZWQKLSsJCSAqIHNl cGFyYXRlbHksIHN1Y2ggdGhhdCBtb3ZpbmcgYmFjayB0byB0aGUgaGVhZCBwYWdlIHdvdWxkCi0r CQkgKiByZXF1aXJlIHVzIHRvIHRha2UgYSByZWZlcmVuY2UgdG8gaXQgYW5kIHJlbGVhc2luZyBp dCBvbmNlCi0rCQkgKiB3ZSdyZSBjb21wbGV0ZWx5IGZpbmlzaGVkIHdpdGggaXQuIEluIHByYWN0 aWNlLCB0aGF0IG1lYW5zCi0rCQkgKiB3aGVuIG91ciBjYWxsZXIgaXMgZG9uZSB3aXRoIHRoZSBB QkQsIHdoaWNoIHdlIGhhdmUgbm8KLSsJCSAqIGluc2lnaHQgaW50byBmcm9tIGhlcmUuIFJhdGhl ciB0aGFuIGNvbnRvcnQgdGhpcyBBUEkgdG8KLSsJCSAqIHRyYWNrIGhlYWQgcGFnZSByZWZlcmVu Y2VzIG9uIHN1Y2ggYW5jaWVudCBrZXJuZWxzLCB3ZSBqdXN0Ci0rCQkgKiBjb21waWxlIHRoaXMg YmxvY2sgb3V0IGFuZCB1c2UgdGhlIHRhaWwgcGFnZXMgZGlyZWN0bHkuIFRoaXMKLSsJCSAqIGlz IHNsaWdodGx5IGxlc3MgZWZmaWNpZW50LCBidXQgbWFrZXMgZXZlcnl0aGluZyBmYXIKLSsJCSAq IHNpbXBsZXIuCi0gCQkgKi8KLSAJCXN0cnVjdCBwYWdlICpoZWFkID0gY29tcG91bmRfaGVhZChw YWdlKTsKLSAJCWRvZmYgKz0gKChwYWdlIC0gaGVhZCkgKiBQQUdFU0laRSk7Ci0gCQlwYWdlID0g aGVhZDsKLSAJfQotKyNlbmRpZgotIAotIAkvKiBmaW5hbCBwYWdlIGFuZCBwb3NpdGlvbiB3aXRo aW4gaXQgKi8KLSAJYWl0ZXItPml0ZXJfcGFnZSA9IHBhZ2U7CmRpZmYgLS1naXQgYS9kZWJpYW4v cGF0Y2hlcy8wMDIzLXZkZXZfZGlzay1kZWZhdWx0LXRvLWNsYXNzaWMtc3VibWlzc2lvbi1mb3It Mi4yLngucGF0Y2ggYi9kZWJpYW4vcGF0Y2hlcy8wMDIzLXZkZXZfZGlzay1kZWZhdWx0LXRvLWNs YXNzaWMtc3VibWlzc2lvbi1mb3ItMi4yLngucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGUyZjE0MjJmLi4wMDAwMDAwMAotLS0gYS9kZWJpYW4vcGF0Y2hlcy8wMDIzLXZkZXZf ZGlzay1kZWZhdWx0LXRvLWNsYXNzaWMtc3VibWlzc2lvbi1mb3ItMi4yLngucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1Gcm9tIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2IgTm9ycmlz IDxyb2Iubm9ycmlzQGtsYXJhc3lzdGVtcy5jb20+Ci1EYXRlOiBXZWQsIDI3IE1hciAyMDI0IDEz OjExOjEyICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHZkZXZfZGlzazogZGVmYXVsdCB0byBjbGFz c2ljIHN1Ym1pc3Npb24gZm9yIDIuMi54Ci0KLVdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIHRvIGJy YW5kLW5ldyBjb2RlIGluIHRoZSBtaWRkbGUgb2YgYSBzdGFibGUKLXNlcmllcywgYnV0IHdlIHdh bnQgaXQgYXZhaWxhYmxlIHRvIHRlc3QgZm9yIHBlb3BsZSBydW5uaW5nIGludG8gcGFnZQotc3Bs aXR0aW5nIGlzc3Vlcy4KLQotVGhpcyBjb21taXRzIG1ha2UgemZzX3ZkZXZfZGlza19jbGFzc2lj PTEgdGhlIGRlZmF1bHQsIGFuZCB1cGRhdGVzIHRoZQotZG9jdW1lbnRhdGlvbiB0byBiZXR0ZXIg ZXhwbGFpbiB3aGF0J3MgZ29pbmcgb24uCi0KLVNpZ25lZC1vZmYtYnk6IFJvYiBOb3JyaXMgPHJv Yi5ub3JyaXNAa2xhcmFzeXN0ZW1zLmNvbT4KLVNwb25zb3JlZC1ieTogS2xhcmEsIEluYy4KLVNw b25zb3JlZC1ieTogV2FzYWJpIFRlY2hub2xvZ3ksIEluYy4KLS0tLQotIG1hbi9tYW40L3pmcy40 ICAgICAgICAgICAgICAgICAgfCAzMSArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCi0g bW9kdWxlL29zL2xpbnV4L3pmcy92ZGV2X2Rpc2suYyB8ICA4ICsrKysrLS0tCi0gMiBmaWxlcyBj aGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBh L21hbi9tYW40L3pmcy40IGIvbWFuL21hbjQvemZzLjQKLWluZGV4IDZhNjI4ZTdmMy4uYTk4ZWM1 MTlhIDEwMDY0NAotLS0tIGEvbWFuL21hbjQvemZzLjQKLSsrKyBiL21hbi9tYW40L3pmcy40Ci1A QCAtMTM1NSwxNyArMTM1NSwzMCBAQCBUaGlzIHBhcmFtZXRlciBvbmx5IGFwcGxpZXMgb24gTGlu dXguCi0gVGhpcyBwYXJhbWV0ZXIgaXMgaWdub3JlZCBpZgotIC5TeSB6ZnNfdmRldl9kaXNrX2Ns YXNzaWMgTnMgPSBOcyBTeSAxIC4KLSAuCi0tLkl0IFN5IHpmc192ZGV2X2Rpc2tfY2xhc3NpYyBO cyA9IE5zIFN5IDAgTnMgfCBOcyAxIFBxIHVpbnQKLS1JZiBzZXQgdG8gMSwgT3BlblpGUyB3aWxs IHN1Ym1pdCBJTyB0byBMaW51eCB1c2luZyB0aGUgbWV0aG9kIGl0IHVzZWQgaW4gMi4yCi0tYW5k IGVhcmxpZXIuCi0tVGhpcyAiY2xhc3NpYyIgbWV0aG9kIGhhcyBrbm93biBpc3N1ZXMgd2l0aCBo aWdobHkgZnJhZ21lbnRlZCBJTyByZXF1ZXN0cyBhbmQKLS1pcyBzbG93ZXIgb24gbWFueSB3b3Jr bG9hZHMsIGJ1dCBpdCBoYXMgYmVlbiBpbiB1c2UgZm9yIG1hbnkgeWVhcnMgYW5kIGlzIGtub3du Ci0tdG8gYmUgdmVyeSBzdGFibGUuCi0tSWYgeW91IHNldCB0aGlzIHBhcmFtZXRlciwgcGxlYXNl IGFsc28gb3BlbiBhIGJ1ZyByZXBvcnQgd2h5IHlvdSBkaWQgc28sCi0rLkl0IFN5IHpmc192ZGV2 X2Rpc2tfY2xhc3NpYyBOcyA9IE5zIDAgTnMgfCBOcyBTeSAxIFBxIHVpbnQKLStDb250cm9scyB0 aGUgbWV0aG9kIHVzZWQgdG8gc3VibWl0IElPIHRvIHRoZSBMaW51eCBibG9jayBsYXllcgotKyhk ZWZhdWx0Ci0rLlN5IDEgImNsYXNzaWMiIE5zCi0rKQotKy5QcAotK0lmIHNldCB0byAxLCB0aGUg ImNsYXNzaWMiIG1ldGhvZCBpcyB1c2VkLgotK1RoaXMgaXMgdGhlIG1ldGhvZCB0aGF0IGhhcyBi ZWVuIGluIHVzZSBzaW5jZSB0aGUgZWFybGllc3QgdmVyc2lvbnMgb2YKLStaRlMtb24tTGludXgu Ci0rSXQgaGFzIGtub3duIGlzc3VlcyB3aXRoIGhpZ2hseSBmcmFnbWVudGVkIElPIHJlcXVlc3Rz IGFuZCBpcyBsZXNzIGVmZmljaWVudCBvbgotK21hbnkgd29ya2xvYWRzLCBidXQgaXQgd2VsbCBr bm93biBhbmQgd2VsbCB1bmRlcnN0b29kLgotKy5QcAotK0lmIHNldCB0byAwLCB0aGUgIm5ldyIg bWV0aG9kIGlzIHVzZWQuCi0rVGhpcyBtZXRob2QgaXMgYXZhaWxhYmxlIHNpbmNlIDIuMi40IGFu ZCBzaG91bGQgcmVzb2x2ZSBhbGwga25vd24gaXNzdWVzIGFuZCBiZQotK2ZhciBtb3JlIGVmZmlj aWVudCwgYnV0IGhhcyBub3QgaGFkIGFzIG11Y2ggdGVzdGluZy4KLStJbiB0aGUgMi4yLnggc2Vy aWVzLCB0aGlzIHBhcmFtZXRlciBkZWZhdWx0cyB0byAxLCB0byB1c2UgdGhlICJjbGFzc2ljIiBt ZXRob2QuCi0rLlBwCi0rSXQgaXMgbm90IHJlY29tbWVuZGVkIHRoYXQgeW91IGNoYW5nZSBpdCBl eGNlcHQgb24gYWR2aWNlIGZyb20gdGhlIE9wZW5aRlMKLStkZXZlbG9wZXJzLgotK0lmIHlvdSBk byBjaGFuZ2UgaXQsIHBsZWFzZSBhbHNvIG9wZW4gYSBidWcgcmVwb3J0IGRlc2NyaWJpbmcgd2h5 IHlvdSBkaWQgc28sCi0gaW5jbHVkaW5nIHRoZSB3b3JrbG9hZCBpbnZvbHZlZCBhbmQgYW55IGVy cm9yIG1lc3NhZ2VzLgotIC5QcAotLVRoaXMgcGFyYW1ldGVyIGFuZCB0aGUgY2xhc3NpYyBzdWJt aXNzaW9uIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgb25jZSB3ZSBoYXZlCi0tdG90YWwgY29uZmlk ZW5jZSBpbiB0aGUgbmV3IG1ldGhvZC4KLStUaGlzIHBhcmFtZXRlciBhbmQgdGhlICJjbGFzc2lj IiBzdWJtaXNzaW9uIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUKLStyZWxlYXNl IG9mIE9wZW5aRlMgb25jZSB3ZSBoYXZlIHRvdGFsIGNvbmZpZGVuY2UgaW4gdGhlIG5ldyBtZXRo b2QuCi0gLlBwCi0gVGhpcyBwYXJhbWV0ZXIgb25seSBhcHBsaWVzIG9uIExpbnV4LCBhbmQgY2Fu IG9ubHkgYmUgc2V0IGF0IG1vZHVsZSBsb2FkIHRpbWUuCi0gLgotZGlmZiAtLWdpdCBhL21vZHVs ZS9vcy9saW51eC96ZnMvdmRldl9kaXNrLmMgYi9tb2R1bGUvb3MvbGludXgvemZzL3ZkZXZfZGlz ay5jCi1pbmRleCAzNjQ2OGZjMjEuLmUxYzE5YTA4NSAxMDA2NDQKLS0tLSBhL21vZHVsZS9vcy9s aW51eC96ZnMvdmRldl9kaXNrLmMKLSsrKyBiL21vZHVsZS9vcy9saW51eC96ZnMvdmRldl9kaXNr LmMKLUBAIC05NjksOCArOTY5LDEwIEBAIHZkZXZfZGlza19pb19ydyh6aW9fdCAqemlvKQotIC8q Ci0gICogVGhpcyBpcyB0aGUgY2xhc3NpYywgYmF0dGxlLXRlc3RlZCBCSU8gc3VibWlzc2lvbiBj b2RlLiBVbnRpbCB3ZSdyZSB0b3RhbGx5Ci0gICogc3VyZSB0aGF0IHRoZSBuZXcgY29kZSBpcyBz YWZlIGFuZCBjb3JyZWN0IGluIGFsbCBjYXNlcywgdGhpcyB3aWxsIHJlbWFpbgotLSAqIGF2YWls YWJsZSBhbmQgY2FuIGJlIGVuYWJsZWQgYnkgc2V0dGluZyB6ZnNfdmRldl9kaXNrX2NsYXNzaWM9 MSBhdCBtb2R1bGUKLS0gKiBsb2FkIHRpbWUuCi0rICogYXZhaWxhYmxlLgotKyAqCi0rICogSXQg aXMgZW5hYmxlZCBieSBzZXR0aW5nIHpmc192ZGV2X2Rpc2tfY2xhc3NpYz0xIGF0IG1vZHVsZSBs b2FkIHRpbWUuIEl0IGlzCi0rICogZW5hYmxlZCAoPTEpIGJ5IGRlZmF1bHQgc2luY2UgMi4yLjQs IGFuZCBkaXNhYmxlZCBieSBkZWZhdWx0ICg9MCkgb24gbWFzdGVyLgotICAqCi0gICogVGhlc2Ug ZnVuY3Rpb25zIGhhdmUgYmVlbiByZW5hbWVkIHRvIHZkZXZfY2xhc3NpY18qIHRvIG1ha2UgaXQg Y2xlYXIgd2hhdAotICAqIHRoZXkgYmVsb25nIHRvLCBidXQgdGhlaXIgaW1wbGVtZW50YXRpb25z IGFyZSB1bmNoYW5nZWQuCi1AQCAtMTQ2OCw3ICsxNDcwLDcgQEAgdmRldl9kaXNrX3JlbGUodmRl dl90ICp2ZCkKLSAgKiBCSU8gc3VibWlzc2lvbiBtZXRob2QuIFNlZSBjb21tZW50IGFib3ZlIGFi b3V0IHZkZXZfY2xhc3NpYy4KLSAgKiBTZXQgemZzX3ZkZXZfZGlza19jbGFzc2ljPTAgZm9yIG5l dywgPTEgZm9yIGNsYXNzaWMKLSAgKi8KLS1zdGF0aWMgdWludF90IHpmc192ZGV2X2Rpc2tfY2xh c3NpYyA9IDA7CS8qIGRlZmF1bHQgbmV3ICovCi0rc3RhdGljIHVpbnRfdCB6ZnNfdmRldl9kaXNr X2NsYXNzaWMgPSAxOwkvKiBkZWZhdWx0IGNsYXNzaWMgKi8KLSAKLSAvKiBTZXQgc3VibWlzc2lv biBmdW5jdGlvbiBmcm9tIG1vZHVsZSBwYXJhbWV0ZXIgKi8KLSBzdGF0aWMgaW50CmRpZmYgLS1n aXQgYS9kZWJpYW4vcGF0Y2hlcy8wMDI0LUZpeC1jb3JydXB0aW9uLWNhdXNlZC1ieS1tbWFwLWZs dXNoaW5nLXByb2JsZW1zLnBhdGNoIGIvZGViaWFuL3BhdGNoZXMvMDAyNC1GaXgtY29ycnVwdGlv bi1jYXVzZWQtYnktbW1hcC1mbHVzaGluZy1wcm9ibGVtcy5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDI3ZjI5OWQuLjAwMDAwMDAwCi0tLSBhL2RlYmlhbi9wYXRjaGVzLzAw MjQtRml4LWNvcnJ1cHRpb24tY2F1c2VkLWJ5LW1tYXAtZmx1c2hpbmctcHJvYmxlbXMucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9i ZXJ0IEV2YW5zIDxycmV2YW5zQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjUgTWFyIDIwMjQgMTc6 NTY6NDkgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGNvcnJ1cHRpb24gY2F1c2VkIGJ5IG1t YXAgZmx1c2hpbmcgcHJvYmxlbXMKLQotMSkgTWFrZSBtbWFwIGZsdXNoZXMgc3luY2hyb25vdXMu IExpbnV4IG1heSBza2lwIGZsdXNoaW5nIGRpcnR5IHBhZ2VzCi0gICBhbHJlYWR5IGluIHdyaXRl YmFjayB1bmxlc3MgZGF0YS1pbnRlZ3JpdHkgc3luYyBpcyByZXF1ZXN0ZWQuCi0KLTIpIENoYW5n ZSB6ZnNfcHV0cGFnZSB0byB1c2UgVFhHX1dBSVQuIE90aGVyd2lzZSBkaXJ0eSBwYWdlcyBtYXkg YmUKLSAgIHNraXBwZWQgZHVlIHRvIERNVSBwdXNoaW5nIGJhY2sgb24gVFggYXNzaWduLgotCi0z KSBBZGQgbWlzc2luZyBtbWFwIGZsdXNoIHdoZW4gZG9pbmcgYmxvY2sgY2xvbmluZy4KLQotNCkg V2hpbGUgaGVyZSwgcGFzcyBlcnJvcnMgZnJvbSBwdXRwYWdlIHRvIHdyaXRlcGFnZS93cml0ZXBh Z2VzLgotCi1UaGlzIGNoYW5nZSBmaXhlcyBjb3JydXB0aW9uIGVkZ2UgY2FzZXMsIGJ1dCB1bmZv cnR1bmF0ZWx5IGFkZHMKLXN5bmNocm9ub3VzIFpJTCBmbHVzaGVzIGZvciBkaXJ0eSBtbWFwIHBh Z2VzIHRvIGxsc2VlayBhbmQgYmNsb25lCi1vcGVyYXRpb25zLiBJdCBtYXkgYmUgcG9zc2libGUg dG8gYXZvaWQgdGhlc2Ugc3luYyB3cml0ZXMgbGF0ZXIKLWJ1dCB3b3VsZCBuZWVkIG1vcmUgdHJp Y2t5IHJlZmFjdG9yaW5nIG9mIHRoZSB3cml0ZWJhY2sgY29kZS4KLQotUmV2aWV3ZWQtYnk6IEFs ZXhhbmRlciBNb3RpbiA8bWF2QEZyZWVCU0Qub3JnPgotUmV2aWV3ZWQtYnk6IEJyaWFuIEJlaGxl bmRvcmYgPGJlaGxlbmRvcmYxQGxsbmwuZ292PgotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IEV2YW5z IDxldmFuc3JAZ29vZ2xlLmNvbT4KLUNsb3NlcyAjMTU5MzMKLUNsb3NlcyAjMTYwMTkKLS0tLQot IG1vZHVsZS9vcy9saW51eC96ZnMvemZzX3Zub3BzX29zLmMgfCA1ICstLS0tCi0gbW9kdWxlL29z L2xpbnV4L3pmcy96cGxfZmlsZS5jICAgICB8IDggKysrKy0tLS0KLSBtb2R1bGUvemZzL3pmc192 bm9wcy5jICAgICAgICAgICAgIHwgNiArKysrKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDEwIGluc2Vy dGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tb2R1bGUvb3MvbGludXgv emZzL3pmc192bm9wc19vcy5jIGIvbW9kdWxlL29zL2xpbnV4L3pmcy96ZnNfdm5vcHNfb3MuYwot aW5kZXggYzA2YTc1NjYyLi43YzQ3M2JjN2UgMTAwNjQ0Ci0tLS0gYS9tb2R1bGUvb3MvbGludXgv emZzL3pmc192bm9wc19vcy5jCi0rKysgYi9tb2R1bGUvb3MvbGludXgvemZzL3pmc192bm9wc19v cy5jCi1AQCAtMzc5MiwxMSArMzc5Miw4IEBAIHpmc19wdXRwYWdlKHN0cnVjdCBpbm9kZSAqaXAs IHN0cnVjdCBwYWdlICpwcCwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMsCi0gCWRtdV90 eF9ob2xkX3NhKHR4LCB6cC0+el9zYV9oZGwsIEJfRkFMU0UpOwotIAl6ZnNfc2FfdXBncmFkZV90 eGhvbGRzKHR4LCB6cCk7Ci0gCi0tCWVyciA9IGRtdV90eF9hc3NpZ24odHgsIFRYR19OT1dBSVQp OwotKwllcnIgPSBkbXVfdHhfYXNzaWduKHR4LCBUWEdfV0FJVCk7Ci0gCWlmIChlcnIgIT0gMCkg ewotLQkJaWYgKGVyciA9PSBFUkVTVEFSVCkKLS0JCQlkbXVfdHhfd2FpdCh0eCk7Ci0tCi0gCQlk bXVfdHhfYWJvcnQodHgpOwotICNpZmRlZiBIQVZFX1ZGU19GSUxFTUFQX0RJUlRZX0ZPTElPCi0g CQlmaWxlbWFwX2RpcnR5X2ZvbGlvKHBhZ2VfbWFwcGluZyhwcCksIHBhZ2VfZm9saW8ocHApKTsK LWRpZmYgLS1naXQgYS9tb2R1bGUvb3MvbGludXgvemZzL3pwbF9maWxlLmMgYi9tb2R1bGUvb3Mv bGludXgvemZzL3pwbF9maWxlLmMKLWluZGV4IDNjYWEwZmM2Yy4uOWRlYzUyMjE1IDEwMDY0NAot LS0tIGEvbW9kdWxlL29zL2xpbnV4L3pmcy96cGxfZmlsZS5jCi0rKysgYi9tb2R1bGUvb3MvbGlu dXgvemZzL3pwbF9maWxlLmMKLUBAIC03MjAsMjMgKzcyMCwyMyBAQCB6cGxfcHV0cGFnZShzdHJ1 Y3QgcGFnZSAqcHAsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjLCB2b2lkICpkYXRhKQot IHsKLSAJYm9vbGVhbl90ICpmb3Jfc3luYyA9IGRhdGE7Ci0gCWZzdHJhbnNfY29va2llX3QgY29v a2llOwotKwlpbnQgcmV0OwotIAotIAlBU1NFUlQoUGFnZUxvY2tlZChwcCkpOwotIAlBU1NFUlQo IVBhZ2VXcml0ZWJhY2socHApKTsKLSAKLSAJY29va2llID0gc3BsX2ZzdHJhbnNfbWFyaygpOwot LQkodm9pZCkgemZzX3B1dHBhZ2UocHAtPm1hcHBpbmctPmhvc3QsIHBwLCB3YmMsICpmb3Jfc3lu Yyk7Ci0rCXJldCA9IHpmc19wdXRwYWdlKHBwLT5tYXBwaW5nLT5ob3N0LCBwcCwgd2JjLCAqZm9y X3N5bmMpOwotIAlzcGxfZnN0cmFuc191bm1hcmsoY29va2llKTsKLSAKLS0JcmV0dXJuICgwKTsK LSsJcmV0dXJuIChyZXQpOwotIH0KLSAKLSAjaWZkZWYgSEFWRV9XUklURVBBR0VfVF9GT0xJTwot IHN0YXRpYyBpbnQKLSB6cGxfcHV0Zm9saW8oc3RydWN0IGZvbGlvICpwcCwgc3RydWN0IHdyaXRl YmFja19jb250cm9sICp3YmMsIHZvaWQgKmRhdGEpCi0gewotLQkodm9pZCkgenBsX3B1dHBhZ2Uo JnBwLT5wYWdlLCB3YmMsIGRhdGEpOwotLQlyZXR1cm4gKDApOwotKwlyZXR1cm4gKHpwbF9wdXRw YWdlKCZwcC0+cGFnZSwgd2JjLCBkYXRhKSk7Ci0gfQotICNlbmRpZgotIAotZGlmZiAtLWdpdCBh L21vZHVsZS96ZnMvemZzX3Zub3BzLmMgYi9tb2R1bGUvemZzL3pmc192bm9wcy5jCi1pbmRleCAy YjM3ODM0ZDUuLjcwMjBmODhlYyAxMDA2NDQKLS0tLSBhL21vZHVsZS96ZnMvemZzX3Zub3BzLmMK LSsrKyBiL21vZHVsZS96ZnMvemZzX3Zub3BzLmMKLUBAIC0xMzAsNyArMTMwLDcgQEAgemZzX2hv bGV5X2NvbW1vbih6bm9kZV90ICp6cCwgdWxvbmdfdCBjbWQsIGxvZmZfdCAqb2ZmKQotIAotIAkv KiBGbHVzaCBhbnkgbW1hcCgpJ2QgZGF0YSB0byBkaXNrICovCi0gCWlmICh6bl9oYXNfY2FjaGVk X2RhdGEoenAsIDAsIGZpbGVfc3ogLSAxKSkKLS0JCXpuX2ZsdXNoX2NhY2hlZF9kYXRhKHpwLCBC X0ZBTFNFKTsKLSsJCXpuX2ZsdXNoX2NhY2hlZF9kYXRhKHpwLCBCX1RSVUUpOwotIAotIAlsciA9 IHpmc19yYW5nZWxvY2tfZW50ZXIoJnpwLT56X3JhbmdlbG9jaywgMCwgVUlOVDY0X01BWCwgUkxf UkVBREVSKTsKLSAJZXJyb3IgPSBkbXVfb2Zmc2V0X25leHQoWlRPWlNCKHpwKS0+el9vcywgenAt PnpfaWQsIGhvbGUsICZub2ZmKTsKLUBAIC0xMTkzLDYgKzExOTMsMTAgQEAgemZzX2Nsb25lX3Jh bmdlKHpub2RlX3QgKmluenAsIHVpbnQ2NF90ICppbm9mZnAsIHpub2RlX3QgKm91dHpwLAotIAkJ fQotIAl9Ci0gCi0rCS8qIEZsdXNoIGFueSBtbWFwKCknZCBkYXRhIHRvIGRpc2sgKi8KLSsJaWYg KHpuX2hhc19jYWNoZWRfZGF0YShpbnpwLCBpbm9mZiwgaW5vZmYgKyBsZW4gLSAxKSkKLSsJCXpu X2ZsdXNoX2NhY2hlZF9kYXRhKGluenAsIEJfVFJVRSk7Ci0rCi0gCS8qCi0gCSAqIE1haW50YWlu IHByZWRpY3RhYmxlIGxvY2sgb3JkZXIuCi0gCSAqLwpkaWZmIC0tZ2l0IGEvZGViaWFuL3BhdGNo ZXMvMDAyNS12ZGV2X2Rpc2stZG9uLXQtdG91Y2gtdmJpby1hZnRlci1pdHMtaGFuZGVkLW9mZi10 by10LnBhdGNoIGIvZGViaWFuL3BhdGNoZXMvMDAyNS12ZGV2X2Rpc2stZG9uLXQtdG91Y2gtdmJp by1hZnRlci1pdHMtaGFuZGVkLW9mZi10by10LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA4M2VhYzM3OC4uMDAwMDAwMDAKLS0tIGEvZGViaWFuL3BhdGNoZXMvMDAyNS12ZGV2 X2Rpc2stZG9uLXQtdG91Y2gtdmJpby1hZnRlci1pdHMtaGFuZGVkLW9mZi10by10LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iIE5v cnJpcyA8cm9iLm5vcnJpc0BrbGFyYXN5c3RlbXMuY29tPgotRGF0ZTogVHVlLCAyIEFwciAyMDI0 IDE1OjE0OjU0ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHZkZXZfZGlzazogZG9uJ3QgdG91Y2gg dmJpbyBhZnRlciBpdHMgaGFuZGVkIG9mZiB0byB0aGUKLSBrZXJuZWwKLQotQWZ0ZXIgSU8gaXMg dW5wbHVnZ2VkLCBpdCBtYXkgY29tcGxldGUgaW1tZWRpYXRlbHkgYW5kIHZiaW9fY29tcGxldGlv bgotYmUgY2FsbGVkIG9uIGludGVycnVwdCBjb250ZXh0LiBUaGF0IG1heSBpbnRlcnJ1cHQgb3Ig ZGVzY2hlZHVsZSBvdXIKLXRhc2suIElmIGl0cyB0aGUgbGFzdCBiaW8sIHRoZSB2YmlvIHdpbGwg YmUgZnJlZWQuIFRoZW4sIHdlIGdldAotcmVzY2hlZHVsZWQsIGFuZCB0cnkgdG8gd3JpdGUgdG8g ZnJlZWQgbWVtb3J5IHRocm91Z2ggdmJpby0+LgotCi1UaGlzIHBhdGNoIGp1c3QgcmVtb3ZlcyB0 aGUgdGhlIGNsZWFudXAsIGFuZCB0aGUgY29ycmVzcG9uZGluZyBhc3NlcnQuCi1UaGVzZSB3ZXJl IGxlZnRvdmVycyBmcm9tIGEgcHJldmlvdXMgaXRlcmF0aW9uIG9mIHZiaW9fc3VibWl0KCkgYW5k IHdlcmUKLWFsd2F5cyAiYmVsdCBhbmQgc3VzcGVuZGVycyIgb3BzIGFueXdheSwgbmV2ZXIgc3Ry aWN0bHkgcmVxdWlyZWQuCi0KLVJlcG9ydGVkLWJ5OiBSaWNoIEVyY29sYW5pIDxyaW5jZWJyYWlu QGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFJvYiBOb3JyaXMgPHJvYi5ub3JyaXNAa2xhcmFz eXN0ZW1zLmNvbT4KLVNwb25zb3JlZC1ieTogS2xhcmEsIEluYy4KLVNwb25zb3JlZC1ieTogV2Fz YWJpIFRlY2hub2xvZ3ksIEluYy4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDM0ZjY2MmFk MjIyMDZhZjY4NTIwMjBmZDkyM2NlY2NkODM2YTg1NWYpCi1TaWduZWQtb2ZmLWJ5OiBUaG9tYXMg TGFtcHJlY2h0IDx0LmxhbXByZWNodEBwcm94bW94LmNvbT4KLS0tLQotIG1vZHVsZS9vcy9saW51 eC96ZnMvdmRldl9kaXNrLmMgfCAxMSArKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGlu c2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tb2R1bGUvb3MvbGlu dXgvemZzL3ZkZXZfZGlzay5jIGIvbW9kdWxlL29zL2xpbnV4L3pmcy92ZGV2X2Rpc2suYwotaW5k ZXggZTFjMTlhMDg1Li42MmM3YWExNGYgMTAwNjQ0Ci0tLS0gYS9tb2R1bGUvb3MvbGludXgvemZz L3ZkZXZfZGlzay5jCi0rKysgYi9tb2R1bGUvb3MvbGludXgvemZzL3ZkZXZfZGlzay5jCi1AQCAt NzU4LDggKzc1OCw2IEBAIHZiaW9fZmlsbF9jYihzdHJ1Y3QgcGFnZSAqcGFnZSwgc2l6ZV90IG9m Ziwgc2l6ZV90IGxlbiwgdm9pZCAqcHJpdikKLSBzdGF0aWMgdm9pZAotIHZiaW9fc3VibWl0KHZi aW9fdCAqdmJpbywgYWJkX3QgKmFiZCwgdWludDY0X3Qgc2l6ZSkKLSB7Ci0tCUFTU0VSVCh2Ymlv LT52YmlvX2JkZXYpOwotLQotIAkvKgotIAkgKiBXZSBwbHVnIHNvIHdlIGNhbiBzdWJtaXQgdGhl IEJJT3MgYXMgd2UgZ28gYW5kIG9ubHkgdW5wbHVnIHRoZW0gd2hlbgotIAkgKiB0aGV5IGFyZSBm dWxseSBjcmVhdGVkIGFuZCBzdWJtaXR0ZWQuIFRoaXMgaXMgaW1wb3J0YW50OyBpZiB3ZSBkb24n dAotQEAgLTc3NywxMiArNzc1LDE1IEBAIHZiaW9fc3VibWl0KHZiaW9fdCAqdmJpbywgYWJkX3Qg KmFiZCwgdWludDY0X3Qgc2l6ZSkKLSAJdmJpby0+dmJpb19iaW8tPmJpX2VuZF9pbyA9IHZiaW9f Y29tcGxldGlvbjsKLSAJdmJpby0+dmJpb19iaW8tPmJpX3ByaXZhdGUgPSB2YmlvOwotIAotKwkv KgotKwkgKiBPbmNlIHN1Ym1pdHRlZCwgdmJpb19iaW8gbm93IG93bnMgdmJpbyAodGhyb3VnaCBi aV9wcml2YXRlKSBhbmQgd2UKLSsJICogY2FuJ3QgdG91Y2ggaXQgYWdhaW4uIFRoZSBiaW8gbWF5 IGNvbXBsZXRlIGFuZCB2YmlvX2NvbXBsZXRpb24oKSBiZQotKwkgKiBjYWxsZWQgYW5kIGZyZWUg dGhlIHZiaW8gYmVmb3JlIHRoaXMgdGFzayBpcyBydW4gYWdhaW4sIHNvIHdlIG11c3QKLSsJICog Y29uc2lkZXIgaXQgaW52YWxpZCBmcm9tIHRoaXMgcG9pbnQuCi0rCSAqLwotIAl2ZGV2X3N1Ym1p dF9iaW8odmJpby0+dmJpb19iaW8pOwotIAotIAlibGtfZmluaXNoX3BsdWcoJnBsdWcpOwotLQot LQl2YmlvLT52YmlvX2JpbyA9IE5VTEw7Ci0tCXZiaW8tPnZiaW9fYmRldiA9IE5VTEw7Ci0gfQot IAotIC8qIElPIGNvbXBsZXRpb24gY2FsbGJhY2sgKi8KZGlmZiAtLWdpdCBhL2RlYmlhbi9wYXRj aGVzL3NlcmllcyBiL2RlYmlhbi9wYXRjaGVzL3NlcmllcwppbmRleCA3YzFhNWM2Yy4uMzVmODFk MTMgMTAwNjQ0Ci0tLSBhL2RlYmlhbi9wYXRjaGVzL3NlcmllcworKysgYi9kZWJpYW4vcGF0Y2hl cy9zZXJpZXMKQEAgLTksMTcgKzksMyBAQAogMDAwOS1hcmMtc3RhdC1zdW1tYXJ5LWd1YXJkLWFj Y2Vzcy10by1sMmFyYy1NRlUtTVJVLXN0YXRzLnBhdGNoCiAwMDEwLUZpeC1uZnNfdHJ1bmNhdGVf c2hhcmVzLXdpdGhvdXQtZXRjLWV4cG9ydHMuZC5wYXRjaAogMDAxMS16cG9vbC1zdGF0dXMtdGln aHRlbi1ib3VuZHMtZm9yLW5vYWxsb2Mtc3RhdC1hdmFpbGFiLnBhdGNoCi0wMDEyLXVkZXYtY29y cmVjdGx5LWhhbmRsZS1wYXJ0aXRpb24tMTYtYW5kLWxhdGVyLnBhdGNoCi0wMDEzLUxpbnV4LTYu OC1jb21wYXQtdXNlLXNwbGljZV9jb3B5X2ZpbGVfcmFuZ2UtZm9yLWZhbGwucGF0Y2gKLTAwMTQt bGludXgtNS40LWNvbXBhdC1wYWdlX3NpemUucGF0Y2gKLTAwMTUtYWJkLWFkZC1wYWdlLWl0ZXJh dG9yLnBhdGNoCi0wMDE2LXZkZXZfZGlzay1yZW5hbWUtZXhpc3RpbmctZnVuY3Rpb25zLXRvLXZk ZXZfY2xhc3NpY18ucGF0Y2gKLTAwMTctdmRldl9kaXNrLXJlb3JnYW5pc2UtdmRldl9kaXNrX2lv X3N0YXJ0LnBhdGNoCi0wMDE4LXZkZXZfZGlzay1tYWtlLXJlYWQtd3JpdGUtSU8tZnVuY3Rpb24t Y29uZmlndXJhYmxlLnBhdGNoCi0wMDE5LXZkZXZfZGlzay1yZXdyaXRlLUJJTy1maWxsaW5nLW1h Y2hpbmVyeS10by1hdm9pZC1zcGwucGF0Y2gKLTAwMjAtdmRldl9kaXNrLWFkZC1tb2R1bGUtcGFy YW1ldGVyLXRvLXNlbGVjdC1CSU8tc3VibWlzcy5wYXRjaAotMDAyMS12ZGV2X2Rpc2stdXNlLWJp b19jaGFpbi10by1zdWJtaXQtbXVsdGlwbGUtQklPcy5wYXRjaAotMDAyMi1hYmRfaXRlcl9wYWdl LWRvbi10LXVzZS1jb21wb3VuZC1oZWFkcy1vbi1MaW51eC00LjUucGF0Y2gKLTAwMjMtdmRldl9k aXNrLWRlZmF1bHQtdG8tY2xhc3NpYy1zdWJtaXNzaW9uLWZvci0yLjIueC5wYXRjaAotMDAyNC1G aXgtY29ycnVwdGlvbi1jYXVzZWQtYnktbW1hcC1mbHVzaGluZy1wcm9ibGVtcy5wYXRjaAotMDAy NS12ZGV2X2Rpc2stZG9uLXQtdG91Y2gtdmJpby1hZnRlci1pdHMtaGFuZGVkLW9mZi10by10LnBh dGNoCmRpZmYgLS1naXQgYS91cHN0cmVhbSBiL3Vwc3RyZWFtCmluZGV4IGM4ODMwODhkLi4yNTY2 NTkyMCAxNjAwMDAKLS0tIGEvdXBzdHJlYW0KKysrIGIvdXBzdHJlYW0KQEAgLTEgKzEgQEAKLVN1 YnByb2plY3QgY29tbWl0IGM4ODMwODhkZjgzY2VkM2EyYjhiMzhlNmQ4OWE1ZTYzZmIxNTNlZTQK K1N1YnByb2plY3QgY29tbWl0IDI1NjY1OTIwNDU3ODBlN2JlN2FmYzg5OWMyNDk2YjFhZTNhZjRm NGQKLS0gCjIuMzkuMgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNv bQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUt ZGV2ZWwK