ZGlmZiAtLWdpdCBhL2FwL2xpYi9saWJ2b2ljZS9hbHNhX2NhbGwuYyBiL2FwL2xpYi9saWJ2b2ljZS9hbHNhX2NhbGwuYwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43MmY4MmNlCi0tLSAvZGV2L251bGwKKysrIGIvYXAvbGliL2xpYnZvaWNlL2Fsc2FfY2FsbC5jCkBAIC0wLDAgKzEsMjc4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqKiCw5sioy/nT0CAoQykyMDE1LCDW0NDLzajRtrnJt93T0M/euavLvqGjDQorKiogDQorKiogzsS8/sP7s8Y6ICAgICBhbHNhX3ZvaWNlLmMNCisqKiDOxLz+serKtjogICAgIA0KKyoqIMTayN3VqtKqOiAgICANCisqKiDKudPDt723qDogICAgIA0KKyoqIA0KKyoqINDeuMTI1cbaICAgICAgICCw5rG+usUgICAgICDQ3rjEseq8xyAgICAgICAg0N64xMjLICAgICAgICAgINDeuMTE2sjdDQorKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisqKiAyMDE5LzA5LzI1ICAgICBWMS4wICAgICAgICBDcmVhdGUgICAgICAgICAgeHhxICAgICAgICC0tL2oDQorKiogDQorKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2lmZGVmIF9VU0VfVk9JQ0VfQUxTQQ0KKw0KKyNpbmNsdWRlIDxzdGRpby5oPg0KKyNpbmNsdWRlIDx1bmlzdGQuaD4NCisjaW5jbHVkZSA8c3RyaW5nLmg+DQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKw0KKyNpbmNsdWRlIDxzdGRpbnQuaD4NCisvLyNpbmNsdWRlICJ2b2x0ZV9kcnYuaCINCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+DQorI2luY2x1ZGUgPGZjbnRsLmg+DQorI2luY2x1ZGUgPHRpbnlhbHNhL2F1ZGlvX21peGVyX2N0cmwuaD4NCisNCisNCisNCisjaW5jbHVkZSA8c3RkYm9vbC5oPiANCisjaW5jbHVkZSAidGlueWFsc2EvYXNvdW5kbGliLmgiDQorI2luY2x1ZGUgInRpbnlhbHNhL2F1ZGlvX21peGVyX2N0cmwuaCINCisvLyNpbmNsdWRlICJhdWRpb19yZXNfY3RybC5oIg0KKyNpbmNsdWRlICJ2b2ljZV9saWIuaCINCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgICAgICAgICAgICAgICAgICAguuq2qNLlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvLyNkZWZpbmUgQVZPSUNFX1RFQUtfMkdfM0dfREVWX05VTSAzDQorLy8jZGVmaW5lIEFWT0lDRV9TT0ZUXzNHX0RFVl9OVU0gNA0KKy8vI2RlZmluZSBBVk9JQ0VfNEdfREVWX05VTSAyDQorLy8jZGVmaW5lIEFWT0lDRV81R19ERVZfTlVNIDINCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgICAgICAgICAgICAgICAgICAgwODQzbao0uUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKg0KK3R5cGVkZWYgZW51bQ0KK3sNCisgICAgQVZPSUNFX1RFQUtfMkdfM0cgPSAwLCAgICAgDQorICAgIEFWT0lDRV9TT0ZUXzNHX05CLC8vMQ0KKyAgICBBVk9JQ0VfU09GVF8zR19XQiwgLy8yICAgDQorICAgIEFWT0lDRV80R19OQiwgLy8zICAgICAgICAgICAgICAgICANCisgICAgQVZPSUNFXzRHX1dCLCAvLzQNCisgICAgQVZPSUNFXzVHX05CLC8vNSAgICANCisgICAgQVZPSUNFXzVHX1dCLC8vNiAgICAgIA0KKyAgICBNQVhfQVZPSUNFX01PREUgICAgICAgICAgICAgICANCit9VF9BbHNhX1ZvaWNlX01vZGU7DQorKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgICAgICAgICAgICAgICAgICAgvtayv7qvyv3UrdDNyfnD9yAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgICAgICAgICAgICAgICAgICAgICC+ssysyKu+1rHkwb8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgIMirvta6r8r9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgIL7Wsr+6r8r9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKiBzdGFydCBmb3IgdGVzdGluZyAgY3RtKi8NCisNCisvKiBkYXRhIHR5cGUgZm9yIHZvaWNlIGRldmljZSAgaGFuZGxlICovDQorDQorc3RydWN0IHZvaWNlX2hhbmRsZQ0KK3sNCisgICAgc3RydWN0IHBjbSAgKnBjbV92b2ljZV9vdXQ7DQorICAgIHN0cnVjdCBwY20gICpwY21fdm9pY2VfaW47DQorfTsNCisNCisvKiBzdGF0aWMgIGhhbmRsZSAqLw0KK3N0YXRpYyBzdHJ1Y3Qgdm9pY2VfaGFuZGxlIHZvaWNlX2hhbmRsZSA9IHswfTsNCisNCitzdGF0aWMgaW50IGN1cnJlbnRfY2hhbmwgPSBUX09VVFBVVF9SRUNFSVZFUjsvL1RfT1VUUFVUX0hFQURTRVQ7Ly9UX09VVFBVVF9SRUNFSVZFUjsNCitzdGF0aWMgaW50IGN1cnJlbnRfdm9sID0gVF9WT0lDRV9WT0xfNV9MRVZFTDsNCitzdGF0aWMgaW50IGRldl9udW0gPSAxOw0KK3N0YXRpYyBpbnQgY3VycmVudF9tb2RlID0gTUFYX0FWT0lDRV9NT0RFOw0KK2NoYXIqIHZvY2llX21vZGVbXT17IkFWT0lDRV9URUFLXzJHXzNHIiwiQVZPSUNFX1NPRlRfM0dfTkIiLCJBVk9JQ0VfU09GVF8zR19XQiIsIkFWT0lDRV80R19OQiIsIkFWT0lDRV80R19XQiIsIkFWT0lDRV81R19OQiIsIkFWT0lDRV81R19XQiJ9Ow0KKw0KKy8qDQorICogcGhvbmUgY2FsbCAgIA0KKyAqLw0KK2ludCBhbHNhX3ZvaWNlX29wZW4oaW50IHZtb2RlKQ0KK3sNCisgICAgaW50IHJldCA9IDA7DQorCS8vaW50IHN0YXR1cyA9IDA7DQorICAgIHN0cnVjdCBwY21fY29uZmlnIGNvbmZpZ192b2ljZSA9IHswfTsNCisgICAgc3RydWN0IG14aWVyICp2b2ljZV9taXhlciA9IE5VTEw7DQorCQ0KKwlwcmludGYoICIlczogc3RhcnQgdm9jaWVfbW9kZSglZCkgJXMsIGN1cnJlbnRfbW9kZT0lZCFcbiIsX19mdW5jX18sdm1vZGUsdm9jaWVfbW9kZVt2bW9kZV0sY3VycmVudF9tb2RlKTsNCisNCisgICAgaWYodm1vZGUgPj0gTUFYX0FWT0lDRV9NT0RFfHx2bW9kZSA8IEFWT0lDRV9URUFLXzJHXzNHKQ0KKwl7DQorCQlwcmludGYoImFsc2Ffdm9pY2Vfb3BlbjogbW9kZSBub3Qgc3VwcG9ydCBmYWlsIVxuIik7DQorCQlyZXR1cm4gLTI7DQorCQ0KKwl9DQorICAgIC8qIG9wZW4gbWl4ZXIgZGV2IGZvciBjb2RlYyBjb250cm9sICovDQorICAgIGlmKCEodm9pY2VfbWl4ZXIgPSBtaXhlcl9vcGVuKDApKSkgDQorICAgICAgIHByaW50ZigibWl4ZXIgb3BlbiBmYWlsLCBmaWxlKCVzKSwgbGluZSglZClcbiIsIF9fRklMRV9fLCBfX0xJTkVfXyk7DQorDQorDQorCWlmKFRfT1VUUFVUX1NQRUFLRVIgPT0gY3VycmVudF9jaGFubCkgew0KKwkJbWl4X3NldF92b2ljZV9wYXRoKHZvaWNlX21peGVyLFRfT1VUUFVUX1NQRUFLRVIpOw0KKwkJDQorCQlwcmludGYoImNoYW5sIFNQRUFLRVI6IG1peF9zZXRfdm9pY2VfcGF0aCByZXQ9JWQhXG4iLHJldCk7DQorCQltaXhfc2V0X3ZvaWNlX3ZvbCh2b2ljZV9taXhlcixUX1ZPSUNFX1ZPTF81X0xFVkVMKTsNCisJCQ0KKwkgICAgcHJpbnRmKCJjaGFubCBTUEVBS0VSOiBtaXhfc2V0X3ZvaWNlX3ZvbCByZXQ9JWQhXG4iLHJldCk7DQorCX0NCisJZWxzZSBpZiAoVF9PVVRQVVRfUkVDRUlWRVIgPT0gY3VycmVudF9jaGFubCl7DQorCQltaXhfc2V0X3ZvaWNlX3BhdGgodm9pY2VfbWl4ZXIsIFRfT1VUUFVUX1JFQ0VJVkVSKTsNCisJCQ0KKwkJcHJpbnRmKCJjaGFubCBSRUNFSVZFUjogbWl4X3NldF92b2ljZV9wYXRoIHJldD0lZCFcbiIscmV0KTsNCisJCW1peF9zZXRfdm9pY2Vfdm9sKHZvaWNlX21peGVyLFRfVk9JQ0VfVk9MXzVfTEVWRUwpOw0KKwkJDQorCSAgICBwcmludGYoImNoYW5sIFJFQ0VJVkVSOiBtaXhfc2V0X3ZvaWNlX3ZvbCByZXQ9JWQhXG4iLHJldCk7DQorCX0NCisJZWxzZSBpZiAoVF9PVVRQVVRfSEVBRFNFVCA9PSBjdXJyZW50X2NoYW5sKXsNCisJCQ0KKwkJcmV0PSBtaXhfc2V0X3ZvaWNlX3BhdGgodm9pY2VfbWl4ZXIsIFRfT1VUUFVUX0hFQURTRVQpOw0KKwkJDQorCSAgICBwcmludGYoImNoYW5sIEhFQURTRVQ6IG1peF9zZXRfdm9pY2VfcGF0aCByZXQ9JWQhXG4iLHJldCk7DQorCQlyZXQgPSBtaXhfc2V0X3ZvaWNlX3ZvbCh2b2ljZV9taXhlcixUX1ZPSUNFX1ZPTF81X0xFVkVMKTsNCisJICAgIHByaW50ZigiY2hhbmwgSEVBRFNFVDogbWl4X3NldF92b2ljZV92b2wgcmV0PSVkIVxuIixyZXQpOw0KKwkJDQorCX0JDQorCWVsc2UNCisJew0KKwkJcHJpbnRmKCJhbHNhX3ZvaWNlX29wZW46IGNoYW5sIG5vdCBzdXBwb3J0IGZhaWwhXG4iKTsNCisJCXJldHVybiAtMjsNCisNCisJfQ0KKw0KKyAgICAvKmNsb3NlIG1peGVyICovDQorICAgIG1peGVyX2Nsb3NlKHZvaWNlX21peGVyKTsNCisgICAgDQorICAgIC8qIG9wZW4gcGNtIGRldiBmb3IgZGF0YSB0cmFuZiovDQorICAgIGNvbmZpZ192b2ljZS5jaGFubmVscyA9IDE7IC8qIG9uZSBjaGFubmVsICovIA0KKyAgICBjb25maWdfdm9pY2UucmF0ZSA9IDgwMDA7ICAvKiA4SyByYXRlICovIA0KKyAgICBjb25maWdfdm9pY2UucGVyaW9kX2NvdW50ID0gMzsgLyogYnVmZmVyIG51bSAqLw0KKyAgICBjb25maWdfdm9pY2UucGVyaW9kX3NpemUgPSA2NDA7IC8qIGJ1ZmZlciBzaXplICovDQorICAgIGNvbmZpZ192b2ljZS5mb3JtYXQgPSBQQ01fRk9STUFUX1MxNl9MRTsgLyogMTYtYml0IHNpZ25lZCAqLw0KKyAgICBpZih2bW9kZSA9PSBBVk9JQ0VfVEVBS18yR18zRykNCisgICAgew0KKyAgICAgICAgIGRldl9udW0gPSBBVk9JQ0VfVEVBS18yR18zR19ERVZfTlVNOw0KKwkJIGNvbmZpZ192b2ljZS5yYXRlID0gODAwMDsgIC8qIDhLIHJhdGUgKi8gDQorICAgIH0NCisJZWxzZSBpZih2bW9kZSA9PSBBVk9JQ0VfU09GVF8zR19OQikNCisgICAgew0KKyAgICAgICAgIGRldl9udW0gPSBBVk9JQ0VfU09GVF8zR19ERVZfTlVNOw0KKwkJIGNvbmZpZ192b2ljZS5yYXRlID0gODAwMDsgIC8qIDhLIHJhdGUgKi8gIA0KKyAgICB9DQorCWVsc2UgaWYodm1vZGUgPT0gQVZPSUNFX1NPRlRfM0dfV0IpDQorICAgIHsNCisgICAgICAgICBkZXZfbnVtID0gQVZPSUNFX1NPRlRfM0dfREVWX05VTTsNCisJCSBjb25maWdfdm9pY2UucmF0ZSA9IDE2MDAwOyAgLyogMTZLIHJhdGUgKi8gIA0KKyAgICB9DQorCWVsc2UgaWYodm1vZGUgPT0gQVZPSUNFXzRHX05CKQ0KKyAgICB7DQorICAgICAgICAgZGV2X251bSA9IEFWT0lDRV80R19ERVZfTlVNOw0KKwkJIGNvbmZpZ192b2ljZS5yYXRlID0gODAwMDsgIC8qIDhLIHJhdGUgKi8gIA0KKyAgICB9DQorCWVsc2UgaWYodm1vZGUgPT0gQVZPSUNFXzRHX1dCKQ0KKyAgICB7DQorICAgICAgICAgZGV2X251bSA9IEFWT0lDRV80R19ERVZfTlVNOw0KKwkJIGNvbmZpZ192b2ljZS5yYXRlID0gMTYwMDA7ICAvKiAxNksgcmF0ZSAqLyAgDQorICAgIH0NCisJZWxzZSBpZih2bW9kZSA9PSBBVk9JQ0VfNUdfTkIpDQorICAgIHsNCisgICAgICAgICBkZXZfbnVtID0gQVZPSUNFXzVHX0RFVl9OVU07DQorCQkgY29uZmlnX3ZvaWNlLnJhdGUgPSA4MDAwOyAgLyogOEsgcmF0ZSAqLyAgDQorICAgIH0NCisJZWxzZSBpZih2bW9kZSA9PSBBVk9JQ0VfNUdfV0IpDQorICAgIHsNCisgICAgICAgICBkZXZfbnVtID0gQVZPSUNFXzVHX0RFVl9OVU07DQorCQkgY29uZmlnX3ZvaWNlLnJhdGUgPSAxNjAwMDsgIC8qIDE2SyByYXRlICovICANCisgICAgfQ0KKwllbHNlDQorCXsNCisJCXByaW50ZigiYWxzYV92b2ljZV9vcGVuOiBtb2RlIG5vdCBzdXBwb3J0IGZhaWwhXG4iKTsNCisJCXJldHVybiAtMjsNCisJDQorCX0NCisNCisNCisgICAgaWYoISh2b2ljZV9oYW5kbGUucGNtX3ZvaWNlX291dCA9IHBjbV9vcGVuKDAsIGRldl9udW0sIFBDTV9PVVQsICZjb25maWdfdm9pY2UpKSkgDQorCQlwcmludGYoInBjbV9vdXQgZGV2X251bT0lZCBvcGVuIGZhaWwsIGZpbGUoJXMpLCBsaW5lKCVkKVxuIixkZXZfbnVtLCBfX0ZJTEVfXywgX19MSU5FX18pOw0KKwkNCisJcHJpbnRmKCIlczpwY21fb3BlbiBwY21fdm9pY2Vfb3V0IGRldl9udW09JWQgZW5kIVxuIixfX2Z1bmNfXyxkZXZfbnVtKTsNCisJCQ0KKyAgICBpZighKHZvaWNlX2hhbmRsZS5wY21fdm9pY2VfaW4gPSBwY21fb3BlbigwLGRldl9udW0sUENNX0lOLCAmY29uZmlnX3ZvaWNlKSkpIA0KKwkJcHJpbnRmKCJwY21faW4gb3BlbiBkZXZfbnVtPSVkIGZhaWwsIGZpbGUoJXMpLCBsaW5lKCVkKVxuIixkZXZfbnVtLCBfX0ZJTEVfXywgX19MSU5FX18pOw0KKwkNCisJcHJpbnRmKCIlczpwY21fb3BlbiBwY21fdm9pY2VfaW4gZGV2X251bT0lZCBlbmQhXG4iLF9fZnVuY19fLGRldl9udW0pOw0KKyAgICAgICANCisgICAgaWYoMCAhPSBwY21fcHJlcGFyZSh2b2ljZV9oYW5kbGUucGNtX3ZvaWNlX291dCkpIA0KKyAgICAJcHJpbnRmKCJwY21fb3V0IGRldl9udW09JWQgcHJlcGFyZSBmYWlsLCBmaWxlKCVzKSwgbGluZSglZClcbiIsZGV2X251bSwgX19GSUxFX18sIF9fTElORV9fKTsNCisJDQorCXByaW50ZigiJXM6IHBjbV92b2ljZV9vdXQgcGNtX3ByZXBhcmUgZGV2X251bT0lZCBlbmQhXG4iLF9fZnVuY19fLGRldl9udW0pOw0KKwkJDQorICAgIGlmKDAgIT0gcGNtX3ByZXBhcmUodm9pY2VfaGFuZGxlLnBjbV92b2ljZV9pbikpDQorICAgCQlwcmludGYoInBjbV9pbiBkZXZfbnVtPSVkIHByZXBhcmUgZmFpbCwgZmlsZSglcyksIGxpbmUoJWQpXG4iLGRldl9udW0sIF9fRklMRV9fLCBfX0xJTkVfXyk7DQorDQorCQ0KKwlwcmludGYoIiVzOiBwY21fdm9pY2VfaW4gcGNtX3ByZXBhcmUgdm1vZGU9JWQgZGV2X251bT0lZCBlbmQhXG4iLF9fZnVuY19fLHZtb2RlLGRldl9udW0pOw0KKyAgICBjdXJyZW50X21vZGUgPSB2bW9kZTsNCisJcHJpbnRmKCIlczogZW5kIVxuIixfX2Z1bmNfXyk7IA0KKwkNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK2ludCBhbHNhX3ZvaWNlX2Nsb3NlKGludCB2bW9kZSkNCit7DQorICAgIGludCByZXQgPSAwOw0KKwlwcmludGYoIiVzOiBzdGFydCFcbiIsX19mdW5jX18pOyANCisNCisgICAgaWYodm1vZGUgPj0gTUFYX0FWT0lDRV9NT0RFfHx2bW9kZSA8IEFWT0lDRV9URUFLXzJHXzNHKQ0KKwl7DQorCQlwcmludGYoImFsc2Ffdm9pY2VfY2xvc2U6IG1vZGUgbm90IHN1cHBvcnQgZmFpbCFcbiIpOw0KKwkJcmV0dXJuIC0yOw0KKwkNCisJfQ0KKw0KK2lmKHZvaWNlX2hhbmRsZS5wY21fdm9pY2VfaW4pIHsNCisJcmV0ID0gcGNtX2Nsb3NlKHZvaWNlX2hhbmRsZS5wY21fdm9pY2VfaW4pOw0KKwl2b2ljZV9oYW5kbGUucGNtX3ZvaWNlX2luID0gMDsNCisNCisJcHJpbnRmKCJwY21fY2xvc2UgcGNtX3ZvaWNlX2luCXJldD0lZCFcbiIscmV0KTsNCit9DQorDQoraWYodm9pY2VfaGFuZGxlLnBjbV92b2ljZV9vdXQpIHsNCisJcmV0ID0gcGNtX2Nsb3NlKHZvaWNlX2hhbmRsZS5wY21fdm9pY2Vfb3V0KTsNCisJdm9pY2VfaGFuZGxlLnBjbV92b2ljZV9vdXQgPSAwOw0KKw0KKwlwcmludGYoInBjbV9jbG9zZSBwY21fdm9pY2Vfb3V0ICByZXQ9JWQhXG4iLHJldCk7DQorfQ0KKw0KKw0KKw0KKw0KKw0KKwljdXJyZW50X21vZGUgPSBNQVhfQVZPSUNFX01PREU7DQorCXByaW50ZigiJXM6IGVuZCFcbiIsX19mdW5jX18pOyANCisJDQorICAgIHJldHVybiByZXQ7IA0KK30NCisNCisNCisNCisjZW5kaWYNCg==