From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liam Girdwood Subject: [PATCH] WM97xx AC97 codec controls Date: Tue, 19 Jul 2005 11:39:25 +0100 Message-ID: <1121769565.6237.32.camel@cearnarfon> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-yIHdZFWPAjtUxL2RyICl" Return-path: Sender: alsa-devel-admin@lists.sourceforge.net Errors-To: alsa-devel-admin@lists.sourceforge.net List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , List-Archive: To: alsa-devel@lists.sourceforge.net List-Id: alsa-devel@alsa-project.org --=-yIHdZFWPAjtUxL2RyICl Content-Type: text/plain Content-Transfer-Encoding: 7bit This patch adds support to the WM97xx family for non standard AC97 codec controls. It exposes the extra (non std AC97) features of each codec as a new kcontrol. Changes:- o Enhanced current WM97xx support to provide additional controls. o Added AC97_HAS_NO_MIC and AC97_HAS_NO_TONE Liam Signed-off-by: Liam Girdwood --=-yIHdZFWPAjtUxL2RyICl Content-Disposition: attachment; filename=alsa-wm97.diff Content-Type: text/x-patch; name=alsa-wm97.diff; charset=UTF-8 Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvYWM5N19jb2RlYy5oIGIvaW5jbHVkZS9zb3VuZC9h Yzk3X2NvZGVjLmgNCi0tLSBhL2luY2x1ZGUvc291bmQvYWM5N19jb2RlYy5oDQorKysgYi9pbmNs dWRlL3NvdW5kL2FjOTdfY29kZWMuaA0KQEAgLTM3NCw2ICszNzQsOCBAQA0KICNkZWZpbmUgQUM5 N19IQVNfTk9fUENfQkVFUAkoMTw8MTIpIC8qIG5vIFBDIEJlZXAgdm9sdW1lICovDQogI2RlZmlu ZSBBQzk3X0hBU19OT19WSURFTwkoMTw8MTMpIC8qIG5vIFZpZGVvIHZvbHVtZSAqLw0KICNkZWZp bmUgQUM5N19IQVNfTk9fQ0QJCSgxPDwxNCkgLyogbm8gQ0Qgdm9sdW1lICovDQorI2RlZmluZSBB Qzk3X0hBU19OT19NSUMJCSgxPDwxNSkgLyogbm8gTUlDIHZvbHVtZSAqLw0KKyNkZWZpbmUgQUM5 N19IQVNfTk9fVE9ORQkoMTw8MTYpIC8qIG5vIFRvbmUgY29udHJvbCAqLw0KIA0KIC8qIHJhdGVz IGluZGV4ZXMgKi8NCiAjZGVmaW5lIEFDOTdfUkFURVNfRlJPTlRfREFDCTANCmRpZmYgLS1naXQg YS9zb3VuZC9wY2kvYWM5Ny9hYzk3X2NvZGVjLmMgYi9zb3VuZC9wY2kvYWM5Ny9hYzk3X2NvZGVj LmMNCi0tLSBhL3NvdW5kL3BjaS9hYzk3L2FjOTdfY29kZWMuYw0KKysrIGIvc291bmQvcGNpL2Fj OTcvYWM5N19jb2RlYy5jDQpAQCAtMTMwMCwxNCArMTMwMCwxNyBAQCBzdGF0aWMgaW50IHNuZF9h Yzk3X21peGVyX2J1aWxkKGFjOTdfdCAqDQogCX0NCiAJDQogCS8qIGJ1aWxkIG1hc3RlciB0b25l IGNvbnRyb2xzICovDQotCWlmIChzbmRfYWM5N190cnlfdm9sdW1lX21peChhYzk3LCBBQzk3X01B U1RFUl9UT05FKSkgew0KLQkJZm9yIChpZHggPSAwOyBpZHggPCAyOyBpZHgrKykgew0KLQkJCWlm ICgoZXJyID0gc25kX2N0bF9hZGQoY2FyZCwga2N0bCA9IHNuZF9hYzk3X2NuZXcoJnNuZF9hYzk3 X2NvbnRyb2xzX3RvbmVbaWR4XSwgYWM5NykpKSA8IDApDQotCQkJCXJldHVybiBlcnI7DQotCQkJ aWYgKGFjOTctPmlkID09IEFDOTdfSURfWU1GNzUzKSB7DQotCQkJCWtjdGwtPnByaXZhdGVfdmFs dWUgJj0gfigweGZmIDw8IDE2KTsNCi0JCQkJa2N0bC0+cHJpdmF0ZV92YWx1ZSB8PSA3IDw8IDE2 Ow0KKwlpZiAoIShhYzk3LT5mbGFncyAmIEFDOTdfSEFTX05PX1RPTkUpKSB7DQorCQlpZiAoc25k X2FjOTdfdHJ5X3ZvbHVtZV9taXgoYWM5NywgQUM5N19NQVNURVJfVE9ORSkpIHsNCisJCQlmb3Ig KGlkeCA9IDA7IGlkeCA8IDI7IGlkeCsrKSB7DQorCQkJCWlmICgoZXJyID0gc25kX2N0bF9hZGQo Y2FyZCwga2N0bCA9IHNuZF9hYzk3X2NuZXcoJnNuZF9hYzk3X2NvbnRyb2xzX3RvbmVbaWR4XSwg YWM5NykpKSA8IDApDQorCQkJCQlyZXR1cm4gZXJyOw0KKwkJCQlpZiAoYWM5Ny0+aWQgPT0gQUM5 N19JRF9ZTUY3NTMpIHsNCisJCQkJCWtjdGwtPnByaXZhdGVfdmFsdWUgJj0gfigweGZmIDw8IDE2 KTsNCisJCQkJCWtjdGwtPnByaXZhdGVfdmFsdWUgfD0gNyA8PCAxNjsNCisJCQkJfQ0KIAkJCX0N CisJCQlzbmRfYWM5N193cml0ZV9jYWNoZShhYzk3LCBBQzk3X01BU1RFUl9UT05FLCAweDBmMGYp Ow0KIAkJfQ0KIAkJc25kX2FjOTdfd3JpdGVfY2FjaGUoYWM5NywgQUM5N19NQVNURVJfVE9ORSwg MHgwZjBmKTsNCiAJfQ0KQEAgLTEzMzIsMTEgKzEzMzUsMTMgQEAgc3RhdGljIGludCBzbmRfYWM5 N19taXhlcl9idWlsZChhYzk3X3QgKg0KIAl9DQogCQ0KIAkvKiBidWlsZCBNSUMgY29udHJvbHMg Ki8NCi0JaWYgKHNuZF9hYzk3X3RyeV92b2x1bWVfbWl4KGFjOTcsIEFDOTdfTUlDKSkgew0KLQkJ aWYgKChlcnIgPSBzbmRfYWM5N19jbWl4X25ldyhjYXJkLCAiTWljIFBsYXliYWNrIiwgQUM5N19N SUMsIGFjOTcpKSA8IDApDQotCQkJcmV0dXJuIGVycjsNCi0JCWlmICgoZXJyID0gc25kX2N0bF9h ZGQoY2FyZCwgc25kX2FjOTdfY25ldygmc25kX2FjOTdfY29udHJvbHNfbWljX2Jvb3N0LCBhYzk3 KSkpIDwgMCkNCi0JCQlyZXR1cm4gZXJyOw0KKwlpZiAoIShhYzk3LT5mbGFncyAmIEFDOTdfSEFT X05PX01JQykpIHsNCisJCWlmIChzbmRfYWM5N190cnlfdm9sdW1lX21peChhYzk3LCBBQzk3X01J QykpIHsNCisJCQlpZiAoKGVyciA9IHNuZF9hYzk3X2NtaXhfbmV3KGNhcmQsICJNaWMgUGxheWJh Y2siLCBBQzk3X01JQywgYWM5NykpIDwgMCkNCisJCQkJcmV0dXJuIGVycjsNCisJCQlpZiAoKGVy ciA9IHNuZF9jdGxfYWRkKGNhcmQsIHNuZF9hYzk3X2NuZXcoJnNuZF9hYzk3X2NvbnRyb2xzX21p Y19ib29zdCwgYWM5NykpKSA8IDApDQorCQkJCXJldHVybiBlcnI7DQorCQl9DQogCX0NCiANCiAJ LyogYnVpbGQgTGluZSBjb250cm9scyAqLw0KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hYzk3L2Fj OTdfcGF0Y2guYyBiL3NvdW5kL3BjaS9hYzk3L2FjOTdfcGF0Y2guYw0KLS0tIGEvc291bmQvcGNp L2FjOTcvYWM5N19wYXRjaC5jDQorKysgYi9zb3VuZC9wY2kvYWM5Ny9hYzk3X3BhdGNoLmMNCkBA IC0zNzAsNDggKzM3MCwyMTggQEAgaW50IHBhdGNoX3lhbWFoYV95bWY3NTMoYWM5N190ICogYWM5 NykNCiAgKiAgYWRkZWQgc3VwcG9ydCBmb3IgV005NzA1LFdNOTcwOCxXTTk3MDksV005NzEwLFdN OTcxMSxXTTk3MTIgYW5kIFdNOTcxNy4NCiAgKi8NCiANCi1pbnQgcGF0Y2hfd29sZnNvbjAzKGFj OTdfdCAqIGFjOTcpDQorc3RhdGljIGNvbnN0IHNuZF9rY29udHJvbF9uZXdfdCB3bTk3eHhfc25k X2FjOTdfY29udHJvbHNbXSA9IHsNCitBQzk3X0RPVUJMRSgiRnJvbnQgTWl4IFZvbCIsIDB4NzIs IDgsIDAsIDMxLCAxKSwNCitBQzk3X1NJTkdMRSgiRnJvbnQgTWl4IE11dGUiLCAweDcyLCAxNSwg MSwgMSksDQorfTsNCisNCitpbnQgcGF0Y2hfd29sZnNvbl93bTk3MDNfc3BlY2lmaWMoYWM5N190 ICogYWM5NykNCiB7DQogCS8qIFRoaXMgaXMga25vd24gdG8gd29yayBmb3IgdGhlIFZpZXdTb25p YyBWaWV3UGFkIDEwMDANCi0JICAgUmFuZG9scGggQmVudHNvbiA8YmVudHNvbkBob2xtc2pvZW4u Y29tPiAqLw0KKwkgKiBSYW5kb2xwaCBCZW50c29uIDxiZW50c29uQGhvbG1zam9lbi5jb20+DQor CSAqIFdNOTcwMy85NzA3Lzk3MDgvOTcxNyANCisJICovDQorCWludCBlcnIsIGk7DQorCQ0KKwlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh3bTk3eHhfc25kX2FjOTdfY29udHJvbHMpOyBpKysp IHsNCisJCWlmICgoZXJyID0gc25kX2N0bF9hZGQoYWM5Ny0+YnVzLT5jYXJkLCBzbmRfYWM5N19j bmV3KCZ3bTk3eHhfc25kX2FjOTdfY29udHJvbHNbaV0sIGFjOTcpKSkgPCAwKQ0KKwkJCXJldHVy biBlcnI7DQorCX0NCisJc25kX2FjOTdfd3JpdGVfY2FjaGUoYWM5NywgIDB4NzIsIDB4MDgwOCk7 DQorCXJldHVybiAwOw0KK30NCiANCi0JLy8gV005NzAzLzk3MDcvOTcwOC85NzE3DQotCXNuZF9h Yzk3X3dyaXRlX2NhY2hlKGFjOTcsIEFDOTdfV005N1hYX0ZNSVhFUl9WT0wsIDB4MDgwOCk7DQot CXNuZF9hYzk3X3dyaXRlX2NhY2hlKGFjOTcsIEFDOTdfR0VORVJBTF9QVVJQT1NFLCAweDgwMDAp Ow0KK3N0YXRpYyBzdHJ1Y3Qgc25kX2FjOTdfYnVpbGRfb3BzIHBhdGNoX3dvbGZzb25fd205NzAz X29wcyA9IHsNCisJLmJ1aWxkX3NwZWNpZmljID0gcGF0Y2hfd29sZnNvbl93bTk3MDNfc3BlY2lm aWMsDQorfTsNCisNCitpbnQgcGF0Y2hfd29sZnNvbjAzKGFjOTdfdCAqIGFjOTcpDQorew0KKwlh Yzk3LT5idWlsZF9vcHMgPSAmcGF0Y2hfd29sZnNvbl93bTk3MDNfb3BzOw0KIAlyZXR1cm4gMDsN CiB9DQotICANCi1pbnQgcGF0Y2hfd29sZnNvbjA0KGFjOTdfdCAqIGFjOTcpDQorDQoraW50IHBh dGNoX3dvbGZzb25fd205NzA0X3NwZWNpZmljKGFjOTdfdCAqIGFjOTcpDQogew0KLQkvLyBXTTk3 MDRNLzk3MDRRDQotCS8vIHNldCBmcm9udCBhbmQgcmVhciBtaXhlciB2b2x1bWUNCisJaW50IGVy ciwgaTsNCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUod205N3h4X3NuZF9hYzk3X2NvbnRy b2xzKTsgaSsrKSB7DQorCQlpZiAoKGVyciA9IHNuZF9jdGxfYWRkKGFjOTctPmJ1cy0+Y2FyZCwg c25kX2FjOTdfY25ldygmd205N3h4X3NuZF9hYzk3X2NvbnRyb2xzW2ldLCBhYzk3KSkpIDwgMCkN CisJCQlyZXR1cm4gZXJyOw0KKwl9DQorCQ0KIAlzbmRfYWM5N193cml0ZV9jYWNoZShhYzk3LCBB Qzk3X1dNOTdYWF9GTUlYRVJfVk9MLCAweDA4MDgpOw0KIAlzbmRfYWM5N193cml0ZV9jYWNoZShh Yzk3LCBBQzk3X1dNOTcwNF9STUlYRVJfVk9MLCAweDA4MDgpOw0KLQkNCi0JLy8gcGF0Y2ggZm9y IERWRCBub2lzZQ0KIAlzbmRfYWM5N193cml0ZV9jYWNoZShhYzk3LCBBQzk3X1dNOTcwNF9URVNU LCAweDAyMDApOw0KLSANCi0JLy8gaW5pdCB2b2wNCiAJc25kX2FjOTdfd3JpdGVfY2FjaGUoYWM5 NywgQUM5N19XTTk3MDRfUlBDTV9WT0wsIDB4MDgwOCk7DQotIA0KLQkvLyBzZXQgcmVhciBzdXJy b3VuZCB2b2x1bWUNCiAJc25kX2FjOTdfd3JpdGVfY2FjaGUoYWM5NywgQUM5N19TVVJST1VORF9N QVNURVIsIDB4MDAwMCk7DQogCXJldHVybiAwOw0KIH0NCi0gIA0KKw0KK3N0YXRpYyBzdHJ1Y3Qg c25kX2FjOTdfYnVpbGRfb3BzIHBhdGNoX3dvbGZzb25fd205NzA0X29wcyA9IHsNCisJLmJ1aWxk X3NwZWNpZmljID0gcGF0Y2hfd29sZnNvbl93bTk3MDRfc3BlY2lmaWMsDQorfTsNCisNCitpbnQg cGF0Y2hfd29sZnNvbjA0KGFjOTdfdCAqIGFjOTcpDQorew0KKwlhYzk3LT5idWlsZF9vcHMgPSAm cGF0Y2hfd29sZnNvbl93bTk3MDRfb3BzOw0KKwlyZXR1cm4gMDsNCit9DQorDQoraW50IHBhdGNo X3dvbGZzb25fd205NzA1X3NwZWNpZmljKGFjOTdfdCAqIGFjOTcpDQorew0KKwlpbnQgZXJyLCBp Ow0KKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh3bTk3eHhfc25kX2FjOTdfY29udHJvbHMp OyBpKyspIHsNCisJCWlmICgoZXJyID0gc25kX2N0bF9hZGQoYWM5Ny0+YnVzLT5jYXJkLCBzbmRf YWM5N19jbmV3KCZ3bTk3eHhfc25kX2FjOTdfY29udHJvbHNbaV0sIGFjOTcpKSkgPCAwKQ0KKwkJ CXJldHVybiBlcnI7DQorCX0NCisJc25kX2FjOTdfd3JpdGVfY2FjaGUoYWM5NywgIDB4NzIsIDB4 MDgwOCk7DQorCXJldHVybiAwOw0KK30NCitzdGF0aWMgc3RydWN0IHNuZF9hYzk3X2J1aWxkX29w cyBwYXRjaF93b2xmc29uX3dtOTcwNV9vcHMgPSB7DQorCS5idWlsZF9zcGVjaWZpYyA9IHBhdGNo X3dvbGZzb25fd205NzA1X3NwZWNpZmljLA0KK307DQorDQogaW50IHBhdGNoX3dvbGZzb24wNShh Yzk3X3QgKiBhYzk3KQ0KIHsNCi0JLy8gV005NzA1LCBXTTk3MTANCi0JLy8gc2V0IGZyb250IG1p eGVyIHZvbHVtZQ0KLQlzbmRfYWM5N193cml0ZV9jYWNoZShhYzk3LCBBQzk3X1dNOTdYWF9GTUlY RVJfVk9MLCAweDA4MDgpOw0KKwlhYzk3LT5idWlsZF9vcHMgPSAmcGF0Y2hfd29sZnNvbl93bTk3 MDVfb3BzOw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGNvbnN0IGNoYXIqIHdtOTcxMV9h bGNfc2VsZWN0W10gPSB7Ik5vbmUiLCAiTGVmdCIsICJSaWdodCIsICJTdGVyZW8ifTsNCitzdGF0 aWMgY29uc3QgY2hhciogd205NzExX2FsY19taXhbXSA9IHsiU3RlcmVvIiwgIlJpZ2h0IiwgIkxl ZnQiLCAiTm9uZSJ9Ow0KK3N0YXRpYyBjb25zdCBjaGFyKiB3bTk3MTFfb3V0M19zcmNbXSA9IHsi TGVmdCIsICJWUkVGIiwgIkxlZnQgKyBSaWdodCIsICJNb25vIn07DQorc3RhdGljIGNvbnN0IGNo YXIqIHdtOTcxMV9vdXQzX2xyc3JjW10gPSB7IlNwayBNaXgiLCAiSFAgTWl4In07DQorc3RhdGlj IGNvbnN0IGNoYXIqIHdtOTcxMV9yZWNfYWRjW10gPSB7IlN0ZXJlbyIsICJMZWZ0IiwgIlJpZ2h0 IiwgIk11dGUifTsNCitzdGF0aWMgY29uc3QgY2hhciogd205NzExX2Jhc2VbXSA9IHsiTGluZWFy IENvbnRyb2wiLCAiQWRhcHRpdmUgQm9vc3QifTsNCitzdGF0aWMgY29uc3QgY2hhciogd205NzEx X3JlY19nYWluW10gPSB7IisxLjVkQiBTdGVwcyIsICIrMC43NWRCIFN0ZXBzIn07DQorc3RhdGlj IGNvbnN0IGNoYXIqIHdtOTcxMV9taWNbXSA9IHsiTWljMSIsICJEaWZmZXJlbnRpYWwiLCAiTWlj MiIsICJTdGVyZW8ifTsNCitzdGF0aWMgY29uc3QgY2hhciogd205NzExX3JlY19zZWxsW10gPSB7 Ik1pYyAxIiwgIk5DIiwgIk5DIiwgIlNwayBNaXgiLCAiTGluZSBMIiwgIkhQIE1peCBMIiwgIlBo b25lIE1peCIsICJQaG9uZSJ9Ow0KK3N0YXRpYyBjb25zdCBjaGFyKiB3bTk3MTFfcmVjX3NlbHJb XSA9IHsiTWljIDIiLCAiTkMiLCAiTkMiLCAiU3BrIE1peCIsICJMaW5lIFIiLCAiSFAgTWl4IFIi LCAiUGhvbmUgTWl4IiwgIlBob25lIn07DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBhYzk3X2Vu dW0gd205NzExX2VudW1bXSA9IHsNCitBQzk3X0VOVU1fU0lOR0xFKEFDOTdfUENJX1NWSUQsIDE0 LCA0LCB3bTk3MTFfYWxjX3NlbGVjdCksDQorQUM5N19FTlVNX1NJTkdMRShBQzk3X1ZJREVPLCAx MCwgNCwgd205NzExX2FsY19taXgpLA0KK0FDOTdfRU5VTV9TSU5HTEUoQUM5N19BVVgsIDksIDQs IHdtOTcxMV9vdXQzX3NyYyksDQorQUM5N19FTlVNX1NJTkdMRShBQzk3X0FVWCwgOCwgMiwgd205 NzExX291dDNfbHJzcmMpLA0KK0FDOTdfRU5VTV9TSU5HTEUoQUM5N19SRUNfU0VMLCAxMiwgNCwg d205NzExX3JlY19hZGMpLA0KK0FDOTdfRU5VTV9TSU5HTEUoQUM5N19NQVNURVJfVE9ORSwgMTUs IDIsIHdtOTcxMV9iYXNlKSwNCitBQzk3X0VOVU1fU0lOR0xFKEFDOTdfUkVDX0dBSU4sIDE0LCAy LCB3bTk3MTFfcmVjX2dhaW4pLA0KK0FDOTdfRU5VTV9TSU5HTEUoQUM5N19SRUNfR0FJTiwgNiwg Miwgd205NzExX3JlY19nYWluKSwNCitBQzk3X0VOVU1fU0lOR0xFKEFDOTdfTUlDLCA1LCA0LCB3 bTk3MTFfbWljKSwNCitBQzk3X0VOVU1fU0lOR0xFKEFDOTdfUkVDX1NFTCwgOCwgOCwgd205NzEx X3JlY19zZWxsKSwNCitBQzk3X0VOVU1fU0lOR0xFKEFDOTdfUkVDX1NFTCwgMCwgOCwgd205NzEx X3JlY19zZWxyKSwNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzbmRfa2NvbnRyb2xfbmV3X3Qgd205 NzExX3NuZF9hYzk3X2NvbnRyb2xzW10gPSB7DQorQUM5N19TSU5HTEUoIkFMQyBUYXJnZXQiLCBB Qzk3X0NPREVDX0NMQVNTX1JFViwgMTIsIDE1LCAwKSwNCitBQzk3X1NJTkdMRSgiQUxDIEhvbGQi LCBBQzk3X0NPREVDX0NMQVNTX1JFViwgOCwgMTUsIDApLA0KK0FDOTdfU0lOR0xFKCJBTEMgRGVj YXkiLCBBQzk3X0NPREVDX0NMQVNTX1JFViwgNCwgMTUsIDApLA0KK0FDOTdfU0lOR0xFKCJBTEMg QXR0YWNrIiwgQUM5N19DT0RFQ19DTEFTU19SRVYsIDAsIDE1LCAwKSwNCisNCitBQzk3X0VOVU0o IkFMQyBTZWxlY3QiLCB3bTk3MTFfZW51bVswXSksDQorQUM5N19TSU5HTEUoIkFMQyBNYXggR2Fp biIsIEFDOTdfUENJX1NWSUQsIDExLCA3LCAxKSwNCitBQzk3X1NJTkdMRSgiQUxDIFpDIFRpbWVv dXQiLCBBQzk3X1BDSV9TVklELCA5LCAzLCAxKSwNCitBQzk3X1NJTkdMRSgiQUxDIFpDIiwgQUM5 N19QQ0lfU1ZJRCwgOCwgMSwgMSksDQorQUM5N19TSU5HTEUoIkFMQyBORyIsIEFDOTdfUENJX1NW SUQsIDcsIDEsIDEpLA0KK0FDOTdfU0lOR0xFKCJBTEMgTkcgTXV0ZSIsIEFDOTdfUENJX1NWSUQs IDUsIDEsIDEpLA0KK0FDOTdfU0lOR0xFKCJBTEMgTkcgVGhyZXNob2xkIiwgQUM5N19QQ0lfU1ZJ RCwgMCwgMzEsIDEpLA0KKw0KK0FDOTdfU0lOR0xFKCJTaWRlIFRvbmUgTXV0ZSIsIEFDOTdfVklE RU8sIDE1LCAxLCAxKSwNCitBQzk3X1NJTkdMRSgiU2lkZSBUb25lIFZvbCIsIEFDOTdfVklERU8s IDEyLCA3LCAxKSwNCitBQzk3X0VOVU0oIkFMQyBIUCBNaXgiLCB3bTk3MTFfZW51bVsxXSksDQor QUM5N19TSU5HTEUoIkFMQyBIUCBWb2x1bWUiLCBBQzk3X1ZJREVPLCA3LCA3LCAxKSwNCisNCitB Qzk3X1NJTkdMRSgiT3V0MyBNdXRlIiwgQUM5N19BVVgsIDE1LCAxLCAxKSwNCitBQzk3X1NJTkdM RSgiT3V0MyBaQyIsIEFDOTdfQVVYLCA3LCAxLCAxKSwNCitBQzk3X0VOVU0oIk91dDMgU291cmNl Iiwgd205NzExX2VudW1bMl0pLA0KK0FDOTdfRU5VTSgiT3V0MyBMUiBTb3VyY2UiLCB3bTk3MTFf ZW51bVszXSksDQorQUM5N19TSU5HTEUoIk91dDMgVm9sdW1lIiwgQUM5N19BVVgsIDAsIDMxLCAx KSwNCisNCitBQzk3X1NJTkdMRSgiQmVlcCB0byBIUCBNdXRlIiwgQUM5N19QQ19CRUVQLCAxNSwg MSwgMSksDQorQUM5N19TSU5HTEUoIkJlZXAgdG8gSFAgVm9sIiwgQUM5N19QQ19CRUVQLCAxMiwg NywgMSksDQorQUM5N19TSU5HTEUoIkJlZXAgdG8gU1QgTXV0ZSIsIEFDOTdfUENfQkVFUCwgMTEs IDEsIDEpLA0KK0FDOTdfU0lOR0xFKCJCZWVwIHRvIFNUIFZvbCIsIEFDOTdfUENfQkVFUCwgOCwg NywgMSksDQorQUM5N19TSU5HTEUoIkJlZXAgdG8gUGhvbmUgTXV0ZSIsIEFDOTdfUENfQkVFUCwg NywgMSwgMSksDQorQUM5N19TSU5HTEUoIkJlZXAgdG8gUGhvbmUgVm9sIiwgQUM5N19QQ19CRUVQ LCA0LCA3LCAxKSwNCisNCitBQzk3X1NJTkdMRSgiQVVYIERBQyB0byBIUCBNdXRlIiwgQUM5N19D RCwgMTUsIDEsIDEpLA0KK0FDOTdfU0lOR0xFKCJBVVggREFDIHRvIEhQIFZvbCIsIEFDOTdfQ0Qs IDEyLCA3LCAxKSwNCitBQzk3X1NJTkdMRSgiQVVYIERBQyB0byBTVCBNdXRlIiwgQUM5N19DRCwg MTEsIDEsIDEpLA0KK0FDOTdfU0lOR0xFKCJBVVggREFDIHRvIFNUIFZvbCIsIEFDOTdfQ0QsIDgs IDcsIDEpLA0KK0FDOTdfU0lOR0xFKCJBVVggREFDIHRvIFBob25lIE11dGUiLCBBQzk3X0NELCA3 LCAxLCAxKSwNCitBQzk3X1NJTkdMRSgiQVVYIERBQyB0byBQaG9uZSBWb2wiLCBBQzk3X0NELCA0 LCA3LCAxKSwNCisNCitBQzk3X1NJTkdMRSgiUGhvbmUgdG8gSFAgTXV0ZSIsIEFDOTdfUEhPTkUs IDE1LCAxLCAxKSwNCitBQzk3X1NJTkdMRSgiUGhvbmUgdG8gU3BrIE11dGUiLCBBQzk3X1BIT05F LCAxNCwgMSwgMSksDQorDQorQUM5N19TSU5HTEUoIkxpbmUgdG8gSFAgTXV0ZSIsIEFDOTdfTElO RSwgMTUsIDEsIDEpLA0KK0FDOTdfU0lOR0xFKCJMaW5lIHRvIFNwayBNdXRlIiwgQUM5N19MSU5F LCAxNCwgMSwgMSksDQorQUM5N19TSU5HTEUoIkxpbmUgdG8gUGhvbmUgTXV0ZSIsIEFDOTdfTElO RSwgMTMsIDEsIDEpLA0KKw0KK0FDOTdfU0lOR0xFKCJEQUMgdG8gSFAgTXV0ZSIsIEFDOTdfUENN LCAxNSwgMSwgMSksDQorQUM5N19TSU5HTEUoIkRBQyB0byBTcGsgTXV0ZSIsIEFDOTdfUENNLCAx NCwgMSwgMSksDQorQUM5N19TSU5HTEUoIkRBQyB0byBQaG9uZSBNdXRlIiwgQUM5N19QQ00sIDEz LCAxLCAxKSwNCisNCitBQzk3X1NJTkdMRSgiUmVjIDIwZEIgQm9vc3QiLCBBQzk3X1JFQ19TRUws IDE0LCAxLCAxKSwNCitBQzk3X0VOVU0oIkFEQyB0byBQaG9uZSBNaXgiLCB3bTk3MTFfZW51bVs0 XSksDQorQUM5N19TSU5HTEUoIkFEQyB0byBQaG9uZSAyMGRCIEJvb3N0IiwgQUM5N19SRUNfU0VM LCAxMSwgMSwgMSksDQorQUM5N19FTlVNKCJSZWNvcmQgU2VsZWN0IEwiLCB3bTk3MTFfZW51bVs5 XSksDQorQUM5N19FTlVNKCJSZWNvcmQgU2VsZWN0IFIiLCB3bTk3MTFfZW51bVsxMF0pLA0KKw0K K0FDOTdfU0lOR0xFKCIzRCB1cHBlciBjdXQtb2ZmIiwgQUM5N18zRF9DT05UUk9MLCA1LCAxLCAx KSwNCitBQzk3X1NJTkdMRSgiM0QgbG93ZXIgY3V0LW9mZiIsIEFDOTdfM0RfQ09OVFJPTCwgNCwg MSwgMSksDQorDQorQUM5N19FTlVNKCJCYXNlIENvbnRyb2wiLCB3bTk3MTFfZW51bVs1XSksDQor QUM5N19TSU5HTEUoIkJhc2UgY3V0LW9mZiIsIEFDOTdfTUFTVEVSX1RPTkUsIDEyLCAxLCAxKSwN CitBQzk3X1NJTkdMRSgiVG9uZSBjdXQtb2ZmIiwgQUM5N19NQVNURVJfVE9ORSwgNCwgMSwgMSks DQorQUM5N19TSU5HTEUoIkRBQyBBdHRlbnVhdGUgKC02ZEIpIiwgQUM5N19NQVNURVJfVE9ORSwg NiwgMSwgMCksDQorDQorQUM5N19TSU5HTEUoIlJlYyBNdXRlIiwgQUM5N19SRUNfR0FJTiwgMTUs IDEsIDEpLA0KK0FDOTdfRU5VTSgiUmVjIEdhaW4gTCBTdGVwcyIsIHdtOTcxMV9lbnVtWzZdKSwN CitBQzk3X0VOVU0oIlJlYyBHYWluIFIgU3RlcHMiLCB3bTk3MTFfZW51bVs3XSksDQorQUM5N19T SU5HTEUoIlJlYyBHYWluIEwiLCBBQzk3X1JFQ19HQUlOLCA4LCAxNSwgMSksDQorQUM5N19TSU5H TEUoIlJlYyBHYWluIFIiLCBBQzk3X1JFQ19HQUlOLCAwLCAxNSwgMSksDQorQUM5N19TSU5HTEUo IlJlYyBaQyIsIEFDOTdfUkVDX0dBSU4sIDcsIDEsIDEpLA0KKw0KK0FDOTdfU0lOR0xFKCJNaWMx IHRvIFBob25lIE11dGUiLCBBQzk3X01JQywgMTQsIDEsIDEpLA0KK0FDOTdfU0lOR0xFKCJNaWMy IHRvIFBob25lIE11dGUiLCBBQzk3X01JQywgMTMsIDEsIDEpLA0KK0FDOTdfRU5VTSgiTWljIFNl bGVjdCAoRXh0KSIsIHdtOTcxMV9lbnVtWzhdKSwNCitBQzk3X1NJTkdMRSgiTWljMSBWb2wiLCBB Qzk3X01JQywgOCwgMzIsIDEpLA0KK0FDOTdfU0lOR0xFKCJNaWMgMjBkQiBCb29zdCIsIEFDOTdf TUlDLCA3LCAxLCAxKSwNCisNCitBQzk3X1NJTkdMRSgiTWFzdGVyIFZvbCBaQyIsIEFDOTdfTUFT VEVSLCA3LCAxLCAxKSwNCitBQzk3X1NJTkdMRSgiSFAgVm9sIFpDIiwgQUM5N19IRUFEUEhPTkUs IDcsIDEsIDEpLA0KK0FDOTdfU0lOR0xFKCJNb25vIFZvbCBaQyIsIEFDOTdfTUFTVEVSX01PTk8s IDcsIDEsIDEpLA0KK307DQorDQoraW50IHBhdGNoX3dvbGZzb25fd205NzExX3NwZWNpZmljKGFj OTdfdCAqIGFjOTcpDQorew0KKwlpbnQgZXJyLCBpOw0KKwkNCisJZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUod205NzExX3NuZF9hYzk3X2NvbnRyb2xzKTsgaSsrKSB7DQorCQlpZiAoKGVyciA9 IHNuZF9jdGxfYWRkKGFjOTctPmJ1cy0+Y2FyZCwgc25kX2FjOTdfY25ldygmd205NzExX3NuZF9h Yzk3X2NvbnRyb2xzW2ldLCBhYzk3KSkpIDwgMCkNCisJCQlyZXR1cm4gZXJyOw0KKwl9DQorCXNu ZF9hYzk3X3dyaXRlX2NhY2hlKGFjOTcsICBBQzk3X0NPREVDX0NMQVNTX1JFViwgMHgwODA4KTsN CisJc25kX2FjOTdfd3JpdGVfY2FjaGUoYWM5NywgIEFDOTdfUENJX1NWSUQsIDB4MDgwOCk7DQor CXNuZF9hYzk3X3dyaXRlX2NhY2hlKGFjOTcsICBBQzk3X1ZJREVPLCAweDA4MDgpOw0KKwlzbmRf YWM5N193cml0ZV9jYWNoZShhYzk3LCAgQUM5N19BVVgsIDB4MDgwOCk7DQorCXNuZF9hYzk3X3dy aXRlX2NhY2hlKGFjOTcsICBBQzk3X1BDX0JFRVAsIDB4MDgwOCk7DQorCXNuZF9hYzk3X3dyaXRl X2NhY2hlKGFjOTcsICBBQzk3X0NELCAweDAwMDApOw0KIAlyZXR1cm4gMDsNCiB9DQogDQorc3Rh dGljIHN0cnVjdCBzbmRfYWM5N19idWlsZF9vcHMgcGF0Y2hfd29sZnNvbl93bTk3MTFfb3BzID0g ew0KKwkuYnVpbGRfc3BlY2lmaWMgPSBwYXRjaF93b2xmc29uX3dtOTcxMV9zcGVjaWZpYywNCit9 Ow0KKw0KIGludCBwYXRjaF93b2xmc29uMTEoYWM5N190ICogYWM5NykNCiB7DQotCS8vIFdNOTcx MSwgV005NzEyDQotCS8vIHNldCBvdXQzIHZvbHVtZQ0KLQlzbmRfYWM5N193cml0ZV9jYWNoZShh Yzk3LCBBQzk3X1dNOTcxMV9PVVQzVk9MLCAweDA4MDgpOw0KKwlhYzk3LT5idWlsZF9vcHMgPSAm cGF0Y2hfd29sZnNvbl93bTk3MTFfb3BzOw0KKw0KKwlhYzk3LT5mbGFncyB8PSBBQzk3X0hBU19O T19SRUNfR0FJTiB8IEFDOTdfU1RFUkVPX01VVEVTIHwgQUM5N19IQVNfTk9fTUlDIHwNCisJCUFD OTdfSEFTX05PX1BDX0JFRVAgfCBBQzk3X0hBU19OT19WSURFTyB8IEFDOTdfSEFTX05PX0NEOw0K KwkNCiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAgLTQxOSw2ICs1ODksMTcgQEAgc3RhdGljIGNvbnN0 IGNoYXIqIHdtOTcxM19taWNfbWl4ZXJbXSA9IA0KIHN0YXRpYyBjb25zdCBjaGFyKiB3bTk3MTNf cmVjX211eFtdID0geyJTdGVyZW8iLCAiTGVmdCIsICJSaWdodCIsICJNdXRlIn07DQogc3RhdGlj IGNvbnN0IGNoYXIqIHdtOTcxM19yZWNfc3JjX2xbXSA9IHsiTWljMSIsICJNaWMyIiwgIkxpbmUg TCIsICJNb25vIEluIiwgIkhQIE1peCBMIiwgIlNwayBNaXgiLCAiTW9ubyBNaXgiLCAiWmgifTsN CiBzdGF0aWMgY29uc3QgY2hhciogd205NzEzX3JlY19zcmNfcltdID0geyJNaWMxIiwgIk1pYzIi LCAiTGluZSBSIiwgIk1vbm8gSW4iLCAiSFAgTWl4IFIiLCAiU3BrIE1peCIsICJNb25vIE1peCIs ICJaaCJ9Ow0KK3N0YXRpYyBjb25zdCBjaGFyKiB3bTk3MTNfcmVjX2dhaW5bXSA9IHsiKzEuNWRC IFN0ZXBzIiwgIiswLjc1ZEIgU3RlcHMifTsNCitzdGF0aWMgY29uc3QgY2hhciogd205NzEzX2Fs Y19zZWxlY3RbXSA9IHsiTm9uZSIsICJMZWZ0IiwgIlJpZ2h0IiwgIlN0ZXJlbyJ9Ow0KK3N0YXRp YyBjb25zdCBjaGFyKiB3bTk3MTNfbW9ub19wZ2FbXSA9IHsiVm1pZCIsICJaaCIsICJNb25vIE1p eCIsICJJbnYgMSJ9Ow0KK3N0YXRpYyBjb25zdCBjaGFyKiB3bTk3MTNfc3BrbF9wZ2FbXSA9IHsi Vm1pZCIsICJaaCIsICJIUCBNaXggTCIsICJTcGsgTWl4IiwgIkludiAxIiwgIk5DIiwgIk5DIiwg Ik5DIn07DQorc3RhdGljIGNvbnN0IGNoYXIqIHdtOTcxM19zcGtyX3BnYVtdID0geyJWbWlkIiwg IlpoIiwgIkhQIE1peCBSIiwgIlNwayBNaXgiLCAiSW52IDIiLCAiTkMiLCAiTkMiLCAiTkMifTsN CitzdGF0aWMgY29uc3QgY2hhciogd205NzEzX2hwbF9wZ2FbXSA9IHsiVm1pZCIsICJaaCIsICJI UCBNaXggTCIsICJOQyJ9Ow0KK3N0YXRpYyBjb25zdCBjaGFyKiB3bTk3MTNfaHByX3BnYVtdID0g eyJWbWlkIiwgIlpoIiwgIkhQIE1peCBSIiwgIk5DIn07DQorc3RhdGljIGNvbnN0IGNoYXIqIHdt OTcxM19vdXQzX3BnYVtdID0geyJWbWlkIiwgIlpoIiwgIkludiAxIiwgIk5DIn07DQorc3RhdGlj IGNvbnN0IGNoYXIqIHdtOTcxM19vdXQ0X3BnYVtdID0geyJWbWlkIiwgIlpoIiwgIkludiAyIiwg Ik5DIn07DQorc3RhdGljIGNvbnN0IGNoYXIqIHdtOTcxM19kYWNfaW52W10gPSB7Ik9mZiIsICJN b25vIE1peCIsICJTcGsgTWl4IiwgIkhQIE1peCBMIiwgIkhQIE1peCBSIiwgIkhQIE1peCBNb25v IiwgIk5DIiwgIlZtaWQifTsNCitzdGF0aWMgY29uc3QgY2hhciogd205NzEzX2Jhc2VbXSA9IHsi TGluZWFyIENvbnRyb2wiLCAiQWRhcHRpdmUgQm9vc3QifTsNCiANCiBzdGF0aWMgY29uc3Qgc3Ry dWN0IGFjOTdfZW51bSB3bTk3MTNfZW51bVtdID0gew0KIEFDOTdfRU5VTV9TSU5HTEUoQUM5N19M SU5FLCAzLCA0LCB3bTk3MTNfbWljX21peGVyKSwNCkBAIC00MjYsODUgKzYwNywxNTYgQEAgQUM5 N19FTlVNX1NJTkdMRShBQzk3X1ZJREVPLCAxNCwgNCwgd205Nw0KIEFDOTdfRU5VTV9TSU5HTEUo QUM5N19WSURFTywgOSwgNCwgd205NzEzX3JlY19tdXgpLA0KIEFDOTdfRU5VTV9TSU5HTEUoQUM5 N19WSURFTywgMywgOCwgd205NzEzX3JlY19zcmNfbCksDQogQUM5N19FTlVNX1NJTkdMRShBQzk3 X1ZJREVPLCAwLCA4LCB3bTk3MTNfcmVjX3NyY19yKSwNCi19Ow0KLQ0KLXN0YXRpYyBjb25zdCBz bmRfa2NvbnRyb2xfbmV3X3Qgd20xM19zbmRfYWM5N19jb250cm9sc19saW5lX2luW10gPSB7DQot QUM5N19ET1VCTEUoIkxpbmUgSW4gVm9sdW1lIiwgQUM5N19QQ19CRUVQLCA4LCAwLCAzMSwgMSks DQotQUM5N19TSU5HTEUoIkxpbmUgSW4gdG8gSGVhZHBob25lIE11dGUiLCBBQzk3X1BDX0JFRVAs IDE1LCAxLCAxKSwNCi1BQzk3X1NJTkdMRSgiTGluZSBJbiB0byBTcGVha2VyIE11dGUiLCBBQzk3 X1BDX0JFRVAsIDE0LCAxLCAxKSwNCitBQzk3X0VOVU1fU0lOR0xFKEFDOTdfQ0QsIDE0LCAyLCB3 bTk3MTNfcmVjX2dhaW4pLA0KK0FDOTdfRU5VTV9TSU5HTEUoQUM5N19QQ0lfU1ZJRCwgMTQsIDQs IHdtOTcxM19hbGNfc2VsZWN0KSwNCitBQzk3X0VOVU1fU0lOR0xFKEFDOTdfUkVDX0dBSU4sIDE0 LCA0LCB3bTk3MTNfbW9ub19wZ2EpLA0KK0FDOTdfRU5VTV9TSU5HTEUoQUM5N19SRUNfR0FJTiwg MTEsIDgsIHdtOTcxM19zcGtsX3BnYSksDQorQUM5N19FTlVNX1NJTkdMRShBQzk3X1JFQ19HQUlO LCA4LCA4LCB3bTk3MTNfc3Brcl9wZ2EpLA0KK0FDOTdfRU5VTV9TSU5HTEUoQUM5N19SRUNfR0FJ TiwgNiwgNCwgd205NzEzX2hwbF9wZ2EpLA0KK0FDOTdfRU5VTV9TSU5HTEUoQUM5N19SRUNfR0FJ TiwgNCwgNCwgd205NzEzX2hwcl9wZ2EpLA0KK0FDOTdfRU5VTV9TSU5HTEUoQUM5N19SRUNfR0FJ TiwgMiwgNCwgd205NzEzX291dDNfcGdhKSwNCitBQzk3X0VOVU1fU0lOR0xFKEFDOTdfUkVDX0dB SU4sIDAsIDQsIHdtOTcxM19vdXQ0X3BnYSksDQorQUM5N19FTlVNX0RPVUJMRShBQzk3X1JFQ19H QUlOX01JQywgMTMsIDEwLCA4LCB3bTk3MTNfZGFjX2ludiksDQorQUM5N19FTlVNX1NJTkdMRShB Qzk3X0dFTkVSQUxfUFVSUE9TRSwgMTUsIDIsIHdtOTcxM19iYXNlKSwNCitBQzk3X0VOVU1fU0lO R0xFKEFDOTdfQ0QsIDYsIDIsIHdtOTcxM19yZWNfZ2FpbiksDQorfTsNCisNCitzdGF0aWMgY29u c3Qgc25kX2tjb250cm9sX25ld190IHdtMTNfc25kX2FjOTdfY29udHJvbHNbXSA9IHsNCitBQzk3 X1NJTkdMRSgiTGluZSBJbiBWb2wgTCIsIEFDOTdfUENfQkVFUCwgOCwgMzEsIDApLA0KK0FDOTdf U0lOR0xFKCJMaW5lIEluIFZvbCBSIiwgQUM5N19QQ19CRUVQLCAwLCAzMSwgMCksDQorQUM5N19T SU5HTEUoIkxpbmUgSW4gdG8gSFAgTXV0ZSIsIEFDOTdfUENfQkVFUCwgMTUsIDEsIDEpLA0KK0FD OTdfU0lOR0xFKCJMaW5lIEluIHRvIFNwayBNdXRlIiwgQUM5N19QQ19CRUVQLCAxNCwgMSwgMSks DQogQUM5N19TSU5HTEUoIkxpbmUgSW4gdG8gTW9ubyBNdXRlIiwgQUM5N19QQ19CRUVQLCAxMywg MSwgMSksDQotfTsNCiANCi1zdGF0aWMgY29uc3Qgc25kX2tjb250cm9sX25ld190IHdtMTNfc25k X2FjOTdfY29udHJvbHNfZGFjW10gPSB7DQotQUM5N19ET1VCTEUoIkRBQyBWb2x1bWUiLCBBQzk3 X1BIT05FLCA4LCAwLCAzMSwgMSksDQorQUM5N19TSU5HTEUoIkRBQyBWb2wgTCIsIEFDOTdfUEhP TkUsIDgsIDMxLCAxKSwNCitBQzk3X1NJTkdMRSgiREFDIFZvbCBSIiwgQUM5N19QSE9ORSwgMCwg MzEsIDEpLA0KIEFDOTdfU0lOR0xFKCJEQUMgdG8gSGVhZHBob25lIE11dGUiLCBBQzk3X1BIT05F LCAxNSwgMSwgMSksDQogQUM5N19TSU5HTEUoIkRBQyB0byBTcGVha2VyIE11dGUiLCBBQzk3X1BI T05FLCAxNCwgMSwgMSksDQogQUM5N19TSU5HTEUoIkRBQyB0byBNb25vIE11dGUiLCBBQzk3X1BI T05FLCAxMywgMSwgMSksDQotfTsNCiANCi1zdGF0aWMgY29uc3Qgc25kX2tjb250cm9sX25ld190 IHdtMTNfc25kX2FjOTdfY29udHJvbHNfbWljW10gPSB7DQogQUM5N19TSU5HTEUoIk1JQ0EgVm9s dW1lIiwgQUM5N19NSUMsIDgsIDMxLCAxKSwNCiBBQzk3X1NJTkdMRSgiTUlDQiBWb2x1bWUiLCBB Qzk3X01JQywgMCwgMzEsIDEpLA0KIEFDOTdfU0lOR0xFKCJNSUNBIHRvIE1vbm8gTXV0ZSIsIEFD OTdfTElORSwgNywgMSwgMSksDQogQUM5N19TSU5HTEUoIk1JQ0IgdG8gTW9ubyBNdXRlIiwgQUM5 N19MSU5FLCA2LCAxLCAxKSwNCiBBQzk3X1NJTkdMRSgiTUlDIEJvb3N0ICgrMjBkQikiLCBBQzk3 X0xJTkUsIDUsIDEsIDEpLA0KLUFDOTdfRU5VTSgiTUlDIEhlYWRwaG9uZSBSb3V0aW5nIiwgd205 NzEzX2VudW1bMF0pLA0KLUFDOTdfU0lOR0xFKCJNSUMgSGVhZHBob25lIE1peGVyIFZvbHVtZSIs IEFDOTdfTElORSwgMCwgNywgMSkNCi19Ow0KK0FDOTdfRU5VTSgiTUlDIEhQIFJvdXRpbmciLCB3 bTk3MTNfZW51bVswXSksDQorQUM5N19TSU5HTEUoIk1JQyBIUCBNaXggVm9sIiwgQUM5N19MSU5F LCAwLCA3LCAxKSwNCiANCi1zdGF0aWMgY29uc3Qgc25kX2tjb250cm9sX25ld190IHdtMTNfc25k X2FjOTdfY29udHJvbHNfYWRjW10gPSB7DQogQUM5N19TSU5HTEUoIkFEQyBNdXRlIiwgQUM5N19D RCwgMTUsIDEsIDEpLA0KLUFDOTdfRE9VQkxFKCJHYWluIFN0ZXAgU2l6ZSAoMS41ZEIvMC43NWRC KSIsIEFDOTdfQ0QsIDE0LCA2LCAxLCAxKSwNCi1BQzk3X0RPVUJMRSgiQURDIFZvbHVtZSIsQUM5 N19DRCwgOCwgMCwgMTUsIDApLA0KK0FDOTdfRU5VTSgiR2FpbiBTdGVwIEwiLCB3bTk3MTNfZW51 bVs1XSksDQorQUM5N19FTlVNKCJHYWluIFN0ZXAgUiIsIHdtOTcxM19lbnVtWzE2XSksDQorQUM5 N19TSU5HTEUoIkFEQyBWb2wgTCIsIEFDOTdfQ0QsIDgsIDE1LCAwKSwNCitBQzk3X1NJTkdMRSgi QURDIFZvbCBSIiwgQUM5N19DRCwgMCwgMTUsIDApLA0KIEFDOTdfU0lOR0xFKCJBREMgWmVybyBD cm9zcyIsIEFDOTdfQ0QsIDcsIDEsIDEpLA0KLX07DQogDQotc3RhdGljIGNvbnN0IHNuZF9rY29u dHJvbF9uZXdfdCB3bTEzX3NuZF9hYzk3X2NvbnRyb2xzX3JlY3NlbFtdID0gew0KLUFDOTdfRU5V TSgiUmVjb3JkIHRvIEhlYWRwaG9uZSBQYXRoIiwgd205NzEzX2VudW1bMV0pLA0KLUFDOTdfU0lO R0xFKCJSZWNvcmQgdG8gSGVhZHBob25lIFZvbHVtZSIsIEFDOTdfVklERU8sIDExLCA3LCAwKSwN CitBQzk3X0VOVU0oIlJlY29yZCB0byBIUCBNaXgiLCB3bTk3MTNfZW51bVsxXSksDQorQUM5N19T SU5HTEUoIlJlY29yZCB0byBIUCBWb2wiLCBBQzk3X1ZJREVPLCAxMSwgNywgMSksDQogQUM5N19F TlVNKCJSZWNvcmQgdG8gTW9ubyBQYXRoIiwgd205NzEzX2VudW1bMl0pLA0KIEFDOTdfU0lOR0xF KCJSZWNvcmQgdG8gTW9ubyBCb29zdCAoKzIwZEIpIiwgQUM5N19WSURFTywgOCwgMSwgMCksDQog QUM5N19TSU5HTEUoIlJlY29yZCBBREMgQm9vc3QgKCsyMGRCKSIsIEFDOTdfVklERU8sIDYsIDEs IDApLA0KIEFDOTdfRU5VTSgiUmVjb3JkIFNlbGVjdCBMZWZ0Iiwgd205NzEzX2VudW1bM10pLA0K IEFDOTdfRU5VTSgiUmVjb3JkIFNlbGVjdCBSaWdodCIsIHdtOTcxM19lbnVtWzRdKSwNCisNCitB Qzk3X1NJTkdMRSgiQUxDIFRhcmdldCIsIEFDOTdfQ09ERUNfQ0xBU1NfUkVWLCAxMiwgMTUsIDAp LA0KK0FDOTdfU0lOR0xFKCJBTEMgSG9sZCIsIEFDOTdfQ09ERUNfQ0xBU1NfUkVWLCA4LCAxNSwg MCksDQorQUM5N19TSU5HTEUoIkFMQyBEZWNheSIsIEFDOTdfQ09ERUNfQ0xBU1NfUkVWLCA0LCAx NSwgMCksDQorQUM5N19TSU5HTEUoIkFMQyBBdHRhY2siLCBBQzk3X0NPREVDX0NMQVNTX1JFViwg MCwgMTUsIDApLA0KKw0KK0FDOTdfRU5VTSgiQUxDIFNlbGVjdCIsIHdtOTcxM19lbnVtWzZdKSwN CitBQzk3X1NJTkdMRSgiQUxDIE1heCBHYWluIiwgQUM5N19QQ0lfU1ZJRCwgMTEsIDcsIDApLA0K K0FDOTdfU0lOR0xFKCJBTEMgWkMgVGltZW91dCIsIEFDOTdfUENJX1NWSUQsIDksIDMsIDApLA0K K0FDOTdfU0lOR0xFKCJBTEMgWkMiLCBBQzk3X1BDSV9TVklELCA4LCAxLCAwKSwNCitBQzk3X1NJ TkdMRSgiQUxDIE5HIiwgQUM5N19QQ0lfU1ZJRCwgNywgMSwgMCksDQorQUM5N19TSU5HTEUoIkFM QyBORyBNdXRlIiwgQUM5N19QQ0lfU1ZJRCwgNSwgMSwgMSksDQorQUM5N19TSU5HTEUoIkFMQyBO RyBUaHJlc2hvbGQiLCBBQzk3X1BDSV9TVklELCAwLCAzMSwgMCksDQorDQorQUM5N19TSU5HTEUo Ik1hc3RlciBWb2wgWkMgTGVmdCIsIEFDOTdfTUFTVEVSLCAxNCwgMSwgMCksDQorQUM5N19TSU5H TEUoIk1hc3RlciBWb2wgWkMgUmlnaHQiLCBBQzk3X01BU1RFUiwgNiwgMSwgMCksDQorQUM5N19T SU5HTEUoIkhQIFZvbCBaQyBMZWZ0IiwgQUM5N19IRUFEUEhPTkUsIDE0LCAxLCAwKSwNCitBQzk3 X1NJTkdMRSgiSFAgVm9sIFpDIFJpZ2h0IiwgQUM5N19IRUFEUEhPTkUsIDYsIDEsIDApLA0KK0FD OTdfU0lOR0xFKCJPdXQzLzQgVm9sIFpDIExlZnQiLCBBQzk3X01BU1RFUl9NT05PLCAxNCwgMSwg MCksDQorQUM5N19TSU5HTEUoIk91dDMvNCBWb2wgWkMgUmlnaHQiLCBBQzk3X01BU1RFUl9NT05P LCA2LCAxLCAwKSwNCitBQzk3X1NJTkdMRSgiTWFzdGVyIFZvbCBNdXRlIExlZnQiLCBBQzk3X01B U1RFUiwgNywgMSwgMSksDQorQUM5N19TSU5HTEUoIkhQIFZvbCBNdXRlIExlZnQiLCBBQzk3X0hF QURQSE9ORSwgNywgMSwgMSksDQorQUM5N19TSU5HTEUoIk91dDMvNCBWb2wgTXV0ZSBMZWZ0Iiwg QUM5N19NQVNURVJfTU9OTywgNywgMSwgMSksDQorDQorQUM5N19TSU5HTEUoIk1vbm8gSW4gdG8g SFAgTXV0ZSIsIEFDOTdfTUFTVEVSX1RPTkUsIDE1LCAxLCAxKSwNCitBQzk3X1NJTkdMRSgiTW9u byBJbiB0byBTcGsgTXV0ZSIsIEFDOTdfTUFTVEVSX1RPTkUsIDE0LCAxLCAxKSwNCitBQzk3X1NJ TkdMRSgiTW9ubyBJbiBWb2wiLCBBQzk3X01BU1RFUl9UT05FLCA4LCAzMSwgMSksDQorQUM5N19T SU5HTEUoIk1vbm8gTXV0ZSIsIEFDOTdfTUFTVEVSX1RPTkUsIDcsIDEsIDEpLA0KK0FDOTdfU0lO R0xFKCJNb25vIFpDIiwgQUM5N19NQVNURVJfVE9ORSwgNiwgMSwgMSksDQorQUM5N19TSU5HTEUo Ik1vbm8gVm9sIiwgQUM5N19NQVNURVJfVE9ORSwgMCwgMzEsIDEpLA0KKw0KK0FDOTdfU0lOR0xF KCJQQ0JFRVAgdG8gSFAgTXV0ZSIsIEFDOTdfQVVYLCAxNSwgMSwgMSksDQorQUM5N19TSU5HTEUo IlBDQkVFUCB0byBIUCBWb2wiLCBBQzk3X0FVWCwgMTIsIDcsIDEpLA0KK0FDOTdfU0lOR0xFKCJQ Q0JFRVAgdG8gU3BrIE11dGUiLCBBQzk3X0FVWCwgMTEsIDEsIDEpLA0KK0FDOTdfU0lOR0xFKCJQ Q0JFRVAgdG8gU3BrIFZvbCIsIEFDOTdfQVVYLCA4LCA3LCAxKSwNCitBQzk3X1NJTkdMRSgiUENC RUVQIHRvIE1vbm8gTXV0ZSIsIEFDOTdfQVVYLCA3LCAxLCAxKSwNCitBQzk3X1NJTkdMRSgiUENC RUVQIHRvIE1vbm8gVm9sIiwgQUM5N19BVVgsIDQsIDcsIDEpLA0KKw0KK0FDOTdfU0lOR0xFKCJW b2ljZSB0byBIUCBNdXRlIiwgQUM5N19QQ00sIDE1LCAxLCAxKSwNCitBQzk3X1NJTkdMRSgiVm9p Y2UgdG8gSFAgVm9sIiwgQUM5N19QQ00sIDEyLCA3LCAxKSwNCitBQzk3X1NJTkdMRSgiVm9pY2Ug dG8gU3BrIE11dGUiLCBBQzk3X1BDTSwgMTEsIDEsIDEpLA0KK0FDOTdfU0lOR0xFKCJWb2ljZSB0 byBTcGsgVm9sIiwgQUM5N19QQ00sIDgsIDcsIDEpLA0KK0FDOTdfU0lOR0xFKCJWb2ljZSB0byBN b25vIE11dGUiLCBBQzk3X1BDTSwgNywgMSwgMSksDQorQUM5N19TSU5HTEUoIlZvaWNlIHRvIE1v bm8gVm9sIiwgQUM5N19QQ00sIDQsIDcsIDEpLA0KKw0KK0FDOTdfU0lOR0xFKCJBdXggdG8gSFAg TXV0ZSIsIEFDOTdfUkVDX1NFTCwgMTUsIDEsIDEpLA0KK0FDOTdfU0lOR0xFKCJBdXggdG8gSFAg Vm9sIiwgQUM5N19SRUNfU0VMLCAxMiwgNywgMSksDQorQUM5N19TSU5HTEUoIkF1eCB0byBTcGsg TXV0ZSIsIEFDOTdfUkVDX1NFTCwgMTEsIDEsIDEpLA0KK0FDOTdfU0lOR0xFKCJBdXggdG8gU3Br IFZvbCIsIEFDOTdfUkVDX1NFTCwgOCwgNywgMSksDQorQUM5N19TSU5HTEUoIkF1eCB0byBNb25v IE11dGUiLCBBQzk3X1JFQ19TRUwsIDcsIDEsIDEpLA0KK0FDOTdfU0lOR0xFKCJBdXggdG8gTW9u byBWb2wiLCBBQzk3X1JFQ19TRUwsIDQsIDcsIDEpLA0KKw0KK0FDOTdfRU5VTSgiTW9ubyBJbnB1 dCIsIHdtOTcxM19lbnVtWzddKSwNCitBQzk3X0VOVU0oIlNwayBMIElucHV0Iiwgd205NzEzX2Vu dW1bOF0pLA0KK0FDOTdfRU5VTSgiU3BrIFIgSW5wdXQiLCB3bTk3MTNfZW51bVs5XSksDQorQUM5 N19FTlVNKCJIUCBMIElucHV0Iiwgd205NzEzX2VudW1bMTBdKSwNCitBQzk3X0VOVU0oIkhQIFIg SW5wdXQiLCB3bTk3MTNfZW51bVsxMV0pLA0KK0FDOTdfRU5VTSgiT3V0IDMgSW5wdXQiLCB3bTk3 MTNfZW51bVsxMl0pLA0KK0FDOTdfRU5VTSgiT3V0IDQgSW5wdXQiLCB3bTk3MTNfZW51bVsxM10p LA0KKw0KK0FDOTdfRU5VTSgiQmFzZSBDb250cm9sIiwgd205NzEzX2VudW1bMTVdKSwNCitBQzk3 X1NJTkdMRSgiQmFzZSBjdXQtb2ZmIiwgQUM5N19HRU5FUkFMX1BVUlBPU0UsIDEyLCAxLCAxKSwN CitBQzk3X1NJTkdMRSgiVG9uZSBjdXQtb2ZmIiwgQUM5N19HRU5FUkFMX1BVUlBPU0UsIDQsIDEs IDEpLA0KK0FDOTdfU0lOR0xFKCJEQUMgQXR0ZW51YXRlICgtNmRCKSIsIEFDOTdfR0VORVJBTF9Q VVJQT1NFLCA2LCAxLCAwKSwNCitBQzk3X1NJTkdMRSgiQmFzcyBJbnRlbnNpdHkiLCBBQzk3X0dF TkVSQUxfUFVSUE9TRSwgOCwgMTUsIDEpLA0KK0FDOTdfU0lOR0xFKCJUb25lIEludGVuc2l0eSIs IEFDOTdfR0VORVJBTF9QVVJQT1NFLCAwLCAxNSwgMSksDQorfTsNCisNCitzdGF0aWMgY29uc3Qg c25kX2tjb250cm9sX25ld190IHdtMTNfc25kX2FjOTdfY29udHJvbHNfM2RbXSA9IHsNCitBQzk3 X0VOVU0oIkludiBJbnB1dCIsIHdtOTcxM19lbnVtWzE0XSksDQorQUM5N19TSU5HTEUoIjNEIHVw cGVyIGN1dC1vZmYiLCBBQzk3X1JFQ19HQUlOX01JQywgNSwgMSwgMCksDQorQUM5N19TSU5HTEUo IjNEIGxvd2VyIGN1dC1vZmYiLCBBQzk3X1JFQ19HQUlOX01JQywgNCwgMSwgMCksDQorQUM5N19T SU5HTEUoIjNEIERlcHRoIiwgQUM5N19SRUNfR0FJTl9NSUMsIDAsIDE1LCAxKSwNCiB9Ow0KIA0K LXN0YXRpYyBpbnQgcGF0Y2hfd29sZnNvbl93bTk3MTNfc3BlY2lmaWMoYWM5N190ICogYWM5NykN CitzdGF0aWMgaW50IHBhdGNoX3dvbGZzb25fd205NzEzXzNkIChhYzk3X3QgKiBhYzk3KQ0KIHsN CiAJaW50IGVyciwgaTsNCi0JDQotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHdtMTNfc25k X2FjOTdfY29udHJvbHNfbGluZV9pbik7IGkrKykgew0KLQkJaWYgKChlcnIgPSBzbmRfY3RsX2Fk ZChhYzk3LT5idXMtPmNhcmQsIHNuZF9hYzk3X2NuZXcoJndtMTNfc25kX2FjOTdfY29udHJvbHNf bGluZV9pbltpXSwgYWM5NykpKSA8IDApDQorICAgIA0KKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRSh3bTEzX3NuZF9hYzk3X2NvbnRyb2xzXzNkKTsgaSsrKSB7DQorCQlpZiAoKGVyciA9IHNu ZF9jdGxfYWRkKGFjOTctPmJ1cy0+Y2FyZCwgc25kX2FjOTdfY25ldygmd20xM19zbmRfYWM5N19j b250cm9sc18zZFtpXSwgYWM5NykpKSA8IDApDQogCQkJcmV0dXJuIGVycjsNCiAJfQ0KLQlzbmRf YWM5N193cml0ZV9jYWNoZShhYzk3LCBBQzk3X1BDX0JFRVAsIDB4MDgwOCk7DQorCXJldHVybiAw Ow0KK30NCisNCitzdGF0aWMgaW50IHBhdGNoX3dvbGZzb25fd205NzEzX3NwZWNpZmljKGFjOTdf dCAqIGFjOTcpDQorew0KKwlpbnQgZXJyLCBpOw0KIAkNCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUod20xM19zbmRfYWM5N19jb250cm9sc19kYWMpOyBpKyspIHsNCi0JCWlmICgoZXJyID0g c25kX2N0bF9hZGQoYWM5Ny0+YnVzLT5jYXJkLCBzbmRfYWM5N19jbmV3KCZ3bTEzX3NuZF9hYzk3 X2NvbnRyb2xzX2RhY1tpXSwgYWM5NykpKSA8IDApDQorCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKHdtMTNfc25kX2FjOTdfY29udHJvbHMpOyBpKyspIHsNCisJCWlmICgoZXJyID0gc25kX2N0 bF9hZGQoYWM5Ny0+YnVzLT5jYXJkLCBzbmRfYWM5N19jbmV3KCZ3bTEzX3NuZF9hYzk3X2NvbnRy b2xzW2ldLCBhYzk3KSkpIDwgMCkNCiAJCQlyZXR1cm4gZXJyOw0KIAl9DQorCXNuZF9hYzk3X3dy aXRlX2NhY2hlKGFjOTcsIEFDOTdfUENfQkVFUCwgMHgwODA4KTsNCiAJc25kX2FjOTdfd3JpdGVf Y2FjaGUoYWM5NywgQUM5N19QSE9ORSwgMHgwODA4KTsNCi0JDQotCWZvciAoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKHdtMTNfc25kX2FjOTdfY29udHJvbHNfbWljKTsgaSsrKSB7DQotCQlpZiAoKGVy ciA9IHNuZF9jdGxfYWRkKGFjOTctPmJ1cy0+Y2FyZCwgc25kX2FjOTdfY25ldygmd20xM19zbmRf YWM5N19jb250cm9sc19taWNbaV0sIGFjOTcpKSkgPCAwKQ0KLQkJCXJldHVybiBlcnI7DQotCX0N CiAJc25kX2FjOTdfd3JpdGVfY2FjaGUoYWM5NywgQUM5N19NSUMsIDB4MDgwOCk7DQogCXNuZF9h Yzk3X3dyaXRlX2NhY2hlKGFjOTcsIEFDOTdfTElORSwgMHgwMGRhKTsNCi0JDQotCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKHdtMTNfc25kX2FjOTdfY29udHJvbHNfYWRjKTsgaSsrKSB7DQot CQlpZiAoKGVyciA9IHNuZF9jdGxfYWRkKGFjOTctPmJ1cy0+Y2FyZCwgc25kX2FjOTdfY25ldygm d20xM19zbmRfYWM5N19jb250cm9sc19hZGNbaV0sIGFjOTcpKSkgPCAwKQ0KLQkJCXJldHVybiBl cnI7DQotCX0NCiAJc25kX2FjOTdfd3JpdGVfY2FjaGUoYWM5NywgQUM5N19DRCwgMHgwODA4KTsN Ci0JDQotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHdtMTNfc25kX2FjOTdfY29udHJvbHNf cmVjc2VsKTsgaSsrKSB7DQotCQlpZiAoKGVyciA9IHNuZF9jdGxfYWRkKGFjOTctPmJ1cy0+Y2Fy ZCwgc25kX2FjOTdfY25ldygmd20xM19zbmRfYWM5N19jb250cm9sc19yZWNzZWxbaV0sIGFjOTcp KSkgPCAwKQ0KLQkJCXJldHVybiBlcnI7DQotCX0NCiAJc25kX2FjOTdfd3JpdGVfY2FjaGUoYWM5 NywgQUM5N19WSURFTywgMHhkNjEyKTsNCiAJc25kX2FjOTdfd3JpdGVfY2FjaGUoYWM5NywgQUM5 N19SRUNfR0FJTiwgMHgxYmEwKTsNCi0JDQogCXJldHVybiAwOw0KIH0NCiANCkBAIC01MjUsNiAr Nzc3LDcgQEAgc3RhdGljIHZvaWQgcGF0Y2hfd29sZnNvbl93bTk3MTNfcmVzdW1lIA0KIA0KIHN0 YXRpYyBzdHJ1Y3Qgc25kX2FjOTdfYnVpbGRfb3BzIHBhdGNoX3dvbGZzb25fd205NzEzX29wcyA9 IHsNCiAJLmJ1aWxkX3NwZWNpZmljID0gcGF0Y2hfd29sZnNvbl93bTk3MTNfc3BlY2lmaWMsDQor CS5idWlsZF8zZCA9IHBhdGNoX3dvbGZzb25fd205NzEzXzNkLA0KICNpZmRlZiBDT05GSUdfUE0J DQogCS5zdXNwZW5kID0gcGF0Y2hfd29sZnNvbl93bTk3MTNfc3VzcGVuZCwNCiAJLnJlc3VtZSA9 IHBhdGNoX3dvbGZzb25fd205NzEzX3Jlc3VtZQ0KQEAgLTUzNiw3ICs3ODksNyBAQCBpbnQgcGF0 Y2hfd29sZnNvbjEzKGFjOTdfdCAqIGFjOTcpDQogCWFjOTctPmJ1aWxkX29wcyA9ICZwYXRjaF93 b2xmc29uX3dtOTcxM19vcHM7DQogDQogCWFjOTctPmZsYWdzIHw9IEFDOTdfSEFTX05PX1JFQ19H QUlOIHwgQUM5N19TVEVSRU9fTVVURVMgfCBBQzk3X0hBU19OT19QSE9ORSB8DQotCQlBQzk3X0hB U19OT19QQ19CRUVQIHwgQUM5N19IQVNfTk9fVklERU8gfCBBQzk3X0hBU19OT19DRDsNCisJCUFD OTdfSEFTX05PX1BDX0JFRVAgfCBBQzk3X0hBU19OT19WSURFTyB8IEFDOTdfSEFTX05PX0NEIHwg QUM5N19IQVNfTk9fVE9ORTsNCiANCiAJc25kX2FjOTdfd3JpdGVfY2FjaGUoYWM5NywgQUM5N19F WFRFTkRFRF9NSUQsIDB4ZGEwMCk7DQogCXNuZF9hYzk3X3dyaXRlX2NhY2hlKGFjOTcsIEFDOTdf RVhURU5ERURfTVNUQVRVUywgMHgzODEwKTsNCm== --=-yIHdZFWPAjtUxL2RyICl-- ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click