From: marko.makela Date: August 29 2011 8:51am Subject: bzr push into mysql-trunk branch (marko.makela:3412 to 3413) List-Archive: http://lists.mysql.com/commits/140826 Message-Id: <201108290851.p7T8pMsX007203@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM0MTMgTWFya28gTcOka2Vsw6QJMjAxMS0wOC0yOSBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuNSB0byBteXNxbC10cnVuay4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9idHIvYnRyMGJ0ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuYwogICAg ICBzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9m c3AvZnNwMGZzcC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgKICAg ICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaAogICAgICBzdG9yYWdlL2lubm9i YXNlL2luY2x1ZGUvYnVmMGJ1Zi5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9mc3Aw ZnNwLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL210cjBtdHIuaAogICAgICBzdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvbXRyMG10ci5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL210 ci9tdHIwbXRyLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzByb3cuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9y b3cwdXBkLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHVuZG8uYwogMzQxMiBSb2hp dCBLYWxoYW5zCTIwMTEtMDgtMjkgW21lcmdlXQogICAgICBOdWxsIE1lcmdlIGZyb20gbXlzcWwt NS41LgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBidHIuYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGJ0ci5jCXJldmlkOnJvaGl0LmthbGhhbnNA b3JhY2xlLmNvbS0yMDExMDgyOTA3NTkxOC1yMWM2aGhsYTI5MTJpdHNmCisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2UvYnRyL2J0cjBidHIuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEx MDgyOTA4NDUzMC0wNnRxd2d2Y25vdHJsY3VnCkBAIC05MDcsMjggKzkwNywyOSBAQCBidHJfcGFn ZV9hbGxvY19mb3JfaWJ1ZigKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEFsbG9jYXRlcyBhIG5ldyBmaWxlIHBhZ2Ug dG8gYmUgdXNlZCBpbiBhbiBpbmRleCB0cmVlLiBOT1RFOiB3ZSBhc3N1bWUKIHRoYXQgdGhlIGNh bGxlciBoYXMgbWFkZSB0aGUgcmVzZXJ2YXRpb24gZm9yIGZyZWUgZXh0ZW50cyEKLUByZXR1cm4J bmV3IGFsbG9jYXRlZCBibG9jaywgeC1sYXRjaGVkOyBOVUxMIGlmIG91dCBvZiBzcGFjZSAqLwot VU5JVl9JTlRFUk4KLWJ1Zl9ibG9ja190KgotYnRyX3BhZ2VfYWxsb2MoCi0vKj09PT09PT09PT09 Ki8KK0ByZXR1cm4JYWxsb2NhdGVkIHBhZ2UgbnVtYmVyLCBGSUxfTlVMTCBpZiBvdXQgb2Ygc3Bh Y2UgKi8KK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKChub25udWxsKDEsNSksIHdhcm5fdW51c2VkX3Jl c3VsdCkpCit1bGludAorYnRyX3BhZ2VfYWxsb2NfbG93KAorLyo9PT09PT09PT09PT09PT0qLwog CWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluOiBpbmRleCAqLwogCXVsaW50CQloaW50X3Bh Z2Vfbm8sCS8qITwgaW46IGhpbnQgb2YgYSBnb29kIHBhZ2UgKi8KIAlieXRlCQlmaWxlX2RpcmVj dGlvbiwJLyohPCBpbjogZGlyZWN0aW9uIHdoZXJlIGEgcG9zc2libGUKIAkJCQkJcGFnZSBzcGxp dCBpcyBtYWRlICovCiAJdWxpbnQJCWxldmVsLAkJLyohPCBpbjogbGV2ZWwgd2hlcmUgdGhlIHBh Z2UgaXMgcGxhY2VkCiAJCQkJCWluIHRoZSB0cmVlICovCi0JbXRyX3QqCQltdHIpCQkvKiE8IGlu OiBtdHIgKi8KKwltdHJfdCoJCW10ciwJCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uCisJ CQkJCWZvciB0aGUgYWxsb2NhdGlvbiAqLworCW10cl90KgkJaW5pdF9tdHIpCS8qITwgaW4vb3V0 OiBtaW5pLXRyYW5zYWN0aW9uCisJCQkJCWluIHdoaWNoIHRoZSBwYWdlIHNob3VsZCBiZQorCQkJ CQlpbml0aWFsaXplZCAobWF5IGJlIHRoZSBzYW1lCisJCQkJCWFzIG10ciksIG9yIE5VTEwgaWYg aXQgc2hvdWxkCisJCQkJCW5vdCBiZSBpbml0aWFsaXplZCAodGhlIHBhZ2UKKwkJCQkJYXQgaGlu dCB3YXMgcHJldmlvdXNseSBmcmVlZAorCQkJCQlpbiBtdHIpICovCiB7CiAJZnNlZ19oZWFkZXJf dCoJc2VnX2hlYWRlcjsKIAlwYWdlX3QqCQlyb290OwotCWJ1Zl9ibG9ja190KgluZXdfYmxvY2s7 Ci0JdWxpbnQJCW5ld19wYWdlX25vOwotCi0JaWYgKGRpY3RfaW5kZXhfaXNfaWJ1ZihpbmRleCkp IHsKLQotCQlyZXR1cm4oYnRyX3BhZ2VfYWxsb2NfZm9yX2lidWYoaW5kZXgsIG10cikpOwotCX0K IAogCXJvb3QgPSBidHJfcm9vdF9nZXQoaW5kZXgsIG10cik7CiAKQEAgLTk0Miw4ICs5NDMsNDIg QEAgYnRyX3BhZ2VfYWxsb2MoCiAJcmVzZXJ2YXRpb24gZm9yIGZyZWUgZXh0ZW50cywgYW5kIHRo dXMgd2Uga25vdyB0aGF0IGEgcGFnZSBjYW4KIAliZSBhbGxvY2F0ZWQ6ICovCiAKLQluZXdfcGFn ZV9ubyA9IGZzZWdfYWxsb2NfZnJlZV9wYWdlX2dlbmVyYWwoc2VnX2hlYWRlciwgaGludF9wYWdl X25vLAotCQkJCQkJICAgZmlsZV9kaXJlY3Rpb24sIFRSVUUsIG10cik7CisJcmV0dXJuKGZzZWdf YWxsb2NfZnJlZV9wYWdlX2dlbmVyYWwoCisJCSAgICAgICBzZWdfaGVhZGVyLCBoaW50X3BhZ2Vf bm8sIGZpbGVfZGlyZWN0aW9uLAorCQkgICAgICAgVFJVRSwgbXRyLCBpbml0X210cikpOworfQor CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCitBbGxvY2F0ZXMgYSBuZXcgZmlsZSBwYWdlIHRvIGJlIHVzZWQgaW4gYW4g aW5kZXggdHJlZS4gTk9URTogd2UgYXNzdW1lCit0aGF0IHRoZSBjYWxsZXIgaGFzIG1hZGUgdGhl IHJlc2VydmF0aW9uIGZvciBmcmVlIGV4dGVudHMhCitAcmV0dXJuCW5ldyBhbGxvY2F0ZWQgYmxv Y2ssIHgtbGF0Y2hlZDsgTlVMTCBpZiBvdXQgb2Ygc3BhY2UgKi8KK1VOSVZfSU5URVJOCitidWZf YmxvY2tfdCoKK2J0cl9wYWdlX2FsbG9jKAorLyo9PT09PT09PT09PSovCisJZGljdF9pbmRleF90 KglpbmRleCwJCS8qITwgaW46IGluZGV4ICovCisJdWxpbnQJCWhpbnRfcGFnZV9ubywJLyohPCBp bjogaGludCBvZiBhIGdvb2QgcGFnZSAqLworCWJ5dGUJCWZpbGVfZGlyZWN0aW9uLAkvKiE8IGlu OiBkaXJlY3Rpb24gd2hlcmUgYSBwb3NzaWJsZQorCQkJCQlwYWdlIHNwbGl0IGlzIG1hZGUgKi8K Kwl1bGludAkJbGV2ZWwsCQkvKiE8IGluOiBsZXZlbCB3aGVyZSB0aGUgcGFnZSBpcyBwbGFjZWQK KwkJCQkJaW4gdGhlIHRyZWUgKi8KKwltdHJfdCoJCW10ciwJCS8qITwgaW4vb3V0OiBtaW5pLXRy YW5zYWN0aW9uCisJCQkJCWZvciB0aGUgYWxsb2NhdGlvbiAqLworCW10cl90KgkJaW5pdF9tdHIp CS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uCisJCQkJCWZvciB4LWxhdGNoaW5nIGFuZCBp bml0aWFsaXppbmcKKwkJCQkJdGhlIHBhZ2UgKi8KK3sKKwlidWZfYmxvY2tfdCoJbmV3X2Jsb2Nr OworCXVsaW50CQluZXdfcGFnZV9ubzsKKworCWlmIChkaWN0X2luZGV4X2lzX2lidWYoaW5kZXgp KSB7CisKKwkJcmV0dXJuKGJ0cl9wYWdlX2FsbG9jX2Zvcl9pYnVmKGluZGV4LCBtdHIpKTsKKwl9 CisKKwluZXdfcGFnZV9ubyA9IGJ0cl9wYWdlX2FsbG9jX2xvdygKKwkJaW5kZXgsIGhpbnRfcGFn ZV9ubywgZmlsZV9kaXJlY3Rpb24sIGxldmVsLCBtdHIsIGluaXRfbXRyKTsKKwogCWlmIChuZXdf cGFnZV9ubyA9PSBGSUxfTlVMTCkgewogCiAJCXJldHVybihOVUxMKTsKQEAgLTk1MSw5ICs5ODYs MTYgQEAgYnRyX3BhZ2VfYWxsb2MoCiAKIAluZXdfYmxvY2sgPSBidWZfcGFnZV9nZXQoZGljdF9p bmRleF9nZXRfc3BhY2UoaW5kZXgpLAogCQkJCSBkaWN0X3RhYmxlX3ppcF9zaXplKGluZGV4LT50 YWJsZSksCi0JCQkJIG5ld19wYWdlX25vLCBSV19YX0xBVENILCBtdHIpOworCQkJCSBuZXdfcGFn ZV9ubywgUldfWF9MQVRDSCwgaW5pdF9tdHIpOwogCWJ1Zl9ibG9ja19kYmdfYWRkX2xldmVsKG5l d19ibG9jaywgU1lOQ19UUkVFX05PREVfTkVXKTsKIAorCWlmIChtdHItPmZyZWVkX2NsdXN0X2xl YWYpIHsKKwkJbXRyX21lbW9fcmVsZWFzZShtdHIsIG5ld19ibG9jaywgTVRSX01FTU9fRlJFRV9D TFVTVF9MRUFGKTsKKwkJdXRfYWQoIW10cl9tZW1vX2NvbnRhaW5zKG10ciwgbmV3X2Jsb2NrLAor CQkJCQkgTVRSX01FTU9fRlJFRV9DTFVTVF9MRUFGKSk7CisJfQorCisJdXRfYWQoYnRyX2ZyZWVk X2xlYXZlc192YWxpZGF0ZShtdHIpKTsKIAlyZXR1cm4obmV3X2Jsb2NrKTsKIH0KIApAQCAtMTA2 Niw2ICsxMTA4LDE1IEBAIGJ0cl9wYWdlX2ZyZWVfbG93KAogCWZzZWdfZnJlZV9wYWdlKHNlZ19o ZWFkZXIsCiAJCSAgICAgICBidWZfYmxvY2tfZ2V0X3NwYWNlKGJsb2NrKSwKIAkJICAgICAgIGJ1 Zl9ibG9ja19nZXRfcGFnZV9ubyhibG9jayksIG10cik7CisKKwkvKiBUaGUgcGFnZSB3YXMgbWFy a2VkIGZyZWUgaW4gdGhlIGFsbG9jYXRpb24gYml0bWFwLCBidXQgaXQKKwlzaG91bGQgcmVtYWlu IGJ1ZmZlci1maXhlZCB1bnRpbCBtdHJfY29tbWl0KG10cikgb3IgdW50aWwgaXQKKwlpcyBleHBs aWNpdGx5IGZyZWVkIGZyb20gdGhlIG1pbmktdHJhbnNhY3Rpb24uICovCisJdXRfYWQobXRyX21l bW9fY29udGFpbnMobXRyLCBibG9jaywgTVRSX01FTU9fUEFHRV9YX0ZJWCkpOworCS8qIFRPRE86 IERpc2NhcmQgYW55IG9wZXJhdGlvbnMgb24gdGhlIHBhZ2UgZnJvbSB0aGUgcmVkbyBsb2cKKwlh bmQgcmVtb3ZlIHRoZSBibG9jayBmcm9tIHRoZSBmbHVzaCBsaXN0IGFuZCB0aGUgYnVmZmVyIHBv b2wuCisJVGhpcyB3b3VsZCBmcmVlIHVwIGJ1ZmZlciBwb29sIGVhcmxpZXIgYW5kIHJlZHVjZSB3 cml0ZXMgdG8KKwlib3RoIHRoZSB0YWJsZXNwYWNlIGFuZCB0aGUgcmVkbyBsb2cuICovCiB9CiAK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKQEAgLTEwNzksMTIgKzExMzAsMTM5IEBAIGJ0cl9wYWdlX2ZyZWUoCiAJYnVm X2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGluOiBibG9jayB0byBiZSBmcmVlZCwgeC1sYXRjaGVkICov CiAJbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciAqLwogewotCXVsaW50CQlsZXZlbDsKLQotCWxl dmVsID0gYnRyX3BhZ2VfZ2V0X2xldmVsKGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spLCBtdHIp OworCWNvbnN0IHBhZ2VfdCoJcGFnZQk9IGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spOworCXVs aW50CQlsZXZlbAk9IGJ0cl9wYWdlX2dldF9sZXZlbChwYWdlLCBtdHIpOwogCisJdXRfYWQoZmls X3BhZ2VfZ2V0X3R5cGUoYmxvY2stPmZyYW1lKSA9PSBGSUxfUEFHRV9JTkRFWCk7CiAJYnRyX3Bh Z2VfZnJlZV9sb3coaW5kZXgsIGJsb2NrLCBsZXZlbCwgbXRyKTsKKworCS8qIFRoZSBoYW5kbGlu ZyBvZiBNVFJfTUVNT19GUkVFX0NMVVNUX0xFQUYgYXNzdW1lcyB0aGlzLiAqLworCXV0X2FkKG10 cl9tZW1vX2NvbnRhaW5zKG10ciwgYmxvY2ssIE1UUl9NRU1PX1BBR0VfWF9GSVgpKTsKKworCWlm IChsZXZlbCA9PSAwICYmIGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKSB7CisJCS8qIFdlIG1h eSBoYXZlIHRvIGNhbGwgYnRyX21hcmtfZnJlZWRfbGVhdmVzKCkgdG8KKwkJdGVtcG9yYXJpbHkg bWFyayB0aGUgYmxvY2sgbm9uZnJlZSBmb3IgaW52b2tpbmcKKwkJYnRyX3N0b3JlX2JpZ19yZWNf ZXh0ZXJuX2ZpZWxkc19mdW5jKCkgYWZ0ZXIgYW4KKwkJdXBkYXRlLiBSZW1lbWJlciB0aGF0IHRo ZSBibG9jayB3YXMgZnJlZWQuICovCisJCW10ci0+ZnJlZWRfY2x1c3RfbGVhZiA9IFRSVUU7CisJ CW10cl9tZW1vX3B1c2gobXRyLCBibG9jaywgTVRSX01FTU9fRlJFRV9DTFVTVF9MRUFGKTsKKwl9 CisKKwl1dF9hZChidHJfZnJlZWRfbGVhdmVzX3ZhbGlkYXRlKG10cikpOworfQorCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCitNYXJrcyBhbGwgTVRSX01FTU9fRlJFRV9DTFVTVF9MRUFGIHBhZ2VzIG5vbmZyZWUgb3Ig ZnJlZS4KK0ZvciBpbnZva2luZyBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKCkgYWZ0 ZXIgYW4gdXBkYXRlLAord2UgbXVzdCB0ZW1wb3JhcmlseSBtYXJrIGZyZWVkIGNsdXN0ZXJlZCBp bmRleCBwYWdlcyBhbGxvY2F0ZWQsIHNvCit0aGF0IG9mZi1wYWdlIGNvbHVtbnMgd2lsbCBub3Qg YmUgYWxsb2NhdGVkIGZyb20gdGhlbS4gQmV0d2VlbiB0aGUKK2J0cl9zdG9yZV9iaWdfcmVjX2V4 dGVybl9maWVsZHMoKSBhbmQgbXRyX2NvbW1pdCgpIHdlIGhhdmUgdG8KK21hcmsgdGhlIHBhZ2Vz IGZyZWUgYWdhaW4sIHNvIHRoYXQgbm8gcGFnZXMgd2lsbCBiZSBsZWFrZWQuICovCitVTklWX0lO VEVSTgordm9pZAorYnRyX21hcmtfZnJlZWRfbGVhdmVzKAorLyo9PT09PT09PT09PT09PT09PT0q LworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBjbHVzdGVyZWQgaW5kZXggKi8K KwltdHJfdCoJCW10ciwJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KKwlpYm9vbAkJ bm9uZnJlZSkvKiE8IGluOiBUUlVFPW1hcmsgbm9uZnJlZSwgRkFMU0U9bWFyayBmcmVlZCAqLwor eworCS8qIFRoaXMgaXMgbG9vc2VseSBiYXNlZCBvbiBtdHJfbWVtb19yZWxlYXNlKCkuICovCisK Kwl1bGludAlvZmZzZXQ7CisKKwl1dF9hZChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7CisJ dXRfYWQobXRyLT5tYWdpY19uID09IE1UUl9NQUdJQ19OKTsKKwl1dF9hZChtdHItPnN0YXRlID09 IE1UUl9BQ1RJVkUpOworCisJaWYgKCFtdHItPmZyZWVkX2NsdXN0X2xlYWYpIHsKKwkJcmV0dXJu OworCX0KKworCW9mZnNldCA9IGR5bl9hcnJheV9nZXRfZGF0YV9zaXplKCZtdHItPm1lbW8pOwor CisJd2hpbGUgKG9mZnNldCA+IDApIHsKKwkJbXRyX21lbW9fc2xvdF90KglzbG90OworCQlidWZf YmxvY2tfdCoJCWJsb2NrOworCisJCW9mZnNldCAtPSBzaXplb2YgKnNsb3Q7CisKKwkJc2xvdCA9 IGR5bl9hcnJheV9nZXRfZWxlbWVudCgmbXRyLT5tZW1vLCBvZmZzZXQpOworCisJCWlmIChzbG90 LT50eXBlICE9IE1UUl9NRU1PX0ZSRUVfQ0xVU1RfTEVBRikgeworCQkJY29udGludWU7CisJCX0K KworCQkvKiBCZWNhdXNlIGJ0cl9wYWdlX2FsbG9jKCkgZG9lcyBpbnZva2UKKwkJbXRyX21lbW9f cmVsZWFzZSBvbiBNVFJfTUVNT19GUkVFX0NMVVNUX0xFQUYsIGFsbAorCQlibG9ja3MgdGFnZ2Vk IHdpdGggTVRSX01FTU9fRlJFRV9DTFVTVF9MRUFGIGluIHRoZQorCQltZW1vIG11c3Qgc3RpbGwg YmUgY2x1c3RlcmVkIGluZGV4IGxlYWYgdHJlZSBwYWdlcy4gKi8KKwkJYmxvY2sgPSBzbG90LT5v YmplY3Q7CisJCXV0X2EoYnVmX2Jsb2NrX2dldF9zcGFjZShibG9jaykKKwkJICAgICA9PSBkaWN0 X2luZGV4X2dldF9zcGFjZShpbmRleCkpOworCQl1dF9hKGZpbF9wYWdlX2dldF90eXBlKGJ1Zl9i bG9ja19nZXRfZnJhbWUoYmxvY2spKQorCQkgICAgID09IEZJTF9QQUdFX0lOREVYKTsKKwkJdXRf YShwYWdlX2lzX2xlYWYoYnVmX2Jsb2NrX2dldF9mcmFtZShibG9jaykpKTsKKworCQlpZiAobm9u ZnJlZSkgeworCQkJLyogQWxsb2NhdGUgdGhlIHNhbWUgcGFnZSBhZ2Fpbi4gKi8KKwkJCXVsaW50 CXBhZ2Vfbm87CisJCQlwYWdlX25vID0gYnRyX3BhZ2VfYWxsb2NfbG93KAorCQkJCWluZGV4LCBi dWZfYmxvY2tfZ2V0X3BhZ2Vfbm8oYmxvY2spLAorCQkJCUZTUF9OT19ESVIsIDAsIG10ciwgTlVM TCk7CisJCQl1dF9hKHBhZ2Vfbm8gPT0gYnVmX2Jsb2NrX2dldF9wYWdlX25vKGJsb2NrKSk7CisJ CX0gZWxzZSB7CisJCQkvKiBBc3NlcnQgdGhhdCB0aGUgcGFnZSBpcyBhbGxvY2F0ZWQgYW5kIGZy ZWUgaXQuICovCisJCQlidHJfcGFnZV9mcmVlX2xvdyhpbmRleCwgYmxvY2ssIDAsIG10cik7CisJ CX0KKwl9CisKKwl1dF9hZChidHJfZnJlZWRfbGVhdmVzX3ZhbGlkYXRlKG10cikpOworfQorCisj aWZkZWYgVU5JVl9ERUJVRworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorVmFsaWRhdGVzIGFsbCBwYWdlcyBtYXJrZWQg TVRSX01FTU9fRlJFRV9DTFVTVF9MRUFGLgorQHNlZSBidHJfbWFya19mcmVlZF9sZWF2ZXMoKQor QHJldHVybiBUUlVFICovCitVTklWX0lOVEVSTgoraWJvb2wKK2J0cl9mcmVlZF9sZWF2ZXNfdmFs aWRhdGUoCisvKj09PT09PT09PT09PT09PT09PT09PT0qLworCW10cl90KgltdHIpCS8qITwgaW46 IG1pbmktdHJhbnNhY3Rpb24gKi8KK3sKKwl1bGludAlvZmZzZXQ7CisKKwl1dF9hZChtdHItPm1h Z2ljX24gPT0gTVRSX01BR0lDX04pOworCXV0X2FkKG10ci0+c3RhdGUgPT0gTVRSX0FDVElWRSk7 CisKKwlvZmZzZXQgPSBkeW5fYXJyYXlfZ2V0X2RhdGFfc2l6ZSgmbXRyLT5tZW1vKTsKKworCXdo aWxlIChvZmZzZXQgPiAwKSB7CisJCWNvbnN0IG10cl9tZW1vX3Nsb3RfdCoJc2xvdDsKKwkJY29u c3QgYnVmX2Jsb2NrX3QqCWJsb2NrOworCisJCW9mZnNldCAtPSBzaXplb2YgKnNsb3Q7CisKKwkJ c2xvdCA9IGR5bl9hcnJheV9nZXRfZWxlbWVudCgmbXRyLT5tZW1vLCBvZmZzZXQpOworCisJCWlm IChzbG90LT50eXBlICE9IE1UUl9NRU1PX0ZSRUVfQ0xVU1RfTEVBRikgeworCQkJY29udGludWU7 CisJCX0KKworCQl1dF9hKG10ci0+ZnJlZWRfY2x1c3RfbGVhZik7CisJCS8qIEJlY2F1c2UgYnRy X3BhZ2VfYWxsb2MoKSBkb2VzIGludm9rZQorCQltdHJfbWVtb19yZWxlYXNlIG9uIE1UUl9NRU1P X0ZSRUVfQ0xVU1RfTEVBRiwgYWxsCisJCWJsb2NrcyB0YWdnZWQgd2l0aCBNVFJfTUVNT19GUkVF X0NMVVNUX0xFQUYgaW4gdGhlCisJCW1lbW8gbXVzdCBzdGlsbCBiZSBjbHVzdGVyZWQgaW5kZXgg bGVhZiB0cmVlIHBhZ2VzLiAqLworCQlibG9jayA9IHNsb3QtPm9iamVjdDsKKwkJdXRfYShmaWxf cGFnZV9nZXRfdHlwZShidWZfYmxvY2tfZ2V0X2ZyYW1lKGJsb2NrKSkKKwkJICAgICA9PSBGSUxf UEFHRV9JTkRFWCk7CisJCXV0X2EocGFnZV9pc19sZWFmKGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxv Y2spKSk7CisJfQorCisJcmV0dXJuKFRSVUUpOwogfQorI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8K IAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgogU2V0cyB0aGUgY2hpbGQgbm9kZSBmaWxlIGFkZHJlc3MgaW4gYSBub2Rl IHBvaW50ZXIuICovCkBAIC0xODEyLDcgKzE5OTAsNyBAQCBidHJfcm9vdF9yYWlzZV9hbmRfaW5z ZXJ0KAogCiAJbGV2ZWwgPSBidHJfcGFnZV9nZXRfbGV2ZWwocm9vdCwgbXRyKTsKIAotCW5ld19i bG9jayA9IGJ0cl9wYWdlX2FsbG9jKGluZGV4LCAwLCBGU1BfTk9fRElSLCBsZXZlbCwgbXRyKTsK KwluZXdfYmxvY2sgPSBidHJfcGFnZV9hbGxvYyhpbmRleCwgMCwgRlNQX05PX0RJUiwgbGV2ZWws IG10ciwgbXRyKTsKIAluZXdfcGFnZSA9IGJ1Zl9ibG9ja19nZXRfZnJhbWUobmV3X2Jsb2NrKTsK IAluZXdfcGFnZV96aXAgPSBidWZfYmxvY2tfZ2V0X3BhZ2VfemlwKG5ld19ibG9jayk7CiAJdXRf YSghbmV3X3BhZ2VfemlwID09ICFyb290X3BhZ2VfemlwKTsKQEAgLTI1NDgsNyArMjcyNiw3IEBA IGZ1bmNfc3RhcnQ6CiAKIAkvKiAyLiBBbGxvY2F0ZSBhIG5ldyBwYWdlIHRvIHRoZSBpbmRleCAq LwogCW5ld19ibG9jayA9IGJ0cl9wYWdlX2FsbG9jKGN1cnNvci0+aW5kZXgsIGhpbnRfcGFnZV9u bywgZGlyZWN0aW9uLAotCQkJCSAgIGJ0cl9wYWdlX2dldF9sZXZlbChwYWdlLCBtdHIpLCBtdHIp OworCQkJCSAgIGJ0cl9wYWdlX2dldF9sZXZlbChwYWdlLCBtdHIpLCBtdHIsIG10cik7CiAJbmV3 X3BhZ2UgPSBidWZfYmxvY2tfZ2V0X2ZyYW1lKG5ld19ibG9jayk7CiAJbmV3X3BhZ2VfemlwID0g YnVmX2Jsb2NrX2dldF9wYWdlX3ppcChuZXdfYmxvY2spOwogCWJ0cl9wYWdlX2NyZWF0ZShuZXdf YmxvY2ssIG5ld19wYWdlX3ppcCwgY3Vyc29yLT5pbmRleCwKCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnRy L2J0cjBjdXIuYwlyZXZpZDpyb2hpdC5rYWxoYW5zQG9yYWNsZS5jb20tMjAxMTA4MjkwNzU5MTgt cjFjNmhobGEyOTEyaXRzZgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA4MjkwODQ1MzAtMDZ0cXdndmNub3RybGN1 ZwpAQCAtMjUzMCwzOSArMjUzMCw2IEBAIHJldHVybl9hZnRlcl9yZXNlcnZhdGlvbnM6CiAJcmV0 dXJuKGVycik7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKLUNvbW1pdHMgYW5kIHJlc3RhcnRzIGEgbWluaS10 cmFuc2FjdGlvbiBzbyB0aGF0IGl0IHdpbGwgcmV0YWluIGFuCi14LWxvY2sgb24gaW5kZXgtPmxv Y2sgYW5kIHRoZSBjdXJzb3IgcGFnZS4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi1idHJfY3VyX210 cl9jb21taXRfYW5kX3N0YXJ0KAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlidHJf Y3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yICovCi0JbXRyX3QqCQltdHIpCS8qITwgaW4v b3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCi17Ci0JYnVmX2Jsb2NrX3QqCWJsb2NrOwotCi0JYmxv Y2sgPSBidHJfY3VyX2dldF9ibG9jayhjdXJzb3IpOwotCi0JdXRfYWQobXRyX21lbW9fY29udGFp bnMobXRyLCBkaWN0X2luZGV4X2dldF9sb2NrKGN1cnNvci0+aW5kZXgpLAotCQkJCU1UUl9NRU1P X1hfTE9DSykpOwotCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKG10ciwgYmxvY2ssIE1UUl9NRU1P X1BBR0VfWF9GSVgpKTsKLQkvKiBLZWVwIHRoZSBsb2NrcyBhY3Jvc3MgdGhlIG10cl9jb21taXQo bXRyKS4gKi8KLQlyd19sb2NrX3hfbG9jayhkaWN0X2luZGV4X2dldF9sb2NrKGN1cnNvci0+aW5k ZXgpKTsKLQlyd19sb2NrX3hfbG9jaygmYmxvY2stPmxvY2spOwotCW11dGV4X2VudGVyKCZibG9j ay0+bXV0ZXgpOwotCWJ1Zl9ibG9ja19idWZfZml4X2luYyhibG9jaywgX19GSUxFX18sIF9fTElO RV9fKTsKLQltdXRleF9leGl0KCZibG9jay0+bXV0ZXgpOwotCS8qIFdyaXRlIG91dCB0aGUgcmVk byBsb2cuICovCi0JbXRyX2NvbW1pdChtdHIpOwotCW10cl9zdGFydChtdHIpOwotCS8qIFJlYXNz b2NpYXRlIHRoZSBsb2NrcyB3aXRoIHRoZSBtaW5pLXRyYW5zYWN0aW9uLgotCVRoZXkgd2lsbCBi ZSByZWxlYXNlZCBvbiBtdHJfY29tbWl0KG10cikuICovCi0JbXRyX21lbW9fcHVzaChtdHIsIGRp Y3RfaW5kZXhfZ2V0X2xvY2soY3Vyc29yLT5pbmRleCksCi0JCSAgICAgIE1UUl9NRU1PX1hfTE9D Syk7Ci0JbXRyX21lbW9fcHVzaChtdHIsIGJsb2NrLCBNVFJfTUVNT19QQUdFX1hfRklYKTsKLX0K LQogLyo9PT09PT09PT09PT09PT09PT09PSBCLVRSRUUgREVMRVRFIE1BUksgQU5EIFVOTUFSSyA9 PT09PT09PT09PT09PT0qLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTQxODksNiArNDE1Niw5IEBAIGJ0 cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYygKIAkJCQkJdGhlICJleHRlcm5hbCBz dG9yYWdlIiBmbGFncyBpbiBvZmZzZXRzCiAJCQkJCXdpbGwgbm90IGNvcnJlc3BvbmQgdG8gcmVj IHdoZW4KIAkJCQkJdGhpcyBmdW5jdGlvbiByZXR1cm5zICovCisJY29uc3QgYmlnX3JlY190KmJp Z19yZWNfdmVjLAkvKiE8IGluOiB2ZWN0b3IgY29udGFpbmluZyBmaWVsZHMKKwkJCQkJdG8gYmUg c3RvcmVkIGV4dGVybmFsbHkgKi8KKwogI2lmZGVmIFVOSVZfREVCVUcKIAltdHJfdCoJCWxvY2Fs X210ciwJLyohPCBpbjogbXRyIGNvbnRhaW5pbmcgdGhlCiAJCQkJCWxhdGNoIHRvIHJlYyBhbmQg dG8gdGhlIHRyZWUgKi8KQEAgLTQxOTcsOSArNDE2NywxMSBAQCBidHJfc3RvcmVfYmlnX3JlY19l eHRlcm5fZmllbGRzX2Z1bmMoCiAJaWJvb2wJCXVwZGF0ZV9pbl9wbGFjZSwvKiEgaW46IFRSVUUg aWYgdGhlIHJlY29yZCBpcyB1cGRhdGVkCiAJCQkJCWluIHBsYWNlIChub3QgZGVsZXRlK2luc2Vy dCkgKi8KICNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLwot CWNvbnN0IGJpZ19yZWNfdCpiaWdfcmVjX3ZlYykJLyohPCBpbjogdmVjdG9yIGNvbnRhaW5pbmcg ZmllbGRzCi0JCQkJCXRvIGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCi0KKwltdHJfdCoJCWFsbG9j X210cikJLyohPCBpbi9vdXQ6IGluIGFuIGluc2VydCwgTlVMTDsKKwkJCQkJaW4gYW4gdXBkYXRl LCBsb2NhbF9tdHIgZm9yCisJCQkJCWFsbG9jYXRpbmcgQkxPQiBwYWdlcyBhbmQKKwkJCQkJdXBk YXRpbmcgQkxPQiBwb2ludGVyczsgYWxsb2NfbXRyCisJCQkJCW11c3Qgbm90IGhhdmUgZnJlZWQg YW55IGxlYWYgcGFnZXMgKi8KIHsKIAl1bGludAlyZWNfcGFnZV9ubzsKIAlieXRlKglmaWVsZF9y ZWY7CkBAIC00MjE4LDYgKzQxOTAsOSBAQCBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRz X2Z1bmMoCiAKIAl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7 CiAJdXRfYWQocmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSk7CisJdXRfYWQobG9jYWxfbXRy KTsKKwl1dF9hZCghYWxsb2NfbXRyIHx8IGFsbG9jX210ciA9PSBsb2NhbF9tdHIpOworCXV0X2Fk KCF1cGRhdGVfaW5fcGxhY2UgfHwgYWxsb2NfbXRyKTsKIAl1dF9hZChtdHJfbWVtb19jb250YWlu cyhsb2NhbF9tdHIsIGRpY3RfaW5kZXhfZ2V0X2xvY2soaW5kZXgpLAogCQkJCU1UUl9NRU1PX1hf TE9DSykpOwogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKGxvY2FsX210ciwgcmVjX2Jsb2NrLCBN VFJfTUVNT19QQUdFX1hfRklYKSk7CkBAIC00MjMzLDYgKzQyMDgsMjUgQEAgYnRyX3N0b3JlX2Jp Z19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKAogCXJlY19wYWdlX25vID0gYnVmX2Jsb2NrX2dldF9w YWdlX25vKHJlY19ibG9jayk7CiAJdXRfYShmaWxfcGFnZV9nZXRfdHlwZShwYWdlX2FsaWduKHJl YykpID09IEZJTF9QQUdFX0lOREVYKTsKIAorCWlmIChhbGxvY19tdHIpIHsKKwkJLyogQmVjYXVz ZSBhbGxvY19tdHIgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIKKwkJbXRyLCBpdCBpcyBwb3NzaWJs ZSB0aGF0IHRoZSB0YWJsZXNwYWNlIGhhcyBiZWVuCisJCWV4dGVuZGVkIHdoZW4gdGhlIEItdHJl ZSByZWNvcmQgd2FzIHVwZGF0ZWQgb3IKKwkJaW5zZXJ0ZWQsIG9yIGl0IHdpbGwgYmUgZXh0ZW5k ZWQgd2hpbGUgYWxsb2NhdGluZworCQlwYWdlcyBmb3IgYmlnX3JlYy4KKworCQlUT0RPOiBJbiBt dHIgKG5vdCBhbGxvY19tdHIpLCB3cml0ZSBhIHJlZG8gbG9nIHJlY29yZAorCQlhYm91dCBleHRl bmRpbmcgdGhlIHRhYmxlc3BhY2UgdG8gaXRzIGN1cnJlbnQgc2l6ZSwKKwkJYW5kIHJlbWVtYmVy IHRoZSBjdXJyZW50IHNpemUuIFdoZW5ldmVyIHRoZSB0YWJsZXNwYWNlCisJCWdyb3dzIGFzIHBh Z2VzIGFyZSBhbGxvY2F0ZWQsIHdyaXRlIGZ1cnRoZXIgcmVkbyBsb2cKKwkJcmVjb3JkcyB0byBt dHIuIChDdXJyZW50bHkgdGFibGVzcGFjZSBleHRlbnNpb24gaXMgbm90CisJCWNvdmVyZWQgYnkg dGhlIHJlZG8gbG9nLiBJZiBpdCB3ZXJlLCB0aGUgcmVjb3JkIHdvdWxkCisJCW9ubHkgYmUgd3Jp dHRlbiB0byBhbGxvY19tdHIsIHdoaWNoIGlzIGNvbW1pdHRlZCBhZnRlcgorCQltdHIuKSAqLwor CX0gZWxzZSB7CisJCWFsbG9jX210ciA9ICZtdHI7CisJfQorCiAJaWYgKFVOSVZfTElLRUxZX05V TEwocGFnZV96aXApKSB7CiAJCWludAllcnI7CiAKQEAgLTQzMDksNyArNDMwMyw3IEBAIGJ0cl9z dG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYygKIAkJCX0KIAogCQkJYmxvY2sgPSBidHJf cGFnZV9hbGxvYyhpbmRleCwgaGludF9wYWdlX25vLAotCQkJCQkgICAgICAgRlNQX05PX0RJUiwg MCwgJm10cik7CisJCQkJCSAgICAgICBGU1BfTk9fRElSLCAwLCBhbGxvY19tdHIsICZtdHIpOwog CQkJaWYgKFVOSVZfVU5MSUtFTFkoYmxvY2sgPT0gTlVMTCkpIHsKIAogCQkJCW10cl9jb21taXQo Jm10cik7CkBAIC00NDM2LDExICs0NDMwLDE1IEBAIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9m aWVsZHNfZnVuYygKIAkJCQkJZ290byBuZXh0X3ppcF9wYWdlOwogCQkJCX0KIAotCQkJCXJlY19i bG9jayA9IGJ1Zl9wYWdlX2dldChzcGFjZV9pZCwgemlwX3NpemUsCi0JCQkJCQkJIHJlY19wYWdl X25vLAotCQkJCQkJCSBSV19YX0xBVENILCAmbXRyKTsKLQkJCQlidWZfYmxvY2tfZGJnX2FkZF9s ZXZlbChyZWNfYmxvY2ssCi0JCQkJCQkJU1lOQ19OT19PUkRFUl9DSEVDSyk7CisJCQkJaWYgKGFs bG9jX210ciA9PSAmbXRyKSB7CisJCQkJCXJlY19ibG9jayA9IGJ1Zl9wYWdlX2dldCgKKwkJCQkJ CXNwYWNlX2lkLCB6aXBfc2l6ZSwKKwkJCQkJCXJlY19wYWdlX25vLAorCQkJCQkJUldfWF9MQVRD SCwgJm10cik7CisJCQkJCWJ1Zl9ibG9ja19kYmdfYWRkX2xldmVsKAorCQkJCQkJcmVjX2Jsb2Nr LAorCQkJCQkJU1lOQ19OT19PUkRFUl9DSEVDSyk7CisJCQkJfQogCiAJCQkJaWYgKGVyciA9PSBa X1NUUkVBTV9FTkQpIHsKIAkJCQkJbWFjaF93cml0ZV90b180KGZpZWxkX3JlZgpAQCAtNDQ3NCw3 ICs0NDcyLDggQEAgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKAogCiAJCQkJ cGFnZV96aXBfd3JpdGVfYmxvYl9wdHIoCiAJCQkJCXBhZ2VfemlwLCByZWMsIGluZGV4LCBvZmZz ZXRzLAotCQkJCQliaWdfcmVjX3ZlYy0+ZmllbGRzW2ldLmZpZWxkX25vLCAmbXRyKTsKKwkJCQkJ YmlnX3JlY192ZWMtPmZpZWxkc1tpXS5maWVsZF9ubywKKwkJCQkJYWxsb2NfbXRyKTsKIAogbmV4 dF96aXBfcGFnZToKIAkJCQlwcmV2X3BhZ2Vfbm8gPSBwYWdlX25vOwpAQCAtNDUxOSwxOSArNDUx OCwyMyBAQCBuZXh0X3ppcF9wYWdlOgogCiAJCQkJZXh0ZXJuX2xlbiAtPSBzdG9yZV9sZW47CiAK LQkJCQlyZWNfYmxvY2sgPSBidWZfcGFnZV9nZXQoc3BhY2VfaWQsIHppcF9zaXplLAotCQkJCQkJ CSByZWNfcGFnZV9ubywKLQkJCQkJCQkgUldfWF9MQVRDSCwgJm10cik7Ci0JCQkJYnVmX2Jsb2Nr X2RiZ19hZGRfbGV2ZWwocmVjX2Jsb2NrLAotCQkJCQkJCVNZTkNfTk9fT1JERVJfQ0hFQ0spOwor CQkJCWlmIChhbGxvY19tdHIgPT0gJm10cikgeworCQkJCQlyZWNfYmxvY2sgPSBidWZfcGFnZV9n ZXQoCisJCQkJCQlzcGFjZV9pZCwgemlwX3NpemUsCisJCQkJCQlyZWNfcGFnZV9ubywKKwkJCQkJ CVJXX1hfTEFUQ0gsICZtdHIpOworCQkJCQlidWZfYmxvY2tfZGJnX2FkZF9sZXZlbCgKKwkJCQkJ CXJlY19ibG9jaywKKwkJCQkJCVNZTkNfTk9fT1JERVJfQ0hFQ0spOworCQkJCX0KIAogCQkJCW1s b2dfd3JpdGVfdWxpbnQoZmllbGRfcmVmICsgQlRSX0VYVEVSTl9MRU4sIDAsCi0JCQkJCQkgTUxP R180QllURVMsICZtdHIpOworCQkJCQkJIE1MT0dfNEJZVEVTLCBhbGxvY19tdHIpOwogCQkJCW1s b2dfd3JpdGVfdWxpbnQoZmllbGRfcmVmCiAJCQkJCQkgKyBCVFJfRVhURVJOX0xFTiArIDQsCiAJ CQkJCQkgYmlnX3JlY192ZWMtPmZpZWxkc1tpXS5sZW4KIAkJCQkJCSAtIGV4dGVybl9sZW4sCi0J CQkJCQkgTUxPR180QllURVMsICZtdHIpOworCQkJCQkJIE1MT0dfNEJZVEVTLCBhbGxvY19tdHIp OwogCiAJCQkJaWYgKHByZXZfcGFnZV9ubyA9PSBGSUxfTlVMTCkgewogCQkJCQlidHJfYmxvYl9k YmdfYWRkX2Jsb2IoCkBAIC00NTQxLDE4ICs0NTQ0LDE5IEBAIG5leHRfemlwX3BhZ2U6CiAKIAkJ CQkJbWxvZ193cml0ZV91bGludChmaWVsZF9yZWYKIAkJCQkJCQkgKyBCVFJfRVhURVJOX1NQQUNF X0lELAotCQkJCQkJCSBzcGFjZV9pZCwKLQkJCQkJCQkgTUxPR180QllURVMsICZtdHIpOworCQkJ CQkJCSBzcGFjZV9pZCwgTUxPR180QllURVMsCisJCQkJCQkJIGFsbG9jX210cik7CiAKIAkJCQkJ bWxvZ193cml0ZV91bGludChmaWVsZF9yZWYKIAkJCQkJCQkgKyBCVFJfRVhURVJOX1BBR0VfTk8s Ci0JCQkJCQkJIHBhZ2Vfbm8sCi0JCQkJCQkJIE1MT0dfNEJZVEVTLCAmbXRyKTsKKwkJCQkJCQkg cGFnZV9ubywgTUxPR180QllURVMsCisJCQkJCQkJIGFsbG9jX210cik7CiAKIAkJCQkJbWxvZ193 cml0ZV91bGludChmaWVsZF9yZWYKIAkJCQkJCQkgKyBCVFJfRVhURVJOX09GRlNFVCwKIAkJCQkJ CQkgRklMX1BBR0VfREFUQSwKLQkJCQkJCQkgTUxPR180QllURVMsICZtdHIpOworCQkJCQkJCSBN TE9HXzRCWVRFUywKKwkJCQkJCQkgYWxsb2NfbXRyKTsKIAkJCQl9CiAKIAkJCQlwcmV2X3BhZ2Vf bm8gPSBwYWdlX25vOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1 ZjBidWYuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1Zi5jCXJldmlkOnJvaGl0 LmthbGhhbnNAb3JhY2xlLmNvbS0yMDExMDgyOTA3NTkxOC1yMWM2aGhsYTI5MTJpdHNmCisrKyBi L3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMDgyOTA4NDUzMC0wNnRxd2d2Y25vdHJsY3VnCkBAIC0xNzk2LDM0ICsxNzk2LDYg QEAgYnVmX3BhZ2Vfc2V0X2FjY2Vzc2VkX21ha2VfeW91bmcoCiB9CiAKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKLVJlc2V0cyB0aGUgY2hlY2tfaW5kZXhfcGFnZV9hdF9mbHVzaCBmaWVsZCBvZiBhIHBhZ2Ug aWYgZm91bmQgaW4gdGhlIGJ1ZmZlcgotcG9vbC4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi1idWZf cmVzZXRfY2hlY2tfaW5kZXhfcGFnZV9hdF9mbHVzaCgKLS8qPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0qLwotCXVsaW50CXNwYWNlLAkvKiE8IGluOiBzcGFjZSBpZCAqLwotCXVsaW50 CW9mZnNldCkJLyohPCBpbjogcGFnZSBudW1iZXIgKi8KLXsKLQlidWZfYmxvY2tfdCoJYmxvY2s7 Ci0JYnVmX3Bvb2xfdCoJYnVmX3Bvb2wgPSBidWZfcG9vbF9nZXQoc3BhY2UsIG9mZnNldCk7Ci0J cndfbG9ja190KgloYXNoX2xvY2s7Ci0KLQlibG9jayA9IGJ1Zl9ibG9ja19oYXNoX2dldF9zX2xv Y2tlZChidWZfcG9vbCwgc3BhY2UsIG9mZnNldCwKLQkJCQkJICAgICZoYXNoX2xvY2spOwotCi0J aWYgKGJsb2NrKSB7Ci0JCWlmIChidWZfYmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSA9PSBCVUZfQkxP Q0tfRklMRV9QQUdFKSB7Ci0JCQl1dF9hZCghYnVmX3Bvb2xfd2F0Y2hfaXNfc2VudGluZWwoYnVm X3Bvb2wsCi0JCQkJCQkJICAmYmxvY2stPnBhZ2UpKTsKLQkJCWJsb2NrLT5jaGVja19pbmRleF9w YWdlX2F0X2ZsdXNoID0gRkFMU0U7Ci0JCX0KLQotCQlyd19sb2NrX3NfdW5sb2NrKGhhc2hfbG9j ayk7Ci0JfQotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRl IG9mIGlzX2hhc2hlZCBvZiBhIHBhZ2UuIEZBTFNFIGlmIHRoZSBwYWdlIGlzCiBub3QgaW4gdGhl IHBvb2wuIE5PVEUgdGhhdCB0aGlzIG9wZXJhdGlvbiBkb2VzIG5vdCBmaXggdGhlIHBhZ2UgaW4g dGhlCiBwb29sIGlmIGl0IGlzIGZvdW5kIHRoZXJlLgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3Jh Z2UvaW5ub2Jhc2UvZnNwL2ZzcDBmc3AuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9mc3AvZnNw MGZzcC5jCXJldmlkOnJvaGl0LmthbGhhbnNAb3JhY2xlLmNvbS0yMDExMDgyOTA3NTkxOC1yMWM2 aGhsYTI5MTJpdHNmCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvZnNwL2ZzcDBmc3AuYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDgyOTA4NDUzMC0wNnRxd2d2Y25vdHJsY3VnCkBA IC0zMTIsOCArMzEyLDkgQEAgZnNwX2ZpbGxfZnJlZV9saXN0KAogCQkJCQlkZXNjcmlwdG9yIHBh Z2UgYW5kIGlidWYgYml0bWFwIHBhZ2U7CiAJCQkJCXRoZW4gd2UgZG8gbm90IGFsbG9jYXRlIG1v cmUgZXh0ZW50cyAqLwogCXVsaW50CQlzcGFjZSwJCS8qITwgaW46IHNwYWNlICovCi0JZnNwX2hl YWRlcl90KgloZWFkZXIsCQkvKiE8IGluOiBzcGFjZSBoZWFkZXIgKi8KLQltdHJfdCoJCW10cik7 CQkvKiE8IGluOiBtdHIgKi8KKwlmc3BfaGVhZGVyX3QqCWhlYWRlciwJCS8qITwgaW4vb3V0OiBz cGFjZSBoZWFkZXIgKi8KKwltdHJfdCoJCW10cikJCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0 aW9uICovCisJVU5JVl9DT0xEIF9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgogQWxsb2NhdGVzIGEgc2luZ2xlIGZyZWUgcGFnZSBmcm9tIGEgc2VnbWVudC4gVGhp cyBmdW5jdGlvbiBpbXBsZW1lbnRzCiB0aGUgaW50ZWxsaWdlbnQgYWxsb2NhdGlvbiBzdHJhdGVn eSB3aGljaCB0cmllcyB0byBtaW5pbWl6ZSBmaWxlIHNwYWNlCkBAIC0zMjYsMTQgKzMyNywyMCBA QCBmc2VnX2FsbG9jX2ZyZWVfcGFnZV9sb3coCiAJdWxpbnQJCXNwYWNlLAkvKiE8IGluOiBzcGFj ZSAqLwogCXVsaW50CQl6aXBfc2l6ZSwvKiE8IGluOiBjb21wcmVzc2VkIHBhZ2Ugc2l6ZSBpbiBi eXRlcwogCQkJCW9yIDAgZm9yIHVuY29tcHJlc3NlZCBwYWdlcyAqLwotCWZzZWdfaW5vZGVfdCoJ c2VnX2lub2RlLCAvKiE8IGluOiBzZWdtZW50IGlub2RlICovCisJZnNlZ19pbm9kZV90KglzZWdf aW5vZGUsIC8qITwgaW4vb3V0OiBzZWdtZW50IGlub2RlICovCiAJdWxpbnQJCWhpbnQsCS8qITwg aW46IGhpbnQgb2Ygd2hpY2ggcGFnZSB3b3VsZCBiZSBkZXNpcmFibGUgKi8KIAlieXRlCQlkaXJl Y3Rpb24sIC8qITwgaW46IGlmIHRoZSBuZXcgcGFnZSBpcyBuZWVkZWQgYmVjYXVzZQogCQkJCW9m IGFuIGluZGV4IHBhZ2Ugc3BsaXQsIGFuZCByZWNvcmRzIGFyZQogCQkJCWluc2VydGVkIHRoZXJl IGluIG9yZGVyLCBpbnRvIHdoaWNoCiAJCQkJZGlyZWN0aW9uIHRoZXkgZ28gYWxwaGFiZXRpY2Fs bHk6IEZTUF9ET1dOLAogCQkJCUZTUF9VUCwgRlNQX05PX0RJUiAqLwotCW10cl90KgkJbXRyKTsJ LyohPCBpbjogbXRyIGhhbmRsZSAqLworCW10cl90KgkJbXRyLAkvKiE8IGluL291dDogbWluaS10 cmFuc2FjdGlvbiAqLworCW10cl90KgkJaW5pdF9tdHIpLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNh Y3Rpb24gaW4gd2hpY2ggdGhlCisJCQkJcGFnZSBzaG91bGQgYmUgaW5pdGlhbGl6ZWQKKwkJCQko bWF5IGJlIHRoZSBzYW1lIGFzIG10ciksIG9yIE5VTEwgaWYgaXQKKwkJCQlzaG91bGQgbm90IGJl IGluaXRpYWxpemVkICh0aGUgcGFnZSBhdCBoaW50CisJCQkJd2FzIHByZXZpb3VzbHkgZnJlZWQg aW4gbXRyKSAqLworCV9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCwgbm9ubnVsbCgz LDYpKSk7CiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgpAQCAtNzAxLDE3ICs3MDgsMTggQEAgbGlzdCwgaWYgbm90IGZyZWUgbGltaXQgPT0gc3BhY2Ug c2l6ZS4gVAogZGVzY3JpcHRvciBkZWZpbmVkLCBhcyB0aGV5IGFyZSB1bmluaXRpYWxpemVkIGFi b3ZlIHRoZSBmcmVlIGxpbWl0LgogQHJldHVybiBwb2ludGVyIHRvIHRoZSBleHRlbnQgZGVzY3Jp cHRvciwgTlVMTCBpZiB0aGUgcGFnZSBkb2VzIG5vdAogZXhpc3QgaW4gdGhlIHNwYWNlIG9yIGlm IHRoZSBvZmZzZXQgZXhjZWVkcyB0aGUgZnJlZSBsaW1pdCAqLwotVU5JVl9JTkxJTkUKK1VOSVZf SU5MSU5FIF9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpCiB4ZGVz X3QqCiB4ZGVzX2dldF9kZXNjcmlwdG9yX3dpdGhfc3BhY2VfaGRyKAogLyo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KLQlmc3BfaGVhZGVyX3QqCXNwX2hlYWRlciwvKiE8IGluL291 dDogc3BhY2UgaGVhZGVyLCB4LWxhdGNoZWQgKi8KLQl1bGludAkJc3BhY2UsCS8qITwgaW46IHNw YWNlIGlkICovCi0JdWxpbnQJCW9mZnNldCwJLyohPCBpbjogcGFnZSBvZmZzZXQ7Ci0JCQkJaWYg ZXF1YWwgdG8gdGhlIGZyZWUgbGltaXQsCi0JCQkJd2UgdHJ5IHRvIGFkZCBuZXcgZXh0ZW50cyB0 bwotCQkJCXRoZSBzcGFjZSBmcmVlIGxpc3QgKi8KLQltdHJfdCoJCW10cikJLyohPCBpbjogbXRy IGhhbmRsZSAqLworCWZzcF9oZWFkZXJfdCoJc3BfaGVhZGVyLAkvKiE8IGluL291dDogc3BhY2Ug aGVhZGVyLCB4LWxhdGNoZWQKKwkJCQkJaW4gbXRyICovCisJdWxpbnQJCXNwYWNlLAkJLyohPCBp bjogc3BhY2UgaWQgKi8KKwl1bGludAkJb2Zmc2V0LAkJLyohPCBpbjogcGFnZSBvZmZzZXQ7IGlm IGVxdWFsCisJCQkJCXRvIHRoZSBmcmVlIGxpbWl0LCB3ZSB0cnkgdG8KKwkJCQkJYWRkIG5ldyBl eHRlbnRzIHRvIHRoZSBzcGFjZQorCQkJCQlmcmVlIGxpc3QgKi8KKwltdHJfdCoJCW10cikJCS8q ITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCiB7CiAJdWxpbnQJbGltaXQ7CiAJdWxpbnQJ c2l6ZTsKQEAgLTcxOSwxMSArNzI3LDkgQEAgeGRlc19nZXRfZGVzY3JpcHRvcl93aXRoX3NwYWNl X2hkcigKIAl1bGludAlkZXNjcl9wYWdlX25vOwogCXBhZ2VfdCoJZGVzY3JfcGFnZTsKIAotCXV0 X2FkKG10cik7CiAJdXRfYWQobXRyX21lbW9fY29udGFpbnMobXRyLCBmaWxfc3BhY2VfZ2V0X2xh dGNoKHNwYWNlLCBOVUxMKSwKIAkJCQlNVFJfTUVNT19YX0xPQ0spKTsKLQl1dF9hZChtdHJfbWVt b19jb250YWluc19wYWdlKG10ciwgc3BfaGVhZGVyLCBNVFJfTUVNT19QQUdFX1NfRklYKQotCSAg ICAgIHx8IG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCBzcF9oZWFkZXIsIE1UUl9NRU1PX1BB R0VfWF9GSVgpKTsKKwl1dF9hZChtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgc3BfaGVhZGVy LCBNVFJfTUVNT19QQUdFX1hfRklYKSk7CiAJdXRfYWQocGFnZV9vZmZzZXQoc3BfaGVhZGVyKSA9 PSBGU1BfSEVBREVSX09GRlNFVCk7CiAJLyogUmVhZCBmcmVlIGxpbWl0IGFuZCBzcGFjZSBzaXpl ICovCiAJbGltaXQgPSBtYWNoX3JlYWRfZnJvbV80KHNwX2hlYWRlciArIEZTUF9GUkVFX0xJTUlU KTsKQEAgLTc3Myw3ICs3NzksNyBAQCBpcyBuZWNlc3NhcnkgdG8gbWFrZSB0aGUgZGVzY3JpcHRv ciBkZWZpCiBhYm92ZSB0aGUgZnJlZSBsaW1pdC4KIEByZXR1cm4gcG9pbnRlciB0byB0aGUgZXh0 ZW50IGRlc2NyaXB0b3IsIE5VTEwgaWYgdGhlIHBhZ2UgZG9lcyBub3QKIGV4aXN0IGluIHRoZSBz cGFjZSBvciBpZiB0aGUgb2Zmc2V0IGV4Y2VlZHMgdGhlIGZyZWUgbGltaXQgKi8KLXN0YXRpYwor c3RhdGljIF9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpCiB4ZGVz X3QqCiB4ZGVzX2dldF9kZXNjcmlwdG9yKAogLyo9PT09PT09PT09PT09PT09Ki8KQEAgLTc4Miw3 ICs3ODgsNyBAQCB4ZGVzX2dldF9kZXNjcmlwdG9yKAogCQkJb3IgMCBmb3IgdW5jb21wcmVzc2Vk IHBhZ2VzICovCiAJdWxpbnQJb2Zmc2V0LAkvKiE8IGluOiBwYWdlIG9mZnNldDsgaWYgZXF1YWwg dG8gdGhlIGZyZWUgbGltaXQsCiAJCQl3ZSB0cnkgdG8gYWRkIG5ldyBleHRlbnRzIHRvIHRoZSBz cGFjZSBmcmVlIGxpc3QgKi8KLQltdHJfdCoJbXRyKQkvKiE8IGluOiBtdHIgaGFuZGxlICovCisJ bXRyX3QqCW10cikJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KIHsKIAlidWZfYmxv Y2tfdCoJYmxvY2s7CiAJZnNwX2hlYWRlcl90KglzcF9oZWFkZXI7CkBAIC0xMTI4LDE0ICsxMTM0 LDE0IEBAIGZzcF9oZWFkZXJfZ2V0X3RhYmxlc3BhY2Vfc2l6ZSh2b2lkKQogVHJpZXMgdG8gZXh0 ZW5kIGEgc2luZ2xlLXRhYmxlIHRhYmxlc3BhY2Ugc28gdGhhdCBhIHBhZ2Ugd291bGQgZml0IGlu IHRoZQogZGF0YSBmaWxlLgogQHJldHVybglUUlVFIGlmIHN1Y2Nlc3MgKi8KLXN0YXRpYworc3Rh dGljIFVOSVZfQ09MRCBfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQp KQogaWJvb2wKIGZzcF90cnlfZXh0ZW5kX2RhdGFfZmlsZV93aXRoX3BhZ2VzKAogLyo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJdWxpbnQJCXNwYWNlLAkJLyohPCBpbjogc3Bh Y2UgKi8KIAl1bGludAkJcGFnZV9ubywJLyohPCBpbjogcGFnZSBudW1iZXIgKi8KLQlmc3BfaGVh ZGVyX3QqCWhlYWRlciwJCS8qITwgaW46IHNwYWNlIGhlYWRlciAqLwotCW10cl90KgkJbXRyKQkJ LyohPCBpbjogbXRyICovCisJZnNwX2hlYWRlcl90KgloZWFkZXIsCQkvKiE8IGluL291dDogc3Bh Y2UgaGVhZGVyICovCisJbXRyX3QqCQltdHIpCQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlv biAqLwogewogCWlib29sCXN1Y2Nlc3M7CiAJdWxpbnQJYWN0dWFsX3NpemU7CkBAIC0xMTYwLDcg KzExNjYsNyBAQCBmc3BfdHJ5X2V4dGVuZF9kYXRhX2ZpbGVfd2l0aF9wYWdlcygKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIFRyaWVzIHRvIGV4dGVuZCB0aGUgbGFzdCBkYXRhIGZpbGUgb2YgYSB0YWJs ZXNwYWNlIGlmIGl0IGlzIGF1dG8tZXh0ZW5kaW5nLgogQHJldHVybglGQUxTRSBpZiBub3QgYXV0 by1leHRlbmRpbmcgKi8KLXN0YXRpYworc3RhdGljIFVOSVZfQ09MRCBfX2F0dHJpYnV0ZV9fKChu b25udWxsKSkKIGlib29sCiBmc3BfdHJ5X2V4dGVuZF9kYXRhX2ZpbGUoCiAvKj09PT09PT09PT09 PT09PT09PT09PSovCkBAIC0xMTcwLDggKzExNzYsOCBAQCBmc3BfdHJ5X2V4dGVuZF9kYXRhX2Zp bGUoCiAJCQkJCXRoZSBhY3R1YWwgZmlsZSBzaXplIHJvdW5kZWQgZG93biB0bwogCQkJCQltZWdh Ynl0ZSAqLwogCXVsaW50CQlzcGFjZSwJCS8qITwgaW46IHNwYWNlICovCi0JZnNwX2hlYWRlcl90 KgloZWFkZXIsCQkvKiE8IGluOiBzcGFjZSBoZWFkZXIgKi8KLQltdHJfdCoJCW10cikJCS8qITwg aW46IG10ciAqLworCWZzcF9oZWFkZXJfdCoJaGVhZGVyLAkJLyohPCBpbi9vdXQ6IHNwYWNlIGhl YWRlciAqLworCW10cl90KgkJbXRyKQkJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8K IHsKIAl1bGludAlzaXplOwogCXVsaW50CXppcF9zaXplOwpAQCAtMTMwNyw3ICsxMzEzLDcgQEAg ZnNwX2ZpbGxfZnJlZV9saXN0KAogCQkJCQl0aGVuIHdlIGRvIG5vdCBhbGxvY2F0ZSBtb3JlIGV4 dGVudHMgKi8KIAl1bGludAkJc3BhY2UsCQkvKiE8IGluOiBzcGFjZSAqLwogCWZzcF9oZWFkZXJf dCoJaGVhZGVyLAkJLyohPCBpbi9vdXQ6IHNwYWNlIGhlYWRlciAqLwotCW10cl90KgkJbXRyKQkJ LyohPCBpbjogbXRyICovCisJbXRyX3QqCQltdHIpCQkvKiE8IGluL291dDogbWluaS10cmFuc2Fj dGlvbiAqLwogewogCXVsaW50CWxpbWl0OwogCXVsaW50CXNpemU7CkBAIC0xNDk3LDkgKzE1MDMs NDYgQEAgZnNwX2FsbG9jX2ZyZWVfZXh0ZW50KAogfQogCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0Fs bG9jYXRlcyBhIHNpbmdsZSBmcmVlIHBhZ2UgZnJvbSBhIHNwYWNlLiAqLworc3RhdGljIF9fYXR0 cmlidXRlX18oKG5vbm51bGwpKQordm9pZAorZnNwX2FsbG9jX2Zyb21fZnJlZV9mcmFnKAorLyo9 PT09PT09PT09PT09PT09PT09PT0qLworCWZzcF9oZWFkZXJfdCoJaGVhZGVyLAkvKiE8IGluL291 dDogdGFibGVzcGFjZSBoZWFkZXIgKi8KKwl4ZGVzX3QqCQlkZXNjciwJLyohPCBpbi9vdXQ6IGV4 dGVudCBkZXNjcmlwdG9yICovCisJdWxpbnQJCWJpdCwJLyohPCBpbjogc2xvdCB0byBhbGxvY2F0 ZSBpbiB0aGUgZXh0ZW50ICovCisJbXRyX3QqCQltdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5z YWN0aW9uICovCit7CisJdWxpbnQJCWZyYWdfbl91c2VkOworCisJdXRfYWQoeGRlc19nZXRfc3Rh dGUoZGVzY3IsIG10cikgPT0gWERFU19GUkVFX0ZSQUcpOworCXV0X2EoeGRlc19nZXRfYml0KGRl c2NyLCBYREVTX0ZSRUVfQklULCBiaXQsIG10cikpOworCXhkZXNfc2V0X2JpdChkZXNjciwgWERF U19GUkVFX0JJVCwgYml0LCBGQUxTRSwgbXRyKTsKKworCS8qIFVwZGF0ZSB0aGUgRlJBR19OX1VT RUQgZmllbGQgKi8KKwlmcmFnX25fdXNlZCA9IG10cl9yZWFkX3VsaW50KGhlYWRlciArIEZTUF9G UkFHX05fVVNFRCwgTUxPR180QllURVMsCisJCQkJICAgICBtdHIpOworCWZyYWdfbl91c2VkKys7 CisJbWxvZ193cml0ZV91bGludChoZWFkZXIgKyBGU1BfRlJBR19OX1VTRUQsIGZyYWdfbl91c2Vk LCBNTE9HXzRCWVRFUywKKwkJCSBtdHIpOworCWlmICh4ZGVzX2lzX2Z1bGwoZGVzY3IsIG10cikp IHsKKwkJLyogVGhlIGZyYWdtZW50IGlzIGZ1bGw6IG1vdmUgaXQgdG8gYW5vdGhlciBsaXN0ICov CisJCWZsc3RfcmVtb3ZlKGhlYWRlciArIEZTUF9GUkVFX0ZSQUcsIGRlc2NyICsgWERFU19GTFNU X05PREUsCisJCQkgICAgbXRyKTsKKwkJeGRlc19zZXRfc3RhdGUoZGVzY3IsIFhERVNfRlVMTF9G UkFHLCBtdHIpOworCisJCWZsc3RfYWRkX2xhc3QoaGVhZGVyICsgRlNQX0ZVTExfRlJBRywgZGVz Y3IgKyBYREVTX0ZMU1RfTk9ERSwKKwkJCSAgICAgIG10cik7CisJCW1sb2dfd3JpdGVfdWxpbnQo aGVhZGVyICsgRlNQX0ZSQUdfTl9VU0VELAorCQkJCSBmcmFnX25fdXNlZCAtIEZTUF9FWFRFTlRf U0laRSwgTUxPR180QllURVMsCisJCQkJIG10cik7CisJfQorfQorCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKIEFsbG9jYXRlcyBhIHNpbmdsZSBmcmVlIHBhZ2UgZnJvbSBhIHNwYWNlLiBUaGUgcGFnZSBp cyBtYXJrZWQgYXMgdXNlZC4KIEByZXR1cm4JdGhlIHBhZ2Ugb2Zmc2V0LCBGSUxfTlVMTCBpZiBu byBwYWdlIGNvdWxkIGJlIGFsbG9jYXRlZCAqLwotc3RhdGljCitzdGF0aWMgX19hdHRyaWJ1dGVf Xygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSkKIHVsaW50CiBmc3BfYWxsb2NfZnJlZV9w YWdlKAogLyo9PT09PT09PT09PT09PT09Ki8KQEAgLTE1MDcsMTkgKzE1NTAsMjIgQEAgZnNwX2Fs bG9jX2ZyZWVfcGFnZSgKIAl1bGludAl6aXBfc2l6ZSwvKiE8IGluOiBjb21wcmVzc2VkIHBhZ2Ug c2l6ZSBpbiBieXRlcwogCQkJb3IgMCBmb3IgdW5jb21wcmVzc2VkIHBhZ2VzICovCiAJdWxpbnQJ aGludCwJLyohPCBpbjogaGludCBvZiB3aGljaCBwYWdlIHdvdWxkIGJlIGRlc2lyYWJsZSAqLwot CW10cl90KgltdHIpCS8qITwgaW46IG10ciBoYW5kbGUgKi8KKwltdHJfdCoJbXRyLAkvKiE8IGlu L291dDogbWluaS10cmFuc2FjdGlvbiAqLworCW10cl90Kglpbml0X210cikvKiE8IGluL291dDog bWluaS10cmFuc2FjdGlvbiBpbiB3aGljaCB0aGUKKwkJCXBhZ2Ugc2hvdWxkIGJlIGluaXRpYWxp emVkCisJCQkobWF5IGJlIHRoZSBzYW1lIGFzIG10cikgKi8KIHsKIAlmc3BfaGVhZGVyX3QqCWhl YWRlcjsKIAlmaWxfYWRkcl90CWZpcnN0OwogCXhkZXNfdCoJCWRlc2NyOwogCWJ1Zl9ibG9ja190 KglibG9jazsKIAl1bGludAkJZnJlZTsKLQl1bGludAkJZnJhZ19uX3VzZWQ7CiAJdWxpbnQJCXBh Z2Vfbm87CiAJdWxpbnQJCXNwYWNlX3NpemU7CiAJaWJvb2wJCXN1Y2Nlc3M7CiAKIAl1dF9hZCht dHIpOworCXV0X2FkKGluaXRfbXRyKTsKIAogCWhlYWRlciA9IGZzcF9nZXRfc3BhY2VfaGVhZGVy KHNwYWNlLCB6aXBfc2l6ZSwgbXRyKTsKIApAQCAtMTYwMSwzOCArMTY0NywxOSBAQCBmc3BfYWxs b2NfZnJlZV9wYWdlKAogCQl9CiAJfQogCi0JeGRlc19zZXRfYml0KGRlc2NyLCBYREVTX0ZSRUVf QklULCBmcmVlLCBGQUxTRSwgbXRyKTsKLQotCS8qIFVwZGF0ZSB0aGUgRlJBR19OX1VTRUQgZmll bGQgKi8KLQlmcmFnX25fdXNlZCA9IG10cl9yZWFkX3VsaW50KGhlYWRlciArIEZTUF9GUkFHX05f VVNFRCwgTUxPR180QllURVMsCi0JCQkJICAgICBtdHIpOwotCWZyYWdfbl91c2VkKys7Ci0JbWxv Z193cml0ZV91bGludChoZWFkZXIgKyBGU1BfRlJBR19OX1VTRUQsIGZyYWdfbl91c2VkLCBNTE9H XzRCWVRFUywKLQkJCSBtdHIpOwotCWlmICh4ZGVzX2lzX2Z1bGwoZGVzY3IsIG10cikpIHsKLQkJ LyogVGhlIGZyYWdtZW50IGlzIGZ1bGw6IG1vdmUgaXQgdG8gYW5vdGhlciBsaXN0ICovCi0JCWZs c3RfcmVtb3ZlKGhlYWRlciArIEZTUF9GUkVFX0ZSQUcsIGRlc2NyICsgWERFU19GTFNUX05PREUs Ci0JCQkgICAgbXRyKTsKLQkJeGRlc19zZXRfc3RhdGUoZGVzY3IsIFhERVNfRlVMTF9GUkFHLCBt dHIpOwotCi0JCWZsc3RfYWRkX2xhc3QoaGVhZGVyICsgRlNQX0ZVTExfRlJBRywgZGVzY3IgKyBY REVTX0ZMU1RfTk9ERSwKLQkJCSAgICAgIG10cik7Ci0JCW1sb2dfd3JpdGVfdWxpbnQoaGVhZGVy ICsgRlNQX0ZSQUdfTl9VU0VELAotCQkJCSBmcmFnX25fdXNlZCAtIEZTUF9FWFRFTlRfU0laRSwg TUxPR180QllURVMsCi0JCQkJIG10cik7Ci0JfQorCWZzcF9hbGxvY19mcm9tX2ZyZWVfZnJhZyho ZWFkZXIsIGRlc2NyLCBmcmVlLCBtdHIpOwogCiAJLyogSW5pdGlhbGl6ZSB0aGUgYWxsb2NhdGVk IHBhZ2UgdG8gdGhlIGJ1ZmZlciBwb29sLCBzbyB0aGF0IGl0IGNhbgogCWJlIG9idGFpbmVkIGlt bWVkaWF0ZWx5IHdpdGggYnVmX3BhZ2VfZ2V0IHdpdGhvdXQgbmVlZCBmb3IgYSBkaXNrCiAJcmVh ZC4gKi8KIAotCWJ1Zl9wYWdlX2NyZWF0ZShzcGFjZSwgcGFnZV9ubywgemlwX3NpemUsIG10cik7 CisJYnVmX3BhZ2VfY3JlYXRlKHNwYWNlLCBwYWdlX25vLCB6aXBfc2l6ZSwgaW5pdF9tdHIpOwog Ci0JYmxvY2sgPSBidWZfcGFnZV9nZXQoc3BhY2UsIHppcF9zaXplLCBwYWdlX25vLCBSV19YX0xB VENILCBtdHIpOworCWJsb2NrID0gYnVmX3BhZ2VfZ2V0KHNwYWNlLCB6aXBfc2l6ZSwgcGFnZV9u bywgUldfWF9MQVRDSCwgaW5pdF9tdHIpOwogCWJ1Zl9ibG9ja19kYmdfYWRkX2xldmVsKGJsb2Nr LCBTWU5DX0ZTUF9QQUdFKTsKIAogCS8qIFByaW9yIGNvbnRlbnRzIG9mIHRoZSBwYWdlIHNob3Vs ZCBiZSBpZ25vcmVkICovCi0JZnNwX2luaXRfZmlsZV9wYWdlKGJsb2NrLCBtdHIpOworCWZzcF9p bml0X2ZpbGVfcGFnZShibG9jaywgaW5pdF9tdHIpOwogCiAJcmV0dXJuKHBhZ2Vfbm8pOwogfQpA QCAtMTg2OCw3ICsxODk1LDcgQEAgZnNwX2FsbG9jX3NlZ19pbm9kZV9wYWdlKAogCXppcF9zaXpl ID0gZGljdF90YWJsZV9mbGFnc190b196aXBfc2l6ZSgKIAkJbWFjaF9yZWFkX2Zyb21fNChGU1Bf U1BBQ0VfRkxBR1MgKyBzcGFjZV9oZWFkZXIpKTsKIAotCXBhZ2Vfbm8gPSBmc3BfYWxsb2NfZnJl ZV9wYWdlKHNwYWNlLCB6aXBfc2l6ZSwgMCwgbXRyKTsKKwlwYWdlX25vID0gZnNwX2FsbG9jX2Zy ZWVfcGFnZShzcGFjZSwgemlwX3NpemUsIDAsIG10ciwgbXRyKTsKIAogCWlmIChwYWdlX25vID09 IEZJTF9OVUxMKSB7CiAKQEAgLTIyNzcsNyArMjMwNCw3IEBAIGZzZWdfY3JlYXRlX2dlbmVyYWwo CiAKIAlpZiAocGFnZSA9PSAwKSB7CiAJCXBhZ2UgPSBmc2VnX2FsbG9jX2ZyZWVfcGFnZV9sb3co c3BhY2UsIHppcF9zaXplLAotCQkJCQkJaW5vZGUsIDAsIEZTUF9VUCwgbXRyKTsKKwkJCQkJCWlu b2RlLCAwLCBGU1BfVVAsIG10ciwgbXRyKTsKIAogCQlpZiAocGFnZSA9PSBGSUxfTlVMTCkgewog CkBAIC0yNTIzLDE0ICsyNTUwLDE5IEBAIGZzZWdfYWxsb2NfZnJlZV9wYWdlX2xvdygKIAl1bGlu dAkJc3BhY2UsCS8qITwgaW46IHNwYWNlICovCiAJdWxpbnQJCXppcF9zaXplLC8qITwgaW46IGNv bXByZXNzZWQgcGFnZSBzaXplIGluIGJ5dGVzCiAJCQkJb3IgMCBmb3IgdW5jb21wcmVzc2VkIHBh Z2VzICovCi0JZnNlZ19pbm9kZV90KglzZWdfaW5vZGUsIC8qITwgaW46IHNlZ21lbnQgaW5vZGUg Ki8KKwlmc2VnX2lub2RlX3QqCXNlZ19pbm9kZSwgLyohPCBpbi9vdXQ6IHNlZ21lbnQgaW5vZGUg Ki8KIAl1bGludAkJaGludCwJLyohPCBpbjogaGludCBvZiB3aGljaCBwYWdlIHdvdWxkIGJlIGRl c2lyYWJsZSAqLwogCWJ5dGUJCWRpcmVjdGlvbiwgLyohPCBpbjogaWYgdGhlIG5ldyBwYWdlIGlz IG5lZWRlZCBiZWNhdXNlCiAJCQkJb2YgYW4gaW5kZXggcGFnZSBzcGxpdCwgYW5kIHJlY29yZHMg YXJlCiAJCQkJaW5zZXJ0ZWQgdGhlcmUgaW4gb3JkZXIsIGludG8gd2hpY2gKIAkJCQlkaXJlY3Rp b24gdGhleSBnbyBhbHBoYWJldGljYWxseTogRlNQX0RPV04sCiAJCQkJRlNQX1VQLCBGU1BfTk9f RElSICovCi0JbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciBoYW5kbGUgKi8KKwltdHJfdCoJCW10 ciwJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KKwltdHJfdCoJCWluaXRfbXRyKS8q ITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uIGluIHdoaWNoIHRoZQorCQkJCXBhZ2Ugc2hvdWxk IGJlIGluaXRpYWxpemVkCisJCQkJKG1heSBiZSB0aGUgc2FtZSBhcyBtdHIpLCBvciBOVUxMIGlm IGl0CisJCQkJc2hvdWxkIG5vdCBiZSBpbml0aWFsaXplZCAodGhlIHBhZ2UgYXQgaGludAorCQkJ CXdhcyBwcmV2aW91c2x5IGZyZWVkIGluIG10cikgKi8KIHsKIAlmc3BfaGVhZGVyX3QqCXNwYWNl X2hlYWRlcjsKIAl1bGludAkJc3BhY2Vfc2l6ZTsKQEAgLTI1NDEsNyArMjU3Myw2IEBAIGZzZWdf YWxsb2NfZnJlZV9wYWdlX2xvdygKIAl1bGludAkJcmV0X3BhZ2U7CS8qITwgdGhlIGFsbG9jYXRl ZCBwYWdlIG9mZnNldCwgRklMX05VTEwKIAkJCQkJaWYgY291bGQgbm90IGJlIGFsbG9jYXRlZCAq LwogCXhkZXNfdCoJCXJldF9kZXNjcjsJLyohPCB0aGUgZXh0ZW50IG9mIHRoZSBhbGxvY2F0ZWQg cGFnZSAqLwotCWlib29sCQlmcmFnX3BhZ2VfYWxsb2NhdGVkID0gRkFMU0U7CiAJaWJvb2wJCXN1 Y2Nlc3M7CiAJdWxpbnQJCW47CiAKQEAgLTI1NjMsNiArMjU5NCw4IEBAIGZzZWdfYWxsb2NfZnJl ZV9wYWdlX2xvdygKIAlpZiAoZGVzY3IgPT0gTlVMTCkgewogCQkvKiBIaW50IG91dHNpZGUgc3Bh Y2Ugb3IgdG9vIGhpZ2ggYWJvdmUgZnJlZSBsaW1pdDogcmVzZXQKIAkJaGludCAqLworCQl1dF9h KGluaXRfbXRyKTsKKwkJLyogVGhlIGZpbGUgc3BhY2UgaGVhZGVyIHBhZ2UgaXMgYWx3YXlzIGFs bG9jYXRlZC4gKi8KIAkJaGludCA9IDA7CiAJCWRlc2NyID0geGRlc19nZXRfZGVzY3JpcHRvcihz cGFjZSwgemlwX3NpemUsIGhpbnQsIG10cik7CiAJfQpAQCAtMjU3MywxNSArMjYwNiwyMCBAQCBm c2VnX2FsbG9jX2ZyZWVfcGFnZV9sb3coCiAJICAgICYmIG1hY2hfcmVhZF9mcm9tXzgoZGVzY3Ig KyBYREVTX0lEKSA9PSBzZWdfaWQKIAkgICAgJiYgKHhkZXNfZ2V0X2JpdChkZXNjciwgWERFU19G UkVFX0JJVCwKIAkJCSAgICAgaGludCAlIEZTUF9FWFRFTlRfU0laRSwgbXRyKSA9PSBUUlVFKSkg ewotCit0YWtlX2hpbnRlZF9wYWdlOgogCQkvKiAxLiBXZSBjYW4gdGFrZSB0aGUgaGludGVkIHBh Z2UKIAkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAkJcmV0X2Rlc2NyID0g ZGVzY3I7CiAJCXJldF9wYWdlID0gaGludDsKKwkJLyogU2tpcCB0aGUgY2hlY2sgZm9yIGV4dGVu ZGluZyB0aGUgdGFibGVzcGFjZS4gSWYgdGhlCisJCXBhZ2UgaGludCB3ZXJlIG5vdCB3aXRoaW4g dGhlIHNpemUgb2YgdGhlIHRhYmxlc3BhY2UsCisJCXdlIHdvdWxkIGhhdmUgZ290IChkZXNjciA9 PSBOVUxMKSBhYm92ZSBhbmQgcmVzZXQgdGhlIGhpbnQuICovCisJCWdvdG8gZ290X2hpbnRlZF9w YWdlOwogCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKi8KLQl9IGVsc2UgaWYgKCh4ZGVzX2dldF9zdGF0ZShkZXNjciwgbXRyKSA9 PSBYREVTX0ZSRUUpCi0JCSAgICYmICgocmVzZXJ2ZWQgLSB1c2VkKSA8IHJlc2VydmVkIC8gRlNF R19GSUxMRkFDVE9SKQotCQkgICAmJiAodXNlZCA+PSBGU0VHX0ZSQUdfTElNSVQpKSB7CisJfSBl bHNlIGlmICh4ZGVzX2dldF9zdGF0ZShkZXNjciwgbXRyKSA9PSBYREVTX0ZSRUUKKwkJICAgJiYg KCFpbml0X210cgorCQkgICAgICAgfHwgKChyZXNlcnZlZCAtIHVzZWQgPCByZXNlcnZlZCAvIEZT RUdfRklMTEZBQ1RPUikKKwkJCSAgICYmIHVzZWQgPj0gRlNFR19GUkFHX0xJTUlUKSkpIHsKIAog CQkvKiAyLiBXZSBhbGxvY2F0ZSB0aGUgZnJlZSBleHRlbnQgZnJvbSBzcGFjZSBhbmQgY2FuIHRh a2UKIAkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkBAIC0yNTk5LDggKzI2MzcsMjAgQEAgZnNlZ19hbGxvY19mcmVlX3BhZ2VfbG93KAog CQkvKiBUcnkgdG8gZmlsbCB0aGUgc2VnbWVudCBmcmVlIGxpc3QgKi8KIAkJZnNlZ19maWxsX2Zy ZWVfbGlzdChzZWdfaW5vZGUsIHNwYWNlLCB6aXBfc2l6ZSwKIAkJCQkgICAgaGludCArIEZTUF9F WFRFTlRfU0laRSwgbXRyKTsKLQkJcmV0X3BhZ2UgPSBoaW50OworCQlnb3RvIHRha2VfaGludGVk X3BhZ2U7CiAJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0qLworCX0gZWxzZSBpZiAoIWluaXRfbXRyKSB7CisJCXV0X2EoeGRlc19n ZXRfc3RhdGUoZGVzY3IsIG10cikgPT0gWERFU19GUkVFX0ZSQUcpOworCQlmc3BfYWxsb2NfZnJv bV9mcmVlX2ZyYWcoc3BhY2VfaGVhZGVyLCBkZXNjciwKKwkJCQkJIGhpbnQgJSBGU1BfRVhURU5U X1NJWkUsIG10cik7CisJCXJldF9wYWdlID0gaGludDsKKwkJcmV0X2Rlc2NyID0gTlVMTDsKKwor CQkvKiBQdXQgdGhlIHBhZ2UgaW4gdGhlIGZyYWdtZW50IHBhZ2UgYXJyYXkgb2YgdGhlIHNlZ21l bnQgKi8KKwkJbiA9IGZzZWdfZmluZF9mcmVlX2ZyYWdfcGFnZV9zbG90KHNlZ19pbm9kZSwgbXRy KTsKKwkJdXRfYShuICE9IEZJTF9OVUxMKTsKKwkJZnNlZ19zZXRfbnRoX2ZyYWdfcGFnZV9ubyhz ZWdfaW5vZGUsIG4sIHJldF9wYWdlLCBtdHIpOworCQlnb3RvIGdvdF9oaW50ZWRfcGFnZTsKIAl9 IGVsc2UgaWYgKChkaXJlY3Rpb24gIT0gRlNQX05PX0RJUikKIAkJICAgJiYgKChyZXNlcnZlZCAt IHVzZWQpIDwgcmVzZXJ2ZWQgLyBGU0VHX0ZJTExGQUNUT1IpCiAJCSAgICYmICh1c2VkID49IEZT RUdfRlJBR19MSU1JVCkKQEAgLTI2NTksMTEgKzI3MDksMTAgQEAgZnNlZ19hbGxvY19mcmVlX3Bh Z2VfbG93KAogCX0gZWxzZSBpZiAodXNlZCA8IEZTRUdfRlJBR19MSU1JVCkgewogCQkvKiA2LiBX ZSBhbGxvY2F0ZSBhbiBpbmRpdmlkdWFsIHBhZ2UgZnJvbSB0aGUgc3BhY2UKIAkJPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQkJcmV0X3BhZ2Ug PSBmc3BfYWxsb2NfZnJlZV9wYWdlKHNwYWNlLCB6aXBfc2l6ZSwgaGludCwgbXRyKTsKKwkJcmV0 X3BhZ2UgPSBmc3BfYWxsb2NfZnJlZV9wYWdlKHNwYWNlLCB6aXBfc2l6ZSwgaGludCwKKwkJCQkJ ICAgICAgIG10ciwgaW5pdF9tdHIpOwogCQlyZXRfZGVzY3IgPSBOVUxMOwogCi0JCWZyYWdfcGFn ZV9hbGxvY2F0ZWQgPSBUUlVFOwotCiAJCWlmIChyZXRfcGFnZSAhPSBGSUxfTlVMTCkgewogCQkJ LyogUHV0IHRoZSBwYWdlIGluIHRoZSBmcmFnbWVudCBwYWdlIGFycmF5IG9mIHRoZQogCQkJc2Vn bWVudCAqLwpAQCAtMjY3Myw2ICsyNzIyLDEwIEBAIGZzZWdfYWxsb2NfZnJlZV9wYWdlX2xvdygK IAkJCWZzZWdfc2V0X250aF9mcmFnX3BhZ2Vfbm8oc2VnX2lub2RlLCBuLCByZXRfcGFnZSwKIAkJ CQkJCSAgbXRyKTsKIAkJfQorCisJCS8qIGZzcF9hbGxvY19mcmVlX3BhZ2UoKSBpbnZva2VkIGZz cF9pbml0X2ZpbGVfcGFnZSgpCisJCWFscmVhZHkuICovCisJCXJldHVybihyZXRfcGFnZSk7CiAJ CS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0qLwogCX0gZWxzZSB7CiAJCS8qIDcuIFdlIGFsbG9jYXRlIGEgbmV3IGV4dGVudCBhbmQg dGFrZSBpdHMgZmlyc3QgcGFnZQpAQCAtMjcyMCwyNiArMjc3MywzNCBAQCBmc2VnX2FsbG9jX2Zy ZWVfcGFnZV9sb3coCiAJCX0KIAl9CiAKLQlpZiAoIWZyYWdfcGFnZV9hbGxvY2F0ZWQpIHsKK2dv dF9oaW50ZWRfcGFnZToKKwl7CiAJCS8qIEluaXRpYWxpemUgdGhlIGFsbG9jYXRlZCBwYWdlIHRv IGJ1ZmZlciBwb29sLCBzbyB0aGF0IGl0CiAJCWNhbiBiZSBvYnRhaW5lZCBpbW1lZGlhdGVseSB3 aXRoIGJ1Zl9wYWdlX2dldCB3aXRob3V0IG5lZWQKIAkJZm9yIGEgZGlzayByZWFkICovCiAJCWJ1 Zl9ibG9ja190KglibG9jazsKIAkJdWxpbnQJCXppcF9zaXplID0gZGljdF90YWJsZV9mbGFnc190 b196aXBfc2l6ZSgKIAkJCW1hY2hfcmVhZF9mcm9tXzQoRlNQX1NQQUNFX0ZMQUdTICsgc3BhY2Vf aGVhZGVyKSk7CisJCW10cl90KgkJYmxvY2tfbXRyID0gaW5pdF9tdHIgPyBpbml0X210ciA6IG10 cjsKIAotCQlibG9jayA9IGJ1Zl9wYWdlX2NyZWF0ZShzcGFjZSwgcmV0X3BhZ2UsIHppcF9zaXpl LCBtdHIpOworCQlibG9jayA9IGJ1Zl9wYWdlX2NyZWF0ZShzcGFjZSwgcmV0X3BhZ2UsIHppcF9z aXplLCBibG9ja19tdHIpOwogCQlidWZfYmxvY2tfZGJnX2FkZF9sZXZlbChibG9jaywgU1lOQ19G U1BfUEFHRSk7CiAKIAkJaWYgKFVOSVZfVU5MSUtFTFkoYmxvY2sgIT0gYnVmX3BhZ2VfZ2V0KHNw YWNlLCB6aXBfc2l6ZSwKIAkJCQkJCQlyZXRfcGFnZSwgUldfWF9MQVRDSCwKLQkJCQkJCQltdHIp KSkgeworCQkJCQkJCWJsb2NrX210cikpKSB7CiAJCQl1dF9lcnJvcjsKIAkJfQogCi0JCS8qIFRo ZSBwcmlvciBjb250ZW50cyBvZiB0aGUgcGFnZSBzaG91bGQgYmUgaWdub3JlZCAqLwotCQlmc3Bf aW5pdF9maWxlX3BhZ2UoYmxvY2ssIG10cik7CisJCWlmIChpbml0X210cikgeworCQkJLyogVGhl IHByaW9yIGNvbnRlbnRzIG9mIHRoZSBwYWdlIHNob3VsZCBiZSBpZ25vcmVkICovCisJCQlmc3Bf aW5pdF9maWxlX3BhZ2UoYmxvY2ssIGluaXRfbXRyKTsKKwkJfQorCX0KIAorCS8qIHJldF9kZXNj ciA9PSBOVUxMIGlmIHRoZSBibG9jayB3YXMgYWxsb2NhdGVkIGZyb20gZnJlZV9mcmFnCisJKFhE RVNfRlJFRV9GUkFHKSAqLworCWlmIChyZXRfZGVzY3IgIT0gTlVMTCkgewogCQkvKiBBdCB0aGlz IHBvaW50IHdlIGtub3cgdGhlIGV4dGVudCBhbmQgdGhlIHBhZ2Ugb2Zmc2V0LgogCQlUaGUgZXh0 ZW50IGlzIHN0aWxsIGluIHRoZSBhcHByb3ByaWF0ZSBsaXN0IChGU0VHX05PVF9GVUxMCiAJCW9y IEZTRUdfRlJFRSksIGFuZCB0aGUgcGFnZSBpcyBub3QgeWV0IG1hcmtlZCBhcyB1c2VkLiAqLwpA QCAtMjc1Miw4ICsyODEzLDYgQEAgZnNlZ19hbGxvY19mcmVlX3BhZ2VfbG93KAogCQlmc2VnX21h cmtfcGFnZV91c2VkKHNlZ19pbm9kZSwgc3BhY2UsIHppcF9zaXplLCByZXRfcGFnZSwgbXRyKTsK IAl9CiAKLQlidWZfcmVzZXRfY2hlY2tfaW5kZXhfcGFnZV9hdF9mbHVzaChzcGFjZSwgcmV0X3Bh Z2UpOwotCiAJcmV0dXJuKHJldF9wYWdlKTsKIH0KIApAQCAtMjc2Niw3ICsyODI1LDcgQEAgVU5J Vl9JTlRFUk4KIHVsaW50CiBmc2VnX2FsbG9jX2ZyZWVfcGFnZV9nZW5lcmFsKAogLyo9PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KLQlmc2VnX2hlYWRlcl90KglzZWdfaGVhZGVyLC8qITwgaW46 IHNlZ21lbnQgaGVhZGVyICovCisJZnNlZ19oZWFkZXJfdCoJc2VnX2hlYWRlciwvKiE8IGluL291 dDogc2VnbWVudCBoZWFkZXIgKi8KIAl1bGludAkJaGludCwJLyohPCBpbjogaGludCBvZiB3aGlj aCBwYWdlIHdvdWxkIGJlIGRlc2lyYWJsZSAqLwogCWJ5dGUJCWRpcmVjdGlvbiwvKiE8IGluOiBp ZiB0aGUgbmV3IHBhZ2UgaXMgbmVlZGVkIGJlY2F1c2UKIAkJCQlvZiBhbiBpbmRleCBwYWdlIHNw bGl0LCBhbmQgcmVjb3JkcyBhcmUKQEAgLTI3NzgsNyArMjgzNywxMSBAQCBmc2VnX2FsbG9jX2Zy ZWVfcGFnZV9nZW5lcmFsKAogCQkJCXdpdGggZnNwX3Jlc2VydmVfZnJlZV9leHRlbnRzLCB0aGVu IHRoZXJlCiAJCQkJaXMgbm8gbmVlZCB0byBkbyB0aGUgY2hlY2sgZm9yIHRoaXMgaW5kaXZpZHVh bAogCQkJCXBhZ2UgKi8KLQltdHJfdCoJCW10cikJLyohPCBpbjogbXRyIGhhbmRsZSAqLworCW10 cl90KgkJbXRyLAkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiBoYW5kbGUgKi8KKwltdHJf dCoJCWluaXRfbXRyKS8qITwgaW4vb3V0OiBtdHIgb3IgYW5vdGhlciBtaW5pLXRyYW5zYWN0aW9u CisJCQkJaW4gd2hpY2ggdGhlIHBhZ2Ugc2hvdWxkIGJlIGluaXRpYWxpemVkLAorCQkJCW9yIE5V TEwgaWYgdGhpcyBpcyBhICJmYWtlIGFsbG9jYXRpb24iIG9mCisJCQkJYSBwYWdlIHRoYXQgd2Fz IHByZXZpb3VzbHkgZnJlZWQgaW4gbXRyICovCiB7CiAJZnNlZ19pbm9kZV90Kglpbm9kZTsKIAl1 bGludAkJc3BhY2U7CkBAIC0yODE3LDcgKzI4ODAsOCBAQCBmc2VnX2FsbG9jX2ZyZWVfcGFnZV9n ZW5lcmFsKAogCX0KIAogCXBhZ2Vfbm8gPSBmc2VnX2FsbG9jX2ZyZWVfcGFnZV9sb3coc3BhY2Us IHppcF9zaXplLAotCQkJCQkgICBpbm9kZSwgaGludCwgZGlyZWN0aW9uLCBtdHIpOworCQkJCQkg ICBpbm9kZSwgaGludCwgZGlyZWN0aW9uLAorCQkJCQkgICBtdHIsIGluaXRfbXRyKTsKIAlpZiAo IWhhc19kb25lX3Jlc2VydmF0aW9uKSB7CiAJCWZpbF9zcGFjZV9yZWxlYXNlX2ZyZWVfZXh0ZW50 cyhzcGFjZSwgbl9yZXNlcnZlZCk7CiAJfQpAQCAtMjgyNiwyOCArMjg5MCw2IEBAIGZzZWdfYWxs b2NfZnJlZV9wYWdlX2dlbmVyYWwoCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotQWxsb2NhdGVz IGEgc2luZ2xlIGZyZWUgcGFnZSBmcm9tIGEgc2VnbWVudC4gVGhpcyBmdW5jdGlvbiBpbXBsZW1l bnRzCi10aGUgaW50ZWxsaWdlbnQgYWxsb2NhdGlvbiBzdHJhdGVneSB3aGljaCB0cmllcyB0byBt aW5pbWl6ZSBmaWxlIHNwYWNlCi1mcmFnbWVudGF0aW9uLgotQHJldHVybglhbGxvY2F0ZWQgcGFn ZSBvZmZzZXQsIEZJTF9OVUxMIGlmIG5vIHBhZ2UgY291bGQgYmUgYWxsb2NhdGVkICovCi1VTklW X0lOVEVSTgotdWxpbnQKLWZzZWdfYWxsb2NfZnJlZV9wYWdlKAotLyo9PT09PT09PT09PT09PT09 PSovCi0JZnNlZ19oZWFkZXJfdCoJc2VnX2hlYWRlciwvKiE8IGluOiBzZWdtZW50IGhlYWRlciAq LwotCXVsaW50CQloaW50LAkvKiE8IGluOiBoaW50IG9mIHdoaWNoIHBhZ2Ugd291bGQgYmUgZGVz aXJhYmxlICovCi0JYnl0ZQkJZGlyZWN0aW9uLC8qITwgaW46IGlmIHRoZSBuZXcgcGFnZSBpcyBu ZWVkZWQgYmVjYXVzZQotCQkJCW9mIGFuIGluZGV4IHBhZ2Ugc3BsaXQsIGFuZCByZWNvcmRzIGFy ZQotCQkJCWluc2VydGVkIHRoZXJlIGluIG9yZGVyLCBpbnRvIHdoaWNoCi0JCQkJZGlyZWN0aW9u IHRoZXkgZ28gYWxwaGFiZXRpY2FsbHk6IEZTUF9ET1dOLAotCQkJCUZTUF9VUCwgRlNQX05PX0RJ UiAqLwotCW10cl90KgkJbXRyKQkvKiE8IGluOiBtdHIgaGFuZGxlICovCi17Ci0JcmV0dXJuKGZz ZWdfYWxsb2NfZnJlZV9wYWdlX2dlbmVyYWwoc2VnX2hlYWRlciwgaGludCwgZGlyZWN0aW9uLAot CQkJCQkgICAgRkFMU0UsIG10cikpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIENoZWNrcyB0 aGF0IHdlIGhhdmUgYXQgbGVhc3QgMiBmcmFnIHBhZ2VzIGZyZWUgaW4gdGhlIGZpcnN0IGV4dGVu dCBvZiBhCiBzaW5nbGUtdGFibGUgdGFibGVzcGFjZSwgYW5kIHRoZXkgYXJlIGFsc28gcGh5c2lj YWxseSBpbml0aWFsaXplZCB0byB0aGUgZGF0YQogZmlsZS4gVGhhdCBpcyB3ZSBoYXZlIGFscmVh ZHkgZXh0ZW5kZWQgdGhlIGRhdGEgZmlsZSBzbyB0aGF0IHRob3NlIHBhZ2VzIGFyZQoKPT09IG1v ZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgnCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgJcmV2aWQ6cm9oaXQua2FsaGFuc0BvcmFj bGUuY29tLTIwMTEwODI5MDc1OTE4LXIxYzZoaGxhMjkxMml0c2YKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL2J0cjBidHIuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEx MDgyOTA4NDUzMC0wNnRxd2d2Y25vdHJsY3VnCkBAIC01NjgsNyArNTY4LDEyIEBAIGJ0cl9wYWdl X2FsbG9jKAogCQkJCQlwYWdlIHNwbGl0IGlzIG1hZGUgKi8KIAl1bGludAkJbGV2ZWwsCQkvKiE8 IGluOiBsZXZlbCB3aGVyZSB0aGUgcGFnZSBpcyBwbGFjZWQKIAkJCQkJaW4gdGhlIHRyZWUgKi8K LQltdHJfdCoJCW10cik7CQkvKiE8IGluOiBtdHIgKi8KKwltdHJfdCoJCW10ciwJCS8qITwgaW4v b3V0OiBtaW5pLXRyYW5zYWN0aW9uCisJCQkJCWZvciB0aGUgYWxsb2NhdGlvbiAqLworCW10cl90 KgkJaW5pdF9tdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uCisJCQkJCWZvciB4LWxh dGNoaW5nIGFuZCBpbml0aWFsaXppbmcKKwkJCQkJdGhlIHBhZ2UgKi8KKwlfX2F0dHJpYnV0ZV9f KChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEZyZWVzIGEgZmls ZSBwYWdlIHVzZWQgaW4gYW4gaW5kZXggdHJlZS4gTk9URTogY2Fubm90IGZyZWUgZmllbGQgZXh0 ZXJuYWwKIHN0b3JhZ2UgcGFnZXMgYmVjYXVzZSB0aGUgcGFnZSBtdXN0IGNvbnRhaW4gaW5mbyBv biBpdHMgbGV2ZWwuICovCkBAIC01OTEsNiArNTk2LDMzIEBAIGJ0cl9wYWdlX2ZyZWVfbG93KAog CWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBpbjogYmxvY2sgdG8gYmUgZnJlZWQsIHgtbGF0Y2hl ZCAqLwogCXVsaW50CQlsZXZlbCwJLyohPCBpbjogcGFnZSBsZXZlbCAqLwogCW10cl90KgkJbXRy KTsJLyohPCBpbjogbXRyICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitNYXJrcyBhbGwgTVRSX01FTU9fRlJFRV9D TFVTVF9MRUFGIHBhZ2VzIG5vbmZyZWUgb3IgZnJlZS4KK0ZvciBpbnZva2luZyBidHJfc3RvcmVf YmlnX3JlY19leHRlcm5fZmllbGRzKCkgYWZ0ZXIgYW4gdXBkYXRlLAord2UgbXVzdCB0ZW1wb3Jh cmlseSBtYXJrIGZyZWVkIGNsdXN0ZXJlZCBpbmRleCBwYWdlcyBhbGxvY2F0ZWQsIHNvCit0aGF0 IG9mZi1wYWdlIGNvbHVtbnMgd2lsbCBub3QgYmUgYWxsb2NhdGVkIGZyb20gdGhlbS4gQmV0d2Vl biB0aGUKK2J0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoKSBhbmQgbXRyX2NvbW1pdCgp IHdlIGhhdmUgdG8KK21hcmsgdGhlIHBhZ2VzIGZyZWUgYWdhaW4sIHNvIHRoYXQgbm8gcGFnZXMg d2lsbCBiZSBsZWFrZWQuICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX21hcmtfZnJlZWRfbGVh dmVzKAorLyo9PT09PT09PT09PT09PT09PT0qLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwg aW4vb3V0OiBjbHVzdGVyZWQgaW5kZXggKi8KKwltdHJfdCoJCW10ciwJLyohPCBpbi9vdXQ6IG1p bmktdHJhbnNhY3Rpb24gKi8KKwlpYm9vbAkJbm9uZnJlZSkvKiE8IGluOiBUUlVFPW1hcmsgbm9u ZnJlZSwgRkFMU0U9bWFyayBmcmVlZCAqLworCVVOSVZfQ09MRCBfX2F0dHJpYnV0ZV9fKChub25u dWxsKSk7CisjaWZkZWYgVU5JVl9ERUJVRworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorVmFsaWRhdGVzIGFsbCBwYWdl cyBtYXJrZWQgTVRSX01FTU9fRlJFRV9DTFVTVF9MRUFGLgorQHNlZSBidHJfbWFya19mcmVlZF9s ZWF2ZXMoKQorQHJldHVybiBUUlVFICovCitVTklWX0lOVEVSTgoraWJvb2wKK2J0cl9mcmVlZF9s ZWF2ZXNfdmFsaWRhdGUoCisvKj09PT09PT09PT09PT09PT09PT09PT0qLworCW10cl90KgltdHIp CS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24gKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3 YXJuX3VudXNlZF9yZXN1bHQpKTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAjaWZkZWYgVU5J Vl9CVFJfUFJJTlQKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgogUHJpbnRzIHNpemUgaW5mbyBvZiBhIEItdHJlZS4gKi8K Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1ci5oJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1ci5oCXJldmlkOnJvaGl0LmthbGhh bnNAb3JhY2xlLmNvbS0yMDExMDgyOTA3NTkxOC1yMWM2aGhsYTI5MTJpdHNmCisrKyBiL3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMTA4MjkwODQ1MzAtMDZ0cXdndmNub3RybGN1ZwpAQCAtMzI5LDE2ICszMjksNiBAQCBi dHJfY3VyX3Blc3NpbWlzdGljX3VwZGF0ZSgKIAlxdWVfdGhyX3QqCXRociwJLyohPCBpbjogcXVl cnkgdGhyZWFkICovCiAJbXRyX3QqCQltdHIpOwkvKiE8IGluOiBtdHI7IG11c3QgYmUgY29tbWl0 dGVkIGJlZm9yZQogCQkJCWxhdGNoaW5nIGFueSBmdXJ0aGVyIHBhZ2VzICovCi0vKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK LUNvbW1pdHMgYW5kIHJlc3RhcnRzIGEgbWluaS10cmFuc2FjdGlvbiBzbyB0aGF0IGl0IHdpbGwg cmV0YWluIGFuCi14LWxvY2sgb24gaW5kZXgtPmxvY2sgYW5kIHRoZSBjdXJzb3IgcGFnZS4gKi8K LVVOSVZfSU5URVJOCi12b2lkCi1idHJfY3VyX210cl9jb21taXRfYW5kX3N0YXJ0KAotLyo9PT09 PT09PT09PT09PT09PT09PT09PT09Ki8KLQlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vy c29yICovCi0JbXRyX3QqCQltdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCi0J VU5JVl9DT0xEIF9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIE1hcmtzIGEgY2x1 c3RlcmVkIGluZGV4IHJlY29yZCBkZWxldGVkLiBXcml0ZXMgYW4gdW5kbyBsb2cgcmVjb3JkIHRv CiB1bmRvIGxvZyBvbiB0aGlzIGRlbGV0ZSBtYXJraW5nLiBXcml0ZXMgaW4gdGhlIHRyeCBpZCBm aWVsZCB0aGUgaWQKQEAgLTUzMSw2ICs1MjEsOCBAQCBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5f ZmllbGRzX2Z1bmMoCiAJCQkJCXRoZSAiZXh0ZXJuYWwgc3RvcmFnZSIgZmxhZ3MgaW4gb2Zmc2V0 cwogCQkJCQl3aWxsIG5vdCBjb3JyZXNwb25kIHRvIHJlYyB3aGVuCiAJCQkJCXRoaXMgZnVuY3Rp b24gcmV0dXJucyAqLworCWNvbnN0IGJpZ19yZWNfdCpiaWdfcmVjX3ZlYywJLyohPCBpbjogdmVj dG9yIGNvbnRhaW5pbmcgZmllbGRzCisJCQkJCXRvIGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCiAj aWZkZWYgVU5JVl9ERUJVRwogCW10cl90KgkJbG9jYWxfbXRyLAkvKiE8IGluOiBtdHIgY29udGFp bmluZyB0aGUKIAkJCQkJbGF0Y2ggdG8gcmVjIGFuZCB0byB0aGUgdHJlZSAqLwpAQCAtNTM5LDkg KzUzMSwxMiBAQCBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzX2Z1bmMoCiAJaWJvb2wJ CXVwZGF0ZV9pbl9wbGFjZSwvKiEgaW46IFRSVUUgaWYgdGhlIHJlY29yZCBpcyB1cGRhdGVkCiAJ CQkJCWluIHBsYWNlIChub3QgZGVsZXRlK2luc2VydCkgKi8KICNlbmRpZiAvKiBVTklWX0RFQlVH IHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLwotCWNvbnN0IGJpZ19yZWNfdCpiaWdfcmVjX3Zl YykJLyohPCBpbjogdmVjdG9yIGNvbnRhaW5pbmcgZmllbGRzCi0JCQkJCXRvIGJlIHN0b3JlZCBl eHRlcm5hbGx5ICovCi0JX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOworCW10cl90KgkJYWxsb2Nf bXRyKQkvKiE8IGluL291dDogaW4gYW4gaW5zZXJ0LCBOVUxMOworCQkJCQlpbiBhbiB1cGRhdGUs IGxvY2FsX210ciBmb3IKKwkJCQkJYWxsb2NhdGluZyBCTE9CIHBhZ2VzIGFuZAorCQkJCQl1cGRh dGluZyBCTE9CIHBvaW50ZXJzOyBhbGxvY19tdHIKKwkJCQkJbXVzdCBub3QgaGF2ZSBmcmVlZCBh bnkgbGVhZiBwYWdlcyAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwoMSwyLDMsNCw1KSwgd2Fy bl91bnVzZWRfcmVzdWx0KSk7CiAKIC8qKiBTdG9yZXMgdGhlIGZpZWxkcyBpbiBiaWdfcmVjX3Zl YyB0byB0aGUgdGFibGVzcGFjZSBhbmQgcHV0cyBwb2ludGVycyB0bwogdGhlbSBpbiByZWMuICBU aGUgZXh0ZXJuIGZsYWdzIGluIHJlYyB3aWxsIGhhdmUgdG8gYmUgc2V0IGJlZm9yZWhhbmQuCkBA IC01NTAsMjEgKzU0NSwyMiBAQCBmaWxlIHNlZ21lbnQgb2YgdGhlIGluZGV4IHRyZWUuCiBAcGFy YW0gaW5kZXgJaW46IGNsdXN0ZXJlZCBpbmRleDsgTVVTVCBiZSBYLWxhdGNoZWQgYnkgbXRyCiBA cGFyYW0gYglpbi9vdXQ6IGJsb2NrIGNvbnRhaW5pbmcgcmVjOyBNVVNUIGJlIFgtbGF0Y2hlZCBi eSBtdHIKIEBwYXJhbSByZWMJaW4vb3V0OiBjbHVzdGVyZWQgaW5kZXggcmVjb3JkCi1AcGFyYW0g b2Zmc2V0cwlpbjogcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgpOworQHBhcmFtIG9mZnMJaW46 IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4KTsKIAkJdGhlICJleHRlcm5hbCBzdG9yYWdlIiBm bGFncyBpbiBvZmZzZXRzIHdpbGwgbm90IGJlIGFkanVzdGVkCitAcGFyYW0gYmlnCWluOiB2ZWN0 b3IgY29udGFpbmluZyBmaWVsZHMgdG8gYmUgc3RvcmVkIGV4dGVybmFsbHkKIEBwYXJhbSBtdHIJ aW46IG1pbmktdHJhbnNhY3Rpb24gdGhhdCBob2xkcyB4LWxhdGNoIG9uIGluZGV4IGFuZCBiCiBA cGFyYW0gdXBkCWluOiBUUlVFIGlmIHRoZSByZWNvcmQgaXMgdXBkYXRlZCBpbiBwbGFjZSAobm90 IGRlbGV0ZStpbnNlcnQpCi1AcGFyYW0gYmlnCWluOiB2ZWN0b3IgY29udGFpbmluZyBmaWVsZHMg dG8gYmUgc3RvcmVkIGV4dGVybmFsbHkKK0BwYXJhbSBybXRyCWluL291dDogaW4gdXBkYXRlcywg dGhlIG1pbmktdHJhbnNhY3Rpb24gdGhhdCBob2xkcyByZWMKIEByZXR1cm4JREJfU1VDQ0VTUyBv ciBEQl9PVVRfT0ZfRklMRV9TUEFDRSAqLwogI2lmZGVmIFVOSVZfREVCVUcKLSMgZGVmaW5lIGJ0 cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoaW5kZXgsYixyZWMsb2Zmc2V0cyxtdHIsdXBk LGJpZykgXAotCWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYyhpbmRleCxiLHJl YyxvZmZzZXRzLG10cix1cGQsYmlnKQorIyBkZWZpbmUgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJu X2ZpZWxkcyhpbmRleCxiLHJlYyxvZmZzLGJpZyxtdHIsdXBkLHJtdHIpIFwKKwlidHJfc3RvcmVf YmlnX3JlY19leHRlcm5fZmllbGRzX2Z1bmMoaW5kZXgsYixyZWMsb2ZmcyxiaWcsbXRyLHVwZCxy bXRyKQogI2VsaWYgZGVmaW5lZCBVTklWX0JMT0JfTElHSFRfREVCVUcKLSMgZGVmaW5lIGJ0cl9z dG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoaW5kZXgsYixyZWMsb2Zmc2V0cyxtdHIsdXBkLGJp ZykgXAotCWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYyhpbmRleCxiLHJlYyxv ZmZzZXRzLHVwZCxiaWcpCisjIGRlZmluZSBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRz KGluZGV4LGIscmVjLG9mZnMsYmlnLG10cix1cGQscm10cikgXAorCWJ0cl9zdG9yZV9iaWdfcmVj X2V4dGVybl9maWVsZHNfZnVuYyhpbmRleCxiLHJlYyxvZmZzLGJpZyx1cGQscm10cikKICNlbHNl Ci0jIGRlZmluZSBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKGluZGV4LGIscmVjLG9m ZnNldHMsbXRyLHVwZCxiaWcpIFwKLQlidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzX2Z1 bmMoaW5kZXgsYixyZWMsb2Zmc2V0cyxiaWcpCisjIGRlZmluZSBidHJfc3RvcmVfYmlnX3JlY19l eHRlcm5fZmllbGRzKGluZGV4LGIscmVjLG9mZnMsYmlnLG10cix1cGQscm10cikgXAorCWJ0cl9z dG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYyhpbmRleCxiLHJlYyxvZmZzLGJpZyxybXRy KQogI2VuZGlmCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVmLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9idWYwYnVmLmgJcmV2aWQ6cm9oaXQua2FsaGFuc0BvcmFjbGUuY29tLTIwMTEwODI5MDc1OTE4 LXIxYzZoaGxhMjkxMml0c2YKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYu aAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDgyOTA4NDUzMC0wNnRxd2d2Y25v dHJsY3VnCkBAIC01MDAsMTUgKzUwMCw2IEBAIGJ1Zl9wYWdlX3BlZWsoCiAvKj09PT09PT09PT0q LwogCXVsaW50CXNwYWNlLAkvKiE8IGluOiBzcGFjZSBpZCAqLwogCXVsaW50CW9mZnNldCk7Lyoh PCBpbjogcGFnZSBudW1iZXIgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVJlc2V0cyB0aGUgY2hlY2tf aW5kZXhfcGFnZV9hdF9mbHVzaCBmaWVsZCBvZiBhIHBhZ2UgaWYgZm91bmQgaW4gdGhlIGJ1ZmZl cgotcG9vbC4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi1idWZfcmVzZXRfY2hlY2tfaW5kZXhfcGFn ZV9hdF9mbHVzaCgKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCXVsaW50 CXNwYWNlLAkvKiE8IGluOiBzcGFjZSBpZCAqLwotCXVsaW50CW9mZnNldCk7LyohPCBpbjogcGFn ZSBudW1iZXIgKi8KICNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZp bmVkIFVOSVZfREVCVUcKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFNldHMgZmlsZV9wYWdlX3dhc19mcmVl ZCBUUlVFIGlmIHRoZSBwYWdlIGlzIGZvdW5kIGluIHRoZSBidWZmZXIgcG9vbC4KCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZnNwMGZzcC5oJwotLS0gYS9zdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvZnNwMGZzcC5oCXJldmlkOnJvaGl0LmthbGhhbnNAb3JhY2xl LmNvbS0yMDExMDgyOTA3NTkxOC1yMWM2aGhsYTI5MTJpdHNmCisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9mc3AwZnNwLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA4 MjkwODQ1MzAtMDZ0cXdndmNub3RybGN1ZwpAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTUsIDIwMDksIElubm9iYXNlIE95LiBBbGwgUmln aHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk1LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0 cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogCiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRl cgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAgLTE2NiwxOSArMTY2LDE4IEBAIGZzZWdfbl9yZXNl cnZlZF9wYWdlcygKIEFsbG9jYXRlcyBhIHNpbmdsZSBmcmVlIHBhZ2UgZnJvbSBhIHNlZ21lbnQu IFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cwogdGhlIGludGVsbGlnZW50IGFsbG9jYXRpb24gc3Ry YXRlZ3kgd2hpY2ggdHJpZXMgdG8gbWluaW1pemUKIGZpbGUgc3BhY2UgZnJhZ21lbnRhdGlvbi4K LUByZXR1cm4JdGhlIGFsbG9jYXRlZCBwYWdlIG9mZnNldCBGSUxfTlVMTCBpZiBubyBwYWdlIGNv dWxkIGJlIGFsbG9jYXRlZCAqLwotVU5JVl9JTlRFUk4KLXVsaW50Ci1mc2VnX2FsbG9jX2ZyZWVf cGFnZSgKLS8qPT09PT09PT09PT09PT09PT0qLwotCWZzZWdfaGVhZGVyX3QqCXNlZ19oZWFkZXIs IC8qITwgaW46IHNlZ21lbnQgaGVhZGVyICovCi0JdWxpbnQJCWhpbnQsCS8qITwgaW46IGhpbnQg b2Ygd2hpY2ggcGFnZSB3b3VsZCBiZSBkZXNpcmFibGUgKi8KLQlieXRlCQlkaXJlY3Rpb24sIC8q ITwgaW46IGlmIHRoZSBuZXcgcGFnZSBpcyBuZWVkZWQgYmVjYXVzZQorQHBhcmFtW2luL291dF0g c2VnX2hlYWRlcglzZWdtZW50IGhlYWRlcgorQHBhcmFtW2luXSBoaW50CQkJaGludCBvZiB3aGlj aCBwYWdlIHdvdWxkIGJlIGRlc2lyYWJsZQorQHBhcmFtW2luXSBkaXJlY3Rpb24JCWlmIHRoZSBu ZXcgcGFnZSBpcyBuZWVkZWQgYmVjYXVzZQogCQkJCW9mIGFuIGluZGV4IHBhZ2Ugc3BsaXQsIGFu ZCByZWNvcmRzIGFyZQogCQkJCWluc2VydGVkIHRoZXJlIGluIG9yZGVyLCBpbnRvIHdoaWNoCiAJ CQkJZGlyZWN0aW9uIHRoZXkgZ28gYWxwaGFiZXRpY2FsbHk6IEZTUF9ET1dOLAotCQkJCUZTUF9V UCwgRlNQX05PX0RJUiAqLwotCW10cl90KgkJbXRyKTsJLyohPCBpbjogbXRyIGhhbmRsZSAqLwor CQkJCUZTUF9VUCwgRlNQX05PX0RJUgorQHBhcmFtW2luL291dF0gbXRyCQltaW5pLXRyYW5zYWN0 aW9uCitAcmV0dXJuCXRoZSBhbGxvY2F0ZWQgcGFnZSBvZmZzZXQgRklMX05VTEwgaWYgbm8gcGFn ZSBjb3VsZCBiZSBhbGxvY2F0ZWQgKi8KKyNkZWZpbmUgZnNlZ19hbGxvY19mcmVlX3BhZ2Uoc2Vn X2hlYWRlciwgaGludCwgZGlyZWN0aW9uLCBtdHIpCQlcCisJZnNlZ19hbGxvY19mcmVlX3BhZ2Vf Z2VuZXJhbChzZWdfaGVhZGVyLCBoaW50LCBkaXJlY3Rpb24sCVwKKwkJCQkgICAgIEZBTFNFLCBt dHIsIG10cikKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogQWxsb2NhdGVzIGEgc2luZ2xlIGZyZWUgcGFn ZSBmcm9tIGEgc2VnbWVudC4gVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzCiB0aGUgaW50ZWxsaWdl bnQgYWxsb2NhdGlvbiBzdHJhdGVneSB3aGljaCB0cmllcyB0byBtaW5pbWl6ZSBmaWxlIHNwYWNl CkBAIC0xODgsNyArMTg3LDcgQEAgVU5JVl9JTlRFUk4KIHVsaW50CiBmc2VnX2FsbG9jX2ZyZWVf cGFnZV9nZW5lcmFsKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlmc2VnX2hlYWRl cl90KglzZWdfaGVhZGVyLC8qITwgaW46IHNlZ21lbnQgaGVhZGVyICovCisJZnNlZ19oZWFkZXJf dCoJc2VnX2hlYWRlciwvKiE8IGluL291dDogc2VnbWVudCBoZWFkZXIgKi8KIAl1bGludAkJaGlu dCwJLyohPCBpbjogaGludCBvZiB3aGljaCBwYWdlIHdvdWxkIGJlIGRlc2lyYWJsZSAqLwogCWJ5 dGUJCWRpcmVjdGlvbiwvKiE8IGluOiBpZiB0aGUgbmV3IHBhZ2UgaXMgbmVlZGVkIGJlY2F1c2UK IAkJCQlvZiBhbiBpbmRleCBwYWdlIHNwbGl0LCBhbmQgcmVjb3JkcyBhcmUKQEAgLTIwMCw3ICsx OTksMTIgQEAgZnNlZ19hbGxvY19mcmVlX3BhZ2VfZ2VuZXJhbCgKIAkJCQl3aXRoIGZzcF9yZXNl cnZlX2ZyZWVfZXh0ZW50cywgdGhlbiB0aGVyZQogCQkJCWlzIG5vIG5lZWQgdG8gZG8gdGhlIGNo ZWNrIGZvciB0aGlzIGluZGl2aWR1YWwKIAkJCQlwYWdlICovCi0JbXRyX3QqCQltdHIpOwkvKiE8 IGluOiBtdHIgaGFuZGxlICovCisJbXRyX3QqCQltdHIsCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5z YWN0aW9uICovCisJbXRyX3QqCQlpbml0X210cikvKiE8IGluL291dDogbXRyIG9yIGFub3RoZXIg bWluaS10cmFuc2FjdGlvbgorCQkJCWluIHdoaWNoIHRoZSBwYWdlIHNob3VsZCBiZSBpbml0aWFs aXplZCwKKwkJCQlvciBOVUxMIGlmIHRoaXMgaXMgYSAiZmFrZSBhbGxvY2F0aW9uIiBvZgorCQkJ CWEgcGFnZSB0aGF0IHdhcyBwcmV2aW91c2x5IGZyZWVkIGluIG10ciAqLworCV9fYXR0cmlidXRl X18oKHdhcm5fdW51c2VkX3Jlc3VsdCwgbm9ubnVsbCgxLDUpKSk7CiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKIFJlc2VydmVzIGZyZWUgcGFnZXMgZnJvbSBhIHRhYmxlc3BhY2UuIEFsbCBtaW5pLXRyYW5z YWN0aW9ucyB3aGljaCBtYXkKIHVzZSBzZXZlcmFsIHBhZ2VzIGZyb20gdGhlIHRhYmxlc3BhY2Ug c2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmVoYW5kCgo9PT0gbW9kaWZpZWQgZmlsZSAn c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL210cjBtdHIuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL210cjBtdHIuaAlyZXZpZDpyb2hpdC5rYWxoYW5zQG9yYWNsZS5jb20tMjAxMTA4 MjkwNzU5MTgtcjFjNmhobGEyOTEyaXRzZgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv bXRyMG10ci5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwODI5MDg0NTMwLTA2 dHF3Z3Zjbm90cmxjdWcKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAot Q29weXJpZ2h0IChjKSAxOTk1LCAyMDA5LCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KK0NvcHlyaWdodCAoYykgMTk5NSwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRl cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlCkBAIC01Myw2ICs1Myw4IEBAIGZpcnN0IDMgdmFsdWVzIG11c3QgYmUgUldf U19MQVRDSCwgUldfWF8KICNkZWZpbmUgTVRSX01FTU9fTU9ESUZZCQk1NAogI2RlZmluZQlNVFJf TUVNT19TX0xPQ0sJCTU1CiAjZGVmaW5lCU1UUl9NRU1PX1hfTE9DSwkJNTYKKy8qKiBUaGUgbWlu aS10cmFuc2FjdGlvbiBmcmVlZCBhIGNsdXN0ZXJlZCBpbmRleCBsZWFmIHBhZ2UuICovCisjZGVm aW5lIE1UUl9NRU1PX0ZSRUVfQ0xVU1RfTEVBRgk1NwogCiAvKiogQG5hbWUgTG9nIGl0ZW0gdHlw ZXMKIFRoZSBsb2cgaXRlbXMgYXJlIGRlY2xhcmVkICdieXRlJyBzbyB0aGF0IHRoZSBjb21waWxl ciBjYW4gd2FybiBpZiB2YWwKQEAgLTM4MCwxMiArMzgyLDE2IEBAIHN0cnVjdCBtdHJfc3RydWN0 ewogI2VuZGlmCiAJZHluX2FycmF5X3QJbWVtbzsJLyohPCBtZW1vIHN0YWNrIGZvciBsb2NrcyBl dGMuICovCiAJZHluX2FycmF5X3QJbG9nOwkvKiE8IG1pbmktdHJhbnNhY3Rpb24gbG9nICovCi0J aWJvb2wJCWluc2lkZV9pYnVmOworCXVuc2lnbmVkCWluc2lkZV9pYnVmOjE7CiAJCQkJLyohPCBU UlVFIGlmIGluc2lkZSBpYnVmIGNoYW5nZXMgKi8KLQlpYm9vbAkJbW9kaWZpY2F0aW9uczsKLQkJ CQkvKiBUUlVFIGlmIHRoZSBtdHIgbWFkZSBtb2RpZmljYXRpb25zIHRvCi0JCQkJYnVmZmVyIHBv b2wgcGFnZXMgKi8KLQlpYm9vbAkJbWFkZV9kaXJ0eTsvKiE8IFRSVUUgaWYgbXRyIGhhcyBtYWRl IGF0IGxlYXN0CisJdW5zaWduZWQJbW9kaWZpY2F0aW9uczoxOworCQkJCS8qITwgVFJVRSBpZiB0 aGUgbWluaS10cmFuc2FjdGlvbgorCQkJCW1vZGlmaWVkIGJ1ZmZlciBwb29sIHBhZ2VzICovCisJ dW5zaWduZWQJZnJlZWRfY2x1c3RfbGVhZjoxOworCQkJCS8qITwgVFJVRSBpZiBNVFJfTUVNT19G UkVFX0NMVVNUX0xFQUYKKwkJCQl3YXMgbG9nZ2VkIGluIHRoZSBtaW5pLXRyYW5zYWN0aW9uICov CisJdW5zaWduZWQJbWFkZV9kaXJ0eToxOworCQkJCS8qITwgVFJVRSBpZiBtdHIgaGFzIG1hZGUg YXQgbGVhc3QKIAkJCQlvbmUgYnVmZmVyIHBvb2wgcGFnZSBkaXJ0eSAqLwogCXVsaW50CQluX2xv Z19yZWNzOwogCQkJCS8qIGNvdW50IG9mIGhvdyBtYW55IHBhZ2UgaW5pdGlhbCBsb2cgcmVjb3Jk cwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9tdHIwbXRyLmlj JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbXRyMG10ci5pYwlyZXZpZDpyb2hpdC5r YWxoYW5zQG9yYWNsZS5jb20tMjAxMTA4MjkwNzU5MTgtcjFjNmhobGEyOTEyaXRzZgorKysgYi9z dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbXRyMG10ci5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDExMDgyOTA4NDUzMC0wNnRxd2d2Y25vdHJsY3VnCkBAIC0xLDYgKzEsNiBAQAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NSwgMjAxMCwgSW5ub2Jh c2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTUsIDIwMTEsIE9y YWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtNTMsMTAgKzUzLDExIEBA IG10cl9zdGFydCgKIAlkeW5fYXJyYXlfY3JlYXRlKCYobXRyLT5sb2cpKTsKIAogCW10ci0+bG9n X21vZGUgPSBNVFJfTE9HX0FMTDsKLQltdHItPm1vZGlmaWNhdGlvbnMgPSBGQUxTRTsKIAltdHIt Pmluc2lkZV9pYnVmID0gRkFMU0U7Ci0JbXRyLT5uX2xvZ19yZWNzID0gMDsKKwltdHItPm1vZGlm aWNhdGlvbnMgPSBGQUxTRTsKKwltdHItPmZyZWVkX2NsdXN0X2xlYWYgPSBGQUxTRTsKIAltdHIt Pm1hZGVfZGlydHkgPSBGQUxTRTsKKwltdHItPm5fbG9nX3JlY3MgPSAwOwogCiAJdXRfZChtdHIt PnN0YXRlID0gTVRSX0FDVElWRSk7CiAJdXRfZChtdHItPm1hZ2ljX24gPSBNVFJfTUFHSUNfTik7 CkBAIC03Nyw3ICs3OCw4IEBAIG10cl9tZW1vX3B1c2goCiAKIAl1dF9hZChvYmplY3QpOwogCXV0 X2FkKHR5cGUgPj0gTVRSX01FTU9fUEFHRV9TX0ZJWCk7Ci0JdXRfYWQodHlwZSA8PSBNVFJfTUVN T19YX0xPQ0spOworCXV0X2FkKHR5cGUgPD0gTVRSX01FTU9fRlJFRV9DTFVTVF9MRUFGKTsKKwl1 dF9hZCh0eXBlICE9IE1UUl9NRU1PX0ZSRUVfQ0xVU1RfTEVBRiB8fCBtdHItPmZyZWVkX2NsdXN0 X2xlYWYpOwogCXV0X2FkKG10cik7CiAJdXRfYWQobXRyLT5tYWdpY19uID09IE1UUl9NQUdJQ19O KTsKIAl1dF9hZChtdHItPnN0YXRlID09IE1UUl9BQ1RJVkUpOwoKPT09IG1vZGlmaWVkIGZpbGUg J3N0b3JhZ2UvaW5ub2Jhc2UvbXRyL210cjBtdHIuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9t dHIvbXRyMG10ci5jCXJldmlkOnJvaGl0LmthbGhhbnNAb3JhY2xlLmNvbS0yMDExMDgyOTA3NTkx OC1yMWM2aGhsYTI5MTJpdHNmCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvbXRyL210cjBtdHIuYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDgyOTA4NDUzMC0wNnRxd2d2Y25vdHJs Y3VnCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAo YykgMTk5NSwgMjAwOSwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmln aHQgKGMpIDE5OTUsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdo dHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZQpAQCAtODcsMTIgKzg3LDExIEBAIG10cl9tZW1vX3Nsb3RfcmVsZWFzZSgKIAkJCWJ1Zl9wYWdl X3JlbGVhc2UoKGJ1Zl9ibG9ja190KilvYmplY3QsIHR5cGUpOwogCQl9IGVsc2UgaWYgKHR5cGUg PT0gTVRSX01FTU9fU19MT0NLKSB7CiAJCQlyd19sb2NrX3NfdW5sb2NrKChyd19sb2NrX3QqKW9i amVjdCk7Ci0jaWZkZWYgVU5JVl9ERUJVRwogCQl9IGVsc2UgaWYgKHR5cGUgIT0gTVRSX01FTU9f WF9MT0NLKSB7Ci0JCQl1dF9hZCh0eXBlID09IE1UUl9NRU1PX01PRElGWSk7CisJCQl1dF9hZCh0 eXBlID09IE1UUl9NRU1PX01PRElGWQorCQkJICAgICAgfHwgdHlwZSA9PSBNVFJfTUVNT19GUkVF X0NMVVNUX0xFQUYpOwogCQkJdXRfYWQobXRyX21lbW9fY29udGFpbnMobXRyLCBvYmplY3QsCiAJ CQkJCQlNVFJfTUVNT19QQUdFX1hfRklYKSk7Ci0jZW5kaWYgLyogVU5JVl9ERUJVRyAqLwogCQl9 IGVsc2UgewogCQkJcndfbG9ja194X3VubG9jaygocndfbG9ja190KilvYmplY3QpOwogCQl9Cgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jJwotLS0gYS9z dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmMJcmV2aWQ6cm9oaXQua2FsaGFuc0BvcmFjbGUu Y29tLTIwMTEwODI5MDc1OTE4LXIxYzZoaGxhMjkxMml0c2YKKysrIGIvc3RvcmFnZS9pbm5vYmFz ZS9yb3cvcm93MGlucy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwODI5MDg0 NTMwLTA2dHF3Z3Zjbm90cmxjdWcKQEAgLTIwOTEsMTUgKzIwOTEsMjAgQEAgcm93X2luc19pbmRl eF9lbnRyeV9sb3coCiAJCQlpZiAoYmlnX3JlYykgewogCQkJCXV0X2EoZXJyID09IERCX1NVQ0NF U1MpOwogCQkJCS8qIFdyaXRlIG91dCB0aGUgZXh0ZXJuYWxseSBzdG9yZWQKLQkJCQljb2x1bW5z IHdoaWxlIHN0aWxsIHgtbGF0Y2hpbmcKLQkJCQlpbmRleC0+bG9jayBhbmQgYmxvY2stPmxvY2su IFdlIGhhdmUKLQkJCQl0byBtdHJfY29tbWl0KG10cikgZmlyc3QsIHNvIHRoYXQgdGhlCi0JCQkJ cmVkbyBsb2cgd2lsbCBiZSB3cml0dGVuIGluIHRoZQotCQkJCWNvcnJlY3Qgb3JkZXIuIE90aGVy d2lzZSwgd2Ugd291bGQgcnVuCi0JCQkJaW50byB0cm91YmxlIG9uIGNyYXNoIHJlY292ZXJ5IGlm IG10cgotCQkJCWZyZWVkIEItdHJlZSBwYWdlcyBvbiB3aGljaCBzb21lIG9mCi0JCQkJdGhlIGJp Z19yZWMgZmllbGRzIHdpbGwgYmUgd3JpdHRlbi4gKi8KLQkJCQlidHJfY3VyX210cl9jb21taXRf YW5kX3N0YXJ0KCZjdXJzb3IsICZtdHIpOworCQkJCWNvbHVtbnMsIGJ1dCBhbGxvY2F0ZSB0aGUg cGFnZXMgYW5kCisJCQkJd3JpdGUgdGhlIHBvaW50ZXJzIHVzaW5nIHRoZQorCQkJCW1pbmktdHJh bnNhY3Rpb24gb2YgdGhlIHJlY29yZCB1cGRhdGUuCisJCQkJSWYgYW55IHBhZ2VzIHdlcmUgZnJl ZWQgaW4gdGhlIHVwZGF0ZSwKKwkJCQl0ZW1wb3JhcmlseSBtYXJrIHRoZW0gYWxsb2NhdGVkIHNv CisJCQkJdGhhdCBvZmYtcGFnZSBjb2x1bW5zIHdpbGwgbm90CisJCQkJb3ZlcndyaXRlIHRoZW0u IFdlIG11c3QgZG8gdGhpcywKKwkJCQliZWNhdXNlIHdlIHdpbGwgd3JpdGUgdGhlIHJlZG8gbG9n IGZvcgorCQkJCXRoZSBCTE9CIHdyaXRlcyBiZWZvcmUgd3JpdGluZyB0aGUKKwkJCQlyZWRvIGxv ZyBmb3IgdGhlIHJlY29yZCB1cGRhdGUuIFRodXMsCisJCQkJcmVkbyBsb2cgYXBwbGljYXRpb24g YXQgY3Jhc2ggcmVjb3ZlcnkKKwkJCQl3aWxsIHNlZSBCTE9CcyBiZWluZyB3cml0dGVuIHRvIGZy ZWUgcGFnZXMuICovCisKKwkJCQlidHJfbWFya19mcmVlZF9sZWF2ZXMoaW5kZXgsICZtdHIsIFRS VUUpOwogCiAJCQkJcmVjID0gYnRyX2N1cl9nZXRfcmVjKCZjdXJzb3IpOwogCQkJCW9mZnNldHMg PSByZWNfZ2V0X29mZnNldHMoCkBAIC0yMTA4LDcgKzIxMTMsOCBAQCByb3dfaW5zX2luZGV4X2Vu dHJ5X2xvdygKIAogCQkJCWVyciA9IGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoCiAJ CQkJCWluZGV4LCBidHJfY3VyX2dldF9ibG9jaygmY3Vyc29yKSwKLQkJCQkJcmVjLCBvZmZzZXRz LCAmbXRyLCBGQUxTRSwgYmlnX3JlYyk7CisJCQkJCXJlYywgb2Zmc2V0cywgYmlnX3JlYywgJm10 ciwKKwkJCQkJRkFMU0UsICZtdHIpOwogCQkJCS8qIElmIHdyaXRpbmcgYmlnX3JlYyBmYWlscyAo Zm9yCiAJCQkJZXhhbXBsZSwgYmVjYXVzZSBvZiBEQl9PVVRfT0ZfRklMRV9TUEFDRSksCiAJCQkJ dGhlIHJlY29yZCB3aWxsIGJlIGNvcnJ1cHRlZC4gRXZlbiBpZgpAQCAtMjEyMSw2ICsyMTI3LDkg QEAgcm93X2luc19pbmRleF9lbnRyeV9sb3coCiAJCQkJdW5kbyBsb2csIGFuZCB0aHVzIHRoZSBy ZWNvcmQgY2Fubm90CiAJCQkJYmUgcm9sbGVkIGJhY2suICovCiAJCQkJdXRfYShlcnIgPT0gREJf U1VDQ0VTUyk7CisJCQkJLyogRnJlZSB0aGUgcGFnZXMgYWdhaW4KKwkJCQlpbiBvcmRlciB0byBh dm9pZCBhIGxlYWsuICovCisJCQkJYnRyX21hcmtfZnJlZWRfbGVhdmVzKGluZGV4LCAmbXRyLCBG QUxTRSk7CiAJCQkJZ290byBzdG9yZWRfYmlnX3JlYzsKIAkJCX0KIAkJfSBlbHNlIHsKQEAgLTIx NjIsNyArMjE3MSw3IEBAIGZ1bmN0aW9uX2V4aXQ6CiAKIAkJZXJyID0gYnRyX3N0b3JlX2JpZ19y ZWNfZXh0ZXJuX2ZpZWxkcygKIAkJCWluZGV4LCBidHJfY3VyX2dldF9ibG9jaygmY3Vyc29yKSwK LQkJCXJlYywgb2Zmc2V0cywgJm10ciwgRkFMU0UsIGJpZ19yZWMpOworCQkJcmVjLCBvZmZzZXRz LCBiaWdfcmVjLCAmbXRyLCBGQUxTRSwgTlVMTCk7CiAKIHN0b3JlZF9iaWdfcmVjOgogCQlpZiAo bW9kaWZ5KSB7CkBAIC0yNDM3LDcgKzI0NDYsNyBAQCByb3dfaW5zKAogCQlub2RlLT5pbmRleCA9 IGRpY3RfdGFibGVfZ2V0X25leHRfaW5kZXgobm9kZS0+aW5kZXgpOwogCQlub2RlLT5lbnRyeSA9 IFVUX0xJU1RfR0VUX05FWFQodHVwbGVfbGlzdCwgbm9kZS0+ZW50cnkpOwogCi0JCS8qIFNraXAg Y29ycnVwdGVkIHNlY29uZGFyIGluZGV4IGFuZCBpdHMgZW50cnkgKi8KKwkJLyogU2tpcCBjb3Jy dXB0ZWQgc2Vjb25kYXJ5IGluZGV4IGFuZCBpdHMgZW50cnkgKi8KIAkJd2hpbGUgKG5vZGUtPmlu ZGV4ICYmIGRpY3RfaW5kZXhfaXNfY29ycnVwdGVkKG5vZGUtPmluZGV4KSkgewogCiAJCQlub2Rl LT5pbmRleCA9IGRpY3RfdGFibGVfZ2V0X25leHRfaW5kZXgobm9kZS0+aW5kZXgpOwoKPT09IG1v ZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzByb3cuYycKLS0tIGEvc3RvcmFn ZS9pbm5vYmFzZS9yb3cvcm93MHJvdy5jCXJldmlkOnJvaGl0LmthbGhhbnNAb3JhY2xlLmNvbS0y MDExMDgyOTA3NTkxOC1yMWM2aGhsYTI5MTJpdHNmCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93 L3JvdzByb3cuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDgyOTA4NDUzMC0w NnRxd2d2Y25vdHJsY3VnCkBAIC0yNDMsMTkgKzI0MywyMCBAQCByb3dfYnVpbGQoCiAJfQogCiAj aWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCi0J LyogVGhpcyBjb25kaXRpb24gY2FuIG9jY3VyIGR1cmluZyBjcmFzaCByZWNvdmVyeSBiZWZvcmUK LQl0cnhfcm9sbGJhY2tfYWN0aXZlKCkgaGFzIGNvbXBsZXRlZCBleGVjdXRpb24uCisJaWYgKHJl Y19vZmZzX2FueV9udWxsX2V4dGVybihyZWMsIG9mZnNldHMpKSB7CisJCS8qIFRoaXMgY29uZGl0 aW9uIGNhbiBvY2N1ciBkdXJpbmcgY3Jhc2ggcmVjb3ZlcnkKKwkJYmVmb3JlIHRyeF9yb2xsYmFj a19hY3RpdmUoKSBoYXMgY29tcGxldGVkIGV4ZWN1dGlvbi4KIAotCVRoaXMgY29uZGl0aW9uIGlz IHBvc3NpYmxlIGlmIHRoZSBzZXJ2ZXIgY3Jhc2hlZAotCWR1cmluZyBhbiBpbnNlcnQgb3IgdXBk YXRlIGJlZm9yZQotCWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoKSBkaWQgbXRyX2Nv bW1pdCgpIGFsbAotCUJMT0IgcG9pbnRlcnMgdG8gdGhlIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQu Ci0KLQlJZiB0aGUgcmVjb3JkIGNvbnRhaW5zIGEgbnVsbCBCTE9CIHBvaW50ZXIsIGxvb2sgdXAg dGhlCi0JdHJhbnNhY3Rpb24gdGhhdCBob2xkcyB0aGUgaW1wbGljaXQgbG9jayBvbiB0aGlzIHJl Y29yZCwgYW5kCi0JYXNzZXJ0IHRoYXQgaXQgd2FzIHJlY292ZXJlZCAoYW5kIHdpbGwgc29vbiBi ZSByb2xsZWQgYmFjaykuICovCi0JdXRfYSghcmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHJlYywg b2Zmc2V0cykKLQkgICAgIHx8IHRyeF9hc3NlcnRfcmVjb3ZlcmVkKHJvd19nZXRfcmVjX3RyeF9p ZChyZWMsIGluZGV4LCBvZmZzZXRzKSkpOworCQlUaGlzIGNvbmRpdGlvbiBpcyBwb3NzaWJsZSBp ZiB0aGUgc2VydmVyIGNyYXNoZWQKKwkJZHVyaW5nIGFuIGluc2VydCBvciB1cGRhdGUtYnktZGVs ZXRlLWFuZC1pbnNlcnQgYmVmb3JlCisJCWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMo KSBkaWQgbXRyX2NvbW1pdCgpIGFsbAorCQlCTE9CIHBvaW50ZXJzIHRvIHRoZSBmcmVzaGx5IGlu c2VydGVkIGNsdXN0ZXJlZCBpbmRleAorCQlyZWNvcmQuICovCisJCXV0X2EodHJ4X2Fzc2VydF9y ZWNvdmVyZWQoCisJCQkgICAgIHJvd19nZXRfcmVjX3RyeF9pZChyZWMsIGluZGV4LCBvZmZzZXRz KSkpOworCQl1dF9hKHRyeF91bmRvX3JvbGxfcHRyX2lzX2luc2VydCgKKwkJCSAgICAgcm93X2dl dF9yZWNfcm9sbF9wdHIocmVjLCBpbmRleCwgb2Zmc2V0cykpKTsKKwl9CiAjZW5kaWYgLyogVU5J Vl9ERUJVRyB8fCBVTklWX0JMT0JfTElHSFRfREVCVUcgKi8KIAogCWlmICh0eXBlICE9IFJPV19D T1BZX1BPSU5URVJTKSB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cv cm93MHVwZC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMJcmV2aWQ6cm9o aXQua2FsaGFuc0BvcmFjbGUuY29tLTIwMTEwODI5MDc1OTE4LXIxYzZoaGxhMjkxMml0c2YKKysr IGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTEwODI5MDg0NTMwLTA2dHF3Z3Zjbm90cmxjdWcKQEAgLTIwMDQsMjEgKzIwMDQs MjIgQEAgcm93X3VwZF9jbHVzdF9yZWMoCiAJCXJlY19vZmZzX2luaXQob2Zmc2V0c18pOwogCiAJ CXV0X2EoZXJyID09IERCX1NVQ0NFU1MpOwotCQkvKiBXcml0ZSBvdXQgdGhlIGV4dGVybmFsbHkg c3RvcmVkIGNvbHVtbnMgd2hpbGUgc3RpbGwKLQkJeC1sYXRjaGluZyBpbmRleC0+bG9jayBhbmQg YmxvY2stPmxvY2suIFdlIGhhdmUgdG8KLQkJbXRyX2NvbW1pdChtdHIpIGZpcnN0LCBzbyB0aGF0 IHRoZSByZWRvIGxvZyB3aWxsIGJlCi0JCXdyaXR0ZW4gaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIE90 aGVyd2lzZSwgd2Ugd291bGQgcnVuCi0JCWludG8gdHJvdWJsZSBvbiBjcmFzaCByZWNvdmVyeSBp ZiBtdHIgZnJlZWQgQi10cmVlCi0JCXBhZ2VzIG9uIHdoaWNoIHNvbWUgb2YgdGhlIGJpZ19yZWMg ZmllbGRzIHdpbGwgYmUKLQkJd3JpdHRlbi4gKi8KLQkJYnRyX2N1cl9tdHJfY29tbWl0X2FuZF9z dGFydChidHJfY3VyLCBtdHIpOworCQkvKiBXcml0ZSBvdXQgdGhlIGV4dGVybmFsbHkgc3RvcmVk IGNvbHVtbnMsIGJ1dAorCQlhbGxvY2F0ZSB0aGUgcGFnZXMgYW5kIHdyaXRlIHRoZSBwb2ludGVy cyB1c2luZyB0aGUKKwkJbWluaS10cmFuc2FjdGlvbiBvZiB0aGUgcmVjb3JkIHVwZGF0ZS4gSWYg YW55IHBhZ2VzCisJCXdlcmUgZnJlZWQgaW4gdGhlIHVwZGF0ZSwgdGVtcG9yYXJpbHkgbWFyayB0 aGVtCisJCWFsbG9jYXRlZCBzbyB0aGF0IG9mZi1wYWdlIGNvbHVtbnMgd2lsbCBub3Qgb3Zlcndy aXRlCisJCXRoZW0uIFdlIG11c3QgZG8gdGhpcywgYmVjYXVzZSB3ZSB3cml0ZSB0aGUgcmVkbyBs b2cKKwkJZm9yIHRoZSBCTE9CIHdyaXRlcyBiZWZvcmUgd3JpdGluZyB0aGUgcmVkbyBsb2cgZm9y CisJCXRoZSByZWNvcmQgdXBkYXRlLiAqLwogCisJCWJ0cl9tYXJrX2ZyZWVkX2xlYXZlcyhpbmRl eCwgbXRyLCBUUlVFKTsKIAkJcmVjID0gYnRyX2N1cl9nZXRfcmVjKGJ0cl9jdXIpOwogCQllcnIg PSBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKAogCQkJaW5kZXgsIGJ0cl9jdXJfZ2V0 X2Jsb2NrKGJ0cl9jdXIpLCByZWMsCiAJCQlyZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCwgb2Zm c2V0c18sCiAJCQkJCVVMSU5UX1VOREVGSU5FRCwgJmhlYXApLAotCQkJbXRyLCBUUlVFLCBiaWdf cmVjKTsKKwkJCWJpZ19yZWMsIG10ciwgVFJVRSwgbXRyKTsKIAkJLyogSWYgd3JpdGluZyBiaWdf cmVjIGZhaWxzIChmb3IgZXhhbXBsZSwgYmVjYXVzZSBvZgogCQlEQl9PVVRfT0ZfRklMRV9TUEFD RSksIHRoZSByZWNvcmQgd2lsbCBiZSBjb3JydXB0ZWQuCiAJCUV2ZW4gaWYgd2UgZGlkIG5vdCB1 cGRhdGUgYW55IGV4dGVybmFsbHkgc3RvcmVkCkBAIC0yMDI4LDYgKzIwMjksOCBAQCByb3dfdXBk X2NsdXN0X3JlYygKIAkJdG8gdGhlIHVuZG8gbG9nLCBhbmQgdGh1cyB0aGUgcmVjb3JkIGNhbm5v dCBiZSByb2xsZWQKIAkJYmFjay4gKi8KIAkJdXRfYShlcnIgPT0gREJfU1VDQ0VTUyk7CisJCS8q IEZyZWUgdGhlIHBhZ2VzIGFnYWluIGluIG9yZGVyIHRvIGF2b2lkIGEgbGVhay4gKi8KKwkJYnRy X21hcmtfZnJlZWRfbGVhdmVzKGluZGV4LCBtdHIsIEZBTFNFKTsKIAl9CiAKIAltdHJfY29tbWl0 KG10cik7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHVuZG8u YycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHVuZG8uYwlyZXZpZDpyb2hpdC5rYWxo YW5zQG9yYWNsZS5jb20tMjAxMTA4MjkwNzU5MTgtcjFjNmhobGEyOTEyaXRzZgorKysgYi9zdG9y YWdlL2lubm9iYXNlL3RyeC90cngwdW5kby5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwODI5MDg0NTMwLTA2dHF3Z3Zjbm90cmxjdWcKQEAgLTEsNiArMSw2IEBACiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk2LCAyMDA5LCBJbm5vYmFzZSBPeS4g QWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NiwgMjAxMSwgT3JhY2xlIGFu ZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC05MjAsNyArOTIwLDcgQEAgdHJ4X3Vu ZG9fYWRkX3BhZ2UoCiAJcGFnZV9ubyA9IGZzZWdfYWxsb2NfZnJlZV9wYWdlX2dlbmVyYWwoaGVh ZGVyX3BhZ2UgKyBUUlhfVU5ET19TRUdfSERSCiAJCQkJCSAgICAgICArIFRSWF9VTkRPX0ZTRUdf SEVBREVSLAogCQkJCQkgICAgICAgdW5kby0+dG9wX3BhZ2Vfbm8gKyAxLCBGU1BfVVAsCi0JCQkJ CSAgICAgICBUUlVFLCBtdHIpOworCQkJCQkgICAgICAgVFJVRSwgbXRyLCBtdHIpOwogCiAJZmls X3NwYWNlX3JlbGVhc2VfZnJlZV9leHRlbnRzKHVuZG8tPnNwYWNlLCBuX3Jlc2VydmVkKTsKIAoK Tm8gYnVuZGxlIChyZWFzb246IHVzZWxlc3MgZm9yIHB1c2ggZW1haWxzKS4=