From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9B86DA0C52 for ; Fri, 5 Nov 2021 01:49:29 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8F7AD40151; Fri, 5 Nov 2021 01:49:29 +0100 (CET) Received: from mail-ot1-f100.google.com (mail-ot1-f100.google.com [209.85.210.100]) by mails.dpdk.org (Postfix) with ESMTP id E43054014D for ; Fri, 5 Nov 2021 01:49:27 +0100 (CET) Received: by mail-ot1-f100.google.com with SMTP id b5-20020a9d60c5000000b0055c6349ff22so10257otk.13 for ; Thu, 04 Nov 2021 17:49:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; h=mime-version:subject:from:to:cc:message-id:date; bh=8jkYui73kIu27Agw+GrZkImc1IICQUapnZOKAHXlcCg=; b=foxz+HCVroX+WOtxNvjvJ3G96FhwjsmZqeOLSiZfzTspowCoJd7w0CKclX8GNighyd /53KTFdaFjVVOIkqk0GoXe3YNeyHCRv3ptFxPuUYEanYDe2gsIFMCFFqsfAATNwc0Uf0 z0E0z03jE91Ri87rryon7ojCz+cshPMuM2i6U= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:to:cc:message-id:date; bh=8jkYui73kIu27Agw+GrZkImc1IICQUapnZOKAHXlcCg=; b=jrQ2yC+bdIOD98jQS/1ikTdxkHNIXimxNuZZ2bJJk5K6RYxjhKcJM02sG/7Q4ELYI+ PKpk5LLZn1Qr+3NGYKMmC8pG3BNL2oWdAZwqlvK/gkzqr053qm7snr+d3lUHph5G0rV3 oUDpz5cCwrlxFEiHkALZDkBEaaPrHGyQ8FeY2BdaVQEH7CrAtZjXHyJQaSKch3AQx7W6 u4OLrOMvXvfgzQNEI5o8LyP7bKmJPb2ohejaZGvG5Llul23kzYq518vESP/rbtiLRPJ4 h8TlQvnVfZiBr2nRRpzSg+uZopR8T4k96L/070wTigRyOiVo+jh3Hse47/u4EV7fifVT ODcA== X-Gm-Message-State: AOAM532IPbnmsSuwryZb4wtCS0VnFLByKx/BV06s3jui+ouqEQkEJ72x 2XnF7q9NwQtiqr5Q5AgvRfP5T26JjTitaB2i2y6AzTEEy6XBVQrgWtA+uZmNgmojRA== X-Google-Smtp-Source: ABdhPJz9dlzc2N6jrSdtUlzv/d0qKEifWPKKhRCtyt/NOrfrz/hnmOrUz28+TnjUUouTCzjfe7TC1GXEnX2K X-Received: by 2002:a05:6830:1b65:: with SMTP id d5mr26570237ote.151.1636073367221; Thu, 04 Nov 2021 17:49:27 -0700 (PDT) Received: from postal.iol.unh.edu (postal.iol.unh.edu. [2606:4100:3880:1234::84]) by smtp-relay.gmail.com with ESMTPS id l6sm349392oov.13.2021.11.04.17.49.26 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 04 Nov 2021 17:49:27 -0700 (PDT) X-Relaying-Domain: iol.unh.edu Received: from dpdk-ubuntu.dpdklab.iol.unh.edu (targon.iol.unh.edu [132.177.125.242]) by postal.iol.unh.edu (Postfix) with ESMTP id A64A1605247D; Thu, 4 Nov 2021 20:49:26 -0400 (EDT) Received: from dpdk-ubuntu.dpdklab.iol.unh.edu (localhost [IPv6:::1]) by dpdk-ubuntu.dpdklab.iol.unh.edu (Postfix) with ESMTP id A20E860711; Fri, 5 Nov 2021 00:49:26 +0000 (UTC) Content-Type: multipart/mixed; boundary="===============4271404405445591301==" MIME-Version: 1.0 From: dpdklab@iol.unh.edu To: test-report@dpdk.org Cc: dpdk-test-reports@iol.unh.edu Message-Id: <20211105004926.A20E860711@dpdk-ubuntu.dpdklab.iol.unh.edu> Date: Fri, 5 Nov 2021 00:49:26 +0000 (UTC) Subject: [dpdk-test-report] |WARNING| pw103811-103821 [PATCH] [v4, 11/11] test/cryptodev: fix incomplete data length X-BeenThere: test-report@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: automatic DPDK test reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: test-report-bounces@dpdk.org Sender: "test-report" --===============4271404405445591301== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGVzdC1MYWJlbDogaW9sLXRlc3RpbmcKVGVzdC1TdGF0dXM6IFdBUk5JTkcKaHR0cDovL2RwZGsu b3JnL3BhdGNoLzEwMzgxMQoKX2FwcGx5IHBhdGNoIGZhaWx1cmVfCgpTdWJtaXR0ZXI6IEthaSBK aSA8a2FpLmppQGludGVsLmNvbT4KRGF0ZTogRnJpZGF5LCBOb3ZlbWJlciAwNSAyMDIxIDAwOjE5 OjMyIApBcHBsaWVkIG9uOiBDb21taXRJRDo2NWQ5YjdjNjY0Y2M4Y2MwOTBjZWQxYzMyNjBkODAz ZjMwNmEyYmJhCkFwcGx5IHBhdGNoIHNldCAxMDM4MTEtMTAzODIxIGZhaWxlZDoKCkNoZWNraW5n IHBhdGNoIGRyaXZlcnMvY29tbW9uL3FhdC9xYXRfcXAuYy4uLgpIdW5rICMxIHN1Y2NlZWRlZCBh dCA3MTUgKG9mZnNldCAxNjUgbGluZXMpLgpIdW5rICMyIHN1Y2NlZWRlZCBhdCA5ODQgKG9mZnNl dCAxNjUgbGluZXMpLgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL2NvbW1vbi9xYXQvcWF0X3FwLmgu Li4KSHVuayAjMSBzdWNjZWVkZWQgYXQgNzggKG9mZnNldCA0MiBsaW5lcykuCkh1bmsgIzIgc3Vj Y2VlZGVkIGF0IDEzMSAob2Zmc2V0IDQyIGxpbmVzKS4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBm b3I6Cn07Cgp1aW50MTZfdApxYXRfZW5xdWV1ZV9vcF9idXJzdCh2b2lkICpxcCwgdm9pZCAqKm9w cywgdWludDE2X3QgbmJfb3BzKTsKCnVpbnQxNl90CnFhdF9lbnF1ZXVlX2NvbXBfb3BfYnVyc3Qo dm9pZCAqcXAsIHZvaWQgKipvcHMsIHVpbnQxNl90IG5iX29wcyk7Cgp1aW50MTZfdApxYXRfZGVx dWV1ZV9vcF9idXJzdCh2b2lkICpxcCwgdm9pZCAqKm9wcywgdWludDE2X3QgbmJfb3BzKTsKCmlu dApxYXRfcXBfcmVsZWFzZShlbnVtIHFhdF9kZXZpY2VfZ2VuIHFhdF9kZXZfZ2VuLCBzdHJ1Y3Qg cWF0X3FwICoqcXBfYWRkcik7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL2NvbW1vbi9x YXQvcWF0X3FwLmg6NzgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9jb21wcmVzcy9xYXQvcWF0X2Nv bXBfcG1kLmMuLi4KSHVuayAjMSBzdWNjZWVkZWQgYXQgNjM3IChvZmZzZXQgMTcgbGluZXMpLgpD aGVja2luZyBwYXRjaCBkcml2ZXJzL2NyeXB0by9xYXQvcWF0X2FzeW1fcG1kLmMuLi4KSHVuayAj MSBzdWNjZWVkZWQgYXQgMjEyIChvZmZzZXQgMTUwIGxpbmVzKS4KQ2hlY2tpbmcgcGF0Y2ggZHJp dmVycy9jcnlwdG8vcWF0L3FhdF9zeW1fcG1kLmMuLi4KSHVuayAjMSBzdWNjZWVkZWQgYXQgMzE3 IChvZmZzZXQgMjY4IGxpbmVzKS4KQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9jcnlwdG8vcWF0L3Fh dF9zeW1fc2Vzc2lvbi5oLi4uCkFwcGxpZWQgcGF0Y2ggZHJpdmVycy9jb21tb24vcWF0L3FhdF9x cC5jIGNsZWFubHkuCkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMvY29tbW9uL3FhdC9xYXRfcXAuaCB3 aXRoIDEgcmVqZWN0Li4uCkh1bmsgIzEgYXBwbGllZCBjbGVhbmx5LgpIdW5rICMyIGFwcGxpZWQg Y2xlYW5seS4KUmVqZWN0ZWQgaHVuayAjMy4KQXBwbGllZCBwYXRjaCBkcml2ZXJzL2NvbXByZXNz L3FhdC9xYXRfY29tcF9wbWQuYyBjbGVhbmx5LgpBcHBsaWVkIHBhdGNoIGRyaXZlcnMvY3J5cHRv L3FhdC9xYXRfYXN5bV9wbWQuYyBjbGVhbmx5LgpBcHBsaWVkIHBhdGNoIGRyaXZlcnMvY3J5cHRv L3FhdC9xYXRfc3ltX3BtZC5jIGNsZWFubHkuCkFwcGxpZWQgcGF0Y2ggZHJpdmVycy9jcnlwdG8v cWF0L3FhdF9zeW1fc2Vzc2lvbi5oIGNsZWFubHkuCmRpZmYgYS9kcml2ZXJzL2NvbW1vbi9xYXQv cWF0X3FwLmggYi9kcml2ZXJzL2NvbW1vbi9xYXQvcWF0X3FwLmgJKHJlamVjdGVkIGh1bmtzKQpA QCAtNzgsMTMgKzEyNCwxNSBAQCBzdHJ1Y3QgcWF0X3FwX2NvbmZpZyB7CiB9OwogCiB1aW50MTZf dAotcWF0X2VucXVldWVfb3BfYnVyc3Qodm9pZCAqcXAsIHZvaWQgKipvcHMsIHVpbnQxNl90IG5i X29wcyk7CitxYXRfZW5xdWV1ZV9vcF9idXJzdCh2b2lkICpxcCwgcWF0X29wX2J1aWxkX3JlcXVl c3RfdCBvcF9idWlsZF9yZXF1ZXN0LAorCQl2b2lkICoqb3BzLCB1aW50MTZfdCBuYl9vcHMpOwog CiB1aW50MTZfdAogcWF0X2VucXVldWVfY29tcF9vcF9idXJzdCh2b2lkICpxcCwgdm9pZCAqKm9w cywgdWludDE2X3QgbmJfb3BzKTsKIAogdWludDE2X3QKLXFhdF9kZXF1ZXVlX29wX2J1cnN0KHZv aWQgKnFwLCB2b2lkICoqb3BzLCB1aW50MTZfdCBuYl9vcHMpOworcWF0X2RlcXVldWVfb3BfYnVy c3Qodm9pZCAqcXAsIHZvaWQgKipvcHMsCisJCXFhdF9vcF9kZXF1ZXVlX3QgcWF0X2RlcXVldWVf cHJvY2Vzc19yZXNwb25zZSwgdWludDE2X3QgbmJfb3BzKTsKIAogaW50CiBxYXRfcXBfcmVsZWFz ZShlbnVtIHFhdF9kZXZpY2VfZ2VuIHFhdF9kZXZfZ2VuLCBzdHJ1Y3QgcWF0X3FwICoqcXBfYWRk cik7CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvY3J5cHRvL3FhdC9kZXYvcWF0X2NyeXB0b19wbWRf Z2Vucy5oLi4uCmVycm9yOiBkcml2ZXJzL2NyeXB0by9xYXQvZGV2L3FhdF9jcnlwdG9fcG1kX2dl bnMuaDogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9jcnlw dG8vcWF0L2Rldi9xYXRfc3ltX3BtZF9nZW4xLmMuLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3Fh dC9kZXYvcWF0X3N5bV9wbWRfZ2VuMS5jOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleApDaGVja2lu ZyBwYXRjaCBkcml2ZXJzL2NyeXB0by9xYXQvZGV2L3FhdF9jcnlwdG9fcG1kX2dlbjIuYy4uLgpl cnJvcjogZHJpdmVycy9jcnlwdG8vcWF0L2Rldi9xYXRfY3J5cHRvX3BtZF9nZW4yLmM6IGRvZXMg bm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvY3J5cHRvL3FhdC9kZXYv cWF0X2NyeXB0b19wbWRfZ2VuMy5jLi4uCmVycm9yOiBkcml2ZXJzL2NyeXB0by9xYXQvZGV2L3Fh dF9jcnlwdG9fcG1kX2dlbjMuYzogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgKQ2hlY2tpbmcgcGF0 Y2ggZHJpdmVycy9jcnlwdG8vcWF0L2Rldi9xYXRfY3J5cHRvX3BtZF9nZW40LmMuLi4KZXJyb3I6 IGRyaXZlcnMvY3J5cHRvL3FhdC9kZXYvcWF0X2NyeXB0b19wbWRfZ2VuNC5jOiBkb2VzIG5vdCBl eGlzdCBpbiBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL2NyeXB0by9xYXQvZGV2L3FhdF9z eW1fcG1kX2dlbjEuYy4uLgplcnJvcjogZHJpdmVycy9jcnlwdG8vcWF0L2Rldi9xYXRfc3ltX3Bt ZF9nZW4xLmM6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv Y3J5cHRvL3FhdC9xYXRfY3J5cHRvLmMuLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRf Y3J5cHRvLmM6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv Y3J5cHRvL3FhdC9xYXRfY3J5cHRvLmguLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRf Y3J5cHRvLmg6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv Y3J5cHRvL3FhdC9xYXRfc3ltLmMuLi4KQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9jcnlwdG8vcWF0 L3FhdF9zeW1fc2Vzc2lvbi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJu IDA7Cn0KCnN0YXRpYyB2b2lkCnFhdF9zeW1fc2Vzc2lvbl9zZXRfZXh0X2hhc2hfZmxhZ3Moc3Ry dWN0IHFhdF9zeW1fc2Vzc2lvbiAqc2Vzc2lvbiwKCQl1aW50OF90IGhhc2hfZmxhZykKewoJc3Ry dWN0IGljcF9xYXRfZndfY29tbl9yZXFfaGRyICpoZWFkZXIgPSAmc2Vzc2lvbi0+ZndfcmVxLmNv bW5faGRyOwoJc3RydWN0IGljcF9xYXRfZndfY2lwaGVyX2F1dGhfY2RfY3RybF9oZHIgKmNkX2N0 cmwgPQoJCQkoc3RydWN0IGljcF9xYXRfZndfY2lwaGVyX2F1dGhfY2RfY3RybF9oZHIgKikKCQkJ c2Vzc2lvbi0+ZndfcmVxLmNkX2N0cmwuY29udGVudF9kZXNjX2N0cmxfbHc7CgoJLyogU2V0IHRo ZSBVc2UgRXh0ZW5kZWQgUHJvdG9jb2wgRmxhZ3MgYml0IGluIExXIDEgKi8KCVFBVF9GSUVMRF9T RVQoaGVhZGVyLT5jb21uX3JlcV9mbGFncywKCQkJUUFUX0NPTU5fRVhUX0ZMQUdTX1VTRUQsCgkJ CVFBVF9DT01OX0VYVF9GTEFHU19CSVRQT1MsCgkJCVFBVF9DT01OX0VYVF9GTEFHU19NQVNLKTsK CgkvKiBTZXQgSGFzaCBGbGFncyBpbiBMVyAyOCAqLwoJY2RfY3RybC0+aGFzaF9mbGFncyB8PSBo YXNoX2ZsYWc7CgoJLyogU2V0IHByb3RvIGZsYWdzIGluIExXIDEgKi8KCXN3aXRjaCAoc2Vzc2lv bi0+cWF0X2NpcGhlcl9hbGcpIHsKCWNhc2UgSUNQX1FBVF9IV19DSVBIRVJfQUxHT19TTk9XXzNH X1VFQTI6CgkJSUNQX1FBVF9GV19MQV9QUk9UT19TRVQoaGVhZGVyLT5zZXJ2X3NwZWNpZl9mbGFn cywKCQkJCUlDUF9RQVRfRldfTEFfU05PV18zR19QUk9UTyk7CgkJSUNQX1FBVF9GV19MQV9aVUNf M0dfUFJPVE9fRkxBR19TRVQoCgkJCQloZWFkZXItPnNlcnZfc3BlY2lmX2ZsYWdzLCAwKTsKCQli cmVhazsKCWNhc2UgSUNQX1FBVF9IV19DSVBIRVJfQUxHT19aVUNfM0dfMTI4X0VFQTM6CgkJSUNQ X1FBVF9GV19MQV9QUk9UT19TRVQoaGVhZGVyLT5zZXJ2X3NwZWNpZl9mbGFncywKCQkJCUlDUF9R QVRfRldfTEFfTk9fUFJPVE8pOwoJCUlDUF9RQVRfRldfTEFfWlVDXzNHX1BST1RPX0ZMQUdfU0VU KAoJCQkJaGVhZGVyLT5zZXJ2X3NwZWNpZl9mbGFncywKCQkJCUlDUF9RQVRfRldfTEFfWlVDXzNH X1BST1RPKTsKCQlicmVhazsKCWRlZmF1bHQ6CgkJSUNQX1FBVF9GV19MQV9QUk9UT19TRVQoaGVh ZGVyLT5zZXJ2X3NwZWNpZl9mbGFncywKCQkJCUlDUF9RQVRfRldfTEFfTk9fUFJPVE8pOwoJCUlD UF9RQVRfRldfTEFfWlVDXzNHX1BST1RPX0ZMQUdfU0VUKAoJCQkJaGVhZGVyLT5zZXJ2X3NwZWNp Zl9mbGFncywgMCk7CgkJYnJlYWs7Cgl9Cn0KCnN0YXRpYyB2b2lkCnFhdF9zeW1fc2Vzc2lvbl9o YW5kbGVfbWl4ZWQoY29uc3Qgc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldiwKCQlzdHJ1Y3QgcWF0 X3N5bV9zZXNzaW9uICpzZXNzaW9uKQp7Cgljb25zdCBzdHJ1Y3QgcWF0X2NyeXB0b2Rldl9wcml2 YXRlICpxYXRfcHJpdmF0ZSA9CgkJCWRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7CgllbnVtIHFhdF9k ZXZpY2VfZ2VuIG1pbl9kZXZfZ2VuID0gKHFhdF9wcml2YXRlLT5pbnRlcm5hbF9jYXBhYmlsaXRp ZXMgJgoJCQlRQVRfU1lNX0NBUF9NSVhFRF9DUllQVE8pID8gUUFUX0dFTjIgOiBRQVRfR0VOMzsK CglpZiAoc2Vzc2lvbi0+cWF0X2hhc2hfYWxnID09IElDUF9RQVRfSFdfQVVUSF9BTEdPX1pVQ18z R18xMjhfRUlBMyAmJgoJCQlzZXNzaW9uLT5xYXRfY2lwaGVyX2FsZyAhPQoJCQlJQ1BfUUFUX0hX X0NJUEhFUl9BTEdPX1pVQ18zR18xMjhfRUVBMykgewoJCXNlc3Npb24tPm1pbl9xYXRfZGV2X2dl biA9IG1pbl9kZXZfZ2VuOwoJCXFhdF9zeW1fc2Vzc2lvbl9zZXRfZXh0X2hhc2hfZmxhZ3Moc2Vz c2lvbiwKCQkJMSA8PCBJQ1BfUUFUX0ZXX0FVVEhfSERSX0ZMQUdfWlVDX0VJQTNfQklUUE9TKTsK CX0gZWxzZSBpZiAoc2Vzc2lvbi0+cWF0X2hhc2hfYWxnID09IElDUF9RQVRfSFdfQVVUSF9BTEdP X1NOT1dfM0dfVUlBMiAmJgoJCQlzZXNzaW9uLT5xYXRfY2lwaGVyX2FsZyAhPQoJCQlJQ1BfUUFU X0hXX0NJUEhFUl9BTEdPX1NOT1dfM0dfVUVBMikgewoJCXNlc3Npb24tPm1pbl9xYXRfZGV2X2dl biA9IG1pbl9kZXZfZ2VuOwoJCXFhdF9zeW1fc2Vzc2lvbl9zZXRfZXh0X2hhc2hfZmxhZ3Moc2Vz c2lvbiwKCQkJMSA8PCBJQ1BfUUFUX0ZXX0FVVEhfSERSX0ZMQUdfU05PVzNHX1VJQTJfQklUUE9T KTsKCX0gZWxzZSBpZiAoKHNlc3Npb24tPmFlc19jbWFjIHx8CgkJCXNlc3Npb24tPnFhdF9oYXNo X2FsZyA9PSBJQ1BfUUFUX0hXX0FVVEhfQUxHT19OVUxMKSAmJgoJCQkoc2Vzc2lvbi0+cWF0X2Np cGhlcl9hbGcgPT0KCQkJSUNQX1FBVF9IV19DSVBIRVJfQUxHT19TTk9XXzNHX1VFQTIgfHwKCQkJ c2Vzc2lvbi0+cWF0X2NpcGhlcl9hbGcgPT0KCQkJSUNQX1FBVF9IV19DSVBIRVJfQUxHT19aVUNf M0dfMTI4X0VFQTMpKSB7CgkJc2Vzc2lvbi0+bWluX3FhdF9kZXZfZ2VuID0gbWluX2Rldl9nZW47 CgkJcWF0X3N5bV9zZXNzaW9uX3NldF9leHRfaGFzaF9mbGFncyhzZXNzaW9uLCAwKTsKCX0KfQoK aW50CnFhdF9zeW1fc2Vzc2lvbl9zZXRfcGFyYW1ldGVycyhzdHJ1Y3QgcnRlX2NyeXB0b2RldiAq ZGV2LAoJCXN0cnVjdCBydGVfY3J5cHRvX3N5bV94Zm9ybSAqeGZvcm0sIHZvaWQgKnNlc3Npb25f cHJpdmF0ZSkKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfc3lt X3Nlc3Npb24uYzo0ODYKSHVuayAjMiBzdWNjZWVkZWQgYXQgNTY4IChvZmZzZXQgNzMgbGluZXMp LgpIdW5rICMzIHN1Y2NlZWRlZCBhdCA1ODIgKG9mZnNldCA3MyBsaW5lcykuCkh1bmsgIzQgc3Vj Y2VlZGVkIGF0IDYyMyAob2Zmc2V0IDczIGxpbmVzKS4KSHVuayAjNSBzdWNjZWVkZWQgYXQgNjQw IChvZmZzZXQgNzMgbGluZXMpLgpIdW5rICM2IHN1Y2NlZWRlZCBhdCA2NjAgKG9mZnNldCA3MyBs aW5lcykuCkh1bmsgIzcgc3VjY2VlZGVkIGF0IDY3MSAob2Zmc2V0IDczIGxpbmVzKS4KSHVuayAj OCBzdWNjZWVkZWQgYXQgMTE5NyAob2Zmc2V0IDczIGxpbmVzKS4KSHVuayAjOSBzdWNjZWVkZWQg YXQgMTY0NyAob2Zmc2V0IDczIGxpbmVzKS4KSHVuayAjMTAgc3VjY2VlZGVkIGF0IDE5OTQgKG9m ZnNldCA3MyBsaW5lcykuCkh1bmsgIzExIHN1Y2NlZWRlZCBhdCAyMjU0IChvZmZzZXQgNzMgbGlu ZXMpLgpIdW5rICMxMiBzdWNjZWVkZWQgYXQgMjI3OCAob2Zmc2V0IDczIGxpbmVzKS4KSHVuayAj MTMgc3VjY2VlZGVkIGF0IDIzMDQgKG9mZnNldCA3MyBsaW5lcykuCkNoZWNraW5nIHBhdGNoIGRy aXZlcnMvY3J5cHRvL3FhdC9xYXRfc3ltX3Nlc3Npb24uaC4uLgplcnJvcjogZHJpdmVycy9jcnlw dG8vcWF0L3FhdF9zeW1fc2Vzc2lvbi5oOiBkb2VzIG5vdCBtYXRjaCBpbmRleApBcHBsaWVkIHBh dGNoIGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfc3ltLmMgY2xlYW5seS4KQXBwbHlpbmcgcGF0Y2gg ZHJpdmVycy9jcnlwdG8vcWF0L3FhdF9zeW1fc2Vzc2lvbi5jIHdpdGggMSByZWplY3QuLi4KUmVq ZWN0ZWQgaHVuayAjMS4KSHVuayAjMiBhcHBsaWVkIGNsZWFubHkuCkh1bmsgIzMgYXBwbGllZCBj bGVhbmx5LgpIdW5rICM0IGFwcGxpZWQgY2xlYW5seS4KSHVuayAjNSBhcHBsaWVkIGNsZWFubHku Ckh1bmsgIzYgYXBwbGllZCBjbGVhbmx5LgpIdW5rICM3IGFwcGxpZWQgY2xlYW5seS4KSHVuayAj OCBhcHBsaWVkIGNsZWFubHkuCkh1bmsgIzkgYXBwbGllZCBjbGVhbmx5LgpIdW5rICMxMCBhcHBs aWVkIGNsZWFubHkuCkh1bmsgIzExIGFwcGxpZWQgY2xlYW5seS4KSHVuayAjMTIgYXBwbGllZCBj bGVhbmx5LgpIdW5rICMxMyBhcHBsaWVkIGNsZWFubHkuCmRpZmYgYS9kcml2ZXJzL2NyeXB0by9x YXQvcWF0X3N5bV9zZXNzaW9uLmMgYi9kcml2ZXJzL2NyeXB0by9xYXQvcWF0X3N5bV9zZXNzaW9u LmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtNDg2LDgwICs0ODYsNiBAQCBxYXRfc3ltX3Nlc3Npb25f Y29uZmlndXJlKHN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXYsCiAJcmV0dXJuIDA7CiB9CiAKLXN0 YXRpYyB2b2lkCi1xYXRfc3ltX3Nlc3Npb25fc2V0X2V4dF9oYXNoX2ZsYWdzKHN0cnVjdCBxYXRf c3ltX3Nlc3Npb24gKnNlc3Npb24sCi0JCXVpbnQ4X3QgaGFzaF9mbGFnKQotewotCXN0cnVjdCBp Y3BfcWF0X2Z3X2NvbW5fcmVxX2hkciAqaGVhZGVyID0gJnNlc3Npb24tPmZ3X3JlcS5jb21uX2hk cjsKLQlzdHJ1Y3QgaWNwX3FhdF9md19jaXBoZXJfYXV0aF9jZF9jdHJsX2hkciAqY2RfY3RybCA9 Ci0JCQkoc3RydWN0IGljcF9xYXRfZndfY2lwaGVyX2F1dGhfY2RfY3RybF9oZHIgKikKLQkJCXNl c3Npb24tPmZ3X3JlcS5jZF9jdHJsLmNvbnRlbnRfZGVzY19jdHJsX2x3OwotCi0JLyogU2V0IHRo ZSBVc2UgRXh0ZW5kZWQgUHJvdG9jb2wgRmxhZ3MgYml0IGluIExXIDEgKi8KLQlRQVRfRklFTERf U0VUKGhlYWRlci0+Y29tbl9yZXFfZmxhZ3MsCi0JCQlRQVRfQ09NTl9FWFRfRkxBR1NfVVNFRCwK LQkJCVFBVF9DT01OX0VYVF9GTEFHU19CSVRQT1MsCi0JCQlRQVRfQ09NTl9FWFRfRkxBR1NfTUFT Syk7Ci0KLQkvKiBTZXQgSGFzaCBGbGFncyBpbiBMVyAyOCAqLwotCWNkX2N0cmwtPmhhc2hfZmxh Z3MgfD0gaGFzaF9mbGFnOwotCi0JLyogU2V0IHByb3RvIGZsYWdzIGluIExXIDEgKi8KLQlzd2l0 Y2ggKHNlc3Npb24tPnFhdF9jaXBoZXJfYWxnKSB7Ci0JY2FzZSBJQ1BfUUFUX0hXX0NJUEhFUl9B TEdPX1NOT1dfM0dfVUVBMjoKLQkJSUNQX1FBVF9GV19MQV9QUk9UT19TRVQoaGVhZGVyLT5zZXJ2 X3NwZWNpZl9mbGFncywKLQkJCQlJQ1BfUUFUX0ZXX0xBX1NOT1dfM0dfUFJPVE8pOwotCQlJQ1Bf UUFUX0ZXX0xBX1pVQ18zR19QUk9UT19GTEFHX1NFVCgKLQkJCQloZWFkZXItPnNlcnZfc3BlY2lm X2ZsYWdzLCAwKTsKLQkJYnJlYWs7Ci0JY2FzZSBJQ1BfUUFUX0hXX0NJUEhFUl9BTEdPX1pVQ18z R18xMjhfRUVBMzoKLQkJSUNQX1FBVF9GV19MQV9QUk9UT19TRVQoaGVhZGVyLT5zZXJ2X3NwZWNp Zl9mbGFncywKLQkJCQlJQ1BfUUFUX0ZXX0xBX05PX1BST1RPKTsKLQkJSUNQX1FBVF9GV19MQV9a VUNfM0dfUFJPVE9fRkxBR19TRVQoCi0JCQkJaGVhZGVyLT5zZXJ2X3NwZWNpZl9mbGFncywKLQkJ CQlJQ1BfUUFUX0ZXX0xBX1pVQ18zR19QUk9UTyk7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCUlD UF9RQVRfRldfTEFfUFJPVE9fU0VUKGhlYWRlci0+c2Vydl9zcGVjaWZfZmxhZ3MsCi0JCQkJSUNQ X1FBVF9GV19MQV9OT19QUk9UTyk7Ci0JCUlDUF9RQVRfRldfTEFfWlVDXzNHX1BST1RPX0ZMQUdf U0VUKAotCQkJCWhlYWRlci0+c2Vydl9zcGVjaWZfZmxhZ3MsIDApOwotCQlicmVhazsKLQl9Ci19 Ci0KLXN0YXRpYyB2b2lkCi1xYXRfc3ltX3Nlc3Npb25faGFuZGxlX21peGVkKGNvbnN0IHN0cnVj dCBydGVfY3J5cHRvZGV2ICpkZXYsCi0JCXN0cnVjdCBxYXRfc3ltX3Nlc3Npb24gKnNlc3Npb24p Ci17Ci0JY29uc3Qgc3RydWN0IHFhdF9jcnlwdG9kZXZfcHJpdmF0ZSAqcWF0X3ByaXZhdGUgPQot CQkJZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsKLQllbnVtIHFhdF9kZXZpY2VfZ2VuIG1pbl9kZXZf Z2VuID0gKHFhdF9wcml2YXRlLT5pbnRlcm5hbF9jYXBhYmlsaXRpZXMgJgotCQkJUUFUX1NZTV9D QVBfTUlYRURfQ1JZUFRPKSA/IFFBVF9HRU4yIDogUUFUX0dFTjM7Ci0KLQlpZiAoc2Vzc2lvbi0+ cWF0X2hhc2hfYWxnID09IElDUF9RQVRfSFdfQVVUSF9BTEdPX1pVQ18zR18xMjhfRUlBMyAmJgot CQkJc2Vzc2lvbi0+cWF0X2NpcGhlcl9hbGcgIT0KLQkJCUlDUF9RQVRfSFdfQ0lQSEVSX0FMR09f WlVDXzNHXzEyOF9FRUEzKSB7Ci0JCXNlc3Npb24tPm1pbl9xYXRfZGV2X2dlbiA9IG1pbl9kZXZf Z2VuOwotCQlxYXRfc3ltX3Nlc3Npb25fc2V0X2V4dF9oYXNoX2ZsYWdzKHNlc3Npb24sCi0JCQkx IDw8IElDUF9RQVRfRldfQVVUSF9IRFJfRkxBR19aVUNfRUlBM19CSVRQT1MpOwotCX0gZWxzZSBp ZiAoc2Vzc2lvbi0+cWF0X2hhc2hfYWxnID09IElDUF9RQVRfSFdfQVVUSF9BTEdPX1NOT1dfM0df VUlBMiAmJgotCQkJc2Vzc2lvbi0+cWF0X2NpcGhlcl9hbGcgIT0KLQkJCUlDUF9RQVRfSFdfQ0lQ SEVSX0FMR09fU05PV18zR19VRUEyKSB7Ci0JCXNlc3Npb24tPm1pbl9xYXRfZGV2X2dlbiA9IG1p bl9kZXZfZ2VuOwotCQlxYXRfc3ltX3Nlc3Npb25fc2V0X2V4dF9oYXNoX2ZsYWdzKHNlc3Npb24s Ci0JCQkxIDw8IElDUF9RQVRfRldfQVVUSF9IRFJfRkxBR19TTk9XM0dfVUlBMl9CSVRQT1MpOwot CX0gZWxzZSBpZiAoKHNlc3Npb24tPmFlc19jbWFjIHx8Ci0JCQlzZXNzaW9uLT5xYXRfaGFzaF9h bGcgPT0gSUNQX1FBVF9IV19BVVRIX0FMR09fTlVMTCkgJiYKLQkJCShzZXNzaW9uLT5xYXRfY2lw aGVyX2FsZyA9PQotCQkJSUNQX1FBVF9IV19DSVBIRVJfQUxHT19TTk9XXzNHX1VFQTIgfHwKLQkJ CXNlc3Npb24tPnFhdF9jaXBoZXJfYWxnID09Ci0JCQlJQ1BfUUFUX0hXX0NJUEhFUl9BTEdPX1pV Q18zR18xMjhfRUVBMykpIHsKLQkJc2Vzc2lvbi0+bWluX3FhdF9kZXZfZ2VuID0gbWluX2Rldl9n ZW47Ci0JCXFhdF9zeW1fc2Vzc2lvbl9zZXRfZXh0X2hhc2hfZmxhZ3Moc2Vzc2lvbiwgMCk7Ci0J fQotfQotCiBpbnQKIHFhdF9zeW1fc2Vzc2lvbl9zZXRfcGFyYW1ldGVycyhzdHJ1Y3QgcnRlX2Ny eXB0b2RldiAqZGV2LAogCQlzdHJ1Y3QgcnRlX2NyeXB0b19zeW1feGZvcm0gKnhmb3JtLCB2b2lk ICpzZXNzaW9uX3ByaXZhdGUpCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvY29tbW9uL3FhdC9xYXRf cXAuYy4uLgplcnJvcjogZHJpdmVycy9jb21tb24vcWF0L3FhdF9xcC5jOiBkb2VzIG5vdCBtYXRj aCBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL2NyeXB0by9xYXQvZGV2L3FhdF9hc3ltX3Bt ZF9nZW4xLmMuLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3FhdC9kZXYvcWF0X2FzeW1fcG1kX2dl bjEuYzogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9jcnlw dG8vcWF0L2Rldi9xYXRfY3J5cHRvX3BtZF9nZW5zLmguLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRv L3FhdC9kZXYvcWF0X2NyeXB0b19wbWRfZ2Vucy5oOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleApD aGVja2luZyBwYXRjaCBkcml2ZXJzL2NyeXB0by9xYXQvcWF0X2FzeW0uYy4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVz ZQogKiBDb3B5cmlnaHQoYykgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgogKi8KCiNpbmNsdWRlIDxz dGRhcmcuaD4KCiNpbmNsdWRlICJxYXRfYXN5bS5oIgojaW5jbHVkZSAiaWNwX3FhdF9md19wa2Uu aCIKI2luY2x1ZGUgImljcF9xYXRfZncuaCIKI2luY2x1ZGUgInFhdF9wa2VfZnVuY3Rpb25hbGl0 eV9hcnJheXMuaCIKCiNkZWZpbmUgcWF0X2FzeW1fc3pfMnBhcmFtKGFyZykgKGFyZywgc2l6ZW9m KGFyZykvc2l6ZW9mKCphcmcpKQoKc3RhdGljIGludCBxYXRfYXN5bV9nZXRfc3pfYW5kX2Z1bmNf aWQoY29uc3QgdWludDMyX3QgYXJyW11bMl0sCgkJc2l6ZV90IGFycl9zeiwgc2l6ZV90ICpzaXpl LCB1aW50MzJfdCAqZnVuY19pZCkKewoJc2l6ZV90IGk7CgoJZm9yIChpID0gMDsgaSA8IGFycl9z ejsgaSsrKSB7CgkJaWYgKCpzaXplIDw9IGFycltpXVswXSkgewoJCQkqc2l6ZSA9IGFycltpXVsw XTsKCQkJKmZ1bmNfaWQgPSBhcnJbaV1bMV07CgkJCXJldHVybiAwOwoJCX0KCX0KCXJldHVybiAt MTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHFhdF9maWxsX3JlcV90bXBsKHN0cnVjdCBpY3BfcWF0 X2Z3X3BrZV9yZXF1ZXN0ICpxYXRfcmVxKQp7CgltZW1zZXQocWF0X3JlcSwgMCwgc2l6ZW9mKCpx YXRfcmVxKSk7CglxYXRfcmVxLT5wa2VfaGRyLnNlcnZpY2VfdHlwZSA9IElDUF9RQVRfRldfQ09N Tl9SRVFfQ1BNX0ZXX1BLRTsKCglxYXRfcmVxLT5wa2VfaGRyLmhkcl9mbGFncyA9CgkJCUlDUF9R QVRfRldfQ09NTl9IRFJfRkxBR1NfQlVJTEQKCQkJKElDUF9RQVRfRldfQ09NTl9SRVFfRkxBR19T RVQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcWF0X2FzeW1fYnVpbGRfcmVxX3RtcGwodm9pZCAq c2Vzc19wcml2YXRlX2RhdGEpCnsKCXN0cnVjdCBpY3BfcWF0X2Z3X3BrZV9yZXF1ZXN0ICpxYXRf cmVxOwoJc3RydWN0IHFhdF9hc3ltX3Nlc3Npb24gKnNlc3Npb24gPSBzZXNzX3ByaXZhdGVfZGF0 YTsKCglxYXRfcmVxID0gJnNlc3Npb24tPnJlcV90bXBsOwoJcWF0X2ZpbGxfcmVxX3RtcGwocWF0 X3JlcSk7Cn0KCnN0YXRpYyBzaXplX3QgbWF4X29mKGludCBuLCAuLi4pCnsKCXZhX2xpc3QgYXJn czsKCXNpemVfdCBsZW4gPSAwLCBudW07CglpbnQgaTsKCgl2YV9zdGFydChhcmdzLCBuKTsKCWxl biA9IHZhX2FyZyhhcmdzLCBzaXplX3QpOwoKCWZvciAoaSA9IDA7IGkgPCBuIC0gMTsgaSsrKSB7 CgkJbnVtID0gdmFfYXJnKGFyZ3MsIHNpemVfdCk7CgkJaWYgKG51bSA+IGxlbikKCQkJbGVuID0g bnVtOwoJfQoJdmFfZW5kKGFyZ3MpOwoKCXJldHVybiBsZW47Cn0KCnN0YXRpYyB2b2lkIHFhdF9j bGVhcl9hcnJheXMoc3RydWN0IHFhdF9hc3ltX29wX2Nvb2tpZSAqY29va2llLAoJCWludCBpbl9j b3VudCwgaW50IG91dF9jb3VudCwgaW50IGFsZ19zaXplKQp7CgplcnJvcjogcGF0Y2ggZmFpbGVk OiBkcml2ZXJzL2NyeXB0by9xYXQvcWF0X2FzeW0uYzoxCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcg Zm9yOgoJfQp9CgpzdGF0aWMgaW50IHFhdF9hc3ltX2NoZWNrX25vbnplcm8ocnRlX2NyeXB0b19w YXJhbSBuKQp7CglpZiAobi5sZW5ndGggPCA4KSB7CgkJLyogTm90IGEgY2FzZSBmb3IgYW55IGNy eXB0b2dyYXBpYyBmdW5jdGlvbiBleGNlcHQgZm9yIERICgplcnJvcjogcGF0Y2ggZmFpbGVkOiBk cml2ZXJzL2NyeXB0by9xYXQvcWF0X2FzeW0uYzoxMDYKSHVuayAjMyBzdWNjZWVkZWQgYXQgNDU3 IChvZmZzZXQgLTI4NyBsaW5lcykuCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJu IDA7Cn0KCnN0YXRpYyB2b2lkIHFhdF9hc3ltX2NvbGxlY3RfcmVzcG9uc2Uoc3RydWN0IHJ0ZV9j cnlwdG9fb3AgKnJ4X29wLAoJCXN0cnVjdCBxYXRfYXN5bV9vcF9jb29raWUgKmNvb2tpZSwKCQlz dHJ1Y3QgcnRlX2NyeXB0b19hc3ltX3hmb3JtICp4Zm9ybSkKewoJc2l6ZV90IGFsZ19zaXplLCBh bGdfc2l6ZV9pbl9ieXRlcyA9IDA7CglzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX29wICphc3ltX29w ID0gcnhfb3AtPmFzeW07CgoJaWYgKHhmb3JtLT54Zm9ybV90eXBlID09IFJURV9DUllQVE9fQVNZ TV9YRk9STV9NT0RFWCkgewoJCXJ0ZV9jcnlwdG9fcGFyYW0gbiA9IHhmb3JtLT5tb2RleC5tb2R1 bHVzOwoKCQlhbGdfc2l6ZSA9IGNvb2tpZS0+YWxnX3NpemU7CgkJYWxnX3NpemVfaW5fYnl0ZXMg PSBhbGdfc2l6ZSA+PiAzOwoJCXVpbnQ4X3QgKm1vZGV4cF9yZXN1bHQgPSBhc3ltX29wLT5tb2Rl eC5yZXN1bHQuZGF0YTsKCgkJaWYgKHJ4X29wLT5zdGF0dXMgPT0gUlRFX0NSWVBUT19PUF9TVEFU VVNfTk9UX1BST0NFU1NFRCkgewoJCQlydGVfbWVtY3B5KG1vZGV4cF9yZXN1bHQgKwoJCQkJKGFz eW1fb3AtPm1vZGV4LnJlc3VsdC5sZW5ndGggLQoJCQkJCW4ubGVuZ3RoKSwKCQkJCWNvb2tpZS0+ b3V0cHV0X2FycmF5WzBdICsgYWxnX3NpemVfaW5fYnl0ZXMKCQkJCS0gbi5sZW5ndGgsIG4ubGVu Z3RoCgkJCQkpOwoJCQlyeF9vcC0+c3RhdHVzID0gUlRFX0NSWVBUT19PUF9TVEFUVVNfU1VDQ0VT UzsKI2lmIFJURV9MT0dfRFBfTEVWRUwgPj0gUlRFX0xPR19ERUJVRwoJCQlRQVRfRFBfSEVYRFVN UF9MT0coREVCVUcsICJNb2RFeHAgcmVzdWx0IiwKCQkJCQljb29raWUtPm91dHB1dF9hcnJheVsw XSwKCQkJCQlhbGdfc2l6ZV9pbl9ieXRlcyk7CgojZW5kaWYKCQl9Cgl9IGVsc2UgaWYgKHhmb3Jt LT54Zm9ybV90eXBlID09IFJURV9DUllQVE9fQVNZTV9YRk9STV9NT0RJTlYpIHsKCQlydGVfY3J5 cHRvX3BhcmFtIG4gPSB4Zm9ybS0+bW9kaW52Lm1vZHVsdXM7CgoJCWFsZ19zaXplID0gY29va2ll LT5hbGdfc2l6ZTsKCQlhbGdfc2l6ZV9pbl9ieXRlcyA9IGFsZ19zaXplID4+IDM7CgkJdWludDhf dCAqbW9kaW52X3Jlc3VsdCA9IGFzeW1fb3AtPm1vZGludi5yZXN1bHQuZGF0YTsKCgkJaWYgKHJ4 X29wLT5zdGF0dXMgPT0gUlRFX0NSWVBUT19PUF9TVEFUVVNfTk9UX1BST0NFU1NFRCkgewoJCQly dGVfbWVtY3B5KG1vZGludl9yZXN1bHQgKyAoYXN5bV9vcC0+bW9kaW52LnJlc3VsdC5sZW5ndGgK CQkJCS0gbi5sZW5ndGgpLAoJCQkJY29va2llLT5vdXRwdXRfYXJyYXlbMF0gKyBhbGdfc2l6ZV9p bl9ieXRlcwoJCQkJLSBuLmxlbmd0aCwgbi5sZW5ndGgpOwoJCQlyeF9vcC0+c3RhdHVzID0gUlRF X0NSWVBUT19PUF9TVEFUVVNfU1VDQ0VTUzsKI2lmIFJURV9MT0dfRFBfTEVWRUwgPj0gUlRFX0xP R19ERUJVRwoJCQlRQVRfRFBfSEVYRFVNUF9MT0coREVCVUcsICJNb2RJbnYgcmVzdWx0IiwKCQkJ CQljb29raWUtPm91dHB1dF9hcnJheVswXSwKCQkJCQlhbGdfc2l6ZV9pbl9ieXRlcyk7CiNlbmRp ZgoJCX0KCX0gZWxzZSBpZiAoeGZvcm0tPnhmb3JtX3R5cGUgPT0gUlRFX0NSWVBUT19BU1lNX1hG T1JNX1JTQSkgewoKCQlhbGdfc2l6ZSA9IGNvb2tpZS0+YWxnX3NpemU7CgkJYWxnX3NpemVfaW5f Ynl0ZXMgPSBhbGdfc2l6ZSA+PiAzOwoJCWlmIChhc3ltX29wLT5yc2Eub3BfdHlwZSA9PSBSVEVf Q1JZUFRPX0FTWU1fT1BfRU5DUllQVCB8fAoJCQkJYXN5bV9vcC0+cnNhLm9wX3R5cGUgPT0KCQkJ CQlSVEVfQ1JZUFRPX0FTWU1fT1BfVkVSSUZZKSB7CgkJCWlmIChhc3ltX29wLT5yc2Eub3BfdHlw ZSA9PQoJCQkJCVJURV9DUllQVE9fQVNZTV9PUF9FTkNSWVBUKSB7CgkJCQl1aW50OF90ICpyc2Ff cmVzdWx0ID0gYXN5bV9vcC0+cnNhLmNpcGhlci5kYXRhOwoKCQkJCXJ0ZV9tZW1jcHkocnNhX3Jl c3VsdCwKCQkJCQkJY29va2llLT5vdXRwdXRfYXJyYXlbMF0sCgkJCQkJCWFsZ19zaXplX2luX2J5 dGVzKTsKCQkJCXJ4X29wLT5zdGF0dXMgPSBSVEVfQ1JZUFRPX09QX1NUQVRVU19TVUNDRVNTOwoj aWYgUlRFX0xPR19EUF9MRVZFTCA+PSBSVEVfTE9HX0RFQlVHCgkJCQlRQVRfRFBfSEVYRFVNUF9M T0coREVCVUcsICJSU0EgRW5jcnlwdGVkIGRhdGEiLAoJCQkJCQljb29raWUtPm91dHB1dF9hcnJh eVswXSwKCQkJCQkJYWxnX3NpemVfaW5fYnl0ZXMpOwojZW5kaWYKCQkJfSBlbHNlIGlmIChhc3lt X29wLT5yc2Eub3BfdHlwZSA9PQoJCQkJCVJURV9DUllQVE9fQVNZTV9PUF9WRVJJRlkpIHsKCQkJ CXVpbnQ4X3QgKnJzYV9yZXN1bHQgPSBhc3ltX29wLT5yc2EuY2lwaGVyLmRhdGE7CgoJCQkJc3dp dGNoIChhc3ltX29wLT5yc2EucGFkKSB7CgkJCQljYXNlIFJURV9DUllQVE9fUlNBX1BBRERJTkdf Tk9ORToKCQkJCQlydGVfbWVtY3B5KHJzYV9yZXN1bHQsCgkJCQkJCQljb29raWUtPm91dHB1dF9h cnJheVswXSwKCQkJCQkJCWFsZ19zaXplX2luX2J5dGVzKTsKCQkJCQlyeF9vcC0+c3RhdHVzID0K CQkJCQkJUlRFX0NSWVBUT19PUF9TVEFUVVNfU1VDQ0VTUzsKI2lmIFJURV9MT0dfRFBfTEVWRUwg Pj0gUlRFX0xPR19ERUJVRwoJCQkJUUFUX0RQX0hFWERVTVBfTE9HKERFQlVHLCAiUlNBIFNpZ25h dHVyZSIsCgkJCQkJCWNvb2tpZS0+b3V0cHV0X2FycmF5WzBdLAoJCQkJCQlhbGdfc2l6ZV9pbl9i eXRlcyk7CiNlbmRpZgoJCQkJCWJyZWFrOwoJCQkJZGVmYXVsdDoKCQkJCQlRQVRfTE9HKEVSUiwg IlBhZGRpbmcgbm90IHN1cHBvcnRlZCIpOwoJCQkJCXJ4X29wLT5zdGF0dXMgPQoJCQkJCQlSVEVf Q1JZUFRPX09QX1NUQVRVU19FUlJPUjsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0gZWxzZSB7 CgkJCWlmIChhc3ltX29wLT5yc2Eub3BfdHlwZSA9PQoJCQkJCVJURV9DUllQVE9fQVNZTV9PUF9E RUNSWVBUKSB7CgkJCQl1aW50OF90ICpyc2FfcmVzdWx0ID0gYXN5bV9vcC0+cnNhLm1lc3NhZ2Uu ZGF0YTsKCgkJCQlzd2l0Y2ggKGFzeW1fb3AtPnJzYS5wYWQpIHsKCQkJCWNhc2UgUlRFX0NSWVBU T19SU0FfUEFERElOR19OT05FOgoJCQkJCXJ0ZV9tZW1jcHkocnNhX3Jlc3VsdCwKCQkJCQkJY29v a2llLT5vdXRwdXRfYXJyYXlbMF0sCgkJCQkJCWFsZ19zaXplX2luX2J5dGVzKTsKCQkJCQlyeF9v cC0+c3RhdHVzID0KCQkJCQkJUlRFX0NSWVBUT19PUF9TVEFUVVNfU1VDQ0VTUzsKCQkJCQlicmVh azsKCQkJCWRlZmF1bHQ6CgkJCQkJUUFUX0xPRyhFUlIsICJQYWRkaW5nIG5vdCBzdXBwb3J0ZWQi KTsKCQkJCQlyeF9vcC0+c3RhdHVzID0KCQkJCQkJUlRFX0NSWVBUT19PUF9TVEFUVVNfRVJST1I7 CgkJCQkJYnJlYWs7CgkJCQl9CiNpZiBSVEVfTE9HX0RQX0xFVkVMID49IFJURV9MT0dfREVCVUcK CQkJCVFBVF9EUF9IRVhEVU1QX0xPRyhERUJVRywgIlJTQSBEZWNyeXB0ZWQgTWVzc2FnZSIsCgkJ CQkJCXJzYV9yZXN1bHQsIGFsZ19zaXplX2luX2J5dGVzKTsKI2VuZGlmCgkJCX0gZWxzZSBpZiAo YXN5bV9vcC0+cnNhLm9wX3R5cGUgPT0gUlRFX0NSWVBUT19BU1lNX09QX1NJR04pIHsKCQkJCXVp bnQ4X3QgKnJzYV9yZXN1bHQgPSBhc3ltX29wLT5yc2Euc2lnbi5kYXRhOwoKCQkJCXJ0ZV9tZW1j cHkocnNhX3Jlc3VsdCwKCQkJCQkJY29va2llLT5vdXRwdXRfYXJyYXlbMF0sCgkJCQkJCWFsZ19z aXplX2luX2J5dGVzKTsKCQkJCXJ4X29wLT5zdGF0dXMgPSBSVEVfQ1JZUFRPX09QX1NUQVRVU19T VUNDRVNTOwojaWYgUlRFX0xPR19EUF9MRVZFTCA+PSBSVEVfTE9HX0RFQlVHCgkJCQlRQVRfRFBf SEVYRFVNUF9MT0coREVCVUcsICJSU0EgU2lnbmF0dXJlIiwKCQkJCQkJY29va2llLT5vdXRwdXRf YXJyYXlbMF0sCgkJCQkJCWFsZ19zaXplX2luX2J5dGVzKTsKI2VuZGlmCgkJCX0KCQl9Cgl9Cglx YXRfY2xlYXJfYXJyYXlzX2J5X2FsZyhjb29raWUsIHhmb3JtLCBhbGdfc2l6ZV9pbl9ieXRlcyk7 Cn0KCnZvaWQKcWF0X2FzeW1fcHJvY2Vzc19yZXNwb25zZSh2b2lkICoqb3AsIHVpbnQ4X3QgKnJl c3AsCgkJdm9pZCAqb3BfY29va2llKQp7CglzdHJ1Y3QgcWF0X2FzeW1fc2Vzc2lvbiAqY3R4OwoJ c3RydWN0IGljcF9xYXRfZndfcGsKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9jcnlwdG8v cWF0L3FhdF9hc3ltLmM6NTQ1CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRf YXN5bS5oLi4uCkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfYXN5bS5jIHdp dGggMyByZWplY3RzLi4uClJlamVjdGVkIGh1bmsgIzEuClJlamVjdGVkIGh1bmsgIzIuCkh1bmsg IzMgYXBwbGllZCBjbGVhbmx5LgpSZWplY3RlZCBodW5rICM0LgpBcHBsaWVkIHBhdGNoIGRyaXZl cnMvY3J5cHRvL3FhdC9xYXRfYXN5bS5oIGNsZWFubHkuCmRpZmYgYS9kcml2ZXJzL2NyeXB0by9x YXQvcWF0X2FzeW0uYyBiL2RyaXZlcnMvY3J5cHRvL3FhdC9xYXRfYXN5bS5jCShyZWplY3RlZCBo dW5rcykKQEAgLTEsNjkgKzEsMTE1IEBACiAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTMtQ2xhdXNlCi0gKiBDb3B5cmlnaHQoYykgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICogQ29w eXJpZ2h0KGMpIDIwMTkgLSAyMDIxIEludGVsIENvcnBvcmF0aW9uCiAgKi8KIAogI2luY2x1ZGUg PHN0ZGFyZy5oPgogCi0jaW5jbHVkZSAicWF0X2FzeW0uaCIKKyNpbmNsdWRlIDxjcnlwdG9kZXZf cG1kLmg+CisKICNpbmNsdWRlICJpY3BfcWF0X2Z3X3BrZS5oIgogI2luY2x1ZGUgImljcF9xYXRf ZncuaCIKICNpbmNsdWRlICJxYXRfcGtlX2Z1bmN0aW9uYWxpdHlfYXJyYXlzLmgiCiAKLSNkZWZp bmUgcWF0X2FzeW1fc3pfMnBhcmFtKGFyZykgKGFyZywgc2l6ZW9mKGFyZykvc2l6ZW9mKCphcmcp KQorI2luY2x1ZGUgInFhdF9kZXZpY2UuaCIKIAotc3RhdGljIGludCBxYXRfYXN5bV9nZXRfc3pf YW5kX2Z1bmNfaWQoY29uc3QgdWludDMyX3QgYXJyW11bMl0sCi0JCXNpemVfdCBhcnJfc3osIHNp emVfdCAqc2l6ZSwgdWludDMyX3QgKmZ1bmNfaWQpCisjaW5jbHVkZSAicWF0X2xvZ3MuaCIKKyNp bmNsdWRlICJxYXRfYXN5bS5oIgorCitpbnQKK3FhdF9hc3ltX3Nlc3Npb25fY29uZmlndXJlKHN0 cnVjdCBydGVfY3J5cHRvZGV2ICpkZXYsCisJCXN0cnVjdCBydGVfY3J5cHRvX2FzeW1feGZvcm0g Knhmb3JtLAorCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3MsCisJCXN0 cnVjdCBydGVfbWVtcG9vbCAqbWVtcG9vbCkKIHsKLQlzaXplX3QgaTsKKwlpbnQgZXJyID0gMDsK Kwl2b2lkICpzZXNzX3ByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgcWF0X2FzeW1fc2Vzc2lvbiAqc2Vz c2lvbjsKIAotCWZvciAoaSA9IDA7IGkgPCBhcnJfc3o7IGkrKykgewotCQlpZiAoKnNpemUgPD0g YXJyW2ldWzBdKSB7Ci0JCQkqc2l6ZSA9IGFycltpXVswXTsKLQkJCSpmdW5jX2lkID0gYXJyW2ld WzFdOwotCQkJcmV0dXJuIDA7CisJaWYgKHJ0ZV9tZW1wb29sX2dldChtZW1wb29sLCAmc2Vzc19w cml2YXRlX2RhdGEpKSB7CisJCVFBVF9MT0coRVJSLAorCQkJIkNvdWxkbid0IGdldCBvYmplY3Qg ZnJvbSBzZXNzaW9uIG1lbXBvb2wiKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJc2Vzc2lv biA9IHNlc3NfcHJpdmF0ZV9kYXRhOworCWlmICh4Zm9ybS0+eGZvcm1fdHlwZSA9PSBSVEVfQ1JZ UFRPX0FTWU1fWEZPUk1fTU9ERVgpIHsKKwkJaWYgKHhmb3JtLT5tb2RleC5leHBvbmVudC5sZW5n dGggPT0gMCB8fAorCQkJCXhmb3JtLT5tb2RleC5tb2R1bHVzLmxlbmd0aCA9PSAwKSB7CisJCQlR QVRfTE9HKEVSUiwgIkludmFsaWQgbW9kIGV4cCBpbnB1dCBwYXJhbWV0ZXIiKTsKKwkJCWVyciA9 IC1FSU5WQUw7CisJCQlnb3RvIGVycm9yOworCQl9CisJfSBlbHNlIGlmICh4Zm9ybS0+eGZvcm1f dHlwZSA9PSBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fTU9ESU5WKSB7CisJCWlmICh4Zm9ybS0+bW9k aW52Lm1vZHVsdXMubGVuZ3RoID09IDApIHsKKwkJCVFBVF9MT0coRVJSLCAiSW52YWxpZCBtb2Qg aW52IGlucHV0IHBhcmFtZXRlciIpOworCQkJZXJyID0gLUVJTlZBTDsKKwkJCWdvdG8gZXJyb3I7 CiAJCX0KKwl9IGVsc2UgaWYgKHhmb3JtLT54Zm9ybV90eXBlID09IFJURV9DUllQVE9fQVNZTV9Y Rk9STV9SU0EpIHsKKwkJaWYgKHhmb3JtLT5yc2Eubi5sZW5ndGggPT0gMCkgeworCQkJUUFUX0xP RyhFUlIsICJJbnZhbGlkIHJzYSBpbnB1dCBwYXJhbWV0ZXIiKTsKKwkJCWVyciA9IC1FSU5WQUw7 CisJCQlnb3RvIGVycm9yOworCQl9CisJfSBlbHNlIGlmICh4Zm9ybS0+eGZvcm1fdHlwZSA+PSBS VEVfQ1JZUFRPX0FTWU1fWEZPUk1fVFlQRV9MSVNUX0VORAorCQkJfHwgeGZvcm0tPnhmb3JtX3R5 cGUgPD0gUlRFX0NSWVBUT19BU1lNX1hGT1JNX05PTkUpIHsKKwkJUUFUX0xPRyhFUlIsICJJbnZh bGlkIGFzeW1tZXRyaWMgY3J5cHRvIHhmb3JtIik7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8g ZXJyb3I7CisJfSBlbHNlIHsKKwkJUUFUX0xPRyhFUlIsICJBc3ltbWV0cmljIGNyeXB0byB4Zm9y bSBub3QgaW1wbGVtZW50ZWQiKTsKKwkJZXJyID0gLUVJTlZBTDsKKwkJZ290byBlcnJvcjsKIAl9 Ci0JcmV0dXJuIC0xOwotfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcWF0X2ZpbGxfcmVxX3RtcGwo c3RydWN0IGljcF9xYXRfZndfcGtlX3JlcXVlc3QgKnFhdF9yZXEpCi17Ci0JbWVtc2V0KHFhdF9y ZXEsIDAsIHNpemVvZigqcWF0X3JlcSkpOwotCXFhdF9yZXEtPnBrZV9oZHIuc2VydmljZV90eXBl ID0gSUNQX1FBVF9GV19DT01OX1JFUV9DUE1fRldfUEtFOworCXNlc3Npb24tPnhmb3JtID0geGZv cm07CisJcWF0X2FzeW1fYnVpbGRfcmVxX3RtcGwoc2Vzc19wcml2YXRlX2RhdGEpOworCXNldF9h c3ltX3Nlc3Npb25fcHJpdmF0ZV9kYXRhKHNlc3MsIGRldi0+ZHJpdmVyX2lkLAorCQlzZXNzX3By aXZhdGVfZGF0YSk7CiAKLQlxYXRfcmVxLT5wa2VfaGRyLmhkcl9mbGFncyA9Ci0JCQlJQ1BfUUFU X0ZXX0NPTU5fSERSX0ZMQUdTX0JVSUxECi0JCQkoSUNQX1FBVF9GV19DT01OX1JFUV9GTEFHX1NF VCk7CisJcmV0dXJuIDA7CitlcnJvcjoKKwlydGVfbWVtcG9vbF9wdXQobWVtcG9vbCwgc2Vzc19w cml2YXRlX2RhdGEpOworCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBxYXRf YXN5bV9idWlsZF9yZXFfdG1wbCh2b2lkICpzZXNzX3ByaXZhdGVfZGF0YSkKK3Vuc2lnbmVkIGlu dAorcWF0X2FzeW1fc2Vzc2lvbl9nZXRfcHJpdmF0ZV9zaXplKAorCQlzdHJ1Y3QgcnRlX2NyeXB0 b2RldiAqZGV2IF9fcnRlX3VudXNlZCkKIHsKLQlzdHJ1Y3QgaWNwX3FhdF9md19wa2VfcmVxdWVz dCAqcWF0X3JlcTsKLQlzdHJ1Y3QgcWF0X2FzeW1fc2Vzc2lvbiAqc2Vzc2lvbiA9IHNlc3NfcHJp dmF0ZV9kYXRhOwotCi0JcWF0X3JlcSA9ICZzZXNzaW9uLT5yZXFfdG1wbDsKLQlxYXRfZmlsbF9y ZXFfdG1wbChxYXRfcmVxKTsKKwlyZXR1cm4gUlRFX0FMSUdOX0NFSUwoc2l6ZW9mKHN0cnVjdCBx YXRfYXN5bV9zZXNzaW9uKSwgOCk7CiB9CiAKLXN0YXRpYyBzaXplX3QgbWF4X29mKGludCBuLCAu Li4pCit2b2lkCitxYXRfYXN5bV9zZXNzaW9uX2NsZWFyKHN0cnVjdCBydGVfY3J5cHRvZGV2ICpk ZXYsCisJCXN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2VzcykKIHsKLQl2YV9s aXN0IGFyZ3M7Ci0Jc2l6ZV90IGxlbiA9IDAsIG51bTsKLQlpbnQgaTsKKwl1aW50OF90IGluZGV4 ID0gZGV2LT5kcml2ZXJfaWQ7CisJdm9pZCAqc2Vzc19wcml2ID0gZ2V0X2FzeW1fc2Vzc2lvbl9w cml2YXRlX2RhdGEoc2VzcywgaW5kZXgpOworCXN0cnVjdCBxYXRfYXN5bV9zZXNzaW9uICpzID0g KHN0cnVjdCBxYXRfYXN5bV9zZXNzaW9uICopc2Vzc19wcml2OwogCi0JdmFfc3RhcnQoYXJncywg bik7Ci0JbGVuID0gdmFfYXJnKGFyZ3MsIHNpemVfdCk7CisJaWYgKHNlc3NfcHJpdikgeworCQlt ZW1zZXQocywgMCwgcWF0X2FzeW1fc2Vzc2lvbl9nZXRfcHJpdmF0ZV9zaXplKGRldikpOworCQlz dHJ1Y3QgcnRlX21lbXBvb2wgKnNlc3NfbXAgPSBydGVfbWVtcG9vbF9mcm9tX29iaihzZXNzX3By aXYpOwogCi0JZm9yIChpID0gMDsgaSA8IG4gLSAxOyBpKyspIHsKLQkJbnVtID0gdmFfYXJnKGFy Z3MsIHNpemVfdCk7Ci0JCWlmIChudW0gPiBsZW4pCi0JCQlsZW4gPSBudW07CisJCXNldF9hc3lt X3Nlc3Npb25fcHJpdmF0ZV9kYXRhKHNlc3MsIGluZGV4LCBOVUxMKTsKKwkJcnRlX21lbXBvb2xf cHV0KHNlc3NfbXAsIHNlc3NfcHJpdik7CiAJfQotCXZhX2VuZChhcmdzKTsKLQotCXJldHVybiBs ZW47CiB9CiAKKy8qIEFuIHJ0ZV9kcml2ZXIgaXMgbmVlZGVkIGluIHRoZSByZWdpc3RyYXRpb24g b2YgYm90aCB0aGUgZGV2aWNlIGFuZCB0aGUgZHJpdmVyCisgKiB3aXRoIGNyeXB0b2Rldi4KKyAq IFRoZSBhY3R1YWwgcWF0IHBjaSdzIHJ0ZV9kcml2ZXIgY2FuJ3QgYmUgdXNlZCBhcyBpdHMgbmFt ZSByZXByZXNlbnRzCisgKiB0aGUgd2hvbGUgcGNpIGRldmljZSB3aXRoIGFsbCBzZXJ2aWNlcy4g VGhpbmsgb2YgdGhpcyBhcyBhIGhvbGRlciBmb3IgYSBuYW1lCisgKiBmb3IgdGhlIGNyeXB0byBw YXJ0IG9mIHRoZSBwY2kgZGV2aWNlLgorICovCitzdGF0aWMgY29uc3QgY2hhciBxYXRfYXN5bV9k cnZfbmFtZVtdID0gUlRFX1NUUihDUllQVE9ERVZfTkFNRV9RQVRfQVNZTV9QTUQpOworc3RhdGlj IGNvbnN0IHN0cnVjdCBydGVfZHJpdmVyIGNyeXB0b2Rldl9xYXRfYXN5bV9kcml2ZXIgPSB7CisJ Lm5hbWUgPSBxYXRfYXN5bV9kcnZfbmFtZSwKKwkuYWxpYXMgPSBxYXRfYXN5bV9kcnZfbmFtZQor fTsKKworCiBzdGF0aWMgdm9pZCBxYXRfY2xlYXJfYXJyYXlzKHN0cnVjdCBxYXRfYXN5bV9vcF9j b29raWUgKmNvb2tpZSwKIAkJaW50IGluX2NvdW50LCBpbnQgb3V0X2NvdW50LCBpbnQgYWxnX3Np emUpCiB7CkBAIC0xMDYsNyArMTUyLDIzMCBAQCBzdGF0aWMgdm9pZCBxYXRfY2xlYXJfYXJyYXlz X2J5X2FsZyhzdHJ1Y3QgcWF0X2FzeW1fb3BfY29va2llICpjb29raWUsCiAJfQogfQogCi1zdGF0 aWMgaW50IHFhdF9hc3ltX2NoZWNrX25vbnplcm8ocnRlX2NyeXB0b19wYXJhbSBuKQorc3RhdGlj IHZvaWQgcWF0X2FzeW1fY29sbGVjdF9yZXNwb25zZShzdHJ1Y3QgcnRlX2NyeXB0b19vcCAqcnhf b3AsCisJCXN0cnVjdCBxYXRfYXN5bV9vcF9jb29raWUgKmNvb2tpZSwKKwkJc3RydWN0IHJ0ZV9j cnlwdG9fYXN5bV94Zm9ybSAqeGZvcm0pCit7CisJc2l6ZV90IGFsZ19zaXplLCBhbGdfc2l6ZV9p bl9ieXRlcyA9IDA7CisJc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV9vcCAqYXN5bV9vcCA9IHJ4X29w LT5hc3ltOworCisJaWYgKHhmb3JtLT54Zm9ybV90eXBlID09IFJURV9DUllQVE9fQVNZTV9YRk9S TV9NT0RFWCkgeworCQlydGVfY3J5cHRvX3BhcmFtIG4gPSB4Zm9ybS0+bW9kZXgubW9kdWx1czsK KworCQlhbGdfc2l6ZSA9IGNvb2tpZS0+YWxnX3NpemU7CisJCWFsZ19zaXplX2luX2J5dGVzID0g YWxnX3NpemUgPj4gMzsKKwkJdWludDhfdCAqbW9kZXhwX3Jlc3VsdCA9IGFzeW1fb3AtPm1vZGV4 LnJlc3VsdC5kYXRhOworCisJCWlmIChyeF9vcC0+c3RhdHVzID09IFJURV9DUllQVE9fT1BfU1RB VFVTX05PVF9QUk9DRVNTRUQpIHsKKwkJCXJ0ZV9tZW1jcHkobW9kZXhwX3Jlc3VsdCArCisJCQkJ KGFzeW1fb3AtPm1vZGV4LnJlc3VsdC5sZW5ndGggLQorCQkJCQluLmxlbmd0aCksCisJCQkJY29v a2llLT5vdXRwdXRfYXJyYXlbMF0gKyBhbGdfc2l6ZV9pbl9ieXRlcworCQkJCS0gbi5sZW5ndGgs IG4ubGVuZ3RoCisJCQkJKTsKKwkJCXJ4X29wLT5zdGF0dXMgPSBSVEVfQ1JZUFRPX09QX1NUQVRV U19TVUNDRVNTOworI2lmIFJURV9MT0dfRFBfTEVWRUwgPj0gUlRFX0xPR19ERUJVRworCQkJUUFU X0RQX0hFWERVTVBfTE9HKERFQlVHLCAiTW9kRXhwIHJlc3VsdCIsCisJCQkJCWNvb2tpZS0+b3V0 cHV0X2FycmF5WzBdLAorCQkJCQlhbGdfc2l6ZV9pbl9ieXRlcyk7CisKKyNlbmRpZgorCQl9CisJ fSBlbHNlIGlmICh4Zm9ybS0+eGZvcm1fdHlwZSA9PSBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fTU9E SU5WKSB7CisJCXJ0ZV9jcnlwdG9fcGFyYW0gbiA9IHhmb3JtLT5tb2RpbnYubW9kdWx1czsKKwor CQlhbGdfc2l6ZSA9IGNvb2tpZS0+YWxnX3NpemU7CisJCWFsZ19zaXplX2luX2J5dGVzID0gYWxn X3NpemUgPj4gMzsKKwkJdWludDhfdCAqbW9kaW52X3Jlc3VsdCA9IGFzeW1fb3AtPm1vZGludi5y ZXN1bHQuZGF0YTsKKworCQlpZiAocnhfb3AtPnN0YXR1cyA9PSBSVEVfQ1JZUFRPX09QX1NUQVRV U19OT1RfUFJPQ0VTU0VEKSB7CisJCQlydGVfbWVtY3B5KG1vZGludl9yZXN1bHQgKworCQkJCShh c3ltX29wLT5tb2RpbnYucmVzdWx0Lmxlbmd0aAorCQkJCS0gbi5sZW5ndGgpLAorCQkJCWNvb2tp ZS0+b3V0cHV0X2FycmF5WzBdICsgYWxnX3NpemVfaW5fYnl0ZXMKKwkJCQktIG4ubGVuZ3RoLCBu Lmxlbmd0aCk7CisJCQlyeF9vcC0+c3RhdHVzID0gUlRFX0NSWVBUT19PUF9TVEFUVVNfU1VDQ0VT UzsKKyNpZiBSVEVfTE9HX0RQX0xFVkVMID49IFJURV9MT0dfREVCVUcKKwkJCVFBVF9EUF9IRVhE VU1QX0xPRyhERUJVRywgIk1vZEludiByZXN1bHQiLAorCQkJCQljb29raWUtPm91dHB1dF9hcnJh eVswXSwKKwkJCQkJYWxnX3NpemVfaW5fYnl0ZXMpOworI2VuZGlmCisJCX0KKwl9IGVsc2UgaWYg KHhmb3JtLT54Zm9ybV90eXBlID09IFJURV9DUllQVE9fQVNZTV9YRk9STV9SU0EpIHsKKworCQlh bGdfc2l6ZSA9IGNvb2tpZS0+YWxnX3NpemU7CisJCWFsZ19zaXplX2luX2J5dGVzID0gYWxnX3Np emUgPj4gMzsKKwkJaWYgKGFzeW1fb3AtPnJzYS5vcF90eXBlID09IFJURV9DUllQVE9fQVNZTV9P UF9FTkNSWVBUIHx8CisJCQkJYXN5bV9vcC0+cnNhLm9wX3R5cGUgPT0KKwkJCQkJUlRFX0NSWVBU T19BU1lNX09QX1ZFUklGWSkgeworCQkJaWYgKGFzeW1fb3AtPnJzYS5vcF90eXBlID09CisJCQkJ CVJURV9DUllQVE9fQVNZTV9PUF9FTkNSWVBUKSB7CisJCQkJdWludDhfdCAqcnNhX3Jlc3VsdCA9 IGFzeW1fb3AtPnJzYS5jaXBoZXIuZGF0YTsKKworCQkJCXJ0ZV9tZW1jcHkocnNhX3Jlc3VsdCwK KwkJCQkJCWNvb2tpZS0+b3V0cHV0X2FycmF5WzBdLAorCQkJCQkJYWxnX3NpemVfaW5fYnl0ZXMp OworCQkJCXJ4X29wLT5zdGF0dXMgPSBSVEVfQ1JZUFRPX09QX1NUQVRVU19TVUNDRVNTOworI2lm IFJURV9MT0dfRFBfTEVWRUwgPj0gUlRFX0xPR19ERUJVRworCQkJCVFBVF9EUF9IRVhEVU1QX0xP RyhERUJVRywgIlJTQSBFbmNyeXB0ZWQgZGF0YSIsCisJCQkJCQljb29raWUtPm91dHB1dF9hcnJh eVswXSwKKwkJCQkJCWFsZ19zaXplX2luX2J5dGVzKTsKKyNlbmRpZgorCQkJfSBlbHNlIGlmIChh c3ltX29wLT5yc2Eub3BfdHlwZSA9PQorCQkJCQlSVEVfQ1JZUFRPX0FTWU1fT1BfVkVSSUZZKSB7 CisJCQkJdWludDhfdCAqcnNhX3Jlc3VsdCA9IGFzeW1fb3AtPnJzYS5jaXBoZXIuZGF0YTsKKwor CQkJCXN3aXRjaCAoYXN5bV9vcC0+cnNhLnBhZCkgeworCQkJCWNhc2UgUlRFX0NSWVBUT19SU0Ff UEFERElOR19OT05FOgorCQkJCQlydGVfbWVtY3B5KHJzYV9yZXN1bHQsCisJCQkJCQkJY29va2ll LT5vdXRwdXRfYXJyYXlbMF0sCisJCQkJCQkJYWxnX3NpemVfaW5fYnl0ZXMpOworCQkJCQlyeF9v cC0+c3RhdHVzID0KKwkJCQkJCVJURV9DUllQVE9fT1BfU1RBVFVTX1NVQ0NFU1M7CisjaWYgUlRF X0xPR19EUF9MRVZFTCA+PSBSVEVfTE9HX0RFQlVHCisJCQkJUUFUX0RQX0hFWERVTVBfTE9HKERF QlVHLCAiUlNBIFNpZ25hdHVyZSIsCisJCQkJCQljb29raWUtPm91dHB1dF9hcnJheVswXSwKKwkJ CQkJCWFsZ19zaXplX2luX2J5dGVzKTsKKyNlbmRpZgorCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0 OgorCQkJCQlRQVRfTE9HKEVSUiwgIlBhZGRpbmcgbm90IHN1cHBvcnRlZCIpOworCQkJCQlyeF9v cC0+c3RhdHVzID0KKwkJCQkJCVJURV9DUllQVE9fT1BfU1RBVFVTX0VSUk9SOworCQkJCQlicmVh azsKKwkJCQl9CisJCQl9CisJCX0gZWxzZSB7CisJCQlpZiAoYXN5bV9vcC0+cnNhLm9wX3R5cGUg PT0KKwkJCQkJUlRFX0NSWVBUT19BU1lNX09QX0RFQ1JZUFQpIHsKKwkJCQl1aW50OF90ICpyc2Ff cmVzdWx0ID0gYXN5bV9vcC0+cnNhLm1lc3NhZ2UuZGF0YTsKKworCQkJCXN3aXRjaCAoYXN5bV9v cC0+cnNhLnBhZCkgeworCQkJCWNhc2UgUlRFX0NSWVBUT19SU0FfUEFERElOR19OT05FOgorCQkJ CQlydGVfbWVtY3B5KHJzYV9yZXN1bHQsCisJCQkJCQljb29raWUtPm91dHB1dF9hcnJheVswXSwK KwkJCQkJCWFsZ19zaXplX2luX2J5dGVzKTsKKwkJCQkJcnhfb3AtPnN0YXR1cyA9CisJCQkJCQlS VEVfQ1JZUFRPX09QX1NUQVRVU19TVUNDRVNTOworCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0Ogor CQkJCQlRQVRfTE9HKEVSUiwgIlBhZGRpbmcgbm90IHN1cHBvcnRlZCIpOworCQkJCQlyeF9vcC0+ c3RhdHVzID0KKwkJCQkJCVJURV9DUllQVE9fT1BfU1RBVFVTX0VSUk9SOworCQkJCQlicmVhazsK KwkJCQl9CisjaWYgUlRFX0xPR19EUF9MRVZFTCA+PSBSVEVfTE9HX0RFQlVHCisJCQkJUUFUX0RQ X0hFWERVTVBfTE9HKERFQlVHLCAiUlNBIERlY3J5cHRlZCBNZXNzYWdlIiwKKwkJCQkJCXJzYV9y ZXN1bHQsIGFsZ19zaXplX2luX2J5dGVzKTsKKyNlbmRpZgorCQkJfSBlbHNlIGlmIChhc3ltX29w LT5yc2Eub3BfdHlwZSA9PQorCQkJCQlSVEVfQ1JZUFRPX0FTWU1fT1BfU0lHTikgeworCQkJCXVp bnQ4X3QgKnJzYV9yZXN1bHQgPSBhc3ltX29wLT5yc2Euc2lnbi5kYXRhOworCisJCQkJcnRlX21l bWNweShyc2FfcmVzdWx0LAorCQkJCQkJY29va2llLT5vdXRwdXRfYXJyYXlbMF0sCisJCQkJCQlh bGdfc2l6ZV9pbl9ieXRlcyk7CisJCQkJcnhfb3AtPnN0YXR1cyA9IFJURV9DUllQVE9fT1BfU1RB VFVTX1NVQ0NFU1M7CisjaWYgUlRFX0xPR19EUF9MRVZFTCA+PSBSVEVfTE9HX0RFQlVHCisJCQkJ UUFUX0RQX0hFWERVTVBfTE9HKERFQlVHLCAiUlNBIFNpZ25hdHVyZSIsCisJCQkJCQljb29raWUt Pm91dHB1dF9hcnJheVswXSwKKwkJCQkJCWFsZ19zaXplX2luX2J5dGVzKTsKKyNlbmRpZgorCQkJ fQorCQl9CisJfQorCXFhdF9jbGVhcl9hcnJheXNfYnlfYWxnKGNvb2tpZSwgeGZvcm0sIGFsZ19z aXplX2luX2J5dGVzKTsKK30KKworaW50CitxYXRfYXN5bV9wcm9jZXNzX3Jlc3BvbnNlKHZvaWQg X19ydGVfdW51c2VkICogKm9wLCB1aW50OF90ICpyZXNwLAorCQl2b2lkICpvcF9jb29raWUsIF9f cnRlX3VudXNlZCB1aW50NjRfdCAqZGVxdWV1ZV9lcnJfY291bnQpCit7CisJc3RydWN0IHFhdF9h c3ltX3Nlc3Npb24gKmN0eDsKKwlzdHJ1Y3QgaWNwX3FhdF9md19wa2VfcmVzcCAqcmVzcF9tc2cg PQorCQkJKHN0cnVjdCBpY3BfcWF0X2Z3X3BrZV9yZXNwICopcmVzcDsKKwlzdHJ1Y3QgcnRlX2Ny eXB0b19vcCAqcnhfb3AgPSAoc3RydWN0IHJ0ZV9jcnlwdG9fb3AgKikodWludHB0cl90KQorCQkJ KHJlc3BfbXNnLT5vcGFxdWUpOworCXN0cnVjdCBxYXRfYXN5bV9vcF9jb29raWUgKmNvb2tpZSA9 IG9wX2Nvb2tpZTsKKworCWlmIChjb29raWUtPmVycm9yKSB7CisJCWNvb2tpZS0+ZXJyb3IgPSAw OworCQlpZiAocnhfb3AtPnN0YXR1cyA9PSBSVEVfQ1JZUFRPX09QX1NUQVRVU19OT1RfUFJPQ0VT U0VEKQorCQkJcnhfb3AtPnN0YXR1cyA9IFJURV9DUllQVE9fT1BfU1RBVFVTX0VSUk9SOworCQlR QVRfRFBfTE9HKEVSUiwgIkNvb2tpZSBzdGF0dXMgcmV0dXJuZWQgZXJyb3IiKTsKKwl9IGVsc2Ug eworCQlpZiAoSUNQX1FBVF9GV19QS0VfUkVTUF9QS0VfU1RBVF9HRVQoCisJCQlyZXNwX21zZy0+ cGtlX3Jlc3BfaGRyLnJlc3Bfc3RhdHVzLnBrZV9yZXNwX2ZsYWdzKSkgeworCQkJaWYgKHJ4X29w LT5zdGF0dXMgPT0gUlRFX0NSWVBUT19PUF9TVEFUVVNfTk9UX1BST0NFU1NFRCkKKwkJCQlyeF9v cC0+c3RhdHVzID0gUlRFX0NSWVBUT19PUF9TVEFUVVNfRVJST1I7CisJCQlRQVRfRFBfTE9HKEVS UiwgIkFzeW1tZXRyaWMgcmVzcG9uc2Ugc3RhdHVzIgorCQkJCQkiIHJldHVybmVkIGVycm9yIik7 CisJCX0KKwkJaWYgKHJlc3BfbXNnLT5wa2VfcmVzcF9oZHIucmVzcF9zdGF0dXMuY29tbl9lcnJf Y29kZSkgeworCQkJaWYgKHJ4X29wLT5zdGF0dXMgPT0gUlRFX0NSWVBUT19PUF9TVEFUVVNfTk9U X1BST0NFU1NFRCkKKwkJCQlyeF9vcC0+c3RhdHVzID0gUlRFX0NSWVBUT19PUF9TVEFUVVNfRVJS T1I7CisJCQlRQVRfRFBfTE9HKEVSUiwgIkFzeW1tZXRyaWMgY29tbW9uIHN0YXR1cyIKKwkJCQkJ IiByZXR1cm5lZCBlcnJvciIpOworCQl9CisJfQorCisJaWYgKHJ4X29wLT5zZXNzX3R5cGUgPT0g UlRFX0NSWVBUT19PUF9XSVRIX1NFU1NJT04pIHsKKwkJY3R4ID0gKHN0cnVjdCBxYXRfYXN5bV9z ZXNzaW9uICopZ2V0X2FzeW1fc2Vzc2lvbl9wcml2YXRlX2RhdGEoCisJCQlyeF9vcC0+YXN5bS0+ c2Vzc2lvbiwgcWF0X2FzeW1fZHJpdmVyX2lkKTsKKwkJcWF0X2FzeW1fY29sbGVjdF9yZXNwb25z ZShyeF9vcCwgY29va2llLCBjdHgtPnhmb3JtKTsKKwl9IGVsc2UgaWYgKHJ4X29wLT5zZXNzX3R5 cGUgPT0gUlRFX0NSWVBUT19PUF9TRVNTSU9OTEVTUykgeworCQlxYXRfYXN5bV9jb2xsZWN0X3Jl c3BvbnNlKHJ4X29wLCBjb29raWUsIHJ4X29wLT5hc3ltLT54Zm9ybSk7CisJfQorCSpvcCA9IHJ4 X29wOworCisjaWYgUlRFX0xPR19EUF9MRVZFTCA+PSBSVEVfTE9HX0RFQlVHCisJUUFUX0RQX0hF WERVTVBfTE9HKERFQlVHLCAicmVzcF9tc2c6IiwgcmVzcF9tc2csCisJCQlzaXplb2Yoc3RydWN0 IGljcF9xYXRfZndfcGtlX3Jlc3ApKTsKKyNlbmRpZgorCisJcmV0dXJuIDE7Cit9CisKKyNkZWZp bmUgcWF0X2FzeW1fc3pfMnBhcmFtKGFyZykgKGFyZywgc2l6ZW9mKGFyZykvc2l6ZW9mKCphcmcp KQorCitzdGF0aWMgaW50CitxYXRfYXN5bV9nZXRfc3pfYW5kX2Z1bmNfaWQoY29uc3QgdWludDMy X3QgYXJyW11bMl0sCisJCXNpemVfdCBhcnJfc3osIHNpemVfdCAqc2l6ZSwgdWludDMyX3QgKmZ1 bmNfaWQpCit7CisJc2l6ZV90IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgYXJyX3N6OyBpKyspIHsK KwkJaWYgKCpzaXplIDw9IGFycltpXVswXSkgeworCQkJKnNpemUgPSBhcnJbaV1bMF07CisJCQkq ZnVuY19pZCA9IGFycltpXVsxXTsKKwkJCXJldHVybiAwOworCQl9CisJfQorCXJldHVybiAtMTsK K30KKworc3RhdGljIHNpemVfdAorbWF4X29mKGludCBuLCAuLi4pCit7CisJdmFfbGlzdCBhcmdz OworCXNpemVfdCBsZW4gPSAwLCBudW07CisJaW50IGk7CisKKwl2YV9zdGFydChhcmdzLCBuKTsK KwlsZW4gPSB2YV9hcmcoYXJncywgc2l6ZV90KTsKKworCWZvciAoaSA9IDA7IGkgPCBuIC0gMTsg aSsrKSB7CisJCW51bSA9IHZhX2FyZyhhcmdzLCBzaXplX3QpOworCQlpZiAobnVtID4gbGVuKQor CQkJbGVuID0gbnVtOworCX0KKwl2YV9lbmQoYXJncyk7CisKKwlyZXR1cm4gbGVuOworfQorCitz dGF0aWMgaW50CitxYXRfYXN5bV9jaGVja19ub256ZXJvKHJ0ZV9jcnlwdG9fcGFyYW0gbikKIHsK IAlpZiAobi5sZW5ndGggPCA4KSB7CiAJCS8qIE5vdCBhIGNhc2UgZm9yIGFueSBjcnlwdG9ncmFw aWMgZnVuY3Rpb24gZXhjZXB0IGZvciBESApAQCAtNTQ1LDI2MyArODEzLDcgQEAgcWF0X2FzeW1f YnVpbGRfcmVxdWVzdCh2b2lkICppbl9vcCwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQg cWF0X2FzeW1fY29sbGVjdF9yZXNwb25zZShzdHJ1Y3QgcnRlX2NyeXB0b19vcCAqcnhfb3AsCi0J CXN0cnVjdCBxYXRfYXN5bV9vcF9jb29raWUgKmNvb2tpZSwKLQkJc3RydWN0IHJ0ZV9jcnlwdG9f YXN5bV94Zm9ybSAqeGZvcm0pCi17Ci0Jc2l6ZV90IGFsZ19zaXplLCBhbGdfc2l6ZV9pbl9ieXRl cyA9IDA7Ci0Jc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV9vcCAqYXN5bV9vcCA9IHJ4X29wLT5hc3lt OwotCi0JaWYgKHhmb3JtLT54Zm9ybV90eXBlID09IFJURV9DUllQVE9fQVNZTV9YRk9STV9NT0RF WCkgewotCQlydGVfY3J5cHRvX3BhcmFtIG4gPSB4Zm9ybS0+bW9kZXgubW9kdWx1czsKLQotCQlh bGdfc2l6ZSA9IGNvb2tpZS0+YWxnX3NpemU7Ci0JCWFsZ19zaXplX2luX2J5dGVzID0gYWxnX3Np emUgPj4gMzsKLQkJdWludDhfdCAqbW9kZXhwX3Jlc3VsdCA9IGFzeW1fb3AtPm1vZGV4LnJlc3Vs dC5kYXRhOwotCi0JCWlmIChyeF9vcC0+c3RhdHVzID09IFJURV9DUllQVE9fT1BfU1RBVFVTX05P VF9QUk9DRVNTRUQpIHsKLQkJCXJ0ZV9tZW1jcHkobW9kZXhwX3Jlc3VsdCArCi0JCQkJKGFzeW1f b3AtPm1vZGV4LnJlc3VsdC5sZW5ndGggLQotCQkJCQluLmxlbmd0aCksCi0JCQkJY29va2llLT5v dXRwdXRfYXJyYXlbMF0gKyBhbGdfc2l6ZV9pbl9ieXRlcwotCQkJCS0gbi5sZW5ndGgsIG4ubGVu Z3RoCi0JCQkJKTsKLQkJCXJ4X29wLT5zdGF0dXMgPSBSVEVfQ1JZUFRPX09QX1NUQVRVU19TVUND RVNTOwotI2lmIFJURV9MT0dfRFBfTEVWRUwgPj0gUlRFX0xPR19ERUJVRwotCQkJUUFUX0RQX0hF WERVTVBfTE9HKERFQlVHLCAiTW9kRXhwIHJlc3VsdCIsCi0JCQkJCWNvb2tpZS0+b3V0cHV0X2Fy cmF5WzBdLAotCQkJCQlhbGdfc2l6ZV9pbl9ieXRlcyk7Ci0KLSNlbmRpZgotCQl9Ci0JfSBlbHNl IGlmICh4Zm9ybS0+eGZvcm1fdHlwZSA9PSBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fTU9ESU5WKSB7 Ci0JCXJ0ZV9jcnlwdG9fcGFyYW0gbiA9IHhmb3JtLT5tb2RpbnYubW9kdWx1czsKLQotCQlhbGdf c2l6ZSA9IGNvb2tpZS0+YWxnX3NpemU7Ci0JCWFsZ19zaXplX2luX2J5dGVzID0gYWxnX3NpemUg Pj4gMzsKLQkJdWludDhfdCAqbW9kaW52X3Jlc3VsdCA9IGFzeW1fb3AtPm1vZGludi5yZXN1bHQu ZGF0YTsKLQotCQlpZiAocnhfb3AtPnN0YXR1cyA9PSBSVEVfQ1JZUFRPX09QX1NUQVRVU19OT1Rf UFJPQ0VTU0VEKSB7Ci0JCQlydGVfbWVtY3B5KG1vZGludl9yZXN1bHQgKyAoYXN5bV9vcC0+bW9k aW52LnJlc3VsdC5sZW5ndGgKLQkJCQktIG4ubGVuZ3RoKSwKLQkJCQljb29raWUtPm91dHB1dF9h cnJheVswXSArIGFsZ19zaXplX2luX2J5dGVzCi0JCQkJLSBuLmxlbmd0aCwgbi5sZW5ndGgpOwot CQkJcnhfb3AtPnN0YXR1cyA9IFJURV9DUllQVE9fT1BfU1RBVFVTX1NVQ0NFU1M7Ci0jaWYgUlRF X0xPR19EUF9MRVZFTCA+PSBSVEVfTE9HX0RFQlVHCi0JCQlRQVRfRFBfSEVYRFVNUF9MT0coREVC VUcsICJNb2RJbnYgcmVzdWx0IiwKLQkJCQkJY29va2llLT5vdXRwdXRfYXJyYXlbMF0sCi0JCQkJ CWFsZ19zaXplX2luX2J5dGVzKTsKLSNlbmRpZgotCQl9Ci0JfSBlbHNlIGlmICh4Zm9ybS0+eGZv cm1fdHlwZSA9PSBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fUlNBKSB7Ci0KLQkJYWxnX3NpemUgPSBj b29raWUtPmFsZ19zaXplOwotCQlhbGdfc2l6ZV9pbl9ieXRlcyA9IGFsZ19zaXplID4+IDM7Ci0J CWlmIChhc3ltX29wLT5yc2Eub3BfdHlwZSA9PSBSVEVfQ1JZUFRPX0FTWU1fT1BfRU5DUllQVCB8 fAotCQkJCWFzeW1fb3AtPnJzYS5vcF90eXBlID09Ci0JCQkJCVJURV9DUllQVE9fQVNZTV9PUF9W RVJJRlkpIHsKLQkJCWlmIChhc3ltX29wLT5yc2Eub3BfdHlwZSA9PQotCQkJCQlSVEVfQ1JZUFRP X0FTWU1fT1BfRU5DUllQVCkgewotCQkJCXVpbnQ4X3QgKnJzYV9yZXN1bHQgPSBhc3ltX29wLT5y c2EuY2lwaGVyLmRhdGE7Ci0KLQkJCQlydGVfbWVtY3B5KHJzYV9yZXN1bHQsCi0JCQkJCQljb29r aWUtPm91dHB1dF9hcnJheVswXSwKLQkJCQkJCWFsZ19zaXplX2luX2J5dGVzKTsKLQkJCQlyeF9v cC0+c3RhdHVzID0gUlRFX0NSWVBUT19PUF9TVEFUVVNfU1VDQ0VTUzsKLSNpZiBSVEVfTE9HX0RQ X0xFVkVMID49IFJURV9MT0dfREVCVUcKLQkJCQlRQVRfRFBfSEVYRFVNUF9MT0coREVCVUcsICJS U0EgRW5jcnlwdGVkIGRhdGEiLAotCQkJCQkJY29va2llLT5vdXRwdXRfYXJyYXlbMF0sCi0JCQkJ CQlhbGdfc2l6ZV9pbl9ieXRlcyk7Ci0jZW5kaWYKLQkJCX0gZWxzZSBpZiAoYXN5bV9vcC0+cnNh Lm9wX3R5cGUgPT0KLQkJCQkJUlRFX0NSWVBUT19BU1lNX09QX1ZFUklGWSkgewotCQkJCXVpbnQ4 X3QgKnJzYV9yZXN1bHQgPSBhc3ltX29wLT5yc2EuY2lwaGVyLmRhdGE7Ci0KLQkJCQlzd2l0Y2gg KGFzeW1fb3AtPnJzYS5wYWQpIHsKLQkJCQljYXNlIFJURV9DUllQVE9fUlNBX1BBRERJTkdfTk9O RToKLQkJCQkJcnRlX21lbWNweShyc2FfcmVzdWx0LAotCQkJCQkJCWNvb2tpZS0+b3V0cHV0X2Fy cmF5WzBdLAotCQkJCQkJCWFsZ19zaXplX2luX2J5dGVzKTsKLQkJCQkJcnhfb3AtPnN0YXR1cyA9 Ci0JCQkJCQlSVEVfQ1JZUFRPX09QX1NUQVRVU19TVUNDRVNTOwotI2lmIFJURV9MT0dfRFBfTEVW RUwgPj0gUlRFX0xPR19ERUJVRwotCQkJCVFBVF9EUF9IRVhEVU1QX0xPRyhERUJVRywgIlJTQSBT aWduYXR1cmUiLAotCQkJCQkJY29va2llLT5vdXRwdXRfYXJyYXlbMF0sCi0JCQkJCQlhbGdfc2l6 ZV9pbl9ieXRlcyk7Ci0jZW5kaWYKLQkJCQkJYnJlYWs7Ci0JCQkJZGVmYXVsdDoKLQkJCQkJUUFU X0xPRyhFUlIsICJQYWRkaW5nIG5vdCBzdXBwb3J0ZWQiKTsKLQkJCQkJcnhfb3AtPnN0YXR1cyA9 Ci0JCQkJCQlSVEVfQ1JZUFRPX09QX1NUQVRVU19FUlJPUjsKLQkJCQkJYnJlYWs7Ci0JCQkJfQot CQkJfQotCQl9IGVsc2UgewotCQkJaWYgKGFzeW1fb3AtPnJzYS5vcF90eXBlID09Ci0JCQkJCVJU RV9DUllQVE9fQVNZTV9PUF9ERUNSWVBUKSB7Ci0JCQkJdWludDhfdCAqcnNhX3Jlc3VsdCA9IGFz eW1fb3AtPnJzYS5tZXNzYWdlLmRhdGE7Ci0KLQkJCQlzd2l0Y2ggKGFzeW1fb3AtPnJzYS5wYWQp IHsKLQkJCQljYXNlIFJURV9DUllQVE9fUlNBX1BBRERJTkdfTk9ORToKLQkJCQkJcnRlX21lbWNw eShyc2FfcmVzdWx0LAotCQkJCQkJY29va2llLT5vdXRwdXRfYXJyYXlbMF0sCi0JCQkJCQlhbGdf c2l6ZV9pbl9ieXRlcyk7Ci0JCQkJCXJ4X29wLT5zdGF0dXMgPQotCQkJCQkJUlRFX0NSWVBUT19P UF9TVEFUVVNfU1VDQ0VTUzsKLQkJCQkJYnJlYWs7Ci0JCQkJZGVmYXVsdDoKLQkJCQkJUUFUX0xP RyhFUlIsICJQYWRkaW5nIG5vdCBzdXBwb3J0ZWQiKTsKLQkJCQkJcnhfb3AtPnN0YXR1cyA9Ci0J CQkJCQlSVEVfQ1JZUFRPX09QX1NUQVRVU19FUlJPUjsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotI2lm IFJURV9MT0dfRFBfTEVWRUwgPj0gUlRFX0xPR19ERUJVRwotCQkJCVFBVF9EUF9IRVhEVU1QX0xP RyhERUJVRywgIlJTQSBEZWNyeXB0ZWQgTWVzc2FnZSIsCi0JCQkJCQlyc2FfcmVzdWx0LCBhbGdf c2l6ZV9pbl9ieXRlcyk7Ci0jZW5kaWYKLQkJCX0gZWxzZSBpZiAoYXN5bV9vcC0+cnNhLm9wX3R5 cGUgPT0gUlRFX0NSWVBUT19BU1lNX09QX1NJR04pIHsKLQkJCQl1aW50OF90ICpyc2FfcmVzdWx0 ID0gYXN5bV9vcC0+cnNhLnNpZ24uZGF0YTsKLQotCQkJCXJ0ZV9tZW1jcHkocnNhX3Jlc3VsdCwK LQkJCQkJCWNvb2tpZS0+b3V0cHV0X2FycmF5WzBdLAotCQkJCQkJYWxnX3NpemVfaW5fYnl0ZXMp OwotCQkJCXJ4X29wLT5zdGF0dXMgPSBSVEVfQ1JZUFRPX09QX1NUQVRVU19TVUNDRVNTOwotI2lm IFJURV9MT0dfRFBfTEVWRUwgPj0gUlRFX0xPR19ERUJVRwotCQkJCVFBVF9EUF9IRVhEVU1QX0xP RyhERUJVRywgIlJTQSBTaWduYXR1cmUiLAotCQkJCQkJY29va2llLT5vdXRwdXRfYXJyYXlbMF0s Ci0JCQkJCQlhbGdfc2l6ZV9pbl9ieXRlcyk7Ci0jZW5kaWYKLQkJCX0KLQkJfQotCX0KLQlxYXRf Y2xlYXJfYXJyYXlzX2J5X2FsZyhjb29raWUsIHhmb3JtLCBhbGdfc2l6ZV9pbl9ieXRlcyk7Ci19 Ci0KLXZvaWQKLXFhdF9hc3ltX3Byb2Nlc3NfcmVzcG9uc2Uodm9pZCAqKm9wLCB1aW50OF90ICpy ZXNwLAotCQl2b2lkICpvcF9jb29raWUpCi17Ci0Jc3RydWN0IHFhdF9hc3ltX3Nlc3Npb24gKmN0 eDsKLQlzdHJ1Y3QgaWNwX3FhdF9md19wa2VfcmVzcCAqcmVzcF9tc2cgPQotCQkJKHN0cnVjdCBp Y3BfcWF0X2Z3X3BrZV9yZXNwICopcmVzcDsKLQlzdHJ1Y3QgcnRlX2NyeXB0b19vcCAqcnhfb3Ag PSAoc3RydWN0IHJ0ZV9jcnlwdG9fb3AgKikodWludHB0cl90KQotCQkJKHJlc3BfbXNnLT5vcGFx dWUpOwotCXN0cnVjdCBxYXRfYXN5bV9vcF9jb29raWUgKmNvb2tpZSA9IG9wX2Nvb2tpZTsKLQot CWlmIChjb29raWUtPmVycm9yKSB7Ci0JCWNvb2tpZS0+ZXJyb3IgPSAwOwotCQlpZiAocnhfb3At PnN0YXR1cyA9PSBSVEVfQ1JZUFRPX09QX1NUQVRVU19OT1RfUFJPQ0VTU0VEKQotCQkJcnhfb3At PnN0YXR1cyA9IFJURV9DUllQVE9fT1BfU1RBVFVTX0VSUk9SOwotCQlRQVRfRFBfTE9HKEVSUiwg IkNvb2tpZSBzdGF0dXMgcmV0dXJuZWQgZXJyb3IiKTsKLQl9IGVsc2UgewotCQlpZiAoSUNQX1FB VF9GV19QS0VfUkVTUF9QS0VfU1RBVF9HRVQoCi0JCQlyZXNwX21zZy0+cGtlX3Jlc3BfaGRyLnJl c3Bfc3RhdHVzLnBrZV9yZXNwX2ZsYWdzKSkgewotCQkJaWYgKHJ4X29wLT5zdGF0dXMgPT0gUlRF X0NSWVBUT19PUF9TVEFUVVNfTk9UX1BST0NFU1NFRCkKLQkJCQlyeF9vcC0+c3RhdHVzID0gUlRF X0NSWVBUT19PUF9TVEFUVVNfRVJST1I7Ci0JCQlRQVRfRFBfTE9HKEVSUiwgIkFzeW1tZXRyaWMg cmVzcG9uc2Ugc3RhdHVzIgotCQkJCQkiIHJldHVybmVkIGVycm9yIik7Ci0JCX0KLQkJaWYgKHJl c3BfbXNnLT5wa2VfcmVzcF9oZHIucmVzcF9zdGF0dXMuY29tbl9lcnJfY29kZSkgewotCQkJaWYg KHJ4X29wLT5zdGF0dXMgPT0gUlRFX0NSWVBUT19PUF9TVEFUVVNfTk9UX1BST0NFU1NFRCkKLQkJ CQlyeF9vcC0+c3RhdHVzID0gUlRFX0NSWVBUT19PUF9TVEFUVVNfRVJST1I7Ci0JCQlRQVRfRFBf TE9HKEVSUiwgIkFzeW1tZXRyaWMgY29tbW9uIHN0YXR1cyIKLQkJCQkJIiByZXR1cm5lZCBlcnJv ciIpOwotCQl9Ci0JfQotCi0JaWYgKHJ4X29wLT5zZXNzX3R5cGUgPT0gUlRFX0NSWVBUT19PUF9X SVRIX1NFU1NJT04pIHsKLQkJY3R4ID0gKHN0cnVjdCBxYXRfYXN5bV9zZXNzaW9uICopZ2V0X2Fz eW1fc2Vzc2lvbl9wcml2YXRlX2RhdGEoCi0JCQlyeF9vcC0+YXN5bS0+c2Vzc2lvbiwgcWF0X2Fz eW1fZHJpdmVyX2lkKTsKLQkJcWF0X2FzeW1fY29sbGVjdF9yZXNwb25zZShyeF9vcCwgY29va2ll LCBjdHgtPnhmb3JtKTsKLQl9IGVsc2UgaWYgKHJ4X29wLT5zZXNzX3R5cGUgPT0gUlRFX0NSWVBU T19PUF9TRVNTSU9OTEVTUykgewotCQlxYXRfYXN5bV9jb2xsZWN0X3Jlc3BvbnNlKHJ4X29wLCBj b29raWUsIHJ4X29wLT5hc3ltLT54Zm9ybSk7Ci0JfQotCSpvcCA9IHJ4X29wOwotCi0jaWYgUlRF X0xPR19EUF9MRVZFTCA+PSBSVEVfTE9HX0RFQlVHCi0JUUFUX0RQX0hFWERVTVBfTE9HKERFQlVH LCAicmVzcF9tc2c6IiwgcmVzcF9tc2csCi0JCQlzaXplb2Yoc3RydWN0IGljcF9xYXRfZndfcGtl X3Jlc3ApKTsKLSNlbmRpZgotfQotCi1pbnQKLXFhdF9hc3ltX3Nlc3Npb25fY29uZmlndXJlKHN0 cnVjdCBydGVfY3J5cHRvZGV2ICpkZXYsCi0JCXN0cnVjdCBydGVfY3J5cHRvX2FzeW1feGZvcm0g Knhmb3JtLAotCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3MsCi0JCXN0 cnVjdCBydGVfbWVtcG9vbCAqbWVtcG9vbCkKLXsKLQlpbnQgZXJyID0gMDsKLQl2b2lkICpzZXNz X3ByaXZhdGVfZGF0YTsKLQlzdHJ1Y3QgcWF0X2FzeW1fc2Vzc2lvbiAqc2Vzc2lvbjsKLQotCWlm IChydGVfbWVtcG9vbF9nZXQobWVtcG9vbCwgJnNlc3NfcHJpdmF0ZV9kYXRhKSkgewotCQlRQVRf TE9HKEVSUiwKLQkJCSJDb3VsZG4ndCBnZXQgb2JqZWN0IGZyb20gc2Vzc2lvbiBtZW1wb29sIik7 Ci0JCXJldHVybiAtRU5PTUVNOwotCX0KLQotCXNlc3Npb24gPSBzZXNzX3ByaXZhdGVfZGF0YTsK LQlpZiAoeGZvcm0tPnhmb3JtX3R5cGUgPT0gUlRFX0NSWVBUT19BU1lNX1hGT1JNX01PREVYKSB7 Ci0JCWlmICh4Zm9ybS0+bW9kZXguZXhwb25lbnQubGVuZ3RoID09IDAgfHwKLQkJCQl4Zm9ybS0+ bW9kZXgubW9kdWx1cy5sZW5ndGggPT0gMCkgewotCQkJUUFUX0xPRyhFUlIsICJJbnZhbGlkIG1v ZCBleHAgaW5wdXQgcGFyYW1ldGVyIik7Ci0JCQllcnIgPSAtRUlOVkFMOwotCQkJZ290byBlcnJv cjsKLQkJfQotCX0gZWxzZSBpZiAoeGZvcm0tPnhmb3JtX3R5cGUgPT0gUlRFX0NSWVBUT19BU1lN X1hGT1JNX01PRElOVikgewotCQlpZiAoeGZvcm0tPm1vZGludi5tb2R1bHVzLmxlbmd0aCA9PSAw KSB7Ci0JCQlRQVRfTE9HKEVSUiwgIkludmFsaWQgbW9kIGludiBpbnB1dCBwYXJhbWV0ZXIiKTsK LQkJCWVyciA9IC1FSU5WQUw7Ci0JCQlnb3RvIGVycm9yOwotCQl9Ci0JfSBlbHNlIGlmICh4Zm9y bS0+eGZvcm1fdHlwZSA9PSBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fUlNBKSB7Ci0JCWlmICh4Zm9y bS0+cnNhLm4ubGVuZ3RoID09IDApIHsKLQkJCVFBVF9MT0coRVJSLCAiSW52YWxpZCByc2EgaW5w dXQgcGFyYW1ldGVyIik7Ci0JCQllcnIgPSAtRUlOVkFMOwotCQkJZ290byBlcnJvcjsKLQkJfQot CX0gZWxzZSBpZiAoeGZvcm0tPnhmb3JtX3R5cGUgPj0gUlRFX0NSWVBUT19BU1lNX1hGT1JNX1RZ UEVfTElTVF9FTkQKLQkJCXx8IHhmb3JtLT54Zm9ybV90eXBlIDw9IFJURV9DUllQVE9fQVNZTV9Y Rk9STV9OT05FKSB7Ci0JCVFBVF9MT0coRVJSLCAiSW52YWxpZCBhc3ltbWV0cmljIGNyeXB0byB4 Zm9ybSIpOwotCQllcnIgPSAtRUlOVkFMOwotCQlnb3RvIGVycm9yOwotCX0gZWxzZSB7Ci0JCVFB VF9MT0coRVJSLCAiQXN5bW1ldHJpYyBjcnlwdG8geGZvcm0gbm90IGltcGxlbWVudGVkIik7Ci0J CWVyciA9IC1FSU5WQUw7Ci0JCWdvdG8gZXJyb3I7Ci0JfQotCi0Jc2Vzc2lvbi0+eGZvcm0gPSB4 Zm9ybTsKLQlxYXRfYXN5bV9idWlsZF9yZXFfdG1wbChzZXNzX3ByaXZhdGVfZGF0YSk7Ci0Jc2V0 X2FzeW1fc2Vzc2lvbl9wcml2YXRlX2RhdGEoc2VzcywgZGV2LT5kcml2ZXJfaWQsCi0JCXNlc3Nf cHJpdmF0ZV9kYXRhKTsKLQotCXJldHVybiAwOwotZXJyb3I6Ci0JcnRlX21lbXBvb2xfcHV0KG1l bXBvb2wsIHNlc3NfcHJpdmF0ZV9kYXRhKTsKLQlyZXR1cm4gZXJyOwotfQotCi11bnNpZ25lZCBp bnQgcWF0X2FzeW1fc2Vzc2lvbl9nZXRfcHJpdmF0ZV9zaXplKAotCQlzdHJ1Y3QgcnRlX2NyeXB0 b2RldiAqZGV2IF9fcnRlX3VudXNlZCkKLXsKLQlyZXR1cm4gUlRFX0FMSUdOX0NFSUwoc2l6ZW9m KHN0cnVjdCBxYXRfYXN5bV9zZXNzaW9uKSwgOCk7Ci19Ci0KLXZvaWQKLXFhdF9hc3ltX3Nlc3Np b25fY2xlYXIoc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldiwKLQkJc3RydWN0IHJ0ZV9jcnlwdG9k ZXZfYXN5bV9zZXNzaW9uICpzZXNzKQotewotCXVpbnQ4X3QgaW5kZXggPSBkZXYtPmRyaXZlcl9p ZDsKLQl2b2lkICpzZXNzX3ByaXYgPSBnZXRfYXN5bV9zZXNzaW9uX3ByaXZhdGVfZGF0YShzZXNz LCBpbmRleCk7Ci0Jc3RydWN0IHFhdF9hc3ltX3Nlc3Npb24gKnMgPSAoc3RydWN0IHFhdF9hc3lt X3Nlc3Npb24gKilzZXNzX3ByaXY7Ci0KLQlpZiAoc2Vzc19wcml2KSB7Ci0JCW1lbXNldChzLCAw LCBxYXRfYXN5bV9zZXNzaW9uX2dldF9wcml2YXRlX3NpemUoZGV2KSk7Ci0JCXN0cnVjdCBydGVf bWVtcG9vbCAqc2Vzc19tcCA9IHJ0ZV9tZW1wb29sX2Zyb21fb2JqKHNlc3NfcHJpdik7Ci0KLQkJ c2V0X2FzeW1fc2Vzc2lvbl9wcml2YXRlX2RhdGEoc2VzcywgaW5kZXgsIE5VTEwpOwotCQlydGVf bWVtcG9vbF9wdXQoc2Vzc19tcCwgc2Vzc19wcml2KTsKLQl9Ci19CitzdGF0aWMgc3RydWN0IGNy eXB0b2Rldl9kcml2ZXIgcWF0X2NyeXB0b19kcnY7CitSVEVfUE1EX1JFR0lTVEVSX0NSWVBUT19E UklWRVIocWF0X2NyeXB0b19kcnYsCisJCWNyeXB0b2Rldl9xYXRfYXN5bV9kcml2ZXIsCisJCXFh dF9hc3ltX2RyaXZlcl9pZCk7CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvY29tbW9uL3FhdC9tZXNv bi5idWlsZC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKZW5kaWYKCmlmIHFhdF9jcnlw dG8KICAgIGZvcmVhY2ggZjogWydxYXRfc3ltX3BtZC5jJywgJ3FhdF9zeW0uYycsICdxYXRfc3lt X3Nlc3Npb24uYycsCiAgICAgICAgICAgICdxYXRfc3ltX2h3X2RwLmMnLCAncWF0X2FzeW1fcG1k LmMnLCAncWF0X2FzeW0uYycsICdxYXRfY3J5cHRvLmMnLAoJICAgICdkZXYvcWF0X3N5bV9wbWRf Z2VuMS5jJywKICAgICAgICAgICAgJ2Rldi9xYXRfYXN5bV9wbWRfZ2VuMS5jJywKCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGRyaXZlcnMvY29tbW9uL3FhdC9tZXNvbi5idWlsZDo3MApDaGVja2luZyBw YXRjaCBkcml2ZXJzL2NvbW1vbi9xYXQvcWF0X2RldmljZS5jLi4uCkNoZWNraW5nIHBhdGNoIGRy aXZlcnMvY29tbW9uL3FhdC9xYXRfcXAuYy4uLgplcnJvcjogZHJpdmVycy9jb21tb24vcWF0L3Fh dF9xcC5jOiBkb2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL2NyeXB0 by9xYXQvcWF0X3N5bS5jLi4uCmVycm9yOiBkcml2ZXJzL2NyeXB0by9xYXQvcWF0X3N5bS5jOiBk b2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL2NyeXB0by9xYXQvcWF0 X3N5bS5oLi4uCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfc3ltX2h3X2Rw LmMuLi4KQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9jcnlwdG8vcWF0L3FhdF9zeW1fcG1kLmMuLi4K ZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfc3ltX3BtZC5jOiBkb2VzIG5vdCBtYXRjaCBp bmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL2NyeXB0by9xYXQvcWF0X3N5bV9wbWQuaC4uLgpl cnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0zLUNsYXVzZQogKiBDb3B5cmlnaHQoYykgMjAxNS0yMDE4IEludGVsIENvcnBvcmF0aW9uCiAq LwoKI2lmbmRlZiBfUUFUX1NZTV9QTURfSF8KI2RlZmluZSBfUUFUX1NZTV9QTURfSF8KCiNpZmRl ZiBCVUlMRF9RQVRfU1lNCgojaW5jbHVkZSA8cnRlX2V0aGVyLmg+CiNpbmNsdWRlIDxydGVfY3J5 cHRvZGV2Lmg+CiNpZmRlZiBSVEVfTElCX1NFQ1VSSVRZCiNpbmNsdWRlIDxydGVfc2VjdXJpdHku aD4KI2VuZGlmCgojaW5jbHVkZSAicWF0X2NyeXB0by5oIgojaW5jbHVkZSAicWF0X2RldmljZS5o IgoKLyoqIEludGVsKFIpIFFBVCBTeW1tZXRyaWMgQ3J5cHRvIFBNRCBkcml2ZXIgbmFtZSAqLwoj ZGVmaW5lIENSWVBUT0RFVl9OQU1FX1FBVF9TWU1fUE1ECWNyeXB0b19xYXQKCi8qIEludGVybmFs IGNhcGFiaWxpdGllcyAqLwojZGVmaW5lIFFBVF9TWU1fQ0FQX01JWEVEX0NSWVBUTwkoMSA8PCAw KQojZGVmaW5lIFFBVF9TWU1fQ0FQX1ZBTElECQkoMSA8PCAzMSkKCi8qKgogKiBNYWNybyB0byBh ZGQgYSBzeW0gY2FwYWJpbGl0eQogKiBoZWxwZXIgZnVuY3Rpb24gdG8gYWRkIGFuIHN5bSBjYXBh YmlsaXR5CiAqIDxuOiBuYW1lPiA8YjogYmxvY2sgc2l6ZT4gPGs6IGtleSBzaXplPiA8ZDogZGln ZXN0IHNpemU+CiAqIDxhOiBhYWRfc2l6ZT4gPGk6IGl2X3NpemU+CiAqKi8KI2RlZmluZSBRQVRf U1lNX1BMQUlOX0FVVEhfQ0FQKG4sIGIsIGQpCQkJCQlcCgl7CQkJCQkJCQlcCgkJLm9wID0gUlRF X0NSWVBUT19PUF9UWVBFX1NZTU1FVFJJQywJCQlcCgkJey5zeW0gPSB7CQkJCQkJXAoJCQkueGZv cm1fdHlwZSA9IFJURV9DUllQVE9fU1lNX1hGT1JNX0FVVEgsCVwKCQkJey5hdXRoID0gewkJCQkJ XAoJCQkJLmFsZ28gPSBSVEVfQ1JZUFRPX0FVVEhfIyNuLAkJXAoJCQkJYiwgZAkJCQkJXAoJCQl9 LCB9CQkJCQkJXAoJCX0sIH0JCQkJCQkJXAoJfQoKI2RlZmluZSBRQVRfU1lNX0FVVEhfQ0FQKG4s IGIsIGssIGQsIGEsIGkpCQkJCVwKCXsJCQkJCQkJCVwKCQkub3AgPSBSVEVfQ1JZUFRPX09QX1RZ UEVfU1lNTUVUUklDLAkJCVwKCQl7LnN5bSA9IHsJCQkJCQlcCgkJCS54Zm9ybV90eXBlID0gUlRF X0NSWVBUT19TWU1fWEZPUk1fQVVUSCwJXAoJCQl7LmF1dGggPSB7CQkJCQlcCgkJCQkuYWxnbyA9 IFJURV9DUllQVE9fQVVUSF8jI24sCQlcCgkJCQliLCBrLCBkLCBhLCBpCQkJCVwKCQkJfSwgfQkJ CQkJCVwKCQl9LCB9CQkJCQkJCVwKCX0KCiNkZWZpbmUgUUFUX1NZTV9BRUFEX0NBUChuLCBiLCBr LCBkLCBhLCBpKQkJCQlcCgl7CQkJCQkJCQlcCgkJLm9wID0gUlRFX0NSWVBUT19PUF9UWVBFX1NZ TU1FVFJJQywJCQlcCgkJey5zeW0gPSB7CQkJCQkJXAoJCQkueGZvcm1fdHlwZSA9IFJURV9DUllQ VE9fU1lNX1hGT1JNX0FFQUQsCVwKCQkJey5hZWFkID0gewkJCQkJXAoJCQkJLmFsZ28gPSBSVEVf Q1JZUFRPX0FFQURfIyNuLAkJXAoJCQkJYiwgaywgZCwgYSwgaQkJCQlcCgkJCX0sIH0JCQkJCQlc CgkJfSwgfQkJCQkJCQlcCgl9CgojZGVmaW5lIFFBVF9TWU1fQ0lQSEVSX0NBUChuLCBiLCBrLCBp KQkJCQkJXAoJewkJCQkJCQkJXAoJCS5vcCA9IFJURV9DUllQVE9fT1BfVFlQRV9TWU1NRVRSSUMs CQkJXAoJCXsuc3ltID0gewkJCQkJCVwKCQkJLnhmb3JtX3R5cGUgPSBSVEVfQ1JZUFRPX1NZTV9Y Rk9STV9DSVBIRVIsCVwKCQkJey5jaXBoZXIgPSB7CQkJCQlcCgkJCQkuYWxnbyA9IFJURV9DUllQ VE9fQ0lQSEVSXyMjbiwJCVwKCQkJCWIsIGssIGkJCQkJCVwKCQkJfSwgfQkJCQkJCVwKCQl9LCB9 CQkJCQkJCVwKCX0KCmV4dGVybiB1aW50OF90IHFhdF9zeW1fZHJpdmVyX2lkOwoKZXh0ZXJuIHN0 cnVjdCBxYXRfY3J5cHRvX2dlbl9kZXZfb3BzIHFhdF9zeW1fZ2VuX2Rldl9vcHNbXTsKCmludApx YXRfc3ltX2Rldl9jcmVhdGUoc3RydWN0IHFhdF9wY2lfZGV2aWNlICpxYXRfcGNpX2RldiwKCQlz dHJ1Y3QgcWF0X2Rldl9jbWRfcGFyYW0gKnFhdF9kZXZfY21kX3BhcmFtKTsKCmludApxYXRfc3lt X2Rldl9kZXN0cm95KHN0cnVjdCBxYXRfcGNpX2RldmljZSAqcWF0X3BjaV9kZXYpOwoKdm9pZApx YXRfc3ltX2luaXRfb3BfY29va2llKHZvaWQgKm9wX2Nvb2tpZSk7CgojZW5kaWYKI2VuZGlmIC8q IF9RQVRfU1lNX1BNRF9IXyAqLwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9jcnlwdG8v cWF0L3FhdF9zeW1fcG1kLmg6MQplcnJvcjogcmVtb3ZhbCBwYXRjaCBsZWF2ZXMgZmlsZSBjb250 ZW50cwplcnJvcjogZHJpdmVycy9jcnlwdG8vcWF0L3FhdF9zeW1fcG1kLmg6IHBhdGNoIGRvZXMg bm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfc3ltX3Nlc3Np b24uYy4uLgplcnJvcjogZHJpdmVycy9jcnlwdG8vcWF0L3FhdF9zeW1fc2Vzc2lvbi5jOiBkb2Vz IG5vdCBtYXRjaCBpbmRleApBcHBseWluZyBwYXRjaCBkcml2ZXJzL2NvbW1vbi9xYXQvbWVzb24u YnVpbGQgd2l0aCAxIHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpBcHBsaWVkIHBhdGNoIGRy aXZlcnMvY29tbW9uL3FhdC9xYXRfZGV2aWNlLmMgY2xlYW5seS4KQXBwbGllZCBwYXRjaCBkcml2 ZXJzL2NyeXB0by9xYXQvcWF0X3N5bS5oIGNsZWFubHkuCkFwcGxpZWQgcGF0Y2ggZHJpdmVycy9j cnlwdG8vcWF0L3FhdF9zeW1faHdfZHAuYyBjbGVhbmx5LgpkaWZmIGEvZHJpdmVycy9jb21tb24v cWF0L21lc29uLmJ1aWxkIGIvZHJpdmVycy9jb21tb24vcWF0L21lc29uLmJ1aWxkCShyZWplY3Rl ZCBodW5rcykKQEAgLTcwLDcgKzcwLDcgQEAgaWYgcWF0X2NvbXByZXNzCiBlbmRpZgogCiBpZiBx YXRfY3J5cHRvCi0gICAgZm9yZWFjaCBmOiBbJ3FhdF9zeW1fcG1kLmMnLCAncWF0X3N5bS5jJywg J3FhdF9zeW1fc2Vzc2lvbi5jJywKKyAgICBmb3JlYWNoIGY6IFsncWF0X3N5bS5jJywgJ3FhdF9z eW1fc2Vzc2lvbi5jJywKICAgICAgICAgICAgICdxYXRfc3ltX2h3X2RwLmMnLCAncWF0X2FzeW1f cG1kLmMnLCAncWF0X2FzeW0uYycsICdxYXRfY3J5cHRvLmMnLAogCSAgICAnZGV2L3FhdF9zeW1f cG1kX2dlbjEuYycsCiAgICAgICAgICAgICAnZGV2L3FhdF9hc3ltX3BtZF9nZW4xLmMnLApDaGVj a2luZyBwYXRjaCBkcml2ZXJzL2NvbW1vbi9xYXQvbWVzb24uYnVpbGQuLi4KZXJyb3I6IHdoaWxl IHNlYXJjaGluZyBmb3I6CgppZiBxYXRfY3J5cHRvCiAgICBmb3JlYWNoIGY6IFsncWF0X3N5bS5j JywgJ3FhdF9zeW1fc2Vzc2lvbi5jJywKICAgICAgICAgICAgJ3FhdF9zeW1faHdfZHAuYycsICdx YXRfYXN5bV9wbWQuYycsICdxYXRfYXN5bS5jJywgJ3FhdF9jcnlwdG8uYycsCgkgICAgJ2Rldi9x YXRfc3ltX3BtZF9nZW4xLmMnLAogICAgICAgICAgICAnZGV2L3FhdF9hc3ltX3BtZF9nZW4xLmMn LAogICAgICAgICAgICAnZGV2L3FhdF9jcnlwdG9fcG1kX2dlbjIuYycsCgplcnJvcjogcGF0Y2gg ZmFpbGVkOiBkcml2ZXJzL2NvbW1vbi9xYXQvbWVzb24uYnVpbGQ6NzEKQ2hlY2tpbmcgcGF0Y2gg ZHJpdmVycy9jcnlwdG8vcWF0L3FhdF9hc3ltLmMuLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3Fh dC9xYXRfYXN5bS5jOiBkb2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJz L2NyeXB0by9xYXQvcWF0X2FzeW1fcG1kLmMuLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3FhdC9x YXRfYXN5bV9wbWQuYzogZG9lcyBub3QgbWF0Y2ggaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVy cy9jcnlwdG8vcWF0L3FhdF9hc3ltX3BtZC5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9y OgovKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAqIENvcHlyaWdodChj KSAyMDE5IEludGVsIENvcnBvcmF0aW9uCiAqLwoKCiNpZm5kZWYgX1FBVF9BU1lNX1BNRF9IXwoj ZGVmaW5lIF9RQVRfQVNZTV9QTURfSF8KCiNpbmNsdWRlIDxydGVfY3J5cHRvZGV2Lmg+CiNpbmNs dWRlICJxYXRfY3J5cHRvLmgiCiNpbmNsdWRlICJxYXRfZGV2aWNlLmgiCgovKiogSW50ZWwoUikg UUFUIEFzeW1tZXRyaWMgQ3J5cHRvIFBNRCBkcml2ZXIgbmFtZSAqLwojZGVmaW5lIENSWVBUT0RF Vl9OQU1FX1FBVF9BU1lNX1BNRAljcnlwdG9fcWF0X2FzeW0KCgovKioKICogSGVscGVyIGZ1bmN0 aW9uIHRvIGFkZCBhbiBhc3ltIGNhcGFiaWxpdHkKICogPG5hbWU+IDxvcCB0eXBlPiA8bW9kbGVu IChtaW4sIG1heCwgaW5jcmVtZW50KT4KICoqLwojZGVmaW5lIFFBVF9BU1lNX0NBUChuLCBvLCBs LCByLCBpKQkJCQkJXAoJewkJCQkJCQkJXAoJCS5vcCA9IFJURV9DUllQVE9fT1BfVFlQRV9BU1lN TUVUUklDLAkJCVwKCQl7LmFzeW0gPSB7CQkJCQkJXAoJCQkueGZvcm1fY2FwYSA9IHsJCQkJCVwK CQkJCS54Zm9ybV90eXBlID0gUlRFX0NSWVBUT19BU1lNX1hGT1JNXyMjbixcCgkJCQkub3BfdHlw ZXMgPSBvLAkJCQlcCgkJCQl7CQkJCQlcCgkJCQkubW9kbGVuID0gewkJCQlcCgkJCQkubWluID0g bCwJCQkJXAoJCQkJLm1heCA9IHIsCQkJCVwKCQkJCS5pbmNyZW1lbnQgPSBpCQkJCVwKCQkJCX0s IH0JCQkJCVwKCQkJfQkJCQkJCVwKCQl9LAkJCQkJCQlcCgkJfQkJCQkJCQlcCgl9CgpleHRlcm4g dWludDhfdCBxYXRfYXN5bV9kcml2ZXJfaWQ7CgpleHRlcm4gc3RydWN0IHFhdF9jcnlwdG9fZ2Vu X2Rldl9vcHMgcWF0X2FzeW1fZ2VuX2Rldl9vcHNbXTsKCnZvaWQKcWF0X2FzeW1faW5pdF9vcF9j b29raWUodm9pZCAqb3BfY29va2llKTsKCnVpbnQxNl90CnFhdF9hc3ltX3BtZF9lbnF1ZXVlX29w X2J1cnN0KHZvaWQgKnFwLCBzdHJ1Y3QgcnRlX2NyeXB0b19vcCAqKm9wcywKCQkJICAgICAgdWlu dDE2X3QgbmJfb3BzKTsKCnVpbnQxNl90CnFhdF9hc3ltX3BtZF9kZXF1ZXVlX29wX2J1cnN0KHZv aWQgKnFwLCBzdHJ1Y3QgcnRlX2NyeXB0b19vcCAqKm9wcywKCQkJICAgICAgdWludDE2X3QgbmJf b3BzKTsKCiNlbmRpZiAvKiBfUUFUX0FTWU1fUE1EX0hfICovCgplcnJvcjogcGF0Y2ggZmFpbGVk OiBkcml2ZXJzL2NyeXB0by9xYXQvcWF0X2FzeW1fcG1kLmg6MQplcnJvcjogcmVtb3ZhbCBwYXRj aCBsZWF2ZXMgZmlsZSBjb250ZW50cwplcnJvcjogZHJpdmVycy9jcnlwdG8vcWF0L3FhdF9hc3lt X3BtZC5oOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpBcHBseWluZyBwYXRjaCBkcml2ZXJzL2NvbW1v bi9xYXQvbWVzb24uYnVpbGQgd2l0aCAxIHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpkaWZm IGEvZHJpdmVycy9jb21tb24vcWF0L21lc29uLmJ1aWxkIGIvZHJpdmVycy9jb21tb24vcWF0L21l c29uLmJ1aWxkCShyZWplY3RlZCBodW5rcykKQEAgLTcxLDcgKzcxLDcgQEAgZW5kaWYKIAogaWYg cWF0X2NyeXB0bwogICAgIGZvcmVhY2ggZjogWydxYXRfc3ltLmMnLCAncWF0X3N5bV9zZXNzaW9u LmMnLAotICAgICAgICAgICAgJ3FhdF9zeW1faHdfZHAuYycsICdxYXRfYXN5bV9wbWQuYycsICdx YXRfYXN5bS5jJywgJ3FhdF9jcnlwdG8uYycsCisgICAgICAgICAgICAncWF0X3N5bV9od19kcC5j JywgJ3FhdF9hc3ltLmMnLCAncWF0X2NyeXB0by5jJywKIAkgICAgJ2Rldi9xYXRfc3ltX3BtZF9n ZW4xLmMnLAogICAgICAgICAgICAgJ2Rldi9xYXRfYXN5bV9wbWRfZ2VuMS5jJywKICAgICAgICAg ICAgICdkZXYvcWF0X2NyeXB0b19wbWRfZ2VuMi5jJywKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9j b21tb24vcWF0L3FhdF9xcC5jLi4uCmVycm9yOiBkcml2ZXJzL2NvbW1vbi9xYXQvcWF0X3FwLmM6 IGRvZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvY29tbW9uL3FhdC9x YXRfcXAuaC4uLgplcnJvcjogZHJpdmVycy9jb21tb24vcWF0L3FhdF9xcC5oOiBkb2VzIG5vdCBt YXRjaCBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL2NyeXB0by9xYXQvZGV2L3FhdF9jcnlw dG9fcG1kX2dlbjIuYy4uLgplcnJvcjogZHJpdmVycy9jcnlwdG8vcWF0L2Rldi9xYXRfY3J5cHRv X3BtZF9nZW4yLmM6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZl cnMvY3J5cHRvL3FhdC9kZXYvcWF0X3N5bV9wbWRfZ2VuMS5jLi4uCmVycm9yOiBkcml2ZXJzL2Ny eXB0by9xYXQvZGV2L3FhdF9zeW1fcG1kX2dlbjEuYzogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgK Q2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9jcnlwdG8vcWF0L3FhdF9hc3ltLmMuLi4KZXJyb3I6IGRy aXZlcnMvY3J5cHRvL3FhdC9xYXRfYXN5bS5jOiBkb2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2lu ZyBwYXRjaCBkcml2ZXJzL2NyeXB0by9xYXQvcWF0X2FzeW0uaC4uLgplcnJvcjogZHJpdmVycy9j cnlwdG8vcWF0L3FhdF9hc3ltLmg6IGRvZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNo IGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfY3J5cHRvLmguLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRv L3FhdC9xYXRfY3J5cHRvLmg6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBhdGNo IGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfc3ltLmMuLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3Fh dC9xYXRfc3ltLmM6IGRvZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv Y3J5cHRvL3FhdC9xYXRfc3ltLmguLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfc3lt Lmg6IGRvZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvY3J5cHRvL3Fh dC9xYXRfc3ltX3Nlc3Npb24uYy4uLgplcnJvcjogZHJpdmVycy9jcnlwdG8vcWF0L3FhdF9zeW1f c2Vzc2lvbi5jOiBkb2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL2Ny eXB0by9xYXQvcWF0X3N5bV9zZXNzaW9uLmguLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3FhdC9x YXRfc3ltX3Nlc3Npb24uaDogZG9lcyBub3QgbWF0Y2ggaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJp dmVycy9jb21wcmVzcy9xYXQvcWF0X2NvbXBfcG1kLmMuLi4KZXJyb3I6IGRyaXZlcnMvY29tcHJl c3MvcWF0L3FhdF9jb21wX3BtZC5jOiBkb2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRj aCBkcml2ZXJzL2NvbW1vbi9xYXQvbWVzb24uYnVpbGQuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGlu ZyBmb3I6CgppZiBxYXRfY3J5cHRvCiAgICBmb3JlYWNoIGY6IFsncWF0X3N5bS5jJywgJ3FhdF9z eW1fc2Vzc2lvbi5jJywKICAgICAgICAgICAgJ3FhdF9zeW1faHdfZHAuYycsICdxYXRfYXN5bS5j JywgJ3FhdF9jcnlwdG8uYycsCgkgICAgJ2Rldi9xYXRfc3ltX3BtZF9nZW4xLmMnLAogICAgICAg ICAgICAnZGV2L3FhdF9hc3ltX3BtZF9nZW4xLmMnLAogICAgICAgICAgICAnZGV2L3FhdF9jcnlw dG9fcG1kX2dlbjIuYycsCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL2NvbW1vbi9xYXQv bWVzb24uYnVpbGQ6NzEKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9jcnlwdG8vcWF0L2Rldi9xYXRf Y3J5cHRvX3BtZF9nZW4yLmMuLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3FhdC9kZXYvcWF0X2Ny eXB0b19wbWRfZ2VuMi5jOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleApDaGVja2luZyBwYXRjaCBk cml2ZXJzL2NyeXB0by9xYXQvZGV2L3FhdF9jcnlwdG9fcG1kX2dlbjMuYy4uLgplcnJvcjogZHJp dmVycy9jcnlwdG8vcWF0L2Rldi9xYXRfY3J5cHRvX3BtZF9nZW4zLmM6IGRvZXMgbm90IGV4aXN0 IGluIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvY3J5cHRvL3FhdC9kZXYvcWF0X2NyeXB0 b19wbWRfZ2VuNC5jLi4uCmVycm9yOiBkcml2ZXJzL2NyeXB0by9xYXQvZGV2L3FhdF9jcnlwdG9f cG1kX2dlbjQuYzogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVy cy9jcnlwdG8vcWF0L2Rldi9xYXRfY3J5cHRvX3BtZF9nZW5zLmguLi4KZXJyb3I6IGRyaXZlcnMv Y3J5cHRvL3FhdC9kZXYvcWF0X2NyeXB0b19wbWRfZ2Vucy5oOiBkb2VzIG5vdCBleGlzdCBpbiBp bmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL2NyeXB0by9xYXQvZGV2L3FhdF9zeW1fcG1kX2dl bjEuYy4uLgplcnJvcjogZHJpdmVycy9jcnlwdG8vcWF0L2Rldi9xYXRfc3ltX3BtZF9nZW4xLmM6 IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvY3J5cHRvL3Fh dC9xYXRfY3J5cHRvLmguLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfY3J5cHRvLmg6 IGRvZXMgbm90IGV4aXN0IGluIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvY3J5cHRvL3Fh dC9xYXRfc3ltLmMuLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfc3ltLmM6IGRvZXMg bm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfc3lt X2h3X2RwLmMuLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3FhdC9xYXRfc3ltX2h3X2RwLmM6IGRv ZXMgbm90IG1hdGNoIGluZGV4CkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMvY29tbW9uL3FhdC9tZXNv bi5idWlsZCB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEuCmRpZmYgYS9kcml2ZXJz L2NvbW1vbi9xYXQvbWVzb24uYnVpbGQgYi9kcml2ZXJzL2NvbW1vbi9xYXQvbWVzb24uYnVpbGQJ KHJlamVjdGVkIGh1bmtzKQpAQCAtNzEsNyArNzEsNyBAQCBlbmRpZgogCiBpZiBxYXRfY3J5cHRv CiAgICAgZm9yZWFjaCBmOiBbJ3FhdF9zeW0uYycsICdxYXRfc3ltX3Nlc3Npb24uYycsCi0gICAg ICAgICAgICAncWF0X3N5bV9od19kcC5jJywgJ3FhdF9hc3ltLmMnLCAncWF0X2NyeXB0by5jJywK KyAgICAgICAgICAgICdxYXRfYXN5bS5jJywgJ3FhdF9jcnlwdG8uYycsCiAJICAgICdkZXYvcWF0 X3N5bV9wbWRfZ2VuMS5jJywKICAgICAgICAgICAgICdkZXYvcWF0X2FzeW1fcG1kX2dlbjEuYycs CiAgICAgICAgICAgICAnZGV2L3FhdF9jcnlwdG9fcG1kX2dlbjIuYycsCkNoZWNraW5nIHBhdGNo IGRyaXZlcnMvY3J5cHRvL3FhdC9kZXYvcWF0X2NyeXB0b19wbWRfZ2VuMy5jLi4uCmVycm9yOiBk cml2ZXJzL2NyeXB0by9xYXQvZGV2L3FhdF9jcnlwdG9fcG1kX2dlbjMuYzogZG9lcyBub3QgZXhp c3QgaW4gaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9jcnlwdG8vcWF0L2Rldi9xYXRfY3J5 cHRvX3BtZF9nZW40LmMuLi4KZXJyb3I6IGRyaXZlcnMvY3J5cHRvL3FhdC9kZXYvcWF0X2NyeXB0 b19wbWRfZ2VuNC5jOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleApDaGVja2luZyBwYXRjaCBkcml2 ZXJzL2NyeXB0by9xYXQvZGV2L3FhdF9zeW1fcG1kX2dlbjEuYy4uLgplcnJvcjogZHJpdmVycy9j cnlwdG8vcWF0L2Rldi9xYXRfc3ltX3BtZF9nZW4xLmM6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4 CkNoZWNraW5nIHBhdGNoIGFwcC90ZXN0L3Rlc3RfY3J5cHRvZGV2LmMuLi4KZXJyb3I6IHdoaWxl IHNlYXJjaGluZyBmb3I6CglpbnQgZW5xdWV1ZV9zdGF0dXMsIGRlcXVldWVfc3RhdHVzOwoJc3Ry dWN0IGNyeXB0b191bml0dGVzdF9wYXJhbXMgKnV0X3BhcmFtcyA9ICZ1bml0dGVzdF9wYXJhbXM7 CglpbnQgaXNfc2dsID0gc29wLT5tX3NyYy0+bmJfc2VncyA+IDE7CgoJY3R4X3NlcnZpY2Vfc2l6 ZSA9IHJ0ZV9jcnlwdG9kZXZfZ2V0X3Jhd19kcF9jdHhfc2l6ZShkZXZfaWQpOwoJaWYgKGN0eF9z ZXJ2aWNlX3NpemUgPCAwKSB7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBhcHAvdGVzdC90ZXN0X2Ny eXB0b2Rldi5jOjIwOQpIdW5rICMyIHN1Y2NlZWRlZCBhdCAyNDAgKG9mZnNldCAtOCBsaW5lcyku CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCWlmIChpc19zZ2wpIHsKCQkJdWludDMyX3Qg cmVtYWluaW5nX29mZiA9IGF1dGhfb2Zmc2V0ICsgYXV0aF9sZW47CgkJCXN0cnVjdCBydGVfbWJ1 ZiAqc2dsX2J1ZiA9IHNvcC0+bV9zcmM7CgoJCQl3aGlsZSAocmVtYWluaW5nX29mZiA+PSBydGVf cGt0bWJ1Zl9kYXRhX2xlbihzZ2xfYnVmKQoJCQkJCSYmIHNnbF9idWYtPm5leHQgIT0gTlVMTCkg ewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogYXBwL3Rlc3QvdGVzdF9jcnlwdG9kZXYuYzoyNzcKZXJy b3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJLyogVGhlbiBjaGVjayBpZiBkaWdlc3QtZW5jcnlw dGVkIGNvbmRpdGlvbnMgYXJlIG1ldCAqLwoJCWlmICgoYXV0aF9vZmZzZXQgKyBhdXRoX2xlbiA8 IGNpcGhlcl9vZmZzZXQgKyBjaXBoZXJfbGVuKSAmJgoJCQkJKGRpZ2VzdC5pb3ZhID09IGF1dGhf ZW5kX2lvdmEpICYmIGlzX3NnbCkKCQkJbWF4X2xlbiA9IFJURV9NQVgobWF4X2xlbiwgYXV0aF9v ZmZzZXQgKyBhdXRoX2xlbiArCgkJCQl1dF9wYXJhbXMtPmF1dGhfeGZvcm0uYXV0aC5kaWdlc3Rf bGVuZ3RoKTsKCgl9IGVsc2UgaWYgKGlzX2NpcGhlcikgewoKZXJyb3I6IHBhdGNoIGZhaWxlZDog YXBwL3Rlc3QvdGVzdF9jcnlwdG9kZXYuYzoyOTMKSHVuayAjNSBzdWNjZWVkZWQgYXQgMzMwIChv ZmZzZXQgLTMzIGxpbmVzKS4KSHVuayAjNiBzdWNjZWVkZWQgYXQgNDA4MCAob2Zmc2V0IC0yOSBs aW5lcykuCkh1bmsgIzcgc3VjY2VlZGVkIGF0IDczMTMgKG9mZnNldCAtMjkgbGluZXMpLgpIdW5r ICM4IHN1Y2NlZWRlZCBhdCA3Mzc0IChvZmZzZXQgLTI5IGxpbmVzKS4KQXBwbHlpbmcgcGF0Y2gg YXBwL3Rlc3QvdGVzdF9jcnlwdG9kZXYuYyB3aXRoIDMgcmVqZWN0cy4uLgpSZWplY3RlZCBodW5r ICMxLgpIdW5rICMyIGFwcGxpZWQgY2xlYW5seS4KUmVqZWN0ZWQgaHVuayAjMy4KUmVqZWN0ZWQg aHVuayAjNC4KSHVuayAjNSBhcHBsaWVkIGNsZWFubHkuCkh1bmsgIzYgYXBwbGllZCBjbGVhbmx5 LgpIdW5rICM3IGFwcGxpZWQgY2xlYW5seS4KSHVuayAjOCBhcHBsaWVkIGNsZWFubHkuCmRpZmYg YS9hcHAvdGVzdC90ZXN0X2NyeXB0b2Rldi5jIGIvYXBwL3Rlc3QvdGVzdF9jcnlwdG9kZXYuYwko cmVqZWN0ZWQgaHVua3MpCkBAIC0yMDksNiArMjA5LDcgQEAgcHJvY2Vzc19zeW1fcmF3X2RwX29w KHVpbnQ4X3QgZGV2X2lkLCB1aW50MTZfdCBxcF9pZCwKIAlpbnQgZW5xdWV1ZV9zdGF0dXMsIGRl cXVldWVfc3RhdHVzOwogCXN0cnVjdCBjcnlwdG9fdW5pdHRlc3RfcGFyYW1zICp1dF9wYXJhbXMg PSAmdW5pdHRlc3RfcGFyYW1zOwogCWludCBpc19zZ2wgPSBzb3AtPm1fc3JjLT5uYl9zZWdzID4g MTsKKwlpbnQgaXNfb29wID0gMDsKIAogCWN0eF9zZXJ2aWNlX3NpemUgPSBydGVfY3J5cHRvZGV2 X2dldF9yYXdfZHBfY3R4X3NpemUoZGV2X2lkKTsKIAlpZiAoY3R4X3NlcnZpY2Vfc2l6ZSA8IDAp IHsKQEAgLTI3Nyw2ICsyODEsOCBAQCBwcm9jZXNzX3N5bV9yYXdfZHBfb3AodWludDhfdCBkZXZf aWQsIHVpbnQxNl90IHFwX2lkLAogCQlpZiAoaXNfc2dsKSB7CiAJCQl1aW50MzJfdCByZW1haW5p bmdfb2ZmID0gYXV0aF9vZmZzZXQgKyBhdXRoX2xlbjsKIAkJCXN0cnVjdCBydGVfbWJ1ZiAqc2ds X2J1ZiA9IHNvcC0+bV9zcmM7CisJCQlpZiAoaXNfb29wKQorCQkJCXNnbF9idWYgPSBzb3AtPm1f ZHN0OwogCiAJCQl3aGlsZSAocmVtYWluaW5nX29mZiA+PSBydGVfcGt0bWJ1Zl9kYXRhX2xlbihz Z2xfYnVmKQogCQkJCQkmJiBzZ2xfYnVmLT5uZXh0ICE9IE5VTEwpIHsKQEAgLTI5Myw3ICsyOTks OCBAQCBwcm9jZXNzX3N5bV9yYXdfZHBfb3AodWludDhfdCBkZXZfaWQsIHVpbnQxNl90IHFwX2lk LAogCQkvKiBUaGVuIGNoZWNrIGlmIGRpZ2VzdC1lbmNyeXB0ZWQgY29uZGl0aW9ucyBhcmUgbWV0 ICovCiAJCWlmICgoYXV0aF9vZmZzZXQgKyBhdXRoX2xlbiA8IGNpcGhlcl9vZmZzZXQgKyBjaXBo ZXJfbGVuKSAmJgogCQkJCShkaWdlc3QuaW92YSA9PSBhdXRoX2VuZF9pb3ZhKSAmJiBpc19zZ2wp Ci0JCQltYXhfbGVuID0gUlRFX01BWChtYXhfbGVuLCBhdXRoX29mZnNldCArIGF1dGhfbGVuICsK KwkJCW1heF9sZW4gPSBSVEVfTUFYKG1heF9sZW4sCisJCQkJYXV0aF9vZmZzZXQgKyBhdXRoX2xl biArCiAJCQkJdXRfcGFyYW1zLT5hdXRoX3hmb3JtLmF1dGguZGlnZXN0X2xlbmd0aCk7CiAKIAl9 IGVsc2UgaWYgKGlzX2NpcGhlcikgewoKaHR0cHM6Ly9sYWIuZHBkay5vcmcvcmVzdWx0cy9kYXNo Ym9hcmQvcGF0Y2hzZXRzLzIwMDE4LwoKVU5ILUlPTCBEUERLIENvbW11bml0eSBMYWIK --===============4271404405445591301==--