From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH v15] This is the ABI for the two halves of a para-virtualized sound driver to communicate with each to other. Date: Mon, 5 Dec 2016 15:05:29 +0200 Message-ID: <1480943129-20524-2-git-send-email-andr2000@gmail.com> References: <1480943129-20524-1-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1480943129-20524-1-git-send-email-andr2000@gmail.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: embedded-pv-devel@lists.xenproject.org, lars.kurth@citrix.com, vlad.babchuk@gmail.com, ian.jackson@eu.citrix.com, dario.faggioli@citrix.com, tim@xen.org, iurii.konovalenko@globallogic.com, andrii.anisov@gmail.com, olekstysh@gmail.com, andr2000@gmail.com, al1img@gmail.com, david.vrabel@citrix.com, JBeulich@suse.com, julien.grall@arm.com, oleksandr.dmytryshyn@globallogic.com, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPE9sZWtzYW5kcl9BbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPE9sZWtzYW5k cl9BbmRydXNoY2hlbmtvQGVwYW0uY29tPgpTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgR3J5dHNv diA8T2xla3NhbmRyX0dyeXRzb3ZAZXBhbS5jb20+ClNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBE bXl0cnlzaHluIDxvbGVrc2FuZHIuZG15dHJ5c2h5bkBnbG9iYWxsb2dpYy5jb20+ClNpZ25lZC1v ZmYtYnk6IEl1cmlpIEtvbm92YWxlbmtvIDxpdXJpaS5rb25vdmFsZW5rb0BnbG9iYWxsb2dpYy5j b20+CgotLS0KQ2hhbmdlcyBzaW5jZSB2MToKICogcmVtb3ZlZCBfX2F0dHJpYnV0ZV9fKChfX3Bh Y2tlZF9fKSkgZnJvbSBhbGwgc3RydWN0dXJlcyBkZWZpbml0aW9ucwoKQ2hhbmdlcyBzaW5jZSB2 MjoKICogcmVtb3ZlZCBhbGwgQyBzdHJ1Y3R1cmVzCiAqIGFkZGVkIHByb3RvY29sIGRlc2NyaXB0 aW9uIGJldHdlZW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQgZHJpdmVycwoKQ2hhbmdlcyBzaW5jZSB2 MzoKICogZml4ZWQgc29tZSB0eXBvcwogKiByZW5hbWVkIFhFTlNORF9QQ01fRk9STUFUX0ZMT0FU XyoqIHRvIFhFTlNORF9QQ01fRk9STUFUX0YzMl8qKgogKiByZW5hbWVkIFhFTlNORF9QQ01fRk9S TUFUX0ZMT0FUNjRfKiogdG8gWEVOU05EX1BDTV9GT1JNQVRfRjY0XyoqCiAqIGFkZGVkICdpZCcg ZmllbGQgdG8gdGhlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHBhY2tldHMKICogcmVuYW1lZCAnc3Ry ZWFtX2lkJyB0byAnc3RyZWFtJyBpbiB0aGUgcGFja2V0cyBkZXNjcmlwdGlvbgogKiByZW5hbWVk ICdwY21fZGF0YV9yYXRlJyB0byAncGNtX3JhdGUnIGluIHRoZSBwYWNrZXRzIGRlc2NyaXB0aW9u CiAqIHJlbmFtZWQgJ3BjbV9zdHJlYW1fdHlwZScgdG8gJ3BjbV90eXBlJyBpbiB0aGUgcGFja2V0 cyBkZXNjcmlwdGlvbgogKiByZW1vdmVkICdzdHJlYW1faWQnIGZpZWxkIGZyb20gdGhlIHJlc3Bv bnNlIHBhY2tldHMKCkNoYW5nZXMgc2luY2UgdjQ6CiAqIHJlbmFtZWQgJ3N0cmVhbV9pZCcgYmFj ayB0byB0aGUgdG8gJ3N0cmVhbScgaW4gdGhlIHBhY2tldHMgZGVzY3JpcHRpb24KICogbW92ZWQg J2lkJyBmaWVsZCB0byB0aGUgdXBwZXIgcG9zaXRpb24gaW4gdGhlIHJlc3BvbnNlIHBhY2tldHMK CkNoYW5nZXMgc2luY2UgdjU6CiAqIFNsaWdodGx5IHJld29ya2VkIHJlcXVlc3QvcmVzcG9uc2Ug cGFja2V0cwogKiBTaXplIG9mIHRoZSByZXF1ZXN0L3Jlc3BvbnNlIHBhY2tldCBpcyBjaGFuZ2Vk IHRvIHRoZSA2NCBieXRlcwogKiBOb3cgcGFyYW1ldGVycyBmb3IgdGhlIFhFTlNORF9PUF9TRVRf Vk9MVU1FL1hFTlNORF9PUF9HRVRfVk9MVU1FIGFyZQogICBwYXNzZWQgdmlhIHNoYXJlZCBwYWdl CiAqIEFkZGVkIHBhcmFtZXRlcnMgZm9yIHRoZSBYZW5CdXMgbm9kZXMgKG5vdyBlYWNoIHN0cmVh bSBjYW4gYmUgbWFwcGVkCiAgIHRvIHRoZSBkZWZpbmVkIHNvdW5kIGRldmljZSBpbiB0aGUgYmFj a2VuZCB1c2luZyB0aG9zZSBwYXJhbWV0ZXJzKQogKiBBZGRlZCBYZW5CdXMgc3RhdGUgZGlhZ3Jh bXMgZGVzY3JpcHRpb24KCkNoYW5nZXMgc2luY2UgdjY6CiAqIFJld29ya2VkIHN0cmVhbXMgZGVz Y3JpcHRpb24gIGluIHRoZSBCYWNrZW5kIFhlbkJ1cyBOb2RlcwoKQ2hhbmdlcyBzaW5jZSB2NzoK ICogcmUtd29ya2VkIGJhY2tlbmQgZGV2aWNlIHBhcmFtZXRlcnMgdG8gYmUgbW9yZSBnZW5lcmlj IGFuZCBmbGV4aWJsZQogKiBleHRlbmRlZCBmcm9udGVuZCBkZXZpY2UgcGFyYW1ldGVycwogKiBz bGlnaHRseSB1cGRhdGVkIHN0YXRlIG1hY2hpbmUgZGVzY3JpcHRpb24gYWRkZWQgbXV0ZS91bm11 dGUgY29tbWFuZHMKICogYWRkZWQgY29uc3RhbnRzIGZvciBYZW5TdG9yZSBjb25maWd1cmF0aW9u IHN0cmluZ3MKICAgKGZpZWxkcywgUENNIGZvcm1hdHMgZXRjLikKICogY2hhbmdlZCByZXF1ZXN0 L3Jlc3BvbnNlIHN0cnVjdHVyZSBzaXplIGZyb20gNjQgb2N0ZXRzIHRvIDE2CiAqIGludHJvZHVj ZWQgZHluYW1pYyBidWZmZXIgYWxsb2NhdGlvbiBpbnN0ZWFkIG9mCiAgIHN0YXRpYyBYRU5TTkRf TUFYX1BBR0VTX1BFUl9SRVFVRVNUCiAqIHJlLXdvcmtlZCBvcGVuIHJlcXVlc3QgdG8gYWxsb3cg ZHluYW1pYyBidWZmZXIgYWxsb2NhdGlvbgogKiByZS13b3JrZWQgcmVhZC93cml0ZS92b2x1bWUg cmVxdWVzdHMsIHNvIHRoZXkgZG9uJ3QgcGFzcyBncmVmczoKICAgYnVmZmVyIGZyb20gdGhlIG9w ZW4gcmVxdWVzdCBpcyB1c2VkIGZvciB0aGVzZSBvcGVyYXRpb25zIHRvIHBhc3MgZGF0YQogKiBz cGVjaWZpZWQgdHlwZSBvZiB0aGUgdm9sdW1lIHZhbHVlIHRvIGJlIGEgc2lnbmVkIHZhbHVlIGlu IHN0ZXBzCiAgIG9mIDAuMDAxIGRCbSwgd2hpbGUgMCBiZWluZyAwZEJtLgogKiBhZGRlZCBMaW51 eCBpbmNsdWRlIGZpbGUgd2l0aCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMKCkNoYW5nZXMgc2luY2Ug djg6CiAqIGNoYW5nZWQgZnJvbnRlbmQtaWQgdG8gZnJvbnRlbmRfaWQKICogc2luZ2xlIHNvdW5k IGNhcmQgc3VwcG9ydCwgY29uZmlndXJlZCB3aXRoIGJ1bmNoIG9mCiAgIGRldmljZXMvc3RyZWFt cwogKiBjbGFyaWZ1Y2F0aW9uIG1hZGUgb24gc2FtcGxlIHJhdGVzIGFuZCBmb3JtYXRzIGV4cHJl c3NlZCBhcwogICBkZWNpbWFscyB3L28gYW55IHBhcnRpY3VsYXIgb3JkZXJpbmcKICogcHV0IGRl c2NyaXB0aW9uIG9mIG1pZ3JhdGlvbi9kaXNjb25uZWN0aW9uIHN0YXRlCiAqIHJlcGxhY2VkIF9f YXR0cmlidXRlX18oKHBhY2tlZCkpIHRvIF9fcGFja2VkCiAqIGNoYW5nZWQgcGFkZGluZyBvZiBy aW5nIHN0cnVjdHVyZXMgdG8gNjQgdG8gZml0IGNhY2hlIGxpbmUKICogcmVtb3ZlZWQgI2lmZGVm IF9fS0VSTkVMCiAqIGV4cGxpY2l0bHkgc3RhdGVkIHdoaWNoIGluZGljZXMgaW4gWGVuU3RvcmUg Y29uZmlndXJhdGlvbgogICBhcmUgY29udGlndW91cwogKiBhZGRlZCBkZXNjcmlwdGlvbiB0byB3 aGF0IGZyb250ZW5kJ3MgZGVmYXVsdHMgYXJlCiAqIG1hZGUgbmFtZXMgb2YgdmlydHVhbCBjYXJk L2RldmljZXMgb3B0aW9uYWwKICogcmVtb3ZlZCBQQ01fRk9STUFUX1NQRUNJQUwKICogY2hhbmdl ZCB2b2x1bWUgdW5pdHMgZnJvbSBkQm0gdG8gZEIKCkNoYW5nZXMgc2luY2Ugdjk6CiAqIHJlbW92 ZWQgc25kaWZfbGludXguaAogKiBtb3ZlZCBhbGwgc3RydWN0dXJlcyBmcm9tIHNuZGlmX2xpbnV4 LmggdG8gc25kaWYuaAogKiBzdHJ1Y3R1cmVzIHBhZGRlZCB3aGVyZSBuZWVkZWQKICogZml4ZWQg SHogY29tbWVudAoKQ2hhbmdlcyBzaW5jZSB2MTA6CiAqIGZpeGVkIHRhYnMgdG8gNCBzcGFjZXMg dG8gY29tcGx5IHdpdGggWGVuIGNvZGluZyBzdHlsZQogKiBhZGRlZCBwbGFjZWhvbGRlcnMgdG8g ZW1wdHkgc3RydWN0dXJlcyAoQzg5IGNvbmNlcm4pCiAqIGFkZGVkIG1pc3NpbmcgaGVhZGVyIGlu Y2x1ZGVzCgpDaGFuZ2VzIHNpbmNlIHYxMToKICogYWRkZWQgWEVOU05EX1JTUF9OT1RTVVBQIGVy cm9yIGNvZGUKICogY2hhbmdlZCBncmVmWzBdIHRvIGdyZWZbMV0gd2l0aCBjb21tZW50CiAqIG1v ZGlmaWVkIGNvbW1lbnRzIG9uIGVtcHR5IHN0cnVjdHVyZXMKICogcmVtb3ZlZCAiX18iIGZyb20g bWVtYmVyIG5hbWVzCiAqIGZpeGVkIGluZGVudGF0aW9uCiAqIGFkZGVkIHBhZGRpbmcgaW4gdW5p b24geGVuc25kX3Jlc3AKICogY2hhbmdlZCBfX1hFTl9QVUJMSUNfSU9fWEVOU05EX0hfXyB0byBf X1hFTl9QVUJMSUNfSU9fU05ESUZfSF9fCgpDaGFuZ2VzIHNpbmNlIHYxMjoKICogY2hhbmdlZCBp bmRlbnRhdGlvbiBmb3IgZGVmaW5lcwogKiBtaXNzZWQgIjsiIGFmdGVyIGdyZWZbMV0KICogZG9j dW1lbnRhdGlvbiBjaGFuZ2VzCiAqIGNoYW5nZWQgcmVxL3Jlc3Agc3RydWN0dXJlcwogKiBjaGFu Z2VkIHhlbnNuZF9wYWdlX2RpcmVjdG9yeSBzdHJ1Y3R1cmUKICogcGFzcyBidWZmZXIgc2l6ZSBp biBvcGVuIHJlcXVlc3QKCkNoYW5nZXMgc2luY2UgdjEzOgogKiBub3RlIG9uIHVzYWdlIG9mIGdy YW50IHJlZiAwCiAqIGFsbCBwYWdlIHNpemVzIGFyZSBYRU5fUEFHRV9TSVpFCiAqIHBhZGRpbmcv cmVzZXJ2ZWQgY2xlYW51cC9maXhlcwogKiByZW1vdmVkIGVtcHR5IHN0cnVjdHVyZXMKCkNoYW5n ZXMgc2luY2UgdjE0OgogKiB0dXJuIHBhZGRpbmcgaW50byByZXNlcnZlZAotLS0KLS0tCiB4ZW4v aW5jbHVkZS9wdWJsaWMvaW8vc25kaWYuaCB8IDY3MSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA2NzEgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1YmxpYy9pby9zbmRpZi5oCgpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvcHVibGljL2lvL3NuZGlmLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW8v c25kaWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGE2ZDg4Ci0tLSAv ZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2lvL3NuZGlmLmgKQEAgLTAsMCArMSw2 NzEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHNuZGlmLmgKKyAqCisgKiBVbmlmaWVk IHNvdW5kLWRldmljZSBJL08gaW50ZXJmYWNlIGZvciBYZW4gZ3Vlc3QgT1Nlcy4KKyAqCisgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24g dGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoK KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hU IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu CisgKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgR2xvYmFsTG9naWMgSW5jLgorICogQ29w eXJpZ2h0IChDKSAyMDE2IEVQQU0gU3lzdGVtcyBJbmMuCisgKgorICogQXV0aG9yczogT2xla3Nh bmRyIEFuZHJ1c2hjaGVua28gPE9sZWtzYW5kcl9BbmRydXNoY2hlbmtvQGVwYW0uY29tPgorICog ICAgICAgICAgT2xla3NhbmRyIEdyeXRzb3YgPE9sZWtzYW5kcl9Hcnl0c292QGVwYW0uY29tPgor ICogICAgICAgICAgT2xla3NhbmRyIERteXRyeXNoeW4gPG9sZWtzYW5kci5kbXl0cnlzaHluQGds b2JhbGxvZ2ljLmNvbT4KKyAqICAgICAgICAgIEl1cmlpIEtvbm92YWxlbmtvIDxpdXJpaS5rb25v dmFsZW5rb0BnbG9iYWxsb2dpYy5jb20+CisgKi8KKworI2lmbmRlZiBfX1hFTl9QVUJMSUNfSU9f U05ESUZfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19JT19TTkRJRl9IX18KKworI2luY2x1ZGUg InJpbmcuaCIKKyNpbmNsdWRlICIuLi9ncmFudF90YWJsZS5oIgorCisvKgorICogRnJvbnQtPmJh Y2sgbm90aWZpY2F0aW9uczogV2hlbiBlbnF1ZXVpbmcgYSBuZXcgcmVxdWVzdCwgc2VuZGluZyBh CisgKiBub3RpZmljYXRpb24gY2FuIGJlIG1hZGUgY29uZGl0aW9uYWwgb24gcmVxX2V2ZW50IChp LmUuLCB0aGUgZ2VuZXJpYworICogaG9sZC1vZmYgbWVjaGFuaXNtIHByb3ZpZGVkIGJ5IHRoZSBy aW5nIG1hY3JvcykuIEJhY2tlbmRzIG11c3Qgc2V0CisgKiByZXFfZXZlbnQgYXBwcm9wcmlhdGVs eSAoZS5nLiwgdXNpbmcgUklOR19GSU5BTF9DSEVDS19GT1JfUkVRVUVTVFMoKSkuCisgKgorICog QmFjay0+ZnJvbnQgbm90aWZpY2F0aW9uczogV2hlbiBlbnF1ZXVpbmcgYSBuZXcgcmVzcG9uc2Us IHNlbmRpbmcgYQorICogbm90aWZpY2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uIHJz cF9ldmVudCAoaS5lLiwgdGhlIGdlbmVyaWMKKyAqIGhvbGQtb2ZmIG1lY2hhbmlzbSBwcm92aWRl ZCBieSB0aGUgcmluZyBtYWNyb3MpLiBGcm9udGVuZHMgbXVzdCBzZXQKKyAqIHJzcF9ldmVudCBh cHByb3ByaWF0ZWx5IChlLmcuLCB1c2luZyBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVNQT05TRVMo KSkuCisgKi8KKworLyoKKyAqIEZlYXR1cmUgYW5kIFBhcmFtZXRlciBOZWdvdGlhdGlvbgorICog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBUaGUgdHdvIGhhbHZlcyBvZiBh IFBhcmEtdmlydHVhbCBzb3VuZCBjYXJkIGRyaXZlciB1dGlsaXplIG5vZGVzIHdpdGhpbiB0aGUK KyAqIFhlblN0b3JlIHRvIGNvbW11bmljYXRlIGNhcGFiaWxpdGllcyBhbmQgdG8gbmVnb3RpYXRl IG9wZXJhdGluZyBwYXJhbWV0ZXJzLgorICogVGhpcyBzZWN0aW9uIGVudW1lcmF0ZXMgdGhlc2Ug bm9kZXMgd2hpY2ggcmVzaWRlIGluIHRoZSByZXNwZWN0aXZlIGZyb250IGFuZAorICogYmFja2Vu ZCBwb3J0aW9ucyBvZiB0aGUgWGVuU3RvcmUsIGZvbGxvd2luZyB0aGUgWGVuQnVzIGNvbnZlbnRp b24uCisgKgorICogQWxsIGRhdGEgaW4gdGhlIFhlblN0b3JlIGlzIHN0b3JlZCBhcyBzdHJpbmdz LiAgTm9kZXMgc3BlY2lmeWluZyBudW1lcmljCisgKiB2YWx1ZXMgYXJlIGVuY29kZWQgaW4gZGVj aW1hbC4gIEludGVnZXIgdmFsdWUgcmFuZ2VzIGxpc3RlZCBiZWxvdyBhcmUKKyAqIGV4cHJlc3Nl ZCBhcyBmaXhlZCBzaXplZCBpbnRlZ2VyIHR5cGVzIGNhcGFibGUgb2Ygc3RvcmluZyB0aGUgY29u dmVyc2lvbgorICogb2YgYSBwcm9wZXJseSBmb3JtYXRlZCBub2RlIHN0cmluZywgd2l0aG91dCBs b3NzIG9mIGluZm9ybWF0aW9uLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgQmFja2VuZCBYZW5CdXMgTm9kZXMKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQWRkcmVzc2lu ZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBJbmRpY2VzIHVzZWQg dG8gYWRkcmVzcyBmcm9udGVuZHMsIGRyaXZlciBpbnN0YW5jZXMsIGNhcmRzLAorICogZGV2aWNl cyBhbmQgc3RyZWFtcy4KKyAqCisgKiBmcm9udGVuZF9pZAorICogICAgICBWYWx1ZXM6ICAgICAg ICAgPHVpbnQ+CisgKgorICogICAgICBEb21haW4gSUQgb2YgdGhlIHNvdW5kIGZyb250ZW5kLgor ICoKKyAqIGRydl9pZHgKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAqICAg ICAgWmVybyBiYXNlZCBjb250aWd1b3VzIGluZGV4IG9mIHRoZSB2aXJ0dWFsaXplZCBzb3VuZCBk cml2ZXIgaW5zdGFuY2UgaW4KKyAqICAgICAgdGhpcyBkb21haW4uIE11bHRpcGxlIFBWIGRyaXZl cnMgYXJlIGFsbG93ZWQgaW4gdGhlIGRvbWFpbgorICogICAgICBhdCB0aGUgc2FtZSB0aW1lLgor ICoKKyAqIGRldl9pZAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+CisgKgorICogICAg ICBVbmlxdWUgZGV2aWNlIElELgorICogICAgICBEb2Vzbid0IGhhdmUgdG8gYmUgemVybyBiYXNl ZCBhbmQvb3IgdG8gYmUgY29udGlndW91cy4KKyAqCisgKiBzdHJlYW1faWR4CisgKiAgICAgIFZh bHVlczogICAgICAgICA8dWludD4KKyAqCisgKiAgICAgIFplcm8gYmFzZWQgY29udGlndW91cyBp bmRleCBvZiB0aGUgc3RyZWFtIG9mIHRoZSBkZXZpY2UuCisgKgorICogRXhhbXBsZSBmb3IgdGhl IGZyb250ZW5kIHJ1bm5pbmcgaW4gZG9tYWluIDUsIGluc3RhbmNlIG9mIHRoZSBkcml2ZXIKKyAq IGluIHRoZSBmcm9udCBpcyAwIChzaW5nbGUgb3IgZmlyc3QgUFYgZHJpdmVyKSwgZGV2aWNlIGlk IDIsCisgKiBmaXJzdCBzdHJlYW0gKDApOgorICogL2xvY2FsL2RvbWFpbi88ZnJvbnRlbmRfaWQ+ L2RldmljZS92c25kLzxkcnZfaWR4Pi8KKyAqICAgICAgICAgZGV2aWNlLzxkZXZfaWQ+L3N0cmVh bS88c3RyZWFtX2lkeD4vdHlwZSA9ICJwIgorICogL2xvY2FsL2RvbWFpbi81L2RldmljZS92c25k LzAvZGV2aWNlLzIvc3RyZWFtLzAvdHlwZSA9ICJwIgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBQQ00gc2V0dGluZ3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiBFdmVyeSB2aXJ0dWFsaXplZCBzb3VuZCBmcm9udGVuZCBoYXMgc2V0IG9mIGRl dmljZXMgYW5kIHN0cmVhbXMsIGVhY2gKKyAqIGlzIGluZGl2aWR1YWxseSBjb25maWd1cmVkLiBQ YXJ0IG9mIHRoZSBQQ00gY29uZmlndXJhdGlvbiBjYW4gYmUgZGVmaW5lZCBhdAorICogaGlnaGVy IGxldmVsIGFuZCBiZSBmdWxseSBvciBwYXJ0aWFsbHkgcmUtdXNlZCBieSB0aGUgdW5kZXJseWlu ZyBsYXllcnMuCisgKiBUaGVzZSBjb25maWd1cmF0aW9uIHZhbHVlcyBhcmU6CisgKiAgbyBudW1i ZXIgb2YgY2hhbm5lbHMgKG1pbi9tYXgpCisgKiAgbyBzdXBwb3J0ZWQgc2FtcGxlIHJhdGVzCisg KiAgbyBzdXBwb3J0ZWQgc2FtcGxlIGZvcm1hdHMuCisgKiBFLmcuIG9uZSBjYW4gZGVmaW5lIHRo ZXNlIHZhbHVlcyBmb3IgdGhlIHdob2xlIGRyaXZlciwgZGV2aWNlIG9yIHN0cmVhbS4KKyAqIEV2 ZXJ5IHVuZGVybHlpbmcgbGF5ZXIgaW4gdHVybiBjYW4gcmUtZGVmaW5lIHNvbWUgb3IgYWxsIG9m IHRoZW0gdG8gYmV0dGVyCisgKiBmaXQgaXRzIG5lZWRzLiBGb3IgZXhhbXBsZSwgZHJpdmVyIG1h eSBkZWZpbmUgbnVtYmVyIG9mIGNoYW5uZWxzIHRvIGJlCisgKiBpbiBbMTsgOF0gcmFuZ2UsIGFu ZCBzb21lIHBhcnRpY3VsYXIgc3RyZWFtIG1heSBiZSBsaW1pdGVkIHRvIFsxOyAyXSBvbmx5Lgor ICogVGhlIHJ1bGUgaXMgdGhhdCB0aGUgdW5kZXJseWluZyBsYXllciBtdXN0IGJlIGEgc3Vic2V0 IG9mIHRoZSB1cHBlciBsYXllcgorICogcmFuZ2UuCisgKgorICogTm90ZTogaWYgYW55IG9mIHRo ZSB2YWx1ZXMgYXJlIG5vdCBkZWZpbmVkIHRoZW4gUFYgZHJpdmVyIHNob3VsZCB1c2UKKyAqIGl0 cyBkZWZhdWx0IHZhbHVlcyBpbnN0ZWFkLgorICoKKyAqIGNoYW5uZWxzLW1pbgorICogICAgICBW YWx1ZXM6ICAgICAgICAgPHVpbnQ+CisgKgorICogICAgICBUaGUgbWluaW11bSBhbW91bnQgb2Yg Y2hhbm5lbHMgdGhhdCBpcyBzdXBwb3J0ZWQuCisgKiAgICAgIE11c3QgYmUgYXQgbGVhc3QgMS4g SWYgbm90IGRlZmluZWQgdGhlbiB1c2UgZnJvbnRlbmQncyBkZWZhdWx0LgorICoKKyAqIGNoYW5u ZWxzLW1heAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+CisgKgorICogICAgICBUaGUg bWF4aW11bSBhbW91bnQgb2YgY2hhbm5lbHMgdGhhdCBpcyBzdXBwb3J0ZWQuCisgKiAgICAgIE11 c3QgYmUgYXQgbGVhc3QgPGNoYW5uZWxzLW1pbj4uIElmIG5vdCBkZWZpbmVkIHRoZW4gdXNlIGZy b250ZW5kJ3MKKyAqICAgICAgZGVmYXVsdC4KKyAqCisgKiBzYW1wbGUtcmF0ZXMKKyAqICAgICAg VmFsdWVzOiAgICAgICAgIDxsaXN0IG9mIHVpbnRzPgorICoKKyAqICAgICAgTGlzdCBvZiBzdXBw b3J0ZWQgc2FtcGxlIHJhdGVzIHNlcGFyYXRlZCBieSBYRU5TTkRfTElTVF9TRVBBUkFUT1IuCisg KiAgICAgIElmIG5vdCBkZWZpbmVkIHRoZW4gdXNlIGZyb250ZW5kJ3MgZGVmYXVsdC4gU2FtcGxl IHJhdGVzIGFyZSBleHByZXNzZWQKKyAqICAgICAgYXMgYSBsaXN0IG9mIGRlY2ltYWwgdmFsdWVz IHcvbyBhbnkgb3JkZXJpbmcgcmVxdWlyZW1lbnQuCisgKgorICogc2FtcGxlLWZvcm1hdHMKKyAq ICAgICAgVmFsdWVzOiAgICAgICAgIDxsaXN0IG9mIFhFTlNORF9QQ01fRk9STUFUX1hYWF9TVFI+ CisgKgorICogICAgICBMaXN0IG9mIHN1cHBvcnRlZCBzYW1wbGUgZm9ybWF0cyBzZXBhcmF0ZWQg YnkgWEVOU05EX0xJU1RfU0VQQVJBVE9SLgorICogICAgICBJZiBub3QgZGVmaW5lZCB0aGVuIHVz ZSBmcm9udGVuZCdzIGRlZmF1bHQuCisgKgorICogYnVmZmVyLXNpemUKKyAqICAgICAgVmFsdWVz OiAgICAgICAgIDx1aW50PgorICoKKyAqICAgICAgVGhlIG1heGltdW0gc2l6ZSBpbiBvY3RldHMg b2YgdGhlIGJ1ZmZlciB0byBhbGxvY2F0ZSBwZXIgc3RyZWFtLgorICoKKyAqIEV4YW1wbGUgY29u ZmlndXJhdGlvbjoKKyAqCisgKiBEcml2ZXIgY29uZmlndXJhdGlvbiB1c2VkIGJ5IGFsbCBzdHJl YW1zOgorICogL2xvY2FsL2RvbWFpbi81L2RldmljZS92c25kLzAvc2FtcGxlLWZvcm1hdHMgPSAi czg7dTg7czE2X2xlO3MxNl9iZSIKKyAqIFN0cmVhbSBvdmVycmlkZXMgc2FtcGxlIHJhdGVzIHN1 cHBvcnRlZDoKKyAqIC9sb2NhbC9kb21haW4vNS9kZXZpY2UvdnNuZC8wL2RldmljZS8yL3N0cmVh bS8wL3NhbXBsZS1yYXRlcyA9CisgKiAgICAgICAgIjgwMDA7MjIwNTA7NDQxMDA7NDgwMDAiCisg KgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWaXJ0dWFsIHNvdW5kIGNhcmQgc2V0dGluZ3Mg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIHNob3J0LW5hbWUKKyAqICAgICAgVmFsdWVz OiAgICAgICAgIDxjaGFyWzMyXT4KKyAqCisgKiAgICAgIFNob3J0IG5hbWUgb2YgdGhlIHZpcnR1 YWwgc291bmQgY2FyZC4gT3B0aW9uYWwuCisgKgorICogbG9uZy1uYW1lCisgKiAgICAgIFZhbHVl czogICAgICAgICA8Y2hhcls4MF0+CisgKgorICogICAgICBMb25nIG5hbWUgb2YgdGhlIHZpcnR1 YWwgc291bmQgY2FyZC4gT3B0aW9uYWwuCisgKgorICogRm9yIGV4YW1wbGUsCisgKiAvbG9jYWwv ZG9tYWluLzUvZGV2aWNlL3ZzbmQvMC9zaG9ydC1uYW1lID0gIlZpcnR1YWwgYXVkaW8iCisgKiAv bG9jYWwvZG9tYWluLzUvZGV2aWNlL3ZzbmQvMC9sb25nLW5hbWUgPQorICogICAgICAgICAiVmly dHVhbCBhdWRpbyBhdCBjZW50ZXIgc3RhY2siCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSBEZXZpY2Ugc2V0dGluZ3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqIG5hbWUKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxjaGFyWzgwXT4KKyAqCisgKiAgICAg IE5hbWUgb2YgdGhlIHNvdW5kIGRldmljZSB3aXRoaW4gdGhlIHZpcnR1YWwgc291bmQgY2FyZC4g T3B0aW9uYWwuCisgKgorICogRm9yIGV4YW1wbGUsCisgKiAvbG9jYWwvZG9tYWluLzUvZGV2aWNl L3ZzbmQvMC9kZXZpY2UvMC9uYW1lID0gIkdlbmVyYWwgYW5hbG9nIgorICoKKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RyZWFtIHNldHRpbmdzIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiB0eXBlCisgKiAgICAgIFZhbHVlczogICAgICAgICAicCIsICJj IgorICoKKyAqICAgICAgU3RyZWFtIHR5cGU6ICJwIiAtIHBsYXliYWNrIHN0cmVhbSwgImMiIC0g Y2FwdHVyZSBzdHJlYW0KKyAqCisgKiAgICAgIElmIGJvdGggY2FwdHVyZSBhbmQgcGxheWJhY2sg YXJlIG5lZWRlZCB0aGVuIHR3byBzdHJlYW1zIG5lZWQgdG8gYmUKKyAqICAgICAgZGVmaW5lZCB1 bmRlciB0aGUgc2FtZSBkZXZpY2UuIEZvciBleGFtcGxlLAorICogICAgICAvbG9jYWwvZG9tYWlu LzUvZGV2aWNlL3ZzbmQvMC9kZXZpY2UvMC9zdHJlYW0vMC90eXBlID0gInAiCisgKiAgICAgIC9s b2NhbC9kb21haW4vNS9kZXZpY2UvdnNuZC8wL2RldmljZS8wL3N0cmVhbS8xL3R5cGUgPSAiYyIK KyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg IEZyb250ZW5kIFhlbkJ1cyBOb2RlcworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSBSZXF1ZXN0IFRyYW5zcG9ydCBQYXJhbWV0ZXJzIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgorICogVGhlc2UgYXJlIHBlciBzdHJlYW0uCisgKgorICogZXZl bnQtY2hhbm5lbAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+CisgKgorICogICAgICBU aGUgaWRlbnRpZmllciBvZiB0aGUgWGVuIGV2ZW50IGNoYW5uZWwgdXNlZCB0byBzaWduYWwgYWN0 aXZpdHkKKyAqICAgICAgaW4gdGhlIHJpbmcgYnVmZmVyLgorICoKKyAqIHJpbmctcmVmCisgKiAg ICAgIFZhbHVlczogICAgICAgICA8dWludD4KKyAqCisgKiAgICAgIFRoZSBYZW4gZ3JhbnQgcmVm ZXJlbmNlIGdyYW50aW5nIHBlcm1pc3Npb24gZm9yIHRoZSBiYWNrZW5kIHRvIG1hcAorICogICAg ICBhIHNvbGUgcGFnZSBpbiBhIHNpbmdsZSBwYWdlIHNpemVkIHJpbmcgYnVmZmVyLgorICoKKyAq IGluZGV4CisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludD4KKyAqCisgKiAgICAgIEFmdGVy IHN0cmVhbSBpbml0aWFsaXphdGlvbiBpdCBpcyBhc3NpZ25lZCBhIHVuaXF1ZSBJRCAod2l0aGlu IHRoZSBmcm9udAorICogICAgICBkcml2ZXIpLCBzbyBldmVyeSBzdHJlYW0gb2YgdGhlIGZyb250 ZW5kIGNhbiBiZSBpZGVudGlmaWVkIGJ5IHRoZQorICogICAgICBiYWNrZW5kIGJ5IHRoaXMgSUQu IFRoaXMgaXMgbm90IGVxdWFsIHRvIHN0cmVhbV9pZHggYXMgdGhlIGxhdGVyIGlzCisgKiAgICAg IHplcm8gYmFzZWQgd2l0aGluIGEgZGV2aWNlLCBidXQgdGhpcyBpbmRleCBpcyBjb250aWd1b3Vz IHdpdGhpbiB0aGUKKyAqICAgICAgZHJpdmVyLgorICovCisKKy8qCisgKiBTVEFURSBESUFHUkFN UworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFN0YXJ0dXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyAqCisgKiBUb29sIHN0YWNrIGNyZWF0ZXMgZnJvbnQgYW5kIGJh Y2sgc3RhdGUgbm9kZXMgd2l0aCBpbml0aWFsIHN0YXRlCisgKiBYZW5idXNTdGF0ZUluaXRpYWxp c2luZy4KKyAqIFRvb2wgc3RhY2sgY3JlYXRlcyBhbmQgc2V0cyB1cCBmcm9udGVuZCBzb3VuZCBj b25maWd1cmF0aW9uIG5vZGVzIHBlciBkb21haW4uCisgKgorICogRnJvbnQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEJhY2sKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBYZW5idXNT dGF0ZUluaXRpYWxpc2luZyAgICAgICAgICAgICAgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcKKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBRdWVyeSBiYWNrZW5kIGRl dmljZSBpZGVudGlmaWNhdGlvbgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGEuCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8g T3BlbiBhbmQgdmFsaWRhdGUgYmFja2VuZCBkZXZpY2UuCisgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWCisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVJbml0V2FpdAorICoKKyAqIG8gUXVl cnkgZnJvbnRlbmQgY29uZmlndXJhdGlvbgorICogbyBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZQor ICogICBldmVudCBjaGFubmVscyBwZXIgY29uZmlndXJlZAorICogICBwbGF5YmFjay9jYXB0dXJl IHN0cmVhbS4KKyAqIG8gUHVibGlzaCB0cmFuc3BvcnQgcGFyYW1ldGVycworICogICB0aGF0IHdp bGwgYmUgaW4gZWZmZWN0IGR1cmluZworICogICB0aGlzIGNvbm5lY3Rpb24uCisgKiAgICAgICAg ICAgICAgfAorICogICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICBWCisgKiBYZW5idXNT dGF0ZUluaXRpYWxpc2VkCisgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvIFF1ZXJ5IGZyb250ZW5kIHRyYW5zcG9ydCBwYXJhbWV0ZXJzLgorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIENvbm5lY3QgdG8gdGhlIGV2ZW50IGNoYW5u ZWxzLgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1 c1N0YXRlQ29ubmVjdGVkCisgKgorICogIG8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIE9TCisgKiAg dmlydHVhbCBzb3VuZCBkZXZpY2UgaW5zdGFuY2VzCisgKiAgYXMgcGVyIGNvbmZpZ3VyYXRpb24u CisgKiAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICBW CisgKiBYZW5idXNTdGF0ZUNvbm5lY3RlZAorICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBYZW5idXNTdGF0ZVVua25vd24KKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3NlZAorICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlQ2xvc2luZworICogbyBSZW1vdmUgdmlydHVh bCBzb3VuZCBkZXZpY2UKKyAqIG8gUmVtb3ZlIGV2ZW50IGNoYW5uZWxzCisgKiAgICAgICAgICAg ICAgfAorICogICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICBWCisgKiBYZW5idXNTdGF0 ZUNsb3NlZAorICoKKyAqLworCisvKgorICogUENNIEZPUk1BVFMKKyAqCisgKiBYRU5TTkRfUENN X0ZPUk1BVF88Zm9ybWF0PltfPGVuZGlhbj5dCisgKgorICogZm9ybWF0OiA8Uy9VL0Y+PGJpdHM+ IG9yIDxuYW1lPgorICogICAgIFMgLSBzaWduZWQsIFUgLSB1bnNpZ25lZCwgRiAtIGZsb2F0Cisg KiAgICAgYml0cyAtIDgsIDE2LCAyNCwgMzIKKyAqICAgICBuYW1lIC0gTVVfTEFXLCBHU00sIGV0 Yy4KKyAqCisgKiBlbmRpYW46IDxMRS9CRT4sIG1heSBiZSBhYnNlbnQKKyAqICAgICBMRSAtIExp dHRsZSBlbmRpYW4sIEJFIC0gQmlnIGVuZGlhbgorICovCisjZGVmaW5lIFhFTlNORF9QQ01fRk9S TUFUX1M4ICAgICAgICAgICAgMAorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VOCAgICAgICAg ICAgIDEKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzE2X0xFICAgICAgICAyCisjZGVmaW5l IFhFTlNORF9QQ01fRk9STUFUX1MxNl9CRSAgICAgICAgMworI2RlZmluZSBYRU5TTkRfUENNX0ZP Uk1BVF9VMTZfTEUgICAgICAgIDQKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTE2X0JFICAg ICAgICA1CisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MyNF9MRSAgICAgICAgNgorI2RlZmlu ZSBYRU5TTkRfUENNX0ZPUk1BVF9TMjRfQkUgICAgICAgIDcKKyNkZWZpbmUgWEVOU05EX1BDTV9G T1JNQVRfVTI0X0xFICAgICAgICA4CisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1UyNF9CRSAg ICAgICAgOQorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMzJfTEUgICAgICAgIDEwCisjZGVm aW5lIFhFTlNORF9QQ01fRk9STUFUX1MzMl9CRSAgICAgICAgMTEKKyNkZWZpbmUgWEVOU05EX1BD TV9GT1JNQVRfVTMyX0xFICAgICAgICAxMgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VMzJf QkUgICAgICAgIDEzCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0YzMl9MRSAgICAgICAgMTQg LyogNC1ieXRlIGZsb2F0LCBJRUVFLTc1NCAzMi1iaXQsICovCisjZGVmaW5lIFhFTlNORF9QQ01f Rk9STUFUX0YzMl9CRSAgICAgICAgMTUgLyogcmFuZ2UgLTEuMCB0byAxLjAgICAgICAgICAgICAg ICovCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0Y2NF9MRSAgICAgICAgMTYgLyogOC1ieXRl IGZsb2F0LCBJRUVFLTc1NCA2NC1iaXQsICovCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0Y2 NF9CRSAgICAgICAgMTcgLyogcmFuZ2UgLTEuMCB0byAxLjAgICAgICAgICAgICAgICovCisjZGVm aW5lIFhFTlNORF9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9MRSAxOAorI2RlZmluZSBYRU5T TkRfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfQkUgMTkKKyNkZWZpbmUgWEVOU05EX1BDTV9G T1JNQVRfTVVfTEFXICAgICAgICAyMAorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9BX0xBVyAg ICAgICAgIDIxCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0lNQV9BRFBDTSAgICAgMjIKKyNk ZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfTVBFRyAgICAgICAgICAyMworI2RlZmluZSBYRU5TTkRf UENNX0ZPUk1BVF9HU00gICAgICAgICAgIDI0CisKKy8qCisgKiBSRVFVRVNUIENPREVTLgorICov CisjZGVmaW5lIFhFTlNORF9PUF9PUEVOICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBYRU5T TkRfT1BfQ0xPU0UgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgWEVOU05EX09QX1JFQUQgICAg ICAgICAgICAgICAgICAyCisjZGVmaW5lIFhFTlNORF9PUF9XUklURSAgICAgICAgICAgICAgICAg MworI2RlZmluZSBYRU5TTkRfT1BfU0VUX1ZPTFVNRSAgICAgICAgICAgIDQKKyNkZWZpbmUgWEVO U05EX09QX0dFVF9WT0xVTUUgICAgICAgICAgICA1CisjZGVmaW5lIFhFTlNORF9PUF9NVVRFICAg ICAgICAgICAgICAgICAgNgorI2RlZmluZSBYRU5TTkRfT1BfVU5NVVRFICAgICAgICAgICAgICAg IDcKKworLyoKKyAqIFhFTlNUT1JFIEZJRUxEIEFORCBQQVRIIE5BTUUgU1RSSU5HUywgSEVMUEVS Uy4KKyAqLworI2RlZmluZSBYRU5TTkRfRFJJVkVSX05BTUUgICAgICAgICAgICAgICJ2c25kIgor CisjZGVmaW5lIFhFTlNORF9MSVNUX1NFUEFSQVRPUiAgICAgICAgICAgIjsiCisvKiBQYXRoIGVu dHJpZXMgKi8KKyNkZWZpbmUgWEVOU05EX1BBVEhfREVWSUNFICAgICAgICAgICAgICAiZGV2aWNl IgorI2RlZmluZSBYRU5TTkRfUEFUSF9TVFJFQU0gICAgICAgICAgICAgICJzdHJlYW0iCisvKiBG aWVsZCBuYW1lcyAqLworI2RlZmluZSBYRU5TTkRfRklFTERfVkNBUkRfU0hPUlRfTkFNRSAgICJz aG9ydC1uYW1lIgorI2RlZmluZSBYRU5TTkRfRklFTERfVkNBUkRfTE9OR19OQU1FICAgICJsb25n LW5hbWUiCisjZGVmaW5lIFhFTlNORF9GSUVMRF9SSU5HX1JFRiAgICAgICAgICAgInJpbmctcmVm IgorI2RlZmluZSBYRU5TTkRfRklFTERfRVZUX0NITkwgICAgICAgICAgICJldmVudC1jaGFubmVs IgorI2RlZmluZSBYRU5TTkRfRklFTERfREVWSUNFX05BTUUgICAgICAgICJuYW1lIgorI2RlZmlu ZSBYRU5TTkRfRklFTERfVFlQRSAgICAgICAgICAgICAgICJ0eXBlIgorI2RlZmluZSBYRU5TTkRf RklFTERfU1RSRUFNX0lOREVYICAgICAgICJpbmRleCIKKyNkZWZpbmUgWEVOU05EX0ZJRUxEX0NI QU5ORUxTX01JTiAgICAgICAiY2hhbm5lbHMtbWluIgorI2RlZmluZSBYRU5TTkRfRklFTERfQ0hB Tk5FTFNfTUFYICAgICAgICJjaGFubmVscy1tYXgiCisjZGVmaW5lIFhFTlNORF9GSUVMRF9TQU1Q TEVfUkFURVMgICAgICAgInNhbXBsZS1yYXRlcyIKKyNkZWZpbmUgWEVOU05EX0ZJRUxEX1NBTVBM RV9GT1JNQVRTICAgICAic2FtcGxlLWZvcm1hdHMiCisjZGVmaW5lIFhFTlNORF9GSUVMRF9CVUZG RVJfU0laRSAgICAgICAgImJ1ZmZlci1zaXplIgorCisvKiBTdHJlYW0gdHlwZSBmaWVsZCB2YWx1 ZXMuICovCisjZGVmaW5lIFhFTlNORF9TVFJFQU1fVFlQRV9QTEFZQkFDSyAgICAgInAiCisjZGVm aW5lIFhFTlNORF9TVFJFQU1fVFlQRV9DQVBUVVJFICAgICAgImMiCisvKiBTYW1wbGUgcmF0ZSBt YXggc3RyaW5nIGxlbmd0aCAqLworI2RlZmluZSBYRU5TTkRfU0FNUExFX1JBVEVfTUFYX0xFTiAg ICAgIDYKKy8qIFNhbXBsZSBmb3JtYXQgZmllbGQgdmFsdWVzICovCisjZGVmaW5lIFhFTlNORF9T QU1QTEVfRk9STUFUX01BWF9MRU4gICAgMjQKKworI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9T OF9TVFIgICAgICAgICJzOCIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVThfU1RSICAgICAg ICAidTgiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MxNl9MRV9TVFIgICAgInMxNl9sZSIK KyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzE2X0JFX1NUUiAgICAiczE2X2JlIgorI2RlZmlu ZSBYRU5TTkRfUENNX0ZPUk1BVF9VMTZfTEVfU1RSICAgICJ1MTZfbGUiCisjZGVmaW5lIFhFTlNO RF9QQ01fRk9STUFUX1UxNl9CRV9TVFIgICAgInUxNl9iZSIKKyNkZWZpbmUgWEVOU05EX1BDTV9G T1JNQVRfUzI0X0xFX1NUUiAgICAiczI0X2xlIgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9T MjRfQkVfU1RSICAgICJzMjRfYmUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1UyNF9MRV9T VFIgICAgInUyNF9sZSIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTI0X0JFX1NUUiAgICAi dTI0X2JlIgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMzJfTEVfU1RSICAgICJzMzJfbGUi CisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MzMl9CRV9TVFIgICAgInMzMl9iZSIKKyNkZWZp bmUgWEVOU05EX1BDTV9GT1JNQVRfVTMyX0xFX1NUUiAgICAidTMyX2xlIgorI2RlZmluZSBYRU5T TkRfUENNX0ZPUk1BVF9VMzJfQkVfU1RSICAgICJ1MzJfYmUiCisjZGVmaW5lIFhFTlNORF9QQ01f Rk9STUFUX0YzMl9MRV9TVFIgICAgImZsb2F0X2xlIgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1B VF9GMzJfQkVfU1RSICAgICJmbG9hdF9iZSIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfRjY0 X0xFX1NUUiAgICAiZmxvYXQ2NF9sZSIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfRjY0X0JF X1NUUiAgICAiZmxvYXQ2NF9iZSIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfSUVDOTU4X1NV QkZSQU1FX0xFX1NUUiAiaWVjOTU4X3N1YmZyYW1lX2xlIgorI2RlZmluZSBYRU5TTkRfUENNX0ZP Uk1BVF9JRUM5NThfU1VCRlJBTUVfQkVfU1RSICJpZWM5NThfc3ViZnJhbWVfYmUiCisjZGVmaW5l IFhFTlNORF9QQ01fRk9STUFUX01VX0xBV19TVFIgICAgIm11X2xhdyIKKyNkZWZpbmUgWEVOU05E X1BDTV9GT1JNQVRfQV9MQVdfU1RSICAgICAiYV9sYXciCisjZGVmaW5lIFhFTlNORF9QQ01fRk9S TUFUX0lNQV9BRFBDTV9TVFIgImltYV9hZHBjbSIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRf TVBFR19TVFIgICAgICAibXBlZyIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfR1NNX1NUUiAg ICAgICAiZ3NtIgorCisvKgorICogU1RBVFVTIFJFVFVSTiBDT0RFUy4KKyAqLworLyogT3BlcmF0 aW9uIG5vdCBzdXBwb3J0ZWQuICovCisjZGVmaW5lIFhFTlNORF9SU1BfTk9UU1VQUCAgICAgICAg ICAgICAgKC0yKQorLyogT3BlcmF0aW9uIGZhaWxlZCBmb3Igc29tZSB1bnNwZWNpZmllZCByZWFz b24gKGUuIGcuIC1FSU8pLiAqLworI2RlZmluZSBYRU5TTkRfUlNQX0VSUk9SICAgICAgICAgICAg ICAgICgtMSkKKy8qIE9wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiAqLworI2RlZmlu ZSBYRU5TTkRfUlNQX09LQVkgICAgICAgICAgICAgICAgIDAKKworLyoKKyAqIEFzc3VtcHRpb25z OgorICogICBvIHVzYWdlIG9mIGdyYW50IHJlZmVyZW5jZSAwIGFzIGludmFsaWQgZ3JhbnQgcmVm ZXJlbmNlOgorICogICAgIGdyYW50IHJlZmVyZW5jZSAwIGlzIHZhbGlkLCBidXQgbmV2ZXIgZXhw b3NlZCB0byBhIFBWIGRyaXZlciwKKyAqICAgICBiZWNhdXNlIG9mIHRoZSBmYWN0IGl0IGlzIGFs cmVhZHkgaW4gdXNlL3Jlc2VydmVkIGJ5IHRoZSBQViBjb25zb2xlLgorICogICBvIGFsbCByZWZl cmVuY2VzIGluIHRoaXMgZG9jdW1lbnQgdG8gcGFnZSBzaXplcyBtdXN0IGJlIHRyZWF0ZWQKKyAq ICAgICBhcyBwYWdlcyBvZiBzaXplIFhFTl9QQUdFX1NJWkUgdW5sZXNzICBvdGhlcndpc2Ugbm90 ZWQuCisgKgorICogRGVzY3JpcHRpb24gb2YgdGhlIHByb3RvY29sIGJldHdlZW4gZnJvbnRlbmQg YW5kIGJhY2tlbmQgZHJpdmVyLgorICoKKyAqIFRoZSB0d28gaGFsdmVzIG9mIGEgUGFyYS12aXJ0 dWFsIHNvdW5kIGRyaXZlciBjb21tdW5pY2F0ZSB3aXRoCisgKiBlYWNoIG90aGVyIHVzaW5nIGEg c2hhcmVkIHBhZ2UgYW5kIGFuIGV2ZW50IGNoYW5uZWwuCisgKiBTaGFyZWQgcGFnZSBjb250YWlu cyBhIHJpbmcgd2l0aCByZXF1ZXN0L3Jlc3BvbnNlIHBhY2tldHMuCisgKgorICogQWxsIHJlc2Vy dmVkIGZpZWxkcyBpbiB0aGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0IGJlIDAuCisgKgorICogQWxs IHJlcXVlc3QgcGFja2V0cyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAoMzIgb2N0ZXRzKQorICogQWxs IHJlcXVlc3QgcGFja2V0cyBoYXZlIGNvbW1vbiBoZWFkZXI6CisgKiAgICAgICAgICAwICAgICAg ICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAzICAgICAgICBv Y3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgaWQgICAgICAg ICAgICAgICAgfCAgICBvcGVyYXRpb24gICAgfCAgICAgc3RyZWFtX2lkeCAgfAorICogKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICog ICBpZCAtIHVpbnQxNl90LCBwcml2YXRlIGd1ZXN0IHZhbHVlLCBlY2hvZWQgaW4gcmVzcG9uc2UK KyAqICAgb3BlcmF0aW9uIC0gdWludDhfdCwgb3BlcmF0aW9uIGNvZGUKKyAqICAgc3RyZWFtX2lk eCAtIHVpbnQ4X3QsIGluZGV4IG9mIHRoZSBzdHJlYW0gKCJzdHJlYW1zX2lkeCIgWGVuU3RvcmUg ZW50cnkKKyAqICAgICBvZiB0aGUgc3RyZWFtKQorICoKKyAqCisgKiBSZXF1ZXN0IG9wZW4gLSBv cGVuIGEgUENNIHN0cmVhbSBmb3IgcGxheWJhY2sgb3IgY2FwdHVyZToKKyAqICAgICAgICAgIDAg ICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgIDMgICAg ICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICBpZCAg ICAgICAgICAgICAgICB8IFhFTlNORF9PUF9PUEVOICB8ICAgICBzdHJlYW1faWR4ICB8CisgKiAr LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY21fcmF0ZSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICBwY21fZm9y bWF0ICAgICB8ICBwY21fY2hhbm5lbHMgICB8ICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAg ICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJ1ZmZlcl9zeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZfZGlyZWN0b3J5 X3N0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC98CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rCisgKgorICogcGNtX3JhdGUgLSB1aW50MzJfdCwgc3RyZWFtIGRhdGEgcmF0ZSwg SHoKKyAqIHBjbV9mb3JtYXQgLSB1aW50OF90LCBYRU5TTkRfUENNX0ZPUk1BVF9YWFggdmFsdWUK KyAqIHBjbV9jaGFubmVscyAtIHVpbnQ4X3QsIG51bWJlciBvZiBjaGFubmVscyBvZiB0aGlzIHN0 cmVhbQorICogYnVmZmVyX3N6IC0gdWludDMyX3QsIGJ1ZmZlciBzaXplIHRvIGJlIGFsbG9jYXRl ZCBpbiBvY3RldHMKKyAqIGdyZWZfZGlyZWN0b3J5X3N0YXJ0IC0gZ3JhbnRfcmVmX3QsIGEgcmVm ZXJlbmNlIHRvIHRoZSBmaXJzdCBzaGFyZWQgcGFnZQorICogICBkZXNjcmliaW5nIHNoYXJlZCBi dWZmZXIgcmVmZXJlbmNlcy4gQXQgbGVhc3Qgb25lIHBhZ2UgZXhpc3RzLiBJZiBzaGFyZWQKKyAq ICAgYnVmZmVyIHNpemUgZXhjZWVkcyB3aGF0IGNhbiBiZSBhZGRyZXNzZWQgYnkgdGhpcyBzaW5n bGUgcGFnZSwgdGhlbgorICogICByZWZlcmVuY2UgdG8gdGhlIG5leHQgcGFnZSBtdXN0IGJlIHN1 cHBsaWVkIChzZWUgZ3JlZl9kaXJfbmV4dF9wYWdlIGJlbG93KQorICovCisKK3N0cnVjdCB4ZW5z bmRfb3Blbl9yZXEgeworICAgIHVpbnQzMl90IHBjbV9yYXRlOyAvKiBpbiBIeiAqLworICAgIHVp bnQ4X3QgcGNtX2Zvcm1hdDsKKyAgICB1aW50OF90IHBjbV9jaGFubmVsczsKKyAgICB1aW50MTZf dCByZXNlcnZlZDsKKyAgICB1aW50MzJfdCBidWZmZXJfc3o7CisgICAgZ3JhbnRfcmVmX3QgZ3Jl Zl9kaXJlY3Rvcnlfc3RhcnQ7Cit9OworCisvKgorICogU2hhcmVkIHBhZ2UgZm9yIFhFTlNORF9P UF9PUEVOIGJ1ZmZlciBkZXNjcmlwdG9yIChncmVmX2RpcmVjdG9yeSBpbiB0aGUKKyAqICAgcmVx dWVzdCkgZW1wbG95cyBhIGxpc3Qgb2YgcGFnZXMsIGRlc2NyaWJpbmcgYWxsIHBhZ2VzIG9mIHRo ZSBzaGFyZWQgZGF0YQorICogICBidWZmZXI6CisgKiAgICAgICAgICAwICAgICAgICAgICAgICAg ICAxICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICog Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZl9kaXJf bmV4dF9wYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZlswXSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3JlZltpXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZltOIC0xXSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIGdyZWZfZGly X25leHRfcGFnZSAtIGdyYW50X3JlZl90LCByZWZlcmVuY2UgdG8gdGhlIG5leHQgcGFnZSBkZXNj cmliaW5nCisgKiAgIHBhZ2UgZGlyZWN0b3J5LiBNdXN0IGJlIDAgaWYgbm8gbW9yZSBwYWdlcyBp biB0aGUgbGlzdC4KKyAqIGdyZWZbaV0gLSBncmFudF9yZWZfdCwgcmVmZXJlbmNlIHRvIGEgc2hh cmVkIHBhZ2Ugb2YgdGhlIGJ1ZmZlcgorICogICBhbGxvY2F0ZWQgYXQgWEVOU05EX09QX09QRU4K KyAqCisgKiBOdW1iZXIgb2YgZ3JhbnRfcmVmX3QgZW50cmllcyBpbiB0aGUgd2hvbGUgcGFnZSBk aXJlY3RvcnkgaXMgbm90CisgKiBwYXNzZWQsIGJ1dCBpbnN0ZWFkIGNhbiBiZSBjYWxjdWxhdGVk IGFzOgorICogICBudW1fZ3JlZnNfdG90YWwgPSAoWEVOU05EX09QX09QRU4uYnVmZmVyX3N6ICsg WEVOX1BBR0VfU0laRSAtIDEpIC8KKyAqICAgICAgIFhFTl9QQUdFX1NJWkUKKyAqLworCitzdHJ1 Y3QgeGVuc25kX3BhZ2VfZGlyZWN0b3J5IHsKKyAgICBncmFudF9yZWZfdCBncmVmX2Rpcl9uZXh0 X3BhZ2U7CisgICAgZ3JhbnRfcmVmX3QgZ3JlZlsxXTsgLyogVmFyaWFibGUgbGVuZ3RoICovCit9 OworCisvKgorICogIFJlcXVlc3QgY2xvc2UgLSBjbG9zZSBhbiBvcGVuZWQgcGNtIHN0cmVhbToK KyAqICAgICAgICAgIDAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAyICAgICAg ICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAg ICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8IFhFTlNORF9PUF9DTE9TRSB8ICAgICBzdHJl YW1faWR4ICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAr LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKi8KKworLyoKKyAq IFJlcXVlc3QgcmVhZC93cml0ZSAtIHVzZWQgZm9yIHJlYWQgKGZvciBjYXB0dXJlKSBvciB3cml0 ZSAoZm9yIHBsYXliYWNrKToKKyAqICAgICAgICAgIDAgICAgICAgICAgICAgICAgIDEgICAgICAg ICAgICAgICAgICAyICAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgIG9wZXJh dGlvbiAgICB8ICAgICBzdHJlYW1faWR4ICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvZmZzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg KiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs ZW5ndGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAr LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rCisgKgorICogb3BlcmF0aW9uIC0gWEVOU05EX09QX1JFQUQgZm9yIHJl YWQgb3IgWEVOU05EX09QX1dSSVRFIGZvciB3cml0ZQorICogb2Zmc2V0IC0gdWludDMyX3QsIHJl YWQgb3Igd3JpdGUgZGF0YSBvZmZzZXQgd2l0aGluIHRoZSBzaGFyZWQgYnVmZmVyCisgKiAgIHBh c3NlZCB3aXRoIFhFTlNORF9PUF9PUEVOIHJlcXVlc3QKKyAqIGxlbmd0aCAtIHVpbnQzMl90LCBy ZWFkIG9yIHdyaXRlIGRhdGEgbGVuZ3RoCisgKi8KKworc3RydWN0IHhlbnNuZF9yd19yZXEgewor ICAgIHVpbnQzMl90IG9mZnNldDsKKyAgICB1aW50MzJfdCBsZW47Cit9OworCisvKgorICogUmVx dWVzdCBzZXQvZ2V0IHZvbHVtZSAtIHNldC9nZXQgY2hhbm5lbHMnIHZvbHVtZSBvZiB0aGUgc3Ry ZWFtIGdpdmVuOgorICogICAgICAgICAgMCAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAg ICAgIDIgICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgb3BlcmF0aW9uICAg IHwgICAgIHN0cmVhbV9pZHggIHwKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAq CisgKiBvcGVyYXRpb24gLSBYRU5TTkRfT1BfU0VUX1ZPTFVNRSBmb3Igdm9sdW1lIHNldAorICog ICBvciBYRU5TTkRfT1BfR0VUX1ZPTFVNRSBmb3Igdm9sdW1lIGdldAorICogQnVmZmVyIHBhc3Nl ZCB3aXRoIFhFTlNORF9PUF9PUEVOIGlzIHVzZWQgdG8gZXhjaGFuZ2Ugdm9sdW1lCisgKiB2YWx1 ZXM6CisgKgorICogICAgICAgICAgMCAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAg IDIgICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbFswXSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqICsvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L3wKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2hhbm5lbFtpXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSsKKyAqICsvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICAgY2hhbm5lbFtYRU5TTkRfT1BfT1BFTi5wY21fY2hhbm5lbHMgLSAxXSAg ICAgICAgICAgICAgIHwKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBjaGFubmVsW2ldIC0g c2ludDMyX3QsIHZvbHVtZSBvZiBpLXRoIGNoYW5uZWwKKyAqIFZvbHVtZSBpcyBleHByZXNzZWQg YXMgYSBzaWduZWQgdmFsdWUgaW4gc3RlcHMgb2YgMC4wMDEgZEIsCisgKiB3aGlsZSAwIGJlaW5n IDAgZEIuCisgKi8KKworLyoKKyAqIFJlcXVlc3QgbXV0ZS91bm11dGUgLSBtdXRlL3VubXV0ZSBz dHJlYW06CisgKiAgICAgICAgICAwICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAg MiAgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCAgICBvcGVyYXRpb24gICAgfCAg ICAgc3RyZWFtX2lkeCAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICoKKyAq IG9wZXJhdGlvbiAtIFhFTlNORF9PUF9NVVRFIGZvciBtdXRlIG9yIFhFTlNORF9PUF9VTk1VVEUg Zm9yIHVubXV0ZQorICogQnVmZmVyIHBhc3NlZCB3aXRoIFhFTlNORF9PUF9PUEVOIGlzIHVzZWQg dG8gZXhjaGFuZ2UgbXV0ZS91bm11dGUKKyAqIHZhbHVlczoKKyAqCisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGFubmVsWzBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKworICogKy9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsW2ldICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogKy9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICBjaGFubmVsW1hF TlNORF9PUF9PUEVOLnBjbV9jaGFubmVscyAtIDFdICAgICAgICAgICAgICAgfAorICogKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKworICoKKyAqIGNoYW5uZWxbaV0gLSB1aW50OF90LCBub24temVybyBpZiBpLXRo IGNoYW5uZWwgbmVlZHMgdG8gYmUgbXV0ZWQvdW5tdXRlZAorICovCisKKy8qCisgKiBBbGwgcmVz cG9uc2UgcGFja2V0cyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAoMzIgb2N0ZXRzKQorICoKKyAqIFJl c3BvbnNlIGZvciBhbGwgcmVxdWVzdHM6CisgKiAgICAgICAgICAwICAgICAgICAgICAgICAgICAx ICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCAg ICBvcGVyYXRpb24gICAgfCAgICAgc3RyZWFtX2lkeCAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgIHN0YXR1cyAgICAgfCAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAg ICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICoK KyAqIGlkIC0gdWludDE2X3QsIGNvcGllZCBmcm9tIHRoZSByZXF1ZXN0CisgKiBzdHJlYW1faWR4 IC0gdWludDhfdCwgY29waWVkIGZyb20gcmVxdWVzdAorICogb3BlcmF0aW9uIC0gdWludDhfdCwg WEVOU05EX09QXyogLSBjb3BpZWQgZnJvbSByZXF1ZXN0CisgKiBzdGF0dXMgLSBpbnQ4X3QsIHJl c3BvbnNlIHN0YXR1cyAoWEVOU05EX1JTUF8qKQorICovCisKK3N0cnVjdCB4ZW5zbmRfcmVxIHsK KyAgICB1aW50MTZfdCBpZDsKKyAgICB1aW50OF90IG9wZXJhdGlvbjsKKyAgICB1aW50OF90IHN0 cmVhbV9pZHg7CisgICAgdWludDMyX3QgcmVzZXJ2ZWQ7CisgICAgdW5pb24geworICAgICAgICBz dHJ1Y3QgeGVuc25kX29wZW5fcmVxIG9wZW47CisgICAgICAgIHN0cnVjdCB4ZW5zbmRfcndfcmVx IHJ3OworICAgICAgICB1aW50OF90IHJlc2VydmVkWzI0XTsKKyAgICB9IG9wOworfTsKKworc3Ry dWN0IHhlbnNuZF9yZXNwIHsKKyAgICB1aW50MTZfdCBpZDsKKyAgICB1aW50OF90IG9wZXJhdGlv bjsKKyAgICB1aW50OF90IHN0cmVhbV9pZHg7CisgICAgaW50OF90IHN0YXR1czsKKyAgICB1aW50 OF90IHJlc2VydmVkWzI3XTsKK307CisKK0RFRklORV9SSU5HX1RZUEVTKHhlbl9zbmRpZiwgc3Ry dWN0IHhlbnNuZF9yZXEsIHN0cnVjdCB4ZW5zbmRfcmVzcCk7CisKKyNlbmRpZiAvKiBfX1hFTl9Q VUJMSUNfSU9fU05ESUZfSF9fICovCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=