From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v11 04/23] x86: refactor psr: L3 CAT: implement main data structures, CPU init and free flows. Date: Wed, 3 May 2017 16:44:04 +0800 Message-ID: <1493801063-38513-5-git-send-email-yi.y.sun@linux.intel.com> References: <1493801063-38513-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d5q2h-0000Tz-VB for xen-devel@lists.xenproject.org; Wed, 03 May 2017 08:53:52 +0000 In-Reply-To: <1493801063-38513-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, he.chen@linux.intel.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 OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4KLS0tCnYxMToKICAgIC0gaGFuZGxl ICdmZWF0X2luaXQnLgogICAgLSBtZXJnZSBtYWluIGRhdGEgc3RydWN0dXJlcyBpbXBsZW1lbnRh dGlvbiBpbnRvIENQVSBpbml0L2ZyZWUgcGF0Y2gsCiAgICAgIGluY2x1ZGluZyBjb21taXQgbWVz c2FnZXMgYW5kIGNoYW5nZSBoaXN0b3J5LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KQogICAgLSByZW1vdmUgTVNSIHJlc3RvcmUgYWN0aW9uIHdoaWNoIGlzIHVubmVjZXNzYXJ5Lgog ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb3ZlICd0eXBlW10nIGRlY2xh cmF0aW9uIGludG8gdGhpcyBwYXRjaC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gbW9kaWZ5IGNvbW1lbnQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnYx MDoKICAgIC0gcmVtb3ZlIGluaXRpYWxpemF0aW9uIGZvciAnUFNSX1NPQ0tFVF9MM19DQVQnLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW5hbWUgJ2ZlYXRfb3BzJyB0 byAnZmVhdF9wcm9wcycuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1v dmUgJ2NibV9sZW4nIHRvICdmZWF0X3Byb3BzJyBiZWNhdXNlIGl0IGlzIGZlYXR1cmUgaW5kZXBl bmRlbnQgc28gZmFyLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb3Zl ICdjb3NfbWF4JyB0byAnZmVhdF9wcm9wcycgYmVjYXVzZSBpdCBpcyBmZWF0dXJlIGluZGVwZW5k ZW50LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb3ZlICdjb3NfbnVt JyB0byAnZmVhdF9wcm9wcycgYmVjYXVzZSBpdCBpcyBmZWF0dXJlIGluZGVwZW5kZW50LgogICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgdW5pb24gJ2luZm8nIGFu ZCBzdHJ1Y3QgJ3Bzcl9jYXRfaHdfaW5mbycuCiAgICAtIHJlbW92ZSAnZ2V0X2Nvc19tYXgnIGZy b20gJ2ZlYXRfcHJvcHMnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBy ZW1vdmUgJ2ZlYXRfbWFzaycgZnJvbSAncHNyX3NvY2tldF9pbmZvJyBiZWNhdXNlIHdlIGNhbiB1 c2UgJ2ZlYXR1cmVzW10nCiAgICAgIHRvIGNoZWNrIGlmIGFueSBmZWF0dXJlIGlzIGluaXRpYWxp emVkLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb3ZlICdyZWZfbG9j aycgYWJvdmUgJ2Nvc19yZWYnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAg LSBhZGp1c3QgY29tbWVudHMgYW5kIGNvbW1pdCBtZXNzYWdlIGFjY29yZGluZyB0byBhYm92ZSBj aGFuZ2VzLgogICAgLSByZW1vdmUgJ2FzbS94ODZfZW11bGF0ZS5oJyBpbmNsdXNpb24gYXMgaXQg aGFzIGJlZW4gaW5kaXJlY3RseSBpbmNsdWRlZC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gcmVtb3ZlICdDQVRfQ09TX05VTScgYXMgaXQgaXMgb25seSB1c2VkIG9uY2Uu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAnZmVhdF9tYXNr Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlcyBhYm91dCAn ZmVhdF9wcm9wcycuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92 ZSAnZ2V0X2Nvc19tYXgnIGhvb2sgZGVjbGFyYXRpb24uCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIG1vZGlmeSAnY2F0X2RlZmF1bHRfdmFsJyBpbXBsZW1lbnRhdGlvbi4K ICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW9kaWZ5ICdwc3JfYWxsb2Nf ZmVhdF9lbmFibGVkJyBpbXBsZW1lbnRhdGlvbiB0byBtYWtlIGl0IHNpbXBsZS4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVuYW1lICdmcmVlX2ZlYXR1cmUnIHRvICdm cmVlX3NvY2tldF9yZXNvdXJjZXMnIGJlY2F1c2UgaXQgaXMgZXhlY3V0ZWQKICAgICAgd2hlbiBz b2NrZXQgaXMgb2ZmbGluZS4gSXQgbmVlZHMgZnJlZSByZXNvdXJjZXMgcmVsYXRlZCB0byB0aGUg c29ja2V0LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBkZWZpbmUgJ2Zl YXRfaW5pdF9kb25lJyB0byBpdGVyYXRlIGZlYXR1cmUgYXJyYXkgdG8gY2hlY2sgaWYgYW55IGZl YXR1cmUKICAgICAgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIGlucHV0ICdzdHJ1Y3QgY3B1aWRfbGVhZicgcG9pbnRlciBpbnRvICdj YXRfaW5pdF9mZWF0dXJlJyB0byBhdm9pZCBtZW1vcnkKICAgICAgY29weS4KICAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW9kaWZ5ICdjYXRfaW5pdF9mZWF0dXJlJyB0byB1 c2Ugc3dpdGNoIGFuZCB0aGluZ3MgcmVsYXRlZCB0byBhYm92ZQogICAgICBjaGFuZ2VzLgogICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBhZGQgYW4gaW5kZW50YXRpb24gZm9y IGxhYmVsLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2OToKICAgIC0gcmVwbGFj ZSBmZWF0dXJlIGxpc3QgdG8gYSBmZWF0dXJlIHBvaW50ZXIgYXJyYXkuCiAgICAgIChzdWdnZXN0 ZWQgYnkgUm9nZXIgUGF1KQogICAgLSBhZGQgJ1BTUl9TT0NLRVRfTUFYX0ZFQVQnIGluICdlbnVt IHBzcl9mZWF0X3R5cGUnIHRvIGtub3cgZmVhdHVyZXMKICAgICAgYWNjb3VudC4KICAgICAgKHN1 Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIG1vdmUgJ2ZlYXRfb3BzJyBkZWNsYXJhdGlvbiBp bnRvICdmZWF0X25vZGUnIHN0cnVjdHVyZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUp CiAgICAtIGRpcmVjdGx5IHVzZSB1bmlub24gZm9yIGZlYXR1cmUgSFcgaW5mbyBhbmQgbW92ZSBp dHMgZGVjbGFyYXRpb24gaW50bwogICAgICAnZmVhdF9ub2RlJyBzdHJ1Y3R1cmUuCiAgICAgIChz dWdnZXN0ZWQgYnkgUm9nZXIgUGF1KQogICAgLSByZW1vdmUgJ2VudW0gcHNyX2ZlYXRfdHlwZSBm ZWF0dXJlJyBkZWNsYXJlZCBpbiAnZmVhdF9vcHMnIGJlY2F1c2UgaXQgaXMKICAgICAgbm90IHVz ZWZ1bCBhZnRlciB1c2luZyBmZWF0dXJlIHBvaW50ZXIgYXJyYXkuCiAgICAgIChzdWdnZXN0ZWQg YnkgUm9nZXIgUGF1KQogICAgLSByZW5hbWUgJ2wzX2NhdF9pbmZvJyB0byAnY2F0X2luZm8nIHRv IGJlIHVzZWQgYnkgYWxsIENBVC9DRFAgZmVhdHVyZXMuCiAgICAtIHJlbW92ZSAnbnJfZmVhdCcg d2hpY2ggaXMgb25seSBmb3IgYSByZWNvcmQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCiAgICAtIGFkZCAnY29zX251bScgdG8gcmVjb3JkIGhvdyBtYW55IENPUyByZWdpc3RlcnMg YXJlIHVzZWQgYnkgYSBmZWF0dXJlIGluCiAgICAgIG9uZSB0aW1lIGFjY2Vzcy4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVwbGFjZSAndWludDY0X3QnIHRvICd1aW50 MzJfdCcgZm9yIGNibSB2YWx1ZSBiZWNhdXNlIFNETSBzcGVjaWZpZXMgdGhlCiAgICAgIG1heCAz MiBiaXRzIGZvciBpdC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRk IGNvbW1pdCBtZXNzYWdlIHRvIGV4cGxhaW4gdGhlIGZsb3dzLgogICAgLSBoYW5kbGUgY3B1IG9m ZmxpbmUgYW5kIG9ubGluZSBhZ2FpbiBjYXNlIHRvIHJlYWQgTVNScyByZWdpc3RlcnMgdmFsdWVz CiAgICAgIGJhY2sgYW5kIHNhdmUgdGhlbSBpbnRvIGNvcyBhcnJheSB0byBtYWtlIHVzZXIgY2Fu IGdldCByZWFsIGRhdGEuCiAgICAtIGNyZWF0ZSBhIG5ldyBwYXRjaCBhYm91dCBtb3ZpbmcgJ2Nw dWlkX2NvdW50X2xlYWYnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAgICAtIG1vZGlm eSBjb21tZW50IHRvIGV4cGxhaW4gd2h5IG5vdCBmcmVlIHNvbWUgcmVzb3VyY2UgaW4gJ2ZyZWVf ZmVhdHVyZScuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0gaW1wbGVtZW50ICdw c3JfYWxsb2NfZmVhdF9lbmFibGVkJyB0byBjaGVjayBpZiBhbGxvY2F0aW9uIGZlYXR1cmUgaXMK ICAgICAgZW5hYmxlZCBpbiBjbWRsaW5lIGFuZCBzb21lIGluaXRpYWxpemF0aW9uIHdvcmsgZG9u ZS4KICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1KQogICAgLSBpbXBsZW1lbnQgJ2NhdF9kZWZh dWx0X3ZhbCcgdG8gc2V0IGRlZmF1bHQgdmFsdWUgZm9yIENBVCBmZWF0dXJlcy4KICAgICAgKHN1 Z2dlc3RlZCBieSBXZWkgTGl1KQogICAgLSByZXBsYWNlIGZlYXR1cmUgbGlzdCBoYW5kbGluZyB0 byBmZWF0dXJlIGFycmF5IGhhbmRsaW5nLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkK ICAgIC0gaW1wbGVtZW50IGEgY29tbW9uICdjYXRfaW5pdF9mZWF0dXJlJyB0byByZXBsYWNlIEwz IENBVC9MMiBDQVQgc3BlY2lmaWMKICAgICAgaW5pdCBmdW5jdGlvbnMuCiAgICAgIChzdWdnZXN0 ZWQgYnkgUm9nZXIgUGF1KQogICAgLSBtb2RpZnkgY29tbWVudHMgZm9yIGdsb2JhbCBmZWF0dXJl IG5vZGUuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5l Y2Vzc2FyeSBjb21tZW50cy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g cmVtb3ZlIHVubmVjZXNzYXJ5ICdlbHNlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gcmVtb3ZlICducl9mZWF0Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gbW9kaWZ5IHBhdGNoIHRpdGxlIHRvIGluZGljYXRlICdMMyBDQVQnLgogICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGVjayBnbG9iYWwgZmxhZyB3aXRoIGJv b3QgY3B1IG9wZXJhdGlvbnMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAt IHJlbW92ZSAnY3B1X2luaXRfd29yaycgYW5kIG1vdmUgY29kZXMgaW50byAncHNyX2NwdV9pbml0 Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlICdjcHVfZmlu aV93b3JrJyBhbmQgbW92ZSBjb2RlcyBpbnRvICdwc3JfY3B1X2ZpbmknLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBhc3NpZ24gdmFsdWUgZm9yICdjb3NfbnVtJy4KICAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlIGFib3V0ICd1aW50NjRf dCcgdG8gJ3VpbnQzMl90Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKdjg6CiAg ICAtIGZpeCBmb3JtYXQgaXNzdWUuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRl ayBXaWxrKQogICAgLSBhZGQgY29tbWVudHMgdG8gZXhwbGFpbiB3aHkgd2UgY2FyZSBhYm91dCBj cHVtYXNrX2VtcHR5IHdoZW4gdGhlIGxhc3QKICAgICAgY3B1IG9uIHNvY2tldCBpcyBvZmZsaW5l LgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKdjc6CiAgICAtIHNv cnQgaW5jbHVzaW9uIGZpbGVzIHBvc2l0aW9uLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUp CiAgICAtIGluaXRpYWxpemUgc3RydWN0dXJlIG9iamVjdHMgZm9yIGF2b2lkaW5nIHN1cnByaXNl LgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gZml4IHR5 cG8uCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBmaXgg YSBsb2dpY2FsIG1pc3Rha2Ugd2hlbiBoYW5kbGluZyB0aGUgbGFzdCBjcHUgb2ZmbGluZSBldmVu dC4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCnY2OgogICAgLSBt YWtlIGNvbW1pdCBtZXNzYWdlIGJlIGNsZWFyZXIuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFk IFJ6ZXN6dXRlayBXaWxrKQogICAgLSBmaXggd29yZGluZ3MuCiAgICAgIChzdWdnZXN0ZWQgYnkg S29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBhZGQgY29tbWVudHMgdG8gZXhwbGFpbiByZWxh dGlvbnNoaXAgYmV0d2VlbiAnZmVhdF9tYXNrJyBhbmQKICAgICAgJ2VudW0gcHNyX2ZlYXRfdHlw ZScuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSB1c2Ug J3N0cnVjdCBjcHVpZF9sZWFmJyBpbnRyb2R1Y2VkIGluIEFuZHJldydzIHBhdGNoLgogICAgICAo c3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gYWRkIGNvbW1lbnRzIGFi b3V0IGNwdV9hZGRfcmVtb3ZlX2xvY2suCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6 dXRlayBXaWxrKQogICAgLSBjaGFuZ2UgJ2NsZWFyX2JpdCcgdG8gJ19fY2xlYXJfYml0Jy4KICAg ICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGFkZCAnQVNTRVJU JyBjaGVjayB3aGVuIHNldHRpbmcgJ2ZlYXRfbWFzaycuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29u cmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBhZGp1c3QgJ3ByaW50aycgcG9zaXRpb24gdG8gYXZv aWQgb2RkIHNwYWNpbmcuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxr KQogICAgLSBhZGQgY29tbWVudCB0byBleHBsYWluIHVzYWdlIG9mICdmZWF0X2wzX2NhdCcuCiAg ICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBmaXggd29yZGlu Zy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIG1vdmUg J2NwdWlkX2NvdW50X2xlYWYnIGhlbHBlciBmdW5jdGlvbiB0byAnYXNtLXg4Ni9wcm9jZXNzb3Iu aCcuCiAgICAgIEl0IGNhbm5vdCBiZSBtb3ZlZCB0byAnY3B1aWQuaCcgd2hpY2ggY2F1c2VzIGNv bXBpbGF0aW9uIGVycm9yIGJlY2F1c2UKICAgICAgb2YgaGVhZGVyIGZpbGUgbG9vcCByZWZlcmVu Y2UuCiAgICAgIChzdWdnZXN0ZWQgYnkgQW5kcmV3IENvb3BlcikKdjU6CiAgICAtIHJlbW92ZSBz ZWN0aW9uIG51bWJlci4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVt b3ZlIGRvdWJsZSBibGFuay4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g YWRkIGNvbW1lbnQgdG8gZXhwbGFpbiB0aGUgcmVhc29uIHRvIGRlZmluZSAnZmVhdF9sM19jYXQn LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSB1c2UgJ2xpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJl bW92ZSBjb2RlcyB0byBmcmVlICdmZWF0X2wzX2NhdCcgaW4gJ2ZyZWVfZmVhdHVyZScgdG8gYXZv aWQgdGhlIG5lZWQKICAgICAgZm9yIGFuIGFsbG9jYXRpb24gdGhlIG5leHQgdGltZSBhIENQVSBj b21lcyBvbmxpbmUuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGRlZmlu ZSAnc3RydWN0IGNwdWlkX2xlYWZfcmVncycgdG8gZW5jYXBzdWxhdGUgZWF4fmVkeC4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcHJpbnQgZmVhdHVyZSBpbmZvIG9uIGEg c29ja2V0IG9ubHkgd2hlbiAnb3B0X2NwdV9pbmZvJyBpcyB0cnVlLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSBkZWNsYXJlIGdsb2JhbCB2YXJpYWJsZSAnbDNfY2F0X29w cycgdG8gJ3N0YXRpYyBjb25zdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAg ICAtIHVzZSAnY3VycmVudF9jcHVfZGF0YScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCiAgICAtIHJlbmFtZSAnZmVhdF90bXAnIHRvICdmZWF0Jy4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKICAgIC0gY2xlYXIgUFFFIGZlYXR1cmUgYml0IHdoZW4gdGhlIG1heGlt dW0gQ1BVSUQgbGV2ZWwgaXMgdG9vIGxvdy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gZGlyZWN0bHkgY2FsbCAnbDNfY2F0X2luaXRfZmVhdHVyZScuIE5vIG5lZWQgdG8g bWFrZSBpdCBhIGNhbGxiYWNrCiAgICAgIGZ1bmN0aW9uLgogICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKQogICAgLSByZW1vdmUgbG9jYWwgdmFyaWFibGUgJ2luZm8nLgogICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb3ZlICdJTklUX0xJU1RfSEVBRCcgaW50byAn Y3B1X2luaXRfd29yaycgdG8gYmUgdG9nZXRoZXIgd2l0aAogICAgICBzcGluX2xvY2tfaW5pdCgp LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgJ2NwdV9wcmVw YXJlX3dvcmsnIGFuZCBtb3ZlIGl0cyBjb250ZW50IGludG8gJ3Bzcl9jcHVfcHJlcGFyZScuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY0OgogICAgLSBjcmVhdGUgdGhpcyBwYXRj aCBiZWNhdXNlIG9mIHJlbW92aW5nIGFsbCBvbGQgQ0FUL0NEUCBjb2RlcyB0byBtYWtlCiAgICAg IGltcGxlbWVudGF0aW9uIGJlIG1vcmUgZWFzaWx5IHVuZGVyc3Rvb2QuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCi0tLQogeGVuL2FyY2gveDg2L3Bzci5jIHwgMjc3ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiAxIGZpbGUgY2hh bmdlZCwgMjcxIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L3Bzci5jIGIveGVuL2FyY2gveDg2L3Bzci5jCmluZGV4IDk2YTg1ODkuLmI3Mzg1 NmUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wc3IuYworKysgYi94ZW4vYXJjaC94ODYvcHNy LmMKQEAgLTEzLDE2ICsxMywxMTEgQEAKICAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKICAqIG1vcmUgZGV0 YWlscy4KICAqLwotI2luY2x1ZGUgPHhlbi9pbml0Lmg+CiAjaW5jbHVkZSA8eGVuL2NwdS5oPgog I2luY2x1ZGUgPHhlbi9lcnIuaD4KKyNpbmNsdWRlIDx4ZW4vaW5pdC5oPgogI2luY2x1ZGUgPHhl bi9zY2hlZC5oPgogI2luY2x1ZGUgPGFzbS9wc3IuaD4KIAorLyoKKyAqIFRlcm1pbm9sb2d5Ogor ICogLSBDQVQgICAgICAgICBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kKKyAqIC0gQ0JNICAg ICAgICAgQ2FwYWNpdHkgQml0TWFza3MKKyAqIC0gQ0RQICAgICAgICAgQ29kZSBhbmQgRGF0YSBQ cmlvcml0aXphdGlvbgorICogLSBDTVQgICAgICAgICBDYWNoZSBNb25pdG9yaW5nIFRlY2hub2xv Z3kKKyAqIC0gQ09TL0NMT1MgICAgQ2xhc3Mgb2YgU2VydmljZS4gQWxzbyBtZWFuIENPUyByZWdp c3RlcnMuCisgKiAtIENPU19NQVggICAgIE1heCBudW1iZXIgb2YgQ09TIGZvciB0aGUgZmVhdHVy ZSAobWludXMgMSkKKyAqIC0gTVNScyAgICAgICAgTWFjaGluZSBTcGVjaWZpYyBSZWdpc3RlcnMK KyAqIC0gUFNSICAgICAgICAgSW50ZWwgUGxhdGZvcm0gU2hhcmVkIFJlc291cmNlCisgKi8KKwog I2RlZmluZSBQU1JfQ01UICAgICAgICAoMTw8MCkKICNkZWZpbmUgUFNSX0NBVCAgICAgICAgKDE8 PDEpCiAjZGVmaW5lIFBTUl9DRFAgICAgICAgICgxPDwyKQogCisjZGVmaW5lIENBVF9DQk1fTEVO X01BU0sgMHgxZgorI2RlZmluZSBDQVRfQ09TX01BWF9NQVNLIDB4ZmZmZgorCisvKgorICogUGVy IFNETSBjaGFwdGVyICdDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3k6IENhY2hlIE1hc2sgQ29u ZmlndXJhdGlvbicsCisgKiB0aGUgTVNScyByYW5naW5nIGZyb20gMEM5MEggdGhyb3VnaCAwRDBG SCAoaW5jbHVzaXZlKSwgZW5hYmxlcyBzdXBwb3J0IGZvcgorICogdXAgdG8gMTI4IEwzIENBVCBD bGFzc2VzIG9mIFNlcnZpY2UuIFRoZSBDT1NfSUQ9WzAsMTI3XS4KKyAqCisgKiBUaGUgTVNScyBy YW5naW5nIGZyb20gMEQxMEggdGhyb3VnaCAwRDRGSCAoaW5jbHVzaXZlKSwgZW5hYmxlcyBzdXBw b3J0IGZvcgorICogdXAgdG8gNjQgTDIgQ0FUIENPUy4gVGhlIENPU19JRD1bMCw2M10uCisgKgor ICogU28sIHRoZSBtYXhpbXVtIENPUyByZWdpc3RlciBjb3VudCBvZiBvbmUgZmVhdHVyZSBpcyAx MjguCisgKi8KKyNkZWZpbmUgTUFYX0NPU19SRUdfQ05UICAxMjgKKworLyoKKyAqIEV2ZXJ5IFBT UiBmZWF0dXJlIHVzZXMgc29tZSBDT1MgcmVnaXN0ZXJzIGZvciBlYWNoIENPUyBJRCwgZS5nLiBD RFAgdXNlcyAyCisgKiBDT1MgcmVnaXN0ZXJzIChEQVRBIGFuZCBDT0RFKSBmb3Igb25lIENPUyBJ RCwgYnV0IENBVCB1c2VzIDEgQ09TIHJlZ2lzdGVyLgorICogV2UgdXNlIGJlbG93IG1hY3JvIGFz IHRoZSBtYXggbnVtYmVyIG9mIENPUyByZWdpc3RlcnMgdXNlZCBieSBhbGwgZmVhdHVyZXMuCisg KiBTbyBmYXIsIGl0IGlzIDIgd2hpY2ggbWVhbnMgQ0RQJ3MgQ09TIHJlZ2lzdGVycyBudW1iZXIu CisgKi8KKyNkZWZpbmUgUFNSX01BWF9DT1NfTlVNIDIKKworZW51bSBwc3JfZmVhdF90eXBlIHsK KyAgICBQU1JfU09DS0VUX0wzX0NBVCwKKyAgICBQU1JfU09DS0VUX0ZFQVRfTlVNLAorfTsKKwor LyoKKyAqIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgb25lIGZlYXR1cmUuCisgKiBjb3NfbWF4 ICAgICAtIFRoZSBtYXggQ09TIHJlZ2lzdGVycyBudW1iZXIgZ290IHRocm91Z2ggQ1BVSUQuCisg KiBjYm1fbGVuICAgICAtIFRoZSBsZW5ndGggb2YgQ0JNIGdvdCB0aHJvdWdoIENQVUlELgorICog Y29zX3JlZ192YWwgLSBBcnJheSB0byBzdG9yZSB0aGUgdmFsdWVzIG9mIENPUyByZWdpc3RlcnMu IE9uZSBlbnRyeSBzdG9yZXMKKyAqICAgICAgICAgICAgICAgdGhlIHZhbHVlIG9mIG9uZSBDT1Mg cmVnaXN0ZXIuCisgKiAgICAgICAgICAgICAgIEZvciBMMyBDQVQgYW5kIEwyIENBVCwgb25lIGVu dHJ5IGNvcnJlc3BvbmRzIHRvIG9uZSBDT1NfSUQuCisgKiAgICAgICAgICAgICAgIEZvciBDRFAs IHR3byBlbnRyaWVzIGNvcnJlc3BvbmQgdG8gb25lIENPU19JRC4gRS5nLgorICogICAgICAgICAg ICAgICBDT1NfSUQ9MCBjb3JyZXNwb25kcyB0byBjb3NfcmVnX3ZhbFswXSAoRGF0YSkgYW5kCisg KiAgICAgICAgICAgICAgIGNvc19yZWdfdmFsWzFdIChDb2RlKS4KKyAqLworc3RydWN0IGZlYXRf bm9kZSB7CisgICAgLyogY29zX21heCBhbmQgY2JtX2xlbiBhcmUgY29tbW9uIHZhbHVlcyBmb3Ig YWxsIGZlYXR1cmVzIHNvIGZhci4gKi8KKyAgICB1bnNpZ25lZCBpbnQgY29zX21heDsKKyAgICB1 bnNpZ25lZCBpbnQgY2JtX2xlbjsKKyAgICB1aW50MzJfdCBjb3NfcmVnX3ZhbFtNQVhfQ09TX1JF R19DTlRdOworfTsKKworLyoKKyAqIFRoaXMgc3RydWN0dXJlIGRlZmluZXMgZmVhdHVyZSBzcGVj aWZpYyB2YWx1ZXMsIGUuZy4gY29zX251bS4KKyAqCisgKiBBcnJheSAnZmVhdF9wcm9wcycgaXMg ZGVmaW5lZCB0byBzYXZlIGV2ZXJ5IGZlYXR1cmUncyBwcm9wZXJ0aWVzLiBXZSB1c2UKKyAqICdl bnVtIHBzcl9mZWF0X3R5cGUnIGFzIGluZGV4LgorICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGZl YXRfcHJvcHMgeworICAgIC8qCisgICAgICogY29zX251bSAtIENPUyByZWdpc3RlcnMgbnVtYmVy IHRoYXQgZmVhdHVyZSB1c2VzIGZvciBvbmUgQ09TIElELgorICAgICAqICAgICAgICAgICBJdCBp cyBkZWZpbmVkIGluIFNETS4KKyAgICAgKi8KKyAgICB1bnNpZ25lZCBpbnQgY29zX251bTsKKwor ICAgIC8qCisgICAgICogQW4gYXJyYXkgdG8gc2F2ZSBhbGwgJ2VudW0gY2JtX3R5cGUnIHZhbHVl cyBvZiB0aGUgZmVhdHVyZS4gSXQgaXMKKyAgICAgKiB1c2VkIHdpdGggY29zX251bSB0b2dldGhl ciB0byBnZXQvd3JpdGUgYSBmZWF0dXJlJ3MgQ09TIHJlZ2lzdGVycworICAgICAqIHZhbHVlcyBv bmUgYnkgb25lLgorICAgICAqLworICAgIGVudW0gY2JtX3R5cGUgdHlwZVtQU1JfTUFYX0NPU19O VU1dOworfSAqZmVhdF9wcm9wc1tQU1JfU09DS0VUX0ZFQVRfTlVNXTsKKworLyoKKyAqIFBTUiBm ZWF0dXJlcyBhcmUgbWFuYWdlZCBwZXIgc29ja2V0LiBCZWxvdyBzdHJ1Y3R1cmUgZGVmaW5lcyB0 aGUgbWVtYmVycworICogdXNlZCB0byBtYW5hZ2UgdGhlc2UgZmVhdHVyZXMuCisgKiByZWZfbG9j ayAgLSBBIGxvY2sgdG8gcHJvdGVjdCBjb3NfcmVmLgorICogZmVhdHVyZXMgIC0gQSBmZWF0dXJl IG5vZGUgYXJyYXkgdXNlZCB0byBtYW5hZ2UgYWxsIGZlYXR1cmVzIGVuYWJsZWQuCisgKiBjb3Nf cmVmICAgLSBBIHJlZmVyZW5jZSBjb3VudCBhcnJheSB0byByZWNvcmQgaG93IG1hbnkgZG9tYWlu cyBhcmUgdXNpbmcgdGhlCisgKiAgICAgICAgICAgICBDT1MgSUQuIEV2ZXJ5IGVudHJ5IG9mIGNv c19yZWYgY29ycmVzcG9uZHMgdG8gb25lIENPUyBJRC4KKyAqLworc3RydWN0IHBzcl9zb2NrZXRf aW5mbyB7CisgICAgYm9vbCBmZWF0X2luaXQ7CisgICAgc3BpbmxvY2tfdCByZWZfbG9jazsKKyAg ICAvKiBGZWF0dXJlIGFycmF5J3MgaW5kZXggaXMgJ2VudW0gcHNyX2ZlYXRfdHlwZScgd2hpY2gg aXMgc2FtZSBhcyAncHJvcHMnICovCisgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdHVyZXNbUFNS X1NPQ0tFVF9GRUFUX05VTV07CisgICAgdW5zaWduZWQgaW50IGNvc19yZWZbTUFYX0NPU19SRUdf Q05UXTsKK307CisKIHN0cnVjdCBwc3JfYXNzb2MgewogICAgIHVpbnQ2NF90IHZhbDsKICAgICB1 aW50NjRfdCBjb3NfbWFzazsKQEAgLTMwLDExICsxMjUsOTUgQEAgc3RydWN0IHBzcl9hc3NvYyB7 CiAKIHN0cnVjdCBwc3JfY210ICpfX3JlYWRfbW9zdGx5IHBzcl9jbXQ7CiAKK3N0YXRpYyBzdHJ1 Y3QgcHNyX3NvY2tldF9pbmZvICpfX3JlYWRfbW9zdGx5IHNvY2tldF9pbmZvOworCiBzdGF0aWMg dW5zaWduZWQgaW50IG9wdF9wc3I7CiBzdGF0aWMgdW5zaWduZWQgaW50IF9faW5pdGRhdGEgb3B0 X3JtaWRfbWF4ID0gMjU1Oworc3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IG9wdF9j b3NfbWF4ID0gTUFYX0NPU19SRUdfQ05UOwogc3RhdGljIHVpbnQ2NF90IHJtaWRfbWFzazsKIHN0 YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgcHNyX2Fzc29jLCBwc3JfYXNzb2MpOwogCisvKgor ICogRGVjbGFyZSBnbG9iYWwgZmVhdHVyZSBub2RlIGZvciBldmVyeSBmZWF0dXJlIHRvIGZhY2ls aXRhdGUgdGhlIGZlYXR1cmUKKyAqIGFycmF5IGNyZWF0aW9uLiBJdCBpcyB1c2VkIHRvIHRyYW5z aWVudGx5IHN0b3JlIGEgc3BhcmUgbm9kZS4KKyAqLworc3RhdGljIHN0cnVjdCBmZWF0X25vZGUg KmZlYXRfbDNfY2F0OworCisvKiBDb21tb24gZnVuY3Rpb25zICovCisjZGVmaW5lIGNhdF9kZWZh dWx0X3ZhbChsZW4pICgweGZmZmZmZmZmID4+ICgzMiAtIChsZW4pKSkKKworLyoKKyAqIFVzZSB0 aGlzIGZ1bmN0aW9uIHRvIGNoZWNrIGlmIGFueSBhbGxvY2F0aW9uIGZlYXR1cmUgaGFzIGJlZW4g ZW5hYmxlZAorICogaW4gY21kbGluZS4KKyAqLworc3RhdGljIGJvb2wgcHNyX2FsbG9jX2ZlYXRf ZW5hYmxlZCh2b2lkKQoreworICAgIHJldHVybiAhIXNvY2tldF9pbmZvOworfQorCitzdGF0aWMg dm9pZCBmcmVlX3NvY2tldF9yZXNvdXJjZXModW5zaWduZWQgaW50IHNvY2tldCkKK3sKKyAgICB1 bnNpZ25lZCBpbnQgaTsKKyAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvID0gc29ja2V0 X2luZm8gKyBzb2NrZXQ7CisKKyAgICBpZiAoICFpbmZvICkKKyAgICAgICAgcmV0dXJuOworCisg ICAgLyoKKyAgICAgKiBGcmVlIHJlc291cmNlcyBvZiBmZWF0dXJlcy4gVGhlIGdsb2JhbCBmZWF0 dXJlIG9iamVjdCwgZS5nLiBmZWF0X2wzX2NhdCwKKyAgICAgKiBtYXkgbm90IGJlIGZyZWVkIGhl cmUgaWYgaXQgaXMgbm90IGFkZGVkIGludG8gYXJyYXkuIEl0IGlzIHNpbXBseSBiZWluZworICAg ICAqIGtlcHQgdW50aWwgdGhlIG5leHQgQ1BVIG9ubGluZSBhdHRlbXB0LgorICAgICAqLworICAg IGZvciAoIGkgPSAwOyBpIDwgUFNSX1NPQ0tFVF9GRUFUX05VTTsgaSsrICkKKyAgICB7CisgICAg ICAgIHhmcmVlKGluZm8tPmZlYXR1cmVzW2ldKTsKKyAgICAgICAgaW5mby0+ZmVhdHVyZXNbaV0g PSBOVUxMOworICAgIH0KKworICAgIGluZm8tPmZlYXRfaW5pdCA9IGZhbHNlOworfQorCisvKiBD QVQgY29tbW9uIGZ1bmN0aW9ucyBpbXBsZW1lbnRhdGlvbi4gKi8KK3N0YXRpYyB2b2lkIGNhdF9p bml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSB0eXBlKQoreworICAgIC8qIE5vIHZh bGlkIHZhbHVlIHNvIGRvIG5vdCBlbmFibGUgZmVhdHVyZS4gKi8KKyAgICBpZiAoICFyZWdzLT5h IHx8ICFyZWdzLT5kICkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmVhdC0+Y2JtX2xlbiA9IChy ZWdzLT5hICYgQ0FUX0NCTV9MRU5fTUFTSykgKyAxOworICAgIGZlYXQtPmNvc19tYXggPSBtaW4o b3B0X2Nvc19tYXgsIHJlZ3MtPmQgJiBDQVRfQ09TX01BWF9NQVNLKTsKKworICAgIHN3aXRjaCAo IHR5cGUgKQorICAgIHsKKyAgICBjYXNlIFBTUl9TT0NLRVRfTDNfQ0FUOgorICAgICAgICAvKiBj b3M9MCBpcyByZXNlcnZlZCBhcyBkZWZhdWx0IGNibShhbGwgYml0cyB3aXRoaW4gY2JtX2xlbiBh cmUgMSkuICovCisgICAgICAgIGZlYXQtPmNvc19yZWdfdmFsWzBdID0gY2F0X2RlZmF1bHRfdmFs KGZlYXQtPmNibV9sZW4pOworCisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAg ICAgcmV0dXJuOworICAgIH0KKworICAgIC8qIEFkZCB0aGlzIGZlYXR1cmUgaW50byBhcnJheS4g Ki8KKyAgICBpbmZvLT5mZWF0dXJlc1t0eXBlXSA9IGZlYXQ7CisKKyAgICBpZiAoICFvcHRfY3B1 X2luZm8gKQorICAgICAgICByZXR1cm47CisKKyAgICBwcmludGsoWEVOTE9HX0lORk8gIiVzIENB VDogZW5hYmxlZCBvbiBzb2NrZXQgJXUsIGNvc19tYXg6JXUsIGNibV9sZW46JXVcbiIsCisgICAg ICAgICAgICgodHlwZSA9PSBQU1JfU09DS0VUX0wzX0NBVCkgPyAiTDMiIDogIkwyIiksCisgICAg ICAgICAgIGNwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKSwgZmVhdC0+Y29zX21heCwg ZmVhdC0+Y2JtX2xlbik7Cit9CisKKy8qIEwzIENBVCBwcm9wcyAqLworc3RhdGljIHN0cnVjdCBm ZWF0X3Byb3BzIGwzX2NhdF9wcm9wcyA9IHsKKyAgICAuY29zX251bSA9IDEsCit9OworCiBzdGF0 aWMgdm9pZCBfX2luaXQgcGFyc2VfcHNyX2Jvb2woY2hhciAqcywgY2hhciAqdmFsdWUsIGNoYXIg KmZlYXR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50 IG1hc2spCiB7CkBAIC03NCw2ICsyNTMsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcGFyc2VfcHNy X3BhcmFtKGNoYXIgKnMpCiAgICAgICAgIGlmICggdmFsX3N0ciAmJiAhc3RyY21wKHMsICJybWlk X21heCIpICkKICAgICAgICAgICAgIG9wdF9ybWlkX21heCA9IHNpbXBsZV9zdHJ0b3VsKHZhbF9z dHIsIE5VTEwsIDApOwogCisgICAgICAgIGlmICggdmFsX3N0ciAmJiAhc3RyY21wKHMsICJjb3Nf bWF4IikgKQorICAgICAgICAgICAgb3B0X2Nvc19tYXggPSBzaW1wbGVfc3RydG91bCh2YWxfc3Ry LCBOVUxMLCAwKTsKKwogICAgICAgICBzID0gc3MgKyAxOwogICAgIH0gd2hpbGUgKCBzcyApOwog fQpAQCAtMjI5LDE5ICs0MTEsOTggQEAgdm9pZCBwc3JfZG9tYWluX2ZyZWUoc3RydWN0IGRvbWFp biAqZCkKICAgICBwc3JfZnJlZV9ybWlkKGQpOwogfQogCi1zdGF0aWMgaW50IHBzcl9jcHVfcHJl cGFyZSh1bnNpZ25lZCBpbnQgY3B1KQorc3RhdGljIHZvaWQgX19pbml0IGluaXRfcHNyKHZvaWQp Cit7CisgICAgaWYgKCBvcHRfY29zX21heCA8IDEgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhF TkxPR19JTkZPICJDQVQ6IGRpc2FibGVkLCBjb3NfbWF4IGlzIHRvbyBzbWFsbFxuIik7CisgICAg ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzb2NrZXRfaW5mbyA9IHh6YWxsb2NfYXJyYXkoc3Ry dWN0IHBzcl9zb2NrZXRfaW5mbywgbnJfc29ja2V0cyk7CisKKyAgICBpZiAoICFzb2NrZXRfaW5m byApCisgICAgeworICAgICAgICBwcmludGsoWEVOTE9HX0lORk8gIkZhaWxlZCB0byBhbGxvYyBz b2NrZXRfaW5mbyFcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCitzdGF0aWMgdm9p ZCBfX2luaXQgcHNyX2ZyZWUodm9pZCkKIHsKKyAgICB4ZnJlZShzb2NrZXRfaW5mbyk7CisgICAg c29ja2V0X2luZm8gPSBOVUxMOworfQorCitzdGF0aWMgaW50IHBzcl9jcHVfcHJlcGFyZSh2b2lk KQoreworICAgIGlmICggIXBzcl9hbGxvY19mZWF0X2VuYWJsZWQoKSApCisgICAgICAgIHJldHVy biAwOworCisgICAgLyogTWFsbG9jIG1lbW9yeSBmb3IgdGhlIGdsb2JhbCBmZWF0dXJlIG5vZGUg aGVyZS4gKi8KKyAgICBpZiAoIGZlYXRfbDNfY2F0ID09IE5VTEwgJiYKKyAgICAgICAgIChmZWF0 X2wzX2NhdCA9IHh6YWxsb2Moc3RydWN0IGZlYXRfbm9kZSkpID09IE5VTEwgKQorICAgICAgICBy ZXR1cm4gLUVOT01FTTsKKwogICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBwc3JfY3B1 X2luaXQodm9pZCkKIHsKKyAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvOworICAgIHVu c2lnbmVkIGludCBzb2NrZXQ7CisgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3Jf aWQoKTsKKyAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0OworICAgIHN0cnVjdCBjcHVpZF9sZWFm IHJlZ3M7CisKKyAgICBpZiAoICFwc3JfYWxsb2NfZmVhdF9lbmFibGVkKCkgfHwgIWJvb3RfY3B1 X2hhcyhYODZfRkVBVFVSRV9QUUUpICkKKyAgICAgICAgZ290byBhc3NvY19pbml0OworCisgICAg aWYgKCBib290X2NwdV9kYXRhLmNwdWlkX2xldmVsIDwgUFNSX0NQVUlEX0xFVkVMX0NBVCApCisg ICAgeworICAgICAgICBzZXR1cF9jbGVhcl9jcHVfY2FwKFg4Nl9GRUFUVVJFX1BRRSk7CisgICAg ICAgIGdvdG8gYXNzb2NfaW5pdDsKKyAgICB9CisKKyAgICBzb2NrZXQgPSBjcHVfdG9fc29ja2V0 KGNwdSk7CisgICAgaW5mbyA9IHNvY2tldF9pbmZvICsgc29ja2V0OworICAgIGlmICggaW5mby0+ ZmVhdF9pbml0ICkKKyAgICAgICAgZ290byBhc3NvY19pbml0OworCisgICAgc3Bpbl9sb2NrX2lu aXQoJmluZm8tPnJlZl9sb2NrKTsKKworICAgIGNwdWlkX2NvdW50X2xlYWYoUFNSX0NQVUlEX0xF VkVMX0NBVCwgMCwgJnJlZ3MpOworICAgIGlmICggcmVncy5iICYgUFNSX1JFU09VUkNFX1RZUEVf TDMgKQorICAgIHsKKyAgICAgICAgY3B1aWRfY291bnRfbGVhZihQU1JfQ1BVSURfTEVWRUxfQ0FU LCAxLCAmcmVncyk7CisKKyAgICAgICAgZmVhdCA9IGZlYXRfbDNfY2F0OworICAgICAgICBmZWF0 X2wzX2NhdCA9IE5VTEw7CisgICAgICAgIGwzX2NhdF9wcm9wcy50eXBlWzBdID0gUFNSX0NCTV9U WVBFX0wzOworICAgICAgICBmZWF0X3Byb3BzW1BTUl9TT0NLRVRfTDNfQ0FUXSA9ICZsM19jYXRf cHJvcHM7CisKKyAgICAgICAgY2F0X2luaXRfZmVhdHVyZSgmcmVncywgZmVhdCwgaW5mbywgUFNS X1NPQ0tFVF9MM19DQVQpOworCisgICAgICAgIGluZm8tPmZlYXRfaW5pdCA9IHRydWU7CisgICAg fQorCisgYXNzb2NfaW5pdDoKICAgICBwc3JfYXNzb2NfaW5pdCgpOwogfQogCiBzdGF0aWMgdm9p ZCBwc3JfY3B1X2ZpbmkodW5zaWduZWQgaW50IGNwdSkKIHsKLSAgICByZXR1cm47CisgICAgdW5z aWduZWQgaW50IHNvY2tldCA9IGNwdV90b19zb2NrZXQoY3B1KTsKKworICAgIGlmICggIXBzcl9h bGxvY19mZWF0X2VuYWJsZWQoKSApCisgICAgICAgIHJldHVybjsKKworICAgIC8qCisgICAgICog V2Ugb25seSBmcmVlIHdoZW4gd2UgYXJlIHRoZSBsYXN0IENQVSBpbiB0aGUgc29ja2V0LiBUaGUg c29ja2V0X2NwdW1hc2sKKyAgICAgKiBpcyBjbGVhcmVkIHByaW9yIHRvIHRoaXMgbm90aWZpY2F0 aW9uIGNvZGUgYnkgcmVtb3ZlX3NpYmxpbmdpbmZvKCkuCisgICAgICovCisgICAgaWYgKCBzb2Nr ZXRfY3B1bWFza1tzb2NrZXRdICYmIGNwdW1hc2tfZW1wdHkoc29ja2V0X2NwdW1hc2tbc29ja2V0 XSkgKQorICAgICAgICBmcmVlX3NvY2tldF9yZXNvdXJjZXMoc29ja2V0KTsKIH0KIAogc3RhdGlj IGludCBjcHVfY2FsbGJhY2soCkBAIC0yNTMsNyArNTE0LDcgQEAgc3RhdGljIGludCBjcHVfY2Fs bGJhY2soCiAgICAgc3dpdGNoICggYWN0aW9uICkKICAgICB7CiAgICAgY2FzZSBDUFVfVVBfUFJF UEFSRToKLSAgICAgICAgcmMgPSBwc3JfY3B1X3ByZXBhcmUoY3B1KTsKKyAgICAgICAgcmMgPSBw c3JfY3B1X3ByZXBhcmUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDUFVfU1RBUlRJTkc6 CiAgICAgICAgIHBzcl9jcHVfaW5pdCgpOwpAQCAtMjgyLDEwICs1NDMsMTQgQEAgc3RhdGljIGlu dCBfX2luaXQgcHNyX3ByZXNtcF9pbml0KHZvaWQpCiAgICAgaWYgKCAob3B0X3BzciAmIFBTUl9D TVQpICYmIG9wdF9ybWlkX21heCApCiAgICAgICAgIGluaXRfcHNyX2NtdChvcHRfcm1pZF9tYXgp OwogCi0gICAgcHNyX2NwdV9wcmVwYXJlKDApOworICAgIGlmICggb3B0X3BzciAmIFBTUl9DQVQg KQorICAgICAgICBpbml0X3BzcigpOworCisgICAgaWYgKCBwc3JfY3B1X3ByZXBhcmUoKSApCisg ICAgICAgIHBzcl9mcmVlKCk7CiAKICAgICBwc3JfY3B1X2luaXQoKTsKLSAgICBpZiAoIHBzcl9j bXRfZW5hYmxlZCgpICkKKyAgICBpZiAoIHBzcl9jbXRfZW5hYmxlZCgpIHx8IHBzcl9hbGxvY19m ZWF0X2VuYWJsZWQoKSApCiAgICAgICAgIHJlZ2lzdGVyX2NwdV9ub3RpZmllcigmY3B1X25mYik7 CiAKICAgICByZXR1cm4gMDsKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==