From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v13 04/23] x86: refactor psr: L3 CAT: implement main data structures, CPU init and free flows. Date: Thu, 6 Jul 2017 09:52:57 +0800 Message-ID: <1499305996-19029-5-git-send-email-yi.y.sun@linux.intel.com> References: <1499305996-19029-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dSwBk-0000Tx-D1 for xen-devel@lists.xenproject.org; Thu, 06 Jul 2017 02:06:40 +0000 In-Reply-To: <1499305996-19029-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VG8gY29uc3RydWN0IGFuIGV4dGVuZGlibGUgZnJhbWV3b3JrLCB3ZSBuZWVkIGFuYWx5emUgUFNS IGZlYXR1cmVzCmFuZCBhYnN0cmFjdCB0aGUgY29tbW9uIHRoaW5ncyBhbmQgZmVhdHVyZSBzcGVj aWZpYyB0aGluZ3MuIFRoZW4sCmVuY2Fwc3VsYXRlIHRoZW0gaW50byBkaWZmZXJlbnQgZGF0YSBz dHJ1Y3R1cmVzLgoKQnkgYW5hbHl6aW5nIFBTUiBmZWF0dXJlcywgd2UgY2FuIGdldCBiZWxvdyBt YXAuCiAgICAgICAgICAgICAgICArLS0tLS0tKy0tLS0tLSstLS0tLS0rCiAgICAgIC0tLS0tLS0t LT58IERvbTAgfCBEb20xIHwgLi4uICB8CiAgICAgIHwgICAgICAgICArLS0tLS0tKy0tLS0tLSst LS0tLS0rCiAgICAgIHwgICAgICAgICAgICB8CiAgICAgIHxEb20gSUQgICAgICB8IGNvc19pZCBv ZiBkb21haW4KICAgICAgfCAgICAgICAgICAgIFYKICAgICAgfCAgICAgICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwpVc2VyIC0tLS0tLS0tLT58IFBTUiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgU29j a2V0IElEIHwgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgfCAgfCBTb2NrZXQw IEluZm8gfCBTb2NrZXQgMSBJbmZvIHwgICAgLi4uICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAogICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICAgICAgICAgICBjb3NfaWQ9MCAgICAgICAgICAgICAgIGNv c19pZD0xICAgICAgICAgIC4uLiAgICAgICAgIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPlJlZiAgIDogfCAgICAgICAgIHJlZiAw ICAgICAgICAgfCAgICAgICAgIHJlZiAxICAgICAgICAgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPkwzIENBVDogfCAgICAgICAgIGNvcyAw ICAgICAgICAgfCAgICAgICAgIGNvcyAxICAgICAgICAgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPkwyIENBVDogfCAgICAgICAgIGNvcyAw ICAgICAgICAgfCAgICAgICAgIGNvcyAxICAgICAgICAgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPkNEUCAgIDogfCBjb3MwIGNvZGUgfCBj b3MwIGRhdGEgfCBjb3MxIGNvZGUgfCBjb3MxIGRhdGEgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwoKU28sIHdlIG5lZWQgZGVmaW5lIGEgc29ja2V0IGluZm8gZGF0YSBzdHJ1Y3R1 cmUsICdzdHJ1Y3QKcHNyX3NvY2tldF9pbmZvJyB0byBtYW5hZ2UgaW5mb3JtYXRpb24gcGVyIHNv Y2tldC4gSXQgY29udGFpbnMgYQpyZWZlcmVuY2UgY291bnQgYXJyYXkgYWNjb3JkaW5nIHRvIENP UyBJRCBhbmQgYSBmZWF0dXJlIGFycmF5IHRvCm1hbmFnZSBhbGwgZmVhdHVyZXMgZW5hYmxlZC4g RXZlcnkgZW50cnkgb2YgdGhlIHJlZmVyZW5jZSBjb3VudAphcnJheSBpcyB1c2VkIHRvIHJlY29y ZCBob3cgbWFueSBkb21haW5zIGFyZSB1c2luZyB0aGUgQ09TIHJlZ2lzdGVycwphY2NvcmRpbmcg dG8gdGhlIENPUyBJRC4gRm9yIGV4YW1wbGUsIEwzIENBVCBhbmQgTDIgQ0FUIGFyZSBlbmFibGVk LApEb20xIHVzZXMgQ09TX0lEPTEgcmVnaXN0ZXJzIG9mIGJvdGggZmVhdHVyZXMgdG8gc2F2ZSBD Qk0gdmFsdWVzLCBsaWtlCmJlbG93LgogICAgICAgICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSst LS0tLSsKICAgICAgICB8IENPUyAwIHwgQ09TIDEgfCBDT1MgMiB8IC4uLiB8CiAgICAgICAgKy0t LS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tKwpMMyBDQVQgIHwgMHg3ZmYgfCAweDFmZiB8IC4u LiAgIHwgLi4uIHwKICAgICAgICArLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0rLS0tLS0rCkwyIENB VCAgfCAweGZmICB8IDB4ZmYgIHwgLi4uICAgfCAuLi4gfAogICAgICAgICstLS0tLS0tKy0tLS0t LS0rLS0tLS0tLSstLS0tLSsKCklmIERvbTIgaGFzIHNhbWUgQ0JNIHZhbHVlcywgaXQgY2FuIHJl dXNlIHRoZXNlIHJlZ2lzdGVycyB3aGljaCBDT1NfSUQ9MS4KVGhhdCBtZWFucywgYm90aCBEb20x IGFuZCBEb20yIHVzZSBzYW1lIENPUyByZWdpc3RlcnMoSUQ9MSkgdG8ga2VlcCBzYW1lCkwzL0wy IHZhbHVlcy4gU28sIHRoZSB2YWx1ZSBvZiByZWZbMV0gaXMgMiB3aGljaCBtZWFucyAyIGRvbWFp bnMgYXJlIHVzaW5nCkNPU19JRCAxLgoKVG8gbWFuYWdlIGEgZmVhdHVyZSwgd2UgbmVlZCBkZWZp bmUgYSBmZWF0dXJlIG5vZGUgZGF0YSBzdHJ1Y3R1cmUsCidzdHJ1Y3QgZmVhdF9ub2RlJywgdG8g bWFuYWdlIGZlYXR1cmUncyBzcGVjaWZpYyBIVyBpbmZvLCBhbmQgYW4gYXJyYXkgb2YgYWxsCkNP UyByZWdpc3RlcnMgdmFsdWVzIG9mIHRoaXMgZmVhdHVyZS4KClRvIG1hbmFnZSBmZWF0dXJlIHBy b3BlcnRpZXMsIHdlIG5lZWQgZGVmaW5lIGEgZmVhdHVyZSBwcm9wZXJ0eSBkYXRhIHN0cnVjdHVy ZSwKJ3N0cnVjdCBmZWF0X3Byb3BzJywgdG8gbWFuYWdlIGNvbW1vbiBwcm9wZXJ0aWVzIChjYWxs YmFjayBmdW5jdGlvbnMgLSBhbGwKZmVhdHVyZSdzIHNwZWNpZmljIGJlaGF2aW9ycyBhcmUgZW5j YXBzdWxhdGVkIGludG8gdGhlc2UgY2FsbGJhY2sgZnVuY3Rpb25zLAphbmQgZ2VuZXJpYyB2YWx1 ZXMgLSBlLmcuIHRoZSBjb3NfbWF4KSwgdGhlIGZlYXR1cmUgaW5kZXBlbmRlbnQgdmFsdWVzLgoK Q0RQIGlzIGEgc3BlY2lhbCBmZWF0dXJlIHdoaWNoIHVzZXMgdHdvIGVudHJpZXMgb2YgdGhlIGFy cmF5CmZvciBvbmUgQ09TIElELiBTbywgdGhlIG51bWJlciBvZiBDRFAgQ09TIHJlZ2lzdGVycyBp cyB0aGUgaGFsZiBvZiBMMwpDQVQuIEUuZy4gTDMgQ0FUIGhhcyAxNiBDT1MgcmVnaXN0ZXJzLCB0 aGVuIENEUCBoYXMgOCBDT1MgcmVnaXN0ZXJzIGlmCml0IGlzIGVuYWJsZWQuIENEUCB1c2VzIHRo ZSBDT1MgcmVnaXN0ZXJzIGFycmF5IGFzIGJlbG93LgoKICAgICAgICAgICAgICAgICAgICAgICAg ICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLSsKQ0RQIGNvc19yZWdfdmFsW10gaW5kZXg6IHwgICAgIDAgICAgIHwgICAgIDEgICAgIHwg ICAgIDIgICAgIHwgICAgIDMgICAgIHwgICAgLi4uICAgIHwKICAgICAgICAgICAgICAgICAgICAg ICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsKICAgICAgICAgICAgICAgICAgdmFsdWU6IHwgY29zMCBjb2RlIHwgY29zMCBkYXRh IHwgY29zMSBjb2RlIHwgY29zMSBkYXRhIHwgICAgLi4uICAgIHwKICAgICAgICAgICAgICAgICAg ICAgICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLSsKCkZvciBtb3JlIGRldGFpbHMsIHBsZWFzZSByZWZlciBTRE0gYW5kIHBhdGNo ZXMgdG8gaW1wbGVtZW50ICdnZXQgdmFsdWUnIGFuZAonc2V0IHZhbHVlJy4KClRoaXMgcGF0Y2gg YWxzbyBpbXBsZW1lbnRzIHRoZSBDUFUgaW5pdCBhbmQgZnJlZSBmbG93IGluY2x1ZGluZyBMMyBD QVQKaW5pdGlhbGl6YXRpb24gYW5kIHNvbWUgcmVzb3VyY2VzIGZyZWUuIEl0IGluY2x1ZGVzIGJl bG93IGZsb3dzOgoxLiBwcmVzbXAgaW5pdDoKICAgIC0gcGFyc2UgY29tbWFuZCBsaW5lIHBhcmFt ZXRlci4KICAgIC0gYWxsb2NhdGUgc29ja2V0IGluZm8gZm9yIGV2ZXJ5IHNvY2tldC4KICAgIC0g YWxsb2NhdGUgZmVhdHVyZSByZXNvdXJjZS4KICAgIC0gaW5pdGlhbGl6ZSBzb2NrZXQgaW5mbywg Z2V0IGZlYXR1cmUgaW5mbyBhbmQgYWRkIGZlYXR1cmUgaW50byBmZWF0dXJlCiAgICAgIGFycmF5 IHBlciBjcHVpZCByZXN1bHQuCiAgICAtIGZyZWUgcmVzb3VyY2VzIGFsbG9jYXRlZCBpZiBlcnJv ciBoYXBwZW5zLgogICAgLSByZWdpc3RlciBjcHUgbm90aWZpZXIgdG8gaGFuZGxlIGNwdSBldmVu dHMuCjIuIGNwdSBub3RpZmllcjoKICAgIC0gaGFuZGxlIGNwdSBvbmxpbmUgZXZlbnRzLCBpZiBp bml0aWFsaXphdGlvbiB3b3JrIGhhcyBiZWVuIGRvbmUgYmVmb3JlLAogICAgICBkbyBub3RoaW5n LgogICAgLSBoYW5kbGUgY3B1IG9mZmxpbmUgZXZlbnRzLCBpZiBpdCBpcyB0aGUgbGFzdCBjcHUg b2ZmbGluZSwgZnJlZSBzb21lCiAgICAgIHNvY2tldCByZXNvdXJjZXMuCgpTaWduZWQtb2ZmLWJ5 OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEphbiBCZXVs aWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCnYxMzoKICAgIC0gbW9kaWZ5IG1hY3JvcyBhbmQg ZW51bSBpZGVudGlmaWVycyBuYW1lcyB0byBiZSBjb25zaXN0ZW50LgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSBjb3JyZWN0IGNvbW1lbnQuCiAgICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpCiAgICAtIG1vdmUgJ2Nvc19yZWYnIGFycmF5IGNsZWFybmluZyBpbnRv IHRoaXMgcGF0Y2guCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkZCAn YWx0X3R5cGUnIGluICdmZWF0X3Byb3BzJyB0byBoYW5kbGUgc29tZSBzcGVjaWFsIG9wZXJhdGlv biBpbiB0aGUKICAgICAgZnV0dXJlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQog ICAgLSBtb3ZlICdmZWF0X2luaXQnIG91dCBmcm9tIHRoZSBzdGF0ZW1lbnQuCiAgICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSAnY2F0X2luaXRfZmVhdCcgdHlwZSB0 byAnaW50JyB0byByZXR1cm4gZXJyb3IgYmFjayBpZiBzb21ldGhpbmcKICAgICAgd3JvbmcuIFRo ZW4sIHdlIHdpbGwgbm90IGFkZCBmZWF0X3Byb3BzIGludG8gbGlzdC4KdjEyOgogICAgLSBhZGQg Y29tbWVudCBmb3IgJ2ZlYXRfaW5pdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp CiAgICAtIHVzZSAnQVJSQVlfU0laRSgpJyB0byBjaGVjayBhcnJheSBib3VuZGFyeS4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gdXNlICdYRU5MT0dfV0FSTklORycgZm9y IGVycm9yIG1lc3NhZ2UuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1v dmUgJ3R5cGVbXScgYXNzaWdubWVudCBmb3IgZmVhdF9wcm9wcyBvYmplY3QgaW50byBpdHMgZGVs Y2FyYXRpb24KICAgICAgdG8gbWFrZSB0aGUgb2JqZWN0IGJlICdjb25zdCcuCiAgICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAiTDMiIGFuZCAiTDIiIGluZGljYXRp b24gaW4gcHJpbnRrLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb3Zl IHBvc2l0aW9uIG9mICdyZWZfbG9jaycgZGVmaW5pdGlvbi4KICAgIC0gcmVzdG9yZSBtYXNrKDAp IE1TUiB0byBkZWZhdWx0IHZhbHVlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2 MTE6CiAgICAtIGhhbmRsZSAnZmVhdF9pbml0Jy4KICAgIC0gbWVyZ2UgbWFpbiBkYXRhIHN0cnVj dHVyZXMgaW1wbGVtZW50YXRpb24gaW50byBDUFUgaW5pdC9mcmVlIHBhdGNoLAogICAgICBpbmNs dWRpbmcgY29tbWl0IG1lc3NhZ2VzIGFuZCBjaGFuZ2UgaGlzdG9yeS4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIE1TUiByZXN0b3JlIGFjdGlvbiB3aGljaCBp cyB1bm5lY2Vzc2FyeS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW92 ZSAndHlwZVtdJyBkZWNsYXJhdGlvbiBpbnRvIHRoaXMgcGF0Y2guCiAgICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSBjb21tZW50LgogICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKQp2MTA6CiAgICAtIHJlbW92ZSBpbml0aWFsaXphdGlvbiBmb3IgJ1BTUl9T T0NLRVRfTDNfQ0FUJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVu YW1lICdmZWF0X29wcycgdG8gJ2ZlYXRfcHJvcHMnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQogICAgLSBtb3ZlICdjYm1fbGVuJyB0byAnZmVhdF9wcm9wcycgYmVjYXVzZSBpdCBp cyBmZWF0dXJlIGluZGVwZW5kZW50IHNvIGZhci4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gbW92ZSAnY29zX21heCcgdG8gJ2ZlYXRfcHJvcHMnIGJlY2F1c2UgaXQgaXMg ZmVhdHVyZSBpbmRlcGVuZGVudC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAg IC0gbW92ZSAnY29zX251bScgdG8gJ2ZlYXRfcHJvcHMnIGJlY2F1c2UgaXQgaXMgZmVhdHVyZSBp bmRlcGVuZGVudC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3Zl IHVuaW9uICdpbmZvJyBhbmQgc3RydWN0ICdwc3JfY2F0X2h3X2luZm8nLgogICAgLSByZW1vdmUg J2dldF9jb3NfbWF4JyBmcm9tICdmZWF0X3Byb3BzJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCkKICAgIC0gcmVtb3ZlICdmZWF0X21hc2snIGZyb20gJ3Bzcl9zb2NrZXRfaW5mbycg YmVjYXVzZSB3ZSBjYW4gdXNlICdmZWF0dXJlc1tdJwogICAgICB0byBjaGVjayBpZiBhbnkgZmVh dHVyZSBpcyBpbml0aWFsaXplZC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAg IC0gbW92ZSAncmVmX2xvY2snIGFib3ZlICdjb3NfcmVmJy4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKICAgIC0gYWRqdXN0IGNvbW1lbnRzIGFuZCBjb21taXQgbWVzc2FnZSBhY2Nv cmRpbmcgdG8gYWJvdmUgY2hhbmdlcy4KICAgIC0gcmVtb3ZlICdhc20veDg2X2VtdWxhdGUuaCcg aW5jbHVzaW9uIGFzIGl0IGhhcyBiZWVuIGluZGlyZWN0bHkgaW5jbHVkZWQuCiAgICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAnQ0FUX0NPU19OVU0nIGFzIGl0IGlz IG9ubHkgdXNlZCBvbmNlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBy ZW1vdmUgJ2ZlYXRfbWFzaycuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAt IGNoYW5nZXMgYWJvdXQgJ2ZlYXRfcHJvcHMnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQogICAgLSByZW1vdmUgJ2dldF9jb3NfbWF4JyBob29rIGRlY2xhcmF0aW9uLgogICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb2RpZnkgJ2NhdF9kZWZhdWx0X3ZhbCcg aW1wbGVtZW50YXRpb24uCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1v ZGlmeSAncHNyX2FsbG9jX2ZlYXRfZW5hYmxlZCcgaW1wbGVtZW50YXRpb24gdG8gbWFrZSBpdCBz aW1wbGUuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbmFtZSAnZnJl ZV9mZWF0dXJlJyB0byAnZnJlZV9zb2NrZXRfcmVzb3VyY2VzJyBiZWNhdXNlIGl0IGlzIGV4ZWN1 dGVkCiAgICAgIHdoZW4gc29ja2V0IGlzIG9mZmxpbmUuIEl0IG5lZWRzIGZyZWUgcmVzb3VyY2Vz IHJlbGF0ZWQgdG8gdGhlIHNvY2tldC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gZGVmaW5lICdmZWF0X2luaXRfZG9uZScgdG8gaXRlcmF0ZSBmZWF0dXJlIGFycmF5IHRv IGNoZWNrIGlmIGFueSBmZWF0dXJlCiAgICAgIGhhcyBiZWVuIGluaXRpYWxpemVkLgogICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBpbnB1dCAnc3RydWN0IGNwdWlkX2xlYWYn IHBvaW50ZXIgaW50byAnY2F0X2luaXRfZmVhdHVyZScgdG8gYXZvaWQgbWVtb3J5CiAgICAgIGNv cHkuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSAnY2F0X2lu aXRfZmVhdHVyZScgdG8gdXNlIHN3aXRjaCBhbmQgdGhpbmdzIHJlbGF0ZWQgdG8gYWJvdmUKICAg ICAgY2hhbmdlcy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRkIGFu IGluZGVudGF0aW9uIGZvciBsYWJlbC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK djk6CiAgICAtIHJlcGxhY2UgZmVhdHVyZSBsaXN0IHRvIGEgZmVhdHVyZSBwb2ludGVyIGFycmF5 LgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkKICAgIC0gYWRkICdQU1JfU09DS0VUX01B WF9GRUFUJyBpbiAnZW51bSBwc3JfZmVhdF90eXBlJyB0byBrbm93IGZlYXR1cmVzCiAgICAgIGFj Y291bnQuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1KQogICAgLSBtb3ZlICdmZWF0X29w cycgZGVjbGFyYXRpb24gaW50byAnZmVhdF9ub2RlJyBzdHJ1Y3R1cmUuCiAgICAgIChzdWdnZXN0 ZWQgYnkgUm9nZXIgUGF1KQogICAgLSBkaXJlY3RseSB1c2UgdW5pbm9uIGZvciBmZWF0dXJlIEhX IGluZm8gYW5kIG1vdmUgaXRzIGRlY2xhcmF0aW9uIGludG8KICAgICAgJ2ZlYXRfbm9kZScgc3Ry dWN0dXJlLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkKICAgIC0gcmVtb3ZlICdlbnVt IHBzcl9mZWF0X3R5cGUgZmVhdHVyZScgZGVjbGFyZWQgaW4gJ2ZlYXRfb3BzJyBiZWNhdXNlIGl0 IGlzCiAgICAgIG5vdCB1c2VmdWwgYWZ0ZXIgdXNpbmcgZmVhdHVyZSBwb2ludGVyIGFycmF5Lgog ICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkKICAgIC0gcmVuYW1lICdsM19jYXRfaW5mbycg dG8gJ2NhdF9pbmZvJyB0byBiZSB1c2VkIGJ5IGFsbCBDQVQvQ0RQIGZlYXR1cmVzLgogICAgLSBy ZW1vdmUgJ25yX2ZlYXQnIHdoaWNoIGlzIG9ubHkgZm9yIGEgcmVjb3JkLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBhZGQgJ2Nvc19udW0nIHRvIHJlY29yZCBob3cgbWFu eSBDT1MgcmVnaXN0ZXJzIGFyZSB1c2VkIGJ5IGEgZmVhdHVyZSBpbgogICAgICBvbmUgdGltZSBh Y2Nlc3MuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlcGxhY2UgJ3Vp bnQ2NF90JyB0byAndWludDMyX3QnIGZvciBjYm0gdmFsdWUgYmVjYXVzZSBTRE0gc3BlY2lmaWVz IHRoZQogICAgICBtYXggMzIgYml0cyBmb3IgaXQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIGFkZCBjb21taXQgbWVzc2FnZSB0byBleHBsYWluIHRoZSBmbG93cy4KICAg IC0gaGFuZGxlIGNwdSBvZmZsaW5lIGFuZCBvbmxpbmUgYWdhaW4gY2FzZSB0byByZWFkIE1TUnMg cmVnaXN0ZXJzIHZhbHVlcwogICAgICBiYWNrIGFuZCBzYXZlIHRoZW0gaW50byBjb3MgYXJyYXkg dG8gbWFrZSB1c2VyIGNhbiBnZXQgcmVhbCBkYXRhLgogICAgLSBjcmVhdGUgYSBuZXcgcGF0Y2gg YWJvdXQgbW92aW5nICdjcHVpZF9jb3VudF9sZWFmJy4KICAgICAgKHN1Z2dlc3RlZCBieSBXZWkg TGl1KQogICAgLSBtb2RpZnkgY29tbWVudCB0byBleHBsYWluIHdoeSBub3QgZnJlZSBzb21lIHJl c291cmNlIGluICdmcmVlX2ZlYXR1cmUnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAg ICAtIGltcGxlbWVudCAncHNyX2FsbG9jX2ZlYXRfZW5hYmxlZCcgdG8gY2hlY2sgaWYgYWxsb2Nh dGlvbiBmZWF0dXJlIGlzCiAgICAgIGVuYWJsZWQgaW4gY21kbGluZSBhbmQgc29tZSBpbml0aWFs aXphdGlvbiB3b3JrIGRvbmUuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0gaW1w bGVtZW50ICdjYXRfZGVmYXVsdF92YWwnIHRvIHNldCBkZWZhdWx0IHZhbHVlIGZvciBDQVQgZmVh dHVyZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0gcmVwbGFjZSBmZWF0dXJl IGxpc3QgaGFuZGxpbmcgdG8gZmVhdHVyZSBhcnJheSBoYW5kbGluZy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBSb2dlciBQYXUpCiAgICAtIGltcGxlbWVudCBhIGNvbW1vbiAnY2F0X2luaXRfZmVhdHVy ZScgdG8gcmVwbGFjZSBMMyBDQVQvTDIgQ0FUIHNwZWNpZmljCiAgICAgIGluaXQgZnVuY3Rpb25z LgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkKICAgIC0gbW9kaWZ5IGNvbW1lbnRzIGZv ciBnbG9iYWwgZmVhdHVyZSBub2RlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQog ICAgLSByZW1vdmUgdW5uZWNlc3NhcnkgY29tbWVudHMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5lY2Vzc2FyeSAnZWxzZScuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAnbnJfZmVhdCcuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSBwYXRjaCB0aXRsZSB0byBpbmRpY2F0ZSAn TDMgQ0FUJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hlY2sgZ2xv YmFsIGZsYWcgd2l0aCBib290IGNwdSBvcGVyYXRpb25zLgogICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKQogICAgLSByZW1vdmUgJ2NwdV9pbml0X3dvcmsnIGFuZCBtb3ZlIGNvZGVzIGlu dG8gJ3Bzcl9jcHVfaW5pdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAt IHJlbW92ZSAnY3B1X2Zpbmlfd29yaycgYW5kIG1vdmUgY29kZXMgaW50byAncHNyX2NwdV9maW5p Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYXNzaWduIHZhbHVlIGZv ciAnY29zX251bScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5n ZSBhYm91dCAndWludDY0X3QnIHRvICd1aW50MzJfdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCnY4OgogICAgLSBmaXggZm9ybWF0IGlzc3VlLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gYWRkIGNvbW1lbnRzIHRvIGV4cGxhaW4gd2h5 IHdlIGNhcmUgYWJvdXQgY3B1bWFza19lbXB0eSB3aGVuIHRoZSBsYXN0CiAgICAgIGNwdSBvbiBz b2NrZXQgaXMgb2ZmbGluZS4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdp bGspCnY3OgogICAgLSBzb3J0IGluY2x1c2lvbiBmaWxlcyBwb3NpdGlvbi4KICAgICAgKHN1Z2dl c3RlZCBieSBXZWkgTGl1KQogICAgLSBpbml0aWFsaXplIHN0cnVjdHVyZSBvYmplY3RzIGZvciBh dm9pZGluZyBzdXJwcmlzZS4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdp bGspCiAgICAtIGZpeCB0eXBvLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsg V2lsaykKICAgIC0gZml4IGEgbG9naWNhbCBtaXN0YWtlIHdoZW4gaGFuZGxpbmcgdGhlIGxhc3Qg Y3B1IG9mZmxpbmUgZXZlbnQuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBX aWxrKQp2NjoKICAgIC0gbWFrZSBjb21taXQgbWVzc2FnZSBiZSBjbGVhcmVyLgogICAgICAoc3Vn Z2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gZml4IHdvcmRpbmdzLgogICAg ICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gYWRkIGNvbW1lbnRz IHRvIGV4cGxhaW4gcmVsYXRpb25zaGlwIGJldHdlZW4gJ2ZlYXRfbWFzaycgYW5kCiAgICAgICdl bnVtIHBzcl9mZWF0X3R5cGUnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsg V2lsaykKICAgIC0gdXNlICdzdHJ1Y3QgY3B1aWRfbGVhZicgaW50cm9kdWNlZCBpbiBBbmRyZXcn cyBwYXRjaC4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAt IGFkZCBjb21tZW50cyBhYm91dCBjcHVfYWRkX3JlbW92ZV9sb2NrLgogICAgICAoc3VnZ2VzdGVk IGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gY2hhbmdlICdjbGVhcl9iaXQnIHRvICdf X2NsZWFyX2JpdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQog ICAgLSBhZGQgJ0FTU0VSVCcgY2hlY2sgd2hlbiBzZXR0aW5nICdmZWF0X21hc2snLgogICAgICAo c3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gYWRqdXN0ICdwcmludGsn IHBvc2l0aW9uIHRvIGF2b2lkIG9kZCBzcGFjaW5nLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJh ZCBSemVzenV0ZWsgV2lsaykKICAgIC0gYWRkIGNvbW1lbnQgdG8gZXhwbGFpbiB1c2FnZSBvZiAn ZmVhdF9sM19jYXQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykK ICAgIC0gZml4IHdvcmRpbmcuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBX aWxrKQogICAgLSBtb3ZlICdjcHVpZF9jb3VudF9sZWFmJyBoZWxwZXIgZnVuY3Rpb24gdG8gJ2Fz bS14ODYvcHJvY2Vzc29yLmgnLgogICAgICBJdCBjYW5ub3QgYmUgbW92ZWQgdG8gJ2NwdWlkLmgn IHdoaWNoIGNhdXNlcyBjb21waWxhdGlvbiBlcnJvciBiZWNhdXNlCiAgICAgIG9mIGhlYWRlciBm aWxlIGxvb3AgcmVmZXJlbmNlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEFuZHJldyBDb29wZXIpCnY1 OgogICAgLSByZW1vdmUgc2VjdGlvbiBudW1iZXIuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIHJlbW92ZSBkb3VibGUgYmxhbmsuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIGFkZCBjb21tZW50IHRvIGV4cGxhaW4gdGhlIHJlYXNvbiB0byBkZWZp bmUgJ2ZlYXRfbDNfY2F0Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g dXNlICdsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQogICAgLSByZW1vdmUgY29kZXMgdG8gZnJlZSAnZmVhdF9sM19jYXQnIGluICdmcmVl X2ZlYXR1cmUnIHRvIGF2b2lkIHRoZSBuZWVkCiAgICAgIGZvciBhbiBhbGxvY2F0aW9uIHRoZSBu ZXh0IHRpbWUgYSBDUFUgY29tZXMgb25saW5lLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQogICAgLSBkZWZpbmUgJ3N0cnVjdCBjcHVpZF9sZWFmX3JlZ3MnIHRvIGVuY2Fwc3VsYXRl IGVheH5lZHguCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHByaW50IGZl YXR1cmUgaW5mbyBvbiBhIHNvY2tldCBvbmx5IHdoZW4gJ29wdF9jcHVfaW5mbycgaXMgdHJ1ZS4K ICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gZGVjbGFyZSBnbG9iYWwgdmFy aWFibGUgJ2wzX2NhdF9vcHMnIHRvICdzdGF0aWMgY29uc3QnLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKQogICAgLSB1c2UgJ2N1cnJlbnRfY3B1X2RhdGEnLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW5hbWUgJ2ZlYXRfdG1wJyB0byAnZmVhdCcuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNsZWFyIFBRRSBmZWF0dXJlIGJp dCB3aGVuIHRoZSBtYXhpbXVtIENQVUlEIGxldmVsIGlzIHRvbyBsb3cuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGRpcmVjdGx5IGNhbGwgJ2wzX2NhdF9pbml0X2ZlYXR1 cmUnLiBObyBuZWVkIHRvIG1ha2UgaXQgYSBjYWxsYmFjawogICAgICBmdW5jdGlvbi4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIGxvY2FsIHZhcmlhYmxlICdp bmZvJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW92ZSAnSU5JVF9M SVNUX0hFQUQnIGludG8gJ2NwdV9pbml0X3dvcmsnIHRvIGJlIHRvZ2V0aGVyIHdpdGgKICAgICAg c3Bpbl9sb2NrX2luaXQoKS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g cmVtb3ZlICdjcHVfcHJlcGFyZV93b3JrJyBhbmQgbW92ZSBpdHMgY29udGVudCBpbnRvICdwc3Jf Y3B1X3ByZXBhcmUnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2NDoKICAgIC0g Y3JlYXRlIHRoaXMgcGF0Y2ggYmVjYXVzZSBvZiByZW1vdmluZyBhbGwgb2xkIENBVC9DRFAgY29k ZXMgdG8gbWFrZQogICAgICBpbXBsZW1lbnRhdGlvbiBiZSBtb3JlIGVhc2lseSB1bmRlcnN0b29k LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQotLS0KIHhlbi9hcmNoL3g4Ni9wc3Iu YyAgICAgICAgfCAyOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCB8ICAgMSArCiAyIGZpbGVzIGNoYW5nZWQs IDI4NyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCA5NmE4NTg5Li41OTgwMjc1IDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gveDg2L3Bzci5jCkBA IC0xMywxNiArMTMsMTE4IEBACiAgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCiAgKiBtb3JlIGRldGFpbHMu CiAgKi8KLSNpbmNsdWRlIDx4ZW4vaW5pdC5oPgogI2luY2x1ZGUgPHhlbi9jcHUuaD4KICNpbmNs dWRlIDx4ZW4vZXJyLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KICNpbmNsdWRlIDx4ZW4vc2No ZWQuaD4KICNpbmNsdWRlIDxhc20vcHNyLmg+CiAKKy8qCisgKiBUZXJtaW5vbG9neToKKyAqIC0g Q0FUICAgICAgICAgQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5CisgKiAtIENCTSAgICAgICAg IENhcGFjaXR5IEJpdE1hc2tzCisgKiAtIENEUCAgICAgICAgIENvZGUgYW5kIERhdGEgUHJpb3Jp dGl6YXRpb24KKyAqIC0gQ01UICAgICAgICAgQ2FjaGUgTW9uaXRvcmluZyBUZWNobm9sb2d5Cisg KiAtIENPUy9DTE9TICAgIENsYXNzIG9mIFNlcnZpY2UuIEFsc28gbWVhbiBDT1MgcmVnaXN0ZXJz LgorICogLSBDT1NfTUFYICAgICBNYXggbnVtYmVyIG9mIENPUyBmb3IgdGhlIGZlYXR1cmUgKG1p bnVzIDEpCisgKiAtIE1TUnMgICAgICAgIE1hY2hpbmUgU3BlY2lmaWMgUmVnaXN0ZXJzCisgKiAt IFBTUiAgICAgICAgIEludGVsIFBsYXRmb3JtIFNoYXJlZCBSZXNvdXJjZQorICovCisKICNkZWZp bmUgUFNSX0NNVCAgICAgICAgKDE8PDApCiAjZGVmaW5lIFBTUl9DQVQgICAgICAgICgxPDwxKQog I2RlZmluZSBQU1JfQ0RQICAgICAgICAoMTw8MikKIAorI2RlZmluZSBDQVRfQ0JNX0xFTl9NQVNL IDB4MWYKKyNkZWZpbmUgQ0FUX0NPU19NQVhfTUFTSyAweGZmZmYKKworLyoKKyAqIFBlciBTRE0g Y2hhcHRlciAnQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5OiBDYWNoZSBNYXNrIENvbmZpZ3Vy YXRpb24nLAorICogdGhlIE1TUnMgcmFuZ2luZyBmcm9tIDBDOTBIIHRocm91Z2ggMEQwRkggKGlu Y2x1c2l2ZSksIGVuYWJsZXMgc3VwcG9ydCBmb3IKKyAqIHVwIHRvIDEyOCBMMyBDQVQgQ2xhc3Nl cyBvZiBTZXJ2aWNlLiBUaGUgQ09TX0lEPVswLDEyN10uCisgKgorICogVGhlIE1TUnMgcmFuZ2lu ZyBmcm9tIDBEMTBIIHRocm91Z2ggMEQ0RkggKGluY2x1c2l2ZSksIGVuYWJsZXMgc3VwcG9ydCBm b3IKKyAqIHVwIHRvIDY0IEwyIENBVCBDT1MuIFRoZSBDT1NfSUQ9WzAsNjNdLgorICoKKyAqIFNv LCB0aGUgbWF4aW11bSBDT1MgcmVnaXN0ZXIgY291bnQgb2Ygb25lIGZlYXR1cmUgaXMgMTI4Lgor ICovCisjZGVmaW5lIE1BWF9DT1NfUkVHX0NOVCAgMTI4CisKKy8qCisgKiBFdmVyeSBQU1IgZmVh dHVyZSB1c2VzIHNvbWUgQ09TIHJlZ2lzdGVycyBmb3IgZWFjaCBDT1MgSUQsIGUuZy4gQ0RQIHVz ZXMgMgorICogQ09TIHJlZ2lzdGVycyAoREFUQSBhbmQgQ09ERSkgZm9yIG9uZSBDT1MgSUQsIGJ1 dCBDQVQgdXNlcyAxIENPUyByZWdpc3Rlci4KKyAqIFdlIHVzZSBiZWxvdyBtYWNybyBhcyB0aGUg bWF4IG51bWJlciBvZiBDT1MgcmVnaXN0ZXJzIHVzZWQgYnkgYWxsIGZlYXR1cmVzLgorICogU28g ZmFyLCBpdCBpcyAyIHdoaWNoIG1lYW5zIENEUCdzIENPUyByZWdpc3RlcnMgbnVtYmVyLgorICov CisjZGVmaW5lIE1BWF9DT1NfTlVNIDIKKworZW51bSBwc3JfZmVhdF90eXBlIHsKKyAgICBGRUFU X1RZUEVfTDNfQ0FULAorICAgIEZFQVRfVFlQRV9OVU0sCit9OworCisvKgorICogVGhpcyBzdHJ1 Y3R1cmUgcmVwcmVzZW50cyBvbmUgZmVhdHVyZS4KKyAqIGNvc19tYXggICAgIC0gVGhlIG1heCBD T1MgcmVnaXN0ZXJzIG51bWJlciBnb3QgdGhyb3VnaCBDUFVJRC4KKyAqIGNibV9sZW4gICAgIC0g VGhlIGxlbmd0aCBvZiBDQk0gZ290IHRocm91Z2ggQ1BVSUQuCisgKiBjb3NfcmVnX3ZhbCAtIEFy cmF5IHRvIHN0b3JlIHRoZSB2YWx1ZXMgb2YgQ09TIHJlZ2lzdGVycy4gT25lIGVudHJ5IHN0b3Jl cworICogICAgICAgICAgICAgICB0aGUgdmFsdWUgb2Ygb25lIENPUyByZWdpc3Rlci4KKyAqICAg ICAgICAgICAgICAgRm9yIEwzIENBVCBhbmQgTDIgQ0FULCBvbmUgZW50cnkgY29ycmVzcG9uZHMg dG8gb25lIENPU19JRC4KKyAqICAgICAgICAgICAgICAgRm9yIENEUCwgdHdvIGVudHJpZXMgY29y cmVzcG9uZCB0byBvbmUgQ09TX0lELiBFLmcuCisgKiAgICAgICAgICAgICAgIENPU19JRD0wIGNv cnJlc3BvbmRzIHRvIGNvc19yZWdfdmFsWzBdIChEYXRhKSBhbmQKKyAqICAgICAgICAgICAgICAg Y29zX3JlZ192YWxbMV0gKENvZGUpLgorICovCitzdHJ1Y3QgZmVhdF9ub2RlIHsKKyAgICAvKiBj b3NfbWF4IGFuZCBjYm1fbGVuIGFyZSBjb21tb24gdmFsdWVzIGZvciBhbGwgZmVhdHVyZXMgc28g ZmFyLiAqLworICAgIHVuc2lnbmVkIGludCBjb3NfbWF4OworICAgIHVuc2lnbmVkIGludCBjYm1f bGVuOworICAgIHVpbnQzMl90IGNvc19yZWdfdmFsW01BWF9DT1NfUkVHX0NOVF07Cit9OworCisv KgorICogVGhpcyBzdHJ1Y3R1cmUgZGVmaW5lcyBmZWF0dXJlIHNwZWNpZmljIHZhbHVlcywgZS5n LiBjb3NfbnVtLgorICoKKyAqIEFycmF5ICdmZWF0X3Byb3BzJyBpcyBkZWZpbmVkIHRvIHNhdmUg ZXZlcnkgZmVhdHVyZSdzIHByb3BlcnRpZXMuIFdlIHVzZQorICogJ2VudW0gcHNyX2ZlYXRfdHlw ZScgYXMgaW5kZXguCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyB7CisgICAg LyoKKyAgICAgKiBjb3NfbnVtIC0gQ09TIHJlZ2lzdGVycyBudW1iZXIgdGhhdCBmZWF0dXJlIHVz ZXMgZm9yIG9uZSBDT1MgSUQuCisgICAgICogICAgICAgICAgIEl0IGlzIGRlZmluZWQgaW4gU0RN LgorICAgICAqLworICAgIHVuc2lnbmVkIGludCBjb3NfbnVtOworCisgICAgLyoKKyAgICAgKiBB biBhcnJheSB0byBzYXZlIGFsbCAnZW51bSBjYm1fdHlwZScgdmFsdWVzIG9mIHRoZSBmZWF0dXJl LiBJdCBpcworICAgICAqIHVzZWQgd2l0aCBjb3NfbnVtIHRvZ2V0aGVyIHRvIGdldC93cml0ZSBh IGZlYXR1cmUncyBDT1MgcmVnaXN0ZXJzCisgICAgICogdmFsdWVzIG9uZSBieSBvbmUuCisgICAg ICovCisgICAgZW51bSBjYm1fdHlwZSB0eXBlW01BWF9DT1NfTlVNXTsKKworICAgIC8qCisgICAg ICogYWx0X3R5cGUgaXMgJ2FsdGVybmF0aXZlIHR5cGUnLiBXaGVuIHRoaXMgJ2FsdF90eXBlJyBp cyBpbnB1dCwgdGhlCisgICAgICogZmVhdHVyZSBkb2VzIHNvbWUgc3BlY2lhbCBvcGVyYXRpb25z LgorICAgICAqLworICAgIGVudW0gY2JtX3R5cGUgYWx0X3R5cGU7Cit9ICpmZWF0X3Byb3BzW0ZF QVRfVFlQRV9OVU1dOworCisvKgorICogUFNSIGZlYXR1cmVzIGFyZSBtYW5hZ2VkIHBlciBzb2Nr ZXQuIEJlbG93IHN0cnVjdHVyZSBkZWZpbmVzIHRoZSBtZW1iZXJzCisgKiB1c2VkIHRvIG1hbmFn ZSB0aGVzZSBmZWF0dXJlcy4KKyAqIGZlYXRfaW5pdCAtIEluZGljYXRlIGlmIGZlYXR1cmVzIG9u IGEgc29ja2V0IGhhdmUgYmVlbiBpbml0aWFsaXplZC4KKyAqIGZlYXR1cmVzICAtIEEgZmVhdHVy ZSBub2RlIGFycmF5IHVzZWQgdG8gbWFuYWdlIGFsbCBmZWF0dXJlcyBlbmFibGVkLgorICogcmVm X2xvY2sgIC0gQSBsb2NrIHRvIHByb3RlY3QgY29zX3JlZi4KKyAqIGNvc19yZWYgICAtIEEgcmVm ZXJlbmNlIGNvdW50IGFycmF5IHRvIHJlY29yZCBob3cgbWFueSBkb21haW5zIGFyZSB1c2luZyB0 aGUKKyAqICAgICAgICAgICAgIENPUyBJRC4gRXZlcnkgZW50cnkgb2YgY29zX3JlZiBjb3JyZXNw b25kcyB0byBvbmUgQ09TIElELgorICovCitzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvIHsKKyAgICBi b29sIGZlYXRfaW5pdDsKKyAgICAvKiBGZWF0dXJlIGFycmF5J3MgaW5kZXggaXMgJ2VudW0gcHNy X2ZlYXRfdHlwZScgd2hpY2ggaXMgc2FtZSBhcyAncHJvcHMnICovCisgICAgc3RydWN0IGZlYXRf bm9kZSAqZmVhdHVyZXNbRkVBVF9UWVBFX05VTV07CisgICAgc3BpbmxvY2tfdCByZWZfbG9jazsK KyAgICB1bnNpZ25lZCBpbnQgY29zX3JlZltNQVhfQ09TX1JFR19DTlRdOworfTsKKwogc3RydWN0 IHBzcl9hc3NvYyB7CiAgICAgdWludDY0X3QgdmFsOwogICAgIHVpbnQ2NF90IGNvc19tYXNrOwpA QCAtMzAsMTEgKzEzMiwxMDUgQEAgc3RydWN0IHBzcl9hc3NvYyB7CiAKIHN0cnVjdCBwc3JfY210 ICpfX3JlYWRfbW9zdGx5IHBzcl9jbXQ7CiAKK3N0YXRpYyBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZv ICpfX3JlYWRfbW9zdGx5IHNvY2tldF9pbmZvOworCiBzdGF0aWMgdW5zaWduZWQgaW50IG9wdF9w c3I7CiBzdGF0aWMgdW5zaWduZWQgaW50IF9faW5pdGRhdGEgb3B0X3JtaWRfbWF4ID0gMjU1Owor c3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IG9wdF9jb3NfbWF4ID0gTUFYX0NPU19S RUdfQ05UOwogc3RhdGljIHVpbnQ2NF90IHJtaWRfbWFzazsKIHN0YXRpYyBERUZJTkVfUEVSX0NQ VShzdHJ1Y3QgcHNyX2Fzc29jLCBwc3JfYXNzb2MpOwogCisvKgorICogRGVjbGFyZSBnbG9iYWwg ZmVhdHVyZSBub2RlIGZvciBldmVyeSBmZWF0dXJlIHRvIGZhY2lsaXRhdGUgdGhlIGZlYXR1cmUK KyAqIGFycmF5IGNyZWF0aW9uLiBJdCBpcyB1c2VkIHRvIHRyYW5zaWVudGx5IHN0b3JlIGEgc3Bh cmUgbm9kZS4KKyAqLworc3RhdGljIHN0cnVjdCBmZWF0X25vZGUgKmZlYXRfbDNfY2F0OworCisv KiBDb21tb24gZnVuY3Rpb25zICovCisjZGVmaW5lIGNhdF9kZWZhdWx0X3ZhbChsZW4pICgweGZm ZmZmZmZmID4+ICgzMiAtIChsZW4pKSkKKworLyoKKyAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNo ZWNrIGlmIGFueSBhbGxvY2F0aW9uIGZlYXR1cmUgaGFzIGJlZW4gZW5hYmxlZAorICogaW4gY21k bGluZS4KKyAqLworc3RhdGljIGJvb2wgcHNyX2FsbG9jX2ZlYXRfZW5hYmxlZCh2b2lkKQorewor ICAgIHJldHVybiAhIXNvY2tldF9pbmZvOworfQorCitzdGF0aWMgdm9pZCBmcmVlX3NvY2tldF9y ZXNvdXJjZXModW5zaWduZWQgaW50IHNvY2tldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAg ICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvID0gc29ja2V0X2luZm8gKyBzb2NrZXQ7CisK KyAgICBpZiAoICFpbmZvICkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBGcmVl IHJlc291cmNlcyBvZiBmZWF0dXJlcy4gVGhlIGdsb2JhbCBmZWF0dXJlIG9iamVjdCwgZS5nLiBm ZWF0X2wzX2NhdCwKKyAgICAgKiBtYXkgbm90IGJlIGZyZWVkIGhlcmUgaWYgaXQgaXMgbm90IGFk ZGVkIGludG8gYXJyYXkuIEl0IGlzIHNpbXBseSBiZWluZworICAgICAqIGtlcHQgdW50aWwgdGhl IG5leHQgQ1BVIG9ubGluZSBhdHRlbXB0LgorICAgICAqLworICAgIGZvciAoIGkgPSAwOyBpIDwg QVJSQVlfU0laRShpbmZvLT5mZWF0dXJlcyk7IGkrKyApCisgICAgeworICAgICAgICB4ZnJlZShp bmZvLT5mZWF0dXJlc1tpXSk7CisgICAgICAgIGluZm8tPmZlYXR1cmVzW2ldID0gTlVMTDsKKyAg ICB9CisKKyAgICBpbmZvLT5mZWF0X2luaXQgPSBmYWxzZTsKKworICAgIG1lbXNldChpbmZvLT5j b3NfcmVmLCAwLCBNQVhfQ09TX1JFR19DTlQgKiBzaXplb2YodW5zaWduZWQgaW50KSk7Cit9CisK Ky8qIENBVCBjb21tb24gZnVuY3Rpb25zIGltcGxlbWVudGF0aW9uLiAqLworc3RhdGljIGludCBj YXRfaW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgdHlwZSkKK3sKKyAgICAvKiBObyB2 YWxpZCB2YWx1ZSBzbyBkbyBub3QgZW5hYmxlIGZlYXR1cmUuICovCisgICAgaWYgKCAhcmVncy0+ YSB8fCAhcmVncy0+ZCApCisgICAgICAgIHJldHVybiAtRU5PRU5UOworCisgICAgZmVhdC0+Y2Jt X2xlbiA9IChyZWdzLT5hICYgQ0FUX0NCTV9MRU5fTUFTSykgKyAxOworICAgIGZlYXQtPmNvc19t YXggPSBtaW4ob3B0X2Nvc19tYXgsIHJlZ3MtPmQgJiBDQVRfQ09TX01BWF9NQVNLKTsKKworICAg IHN3aXRjaCAoIHR5cGUgKQorICAgIHsKKyAgICBjYXNlIEZFQVRfVFlQRV9MM19DQVQ6CisgICAg ICAgIGlmICggZmVhdC0+Y29zX21heCA8IDEgKQorICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7 CisKKyAgICAgICAgLyogV2UgcmVzZXJ2ZSBjb3M9MCBhcyBkZWZhdWx0IGNibSAoYWxsIGJpdHMg d2l0aGluIGNibV9sZW4gYXJlIDEpLiAqLworICAgICAgICBmZWF0LT5jb3NfcmVnX3ZhbFswXSA9 IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKTsKKworICAgICAgICB3cm1zcmwoTVNSX0lB MzJfUFNSX0wzX01BU0soMCksIGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKSk7CisKKyAg ICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gLUVOT0VOVDsKKyAg ICB9CisKKyAgICAvKiBBZGQgdGhpcyBmZWF0dXJlIGludG8gYXJyYXkuICovCisgICAgaW5mby0+ ZmVhdHVyZXNbdHlwZV0gPSBmZWF0OworCisgICAgaWYgKCAhb3B0X2NwdV9pbmZvICkKKyAgICAg ICAgcmV0dXJuIDA7CisKKyAgICBwcmludGsoWEVOTE9HX0lORk8gIkNBVDogZW5hYmxlZCBvbiBz b2NrZXQgJXUsIGNvc19tYXg6JXUsIGNibV9sZW46JXVcbiIsCisgICAgICAgICAgIGNwdV90b19z b2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKSwgZmVhdC0+Y29zX21heCwgZmVhdC0+Y2JtX2xlbik7 CisKKyAgICByZXR1cm4gMDsKK30KKworLyogTDMgQ0FUIHByb3BzICovCitzdGF0aWMgY29uc3Qg c3RydWN0IGZlYXRfcHJvcHMgbDNfY2F0X3Byb3BzID0geworICAgIC5jb3NfbnVtID0gMSwKKyAg ICAudHlwZVswXSA9IFBTUl9DQk1fVFlQRV9MMywKKyAgICAuYWx0X3R5cGUgPSBQU1JfQ0JNX1RZ UEVfVU5LTk9XTiwKK307CisKIHN0YXRpYyB2b2lkIF9faW5pdCBwYXJzZV9wc3JfYm9vbChjaGFy ICpzLCBjaGFyICp2YWx1ZSwgY2hhciAqZmVhdHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWFzaykKIHsKQEAgLTc0LDYgKzI3MCw5IEBAIHN0YXRp YyB2b2lkIF9faW5pdCBwYXJzZV9wc3JfcGFyYW0oY2hhciAqcykKICAgICAgICAgaWYgKCB2YWxf c3RyICYmICFzdHJjbXAocywgInJtaWRfbWF4IikgKQogICAgICAgICAgICAgb3B0X3JtaWRfbWF4 ID0gc2ltcGxlX3N0cnRvdWwodmFsX3N0ciwgTlVMTCwgMCk7CiAKKyAgICAgICAgaWYgKCB2YWxf c3RyICYmICFzdHJjbXAocywgImNvc19tYXgiKSApCisgICAgICAgICAgICBvcHRfY29zX21heCA9 IHNpbXBsZV9zdHJ0b3VsKHZhbF9zdHIsIE5VTEwsIDApOworCiAgICAgICAgIHMgPSBzcyArIDE7 CiAgICAgfSB3aGlsZSAoIHNzICk7CiB9CkBAIC0yMjksMTkgKzQyOCw5NiBAQCB2b2lkIHBzcl9k b21haW5fZnJlZShzdHJ1Y3QgZG9tYWluICpkKQogICAgIHBzcl9mcmVlX3JtaWQoZCk7CiB9CiAK LXN0YXRpYyBpbnQgcHNyX2NwdV9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUpCitzdGF0aWMgdm9p ZCBfX2luaXQgaW5pdF9wc3Iodm9pZCkKIHsKKyAgICBpZiAoIG9wdF9jb3NfbWF4IDwgMSApCisg ICAgeworICAgICAgICBwcmludGsoWEVOTE9HX0lORk8gIkNBVDogZGlzYWJsZWQsIGNvc19tYXgg aXMgdG9vIHNtYWxsXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNvY2tldF9p bmZvID0geHphbGxvY19hcnJheShzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvLCBucl9zb2NrZXRzKTsK KworICAgIGlmICggIXNvY2tldF9pbmZvICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5MT0df V0FSTklORyAiRmFpbGVkIHRvIGFsbG9jIHNvY2tldF9pbmZvIVxuIik7CisgICAgICAgIHJldHVy bjsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBwc3JfZnJlZSh2b2lkKQoreworICAg IHhmcmVlKHNvY2tldF9pbmZvKTsKKyAgICBzb2NrZXRfaW5mbyA9IE5VTEw7Cit9CisKK3N0YXRp YyBpbnQgcHNyX2NwdV9wcmVwYXJlKHZvaWQpCit7CisgICAgaWYgKCAhcHNyX2FsbG9jX2ZlYXRf ZW5hYmxlZCgpICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBNYWxsb2MgbWVtb3J5IGZv ciB0aGUgZ2xvYmFsIGZlYXR1cmUgbm9kZSBoZXJlLiAqLworICAgIGlmICggZmVhdF9sM19jYXQg PT0gTlVMTCAmJgorICAgICAgICAgKGZlYXRfbDNfY2F0ID0geHphbGxvYyhzdHJ1Y3QgZmVhdF9u b2RlKSkgPT0gTlVMTCApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCiAgICAgcmV0dXJuIDA7 CiB9CiAKIHN0YXRpYyB2b2lkIHBzcl9jcHVfaW5pdCh2b2lkKQogeworICAgIHN0cnVjdCBwc3Jf c29ja2V0X2luZm8gKmluZm87CisgICAgdW5zaWduZWQgaW50IHNvY2tldCwgY3B1ID0gc21wX3By b2Nlc3Nvcl9pZCgpOworICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQ7CisgICAgc3RydWN0IGNw dWlkX2xlYWYgcmVnczsKKworICAgIGlmICggIXBzcl9hbGxvY19mZWF0X2VuYWJsZWQoKSB8fCAh Ym9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1BRRSkgKQorICAgICAgICBnb3RvIGFzc29jX2luaXQ7 CisKKyAgICBpZiAoIGJvb3RfY3B1X2RhdGEuY3B1aWRfbGV2ZWwgPCBQU1JfQ1BVSURfTEVWRUxf Q0FUICkKKyAgICB7CisgICAgICAgIHNldHVwX2NsZWFyX2NwdV9jYXAoWDg2X0ZFQVRVUkVfUFFF KTsKKyAgICAgICAgZ290byBhc3NvY19pbml0OworICAgIH0KKworICAgIHNvY2tldCA9IGNwdV90 b19zb2NrZXQoY3B1KTsKKyAgICBpbmZvID0gc29ja2V0X2luZm8gKyBzb2NrZXQ7CisgICAgaWYg KCBpbmZvLT5mZWF0X2luaXQgKQorICAgICAgICBnb3RvIGFzc29jX2luaXQ7CisKKyAgICBzcGlu X2xvY2tfaW5pdCgmaW5mby0+cmVmX2xvY2spOworCisgICAgY3B1aWRfY291bnRfbGVhZihQU1Jf Q1BVSURfTEVWRUxfQ0FULCAwLCAmcmVncyk7CisgICAgaWYgKCByZWdzLmIgJiBQU1JfUkVTT1VS Q0VfVFlQRV9MMyApCisgICAgeworICAgICAgICBjcHVpZF9jb3VudF9sZWFmKFBTUl9DUFVJRF9M RVZFTF9DQVQsIDEsICZyZWdzKTsKKworICAgICAgICBmZWF0ID0gZmVhdF9sM19jYXQ7CisgICAg ICAgIGZlYXRfbDNfY2F0ID0gTlVMTDsKKworICAgICAgICBpZiAoICFjYXRfaW5pdF9mZWF0dXJl KCZyZWdzLCBmZWF0LCBpbmZvLCBGRUFUX1RZUEVfTDNfQ0FUKSApCisgICAgICAgICAgICBmZWF0 X3Byb3BzW0ZFQVRfVFlQRV9MM19DQVRdID0gJmwzX2NhdF9wcm9wczsKKyAgICB9CisKKyAgICBp bmZvLT5mZWF0X2luaXQgPSB0cnVlOworCisgYXNzb2NfaW5pdDoKICAgICBwc3JfYXNzb2NfaW5p dCgpOwogfQogCiBzdGF0aWMgdm9pZCBwc3JfY3B1X2ZpbmkodW5zaWduZWQgaW50IGNwdSkKIHsK LSAgICByZXR1cm47CisgICAgdW5zaWduZWQgaW50IHNvY2tldCA9IGNwdV90b19zb2NrZXQoY3B1 KTsKKworICAgIGlmICggIXBzcl9hbGxvY19mZWF0X2VuYWJsZWQoKSApCisgICAgICAgIHJldHVy bjsKKworICAgIC8qCisgICAgICogV2Ugb25seSBmcmVlIHdoZW4gd2UgYXJlIHRoZSBsYXN0IENQ VSBpbiB0aGUgc29ja2V0LiBUaGUgc29ja2V0X2NwdW1hc2sKKyAgICAgKiBpcyBjbGVhcmVkIHBy aW9yIHRvIHRoaXMgbm90aWZpY2F0aW9uIGNvZGUgYnkgcmVtb3ZlX3NpYmxpbmdpbmZvKCkuCisg ICAgICovCisgICAgaWYgKCBzb2NrZXRfY3B1bWFza1tzb2NrZXRdICYmIGNwdW1hc2tfZW1wdHko c29ja2V0X2NwdW1hc2tbc29ja2V0XSkgKQorICAgICAgICBmcmVlX3NvY2tldF9yZXNvdXJjZXMo c29ja2V0KTsKIH0KIAogc3RhdGljIGludCBjcHVfY2FsbGJhY2soCkBAIC0yNTMsNyArNTI5LDcg QEAgc3RhdGljIGludCBjcHVfY2FsbGJhY2soCiAgICAgc3dpdGNoICggYWN0aW9uICkKICAgICB7 CiAgICAgY2FzZSBDUFVfVVBfUFJFUEFSRToKLSAgICAgICAgcmMgPSBwc3JfY3B1X3ByZXBhcmUo Y3B1KTsKKyAgICAgICAgcmMgPSBwc3JfY3B1X3ByZXBhcmUoKTsKICAgICAgICAgYnJlYWs7CiAg ICAgY2FzZSBDUFVfU1RBUlRJTkc6CiAgICAgICAgIHBzcl9jcHVfaW5pdCgpOwpAQCAtMjgyLDEw ICs1NTgsMTQgQEAgc3RhdGljIGludCBfX2luaXQgcHNyX3ByZXNtcF9pbml0KHZvaWQpCiAgICAg aWYgKCAob3B0X3BzciAmIFBTUl9DTVQpICYmIG9wdF9ybWlkX21heCApCiAgICAgICAgIGluaXRf cHNyX2NtdChvcHRfcm1pZF9tYXgpOwogCi0gICAgcHNyX2NwdV9wcmVwYXJlKDApOworICAgIGlm ICggb3B0X3BzciAmIFBTUl9DQVQgKQorICAgICAgICBpbml0X3BzcigpOworCisgICAgaWYgKCBw c3JfY3B1X3ByZXBhcmUoKSApCisgICAgICAgIHBzcl9mcmVlKCk7CiAKICAgICBwc3JfY3B1X2lu aXQoKTsKLSAgICBpZiAoIHBzcl9jbXRfZW5hYmxlZCgpICkKKyAgICBpZiAoIHBzcl9jbXRfZW5h YmxlZCgpIHx8IHBzcl9hbGxvY19mZWF0X2VuYWJsZWQoKSApCiAgICAgICAgIHJlZ2lzdGVyX2Nw dV9ub3RpZmllcigmY3B1X25mYik7CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS14ODYvcHNyLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCmluZGV4IDU3 ZjQ3ZTkuLjgxNDEzMzYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKKysr IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaApAQCAtNTAsNiArNTAsNyBAQCBlbnVtIGNibV90 eXBlIHsKICAgICBQU1JfQ0JNX1RZUEVfTDMsCiAgICAgUFNSX0NCTV9UWVBFX0wzX0NPREUsCiAg ICAgUFNSX0NCTV9UWVBFX0wzX0RBVEEsCisgICAgUFNSX0NCTV9UWVBFX1VOS05PV04sCiB9Owog CiBleHRlcm4gc3RydWN0IHBzcl9jbXQgKnBzcl9jbXQ7Ci0tIAoxLjkuMQoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=