From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v14 01/23] docs: create Cache Allocation Technology (CAT) and Code and Data Prioritization (CDP) feature document Date: Sat, 15 Jul 2017 08:31:34 +0800 Message-ID: <1500078716-5928-2-git-send-email-yi.y.sun@linux.intel.com> References: <1500078716-5928-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dWBDX-000736-EK for xen-devel@lists.xenproject.org; Sat, 15 Jul 2017 00:45:55 +0000 In-Reply-To: <1500078716-5928-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 VGhpcyBwYXRjaCBjcmVhdGVzIENBVCBhbmQgQ0RQIGZlYXR1cmUgZG9jdW1lbnQgaW4gZG9jL2Zl YXR1cmVzLy4gSXQgZGVzY3JpYmVzCmtleSBwb2ludHMgdG8gaW1wbGVtZW50IEwzIENBVC9DRFAg YW5kIEwyIENBVCB3aGljaCBpcyBkZXNjcmliZWQgaW4gZGV0YWlscyBpbgpJbnRlbCBTRE0gIklO VEVMwq4gUkVTT1VSQ0UgRElSRUNUT1IgVEVDSE5PTE9HWSAoSU5URUzCriBSRFQpIEFMTE9DQVRJ T04gRkVBVFVSRVMiLgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRl bC5jb20+ClJldmlld2VkLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9y YWNsZS5jb20+ClJldmlld2VkLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0K djE0OgogICAgLSBmaXggYSB0eXBvLgogICAgICAoc3VnZ2VzdGVkIGJ5IE1lbmcgWHUpCiAgICAt IG1vZGlmeSByZXZpc2lvbi4KdjExOgogICAgLSBtb2RpZnkgZGF0YSBzdHJ1Y3R1cmUgZGVzY3Jp cHRpb25zIGFjY29yZGluZyB0byBjb2RlIGNoYW5nZXMuCiAgICAtIG1vZGlmeSByZXZpc2lvbi4K djk6CiAgICAtIGFkZCAnQ01UJyB0byB0aGUgbGlzdCBvZiBhY3Jvbnltcy4KICAgICAgKHN1Z2dl c3RlZCBieSBXZWkgTGl1KQogICAgLSBjaGFuZ2UgZmVhdHVyZSBsaXN0IHRvIGZlYXR1cmUgYXJy YXkuCiAgICAtIG1vZGlmeSBkYXRhIHN0cnVjdHVyZSBkZXNjcmlwdGlvbnMgYWNjb3JkaW5nIHRv IGxhdGVzdCBjb2Rlcy4KICAgIC0gbW9kaWZ5IHJldmlzaW9uLgp2ODoKICAgIC0gY2hhbmdlIHJl dmlzaW9uIGluZm8uCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQog ICAgLSBhZGQgY29udGVudCBpbnQgJ0FyZWFzIGZvciBpbXByb3ZlbWVudCcuCiAgICAgIChzdWdn ZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQp2NzoKICAgIC0gY29ycmVjdCB0eXBvLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gcmVwbGFjZSBh cHBsaWNhdGlvbi9WTSB0byBkb21haW4uCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6 dXRlayBXaWxrKQogICAgLSBhbWVuZCBkZXNjcmlwdGlvbiBvZiBgZmVhdF9tYXNrYCB0byBtYWtl IGl0IGNsZWFyZXIuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQog ICAgLSB1cGRhdGUgcmV2aXNpb24uCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRl ayBXaWxrKQogICAgLSBvdGhlciBtaW5vciBmaXhlcy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25y YWQgUnplc3p1dGVrIFdpbGspCnY2OgogICAgLSB3cml0ZSBhIG5ldyBmZWF0dXJlIGRvY3VtZW50 IHRvIGNvdmVyIEwzIENBVC9DRFAgYW5kIEwyIENBVC4KICAgICAgKHN1Z2dlc3RlZCBieSBLZXZp biBUaWFuKQogICAgLSBhZGp1c3QgJ1Rlcm1pbm9sb2d5JyBwb3NpdGlvbiBpbiBkb2N1bWVudC4K ICAgICAgKHN1Z2dlc3RlZCBieSBEYXJpbyBGYWdnaW9saSkKICAgIC0gZml4IHdvcmRpbmdzLgog ICAgICAoc3VnZ2VzdGVkIGJ5IERhcmlvIEZhZ2dpb2xpLCBLZXZpbiBUaWFuIGFuZCBLb25yYWQg Unplc3p1dGVrIFdpbGspCiAgICAtIGFkZCBTRE0gY2hhcHRlciB0aXRsZSBpbiBjb21taXQgbWVz c2FnZS4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGFk ZCBtb3JlIGV4cGxhbmF0aW9ucy4KICAgICAgKHN1Z2dlc3RlZCBieSBLZXZpbiBUaWFuKQp2NDoK ICAgIC0gY2hhbmdlIGZpbGUgbmFtZSB0byBiZSBtb3JlIGRlc2NyaXB0aXZlLCAnaW50ZWxfcHNy X2wyX2NhdC5wYW5kb2MnLgogICAgICAoc3VnZ2VzdGVkIGJ5IERhcmlvIEZhZ2dpb2xpKQogICAg LSByZW1vdmUgJ0V4dCcgYW5kICdOZXcnIHByZWZpeGVzLgogICAgICAoc3VnZ2VzdGVkIGJ5IERh cmlvIEZhZ2dpb2xpKQogICAgLSByZW1vdmUgY2hhbmdlIGxvZyBpbiBSZXZpc29uIHBhcnQuCiAg ICAgIChzdWdnZXN0ZWQgYnkgRGFyaW8gRmFnZ2lvbGkpCiAgICAtIGFkanVzdCBYZW4gcmVsZWFz ZSBudW1iZXIgdG8gNC45IHRvIHNob3cgdGhpcyBmZWF0dXJlIHRhcmdldHMgNC45LgogICAgICAo c3VnZ2VzdGVkIGJ5IERhcmlvIEZhZ2dpb2xpKQogICAgLSBwcm92aWRlICdUZXJtaW5vbG9neScg YW5kIG1vcmUgc2VjdGlvbnMuCiAgICAgIChzdWdnZXN0ZWQgYnkgRGFyaW8gRmFnZ2lvbGkpCiAg ICAtIGZpeCB3b3JkaW5ncy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdp bGspCiAgICAtIHJlbW92ZSBjaGFwdGVyIG51bWJlci4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25y YWQgUnplc3p1dGVrIFdpbGspCnYzOgogICAgLSBtYWtlIGRlc2lnbiBkb2N1bWVudCBiZSBhIHBh dGNoLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKdjI6CiAgICAt IHByb3ZpZGUgY2hhcHRlciBmb3IgdGhlIEwyIENBVC4KICAgICAgKHN1Z2dlc3RlZCBieSBNZW5n IFh1KQotLS0KIGRvY3MvZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jIHwgNDYzICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDQ2MyBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jcy9mZWF0dXJlcy9pbnRlbF9wc3JfY2F0 X2NkcC5wYW5kb2MKCmRpZmYgLS1naXQgYS9kb2NzL2ZlYXR1cmVzL2ludGVsX3Bzcl9jYXRfY2Rw LnBhbmRvYyBiL2RvY3MvZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYzZjMzEKLS0tIC9kZXYvbnVsbAorKysgYi9k b2NzL2ZlYXR1cmVzL2ludGVsX3Bzcl9jYXRfY2RwLnBhbmRvYwpAQCAtMCwwICsxLDQ2MyBAQAor JSBJbnRlbCBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgYW5kIENvZGUgYW5kIERhdGEgUHJp b3JpdGl6YXRpb24gRmVhdHVyZXMKKyUgUmV2aXNpb24gMS4xNAorCitcY2xlYXJwYWdlCisKKyMg QmFzaWNzCisKKy0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgU3RhdHVzOiAqKlRlY2ggUHJldmlldyoq CisKK0FyY2hpdGVjdHVyZShzKTogSW50ZWwgeDg2CisKKyAgIENvbXBvbmVudChzKTogSHlwZXJ2 aXNvciwgdG9vbHN0YWNrCisKKyAgICAgICBIYXJkd2FyZTogTDMgQ0FUOiBIYXN3ZWxsIGFuZCBi ZXlvbmQgQ1BVcworICAgICAgICAgICAgICAgICBDRFAgICA6IEJyb2Fkd2VsbCBhbmQgYmV5b25k IENQVXMKKyAgICAgICAgICAgICAgICAgTDIgQ0FUOiBBdG9tIGNvZGVuYW1lIEdvbGRtb250IGFu ZCBiZXlvbmQgQ1BVcworLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgVGVybWlub2xvZ3kKKworKiBDQVQgICAg ICAgICBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kKKyogQ0JNICAgICAgICAgQ2FwYWNpdHkg Qml0TWFza3MKKyogQ0RQICAgICAgICAgQ29kZSBhbmQgRGF0YSBQcmlvcml0aXphdGlvbgorKiBD TVQgICAgICAgICBDYWNoZSBNb25pdG9yaW5nIFRlY2hub2xvZ3kKKyogQ09TL0NMT1MgICAgQ2xh c3Mgb2YgU2VydmljZQorKiBNU1JzICAgICAgICBNYWNoaW5lIFNwZWNpZmljIFJlZ2lzdGVycwor KiBQU1IgICAgICAgICBJbnRlbCBQbGF0Zm9ybSBTaGFyZWQgUmVzb3VyY2UKKworIyBPdmVydmll dworCitJbnRlbCBwcm92aWRlcyBhIHNldCBvZiBhbGxvY2F0aW9uIGNhcGFiaWxpdGllcyBpbmNs dWRpbmcgQ2FjaGUgQWxsb2NhdGF0aW9uCitUZWNobm9sb2d5IChDQVQpIGFuZCBDb2RlIGFuZCBE YXRhIFByaW9yaXRpemF0aW9uIChDRFApLgorCitDQVQgYWxsb3dzIGFuIE9TIG9yIGh5cGVydmlz b3IgdG8gY29udHJvbCBhbGxvY2F0aW9uIG9mIGEgQ1BVJ3Mgc2hhcmVkIGNhY2hlCitiYXNlZCBv biBhcHBsaWNhdGlvbi9kb21haW4gcHJpb3JpdHkgb3IgQ2xhc3Mgb2YgU2VydmljZSAoQ09TKS4g RWFjaCBDT1MgaXMKK2NvbmZpZ3VyZWQgdXNpbmcgY2FwYWNpdHkgYml0bWFza3MgKENCTXMpIHdo aWNoIHJlcHJlc2VudCBjYWNoZSBjYXBhY2l0eSBhbmQKK2luZGljYXRlIHRoZSBkZWdyZWUgb2Yg b3ZlcmxhcCBhbmQgaXNvbGF0aW9uIGJldHdlZW4gY2xhc3Nlcy4gT25jZSBDQVQgaXMgY28tCitu ZmlndXJlZCwgdGhlIHByb2Nlc3NvciBhbGxvd3MgYWNjZXNzIHRvIHBvcnRpb25zIG9mIGNhY2hl IGFjY29yZGluZyB0byB0aGUKK2VzdGFibGlzaGVkIENPUy4gSW50ZWwgWGVvbiBwcm9jZXNzb3Ig RTUgdjQgZmFtaWx5IChhbmQgc29tZSBvdGhlcnMpIGludHJvZHVjZQorY2FwYWJpbGl0aWVzIHRv IGNvbmZpZ3VyZSBhbmQgbWFrZSB1c2Ugb2YgdGhlIENBVCBtZWNoYW5pc20gb24gdGhlIEwzIGNh Y2hlLgorSW50ZWwgR29sZG1vbnQgcHJvY2Vzc29yIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGNvbnRy b2wgb3ZlciB0aGUgTDIgY2FjaGUuCisKK0NvZGUgYW5kIERhdGEgUHJpb3JpdGl6YXRpb24gKENE UCkgVGVjaG5vbG9neSBpcyBhbiBleHRlbnNpb24gb2YgQ0FULiBDRFAKK2VuYWJsZXMgaXNvbGF0 aW9uIGFuZCBzZXBhcmF0ZSBwcmlvcml0aXphdGlvbiBvZiBjb2RlIGFuZCBkYXRhIGZldGNoZXMg dG8KK3RoZSBMMyBjYWNoZSBpbiBhIFNXIGNvbmZpZ3VyYWJsZSBtYW5uZXIsIHdoaWNoIGNhbiBl bmFibGUgd29ya2xvYWQgcHJpb3JpdC0KK2l6YXRpb24gYW5kIHR1bmluZyBvZiBjYWNoZSBjYXBh Y2l0eSB0byB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSB3b3JrbG9hZC4KK0NEUCBleHRlbmRz IENBVCBieSBwcm92aWRpbmcgc2VwYXJhdGUgY29kZSBhbmQgZGF0YSBtYXNrcyBwZXIgQ2xhc3Mg b2YgU2VydmljZQorKENPUykuIFdoZW4gU1cgY29uZmlndXJlcyB0byBlbmFibGUgQ0RQLCBMMyBD QVQgaXMgZGlzYWJsZWQuCisKKyMgVXNlciBkZXRhaWxzCisKKyogRmVhdHVyZSBFbmFibGluZzoK KworICBBZGQgInBzcj1jYXQiIHRvIGJvb3QgbGluZSBwYXJhbWV0ZXIgdG8gZW5hYmxlIGFsbCBz dXBwb3J0ZWQgbGV2ZWwgQ0FUIGZlYXR1LQorICByZXMuIEFkZCAicHNyPWNkcCIgdG8gZW5hYmxl IEwzIENEUCBidXQgZGlzYWJsZXMgTDMgQ0FUIGJ5IFNXLgorCisqIHhsIGludGVyZmFjZXM6CisK KyAgMS4gYHBzci1jYXQtc2hvdyBbT1BUSU9OU10gZG9tYWluLWlkYDoKKworICAgICBTaG93IEwy IENBVCBvciBMMyBDQVQvQ0RQIENCTSBvZiB0aGUgZG9tYWluIGRlc2lnbmF0ZWQgYnkgWGVuIGRv bWFpbi1pZC4KKworICAgICBPcHRpb24gYC1sYDoKKyAgICAgYC1sMmA6IFNob3cgY2JtIGZvciBM MiBjYWNoZS4KKyAgICAgYC1sM2A6IFNob3cgY2JtIGZvciBMMyBjYWNoZS4KKworICAgICBJZiBg LWxYYCBpcyBzcGVjaWZpZWQgYW5kIExYIGlzIG5vdCBzdXBwb3J0ZWQsIHByaW50IGVycm9yLgor ICAgICBJZiBubyBgLWxgIGlzIHNwZWNpZmllZCwgbGV2ZWwgMyBpcyB0aGUgZGVmYXVsdCBvcHRp b24uCisKKyAgMi4gYHBzci1jYXQtc2V0IFtPUFRJT05TXSBkb21haW4taWQgY2JtYDoKKworICAg ICBTZXQgTDIgQ0FUIG9yIEwzIENBVC9DRFAgQ0JNIHRvIHRoZSBkb21haW4gZGVzaWduYXRlZCBi eSBYZW4gZG9tYWluLWlkLgorCisgICAgIE9wdGlvbiBgLXNgOiBTcGVjaWZ5IHRoZSBzb2NrZXQg dG8gcHJvY2Vzcywgb3RoZXJ3aXNlIGFsbCBzb2NrZXRzIGFyZQorICAgICBwcm9jZXNzZWQuCisK KyAgICAgT3B0aW9uIGAtbGA6CisgICAgIGAtbDJgOiBTcGVjaWZ5IGNibSBmb3IgTDIgY2FjaGUu CisgICAgIGAtbDNgOiBTcGVjaWZ5IGNibSBmb3IgTDMgY2FjaGUuCisKKyAgICAgSWYgYC1sWGAg aXMgc3BlY2lmaWVkIGFuZCBMWCBpcyBub3Qgc3VwcG9ydGVkLCBwcmludCBlcnJvci4KKyAgICAg SWYgbm8gYC1sYCBpcyBzcGVjaWZpZWQsIGxldmVsIDMgaXMgdGhlIGRlZmF1bHQgb3B0aW9uLgor CisgICAgIE9wdGlvbiBgLWNgIG9yIGAtZGA6CisgICAgIGAtY2A6IFNldCBMMyBDRFAgY29kZSBj Ym0uCisgICAgIGAtZGA6IFNldCBMMyBDRFAgZGF0YSBjYm0uCisKKyAgMy4gYHBzci1od2luZm8g W09QVElPTlNdYDoKKworICAgICBTaG93IENNVCAmIEwyIENBVCAmIEwzIENBVC9DRFAgSFcgaW5m b3JtYXRpb24gb24gZXZlcnkgc29ja2V0LgorCisgICAgIE9wdGlvbiBgLW0sIC0tY210YDogU2hv dyBDYWNoZSBNb25pdG9yaW5nIFRlY2hub2xvZ3kgKENNVCkgaGFyZHdhcmUgaW5mby4KKworICAg ICBPcHRpb24gYC1hLCAtLWNhdGA6IFNob3cgQ0FUL0NEUCBoYXJkd2FyZSBpbmZvLgorCisjIFRl Y2huaWNhbCBkZXRhaWxzCisKK0wzIENBVC9DRFAgYW5kIEwyIENBVCBhcmUgYWxsIG1lbWJlcnMg b2YgSW50ZWwgUFNSIGZlYXR1cmVzLCB0aGV5IHNoYXJlIHRoZSBiYXNlCitQU1IgaW5mcmFzdHJ1 Y3R1cmUgaW4gWGVuLgorCisjIyBIYXJkd2FyZSBwZXJzcGVjdGl2ZQorCisgIENBVC9DRFAgZGVm aW5lcyBhIHJhbmdlIG9mIE1TUnMgdG8gYXNzaWduIGRpZmZlcmVudCBjYWNoZSBhY2Nlc3MgcGF0 dGVybnMKKyAgd2hpY2ggYXJlIGtub3duIGFzIENCTXMsIGVhY2ggQ0JNIGlzIGFzc29jaWF0ZWQg d2l0aCBhIENPUy4KKworICBgYGAKKyAgRS5nLiBMMiBDQVQ6CisgICAgICAgICAgICAgICAgICAg ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisg ICAgIElBMzJfUFFSX0FTU09DICAgICAgIHwgTVNSIChwZXIgc29ja2V0KSAgICAgICAgICAgfCAg ICBBZGRyZXNzICAgICB8CisgICArLS0tLSstLS0rLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgICB8ICAgIHxDT1N8ICAgICAgIHwg ICAgIHwgSUEzMl9MMl9RT1NfTUFTS18wICAgICAgICAgfCAgICAgMHhEMTAgICAgICB8CisgICAr LS0tLSstLS0rLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgICAgICAgICAg4pSULS0tLS0tLS0tLS0tLT4gfCAuLi4gICAgICAgICAg ICAgICAgICAgICAgICB8ICAuLi4gICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBJQTMyX0wyX1FPU19NQVNLX24gICAgICAgICB8IDB4RDEw K24gKG48NjQpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgYGBgCisKKyAgTDMgQ0FUL0NEUCB1c2Vz IGEgcmFuZ2Ugb2YgTVNScyBmcm9tIDB4QzkwIH4gMHhDOTArbiAobjwxMjgpLgorCisgIEwyIENB VCB1c2VzIGEgcmFuZ2Ugb2YgTVNScyBmcm9tIDB4RDEwIH4gMHhEMTArbiAobjw2NCksIGZvbGxv d2luZyB0aGUgTDMKKyAgQ0FUL0NEUCBNU1JzLCBzZXR0aW5nIGRpZmZlcmVudCBMMiBjYWNoZSBh Y2Nlc3NpbmcgcGF0dGVybnMgZnJvbSBMMyBjYWNoZSBpcworICBzdXBwb3J0ZWQuCisKKyAgRXZl cnkgTVNSIHN0b3JlcyBhIENCTSB2YWx1ZS4gQSBjYXBhY2l0eSBiaXRtYXNrIChDQk0pIHByb3Zp ZGVzIGEgaGludCB0byB0aGUKKyAgaGFyZHdhcmUgaW5kaWNhdGluZyB0aGUgY2FjaGUgc3BhY2Ug YSBkb21haW4gc2hvdWxkIGJlIGxpbWl0ZWQgdG8gYXMgd2VsbCBhcworICBwcm92aWRpbmcgYW4g aW5kaWNhdGlvbiBvZiBvdmVybGFwIGFuZCBpc29sYXRpb24gaW4gdGhlIENBVC1jYXBhYmxlIGNh Y2hlIGZyb20KKyAgb3RoZXIgZG9tYWlucyBjb250ZW5kaW5nIGZvciB0aGUgY2FjaGUuCisKKyAg U2FtcGxlIGNhY2hlIGNhcGFjaXR5IGJpdG1hc2tzIGZvciBhIGJpdGxlbmd0aCBvZiA4IGFyZSBz aG93biBiZWxvdy4gUGxlYXNlCisgIG5vdGUgdGhhdCBhbGwgKGFuZCBvbmx5KSBjb250aWd1b3Vz ICcxJyBjb21iaW5hdGlvbnMgYXJlIGFsbG93ZWQgKGUuZy4gRkZGRkgsCisgIDBGRjBILCAwMDND SCwgZXRjLikuCisKKyAgYGBgCisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0t Ky0tLS0rLS0tLSsKKyAgICAgICB8IE03IHwgTTYgfCBNNSB8IE00IHwgTTMgfCBNMiB8IE0xIHwg TTAgfAorICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisg IENPUzAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgRGVmYXVsdCBC aXRtYXNrCisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsK KyAgQ09TMSB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfAorICAgICAg ICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgIENPUzIgfCBBICB8 IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwKKyAgICAgICArLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworCisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgICAgICB8IE03IHwgTTYgfCBNNSB8IE00IHwgTTMg fCBNMiB8IE0xIHwgTTAgfAorICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSst LS0tKy0tLS0rCisgIENPUzAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEg IHwgT3ZlcmxhcHBlZCBCaXRtYXNrCisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSst LS0tKy0tLS0rLS0tLSsKKyAgQ09TMSB8ICAgIHwgICAgfCAgICB8ICAgIHwgQSAgfCBBICB8IEEg IHwgQSAgfAorICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r CisgIENPUzIgfCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwgICAgfCBBICB8IEEgIHwKKyAgICAg ICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworCisgICAgICAgKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgICAgICB8IE03IHwgTTYg fCBNNSB8IE00IHwgTTMgfCBNMiB8IE0xIHwgTTAgfAorICAgICAgICstLS0tKy0tLS0rLS0tLSst LS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgIENPUzAgfCBBICB8IEEgIHwgQSAgfCBBICB8ICAg IHwgICAgfCAgICB8ICAgIHwgSXNvbGF0ZWQgQml0bWFzaworICAgICAgICstLS0tKy0tLS0rLS0t LSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgIENPUzEgfCAgICB8ICAgIHwgICAgfCAgICB8 IEEgIHwgQSAgfCAgICB8ICAgIHwKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKworICBDT1MyIHwgICAgfCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwgQSAg fCBBICB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsK KyAgYGBgCisKKyAgV2UgY2FuIGdldCB0aGUgQ0JNIGxlbmd0aCB0aHJvdWdoIENQVUlELiBUaGUg ZGVmYXVsdCB2YWx1ZSBvZiBDQk0gaXMgY2FsY3VsLQorICBhdGVkIGJ5IGAoMXVsbCA8PCBjYm1f bGVuKSAtIDFgLiBUaGF0IGlzIGEgZnVsbHkgb3BlbiBiaXRtYXNrLCBhbGwgb25lcyBiaXRtLQor ICBhc2suIFRoZSBDT1NbMF0gYWx3YXlzIHN0b3JlcyB0aGUgZGVmYXVsdCB2YWx1ZSB3aXRob3V0 IGNoYW5nZS4KKworICBUaGVyZSBpcyBhIGBJQTMyX1BRUl9BU1NPQ2AgcmVnaXN0ZXIgd2hpY2gg c3RvcmVzIHRoZSBDT1MgSUQgb2YgdGhlIFZDUFUuIEhXCisgIGVuZm9yY2VzIGNhY2hlIGFsbG9j YXRpb24gYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIENCTS4KKworIyMgVGhlIHJlbGF0 aW9uc2hpcCBiZXR3ZWVuIEwzIENBVC9DRFAgYW5kIEwyIENBVAorCisgIEhXIG1heSBzdXBwb3J0 IGFsbCBmZWF0dXJlcy4gQnkgZGVmYXVsdCwgQ0RQIGlzIGRpc2FibGVkIG9uIHRoZSBwcm9jZXNz b3IuCisgIElmIHRoZSBMMyBDQVQgTVNScyBhcmUgdXNlZCB3aXRob3V0IGVuYWJsaW5nIENEUCwg dGhlIHByb2Nlc3NvciBvcGVyYXRlcyBpbgorICBhIHRyYWRpdGlvbmFsIENBVC1vbmx5IG1vZGUu IFdoZW4gQ0RQIGlzIGVuYWJsZWQ6CisgICogdGhlIENBVCBtYXNrIE1TUnMgYXJlIHJlLW1hcHBl ZCBpbnRvIGludGVybGVhdmVkIHBhaXJzIG9mIG1hc2sgTVNScyBmb3IKKyAgICBkYXRhIG9yIGNv ZGUgZmV0Y2hlcy4KKyAgKiB0aGUgcmFuZ2Ugb2YgQ09TIGZvciBDQVQgaXMgcmUtaW5kZXhlZCwg d2l0aCB0aGUgbG93ZXItaGFsZiBvZiB0aGUgQ09TCisgICAgcmFuZ2UgYXZhaWxhYmxlIGZvciBD RFAuCisKKyAgTDIgQ0FUIGlzIGluZGVwZW5kZW50IG9mIEwzIENBVC9DRFAsIHdoaWNoIG1lYW5z IEwyIENBVCBjYW4gYmUgZW5hYmxlZCB3aGlsZQorICBMMyBDQVQvQ0RQIGlzIGRpc2FibGVkLCBv ciBMMiBDQVQgYW5kIEwzIENBVC9DRFAgYXJlIGJvdGggZW5hYmxlZC4KKworICBBcyBhIHJlcXVp cmVtZW50LCB0aGUgYml0cyBvZiBDQk0gb2YgQ0FUL0NEUCBtdXN0IGJlIGNvbnRpbnVvdXMuCisK KyAgTi5CLiBMMiBDQVQgYW5kIEwzIENBVC9DRFAgc2hhcmUgdGhlIHNhbWUgQ09TIGZpZWxkIGlu IHRoZSBzYW1lIGFzc29jaWF0ZQorICByZWdpc3RlciBgSUEzMl9QUVJfQVNTT0NgLCB3aGljaCBt ZWFucyBvbmUgQ09TIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHBhaXIgb2YKKyAgTDIgQ0FUIENCTSBh bmQgTDMgQ0FUL0NEUCBDQk0uCisKKyAgQmVzaWRlcywgdGhlIG1heCBDT1Mgb2YgTDIgQ0FUIG1h eSBiZSBkaWZmZXJlbnQgZnJvbSBMMyBDQVQvQ0RQIChvciBvdGhlcgorICBQU1IgZmVhdHVyZXMg aW4gZnV0dXJlKS4gSW4gc29tZSBjYXNlcywgYSBkb21haW4gaXMgcGVybWl0dGVkIHRvIGhhdmUg YSBDT1MKKyAgdGhhdCBpcyBiZXlvbmQgb25lIChvciBtb3JlKSBvZiBQU1IgZmVhdHVyZXMgYnV0 IHdpdGhpbiB0aGUgb3RoZXJzLiBGb3IKKyAgaW5zdGFuY2UsIGxldCdzIGFzc3VtZSB0aGUgbWF4 IENPUyBvZiBMMiBDQVQgaXMgOCBidXQgdGhlIG1heCBDT1Mgb2YgTDMKKyAgQ0FUIGlzIDE2LCB3 aGVuIGEgZG9tYWluIGlzIGFzc2lnbmVkIDkgYXMgQ09TLCB0aGUgTDMgQ0FUIENCTSBhc3NvY2lh dGVkIHRvCisgIENPUyA5IHdvdWxkIGJlIGVuZm9yY2VkLCBidXQgZm9yIEwyIENBVCwgdGhlIEhX IHdvcmtzIGFzIGRlZmF1bHQgdmFsdWUgaXMKKyAgc2V0IHNpbmNlIENPUyA5IGlzIGJleW9uZCB0 aGUgbWF4IENPUyAoOCkgb2YgTDIgQ0FULgorCisjIyBEZXNpZ24gT3ZlcnZpZXcKKworKiBDb3Jl IENPUy9DQk0gYXNzb2NpYXRpb24KKworICBXaGVuIGVuZm9yY2luZyBDQVQvQ0RQLCBhbGwgY29y ZXMgb2YgZG9tYWlucyBoYXZlIHRoZSBzYW1lIGRlZmF1bHQgQ09TIChDT1MwKQorICB3aGljaCBp cyBhc3NvY2lhdGVkIHdpdGggdGhlIGZ1bGx5IG9wZW4gQ0JNIChhbGwgb25lcyBiaXRtYXNrKSB0 byBhY2Nlc3MgYWxsCisgIGNhY2hlLiBUaGUgZGVmYXVsdCBDT1MgaXMgdXNlZCBvbmx5IGluIGh5 cGVydmlzb3IgYW5kIGlzIHRyYW5zcGFyZW50IHRvIHRvb2wKKyAgc3RhY2sgYW5kIHVzZXIuCisK KyAgU3lzdGVtIGFkbWluaXN0cmF0b3IgY2FuIGNoYW5nZSBQU1IgYWxsb2NhdGlvbiBwb2xpY3kg YXQgcnVudGltZSBieSB0b29sIHN0YWNrLgorICBTaW5jZSBMMiBDQVQgc2hhcmVzIENPUyB3aXRo IEwzIENBVC9DRFAsIGEgQ09TIGNvcnJlc3BvbmRzIHRvIGEgMi10dXBsZSwgbGlrZQorICBbTDIg Q0JNLCBMMyBDQk1dIHdpdGggb25seS1DQVQgZW5hYmxlZCwgd2hlbiBDRFAgaXMgZW5hYmxlZCwg b25lIENPUyBjb3JyZXNwby0KKyAgbmRzIHRvIGEgMy10dXBsZSwgbGlrZSBbTDIgQ0JNLCBMMyBD b2RlX0NCTSwgTDMgRGF0YV9DQk1dLiBJZiBuZWl0aGVyIEwzIENBVAorICBub3IgTDMgQ0RQIGlz IGVuYWJsZWQsIHRoaW5ncyB3b3VsZCBiZSBlYXNpZXIsIG9uZSBDT1MgY29ycmVzcG9uZHMgdG8g b25lIEwyCisgIENCTS4KKworKiBWQ1BVIHNjaGVkdWxlCisKKyAgV2hlbiBjb250ZXh0IHN3aXRj aCBoYXBwZW5zLCB0aGUgQ09TIG9mIFZDUFUgaXMgd3JpdHRlbiB0byBwZXItdGhyZWFkIE1TUgor ICBgSUEzMl9QUVJfQVNTT0NgLCBhbmQgdGhlbiBoYXJkd2FyZSBlbmZvcmNlcyBjYWNoZSBhbGxv Y2F0aW9uIGFjY29yZGluZyB0bworICB0aGUgY29ycmVzcG9uZGluZyBDQk0uCisKKyogTXVsdGkt c29ja2V0cworCisgIERpZmZlcmVudCBzb2NrZXRzIG1heSBoYXZlIGRpZmZlcmVudCBDQVQvQ0RQ IGNhcGFiaWxpdHkgKGUuZy4gbWF4IENPUykgYWx0aC0KKyAgb3VnaCBpdCBpcyBjb25zaXN0ZW50 IG9uIHRoZSBzYW1lIHNvY2tldC4gU28gdGhlIGNhcGFiaWxpdHkgb2YgcGVyLXNvY2tldCBDQVQv CisgIENEUCBpcyBzcGVjaWZpZWQuCisKKyAgJ3Bzci1jYXQtc2V0JyBjYW4gc2V0IENCTSBmb3Ig b25lIGRvbWFpbiBwZXIgc29ja2V0LiBPbiBlYWNoIHNvY2tldCwgd2UgbWFpbi0KKyAgdGFpbiBh IENPUyBhcnJheSBmb3IgYWxsIGRvbWFpbnMuIE9uZSBkb21haW4gdXNlcyBvbmUgQ09TIGF0IG9u ZSB0aW1lLiBPbmUgQ09TCisgIHN0b3JlcyB0aGUgQ0JNIG9mIHRoZSBkb21haW4gdG8gd29yay4g U28sIHdoZW4gYSBWQ1BVIG9mIHRoZSBkb21haW4gaXMgbWlncmF0LQorICBlZCBmcm9tIHNvY2tl dCAxIHRvIHNvY2tldCAyLCBpdCBmb2xsb3dzIGNvbmZpZ3VyYXRpb24gb24gc29ja2V0IDIuCisK KyAgRS5nLiB1c2VyIHNldHMgZG9tYWluIDEgQ0JNIG9uIHNvY2tldCAxIHRvIDB4N2Ygd2hpY2gg dXNlcyBDT1MgOSBidXQgc2V0cyBkby0KKyAgbWFpbiAxIENCTSBvbiBzb2NrZXQgMiB0byAweDNm IHdoaWNoIHVzZXMgQ09TIDcuIFdoZW4gVkNQVSBvZiB0aGlzIGRvbWFpbgorICBpcyBtaWdyYXRl ZCBmcm9tIHNvY2tldCAxIHRvIDIsIHRoZSBDT1MgSUQgdXNlZCBpcyA3LCB0aGF0IG1lYW5zIDB4 M2YgaXMgdGhlCisgIENCTSB0byB3b3JrIGZvciB0aGlzIGRvbWFpbiAxIG5vdy4KKworIyMgSW1w bGVtZW50YXRpb24gRGVzY3JpcHRpb24KKworKiBIeXBlcnZpc29yIGludGVyZmFjZXM6CisKKyAg MS4gQm9vdCBsaW5lIHBhcmFtZXRlciAicHNyPWNhdCIgZW5hYmxlcyBMMiBDQVQgYW5kIEwzIENB VCBpZiBoYXJkd2FyZSBzdXBwby0KKyAgICAgcnRlZC4gInBzcj1jZHAiIGVuYWJsZXMgQ0RQIGlm IGhhcmR3YXJlIHN1cHBvcnRlZC4KKworICAyLiBTWVNDVEw6CisgICAgICAgICAgLSBYRU5fU1lT Q1RMX1BTUl9DQVRfZ2V0X2wzX2luZm86IEdldCBMMyBDQVQvQ0RQIGluZm9ybWF0aW9uLgorICAg ICAgICAgIC0gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sMl9pbmZvOiBHZXQgTDIgQ0FUIGluZm9y bWF0aW9uLgorCisgIDMuIERPTUNUTDoKKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9P UF9HRVRfTDNfQ0JNOiBHZXQgTDMgQ0JNIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICAtIFhFTl9E T01DVExfUFNSX0NBVF9PUF9TRVRfTDNfQ0JNOiBTZXQgTDMgQ0JNIGZvciBhIGRvbWFpbi4KKyAg ICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfQ09ERTogR2V0IENEUCBDb2Rl IENCTSBmb3IgYSBkb21haW4uCisgICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VU X0wzX0NPREU6IFNldCBDRFAgQ29kZSBDQk0gZm9yIGEgZG9tYWluLgorICAgICAgICAgIC0gWEVO X0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MM19EQVRBOiBHZXQgQ0RQIERhdGEgQ0JNIGZvciBhIGRv bWFpbi4KKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfREFUQTogU2V0 IENEUCBEYXRhIENCTSBmb3IgYSBkb21haW4uCisgICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9D QVRfT1BfR0VUX0wyX0NCTTogR2V0IEwyIENCTSBmb3IgYSBkb21haW4uCisgICAgICAgICAgLSBY RU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wyX0NCTTogU2V0IEwyIENCTSBmb3IgYSBkb21haW4u CisKKyogeGwgaW50ZXJmYWNlczoKKworICAxLiBwc3ItY2F0LXNob3cgLWxYIGRvbWFpbi1pZAor ICAgICAgICAgIFNob3cgTFggY2JtIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICA9PiBYRU5fU1lT Q1RMX1BTUl9DQVRfZ2V0X2wzX2luZm8gICAgLworICAgICAgICAgICAgIFhFTl9TWVNDVExfUFNS X0NBVF9nZXRfbDJfaW5mbyAgICAvCisgICAgICAgICAgICAgWEVOX0RPTUNUTF9QU1JfQ0FUX09Q X0dFVF9MM19DQk0gIC8KKyAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wz X0NPREUgLworICAgICAgICAgICAgIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfREFUQSAv CisgICAgICAgICAgICAgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MMl9DQk0KKworICAyLiBw c3ItY2F0LXNldCAtbFggZG9tYWluLWlkIGNibQorICAgICAgICAgIFNldCBMWCBjYm0gZm9yIGEg ZG9tYWluLgorICAgICAgICAgID0+IFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfQ0JNICAv CisgICAgICAgICAgICAgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19DT0RFIC8KKyAgICAg ICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0RBVEEgLworICAgICAgICAgICAg IFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDJfQ0JNCisKKyAgMy4gcHNyLWh3aW5mbworICAg ICAgICAgIFNob3cgUFNSIEhXIGluZm9ybWF0aW9uLCBpbmNsdWRpbmcgTDMgQ0FUL0NEUC9MMiBD QVQKKyAgICAgICAgICA9PiBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wzX2luZm8gLworICAgICAg ICAgICAgIFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDJfaW5mbworCisqIEtleSBkYXRhIHN0cnVj dHVyZToKKworICAgMS4gRmVhdHVyZSBwcm9wZXJ0aWVzCisKKyAgICAgIGBgYAorICAgICAgc3Rh dGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzIHsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQgY29z X251bTsKKyAgICAgICAgICBlbnVtIGNibV90eXBlIHR5cGVbUFNSX01BWF9DT1NfTlVNXTsKKyAg ICAgICAgICBib29sICgqZ2V0X2ZlYXRfaW5mbykoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVh dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGF0YVtdLCB1bnNp Z25lZCBpbnQgYXJyYXlfbGVuKTsKKyAgICAgICAgICB2b2lkICgqd3JpdGVfbXNyKSh1bnNpZ25l ZCBpbnQgY29zLCB1aW50MzJfdCB2YWwsIGVudW0gY2JtX3R5cGUgdHlwZSk7CisgICAgICB9ICpm ZWF0X3Byb3BzW1BTUl9TT0NLRVRfRkVBVF9OVU1dOworICAgICAgYGBgCisKKyAgICAgIEV2ZXJ5 IGZlYXR1cmUgaGFzIGl0cyBvd24gcHJvcGVydGllcywgZS5nLiBzb21lIGRhdGEgYW5kIGFjdGlv bnMuIEEKKyAgICAgIGZlYXR1cmUgcHJvcGVydHkgcG9pbnRlciBhcnJheSBpcyBkZWNsYXJlZCB0 byBzYXZlIGV2ZXJ5IGZlYXR1cmUncworICAgICAgcHJvcGVydGllcy4KKworICAgICAgLSBNZW1i ZXIgYGNvc19udW1gCisKKyAgICAgICAgYGNvc19udW1gIGlzIHRoZSBudW1iZXIgb2YgQ09TIHJl Z2lzdGVycyB0aGUgZmVhdHVyZSB1c2VzLCBlLmcuIEwzL0wyCisgICAgICAgIENBVCB1c2VzIDEg cmVnaXN0ZXIgYnV0IENEUCB1c2VzIDIgcmVnaXN0ZXJzLgorCisgICAgICAtIE1lbWJlciBgdHlw ZWAKKworICAgICAgICBgdHlwZWAgaXMgYW4gYXJyYXkgdG8gc2F2ZSBhbGwgJ2VudW0gY2JtX3R5 cGUnIHZhbHVlcyBvZiB0aGUgZmVhdHVyZS4KKyAgICAgICAgSXQgaXMgdXNlZCB3aXRoIGNvc19u dW0gdG9nZXRoZXIgdG8gZ2V0L3dyaXRlIGEgZmVhdHVyZSdzIENPUyByZWdpc3RlcnMKKyAgICAg ICAgdmFsdWVzIG9uZSBieSBvbmUuCisKKyAgICAgIC0gTWVtYmVyIGBnZXRfZmVhdF9pbmZvYAor CisgICAgICAgIGBnZXRfZmVhdF9pbmZvYCBpcyB1c2VkIHRvIHJldHVybiBmZWF0dXJlIEhXIGlu Zm8gdGhyb3VnaCBzeXNjdGwuCisKKyAgICAgIC0gTWVtYmVyIGB3cml0ZV9tc3JgCisKKyAgICAg ICAgYHdyaXRlX21zcmAgaXMgdXNlZCB0byB3cml0ZSBvdXQgZmVhdHVyZSBNU1IgcmVnaXN0ZXIu CisKKyAgIDIuIEZlYXR1cmUgbm9kZQorCisgICAgICBgYGAKKyAgICAgIHN0cnVjdCBmZWF0X25v ZGUgeworICAgICAgICAgIHVuc2lnbmVkIGludCBjb3NfbWF4OworICAgICAgICAgIHVuc2lnbmVk IGludCBjYm1fbGVuOworICAgICAgICAgIHVpbnQzMl90IGNvc19yZWdfdmFsW01BWF9DT1NfUkVH X0NOVF07CisgICAgICB9OworICAgICAgYGBgCisKKyAgICAgIFdoZW4gYSBQU1IgZW5mb3JjZW1l bnQgZmVhdHVyZSBpcyBlbmFibGVkLCBpdCB3aWxsIGJlIGFkZGVkIGludG8gYQorICAgICAgZmVh dHVyZSBhcnJheS4KKworICAgICAgLSBNZW1iZXIgYGNvc19tYXhgCisKKyAgICAgICAgYGNvc19t YXhgIGlzIG9uZSBvZiB0aGUgaGFyZHdhcmUgaW5mbyBvZiBDQVQuIEl0IG1lYW5zIHRoZSBtYXgg bnVtYmVyCisgICAgICAgIG9mIENPUyByZWdpc3RlcnMuIEFzIEwzIENBVC9DRFAvTDIgQ0FUIGFs bCBoYXZlIGl0LCBpdCBpcyBkZWNsYXJlZCBpbgorICAgICAgICBgZmVhdF9ub2RlYC4KKworICAg ICAgLSBNZW1iZXIgYGNibV9sZW5gCisKKyAgICAgICAgYGNibV9sZW5gIGlzIG9uZSBvZiB0aGUg aGFyZHdhcmUgaW5mbyBvZiBDQVQuIEl0IG1lYW5zIHRoZSBtYXggbnVtYmVyCisgICAgICAgIG9m IGJpdHMgdG8gc2V0LgorCisgICAgICAtIE1lbWJlciBgY29zX3JlZ192YWxgCisKKyAgICAgICAg YGNvc19yZWdfdmFsYCBpcyBhbiBhcnJheSB0byBtYWludGFpbiB0aGUgdmFsdWUgc2V0IGluIGFs bCBDT1MgcmVnaXN0ZXJzCisgICAgICAgIG9mIHRoZSBmZWF0dXJlLiBUaGUgYXJyYXkgaXMgaW5k ZXhlZCBieSBDT1MgSUQuCisKKyAgIDMuIFBlci1zb2NrZXQgUFNSIGZlYXR1cmVzIGluZm9ybWF0 aW9uIHN0cnVjdHVyZQorCisgICAgICBgYGAKKyAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8g eworICAgICAgICAgIGJvb2wgZmVhdF9pbml0OworICAgICAgICAgIHN0cnVjdCBmZWF0X25vZGUg KmZlYXR1cmVzW1BTUl9TT0NLRVRfRkVBVF9OVU1dOworICAgICAgICAgIHNwaW5sb2NrX3QgcmVm X2xvY2s7CisgICAgICAgICAgdW5zaWduZWQgaW50IGNvc19yZWZbTUFYX0NPU19SRUdfQ05UXTsK KyAgICAgICAgICBERUNMQVJFX0JJVE1BUChkb21faWRzLCBET01JRF9JRExFICsgMSk7CisgICAg ICB9OworICAgICAgYGBgCisKKyAgICAgIFdlIGNvbGxlY3QgYWxsIFBTUiBhbGxvY2F0aW9uIGZl YXR1cmVzIGluZm9ybWF0aW9uIG9mIGEgc29ja2V0IGluIHRoaXMKKyAgICAgIGBzdHJ1Y3QgcHNy X3NvY2tldF9pbmZvYC4KKworICAgICAgLSBNZW1iZXIgYGZlYXRfaW5pdGAKKworICAgICAgICBg ZmVhdF9pbml0YCBpcyBhIGZsYWcsIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIENQVSBpbml0IG9u IGEgc29ja2V0CisgICAgICAgIGhhcyBiZWVuIGRvbmUuCisKKyAgICAgIC0gTWVtYmVyIGBmZWF0 dXJlc2AKKworICAgICAgICBgZmVhdHVyZXNgIGlzIGEgcG9pbnRlciBhcnJheSB0byBzYXZlIGFs bCBlbmFibGVkIGZlYXR1cmVzIHBvbml0ZXJzCisgICAgICAgIGFjY29yZGluZyB0byBmZWF0dXJl IHBvc2l0aW9uIGRlZmluZWQgaW4gYGVudW0gcHNyX2ZlYXRfdHlwZWAuCisKKyAgICAgIC0gTWVt YmVyIGByZWZfbG9ja2AKKworICAgICAgICBgcmVmX2xvY2tgIGlzIGEgc3BpbiBsb2NrIHRvIHBy b3RlY3QgYGNvc19yZWZgLgorCisgICAgICAtIE1lbWJlciBgY29zX3JlZmAKKworICAgICAgICBg Y29zX3JlZmAgaXMgYW4gYXJyYXkgd2hpY2ggbWFpbnRhaW5zIHRoZSByZWZlcmVuY2Ugb2Ygb25l IENPUy4gSXQgbWFwcworICAgICAgICB0byBjb3NfcmVnX3ZhbFtNQVhfQ09TX1JFR19OVU1dIGlu IGBzdHJ1Y3QgZmVhdF9ub2RlYC4gSWYgb25lIENPUyBpcworICAgICAgICB1c2VkIGJ5IG9uZSBk b21haW4sIHRoZSBjb3JyZXNwb25kaW5nIHJlZmVyZW5jZSB3aWxsIGluY3JlYXNlIGJ5IG9uZS4g SWYKKyAgICAgICAgYSBkb21haW4gcmVsZWFzZXMgdGhlIENPUywgdGhlIHJlZmVyZW5jZSB3aWxs IGRlY3JlYXNlIGJ5IG9uZS4gVGhlIGFycmF5CisgICAgICAgIGlzIGluZGV4ZWQgYnkgQ09TIElE LgorCisgICAgICAtIE1lbWJlciBgZG9tX2lkc2AKKworICAgICAgICBgZG9tX2lkc2AgaXMgYSBi aXRtYXAsIGV2ZXJ5IGJpdCBjb3JyZXNwb25kcyB0byBhIGRvbWFpbi4gSW5kZXggaXMKKyAgICAg ICAgZG9tYWluX2lkLiBJdCBpcyB1c2VkIHRvIGhlbHAgcmVzdG9yZSB0aGUgY29zX2lkIG9mIHRo ZSBkb21haW4gdG8gMCB3aGVuCisgICAgICAgIGEgc29ja2V0IGlzIG9mZmxpbmUgYW5kIHRoZW4g b25saW5lIGFnYWluLgorCisjIExpbWl0YXRpb25zCisKK0NBVC9DRFAgY2FuIG9ubHkgd29yayBv biBIVyB3aGljaCBlbmFibGVzIGl0KGNoZWNrIGJ5IENQVUlEKS4gU28gZmFyLCB0aGVyZSBpcwor bm8gSFcgd2hpY2ggZW5hYmxlcyBib3RoIEwyIENBVCBhbmQgTDMgQ0FUL0NEUC4gQnV0IFNXIGlt cGxlbWVudGF0aW9uIGhhcyBjb25zLQoraWRlcmVkIHN1Y2ggc2NlbmFyaW8gdG8gZW5hYmxlIGJv dGggTDIgQ0FUIGFuZCBMMyBDQVQvQ0RQLgorCisjIFRlc3RpbmcKKworV2UgY2FuIGV4ZWN1dGUg YWJvdmUgeGwgY29tbWFuZHMgdG8gdmVyaWZ5IEwyIENBVCBhbmQgTDMgQ0FUL0NEUCBvbiBkaWZm ZXJlbnQKK0hXcyBzdXBwb3J0IHRoZW0uCisKK0ZvciBleGFtcGxlOgorICAgIHJvb3RAOn4kIHhs IHBzci1od2luZm8gLS1jYXQKKyAgICBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCk6 IEwyCisgICAgU29ja2V0IElEICAgICAgIDogMAorICAgIE1heGltdW0gQ09TICAgICA6IDMKKyAg ICBDQk0gbGVuZ3RoICAgICAgOiA4CisgICAgRGVmYXVsdCBDQk0gICAgIDogMHhmZgorCisgICAg cm9vdEA6fiQgeGwgcHNyLWNhdC1jYm0tc2V0IC1sMiAxIDB4N2YKKworICAgIHJvb3RAOn4kIHhs IHBzci1jYXQtc2hvdyAtbDIgMQorICAgIFNvY2tldCBJRCAgICAgICA6IDAKKyAgICBEZWZhdWx0 IENCTSAgICAgOiAweGZmCisgICAgICAgSUQgICAgICAgICAgICAgICAgICAgICBOQU1FICAgICAg ICAgICAgIENCTQorICAgICAgICAxICAgICAgICAgICAgICAgICB1YnVudHUxNCAgICAgICAgICAg IDB4N2YKKworIyBBcmVhcyBmb3IgaW1wcm92ZW1lbnQKKworQSBoZXhhZGVjaW1hbCBudW1iZXIg aXMgdXNlZCB0byBzZXQvc2hvdyBDQk0gZm9yIGEgZG9tYWluIG5vdy4gQWx0aG91Z2ggdGhpcwor aXMgY29udmVuaWVudCB0byBjb3ZlciBvdmVybGFwL2lzb2xhdGVkIGJpdG1hc2sgcmVxdWlyZW1l bnQsIGl0IGlzIG5vdCB1c2VyLQorZnJpZW5kbHkuCisKK1RvIGltcHJvdmUgdGhpcywgdGhlIGxp YnhsIGludGVyZmFjZXMgY2FuIGJlIHdyYXBwZWQgaW4gbGlidmlydCB0byBwcm92aWRlIG1vcmUK K3Vzci1mcmllbmRseSBpbnRlcmZhY2VzIHRvIHVzZXIsIGUuZy4gYSBwZXJjZW50YWdlIG51bWJl ciBvZiB0aGUgY2FjaGUgdG8gc2V0CithbmQgc2hvdy4KKworIyBLbm93biBpc3N1ZXMKKworTi9B CisKKyMgUmVmZXJlbmNlcworCisiSU5URUzCriBSRVNPVVJDRSBESVJFQ1RPUiBURUNITk9MT0dZ IChJTlRFTMKuIFJEVCkgQUxMT0NBVElPTiBGRUFUVVJFUyIgW0ludGVswq4gNjQgYW5kIElBLTMy IEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVyIE1hbnVhbHMsIHZvbDNdKGh0dHA6Ly93 d3cuaW50ZWwuY29tL2NvbnRlbnQvd3d3L3VzL2VuL3Byb2Nlc3NvcnMvYXJjaGl0ZWN0dXJlcy1z b2Z0d2FyZS1kZXZlbG9wZXItbWFudWFscy5odG1sKQorCisjIEhpc3RvcnkKKworLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitEYXRlICAgICAgIFJldmlzaW9uIFZlcnNpb24gIE5vdGVzCistLS0tLS0tLS0tIC0t LS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKzIwMTYtMDgtMTIgMS4wICAgICAgWGVuIDQuOSAgRGVzaWduIGRvY3VtZW50IHdyaXR0ZW4K KzIwMTctMDItMTMgMS43ICAgICAgWGVuIDQuOSAgQ2hhbmdlczoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMS4gTW9kaWZ5IHRoZSBkZXNpZ24gZG9jdW1lbnQgdG8gY292ZXIgTDMKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FUL0NEUCBhbmQgTDIgQ0FUOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAyLiBGaXggdHlwb3M7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDMuIEFtZW5kIGRlc2NyaXB0aW9uIG9mIGBmZWF0X21hc2tgIHRvIG1ha2UKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgY2xlYXJlcjsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgNC4gT3RoZXIgbWlub3IgY2hhbmdlcy4KKzIwMTctMDItMTUgMS44ICAg ICAgWGVuIDQuOSAgQ2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4gQWRk IGNvbnRlbnQgaW4gJ0FyZWFzIGZvciBpbXByb3ZlbWVudCc7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDIuIEFkanVzdCByZXZpc2lvbiBudW1iZXIuCisyMDE3LTAzLTE2IDEuOSAgICAg IFhlbiA0LjkgIENoYW5nZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuIEFkZCAn Q01UJyBpbiAnVGVybWlub2xvZ3knOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLiBD aGFuZ2UgJ2ZlYXR1cmUgbGlzdCcgdG8gJ2ZlYXR1cmUgYXJyYXknLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAzLiBNb2RpZnkgZGF0YSBzdHJ1Y3R1cmUgZGVzY3JpcHRpb25zLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA0LiBBZGp1c3QgcmV2aXNpb24gbnVtYmVyLgorMjAx Ny0wNS0wMyAxLjExICAgICBYZW4gNC45ICBDaGFuZ2VzOgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxLiBNb2RpZnkgZGF0YSBzdHJ1Y3R1cmUgZGVzY3JpcHRpb25zLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAyLiBBZGp1c3QgcmV2aXNpb24gbnVtYmVyLgorMjAxNy0wNy0x MyAxLjE0ICAgICBYZW4gNC4xMCBDaGFuZ2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAxLiBGaXggYSB0eXBvLgorLS0tLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIAoxLjkuMQoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=