From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Mattias Ellert To: git-commits@fedoraproject.org Subject: [rpms/globus-ftp-control] rawhide: Fix compiler warnings Date: Sun, 14 Jun 2026 08:46:05 GMT Message-ID: <178142676544.1.2775375303281980534.rpms-globus-ftp-control-810997f54f4a@fedoraproject.org> List-ID: X-Git-Repo: rpms/globus-ftp-control X-Git-Branch: rawhide X-Git-Rev: 810997f54f4a18473f998240938d838d9eb6ca5a QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2xvYnVzLWZ0cC1j b250cm9sCkJyYW5jaCA6IHJhd2hpZGUKQ29tbWl0IDogODEwOTk3ZjU0ZjRhMTg0NzNmOTk4MjQw OTM4ZDgzOGQ5ZWI2Y2E1YQpBdXRob3IgOiBNYXR0aWFzIEVsbGVydCA8bWF0dGlhcy5lbGxlcnRA cGh5c2ljcy51dS5zZT4KRGF0ZSAgIDogMjAyNi0wNi0xNFQxMDozOToxMyswMjowMApTdGF0cyAg OiArNTk1Ny8tMSBpbiAzIGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVj dC5vcmcvcnBtcy9nbG9idXMtZnRwLWNvbnRyb2wvYy84MTA5OTdmNTRmNGExODQ3M2Y5OTgyNDA5 MzhkODM4ZDllYjZjYTVhP2JyYW5jaD1yYXdoaWRlCgpMb2c6CkZpeCBjb21waWxlciB3YXJuaW5n cwoKLS0tCmRpZmYgLS1naXQgYS8wMDAxLVVudGFiaWZ5LWFuZC1yZW1vdmUtdHJhaWxpbmctd2hp dGUtc3BhY2UucGF0Y2ggYi8wMDAxLVVudGFiaWZ5LWFuZC1yZW1vdmUtdHJhaWxpbmctd2hpdGUt c3BhY2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUyOTE2OQot LS0gL2Rldi9udWxsCisrKyBiLzAwMDEtVW50YWJpZnktYW5kLXJlbW92ZS10cmFpbGluZy13aGl0 ZS1zcGFjZS5wYXRjaApAQCAtMCwwICsxLDU1ODMgQEAKK0Zyb20gM2NjZGFhMDIzNjIzMGJiY2Jj YmYzMzllN2RmZGZhZjIzYzEwYmQ2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1h dHRpYXMgRWxsZXJ0IDxtYXR0aWFzLmVsbGVydEBwaHlzaWNzLnV1LnNlPgorRGF0ZTogV2VkLCAy MCBNYXkgMjAyNiAwMDoxNTozNyArMDIwMAorU3ViamVjdDogW1BBVENIIDEvMl0gVW50YWJpZnkg YW5kIHJlbW92ZSB0cmFpbGluZyB3aGl0ZS1zcGFjZQorCistLS0KKyAuLi4vY29udHJvbC9zb3Vy Y2UvZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGEuYyAgfCA4NjggKysrKysrKy0tLS0tLS0tCisgLi4u L3NvdXJjZS9nbG9idXNfZnRwX2NvbnRyb2xfc2VydmVyLmMgICAgICAgIHwgOTkyICsrKysrKysr Ky0tLS0tLS0tLQorIGdyaWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC9jb25uZWN0X3Rlc3QuYyAg ICB8ICAxNiArLQorIGdyaWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC9kYXRhX3Rlc3QuYyAgICAg ICB8IDEyMCArLS0KKyAuLi4vc291cmNlL3Rlc3QvZ2xvYnVzX2Z0cF9jb250cm9sX3Rlc3QuYyAg ICAgfCAgNTIgKy0KKyBncmlkZnRwL2NvbnRyb2wvc291cmNlL3Rlc3QvdGVzdF9zZXJ2ZXIuYyAg ICAgfCAgIDQgKy0KKyA2IGZpbGVzIGNoYW5nZWQsIDEwMjYgaW5zZXJ0aW9ucygrKSwgMTAyNiBk ZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dyaWRmdHAvY29udHJvbC9zb3VyY2UvZ2xvYnVz X2Z0cF9jb250cm9sX2RhdGEuYyBiL2dyaWRmdHAvY29udHJvbC9zb3VyY2UvZ2xvYnVzX2Z0cF9j b250cm9sX2RhdGEuYworaW5kZXggNjhkZGVlMzI1Li42MTlhYTQ4MTAgMTAwNjQ0CistLS0gYS9n cmlkZnRwL2NvbnRyb2wvc291cmNlL2dsb2J1c19mdHBfY29udHJvbF9kYXRhLmMKKysrKyBiL2dy aWRmdHAvY29udHJvbC9zb3VyY2UvZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGEuYworQEAgLTE5Miw3 ICsxOTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBnbG9idXNfaV9mdHBfZGNfdHJhbnNmZXJfaGFuZGxl X3MKKyAgICAgZ2xvYnVzX211dGV4X3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRl eDsKKyAgICAgZ2xvYnVzX2lfZnRwX2RjX2hhbmRsZV90ICogICAgICAgICAgICAgICAgICB3aG9z X215X2RhZGR5OworICAgICBzdHJ1Y3QgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV9zICogICAg ICAgIGNvbnRyb2xfaGFuZGxlOworLSAgICAKKysKKyAgICAgZ2xvYnVzX211dGV4X3QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvcmRlcl9tdXRleDsKKyAgICAgZ2xvYnVzX2Jvb2xfdCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcl9kYXRhOworICAgICBpbnQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyX2N0cjsKK0BAIC0zMDEsNyAr MzAxLDcgQEAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfZGF0YV9zdHJlYW1fY29ubmVjdF9kaXJlY3Rp b24oCisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2xfZnRwX2RhdGFfc3RyZWFtX3N0cmlw ZV9wb2xsKAorLSAgICBnbG9idXNfZnRwX2RhdGFfc3RyaXBlX3QgKgkJICAgICAgICAgc3RyaXBl KTsKKysgICAgZ2xvYnVzX2Z0cF9kYXRhX3N0cmlwZV90ICogICAgICAgICAgICAgICAgICAgc3Ry aXBlKTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfbF9mdHBfZGF0YV9zdHJpcGVfcG9s bCgKK0BAIC02NzIsNyArNjcyLDcgQEAgZ2xvYnVzX2lfZnRwX2NvbnRyb2xfZGF0YV9zZXRfbmV0 bG9nZ2VyKAorICAqIGVsc2UgaWYgcHJpb3JpdHlfMSBjb21lcyBiZWZvcmUgcHJpb3JpdHlfMiwg cmV0dXJuIDwgMAorICAqIGVsc2UgcmV0dXJuIDAKKyAgKi8KKy0gCisrCisgc3RhdGljCisgaW50 CisgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfcV9jb21wYXJlKAorQEAgLTY4MiwxMCArNjgyLDEwIEBA IGdsb2J1c19sX2Z0cF9jb250cm9sX3FfY29tcGFyZSgKKyAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmM7CisgICAgIGdsb2J1c19sX2Z0cF9oYW5kbGVfdGFibGVfZW50 cnlfdCAqIGVudHJ5MTsKKyAgICAgZ2xvYnVzX2xfZnRwX2hhbmRsZV90YWJsZV9lbnRyeV90ICog ZW50cnkyOworLSAgICAKKysKKyAgICAgZW50cnkxID0gKGdsb2J1c19sX2Z0cF9oYW5kbGVfdGFi bGVfZW50cnlfdCAqKSBwcmlvcml0eV8xOworICAgICBlbnRyeTIgPSAoZ2xvYnVzX2xfZnRwX2hh bmRsZV90YWJsZV9lbnRyeV90ICopIHByaW9yaXR5XzI7CistICAgIAorKworICAgICBpZihlbnRy eTEtPm9mZnNldCA+IGVudHJ5Mi0+b2Zmc2V0IHx8IGVudHJ5MS0+ZW9mKQorICAgICB7CisgICAg ICAgICByYyA9IDE7CitAQCAtNzY2LDcgKzc2Niw3IEBAIGdsb2J1c19pX2Z0cF9jb250cm9sX2Ny ZWF0ZV9zdGFjaygKKyAgICAgICAgICFnbG9idXNfbGlzdF9lbXB0eShsaXN0KTsKKyAgICAgICAg IGxpc3QgPSBnbG9idXNfbGlzdF9yZXN0KGxpc3QpKQorICAgICB7CistICAgICAgICBkcml2ZXJf ZW50ID0gCisrICAgICAgICBkcml2ZXJfZW50ID0KKyAgICAgICAgICAgICAoZ2xvYnVzX2lfZnRw X2NvbnRyb2xfc3RhY2tfZW50cnlfdCAqKSBnbG9idXNfbGlzdF9maXJzdChsaXN0KTsKKyAKKyAg ICAgICAgIHJlc3VsdCA9IEdMT0JVU19TVUNDRVNTOworQEAgLTc4OCwxMyArNzg4LDEzIEBAIGds b2J1c19pX2Z0cF9jb250cm9sX2NyZWF0ZV9zdGFjaygKKyAgICAgICAgICAgICAgICAgZHJpdmVy X2VudC0+b3B0cyk7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVybiBH TE9CVVNfU1VDQ0VTUzsKKyAKKyBlcnJvcjoKKyAgICAgZ2xvYnVzX3hpb19zdGFja19kZXN0cm95 KCpzdGFjayk7CisgICAgIHJldHVybiByZXN1bHQ7CistICAgIAorKworIH0KKyAKKyB2b2lkCitA QCAtODA3LDExICs4MDcsMTEgQEAgZ2xvYnVzX2lfZnRwX2NvbnRyb2xfdW5sb2FkX3hpb19kcml2 ZXJzKAorICAgICB7CisgICAgICAgICBkcml2ZXJfZW50ID0gKGdsb2J1c19pX2Z0cF9jb250cm9s X3N0YWNrX2VudHJ5X3QgKikKKyAgICAgICAgICAgICBnbG9idXNfbGlzdF9maXJzdChkcml2ZXJf bGlzdCk7CistICAgICAgIAorLSAgICAgICAgIAorKworKworICAgICAgICAgaWYoZHJpdmVyX2Vu dC0+ZHJpdmVyX25hbWUpCisgICAgICAgICB7CistICAgICAgICAgICAgaWYoc3RyY21wKGRyaXZl cl9lbnQtPmRyaXZlcl9uYW1lLCAidGNwIikgIT0gMCAmJiAKKysgICAgICAgICAgICBpZihzdHJj bXAoZHJpdmVyX2VudC0+ZHJpdmVyX25hbWUsICJ0Y3AiKSAhPSAwICYmCisgICAgICAgICAgICAg ICAgIHN0cmNtcChkcml2ZXJfZW50LT5kcml2ZXJfbmFtZSwgImdzaSIpICE9IDApCisgICAgICAg ICAgICAgeworICAgICAvKiAgICAgICAgZ2xvYnVzX3hpb19kcml2ZXJfdW5sb2FkKGRyaXZlcl9l bnQtPmRyaXZlcik7ICovCitAQCAtODI0LDExICs4MjQsMTEgQEAgZ2xvYnVzX2lfZnRwX2NvbnRy b2xfdW5sb2FkX3hpb19kcml2ZXJzKAorICAgICAgICAgICAgIGdsb2J1c19mcmVlKGRyaXZlcl9l bnQtPm9wdHMpOworICAgICAgICAgfQorICAgICAgICAgZ2xvYnVzX2ZyZWUoZHJpdmVyX2VudCk7 CistICAgICAgICAKKysKKyAgICAgICAgIGdsb2J1c19saXN0X3JlbW92ZSgmZHJpdmVyX2xpc3Qs IGRyaXZlcl9saXN0KTsKKyAgICAgfQorIH0KKy0gICAKKysKKyBnbG9idXNfcmVzdWx0X3QKKyBn bG9idXNfaV9mdHBfY29udHJvbF9sb2FkX3hpb19kcml2ZXJzKAorICAgICBjaGFyICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJfc3RyaW5nLAorQEAgLTg1Niw3ICs4NTYsNyBA QCBnbG9idXNfaV9mdHBfY29udHJvbF9sb2FkX3hpb19kcml2ZXJzKAorICAgICAgICAgICAgIGlm KHB0ciAhPSBOVUxMKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgKnB0ciA9ICdc MCc7CistICAgICAgICAgICAgICAgIHRtcF9zdHIgPSBwdHIrMTsgCisrICAgICAgICAgICAgICAg IHRtcF9zdHIgPSBwdHIrMTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZWxzZQorICAg ICAgICAgICAgIHsKK0BAIC04OTMsNyArODkzLDcgQEAgZ2xvYnVzX2lfZnRwX2NvbnRyb2xfbG9h ZF94aW9fZHJpdmVycygKKyAKKyAgICAgICAgICAgICBnbG9idXNfbGlzdF9pbnNlcnQoJmxpc3Qs IHN0YWNrX2VudCk7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIGdsb2J1c19m cmVlKGRyaXZlcl9zdHIpOworICAgICB9CisgICAgIGVsc2UKK0BAIC05MTksNyArOTE5LDcgQEAg Z2xvYnVzX2lfZnRwX2NvbnRyb2xfbG9hZF94aW9fZHJpdmVycygKKyAgICAgICAgIGdsb2J1c19s aXN0X2luc2VydChkcml2ZXJfbGlzdCwgZ2xvYnVzX2xpc3RfZmlyc3QobGlzdCkpOworICAgICAg ICAgZ2xvYnVzX2xpc3RfcmVtb3ZlKCZsaXN0LCBsaXN0KTsKKyAgICAgfQorLSAgICAKKysKKyAg ICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIAorIGVycm9yX2xvYWQ6CitAQCAtMTA0OSw3ICsx MDQ5LDcgQEAgZ2xvYnVzX2xpc3RfcmVtb3ZlX2VsZW1lbnQoCisgICovCisgZ2xvYnVzX3Jlc3Vs dF90CisgZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfY29ubmVjdF9yZWFkKAorLSAgICBnbG9idXNf ZnRwX2NvbnRyb2xfaGFuZGxlX3QgKgkJaGFuZGxlLAorKyAgICBnbG9idXNfZnRwX2NvbnRyb2xf aGFuZGxlX3QgKiAgICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVzX2Z0cF9jb250cm9s X2RhdGFfY29ubmVjdF9jYWxsYmFja190ICBjYWxsYmFjaywKKyAgICAgdm9pZCAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2FyZykKKyB7CitAQCAtMTEwMSw3ICsx MTAxLDcgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfY29ubmVjdF9yZWFkKAorICAgICAgICAg ICAgIGdsb2J1c19vYmplY3RfZnJlZShkY19oYW5kbGUtPmNvbm5lY3RfZXJyb3IpOworICAgICAg ICAgICAgIGRjX2hhbmRsZS0+Y29ubmVjdF9lcnJvciA9IEdMT0JVU19OVUxMOworICAgICAgICAg fQorLSAgICAgICAgCisrCisgICAgICAgICBpZihkY19oYW5kbGUtPm1vZGUgPT0gR0xPQlVTX0ZU UF9DT05UUk9MX01PREVfU1RSRUFNKQorICAgICAgICAgeworICAgICAgICAgICAgIGlmKGRjX2hh bmRsZS0+c3RhdGUgIT0gR0xPQlVTX0ZUUF9EQVRBX1NUQVRFX1BPUlQgJiYKK0BAIC0xMjQ0LDcg KzEyNDQsNyBAQCBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV9zZXRfaW50ZXJmYWNlKAorICAqLwor IGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY29udHJvbF9kYXRhX2Nvbm5lY3Rfd3JpdGUo CistICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqCQloYW5kbGUsCisrICAgIGdsb2J1 c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgaGFuZGxlLAorICAgICBnbG9i dXNfZnRwX2NvbnRyb2xfZGF0YV9jb25uZWN0X2NhbGxiYWNrX3QgIGNhbGxiYWNrLAorICAgICB2 b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJnKQorIHsK K0BAIC0xMjg1LDcgKzEyODUsNyBAQCBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV9jb25uZWN0X3dy aXRlKAorICAgICAgICAgICAgIGdsb2J1c19vYmplY3RfZnJlZShkY19oYW5kbGUtPmNvbm5lY3Rf ZXJyb3IpOworICAgICAgICAgICAgIGRjX2hhbmRsZS0+Y29ubmVjdF9lcnJvciA9IEdMT0JVU19O VUxMOworICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBpZihkY19oYW5kbGUtPm1v ZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX01PREVfU1RSRUFNKQorICAgICAgICAgeworICAgICAg ICAgICAgIGlmKGRjX2hhbmRsZS0+c3RhdGUgIT0gR0xPQlVTX0ZUUF9EQVRBX1NUQVRFX1BPUlQg JiYKK0BAIC0xOTEwLDcgKzE5MTAsNyBAQCBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV9hZGRfY2hh bm5lbHMoCisgICogU2VuZHMgYW4gRU9GIG1lc3NhZ2UgdG8gZWFjaCBzdHJpcGUgYWxvbmcgYW4g b3BlbiBkYXRhIGNvbm5lY3Rpb24uCisgICoKKyAgKiBAcGFyYW0gaGFuZGxlCistICogICAgICAg IEEgcG9pbnRlciB0byBhIEZUUCBjb250cm9sIGhhbmRsZS4gIFRoaXMgaGFuZGxlIGNvbnRhaW5z IAorKyAqICAgICAgICBBIHBvaW50ZXIgdG8gYSBGVFAgY29udHJvbCBoYW5kbGUuICBUaGlzIGhh bmRsZSBjb250YWlucworICAqICAgICAgICB0aGUgc3RhdGUgZm9yIGEgY29ubmVjdGlvbi4KKyAg KiBAcGFyYW0gIGNvdW50W10KKyAgKiAgICAgICAgVGhpcyBhcnJheSBvZiBpbnRlZ2VycyBzaG91 bGQgY29udGFpbiBhbiBpbnRlZ2VyIHRoYXQKK0BAIC0yMDMxLDcgKzIwMzEsNyBAQCBnbG9idXNf ZnRwX2NvbnRyb2xfZGF0YV9zZW5kX2VvZigKKyAgICAgICAgICAgICAgICAgOiBnbG9idXNfZXJy b3JfY29uc3RydWN0X3N0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBf Q09OVFJPTF9NT0RVTEUsCisgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKy0g ICBfRkNTTCgiZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfc2VuZF9lb2YoKSBoYW5kbGUgbm90IGlu IHByb3BlciBzdGF0ZSAlcyIpLCAKKysgICBfRkNTTCgiZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFf c2VuZF9lb2YoKSBoYW5kbGUgbm90IGluIHByb3BlciBzdGF0ZSAlcyIpLAorICAgICBnbG9idXNf bF9mdHBfY29udHJvbF9zdGF0ZV90b19zdHJpbmcoZGNfaGFuZGxlLT5zdGF0ZSkpOworICAgICAg ICAgfQorICAgICAgICAgZWxzZSBpZighdHJhbnNmZXJfaGFuZGxlLT5lb2ZfcmVnaXN0ZXJlZCkK K0BAIC0yMDQzLDEzICsyMDQzLDEzIEBAIGdsb2J1c19mdHBfY29udHJvbF9kYXRhX3NlbmRfZW9m KAorICAgICAgICAgfQorICAgICAgICAgZWxzZSBpZihkY19oYW5kbGUtPnNlbmRfZW9mKQorICAg ICAgICAgeworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGVyciA9ICBnbG9idXNfZXJy b3JfY29uc3RydWN0X3N0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBf Q09OVFJPTF9NT0RVTEUsCisgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKyAg ICBfRkNTTCgiZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfc2VuZF9lb2YoKSA6IFRoZSBjdXJyZW50 IGhhbmRsZSBpcyBzZXQgdG8gYXV0b21hdGljYWxseSBzZW5kIGVvZi4gIFBhc3MgR0xPQlVTX0ZB TFNFIHRvIGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9zZW5kX2VvZigpLiIpKTsKKyAgICAgICAg IH0KKy0gICAgICAgIAorKworICAgICAgICAgaWYoZXJyKQorICAgICAgICAgeworICAgICAgICAg ICAgIGdsb2J1c19tdXRleF91bmxvY2soJmRjX2hhbmRsZS0+bXV0ZXgpOworQEAgLTIzMDcsOCAr MjMwNyw4IEBAIGdsb2J1c19mdHBfY29udHJvbF9kYXRhX3JlbW92ZV9jaGFubmVscygKKyAgKi8K KyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV9xdWVyeV9jaGFubmVs cygKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgdW5z aWduZWQgaW50ICoJCQkJbnVtX2NoYW5uZWxzLAorKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFu ZGxlX3QgKiAgICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgdW5zaWduZWQgaW50ICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBudW1fY2hhbm5lbHMsCisgICAgIHVuc2lnbmVkIGludCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBlX25keCkKKyB7CisgICAgIGdsb2J1 c19pX2Z0cF9kY19oYW5kbGVfdCAqICAgICAgICAgICAgICAgICAgZGNfaGFuZGxlOworQEAgLTIz OTcsOCArMjM5Nyw4IEBAIGdsb2J1c19mdHBfY29udHJvbF9kYXRhX3F1ZXJ5X2NoYW5uZWxzKAor ICAqLworIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY29udHJvbF9kYXRhX2dldF90b3Rh bF9kYXRhX2NoYW5uZWxzKAorLSAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX3QgKgkJaGFu ZGxlLAorLSAgICB1bnNpZ25lZCBpbnQgKgkJCQludW1fY2hhbm5lbHMsCisrICAgIGdsb2J1c19m dHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICB1bnNpZ25l ZCBpbnQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9jaGFubmVscywKKyAgICAg dW5zaWduZWQgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcGVfbmR4KQor IHsKKyAgICAgZ2xvYnVzX2lfZnRwX2RjX2hhbmRsZV90ICogICAgICAgICAgICAgICAgICBkY19o YW5kbGU7CitAQCAtMjQ3OCw3ICsyNDc4LDcgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfZ2V0 X3RvdGFsX2RhdGFfY2hhbm5lbHMoCisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9j b250cm9sX2RhdGFfZ2V0X3JlbW90ZV9ob3N0cygKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hh bmRsZV90ICoJCWhhbmRsZSwKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICogICAg ICAgICAgICAgICBoYW5kbGUsCisgICAgIGdsb2J1c19mdHBfY29udHJvbF9ob3N0X3BvcnRfdCAq ICAgICAgICAgICAgYWRkcmVzcywKKyAgICAgaW50ICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhZGRyX2NvdW50KQorIHsKK0BAIC0yNjIwLDcgKzI2MjAsNyBAQCBnbG9i dXNfZnRwX2NvbnRyb2xfZGF0YV9nZXRfcmVtb3RlX2hvc3RzKAorICAqLworIGdsb2J1c19yZXN1 bHRfdAorIGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9zZW5kX2VvZigKKy0gICAgZ2xvYnVzX2Z0 cF9jb250cm9sX2hhbmRsZV90ICoJCWhhbmRsZSwKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hh bmRsZV90ICogICAgICAgICAgICAgICBoYW5kbGUsCisgICAgIGdsb2J1c19ib29sX3QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9lb2YpCisgeworICAgICBnbG9idXNfaV9mdHBf ZGNfaGFuZGxlX3QgKiAgICAgICAgICAgICAgICAgIGRjX2hhbmRsZTsKK0BAIC0yNjY2LDggKzI2 NjYsOCBAQCBnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfc2VuZF9lb2YoCisgCisgZ2xvYnVzX3Jl c3VsdF90CisgZ2xvYnVzX2Z0cF9jb250cm9sX2dldF9wYXJhbGxlbGlzbSgKKy0gICAgZ2xvYnVz X2Z0cF9jb250cm9sX2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9s X3BhcmFsbGVsaXNtX3QgKgkgICAgICAgIHBhcmFsbGVsaXNtKQorKyAgICBnbG9idXNfZnRwX2Nv bnRyb2xfaGFuZGxlX3QgKiAgICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgZ2xvYnVzX2Z0cF9j b250cm9sX3BhcmFsbGVsaXNtX3QgKiAgICAgICAgICBwYXJhbGxlbGlzbSkKKyB7CisgICAgIGds b2J1c19pX2Z0cF9kY19oYW5kbGVfdCAqICAgICAgICAgICAgICAgICAgZGNfaGFuZGxlOworICAg ICBnbG9idXNfb2JqZWN0X3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycjsKK0BAIC0y NzM2LDggKzI3MzYsOCBAQCBnbG9idXNfZnRwX2NvbnRyb2xfZ2V0X3BhcmFsbGVsaXNtKAorICAq LworIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9wYXJhbGxlbGlz bSgKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgZ2xv YnVzX2Z0cF9jb250cm9sX3BhcmFsbGVsaXNtX3QgKgkgICAgICAgIHBhcmFsbGVsaXNtKQorKyAg ICBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX3QgKiAgICAgICAgICAgICAgIGhhbmRsZSwKKysg ICAgZ2xvYnVzX2Z0cF9jb250cm9sX3BhcmFsbGVsaXNtX3QgKiAgICAgICAgICBwYXJhbGxlbGlz bSkKKyB7CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3RyOworICAgICBnbG9idXNfZnRwX2RhdGFfc3RyaXBlX3QgKiAgICAgICAgICAgICAgICAgIHN0 cmlwZTsKK0BAIC0yODI0LDcgKzI4MjQsNyBAQCBnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfcGFy YWxsZWxpc20oCisgICovCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jb250cm9sX2xv Y2FsX3Bhc3YoCistICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqCQloYW5kbGUsCisr ICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgaGFuZGxlLAor ICAgICBnbG9idXNfZnRwX2NvbnRyb2xfaG9zdF9wb3J0X3QgKiAgICAgICAgICAgIGFkZHJlc3Mp CisgeworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c3VsdCA9IEdMT0JVU19TVUNDRVNTOworQEAgLTI4ODYsNyArMjg4Niw3IEBAIGdsb2J1c19mdHBf Y29udHJvbF9sb2NhbF9wYXN2KAorICAgICAgICAgICAgIHJldHVybiBnbG9idXNfZXJyb3JfcHV0 KGdsb2J1c19lcnJvcl9jb25zdHJ1Y3Rfc3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICBH TE9CVVNfRlRQX0NPTlRST0xfTU9EVUxFLAorICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNf TlVMTCwKKy0gICAgICAgICAgICAgICAgICAgICAgX0ZDU0woImdsb2J1c19mdHBfY29udHJvbF9s b2NhbF9wYXN2KCk6IEhhbmRsZSBub3QgaW4gdGhlIHByb3BlciBzdGF0ZSAlcy4iKSwgCisrICAg ICAgICAgICAgICAgICAgICAgIF9GQ1NMKCJnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfcGFzdigp OiBIYW5kbGUgbm90IGluIHRoZSBwcm9wZXIgc3RhdGUgJXMuIiksCisgICAgICAgICAgICAgICAg ICAgICAgIGdsb2J1c19sX2Z0cF9jb250cm9sX3N0YXRlX3RvX3N0cmluZyhkY19oYW5kbGUtPnN0 YXRlKSkpOworICAgICAgICAgfQorIAorQEAgLTI5MDAsMTMgKzI5MDAsMTMgQEAgZ2xvYnVzX2Z0 cF9jb250cm9sX2xvY2FsX3Bhc3YoCisgICAgICAgICAgICAgYWRkcmVzcywKKyAgICAgICAgICAg ICAxKTsKKyAgICAgICAgIHN0cmlwZSA9ICZkY19oYW5kbGUtPnRyYW5zZmVyX2hhbmRsZS0+c3Ry aXBlc1swXTsKKy0gICAgICAgIAorKworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2lvX3RjcF9j cmVhdGVfbGlzdGVuZXIoCisgICAgICAgICAgICAgJmFkZHJlc3MtPnBvcnQsCisgICAgICAgICAg ICAgLTEsCisgICAgICAgICAgICAgJmRjX2hhbmRsZS0+aW9fYXR0ciwKKyAgICAgICAgICAgICAm c3RyaXBlLT5saXN0ZW5lcl9oYW5kbGUpOworLSAgICAgICAgCisrCisgICAgICAgICBpZihyZXN1 bHQgPT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICB7CisgICAgICAgICAgICAgZGNfaGFuZGxl LT50cmFuc2Zlcl9oYW5kbGUtPnJlZisrOworQEAgLTI5MjAsNyArMjkyMCw3IEBAIGdsb2J1c19m dHBfY29udHJvbF9sb2NhbF9wYXN2KAorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg dW5zaWduZWQgc2hvcnQgICAgICAgICAgcDsKKyAgICAgICAgICAgICAgICAgY2hhciAqICAgICAg ICAgICAgICAgICAgZGF0YWlwOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAg ICAgaWYoKGRhdGFpcCA9IGdldGVudigiR0xPQlVTX0ZUUF9DTElFTlRfREFUQV9JUCIpKSAhPSBO VUxMKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBn bG9idXNfbGliY19jb250YWN0X3N0cmluZ190b19pbnRzKAorQEAgLTI5MzEsNyArMjkzMSw3IEBA IGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9wYXN2KAorICAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAg ICAgeyAgICAgICAgICAgICAgICAgICAgCisrICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgICAgIHJlcyA9IGdsb2J1c19pb190Y3BfZ2V0X2xvY2FsX2FkZHJlc3NfZXgoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZS0+Y2NfaGFuZGxlLmlvX2hhbmRsZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLT5ob3N0LAorQEAgLTI5NDEs MTIgKzI5NDEsMTIgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX3Bhc3YoCisgICAgICAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqICAgICAgICAgICAg ICBjczsKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfc29ja2FkZHJfdCAgIGFkZHI7 CistICAgICAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAgICAgICAg R2xvYnVzTGliY1NvY2thZGRyU2V0RmFtaWx5KGFkZHIsIEFGX0lORVQpOworICAgICAgICAgICAg ICAgICAgICAgICAgIEdsb2J1c0xpYmNTb2NrYWRkclNldFBvcnQoYWRkciwgYWRkcmVzcy0+cG9y dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2xpYmNfYWRkcl90 b19jb250YWN0X3N0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFkZHIsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19MSUJDX0FERFJfTE9DQUwgfCAKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0xJQkNfQUREUl9MT0NBTCB8CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19MSUJDX0FERFJfTlVNRVJJQyB8CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19MSUJDX0FERFJfSVBWNCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmNzKTsKK0BAIC0yOTY0LDcgKzI5NjQsNyBAQCBnbG9idXNf ZnRwX2NvbnRyb2xfbG9jYWxfcGFzdigKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfQorLSAgICAKKysKKyAgICAgICAgICAgIGRjX2hhbmRs ZS0+c3RhdGUgPSBHTE9CVVNfRlRQX0RBVEFfU1RBVEVfUEFTVjsKKyAgICAgICAgIH0KKyAgICAg fQorQEAgLTMwMjEsNyArMzAyMSw3IEBAIGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9zcGFzKAor ICAqLworIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9wb3J0KAor LSAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX3QgKgkJaGFuZGxlLAorKyAgICBnbG9idXNf ZnRwX2NvbnRyb2xfaGFuZGxlX3QgKiAgICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVz X2Z0cF9jb250cm9sX2hvc3RfcG9ydF90ICogICAgICAgICAgICBhZGRyZXNzKQorIHsKKyAgICAg Z2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBHTE9C VVNfU1VDQ0VTUzsKK0BAIC0zMDc5LDcgKzMwNzksNyBAQCBnbG9idXNfZnRwX2NvbnRyb2xfbG9j YWxfcG9ydCgKKyAgICAgICAgICAgICByZXR1cm4gZ2xvYnVzX2Vycm9yX3B1dChnbG9idXNfZXJy b3JfY29uc3RydWN0X3N0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9D T05UUk9MX01PRFVMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX05VTEwsCistICAg ICAgICAgICAgICAgICAgICAgIF9GQ1NMKCJnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfcG9ydCgp OiBIYW5kbGUgbm90IGluIHRoZSBwcm9wZXIgc3RhdGUgJXMuIiksIAorKyAgICAgICAgICAgICAg ICAgICAgICBfRkNTTCgiZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX3BvcnQoKTogSGFuZGxlIG5v dCBpbiB0aGUgcHJvcGVyIHN0YXRlICVzLiIpLAorICAgICAgICAgICAgICAgICAgICAgICBnbG9i dXNfbF9mdHBfY29udHJvbF9zdGF0ZV90b19zdHJpbmcoZGNfaGFuZGxlLT5zdGF0ZSkpKTsKKyAg ICAgICAgIH0KKyAKK0BAIC0zMTAzLDcgKzMxMDMsNyBAQCBnbG9idXNfZnRwX2NvbnRyb2xfbG9j YWxfcG9ydCgKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NvbnRyb2xfZ2V0X3Nw b3IoCistICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqCSAgICAgICAgICAgICBoYW5k bGUsCisrICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgICAg ICBoYW5kbGUsCisgICAgIGdsb2J1c19mdHBfY29udHJvbF9ob3N0X3BvcnRfdCAgICAgICAgICAg ICAgICAgICBhZGRyZXNzZXNbXSwKKyAgICAgdW5zaWduZWQgaW50ICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG51bV9hZGRyZXNzZXMpCisgeworQEAgLTMyMDEsOSArMzIwMSw5 IEBAIGdsb2J1c19mdHBfY29udHJvbF9nZXRfc3BvcigKKyAgKi8KKyBnbG9idXNfcmVzdWx0X3QK KyBnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfc3BvcigKKy0gICAgICAgIGdsb2J1c19mdHBfY29u dHJvbF9oYW5kbGVfdCAqCSAgICAgICAgICAgICBoYW5kbGUsCistCWdsb2J1c19mdHBfY29udHJv bF9ob3N0X3BvcnRfdCAgICAgICAgICAgICAgIGFkZHJlc3Nlc1tdLAorLQl1bnNpZ25lZCBpbnQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fYWRkcmVzc2VzKQorKyAgICAgICAg Z2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICogICAgICAgICAgICAgICAgaGFuZGxlLAorKyAg ICAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hvc3RfcG9ydF90ICAgICAgICAgICAgICAgYWRkcmVz c2VzW10sCisrICAgICAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBudW1fYWRkcmVzc2VzKQorIHsKKyAgICAgZ2xvYnVzX2lfZnRwX2RjX2hhbmRsZV90ICog ICAgICAgICAgICAgICAgICAgICAgIGRjX2hhbmRsZTsKKyAgICAgZ2xvYnVzX29iamVjdF90ICog ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnI7CitAQCAtMzM5OSw3ICszMzk5LDcgQEAgZ2xv YnVzX2Z0cF9jb250cm9sX2dldF90eXBlKAorIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19m dHBfY29udHJvbF9nZXRfbW9kZSgKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICoJ CWhhbmRsZSwKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICogICAgICAgICAgICAg ICBoYW5kbGUsCisgICAgIGdsb2J1c19mdHBfY29udHJvbF9tb2RlX3QgKiAgICAgICAgICAgICAg ICAgbW9kZSkKKyB7CisgICAgIGdsb2J1c19pX2Z0cF9kY19oYW5kbGVfdCAqICAgICAgICAgICAg ICAgICAgZGNfaGFuZGxlOworQEAgLTM0NjIsNyArMzQ2Miw3IEBAIGdsb2J1c19mdHBfY29udHJv bF9nZXRfbW9kZSgKKyAgKi8KKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NvbnRyb2xf bG9jYWxfbW9kZSgKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICoJCWhhbmRsZSwK KysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICogICAgICAgICAgICAgICBoYW5kbGUs CisgICAgIGdsb2J1c19mdHBfY29udHJvbF9tb2RlX3QgICAgICAgICAgICAgICAgICAgbW9kZSkK KyB7CisgICAgIGdsb2J1c19pX2Z0cF9kY19oYW5kbGVfdCAqICAgICAgICAgICAgICAgICAgZGNf aGFuZGxlOworQEAgLTM1MzIsNyArMzUzMiw3IEBAIGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9t b2RlKAorICAqIEBwYXJhbSBzdGFydGluZ19vZmZzZXQKKyAgKiAgICAgICAgVGhlIHN0YXJ0aW5n IG9mZnNldCB0byBleHBlY3QuIE1heSBub3QgYmUgMCBmb3IgcmVzdGFydGVkIHRyYW5zZmVycy4K KyAgKgorLSAqIE5vdGUgdGhhdCB0aGlzIG1heSByZXN1bHQgaW4gc2xvd2VyIHRyYW5zZmVycywg b3IsIGlmIAorKyAqIE5vdGUgdGhhdCB0aGlzIG1heSByZXN1bHQgaW4gc2xvd2VyIHRyYW5zZmVy cywgb3IsIGlmCisgICogdGhlIGRhdGEgYXJyaXZlcyBmYXIgb3V0IG9mIG9yZGVyLCBmYWlsZWQg dHJhbnNmZXJzLgorICAqLworIGdsb2J1c19yZXN1bHRfdAorQEAgLTM1ODQsOCArMzU4NCw4IEBA IGdsb2J1c19mdHBfY29udHJvbF9zZXRfZm9yY2Vfb3JkZXIoCisgICAgIGdsb2J1c19tdXRleF9s b2NrKCZkY19oYW5kbGUtPm11dGV4KTsKKyAgICAgeworICAgICAgICAgZGNfaGFuZGxlLT50cmFu c2Zlcl9oYW5kbGUtPm9yZGVyX2RhdGEgPSBvcmRlcl9kYXRhOworLSAgICAgICAgZGNfaGFuZGxl LT50cmFuc2Zlcl9oYW5kbGUtPm9yZGVyX25leHRfb2Zmc2V0ID0gc3RhcnRpbmdfb2Zmc2V0OyAK Ky0gICAgICAgIGRjX2hhbmRsZS0+dHJhbnNmZXJfaGFuZGxlLT5vcmRlcl9uZXh0X29mZnNldF9w YXNzZWQgPSBzdGFydGluZ19vZmZzZXQ7IAorKyAgICAgICAgZGNfaGFuZGxlLT50cmFuc2Zlcl9o YW5kbGUtPm9yZGVyX25leHRfb2Zmc2V0ID0gc3RhcnRpbmdfb2Zmc2V0OworKyAgICAgICAgZGNf aGFuZGxlLT50cmFuc2Zlcl9oYW5kbGUtPm9yZGVyX25leHRfb2Zmc2V0X3Bhc3NlZCA9IHN0YXJ0 aW5nX29mZnNldDsKKyAgICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZkY19oYW5kbGUt Pm11dGV4KTsKKyAKK0BAIC0zNjA5LDEzICszNjA5LDEzIEBAIGdsb2J1c19mdHBfY29udHJvbF9z ZXRfZm9yY2Vfb3JkZXIoCisgICovCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jb250 cm9sX2xvY2FsX3RjcF9idWZmZXIoCistICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAq CQloYW5kbGUsCisrICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAg ICAgaGFuZGxlLAorICAgICBnbG9idXNfZnRwX2NvbnRyb2xfdGNwYnVmZmVyX3QgKiAgICAgICAg ICAgIHRjcF9idWZmZXIpCisgeworICAgICBnbG9idXNfaV9mdHBfZGNfaGFuZGxlX3QgKiAgICAg ICAgICAgICAgICAgIGRjX2hhbmRsZTsKKyAgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAg ICAgICAgICAgICAgICAgICBlcnI7CisgICAgIHN0YXRpYyBjaGFyICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbXluYW1lPQorLQkiZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX3RjcF9i dWZmZXIiOworKyAgICAgICAgImdsb2J1c19mdHBfY29udHJvbF9sb2NhbF90Y3BfYnVmZmVyIjsK KyAKKyAgICAgLyoKKyAgICAgICogIGVycm9yIGNoZWNraW5nCitAQCAtMzY0NSwyMSArMzY0NSwy MSBAQCBnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfdGNwX2J1ZmZlcigKKyAKKyAgICAgaWYodGNw X2J1ZmZlci0+bW9kZSAhPSBHTE9CVVNfRlRQX0NPTlRST0xfVENQQlVGRkVSX0ZJWEVEKQorICAg ICB7CistCWVyciA9IGdsb2J1c19lcnJvcl9jb25zdHJ1Y3Rfc3RyaW5nKAorLQkgICAgR0xPQlVT X0ZUUF9DT05UUk9MX01PRFVMRSwKKy0JICAgIEdMT0JVU19OVUxMLAorLQkgICAgX0ZDU0woImds b2J1c19mdHBfY29udHJvbF9sb2NhbF90Y3BfYnVmZmVyKCk6IGJ1ZmZlciBzZXR0aW5nIG1vZGUg bm90IHN1cHBvcnRlZCIpKTsKKy0JcmV0dXJuIGdsb2J1c19lcnJvcl9wdXQoZXJyKTsKKysgICAg ICAgIGVyciA9IGdsb2J1c19lcnJvcl9jb25zdHJ1Y3Rfc3RyaW5nKAorKyAgICAgICAgICAgIEdM T0JVU19GVFBfQ09OVFJPTF9NT0RVTEUsCisrICAgICAgICAgICAgR0xPQlVTX05VTEwsCisrICAg ICAgICAgICAgX0ZDU0woImdsb2J1c19mdHBfY29udHJvbF9sb2NhbF90Y3BfYnVmZmVyKCk6IGJ1 ZmZlciBzZXR0aW5nIG1vZGUgbm90IHN1cHBvcnRlZCIpKTsKKysgICAgICAgIHJldHVybiBnbG9i dXNfZXJyb3JfcHV0KGVycik7CisgICAgIH0KKyAKKyAKKyAgICAgaWYoIDAgPiB0Y3BfYnVmZmVy LT5maXhlZC5zaXplICkKKyAgICAgeworLQllcnIgPSBnbG9idXNfZXJyb3JfY29uc3RydWN0X3N0 cmluZygKKy0JICAgIEdMT0JVU19GVFBfQ09OVFJPTF9NT0RVTEUsCistCSAgICBHTE9CVVNfTlVM TCwKKy0JICAgIF9GQ1NMKCJnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfdGNwX2J1ZmZlcigpOiBi dWZmZXIgc2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIikpOworLQlyZXR1cm4gZ2xvYnVzX2Vy cm9yX3B1dChlcnIpOworKyAgICAgICAgZXJyID0gZ2xvYnVzX2Vycm9yX2NvbnN0cnVjdF9zdHJp bmcoCisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX01PRFVMRSwKKysgICAgICAgICAg ICBHTE9CVVNfTlVMTCwKKysgICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2Z0cF9jb250cm9sX2xv Y2FsX3RjcF9idWZmZXIoKTogYnVmZmVyIHNpemUgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCIpKTsK KysgICAgICAgIHJldHVybiBnbG9idXNfZXJyb3JfcHV0KGVycik7CisgICAgIH0KKyAKKyAgICAg ZGNfaGFuZGxlID0gJmhhbmRsZS0+ZGNfaGFuZGxlOworQEAgLTM2NjcsMTUgKzM2NjcsMTUgQEAg Z2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX3RjcF9idWZmZXIoCisgICAgIGdsb2J1c19tdXRleF9s b2NrKCZkY19oYW5kbGUtPm11dGV4KTsKKyAgICAgeworICAgICAgICAgZGNfaGFuZGxlLT50Y3Bf YnVmZmVyX3NpemUgPSB0Y3BfYnVmZmVyLT5maXhlZC5zaXplOworLQlpZihkY19oYW5kbGUtPnRj cF9idWZmZXJfc2l6ZSA+IDApCistCXsKKy0JICAgIGdsb2J1c19pb19hdHRyX3NldF9zb2NrZXRf c25kYnVmKAorLQkJJmRjX2hhbmRsZS0+aW9fYXR0ciwKKy0JCWRjX2hhbmRsZS0+dGNwX2J1ZmZl cl9zaXplKTsKKy0JICAgIGdsb2J1c19pb19hdHRyX3NldF9zb2NrZXRfcmN2YnVmKAorLQkJJmRj X2hhbmRsZS0+aW9fYXR0ciwKKy0JCWRjX2hhbmRsZS0+dGNwX2J1ZmZlcl9zaXplKTsKKy0JfQor KyAgICAgICAgaWYoZGNfaGFuZGxlLT50Y3BfYnVmZmVyX3NpemUgPiAwKQorKyAgICAgICAgewor KyAgICAgICAgICAgIGdsb2J1c19pb19hdHRyX3NldF9zb2NrZXRfc25kYnVmKAorKyAgICAgICAg ICAgICAgICAmZGNfaGFuZGxlLT5pb19hdHRyLAorKyAgICAgICAgICAgICAgICBkY19oYW5kbGUt PnRjcF9idWZmZXJfc2l6ZSk7CisrICAgICAgICAgICAgZ2xvYnVzX2lvX2F0dHJfc2V0X3NvY2tl dF9yY3ZidWYoCisrICAgICAgICAgICAgICAgICZkY19oYW5kbGUtPmlvX2F0dHIsCisrICAgICAg ICAgICAgICAgIGRjX2hhbmRsZS0+dGNwX2J1ZmZlcl9zaXplKTsKKysgICAgICAgIH0KKyAgICAg fQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZkY19oYW5kbGUtPm11dGV4KTsKKyAKK0BAIC0z Njk0LDcgKzM2OTQsNyBAQCBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV9nZXRfc29ja2V0X2J1ZigK KyAgICAgZ2xvYnVzX2Z0cF9kYXRhX3N0cmlwZV90ICogICAgICAgICAgc3RyaXBlczsKKyAgICAg Z2xvYnVzX2lfZnRwX2RjX2hhbmRsZV90ICogICAgICAgICAgZGNfaGFuZGxlOworICAgICBzdGF0 aWMgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICBteV9uYW1lID0KKy0JICAgICJnbG9idXNf ZnRwX2NvbnRyb2xfZGF0YV9nZXRfc29ja2V0X2J1ZiI7CisrICAgICAgICAgICAgImdsb2J1c19m dHBfY29udHJvbF9kYXRhX2dldF9zb2NrZXRfYnVmIjsKKyAKKyAgICAgaWYoaGFuZGxlID09IE5V TEwpCisgICAgIHsKK0BAIC0zNzY4LDcgKzM3NjgsNyBAQCBnbG9idXNfZnRwX2NvbnRyb2xfZGF0 YV9nZXRfc29ja2V0X2J1ZigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteV9uYW1lKTsK KyAgICAgICAgICAgICByZXR1cm4gZ2xvYnVzX2Vycm9yX3B1dChlcnIpOworICAgICAgICAgfQor LSAgICAgICAgcmVzID0gZ2xvYnVzX2lvX2hhbmRsZV9nZXRfc29ja2V0X2J1ZiggIAorKyAgICAg ICAgcmVzID0gZ2xvYnVzX2lvX2hhbmRsZV9nZXRfc29ja2V0X2J1ZigKKyAgICAgICAgICAgICAm ZGF0YV9jb25uLT5pb19oYW5kbGUsCisgICAgICAgICAgICAgcmN2YnVmLAorICAgICAgICAgICAg IHNuZGJ1Zik7CitAQCAtMzg1Niw3ICszODU2LDcgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFf Z2V0X3JldHJhbnNtaXRfY291bnQoCisgICAgICAgICB9CisgCisgICAgICAgICB0Y3BfZHJpdmVy ID0gZ2xvYnVzX2lvX2NvbXBhdF9nZXRfdGNwX2RyaXZlcigpOworLSAgICAgICAgCisrCisgICAg ICAgICBmb3IoY3RyID0gMDsgY3RyIDwgdHJhbnNmZXJfaGFuZGxlLT5zdHJpcGVfY291bnQ7IGN0 cisrKQorICAgICAgICAgeworICAgICAgICAgICAgIHN0cmlwZSA9ICZ0cmFuc2Zlcl9oYW5kbGUt PnN0cmlwZXNbY3RyXTsKK0BAIC0zODk1LDcgKzM4OTUsNyBAQCBnbG9idXNfZnRwX2NvbnRyb2xf ZGF0YV9nZXRfcmV0cmFuc21pdF9jb3VudCgKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHRjcF9pbmZvICAgICAgICAgICAgIHRjcGluZm87CisgICAgICAg ICAgICAgICAgICAgICBzb2NrbGVuX3QgICAgICAgICAgICAgICAgICAgbGVuOworLSAgICAKKysK KyAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHNpemVvZih0Y3BpbmZvKTsKKyAgICAgICAgICAg ICAgICAgICAgIHJlcyA9IGdsb2J1c194aW9fc3lzdGVtX3NvY2tldF9nZXRzb2Nrb3B0KAorICAg ICAgICAgICAgICAgICAgICAgICAgIHNvY2tldCwgSVBQUk9UT19UQ1AsIFRDUF9JTkZPLCAodm9p ZCAqKSAmdGNwaW5mbywgJmxlbik7CitAQCAtMzkwNCw3ICszOTA0LDcgQEAgZ2xvYnVzX2Z0cF9j b250cm9sX2RhdGFfZ2V0X3JldHJhbnNtaXRfY291bnQoCisgICAgICAgICAgICAgICAgICAgICAg ICAgZ2xvYnVzX211dGV4X3VubG9jaygmZGNfaGFuZGxlLT5tdXRleCk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgCisr CisgICAgICAgICAgICAgICAgICAgICBjb3VudCA9IHRjcGluZm8udGNwaV90b3RhbF9yZXRyYW5z OworICAgICAgICAgICAgICAgICB9CisgI2VuZGlmCitAQCAtMzk0OCwxMyArMzk0OCwxMyBAQCBn bG9idXNfZnRwX2NvbnRyb2xfZGF0YV9nZXRfcmV0cmFuc21pdF9jb3VudCgKKyAgKiBAcGFyYW0g ZGVsZWdhdGVkX2NyZWRlbnRpYWxfaGFuZGxlICovCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVz X2Z0cF9jb250cm9sX2xvY2FsX2RjYXUoCistICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVf dCAqCQloYW5kbGUsCisrICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAg ICAgICAgaGFuZGxlLAorICAgICBjb25zdCBnbG9idXNfZnRwX2NvbnRyb2xfZGNhdV90ICogICAg ICAgICAgIGRjYXUsCisgICAgIGdzc19jcmVkX2lkX3QgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGVsZWdhdGVkX2NyZWRlbnRpYWxfaGFuZGxlKQorIHsKKyAgICAgZ2xvYnVzX2lfZnRw X2RjX2hhbmRsZV90ICogICAgICAgICAgICAgICAgICBkY19oYW5kbGU7CisgICAgIHN0YXRpYyBj aGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXluYW1lPQorLQkiZ2xvYnVzX2Z0 cF9jb250cm9sX2xvY2FsX2RjYXUiOworKyAgICAgICAgImdsb2J1c19mdHBfY29udHJvbF9sb2Nh bF9kY2F1IjsKKyAgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAgICAgICAgICAgICAg ICBlcnI7CisgCisgICAgIC8qCitAQCAtMzk3NSw5ICszOTc1LDkgQEAgZ2xvYnVzX2Z0cF9jb250 cm9sX2xvY2FsX2RjYXUoCisgICAgICAgICAgICAgZGNhdS0+bW9kZSAhPSBHTE9CVVNfRlRQX0NP TlRST0xfRENBVV9TVUJKRUNUKQorICAgICB7CisgICAgICAgICBlcnIgPSBnbG9idXNfZXJyb3Jf Y29uc3RydWN0X3N0cmluZygKKy0JCSAgICBHTE9CVVNfRlRQX0NPTlRST0xfTU9EVUxFLAorLQkJ ICAgIEdMT0JVU19OVUxMLAorLQkJICAgIF9GQ1NMKCJnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxf ZGNhdTogaW52YWxpZCBkY2F1IG1vZGUiKSk7CisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNf RlRQX0NPTlRST0xfTU9EVUxFLAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX05VTEwsCisr ICAgICAgICAgICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX2RjYXU6 IGludmFsaWQgZGNhdSBtb2RlIikpOworICAgICAgICAgcmV0dXJuIGdsb2J1c19lcnJvcl9wdXQo ZXJyKTsKKyAgICAgfQorIAorQEAgLTM5OTYsNzUgKzM5OTYsNzUgQEAgZ2xvYnVzX2Z0cF9jb250 cm9sX2xvY2FsX2RjYXUoCisgCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZkY19oYW5kbGUtPm11 dGV4KTsKKyAgICAgeworLQlpZihkY19oYW5kbGUtPmRjYXUubW9kZSA9PSBHTE9CVVNfRlRQX0NP TlRST0xfRENBVV9TVUJKRUNUICYmCistCSAgIGRjX2hhbmRsZS0+ZGNhdS5zdWJqZWN0LnN1Ympl Y3QgIT0gR0xPQlVTX05VTEwpCistCXsKKy0JICAgIGdsb2J1c19saWJjX2ZyZWUoZGNfaGFuZGxl LT5kY2F1LnN1YmplY3Quc3ViamVjdCk7CistCSAgICBkY19oYW5kbGUtPmRjYXUuc3ViamVjdC5z dWJqZWN0ID0gR0xPQlVTX05VTEw7CistCX0KKy0JZGNfaGFuZGxlLT5kY2F1Lm1vZGUgPSBkY2F1 LT5tb2RlOworLQlpZihkY2F1LT5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJPTF9EQ0FVX1NVQkpF Q1QpCistCXsKKy0JICAgIGRjX2hhbmRsZS0+ZGNhdS5zdWJqZWN0LnN1YmplY3QgPQorLQkJZ2xv YnVzX2xpYmNfc3RyZHVwKGRjYXUtPnN1YmplY3Quc3ViamVjdCk7CistCX0KKy0KKy0JaWYoZGNf aGFuZGxlLT5kY2F1Lm1vZGUgIT0gR0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVfTk9ORSkKKy0Jewor LQkgICAgZ2xvYnVzX2lvX3NlY3VyZV9hdXRob3JpemF0aW9uX2RhdGFfdAlhdXRoX2RhdGE7Cist CSAgICBnbG9idXNfaW9fc2VjdXJlX2F1dGhvcml6YXRpb25fZGF0YV9pbml0aWFsaXplKCZhdXRo X2RhdGEpOworLQorLQkgICAgZ2xvYnVzX2lvX2F0dHJfc2V0X3NlY3VyZV9hdXRoZW50aWNhdGlv bl9tb2RlKAorLQkJJmRjX2hhbmRsZS0+aW9fYXR0ciwKKy0JCUdMT0JVU19JT19TRUNVUkVfQVVU SEVOVElDQVRJT05fTU9ERV9NVVRVQUwsCistCQlkZWxlZ2F0ZWRfY3JlZGVudGlhbF9oYW5kbGUp OworKyAgICAgICAgaWYoZGNfaGFuZGxlLT5kY2F1Lm1vZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9M X0RDQVVfU1VCSkVDVCAmJgorKyAgICAgICAgICAgZGNfaGFuZGxlLT5kY2F1LnN1YmplY3Quc3Vi amVjdCAhPSBHTE9CVVNfTlVMTCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBnbG9idXNfbGli Y19mcmVlKGRjX2hhbmRsZS0+ZGNhdS5zdWJqZWN0LnN1YmplY3QpOworKyAgICAgICAgICAgIGRj X2hhbmRsZS0+ZGNhdS5zdWJqZWN0LnN1YmplY3QgPSBHTE9CVVNfTlVMTDsKKysgICAgICAgIH0K KysgICAgICAgIGRjX2hhbmRsZS0+ZGNhdS5tb2RlID0gZGNhdS0+bW9kZTsKKysgICAgICAgIGlm KGRjYXUtPm1vZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVfU1VCSkVDVCkKKysgICAgICAg IHsKKysgICAgICAgICAgICBkY19oYW5kbGUtPmRjYXUuc3ViamVjdC5zdWJqZWN0ID0KKysgICAg ICAgICAgICAgICAgZ2xvYnVzX2xpYmNfc3RyZHVwKGRjYXUtPnN1YmplY3Quc3ViamVjdCk7Cisr ICAgICAgICB9CisrCisrICAgICAgICBpZihkY19oYW5kbGUtPmRjYXUubW9kZSAhPSBHTE9CVVNf RlRQX0NPTlRST0xfRENBVV9OT05FKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdsb2J1c19p b19zZWN1cmVfYXV0aG9yaXphdGlvbl9kYXRhX3QgICAgICAgYXV0aF9kYXRhOworKyAgICAgICAg ICAgIGdsb2J1c19pb19zZWN1cmVfYXV0aG9yaXphdGlvbl9kYXRhX2luaXRpYWxpemUoJmF1dGhf ZGF0YSk7CisrCisrICAgICAgICAgICAgZ2xvYnVzX2lvX2F0dHJfc2V0X3NlY3VyZV9hdXRoZW50 aWNhdGlvbl9tb2RlKAorKyAgICAgICAgICAgICAgICAmZGNfaGFuZGxlLT5pb19hdHRyLAorKyAg ICAgICAgICAgICAgICBHTE9CVVNfSU9fU0VDVVJFX0FVVEhFTlRJQ0FUSU9OX01PREVfTVVUVUFM LAorKyAgICAgICAgICAgICAgICBkZWxlZ2F0ZWRfY3JlZGVudGlhbF9oYW5kbGUpOworIAorICAg ICAgICAgICAgIGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfcHJveHlfbW9kZSgKKyAgICAgICAg ICAgICAgICAgJmRjX2hhbmRsZS0+aW9fYXR0ciwKKy0JCUdMT0JVU19JT19TRUNVUkVfUFJPWFlf TU9ERV9NQU5ZKTsKKy0KKy0JICAgIHN3aXRjaChkY19oYW5kbGUtPmRjYXUubW9kZSkKKy0JICAg IHsKKy0JICAgICAgY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xfRENBVV9TRUxGOgorLQkJZ2xvYnVz X2lvX2F0dHJfc2V0X3NlY3VyZV9hdXRob3JpemF0aW9uX21vZGUoCistCQkJJmRjX2hhbmRsZS0+ aW9fYXR0ciwKKy0JCQlHTE9CVVNfSU9fU0VDVVJFX0FVVEhPUklaQVRJT05fTU9ERV9TRUxGLAor LQkJCSZhdXRoX2RhdGEpOworLQkJYnJlYWs7CistCistCSAgICAgIGNhc2UgR0xPQlVTX0ZUUF9D T05UUk9MX0RDQVVfU1VCSkVDVDoKKy0JCWdsb2J1c19pb19zZWN1cmVfYXV0aG9yaXphdGlvbl9k YXRhX3NldF9pZGVudGl0eSgKKy0JCQkmYXV0aF9kYXRhLAorLQkJCWRjX2hhbmRsZS0+ZGNhdS5z dWJqZWN0LnN1YmplY3QpOworLQkJZ2xvYnVzX2lvX2F0dHJfc2V0X3NlY3VyZV9hdXRob3JpemF0 aW9uX21vZGUoCistCQkJJmRjX2hhbmRsZS0+aW9fYXR0ciwKKy0JCQlHTE9CVVNfSU9fU0VDVVJF X0FVVEhPUklaQVRJT05fTU9ERV9JREVOVElUWSwKKy0JCQkmYXV0aF9kYXRhKTsKKy0JCWJyZWFr OworLQkgICAgICBkZWZhdWx0OgorLQkJYnJlYWs7CistCSAgICB9CistCistCSAgICBnbG9idXNf aW9fc2VjdXJlX2F1dGhvcml6YXRpb25fZGF0YV9kZXN0cm95KCZhdXRoX2RhdGEpOworLQl9Cist CWVsc2UKKy0JeworLQkgICAgZGNfaGFuZGxlLT5wcm90ZWN0aW9uID0gR0xPQlVTX0ZUUF9DT05U Uk9MX1BST1RFQ1RJT05fQ0xFQVI7CistCistCSAgICBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJl X2NoYW5uZWxfbW9kZSgKKy0JCSAgICAmZGNfaGFuZGxlLT5pb19hdHRyLAorLQkJICAgIEdMT0JV U19JT19TRUNVUkVfQ0hBTk5FTF9NT0RFX0NMRUFSKTsKKy0KKy0JICAgIGdsb2J1c19pb19hdHRy X3NldF9zZWN1cmVfYXV0aG9yaXphdGlvbl9tb2RlKAorLQkJICAgICZkY19oYW5kbGUtPmlvX2F0 dHIsCistCQkgICAgR0xPQlVTX0lPX1NFQ1VSRV9BVVRIT1JJWkFUSU9OX01PREVfTk9ORSwKKy0J CSAgICBHTE9CVVNfTlVMTCk7CistCistCSAgICBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2F1 dGhlbnRpY2F0aW9uX21vZGUoCistCQkgICAgJmRjX2hhbmRsZS0+aW9fYXR0ciwKKy0JCSAgICBH TE9CVVNfSU9fU0VDVVJFX0FVVEhFTlRJQ0FUSU9OX01PREVfTk9ORSwKKy0JCSAgICBHTE9CVVNf TlVMTCk7CistCX0KKysgICAgICAgICAgICAgICAgR0xPQlVTX0lPX1NFQ1VSRV9QUk9YWV9NT0RF X01BTlkpOworKworKyAgICAgICAgICAgIHN3aXRjaChkY19oYW5kbGUtPmRjYXUubW9kZSkKKysg ICAgICAgICAgICB7CisrICAgICAgICAgICAgICBjYXNlIEdMT0JVU19GVFBfQ09OVFJPTF9EQ0FV X1NFTEY6CisrICAgICAgICAgICAgICAgIGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfYXV0aG9y aXphdGlvbl9tb2RlKAorKyAgICAgICAgICAgICAgICAgICAgICAgICZkY19oYW5kbGUtPmlvX2F0 dHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0lPX1NFQ1VSRV9BVVRIT1JJWkFU SU9OX01PREVfU0VMRiwKKysgICAgICAgICAgICAgICAgICAgICAgICAmYXV0aF9kYXRhKTsKKysg ICAgICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICAgICAgICBjYXNlIEdMT0JVU19GVFBf Q09OVFJPTF9EQ0FVX1NVQkpFQ1Q6CisrICAgICAgICAgICAgICAgIGdsb2J1c19pb19zZWN1cmVf YXV0aG9yaXphdGlvbl9kYXRhX3NldF9pZGVudGl0eSgKKysgICAgICAgICAgICAgICAgICAgICAg ICAmYXV0aF9kYXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGRjX2hhbmRsZS0+ZGNhdS5z dWJqZWN0LnN1YmplY3QpOworKyAgICAgICAgICAgICAgICBnbG9idXNfaW9fYXR0cl9zZXRfc2Vj dXJlX2F1dGhvcml6YXRpb25fbW9kZSgKKysgICAgICAgICAgICAgICAgICAgICAgICAmZGNfaGFu ZGxlLT5pb19hdHRyLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19JT19TRUNVUkVf QVVUSE9SSVpBVElPTl9NT0RFX0lERU5USVRZLAorKyAgICAgICAgICAgICAgICAgICAgICAgICZh dXRoX2RhdGEpOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgIGRlZmF1 bHQ6CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAg ICAgICBnbG9idXNfaW9fc2VjdXJlX2F1dGhvcml6YXRpb25fZGF0YV9kZXN0cm95KCZhdXRoX2Rh dGEpOworKyAgICAgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAg IGRjX2hhbmRsZS0+cHJvdGVjdGlvbiA9IEdMT0JVU19GVFBfQ09OVFJPTF9QUk9URUNUSU9OX0NM RUFSOworKworKyAgICAgICAgICAgIGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfY2hhbm5lbF9t b2RlKAorKyAgICAgICAgICAgICAgICAgICAgJmRjX2hhbmRsZS0+aW9fYXR0ciwKKysgICAgICAg ICAgICAgICAgICAgIEdMT0JVU19JT19TRUNVUkVfQ0hBTk5FTF9NT0RFX0NMRUFSKTsKKysKKysg ICAgICAgICAgICBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2F1dGhvcml6YXRpb25fbW9kZSgK KysgICAgICAgICAgICAgICAgICAgICZkY19oYW5kbGUtPmlvX2F0dHIsCisrICAgICAgICAgICAg ICAgICAgICBHTE9CVVNfSU9fU0VDVVJFX0FVVEhPUklaQVRJT05fTU9ERV9OT05FLAorKyAgICAg ICAgICAgICAgICAgICAgR0xPQlVTX05VTEwpOworKworKyAgICAgICAgICAgIGdsb2J1c19pb19h dHRyX3NldF9zZWN1cmVfYXV0aGVudGljYXRpb25fbW9kZSgKKysgICAgICAgICAgICAgICAgICAg ICZkY19oYW5kbGUtPmlvX2F0dHIsCisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfSU9fU0VD VVJFX0FVVEhFTlRJQ0FUSU9OX01PREVfTk9ORSwKKysgICAgICAgICAgICAgICAgICAgIEdMT0JV U19OVUxMKTsKKysgICAgICAgIH0KKyAgICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZk Y19oYW5kbGUtPm11dGV4KTsKKyAKK0BAIC00MDczLDggKzQwNzMsOCBAQCBnbG9idXNfZnRwX2Nv bnRyb2xfbG9jYWxfZGNhdSgKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NvbnRy b2xfZ2V0X2RjYXUoCistICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqCQloYW5kbGUs CistICAgIGdsb2J1c19mdHBfY29udHJvbF9kY2F1X3QgKiAgICAgICAgICAgCWRjYXUpCisrICAg IGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgaGFuZGxlLAorKyAg ICBnbG9idXNfZnRwX2NvbnRyb2xfZGNhdV90ICogICAgICAgICAgICAgICAgIGRjYXUpCisgewor ICAgICBnbG9idXNfaV9mdHBfZGNfaGFuZGxlX3QgKiAgICAgICAgICAgICAgICAgIGRjX2hhbmRs ZTsKKyAgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIg PSBHTE9CVVNfU1VDQ0VTUzsKK0BAIC00MTA5LDE5ICs0MTA5LDE5IEBAIGdsb2J1c19mdHBfY29u dHJvbF9nZXRfZGNhdSgKKyAKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJmRjX2hhbmRsZS0+bXV0 ZXgpOworICAgICB7CistCWRjYXUtPm1vZGUgPSBkY19oYW5kbGUtPmRjYXUubW9kZTsKKy0JaWYo ZGNfaGFuZGxlLT5kY2F1Lm1vZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVfU1VCSkVDVCkK Ky0JeworLQkgICAgZGNhdS0+c3ViamVjdC5zdWJqZWN0ID0KKy0JCWdsb2J1c19saWJjX3N0cmR1 cChkY19oYW5kbGUtPmRjYXUuc3ViamVjdC5zdWJqZWN0KTsKKy0JICAgIGlmKCFkY2F1LT5zdWJq ZWN0LnN1YmplY3QpCistCSAgICB7CistCQllcnIgPSBnbG9idXNfZXJyb3JfY29uc3RydWN0X3N0 cmluZygKKy0JCSAgICBHTE9CVVNfRlRQX0NPTlRST0xfTU9EVUxFLAorLQkJICAgIEdMT0JVU19O VUxMLAorLQkJICAgIF9GQ1NMKCJnbG9idXNfZnRwX2NvbnRyb2xfZ2V0X2RjYXU6IG1hbGxvYyBm YWlsZWQiKSk7CistCSAgICB9CistCX0KKysgICAgICAgIGRjYXUtPm1vZGUgPSBkY19oYW5kbGUt PmRjYXUubW9kZTsKKysgICAgICAgIGlmKGRjX2hhbmRsZS0+ZGNhdS5tb2RlID09IEdMT0JVU19G VFBfQ09OVFJPTF9EQ0FVX1NVQkpFQ1QpCisrICAgICAgICB7CisrICAgICAgICAgICAgZGNhdS0+ c3ViamVjdC5zdWJqZWN0ID0KKysgICAgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfc3RyZHVwKGRj X2hhbmRsZS0+ZGNhdS5zdWJqZWN0LnN1YmplY3QpOworKyAgICAgICAgICAgIGlmKCFkY2F1LT5z dWJqZWN0LnN1YmplY3QpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBlcnIgPSBn bG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmluZygKKysgICAgICAgICAgICAgICAgICAgIEdMT0JV U19GVFBfQ09OVFJPTF9NT0RVTEUsCisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwK KysgICAgICAgICAgICAgICAgICAgIF9GQ1NMKCJnbG9idXNfZnRwX2NvbnRyb2xfZ2V0X2RjYXU6 IG1hbGxvYyBmYWlsZWQiKSk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorICAgICB9Cisg ICAgIGdsb2J1c19tdXRleF91bmxvY2soJmRjX2hhbmRsZS0+bXV0ZXgpOworIAorQEAgLTQxMzEs MTIgKzQxMzEsMTIgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2dldF9kY2F1KAorIAorIGdsb2J1c19y ZXN1bHRfdAorIGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9wcm90KAorLSAgICBnbG9idXNfZnRw X2NvbnRyb2xfaGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICBnbG9idXNfZnRwX2NvbnRyb2xfcHJv dGVjdGlvbl90CQlwcm90ZWN0aW9uKQorKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX3Qg KiAgICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX3Byb3RlY3Rp b25fdCAgICAgICAgICAgICBwcm90ZWN0aW9uKQorIHsKKyAgICAgZ2xvYnVzX2lfZnRwX2RjX2hh bmRsZV90ICogICAgICAgICAgICAgICAgICBkY19oYW5kbGU7CisgICAgIHN0YXRpYyBjaGFyICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXluYW1lPQorLQkiZ2xvYnVzX2Z0cF9jb250 cm9sX2xvY2FsX3Byb3QiOworKyAgICAgICAgImdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9wcm90 IjsKKyAgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAgICAgICAgICAgICAgICBlcnI7 CisgCisgICAgIC8qCitAQCAtNDE2OSw2NCArNDE2OSw2NCBAQCBnbG9idXNfZnRwX2NvbnRyb2xf bG9jYWxfcHJvdCgKKyAgICAgR2xvYnVzRlRQQ29udHJvbERhdGFUZXN0TWFnaWMoZGNfaGFuZGxl KTsKKyAgICAgaWYoZGNfaGFuZGxlLT5kY2F1Lm1vZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX0RD QVVfTk9ORSkKKyAgICAgeworLQllcnIgPSBnbG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmluZygK Ky0JCUdMT0JVU19GVFBfQ09OVFJPTF9NT0RVTEUsCistCQlHTE9CVVNfTlVMTCwKKy0JCV9GQ1NM KCJDYW5ub3Qgc2V0IHByb3RlY3Rpb24gd2l0aG91dCB1c2luZyBkY2F1IikpOworLQlyZXR1cm4g Z2xvYnVzX2Vycm9yX3B1dChlcnIpOworKyAgICAgICAgZXJyID0gZ2xvYnVzX2Vycm9yX2NvbnN0 cnVjdF9zdHJpbmcoCisrICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ09OVFJPTF9NT0RVTEUs CisrICAgICAgICAgICAgICAgIEdMT0JVU19OVUxMLAorKyAgICAgICAgICAgICAgICBfRkNTTCgi Q2Fubm90IHNldCBwcm90ZWN0aW9uIHdpdGhvdXQgdXNpbmcgZGNhdSIpKTsKKysgICAgICAgIHJl dHVybiBnbG9idXNfZXJyb3JfcHV0KGVycik7CisgICAgIH0KKyAgICAgaWYoZGNfaGFuZGxlLT5w cm90ZWN0aW9uID09IEdMT0JVU19GVFBfQ09OVFJPTF9QUk9URUNUSU9OX0NPTkZJREVOVElBTCkK KyAgICAgeworLQllcnIgPSBnbG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmluZygKKy0JCUdMT0JV U19GVFBfQ09OVFJPTF9NT0RVTEUsCistCQlHTE9CVVNfTlVMTCwKKy0JCV9GQ1NMKCJcIkNvbmZp ZGVudGlhbFwiIHByb3RlY3Rpb24gbGV2ZWwgbm90IHN1cHBvcnRlZCB3aXRoIEdTU0FQSSIpKTsK Ky0JcmV0dXJuIGdsb2J1c19lcnJvcl9wdXQoZXJyKTsKKysgICAgICAgIGVyciA9IGdsb2J1c19l cnJvcl9jb25zdHJ1Y3Rfc3RyaW5nKAorKyAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NPTlRS T0xfTU9EVUxFLAorKyAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKysgICAgICAgICAgICAg ICAgX0ZDU0woIlwiQ29uZmlkZW50aWFsXCIgcHJvdGVjdGlvbiBsZXZlbCBub3Qgc3VwcG9ydGVk IHdpdGggR1NTQVBJIikpOworKyAgICAgICAgcmV0dXJuIGdsb2J1c19lcnJvcl9wdXQoZXJyKTsK KyAgICAgfQorIAorICAgICBnbG9idXNfbXV0ZXhfbG9jaygmZGNfaGFuZGxlLT5tdXRleCk7Cisg ICAgIHsKKy0JZGNfaGFuZGxlLT5wcm90ZWN0aW9uID0gcHJvdGVjdGlvbjsKKy0KKy0Jc3dpdGNo KGRjX2hhbmRsZS0+cHJvdGVjdGlvbikKKy0JeworLQkgIGNhc2UgR0xPQlVTX0ZUUF9DT05UUk9M X1BST1RFQ1RJT05fQ0xFQVI6CistCSAgICBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2NoYW5u ZWxfbW9kZSgKKy0JCSAgICAmZGNfaGFuZGxlLT5pb19hdHRyLAorLQkJICAgIEdMT0JVU19JT19T RUNVUkVfQ0hBTk5FTF9NT0RFX0NMRUFSKTsKKy0JICAgIGdsb2J1c19pb19hdHRyX3NldF9zZWN1 cmVfcHJvdGVjdGlvbl9tb2RlKAorLQkJICAgICZkY19oYW5kbGUtPmlvX2F0dHIsCistCQkgICAg R0xPQlVTX0lPX1NFQ1VSRV9QUk9URUNUSU9OX01PREVfTk9ORSk7CistCSAgICBicmVhazsKKy0K Ky0JICBjYXNlIEdMT0JVU19GVFBfQ09OVFJPTF9QUk9URUNUSU9OX1NBRkU6CistCSAgICBnbG9i dXNfaW9fYXR0cl9zZXRfc2VjdXJlX2NoYW5uZWxfbW9kZSgKKy0JCSAgICAmZGNfaGFuZGxlLT5p b19hdHRyLAorLQkJICAgIEdMT0JVU19JT19TRUNVUkVfQ0hBTk5FTF9NT0RFX1NTTF9XUkFQKTsK Ky0JICAgIGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfcHJvdGVjdGlvbl9tb2RlKAorLQkJICAg ICZkY19oYW5kbGUtPmlvX2F0dHIsCistCQkgICAgR0xPQlVTX0lPX1NFQ1VSRV9QUk9URUNUSU9O X01PREVfU0FGRSk7CistCSAgICBicmVhazsKKy0KKy0JICBjYXNlIEdMT0JVU19GVFBfQ09OVFJP TF9QUk9URUNUSU9OX1BSSVZBVEU6CistCSAgICBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2No YW5uZWxfbW9kZSgKKy0JCSAgICAmZGNfaGFuZGxlLT5pb19hdHRyLAorLQkJICAgIEdMT0JVU19J T19TRUNVUkVfQ0hBTk5FTF9NT0RFX1NTTF9XUkFQKTsKKy0JICAgIGdsb2J1c19pb19hdHRyX3Nl dF9zZWN1cmVfcHJvdGVjdGlvbl9tb2RlKAorLQkJICAgICZkY19oYW5kbGUtPmlvX2F0dHIsCist CQkgICAgR0xPQlVTX0lPX1NFQ1VSRV9QUk9URUNUSU9OX01PREVfUFJJVkFURSk7CistCSAgICBi cmVhazsKKy0KKy0JICBkZWZhdWx0OgorLQkgICAgZ2xvYnVzX2Fzc2VydCgKKy0JCSAgICBkY19o YW5kbGUtPnByb3RlY3Rpb24KKy0JCSAgICAgICAgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX1BST1RF Q1RJT05fQ0xFQVIgfHwKKy0JCSAgICBkY19oYW5kbGUtPnByb3RlY3Rpb24KKy0JCSAgICAgICAg PT0gR0xPQlVTX0ZUUF9DT05UUk9MX1BST1RFQ1RJT05fU0FGRSB8fAorLQkJICAgIGRjX2hhbmRs ZS0+cHJvdGVjdGlvbgorLQkJICAgICAgICA9PSBHTE9CVVNfRlRQX0NPTlRST0xfUFJPVEVDVElP Tl9QUklWQVRFKTsKKy0JICAgIGJyZWFrOworLQl9CisrICAgICAgICBkY19oYW5kbGUtPnByb3Rl Y3Rpb24gPSBwcm90ZWN0aW9uOworKworKyAgICAgICAgc3dpdGNoKGRjX2hhbmRsZS0+cHJvdGVj dGlvbikKKysgICAgICAgIHsKKysgICAgICAgICAgY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xfUFJP VEVDVElPTl9DTEVBUjoKKysgICAgICAgICAgICBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2No YW5uZWxfbW9kZSgKKysgICAgICAgICAgICAgICAgICAgICZkY19oYW5kbGUtPmlvX2F0dHIsCisr ICAgICAgICAgICAgICAgICAgICBHTE9CVVNfSU9fU0VDVVJFX0NIQU5ORUxfTU9ERV9DTEVBUik7 CisrICAgICAgICAgICAgZ2xvYnVzX2lvX2F0dHJfc2V0X3NlY3VyZV9wcm90ZWN0aW9uX21vZGUo CisrICAgICAgICAgICAgICAgICAgICAmZGNfaGFuZGxlLT5pb19hdHRyLAorKyAgICAgICAgICAg ICAgICAgICAgR0xPQlVTX0lPX1NFQ1VSRV9QUk9URUNUSU9OX01PREVfTk9ORSk7CisrICAgICAg ICAgICAgYnJlYWs7CisrCisrICAgICAgICAgIGNhc2UgR0xPQlVTX0ZUUF9DT05UUk9MX1BST1RF Q1RJT05fU0FGRToKKysgICAgICAgICAgICBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2NoYW5u ZWxfbW9kZSgKKysgICAgICAgICAgICAgICAgICAgICZkY19oYW5kbGUtPmlvX2F0dHIsCisrICAg ICAgICAgICAgICAgICAgICBHTE9CVVNfSU9fU0VDVVJFX0NIQU5ORUxfTU9ERV9TU0xfV1JBUCk7 CisrICAgICAgICAgICAgZ2xvYnVzX2lvX2F0dHJfc2V0X3NlY3VyZV9wcm90ZWN0aW9uX21vZGUo CisrICAgICAgICAgICAgICAgICAgICAmZGNfaGFuZGxlLT5pb19hdHRyLAorKyAgICAgICAgICAg ICAgICAgICAgR0xPQlVTX0lPX1NFQ1VSRV9QUk9URUNUSU9OX01PREVfU0FGRSk7CisrICAgICAg ICAgICAgYnJlYWs7CisrCisrICAgICAgICAgIGNhc2UgR0xPQlVTX0ZUUF9DT05UUk9MX1BST1RF Q1RJT05fUFJJVkFURToKKysgICAgICAgICAgICBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2No YW5uZWxfbW9kZSgKKysgICAgICAgICAgICAgICAgICAgICZkY19oYW5kbGUtPmlvX2F0dHIsCisr ICAgICAgICAgICAgICAgICAgICBHTE9CVVNfSU9fU0VDVVJFX0NIQU5ORUxfTU9ERV9TU0xfV1JB UCk7CisrICAgICAgICAgICAgZ2xvYnVzX2lvX2F0dHJfc2V0X3NlY3VyZV9wcm90ZWN0aW9uX21v ZGUoCisrICAgICAgICAgICAgICAgICAgICAmZGNfaGFuZGxlLT5pb19hdHRyLAorKyAgICAgICAg ICAgICAgICAgICAgR0xPQlVTX0lPX1NFQ1VSRV9QUk9URUNUSU9OX01PREVfUFJJVkFURSk7Cisr ICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAg Z2xvYnVzX2Fzc2VydCgKKysgICAgICAgICAgICAgICAgICAgIGRjX2hhbmRsZS0+cHJvdGVjdGlv bgorKyAgICAgICAgICAgICAgICAgICAgICAgID09IEdMT0JVU19GVFBfQ09OVFJPTF9QUk9URUNU SU9OX0NMRUFSIHx8CisrICAgICAgICAgICAgICAgICAgICBkY19oYW5kbGUtPnByb3RlY3Rpb24K KysgICAgICAgICAgICAgICAgICAgICAgICA9PSBHTE9CVVNfRlRQX0NPTlRST0xfUFJPVEVDVElP Tl9TQUZFIHx8CisrICAgICAgICAgICAgICAgICAgICBkY19oYW5kbGUtPnByb3RlY3Rpb24KKysg ICAgICAgICAgICAgICAgICAgICAgICA9PSBHTE9CVVNfRlRQX0NPTlRST0xfUFJPVEVDVElPTl9Q UklWQVRFKTsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0KKyAgICAgfQorICAgICBn bG9idXNfbXV0ZXhfdW5sb2NrKCZkY19oYW5kbGUtPm11dGV4KTsKKyAKK0BAIC00MjM2LDggKzQy MzYsOCBAQCBnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfcHJvdCgKKyAKKyBnbG9idXNfcmVzdWx0 X3QKKyBnbG9idXNfZnRwX2NvbnRyb2xfZ2V0X3Byb3QoCistICAgIGdsb2J1c19mdHBfY29udHJv bF9oYW5kbGVfdCAqCQloYW5kbGUsCistICAgIGdsb2J1c19mdHBfY29udHJvbF9wcm90ZWN0aW9u X3QgKgkJcHJvdGVjdGlvbikKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICogICAg ICAgICAgICAgICBoYW5kbGUsCisrICAgIGdsb2J1c19mdHBfY29udHJvbF9wcm90ZWN0aW9uX3Qg KiAgICAgICAgICAgcHJvdGVjdGlvbikKKyB7CisgICAgIGdsb2J1c19pX2Z0cF9kY19oYW5kbGVf dCAqICAgICAgICAgICAgICAgICAgZGNfaGFuZGxlOworICAgICBnbG9idXNfb2JqZWN0X3QgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IEdMT0JVU19TVUNDRVNTOworQEAgLTQyNzEs NyArNDI3MSw3IEBAIGdsb2J1c19mdHBfY29udHJvbF9nZXRfcHJvdCgKKyAKKyAgICAgZ2xvYnVz X211dGV4X2xvY2soJmRjX2hhbmRsZS0+bXV0ZXgpOworICAgICB7CistCSpwcm90ZWN0aW9uID0g ZGNfaGFuZGxlLT5wcm90ZWN0aW9uOworKyAgICAgICAgKnByb3RlY3Rpb24gPSBkY19oYW5kbGUt PnByb3RlY3Rpb247CisgICAgIH0KKyAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmZGNfaGFuZGxl LT5tdXRleCk7CisgCitAQCAtNDI5Nyw0MiArNDI5Nyw0MiBAQCBnbG9idXNfZnRwX2NvbnRyb2xf Z2V0X3Byb3QoCisgICovCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jb250cm9sX2xv Y2FsX3Bic3ooCistICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqCQloYW5kbGUsCist ICAgIHVuc2lnbmVkIGxvbmcgCQkJCWJ1ZnNpemUpCisrICAgIGdsb2J1c19mdHBfY29udHJvbF9o YW5kbGVfdCAqICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICB1bnNpZ25lZCBsb25nICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemUpCisgeworLSAgICBnbG9idXNfb2JqZWN0 X3QgKgkJCQllcnJvciA9IEdMT0JVU19OVUxMOworKyAgICBnbG9idXNfb2JqZWN0X3QgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gR0xPQlVTX05VTEw7CisgCisgICAgIGlmKGhh bmRsZSA9PSBHTE9CVVNfTlVMTCkKKyAgICAgeworLQllcnJvciA9IGdsb2J1c19lcnJvcl9jb25z dHJ1Y3Rfc3RyaW5nKAorLQkJR0xPQlVTX0ZUUF9DT05UUk9MX01PRFVMRSwKKy0JCUdMT0JVU19O VUxMLAorLQkJX0ZDU0woImdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9wYnN6OiBIYW5kbGUgYXJn dW1lbnQgaXMgTlVMTCIpKTsKKy0JZ290byBlcnJvcl9leGl0OworKyAgICAgICAgZXJyb3IgPSBn bG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmluZygKKysgICAgICAgICAgICAgICAgR0xPQlVTX0ZU UF9DT05UUk9MX01PRFVMRSwKKysgICAgICAgICAgICAgICAgR0xPQlVTX05VTEwsCisrICAgICAg ICAgICAgICAgIF9GQ1NMKCJnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfcGJzejogSGFuZGxlIGFy Z3VtZW50IGlzIE5VTEwiKSk7CisrICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgIH0KKyAg ICAgLyogcGJzeiBtdXN0IGJlIDw9IDMyIGJpdHMgKi8KKyAgICAgaWYoYnVmc2l6ZSAhPSAoYnVm c2l6ZSAmIDB4ZmZmZmZmZmYpKQorICAgICB7CistCWVycm9yID0gZ2xvYnVzX2Vycm9yX2NvbnN0 cnVjdF9zdHJpbmcoCistCQlHTE9CVVNfRlRQX0NPTlRST0xfTU9EVUxFLAorLQkJR0xPQlVTX05V TEwsCistCQlfRkNTTCgiZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX3Bic3o6IEludmFsaWQgYnVm ZmVyIHNpemUiKSk7CistCWdvdG8gZXJyb3JfZXhpdDsKKysgICAgICAgIGVycm9yID0gZ2xvYnVz X2Vycm9yX2NvbnN0cnVjdF9zdHJpbmcoCisrICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ09O VFJPTF9NT0RVTEUsCisrICAgICAgICAgICAgICAgIEdMT0JVU19OVUxMLAorKyAgICAgICAgICAg ICAgICBfRkNTTCgiZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX3Bic3o6IEludmFsaWQgYnVmZmVy IHNpemUiKSk7CisrICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgIH0KKyAKKyAgICAgZ2xv YnVzX211dGV4X2xvY2soJihoYW5kbGUtPmRjX2hhbmRsZS5tdXRleCkpOworICAgICB7CistCWlm KGhhbmRsZS0+ZGNfaGFuZGxlLnBic3ogIT0gMFVMICYmCistCSAgIGhhbmRsZS0+ZGNfaGFuZGxl LnBic3ogPCBidWZzaXplKQorLQl7CistCSAgICBlcnJvciA9IGdsb2J1c19lcnJvcl9jb25zdHJ1 Y3Rfc3RyaW5nKAorLQkJR0xPQlVTX0ZUUF9DT05UUk9MX01PRFVMRSwKKy0JCUdMT0JVU19OVUxM LAorLQkJX0ZDU0woImdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9wYnN6OiBJbnZhbGlkIGJ1ZmZl ciBzaXplIikpOworKyAgICAgICAgaWYoaGFuZGxlLT5kY19oYW5kbGUucGJzeiAhPSAwVUwgJiYK KysgICAgICAgICAgIGhhbmRsZS0+ZGNfaGFuZGxlLnBic3ogPCBidWZzaXplKQorKyAgICAgICAg eworKyAgICAgICAgICAgIGVycm9yID0gZ2xvYnVzX2Vycm9yX2NvbnN0cnVjdF9zdHJpbmcoCisr ICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ09OVFJPTF9NT0RVTEUsCisrICAgICAgICAgICAg ICAgIEdMT0JVU19OVUxMLAorKyAgICAgICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2Z0cF9jb250 cm9sX2xvY2FsX3Bic3o6IEludmFsaWQgYnVmZmVyIHNpemUiKSk7CisgCistCSAgICBnb3RvIHVu bG9ja19leGl0OworLQl9CistCWhhbmRsZS0+ZGNfaGFuZGxlLnBic3ogPSBidWZzaXplOworKyAg ICAgICAgICAgIGdvdG8gdW5sb2NrX2V4aXQ7CisrICAgICAgICB9CisrICAgICAgICBoYW5kbGUt PmRjX2hhbmRsZS5wYnN6ID0gYnVmc2l6ZTsKKyAgICAgfQorIHVubG9ja19leGl0OgorICAgICBn bG9idXNfbXV0ZXhfdW5sb2NrKCZoYW5kbGUtPmRjX2hhbmRsZS5tdXRleCk7CitAQCAtNDM2MCwy OCArNDM2MCwyOCBAQCBlcnJvcl9leGl0OgorICAqLworIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1 c19mdHBfY29udHJvbF9nZXRfcGJzeigKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90 ICoJCWhhbmRsZSwKKy0gICAgdW5zaWduZWQgbG9uZyAqCQkJCWJ1ZnNpemUpCisrICAgIGdsb2J1 c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICB1bnNp Z25lZCBsb25nICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemUpCisgeworICAg ICBpZihoYW5kbGUgPT0gR0xPQlVTX05VTEwpCisgICAgIHsKKy0JcmV0dXJuIGdsb2J1c19lcnJv cl9wdXQoCistCQlnbG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmluZygKKy0JCSAgICBHTE9CVVNf RlRQX0NPTlRST0xfTU9EVUxFLAorLQkJICAgIEdMT0JVU19OVUxMLAorLQkJICAgIF9GQ1NMKCJn bG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfcGJzejogSGFuZGxlIGFyZ3VtZW50IGlzIE5VTEwiKSkp OworKyAgICAgICAgcmV0dXJuIGdsb2J1c19lcnJvcl9wdXQoCisrICAgICAgICAgICAgICAgIGds b2J1c19lcnJvcl9jb25zdHJ1Y3Rfc3RyaW5nKAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVT X0ZUUF9DT05UUk9MX01PRFVMRSwKKysgICAgICAgICAgICAgICAgICAgIEdMT0JVU19OVUxMLAor KyAgICAgICAgICAgICAgICAgICAgX0ZDU0woImdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9wYnN6 OiBIYW5kbGUgYXJndW1lbnQgaXMgTlVMTCIpKSk7CisgICAgIH0KKyAgICAgaWYoYnVmc2l6ZSA9 PSBHTE9CVVNfTlVMTCkKKyAgICAgeworLQlyZXR1cm4gZ2xvYnVzX2Vycm9yX3B1dCgKKy0JCWds b2J1c19lcnJvcl9jb25zdHJ1Y3Rfc3RyaW5nKAorLQkJICAgIEdMT0JVU19GVFBfQ09OVFJPTF9N T0RVTEUsCistCQkgICAgR0xPQlVTX05VTEwsCistCQkgICAgX0ZDU0woImdsb2J1c19mdHBfY29u dHJvbF9sb2NhbF9wYnN6OiBidWZzaXplIGFyZ3VtZW50IGlzIE5VTEwiKSkpOworKyAgICAgICAg cmV0dXJuIGdsb2J1c19lcnJvcl9wdXQoCisrICAgICAgICAgICAgICAgIGdsb2J1c19lcnJvcl9j b25zdHJ1Y3Rfc3RyaW5nKAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9M X01PRFVMRSwKKysgICAgICAgICAgICAgICAgICAgIEdMT0JVU19OVUxMLAorKyAgICAgICAgICAg ICAgICAgICAgX0ZDU0woImdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9wYnN6OiBidWZzaXplIGFy Z3VtZW50IGlzIE5VTEwiKSkpOworICAgICB9CisgICAgIGdsb2J1c19tdXRleF9sb2NrKCYoaGFu ZGxlLT5kY19oYW5kbGUubXV0ZXgpKTsKKyAgICAgeworLQkqYnVmc2l6ZSA9IGhhbmRsZS0+ZGNf aGFuZGxlLnBic3o7CisrICAgICAgICAqYnVmc2l6ZSA9IGhhbmRsZS0+ZGNfaGFuZGxlLnBic3o7 CisgICAgIH0KKyAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmKGhhbmRsZS0+ZGNfaGFuZGxlLm11 dGV4KSk7CisgCitAQCAtNDQxMiw4ICs0NDEyLDggQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2dldF9w YnN6KAorICAqLworIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9z dHJ1KAorLSAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICBn bG9idXNfZnRwX2NvbnRyb2xfc3RydWN0dXJlX3QJCXN0cnVjdHVyZSkKKysgICAgZ2xvYnVzX2Z0 cF9jb250cm9sX2hhbmRsZV90ICogICAgICAgICAgICAgICBoYW5kbGUsCisrICAgIGdsb2J1c19m dHBfY29udHJvbF9zdHJ1Y3R1cmVfdCAgICAgICAgICAgICAgc3RydWN0dXJlKQorIHsKKyAgICAg Z2xvYnVzX2lfZnRwX2RjX2hhbmRsZV90ICogICAgICAgICAgICAgICAgICBkY19oYW5kbGU7Cisg ICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyOworQEAg LTQ0OTksMTMgKzQ0OTksMTMgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX3N0cnUoCisgICov CisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfd3JpdGUoCistICAg IGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqCQloYW5kbGUsCistICAgIGdsb2J1c19ieXRl X3QgKgkJCQlidWZmZXIsCistICAgIGdsb2J1c19zaXplX3QJCQkJbGVuZ3RoLAorLSAgICBnbG9i dXNfb2ZmX3QJCQkJb2Zmc2V0LAorLSAgICBnbG9idXNfYm9vbF90CQkJCWVvZiwKKy0gICAgZ2xv YnVzX2Z0cF9jb250cm9sX2RhdGFfY2FsbGJhY2tfdAkgICAgICAgIGNhbGxiYWNrLAorLSAgICB2 b2lkICoJCQkJCWNhbGxiYWNrX2FyZykKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90 ICogICAgICAgICAgICAgICBoYW5kbGUsCisrICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnVmZmVyLAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxlbmd0aCwKKysgICAgZ2xvYnVzX29mZl90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvZmZzZXQsCisrICAgIGdsb2J1c19ib29sX3QgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW9mLAorKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV9j YWxsYmFja190ICAgICAgICAgIGNhbGxiYWNrLAorKyAgICB2b2lkICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2FyZykKKyB7CisgICAgIGdsb2J1c19pX2Z0 cF9kY19oYW5kbGVfdCAqICAgICAgICAgICAgICAgICAgZGNfaGFuZGxlOworICAgICBnbG9idXNf cmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEdMT0JVU19TVUND RVNTOworQEAgLTQ1NzksNyArNDU3OSw3IEBAIGdsb2J1c19mdHBfY29udHJvbF9kYXRhX3dyaXRl KAorICAgICAgICAgICAgICAgICA6IGdsb2J1c19lcnJvcl9jb25zdHJ1Y3Rfc3RyaW5nKAorICAg ICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NPTlRST0xfTU9EVUxFLAorICAgICAgICAg ICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKy0gICAgICAgICBfRkNTTCgiZ2xvYnVzX2Z0cF9j b250cm9sX2RhdGFfd3JpdGUoKTogSGFuZGxlIG5vdCBpbiBwcm9wZXIgc3RhdGUuICVzIiksIAor KyAgICAgICAgIF9GQ1NMKCJnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV93cml0ZSgpOiBIYW5kbGUg bm90IGluIHByb3BlciBzdGF0ZS4gJXMiKSwKKyAgICAgICAgICBnbG9idXNfbF9mdHBfY29udHJv bF9zdGF0ZV90b19zdHJpbmcoZGNfaGFuZGxlLT5zdGF0ZSkpOworICAgICAgICAgfQorICAgICAg ICAgZWxzZSBpZihkY19oYW5kbGUtPm1vZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX01PREVfU1RS RUFNKQorQEAgLTQ2MTMsNyArNDYxMyw3IEBAIGdsb2J1c19mdHBfY29udHJvbF9kYXRhX3dyaXRl KAorICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKyAgICAgICAgICBfRkNTTCgi Z2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfd3JpdGUoKTogSGFuZGxlIG5vdCBpbiBwcm9wZXIgc3Rh dGUuIikpOworICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBpZihlcnIpCisgICAg ICAgICB7CisgICAgICAgICAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmZGNfaGFuZGxlLT5tdXRl eCk7CitAQCAtNDYyOSw3ICs0NjI5LDcgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfd3JpdGUo CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jb250cm9sX2dldF9zdHJpcGVfY291 bnQoCistICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqCQloYW5kbGUsCisrICAgIGds b2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgaGFuZGxlLAorICAgICBp bnQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwZV9jb3VudCkK KyB7CisgICAgIGdsb2J1c19pX2Z0cF9kY19oYW5kbGVfdCAqICAgICAgICAgICAgICAgICAgZGNf aGFuZGxlOworQEAgLTQ3MDAsMTEgKzQ3MDAsMTEgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2dldF9z dHJpcGVfY291bnQoCisgICovCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jb250cm9s X2RhdGFfcmVhZCgKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICoJCWhhbmRsZSwK Ky0gICAgZ2xvYnVzX2J5dGVfdCAqCQkJCWJ1ZmZlciwKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQlt YXhfbGVuZ3RoLAorLSAgICBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV9jYWxsYmFja190CSAgICAg ICAgY2FsbGJhY2ssCistICAgIHZvaWQgKgkJCQkJY2FsbGJhY2tfYXJnKQorKyAgICBnbG9idXNf ZnRwX2NvbnRyb2xfaGFuZGxlX3QgKiAgICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgZ2xvYnVz X2J5dGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsCisrICAgIGdsb2J1 c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xlbmd0aCwKKysgICAg Z2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfY2FsbGJhY2tfdCAgICAgICAgICBjYWxsYmFjaywKKysg ICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19h cmcpCisgeworICAgICBnbG9idXNfaV9mdHBfZGNfaGFuZGxlX3QgKiAgICAgICAgICAgICAgICAg IGRjX2hhbmRsZTsKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKK0BAIC00NzYxLDcgKzQ3NjEsNyBAQCBnbG9i dXNfZnRwX2NvbnRyb2xfZGF0YV9yZWFkKAorICAgICBnbG9idXNfbXV0ZXhfbG9jaygmZGNfaGFu ZGxlLT5tdXRleCk7CisgICAgIHsKKyAgICAgICAgIGVyciA9IEdMT0JVU19OVUxMOworLSAgICAg ICAgCisrCisgICAgICAgICBpZihkY19oYW5kbGUtPnRyYW5zZmVyX2hhbmRsZSA9PSBHTE9CVVNf TlVMTCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBlcnIgPSBkY19oYW5kbGUtPmNvbm5lY3Rf ZXJyb3IKK0BAIC00NzcxLDcgKzQ3NzEsNyBAQCBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV9yZWFk KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX05VTEwsCisgICAgICAgICAgICAg ICAgICAgICBfRkNTTCgiSGFuZGxlIG5vdCBpbiB0aGUgcHJvcGVyIHN0YXRlOnRyYW5zZmVyIGhh bmRsZSA9PSBOVUxMIikpOworICAgICAgICAgfQorLSAgICAgICAgZWxzZSBpZihkY19oYW5kbGUt PnN0YXRlICE9IEdMT0JVU19GVFBfREFUQV9TVEFURV9DT05ORUNUX1JFQUQgJiYgCisrICAgICAg ICBlbHNlIGlmKGRjX2hhbmRsZS0+c3RhdGUgIT0gR0xPQlVTX0ZUUF9EQVRBX1NUQVRFX0NPTk5F Q1RfUkVBRCAmJgorICAgICAgICAgICAgIChkY19oYW5kbGUtPnN0YXRlICE9IEdMT0JVU19GVFBf REFUQV9TVEFURV9FT0YgfHwKKyAgICAgICAgICAgICAgICAgICAgZGNfaGFuZGxlLT50cmFuc2Zl cl9oYW5kbGUtPmRpcmVjdGlvbiAhPSBHTE9CVVNfRlRQX0RBVEFfU1RBVEVfQ09OTkVDVF9SRUFE KSkKKyAgICAgICAgIHsKK0BAIC00ODE1LDcgKzQ4MTUsNyBAQCBnbG9idXNfZnRwX2NvbnRyb2xf ZGF0YV9yZWFkKAorICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKyAgICAgICAg ICBfRkNTTCgiZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfcmVhZCgpOiBIYW5kbGUgbm90IHVzaW5n IGNvcnJlY3QgbW9kZS4gIFBvc3NpYmxlIG1lbW9yeSBjb3JydXB0aW9uLiIpKTsKKyAgICAgICAg IH0KKy0gICAgICAgIAorKworICAgICAgICAgaWYoZXJyKQorICAgICAgICAgeworICAgICAgICAg ICAgIGdsb2J1c19tdXRleF91bmxvY2soJmRjX2hhbmRsZS0+bXV0ZXgpOworQEAgLTQ4MzQsMTEg KzQ4MzQsMTEgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfcmVhZCgKKyAgKi8KKyBnbG9idXNf cmVzdWx0X3QKKyBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV9yZWFkX2FsbCgKKy0gICAgZ2xvYnVz X2Z0cF9jb250cm9sX2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgZ2xvYnVzX2J5dGVfdCAqCQkJ CWJ1ZmZlciwKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQlsZW5ndGgsCisrICAgIGdsb2J1c19mdHBf Y29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICBnbG9idXNfYnl0 ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwKKysgICAgZ2xvYnVzX3Np emVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsCisgICAgIGdsb2J1c19m dHBfY29udHJvbF9kYXRhX2NhbGxiYWNrX3QgICAgICAgICAgY2FsbGJhY2ssCistICAgIHZvaWQg KgkJCQkJY2FsbGJhY2tfYXJnKQorKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNhbGxiYWNrX2FyZykKKyB7CisgICAgIGdsb2J1c19pX2Z0cF9kY19oYW5k bGVfdCAqICAgICAgICAgICAgICAgICAgZGNfaGFuZGxlOworICAgICBnbG9idXNfZnRwX2RhdGFf c3RyaXBlX3QgKiAgICAgICAgICAgICAgICAgIHN0cmlwZTsKK0BAIC00OTAxLDcgKzQ5MDEsNyBA QCBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV9yZWFkX2FsbCgKKyAgICAgZ2xvYnVzX211dGV4X2xv Y2soJmRjX2hhbmRsZS0+bXV0ZXgpOworICAgICB7CisgICAgICAgICBlcnIgPSBHTE9CVVNfTlVM TDsKKy0gICAgICAgIAorKworICAgICAgICAgaWYoZGNfaGFuZGxlLT50cmFuc2Zlcl9oYW5kbGUg PT0gR0xPQlVTX05VTEwpCisgICAgICAgICB7CisgICAgICAgICAgICAgZXJyID0gZGNfaGFuZGxl LT5jb25uZWN0X2Vycm9yCitAQCAtNDkyOCwxMyArNDkyOCwxMyBAQCBnbG9idXNfZnRwX2NvbnRy b2xfZGF0YV9yZWFkX2FsbCgKKyAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX05VTEwsCisg ICAgICAgICAgX0ZDU0woImdsb2J1c19mdHBfY29udHJvbF9kYXRhX3JlYWRfYWxsKCk6IE9ubHkg b25lIHJlYWRfYWxsIGNhbiBiZSByZWdpc3RlcmVkIGF0IGEgdGltZS4gIFlvdSBtdXN0IHdhaXQg Zm9yIGEgY2FsbGJhY2sgd2l0aCBlb2Ygc2V0IHRvIEdMT0JVU19UUlVFIGJlZm9yZSBjYWxsaW5n IHJlYWQgYWxsIGFnYWluLiIpKTsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAg aWYoZXJyKQorICAgICAgICAgeworICAgICAgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmRj X2hhbmRsZS0+bXV0ZXgpOworICAgICAgICAgICAgIHJldHVybiBnbG9idXNfZXJyb3JfcHV0KGVy cik7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIHRyYW5zZmVyX2hhbmRsZS0+ YmlnX2J1ZmZlciA9IGJ1ZmZlcjsKKyAgICAgICAgIHRyYW5zZmVyX2hhbmRsZS0+YmlnX2J1ZmZl cl9sZW5ndGggPSBsZW5ndGg7CisgICAgICAgICB0cmFuc2Zlcl9oYW5kbGUtPmJpZ19idWZmZXJf Y2IgPSBjYWxsYmFjazsKK0BAIC01MTIxLDcgKzUxMjEsNyBAQCBnbG9idXNfbF9mdHBfY29udHJv bF9kYXRhX3N0cmVhbV9yZWFkX3dyaXRlKAorICAgICBnbG9idXNfZnRwX2RhdGFfc3RyaXBlX3Qg KiAgICAgICAgICAgICAgICAgIHN0cmlwZTsKKyAgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAg ICAgICAgICAgICAgICAgICAgICBlcnI7CisgICAgIGdsb2J1c19pX2Z0cF9kY190cmFuc2Zlcl9o YW5kbGVfdCAqICAgICAgICAgdHJhbnNmZXJfaGFuZGxlOworLSAgICBzdGF0aWMgY2hhciAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15X25hbWUgPSAKKysgICAgc3RhdGljIGNoYXIg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteV9uYW1lID0KKyAgICAgICAgICJnbG9i dXNfbF9mdHBfY29udHJvbF9kYXRhX3N0cmVhbV9yZWFkX3dyaXRlIjsKKyAKKyAgICAgaWYoZGNf aGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0RBVEFfU1RBVEVfQ0xPU0lORykKK0BAIC01MzA0 LDkgKzUzMDQsOSBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9kYXRhX2ViX3dyaXRlKAorICAgICAg ICAgICAgICAgICAgICAgR0xPQlVTX05VTEwsCisgICAgICAgICAgICAgICAgICAgICBHTE9CVVNf TlVMTCwKKyAgICAgICAgICAgICAgICAgICAgIGRjX2hhbmRsZSk7CistICAgICAgICAgICAgICAg IHRtcF9lbnQtPmNhbGxiYWNrX3RhYmxlX2hhbmRsZSA9IAorKyAgICAgICAgICAgICAgICB0bXBf ZW50LT5jYWxsYmFja190YWJsZV9oYW5kbGUgPQorICAgICAgICAgICAgICAgICAgICAgZGF0YV9p bmZvLmNhbGxiYWNrX3RhYmxlX2hhbmRsZTsKKy0gICAgICAgICAgICAgICAgICAgIAorKworICAg ICAgICAgICAgICAgICBnbG9idXNfZmlmb19lbnF1ZXVlKCZzdHJpcGUtPmNvbW1hbmRfcSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKXRtcF9lbnQpOworIAor QEAgLTU2NjcsOSArNTY2Nyw5IEBAIGdsb2J1c19YX2Z0cF9jb250cm9sX2xvY2FsX2xheW91dCgK KyAgICAgICAgICAgICBuYW1lKTsKKyAgICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZn bG9idXNfbF9mdHBfY29udHJvbF9kYXRhX211dGV4KTsKKy0gICAgCisrCisgICAgIGdsb2J1c19m cmVlKG5hbWUpOworLSAgICAKKysKKyAgICAgaWYobGF5b3V0X2luZm8gPT0gR0xPQlVTX05VTEwp CisgICAgIHsKKyAgICAgICAgIHJldHVybiBnbG9idXNfZXJyb3JfcHV0KGdsb2J1c19lcnJvcl9j b25zdHJ1Y3Rfc3RyaW5nKAorQEAgLTU3NDUsNyArNTc0NSw3IEBAIGdsb2J1c19YX2Z0cF9jb250 cm9sX2xvY2FsX2xheW91dCgKKyAgKi8KKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2Nv bnRyb2xfY3JlYXRlX2RhdGFfaW5mbygKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90 ICoJCWhhbmRsZSwKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICogICAgICAgICAg ICAgICBoYW5kbGUsCisgICAgIGdsb2J1c19mdHBfY29udHJvbF9kYXRhX3dyaXRlX2luZm9fdCAq ICAgICAgZGF0YV9pbmZvLAorICAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJ1ZmZlciwKKyAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsZW5ndGgsCitAQCAtNTg0NCw3ICs1ODQ0LDcgQEAgZ2xvYnVzX2Z0cF9jb250 cm9sX2NyZWF0ZV9kYXRhX2luZm8oCisgICovCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0 cF9jb250cm9sX3JlbGVhc2VfZGF0YV9pbmZvKAorLSAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFu ZGxlX3QgKgkJaGFuZGxlLAorKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX3QgKiAgICAg ICAgICAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfd3JpdGVfaW5m b190ICogICAgICBkYXRhX2luZm8pCisgeworICAgICBnbG9idXNfaV9mdHBfZGNfaGFuZGxlX3Qg KiAgICAgICAgICAgICAgICAgIGRjX2hhbmRsZTsKK0BAIC01OTQyLDcgKzU5NDIsNyBAQCBnbG9i dXNfZnRwX2NvbnRyb2xfcmVsZWFzZV9kYXRhX2luZm8oCisgICovCisgZ2xvYnVzX3Jlc3VsdF90 CisgZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfd3JpdGVfc3RyaXBlKAorLSAgICBnbG9idXNfZnRw X2NvbnRyb2xfaGFuZGxlX3QgKgkJaGFuZGxlLAorKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFu ZGxlX3QgKiAgICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsCisgICAgIGdsb2J1c19zaXplX3QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLAorICAgICBnbG9idXNfb2ZmX3QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwKK0BAIC01OTk3LDcgKzU5OTcsNyBAQCBn bG9idXNfZnRwX2NvbnRyb2xfZGF0YV93cml0ZV9zdHJpcGUoCisgICAgICAgICAgICAgICAgICAg ICBfRkNTTCgiSGFuZGxlIG5vdCBpbiB0aGUgcHJvcGVyIHN0YXRlIikpOworICAgICAgICAgICAg IHJldHVybiBnbG9idXNfZXJyb3JfcHV0KGVycik7CisgICAgICAgICB9CistICAgICAgICAKKysK KyAgICAgICAgIHJlcyA9IGdsb2J1c19pX2Z0cF9jb250cm9sX2NyZWF0ZV9kYXRhX2luZm8oCisg ICAgICAgICAgICAgICAgICAgICAgIGRjX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg JmRhdGFfaW5mbywKK0BAIC02MDczLDcgKzYwNzMsNyBAQCBleGl0OgorICAqLworIGdsb2J1c19y ZXN1bHRfdAorIGdsb2J1c19YX2Z0cF9jb250cm9sX2RhdGFfd3JpdGVfc3RyaXBlKAorLSAgICBn bG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX3QgKgkJaGFuZGxlLAorKyAgICBnbG9idXNfZnRwX2Nv bnRyb2xfaGFuZGxlX3QgKiAgICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVzX2J5dGVf dCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsCisgICAgIGdsb2J1c19zaXpl X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLAorICAgICBnbG9idXNfb2Zm X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwKK0BAIC02MTQ1LDEwICs2 MTQ1LDEwIEBAIGdsb2J1c19YX2Z0cF9jb250cm9sX2RhdGFfd3JpdGVfc3RyaXBlKAorIGdsb2J1 c19yZXN1bHRfdAorIGdsb2J1c19pX2Z0cF9jb250cm9sX2RhdGFfd3JpdGVfc3RyaXBlKAorICAg ICBnbG9idXNfaV9mdHBfZGNfaGFuZGxlX3QgKiAgICAgICAgICAgICAgICAgIGRjX2hhbmRsZSwK Ky0gICAgZ2xvYnVzX2J5dGVfdCAqCQkJCWJ1ZmZlciwKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQls ZW5ndGgsCistICAgIGdsb2J1c19vZmZfdAkJCQlvZmZzZXQsCistICAgIGdsb2J1c19ib29sX3QJ CQkJZW9mLAorKyAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJ1ZmZlciwKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsZW5ndGgsCisrICAgIGdsb2J1c19vZmZfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb2Zmc2V0LAorKyAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVvZiwKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJpcGVfbmR4LAorICAgICBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV93cml0ZV9pbmZvX3Qg KiAgICAgIGRhdGFfaW5mbykKKyB7CitAQCAtNjM2Niw3ICs2MzY2LDcgQEAgZ2xvYnVzX2xfZnRw X2RhdGFfc3RyaXBlX3BvbGwoCisgICovCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2xfZnRw X2RhdGFfc3RyZWFtX3N0cmlwZV9wb2xsKAorLSAgICBnbG9idXNfZnRwX2RhdGFfc3RyaXBlX3Qg KgkJICAgICAgICAgIHN0cmlwZSkKKysgICAgZ2xvYnVzX2Z0cF9kYXRhX3N0cmlwZV90ICogICAg ICAgICAgICAgICAgICAgIHN0cmlwZSkKKyB7CisgICAgIGdsb2J1c19sX2Z0cF9oYW5kbGVfdGFi bGVfZW50cnlfdCAqICAgICAgICAgICBlbnRyeTsKKyAgICAgZ2xvYnVzX2Z0cF9kYXRhX2Nvbm5l Y3Rpb25fdCAqICAgICAgICAgICAgICAgIGRhdGFfY29ubjsKK0BAIC02NDAxLDcgKzY0MDEsNyBA QCBnbG9idXNfbF9mdHBfZGF0YV9zdHJlYW1fc3RyaXBlX3BvbGwoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5idWZmZXIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5sZW5ndGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0bXBfbGVuKTsKKy0g ICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgaWYoZW50cnktPmFz Y2lpX2J1ZmZlcikKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICB0bXBfYnVmID0gZW50cnktPmFzY2lpX2J1ZmZlcjsKK0BAIC02Njg4LDggKzY2ODgsOCBA QCBnbG9idXNfbF9mdHBfZGF0YV9lYl9wb2xsKAorICAgICAgICAgICAgIH0vKiBlbmQgd2hpbGUg Ki8KKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UgaWYoZGNfaGFuZGxlLT5zdGF0ZSA9PSBHTE9C VVNfRlRQX0RBVEFfU1RBVEVfQ09OTkVDVF9SRUFECistCQl8fCAoZGNfaGFuZGxlLT5zdGF0ZSA9 PSBHTE9CVVNfRlRQX0RBVEFfU1RBVEVfRU9GICYmCistCQkgICAgdHJhbnNmZXJfaGFuZGxlLT5k aXJlY3Rpb24gPT0gR0xPQlVTX0ZUUF9EQVRBX1NUQVRFX0NPTk5FQ1RfUkVBRCkpCisrICAgICAg ICAgICAgICAgIHx8IChkY19oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfREFUQV9TVEFURV9F T0YgJiYKKysgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyX2hhbmRsZS0+ZGlyZWN0aW9uID09 IEdMT0JVU19GVFBfREFUQV9TVEFURV9DT05ORUNUX1JFQUQpKQorICAgICAgICAgeworICAgICAg ICAgICAgIC8qCisgICAgICAgICAgICAgICogIGlmIHdlIGFyZSByZWFkaW5nIGEgYmlnIGJ1ZmZl cgorQEAgLTY3NjgsMTMgKzY3NjgsMTMgQEAgZ2xvYnVzX2xfZnRwX2RhdGFfZWJfcG9sbCgKKyAg ICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfZmlmb19kZXF1ZXVlKCZzdHJpcGUtPmZyZWVf Y29ubl9xKTsKKyAKKyAgICAgICAgICAgICAgICAgICAgIGlmKHRyYW5zZmVyX2hhbmRsZS0+b3Jk ZXJfZGF0YSkKKy0gICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAK KysgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3Jj aW5nIG9yZGVyZWQgZGF0YSAqLworICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWRfb3Jk ZXIgPSBHTE9CVVNfVFJVRTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAg ICAgICAgICAgICAgICAgICAvKiBmaW5kIG9mZnNldCB3ZSBhcmUgbG9va2luZyBmb3IgKi8KKy0g ICAgICAgICAgICAgICAgICAgICAgICB3aGlsZShkYXRhX2Nvbm4tPm9mZnNldCAhPSAKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXJfaGFuZGxlLT5vcmRlcl9uZXh0X29mZnNl dCAmJiAKKysgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZShkYXRhX2Nvbm4tPm9mZnNldCAh PQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zlcl9oYW5kbGUtPm9yZGVyX25l eHRfb2Zmc2V0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFnbG9idXNfZmlmb19l bXB0eSgmc3RyaXBlLT5mcmVlX2Nvbm5fcSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfZmlmb19lbnF1ZXVlKCZyZW1haW5p bmdfY29ubl9xLCBkYXRhX2Nvbm4pOworQEAgLTY3ODMsMTQgKzY3ODMsMTQgQEAgZ2xvYnVzX2xf ZnRwX2RhdGFfZWJfcG9sbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgCisgICAgICAg ICAgICAgICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NvbnRyb2xfZGVidWdfcHJpbnRmKDksCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGRlcnIsICJ3OiAlIkdMT0JVU19PRkZfVF9G T1JNQVQiLCBoOiAlIkdMT0JVU19PRkZfVF9GT1JNQVQiLCAlcFxuIiwgCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0cmFuc2Zlcl9oYW5kbGUtPm9yZGVyX25leHRfb2Zmc2V0LCAK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0ZGVyciwgInc6ICUiR0xPQlVTX09GRl9U X0ZPUk1BVCIsIGg6ICUiR0xPQlVTX09GRl9UX0ZPUk1BVCIsICVwXG4iLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXJfaGFuZGxlLT5vcmRlcl9uZXh0X29mZnNldCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfY29ubi0+b2Zmc2V0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgZGF0YV9jb25uKSk7CistICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0gICAgICAgICAgICAgICAgICAgICAgICAv KiBpZiB0aGlzIHN0cmVhbSBoYXMgdGhlIG9mZnNldCB3ZSB3YW50LCAKKysKKysgICAgICAgICAg ICAgICAgICAgICAgICAvKiBpZiB0aGlzIHN0cmVhbSBoYXMgdGhlIG9mZnNldCB3ZSB3YW50LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlZ2lzdGVyIHRoZSByZWFkLCBvdGhlcndpc2Ug cXVldWUgdXAgdGhlIHJlYWQgKi8KKy0gICAgICAgICAgICAgICAgICAgICAgICBpZihkYXRhX2Nv bm4tPm9mZnNldCA9PSB0cmFuc2Zlcl9oYW5kbGUtPm9yZGVyX25leHRfb2Zmc2V0KSAKKysgICAg ICAgICAgICAgICAgICAgICAgICBpZihkYXRhX2Nvbm4tPm9mZnNldCA9PSB0cmFuc2Zlcl9oYW5k bGUtPm9yZGVyX25leHRfb2Zmc2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZG9fcmVhZCA9IEdMT0JVU19UUlVFOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0cmFuc2Zlcl9oYW5kbGUtPm9yZGVyX2N0ciA9IDA7CitAQCAt NjgwMCw3ICs2ODAwLDcgQEAgZ2xvYnVzX2xfZnRwX2RhdGFfZWJfcG9sbCgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZG9fcmVhZCA9IEdMT0JVU19GQUxTRTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZG9uZSA9IEdMT0JVU19UUlVFOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnbG9idXNfZmlmb19lbnF1ZXVlKCZyZW1haW5pbmdfY29ubl9xLCBkYXRhX2Nvbm4p OworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyogb2Zmc2V0IG5vdCBhdmFpbGFibGUsIHJlc3RvcmUgcXVldWVzICovCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19maWZvX2VucXVldWUoJnJlbWFpbmluZ19j b21tYW5kX3EsIGVudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUoIWds b2J1c19maWZvX2VtcHR5KCZzdHJpcGUtPmNvbW1hbmRfcSkpCitAQCAtNjg1Miw3ICs2ODUyLDcg QEAgZ2xvYnVzX2xfZnRwX2RhdGFfZWJfcG9sbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ2xvYnVzX2xfZnRwX2ViX3JlYWRfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh2b2lkICopZW50cnkpOworICAgICAgICAgICAgICAgICAgICAg ICAgIGdsb2J1c19hc3NlcnQocmVzID09IEdMT0JVU19TVUNDRVNTKTsKKy0gICAgICAgICAgICAg ICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zlcl9oYW5kbGUt Pm9yZGVyX25leHRfb2Zmc2V0ICs9IGVudHJ5LT5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgIH0KK0BAIC02ODY1LDEyICs2ODY1LDEyIEBAIGdsb2J1c19s X2Z0cF9kYXRhX2ViX3BvbGwoCisgICAgICAgICAgICAgICAgICAgICBkb25lID0gR0xPQlVTX1RS VUU7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9LyogZW5kIHdoaWxlICovCist ICAgICAgICAgICAgaWYoZGNfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0RBVEFfU1RBVEVf Q09OTkVDVF9SRUFEICYmIAorKyAgICAgICAgICAgIGlmKGRjX2hhbmRsZS0+c3RhdGUgPT0gR0xP QlVTX0ZUUF9EQVRBX1NUQVRFX0NPTk5FQ1RfUkVBRCAmJgorICAgICAgICAgICAgICAgICB0cmFu c2Zlcl9oYW5kbGUtPm9yZGVyX2RhdGEpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICBpbnQgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nX2Nvbm5lY3Rpb25zOworLSAgICAgICAg ICAgICAgICAKKy0gICAgICAgICAgICAgICAgcGVuZGluZ19jb25uZWN0aW9ucyA9IAorKworKyAg ICAgICAgICAgICAgICBwZW5kaW5nX2Nvbm5lY3Rpb25zID0KKyAgICAgICAgICAgICAgICAgICAg IHN0cmlwZS0+dG90YWxfY29ubmVjdGlvbl9jb3VudAorICAgICAgICAgICAgICAgICAgICAgKyBz dHJpcGUtPm91dHN0YW5kaW5nX2Nvbm5lY3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAtIGds b2J1c19maWZvX3NpemUoJnN0cmlwZS0+ZnJlZV9jb25uX3EpOworQEAgLTY4ODEsNyArNjg4MSw3 IEBAIGdsb2J1c19sX2Z0cF9kYXRhX2ViX3BvbGwoCisgICAgICAgICAgICAgICAgICAgICAgICAg Z2xvYnVzX2ZpZm9fc2l6ZSgmc3RyaXBlLT5mcmVlX2Nvbm5fcSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgcGVuZGluZ19jb25uZWN0aW9ucykpOworICAgICAgICAgICAgICAgICBpZihwZW5k aW5nX2Nvbm5lY3Rpb25zID09IDAgJiYgY2hlY2tlZF9vcmRlcikKKy0gICAgICAgICAgICAgICAg eyAgIAorKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAvKiBnaXZlIHRp bWUgZm9yIHBlbmRpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgKi8KKyAgICAgICAgICAgICAgICAg ICAgIGlmKHRyYW5zZmVyX2hhbmRsZS0+b3JkZXJfY3RyID4gc3RyaXBlLT50b3RhbF9jb25uZWN0 aW9uX2NvdW50ICogMiArIDEwKQorICAgICAgICAgICAgICAgICAgICAgeworQEAgLTczMjQsNyAr NzMyNCw3IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX3N0cmlwZXNfZGVzdHJveSgKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICZkYXRhX2Nvbm4tPmlvX2hhbmRsZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdsb2J1c19sX2Z0cF9pb19jbG9zZV9jYWxsYmFjaywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICh2b2lkICopY2FsbGJhY2tfaW5mbyk7CistICAgICAgICAgICAgIAor KworICAgICAgICAgICAgIGlmKHJlcyAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgIHJlcyA9IGdsb2J1c19jYWxsYmFja19yZWdpc3Rlcl9vbmVzaG90 KAorQEAgLTc0NTgsNyArNzQ1OCw3IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2RhdGFfYWRqdXN0 X2Nvbm5lY3Rpb24oCisgICAgICAgICB7CisgICAgICAgICAgICAgZGF0YV9jb25uID0gKGdsb2J1 c19mdHBfZGF0YV9jb25uZWN0aW9uX3QgKikKKyAgICAgICAgICAgICAgICAgIGdsb2J1c19maWZv X2RlcXVldWUoJnN0cmlwZS0+ZnJlZV9jb25uX3EpOworLSAgICAgICAgICAgIGdsb2J1c19saXN0 X3JlbW92ZSgmc3RyaXBlLT5hbGxfY29ubl9saXN0LCAKKysgICAgICAgICAgICBnbG9idXNfbGlz dF9yZW1vdmUoJnN0cmlwZS0+YWxsX2Nvbm5fbGlzdCwKKyAgICAgICAgICAgICAgICAgZ2xvYnVz X2xpc3Rfc2VhcmNoKHN0cmlwZS0+YWxsX2Nvbm5fbGlzdCwgZGF0YV9jb25uKSk7CisgCisgICAg ICAgICAgICAgZGF0YV9jb25uLT5lb2QgPSBHTE9CVVNfVFJVRTsKK0BAIC03NTQ5LDcgKzc1NDks NyBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9jb21tYW5kX2ZsdXNoX2NhbGxiYWNrKAorICAgICAg ICAgfQorICAgICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmRjX2hhbmRsZS0+bXV0ZXgp OworLSAgICAKKysKKyAgICAgaWYoZW50cnktPmVycm9yKQorICAgICB7CisgICAgICAgICBnbG9i dXNfb2JqZWN0X2ZyZWUoZW50cnktPmVycm9yKTsKK0BAIC03NjA2LDcgKzc2MDYsNyBAQCBnbG9i dXNfbF9mdHBfY29udHJvbF9jb21tYW5kX2tpY2tvdXQoCisgICAgIGRjX2hhbmRsZSA9IGVudHJ5 LT5kY19oYW5kbGU7CisgICAgIEdsb2J1c0ZUUENvbnRyb2xEYXRhVGVzdE1hZ2ljKGRjX2hhbmRs ZSk7CisgICAgIHRyYW5zZmVyX2hhbmRsZSA9IGVudHJ5LT50cmFuc2Zlcl9oYW5kbGU7CistICAg IAorKworICAgICBpZihlbnRyeS0+Y2FsbGJhY2spCisgICAgIHsKKyAgICAgICAgIGVudHJ5LT5j YWxsYmFjaygKK0BAIC03NjM3LDcgKzc2MzcsNyBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9jb21t YW5kX2tpY2tvdXQoCisgICAgIH0KKyAKKyAgICAgZ2xvYnVzX2ZyZWUoZW50cnkpOworLSAgICAK KysKKyB9CisgCisgc3RhdGljCitAQCAtNzczNiw3ICs3NzM2LDcgQEAgZ2xvYnVzX2lfZnRwX2Nv bnRyb2xfZGF0YV9jY19pbml0KAorICAgICAgICAgICAgIGRjX2hhbmRsZS0+Y29ubmVjdF9lcnJv ciA9IEdMT0JVU19OVUxMOworICAgICAgICAgICAgIGdsb2J1c19pb190Y3BhdHRyX2luaXQoJmRj X2hhbmRsZS0+aW9fYXR0cik7CisgICAgICAgICAgICAgZ2xvYnVzX2lvX2F0dHJfc2V0X3RjcF9u b2RlbGF5KCZkY19oYW5kbGUtPmlvX2F0dHIsCistCQkJCQkgICBHTE9CVVNfVFJVRSk7CisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19UUlVFKTsKKyAK KyAgICAgICAgICAgICBkY19oYW5kbGUtPmxheW91dF9mdW5jID0gR0xPQlVTX05VTEw7CisgICAg ICAgICAgICAgZGNfaGFuZGxlLT5sYXlvdXRfdXNlcl9hcmcgPSBHTE9CVVNfTlVMTDsKK0BAIC03 ODA0LDcgKzc4MDQsNyBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9kY19kZWNfcmVmKAorICAgICAg ICAgaWYoZGNfaGFuZGxlLT5jbG9zZV9jYWxsYmFjayAhPSBHTE9CVVNfTlVMTCAmJgorICAgICAg ICAgICAgZ2xvYnVzX2xpc3RfZW1wdHkoZGNfaGFuZGxlLT50cmFuc2Zlcl9saXN0KSkKKyAgICAg ICAgIHsKKy0JICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICByZXM7CisrICAgICAgICAg ICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgIHJlczsKKyAgICAgICAgICAgICBHbG9idXNU aW1lUmVsdGltZVNldChyZWx0aW1lLCAwLCAwKTsKKyAgICAgICAgICAgICByZXMgPSBnbG9idXNf Y2FsbGJhY2tfcmVnaXN0ZXJfb25lc2hvdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xP QlVTX05VTEwsCitAQCAtNzgzMiwxMCArNzgzMiwxMCBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9k Y19kZWNfcmVmKAorICAgICAgICAgZ2xvYnVzX3ByaW9yaXR5X3FfZGVzdHJveSgmdHJhbnNmZXJf aGFuZGxlLT5vcmRlcmVkX2J1ZmZlcl9xKTsKKyAgICAgICAgIGdsb2J1c19oYW5kbGVfdGFibGVf ZGVzdHJveSgmdHJhbnNmZXJfaGFuZGxlLT5oYW5kbGVfdGFibGUpOworICAgICAgICAgZ2xvYnVz X2ZyZWUodHJhbnNmZXJfaGFuZGxlLT5zdHJpcGVzKTsKKy0gICAgICAgIAorLSAgICAgICAgZ2xv YnVzX2Fzc2VydChkY19oYW5kbGUtPnRyYW5zZmVyX2hhbmRsZSAhPSB0cmFuc2Zlcl9oYW5kbGUg JiYgCisrCisrICAgICAgICBnbG9idXNfYXNzZXJ0KGRjX2hhbmRsZS0+dHJhbnNmZXJfaGFuZGxl ICE9IHRyYW5zZmVyX2hhbmRsZSAmJgorICAgICAgICAgICAgICAgICAiRGVzdHJveWluZyBhIHRy YW5zZmVyX2hhbmRsZSB3ZSBzdGlsbCBoYXZlIGEgcG9pbnRlciB0byIpOworLSAgICAgICAgCisr CisgICAgICAgICBnbG9idXNfZnJlZSh0cmFuc2Zlcl9oYW5kbGUpOworICAgICAgICAgZ2xvYnVz X2NvbmRfc2lnbmFsKCZnbG9idXNfbF9mdHBfY29udHJvbF9kYXRhX2NvbmQpOworICAgICB9CitA QCAtNzkwMiw3ICs3OTAyLDcgQEAgZ2xvYnVzX2lfZnRwX2NvbnRyb2xfZGF0YV9jY19kZXN0cm95 KAorICAgICAgICAgeworICAgICAgICAgICAgIGRjX2hhbmRsZS0+aW5pdGlhbGl6ZWQgPSBHTE9C VVNfRkFMU0U7CisgICAgICAgICAgICAgcmVzID0gR0xPQlVTX1NVQ0NFU1M7CistCSAgICAgICAg Z2xvYnVzX2lvX3RjcGF0dHJfZGVzdHJveSgmZGNfaGFuZGxlLT5pb19hdHRyKTsKKysgICAgICAg ICAgICAgICAgZ2xvYnVzX2lvX3RjcGF0dHJfZGVzdHJveSgmZGNfaGFuZGxlLT5pb19hdHRyKTsK KyAgICAgICAgICAgICBpZihkY19oYW5kbGUtPm5sX2lvX2hhbmRsZV9zZXQpCisgICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgICBnbG9idXNfbmV0bG9nZ2VyX2hhbmRsZV9kZXN0cm95KCZk Y19oYW5kbGUtPm5sX2lvX2hhbmRsZSk7CitAQCAtNzkyMCw3ICs3OTIwLDcgQEAgZ2xvYnVzX2lf ZnRwX2NvbnRyb2xfZGF0YV9jY19kZXN0cm95KAorICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgZ2xvYnVzX2xpYmNfZnJlZShkY19oYW5kbGUtPmRjYXUuc3ViamVjdC5zdWJqZWN0KTsK KyAgICAgICAgICAgICB9CistICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgaWYoZGNfaGFu ZGxlLT5jb25uZWN0X2Vycm9yKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZ2xv YnVzX29iamVjdF9mcmVlKGRjX2hhbmRsZS0+Y29ubmVjdF9lcnJvcik7CitAQCAtODMyMSw5ICs4 MzIxLDkgQEAgZ2xvYnVzX2xfZnRwX3N0cmVhbV93cml0ZV9lb2ZfY2FsbGJhY2soCisgICAgIGds b2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAgICAqICAgICAgICAgICAgY29udHJvbF9oYW5kbGU7 CisgICAgIGdsb2J1c19mdHBfZGF0YV9jb25uZWN0aW9uX3QgKiAgICAgICAgICAgICAgZGF0YV9j b25uOworICAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1 ZmZlciA9IEdMT0JVU19OVUxMOworLSAgICB2b2lkICoJCQkJCWJpZ19idWZmZXJfY2JfYXJnOwor LSAgICBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV9jYWxsYmFja190IAkJYmlnX2J1ZmZlcl9jYiA9 IEdMT0JVU19OVUxMOworLSAgICBnbG9idXNfYnl0ZV90ICoJCQkJYmlnX2J1ZmZlciA9IEdMT0JV U19OVUxMOworKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJpZ19idWZmZXJfY2JfYXJnOworKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV9jYWxsYmFj a190ICAgICAgICAgIGJpZ19idWZmZXJfY2IgPSBHTE9CVVNfTlVMTDsKKysgICAgZ2xvYnVzX2J5 dGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWdfYnVmZmVyID0gR0xPQlVTX05V TEw7CisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9s bDsKKyAKKyAgICAgZW50cnkgPSAoZ2xvYnVzX2xfZnRwX2hhbmRsZV90YWJsZV9lbnRyeV90ICop IGFyZzsKK0BAIC04NTMxLDcgKzg1MzEsNyBAQCBnbG9idXNfbF9mdHBfc3RyZWFtX2xpc3Rlbl9j YWxsYmFjaygKKyAgICAgICAgICAgICB1c2VyX2FyZyA9IGRhdGFfY29ubi0+dXNlcl9hcmc7Cisg ICAgICAgICAgICAgc3RyaXBlX25keCA9IHN0cmlwZS0+c3RyaXBlX25keDsKKyAgICAgICAgICAg ICBnbG9idXNfZnJlZShjYWxsYmFja19pbmZvKTsKKy0gICAgICAgIH0gICAgICAgICAgICAKKysg ICAgICAgIH0KKyAKKyAgICAgICAgIC8qCisgICAgICAgICAgKiAgcmVtb3ZlIHJlZmVyZW5jZSBm b3IgbGlzdGVuZXIgY2FsbGJhY2sKK0BAIC04NTQwLDcgKzg1NDAsNyBAQCBnbG9idXNfbF9mdHBf c3RyZWFtX2xpc3Rlbl9jYWxsYmFjaygKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBkY19oYW5k bGUtPmNvbm5lY3RfZXJyb3IgPSBnbG9idXNfb2JqZWN0X2NvcHkoZXJyb3IpOworICAgICAgICAg fQorLSAgICAgICAgCisrCisgICAgICAgICBwb2xsID0gIWdsb2J1c19sX2Z0cF9jb250cm9sX2Rj X2RlY19yZWYodHJhbnNmZXJfaGFuZGxlKTsKKyAgICAgICAgIGlmKHBvbGwpCisgICAgICAgICB7 CitAQCAtODU1Myw3ICs4NTUzLDcgQEAgZ2xvYnVzX2xfZnRwX3N0cmVhbV9saXN0ZW5fY2FsbGJh Y2soCisgICAgIGlmKGNhbGxiYWNrICE9IEdMT0JVU19OVUxMKQorICAgICB7CisgICAgICAgICBj YWxsYmFjayh1c2VyX2FyZywgY29udHJvbF9oYW5kbGUsIHN0cmlwZV9uZHgsIEdMT0JVU19GQUxT RSwgZXJyb3IpOworLSAgICAgICAgCisrCisgICAgICAgICAvKgorICAgICAgICAgICogIGlmIHRo ZSB1c2VyIHdhbnRlZCBhIGNhbGxiYWNrIHdlIG11c3QgZGVjIHRoZSByZWZlcmVuY2UKKyAgICAg ICAgICAqICBpdCBoYWQgYWZ0ZXIgd2UgY2FsbCBpdC4KK0BAIC04NjU4LDkgKzg2NTgsOSBAQCBn bG9idXNfbF9mdHBfc3RyZWFtX2FjY2VwdF9jb25uZWN0X2NhbGxiYWNrKAorICAgICAgICAgICAg ICAgICAgICB0eXBlLAorICAgICAgICAgICAgICAgICAgICBHTE9CVVNfSU9fRVJST1JfVFlQRV9J T19DQU5DRUxMRUQpKQorICAgICAgICAgICAgIHsKKy0JCWdsb2J1c19saXN0X3JlbW92ZV9lbGVt ZW50KAorLQkJICAgICZzdHJpcGUtPmFsbF9jb25uX2xpc3QsCistCQkgICAgZGF0YV9jb25uKTsK KysgICAgICAgICAgICAgICAgZ2xvYnVzX2xpc3RfcmVtb3ZlX2VsZW1lbnQoCisrICAgICAgICAg ICAgICAgICAgICAmc3RyaXBlLT5hbGxfY29ubl9saXN0LAorKyAgICAgICAgICAgICAgICAgICAg ZGF0YV9jb25uKTsKKyAKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfc3Ry aXBlc19kZXN0cm95KGRjX2hhbmRsZSwgZXJyb3IpOworICAgICAgICAgICAgIH0KK0BAIC04Njk4 LDcgKzg2OTgsNyBAQCBnbG9idXNfbF9mdHBfc3RyZWFtX2FjY2VwdF9jb25uZWN0X2NhbGxiYWNr KAorICAgICAgICAgICAgIGdsb2J1c19maWZvX2VucXVldWUoJnN0cmlwZS0+ZnJlZV9jb25uX3Es IGRhdGFfY29ubik7CisgICAgICAgICAgICAgc3RyaXBlLT5jb25uZWN0aW9uX2NvdW50Kys7Cisg ICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIGlmKGVycm9yICYmICFkY19oYW5kbGUt PmNvbm5lY3RfZXJyb3IpCisgICAgICAgICB7CisgICAgICAgICAgICAgZGNfaGFuZGxlLT5jb25u ZWN0X2Vycm9yID0gZ2xvYnVzX29iamVjdF9jb3B5KGVycm9yKTsKK0BAIC04NzExLDEyICs4NzEx LDEyIEBAIGdsb2J1c19sX2Z0cF9zdHJlYW1fYWNjZXB0X2Nvbm5lY3RfY2FsbGJhY2soCisgICAg IHsKKyAgICAgICAgIGNhbGxiYWNrKHVzZXJfYXJnLCBjb250cm9sX2hhbmRsZSwgc3RyaXBlX25k eCwgR0xPQlVTX0ZBTFNFLCBlcnJvcik7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKGVycm9y KQorICAgICB7CisgICAgICAgICBnbG9idXNfb2JqZWN0X2ZyZWUoZXJyb3IpOworICAgICB9Cist ICAgIAorKworICAgICBnbG9idXNfbXV0ZXhfbG9jaygmZGNfaGFuZGxlLT5tdXRleCk7CisgICAg IHsKKyAgICAgICAgIGlmKGNhbGxiYWNrICE9IEdMT0JVU19OVUxMKQorQEAgLTkyMzYsMTEgKzky MzYsMTEgQEAgZ2xvYnVzX2xfZnRwX2ViX2xpc3Rlbl9jYWxsYmFjaygKKyAgICAgICAgICAgICBj YWxsYmFjayA9IGRhdGFfY29ubi0+Y2FsbGJhY2s7CisgICAgICAgICAgICAgdXNlcl9hcmcgPSBk YXRhX2Nvbm4tPnVzZXJfYXJnOworICAgICAgICAgICAgIHN0cmlwZV9uZHggPSBzdHJpcGUtPnN0 cmlwZV9uZHg7CistICAgICAgICB9ICAgICAgICAgICAgCisrICAgICAgICB9CisgICAgICAgICAv KgorICAgICAgICAgICogIHJlbW92ZSByZWZlcmVuY2UgZm9yIGxpc3RlbmVyIGNhbGxiYWNrCisg ICAgICAgICAgKi8KKy0gICAgICAgIAorKworICAgICAgICAgaWYoZXJyb3IgJiYgIWRjX2hhbmRs ZS0+Y29ubmVjdF9lcnJvcikKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBkY19oYW5kbGUtPmNv bm5lY3RfZXJyb3IgPSBnbG9idXNfb2JqZWN0X2NvcHkoZXJyb3IpOworQEAgLTk0NDQsNyArOTQ0 NCw3IEBAIGdsb2J1c19sX2Z0cF9lYl9hY2NlcHRfY2FsbGJhY2soCisgICAgICAgICB9CisgICAg ICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZkY19oYW5kbGUtPm11dGV4KTsKKyAgICAgfQorLSAg ICAKKysKKyAgICAgaWYoZXJyb3IpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19vYmplY3RfZnJl ZShlcnJvcik7CitAQCAtOTUwNiw3ICs5NTA2LDcgQEAgZ2xvYnVzX2xfZnRwX2ViX3JlYWRfaGVh ZGVyX2NhbGxiYWNrKAorICAgICAgICAgZWxzZQorICAgICAgICAgeworICAgICAgICAgICAgIGlm KGViX2hlYWRlci0+ZGVzY3JpcHRvciAmIEdMT0JVU19GVFBfQ09OVFJPTF9EQVRBX0RFU0NSSVBU T1JfRU9EKQorLSAgICAJICAgIHsKKysgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIC8q IHNldCBjb25uZWN0aW9uIHN0YXRlIGVvZCBhbmQgbG9jYWwgc3RhdGUgZW9kICovCisgICAgICAg ICAgICAgICAgIGRhdGFfY29ubi0+ZW9kID0gR0xPQlVTX1RSVUU7CisgICAgICAgICAgICAgICAg IGVvZCA9IEdMT0JVU19UUlVFOworQEAgLTk1NTIsMTMgKzk1NTIsMTMgQEAgZ2xvYnVzX2xfZnRw X2ViX3JlYWRfaGVhZGVyX2NhbGxiYWNrKAorICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAg ICAgICAgICAgICAgICAgICAqICBuZXh0IGFzc2VydGlvbiBoYXBwZW5zIGlmIHRoZSB3cml0ZXIg YnJlYWtzCisgICAgICAgICAgICAgICAgICAgICAgKiAgdGhlIHByb3RvY29sIGFuZCBzZW5kcyBh IENMT1NFIHByaW9yIHRvCistICAgICAgICAgICAgICAgICAgICAgKiAgYW4gRU9ELiAgCisrICAg ICAgICAgICAgICAgICAgICAgKiAgYW4gRU9ELgorICAgICAgICAgICAgICAgICAgICAgICoKKy0g ICAgICAgICAgICAgICAgICAgICAqICBUT0RPOiBzdG9wIHRyYW5zZmVyIGFuZCByZXR1cm4gZXJy b3IgdG8gdXNlciAKKysgICAgICAgICAgICAgICAgICAgICAqICBUT0RPOiBzdG9wIHRyYW5zZmVy IGFuZCByZXR1cm4gZXJyb3IgdG8gdXNlcgorICAgICAgICAgICAgICAgICAgICAgICovCisgICAg ICAgICAgICAgICAgICAgICBnbG9idXNfYXNzZXJ0KGRhdGFfY29ubi0+cmV1c2luZyB8fCBkYXRh X2Nvbm4tPmVvZCk7CisgCistICAgICAgICAgICAgICAgICAgICAvKiAKKysgICAgICAgICAgICAg ICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgKiBpZiBsb2NhbCBlb2Qgc3RhdGUgaXMg dHJ1ZSBpdCBtZWFucyB3ZSBoYXZlIG5vdAorICAgICAgICAgICAgICAgICAgICAgICogYWxyZWFk eSBwcmVmb3JtZWQgdGhlIGZvbGxvd2luZyBuZWVkZWQgc3RlcHMgc28KKyAgICAgICAgICAgICAg ICAgICAgICAqIGRvIHRoZW0gbm93LgorQEAgLTk1NjgsNyArOTU2OCw3IEBAIGdsb2J1c19sX2Z0 cF9lYl9yZWFkX2hlYWRlcl9jYWxsYmFjaygKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJp cGUtPmVvZHNfcmVjZWl2ZWQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcGUtPmNv bm5lY3Rpb25fY291bnQtLTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAg ICAgICAgIC8qIAorKyAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAg ICAqIGlmIG5vdCBsb2NhbCBlb2QgYnV0IGNvbm4gc3RhdGUgZW9kLCBpdCBtZWFucyB0aGF0Cisg ICAgICAgICAgICAgICAgICAgICAgKiB0aGF0IHdlIGhhdmUgYWRkZWQgdGhlIGNvbm5lY3Rpb24g dG8gdGhlIGZyZWVfY2FjaGUKKyAgICAgICAgICAgICAgICAgICAgICAqIGxpc3QgYW5kIG11c3Qg cmVtb3ZlIGl0CitAQCAtOTU4MSw3ICs5NTgxLDcgQEAgZ2xvYnVzX2xfZnRwX2ViX3JlYWRfaGVh ZGVyX2NhbGxiYWNrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlw ZS0+ZnJlZV9jYWNoZV9saXN0LCBkYXRhX2Nvbm4pKTsKKyAgICAgICAgICAgICAgICAgICAgIH0K KyAKKy0gICAgICAgICAgICAgICAgICAgIC8qIAorKyAgICAgICAgICAgICAgICAgICAgLyoKKyAg ICAgICAgICAgICAgICAgICAgICAqICByZW1vdmUgZnJvbSBhbGwgbGlzdCBiZWZvcmUgY2xvc2lu ZworICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICBnbG9idXNf bGlzdF9yZW1vdmVfZWxlbWVudCgKK0BAIC05NjYwLDEwICs5NjYwLDEwIEBAIGdsb2J1c19sX2Z0 cF9lYl9yZWFkX2hlYWRlcl9jYWxsYmFjaygKKyAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBnbG9idXNfb2ZmX3QgZW5kX29mZnNl dDsKKy0gICAgICAgICAgICAJICAgIGdsb2J1c19vZmZfdCBlbmRfYnVmZmVyOworKyAgICAgICAg ICAgICAgICAgICAgZ2xvYnVzX29mZl90IGVuZF9idWZmZXI7CisgCistICAgICAgICAgICAgCSAg ICBlbmRfb2Zmc2V0ID0gKChnbG9idXNfb2ZmX3QpIGRhdGFfY29ubi0+Ynl0ZXNfcmVhZHkpICsK Ky0gICAgICAgICAgICAgCSAgICAgICAgZGF0YV9jb25uLT5vZmZzZXQ7CisrICAgICAgICAgICAg ICAgICAgICBlbmRfb2Zmc2V0ID0gKChnbG9idXNfb2ZmX3QpIGRhdGFfY29ubi0+Ynl0ZXNfcmVh ZHkpICsKKysgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2Nvbm4tPm9mZnNldDsKKyAgICAg ICAgICAgICAgICAgICAgIGVuZF9idWZmZXIgPSAoKGdsb2J1c19vZmZfdCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXJfaGFuZGxlLT5iaWdfYnVmZmVy X2xlbmd0aCk7CisgCitAQCAtOTY3Niw3ICs5Njc2LDcgQEAgZ2xvYnVzX2xfZnRwX2ViX3JlYWRf aGVhZGVyX2NhbGxiYWNrKAorICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gIGdsb2J1 c19lcnJvcl9jb25zdHJ1Y3Rfc3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHTE9CVVNfRlRQX0NPTlRST0xfTU9EVUxFLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKy0JCQkJICAgICBfRkNTTCgidG9vIG11Y2gg ZGF0YSBoYXMgYmVlbiBzZW50LiIpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX0ZDU0woInRvbyBtdWNoIGRhdGEgaGFzIGJlZW4gc2VudC4iKSk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfc3RyaXBlc19kZXN0cm95KGRjX2hh bmRsZSwgZXJyb3IpOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICAgZWxzZQorQEAgLTk3MTksNyArOTcxOSw3IEBAIGdsb2J1c19sX2Z0cF9lYl9yZWFkX2hlYWRl cl9jYWxsYmFjaygKKyAKKyAgICAgZ2xvYnVzX2ZyZWUoZWJfaGVhZGVyKTsKKyAKKy0gICAgCisr CisgICAgIGlmKGVycm9yICE9IEdMT0JVU19OVUxMKQorICAgICB7CisgICAgICAgICBnbG9idXNf b2JqZWN0X2ZyZWUoZXJyb3IpOworQEAgLTk3MzUsNyArOTczNSw3IEBAIGdsb2J1c19sX2Z0cF9k YXRhX29yZGVyX3JlYWRfY2IoCisgICAgIGdsb2J1c19pX2Z0cF9kY190cmFuc2Zlcl9oYW5kbGVf dCAqICAgICAgICAgdHJhbnNmZXJfaGFuZGxlOworICAgICBnbG9idXNfYm9vbF90ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBHTE9CVVNfRkFMU0U7CisgICAgIGludCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7CistICAgICAgICAKKysKKyAg ICAgZW50cnkgPSAoZ2xvYnVzX2xfZnRwX2hhbmRsZV90YWJsZV9lbnRyeV90ICopIGVudDsKKyAg ICAgdHJhbnNmZXJfaGFuZGxlID0gZW50cnktPnRyYW5zZmVyX2hhbmRsZTsKKyAgICAgZGNfaGFu ZGxlID0gZW50cnktPmRjX2hhbmRsZTsKK0BAIC05NzQ2LDE4ICs5NzQ2LDE4IEBAIGdsb2J1c19s X2Z0cF9kYXRhX29yZGVyX3JlYWRfY2IoCisgICAgICAgICAgICAgKHZvaWQgKillbnRyeSwKKyAg ICAgICAgICAgICAodm9pZCAqKWVudHJ5KTsKKyAgICAgICAgIGdsb2J1c19hc3NlcnQocmMgPT0g R0xPQlVTX1NVQ0NFU1MpOworLSAgICAKKy0gICAgICAgIHdoaWxlKCFkb25lICYmIAorKworKyAg ICAgICAgd2hpbGUoIWRvbmUgJiYKKyAgICAgICAgICAgICAhZ2xvYnVzX3ByaW9yaXR5X3FfZW1w dHkoJnRyYW5zZmVyX2hhbmRsZS0+b3JkZXJlZF9idWZmZXJfcSkpCisgICAgICAgICB7CistICAg ICAgICAgICAgZW50cnkgPSAoZ2xvYnVzX2xfZnRwX2hhbmRsZV90YWJsZV9lbnRyeV90ICopIAor KyAgICAgICAgICAgIGVudHJ5ID0gKGdsb2J1c19sX2Z0cF9oYW5kbGVfdGFibGVfZW50cnlfdCAq KQorICAgICAgICAgICAgICAgICBnbG9idXNfcHJpb3JpdHlfcV9maXJzdCgKKyAgICAgICAgICAg ICAgICAgICAgICZ0cmFuc2Zlcl9oYW5kbGUtPm9yZGVyZWRfYnVmZmVyX3EpOworICAgICAgICAg ICAgIGdsb2J1c19pX2Z0cF9jb250cm9sX2RlYnVnX3ByaW50Zig5LAorLSAgICAgICAgICAgICAg ICAoc3RkZXJyLCAiYnc6ICUiR0xPQlVTX09GRl9UX0ZPUk1BVCIsIGJoOiAlIkdMT0JVU19PRkZf VF9GT1JNQVQiXG4iLCAKKysgICAgICAgICAgICAgICAgKHN0ZGVyciwgImJ3OiAlIkdMT0JVU19P RkZfVF9GT1JNQVQiLCBiaDogJSJHTE9CVVNfT0ZGX1RfRk9STUFUIlxuIiwKKyAgICAgICAgICAg ICAgICAgICAgIHRyYW5zZmVyX2hhbmRsZS0+b3JkZXJfbmV4dF9vZmZzZXRfcGFzc2VkLAorICAg ICAgICAgICAgICAgICAgICAgZW50cnktPm9mZnNldCkpOworLSAgICAgICAgICAgIAorKworICAg ICAgICAgICAgIGlmKHRyYW5zZmVyX2hhbmRsZS0+b3JkZXJfbmV4dF9vZmZzZXRfcGFzc2VkID09 IGVudHJ5LT5vZmZzZXQpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBlbnRyeSA9 IChnbG9idXNfbF9mdHBfaGFuZGxlX3RhYmxlX2VudHJ5X3QgKikKK0BAIC05ODMxLDcgKzk4MzEs NyBAQCBnbG9idXNfbF9mdHBfZWJfcmVhZF9jYWxsYmFjaygKKyAgICAgdHJhbnNmZXJfaGFuZGxl ID0gc3RyaXBlLT53aG9zX215X2RhZGR5OworICAgICBjb250cm9sX2hhbmRsZSA9IGRjX2hhbmRs ZS0+d2hvc19teV9kYWRkeTsKKyAgICAgICAgIGdsb2J1c19pX2Z0cF9jb250cm9sX2RlYnVnX3By aW50Zig5LAorLSAgICAgICAgICAgIChzdGRlcnIsICJyZWFkY2I6ICUiR0xPQlVTX09GRl9UX0ZP Uk1BVCIsICVwXG4iLCAKKysgICAgICAgICAgICAoc3RkZXJyLCAicmVhZGNiOiAlIkdMT0JVU19P RkZfVF9GT1JNQVQiLCAlcFxuIiwKKyAgICAgICAgICAgICAgICAgZGF0YV9jb25uLT5vZmZzZXQs CisgICAgICAgICAgICAgICAgICh2b2lkICopIGRhdGFfY29ubikpOworIAorQEAgLTk5NzIsNyAr OTk3Miw3IEBAIGdsb2J1c19sX2Z0cF9lYl9yZWFkX2NhbGxiYWNrKAorICAgICAgICAgeworICAg ICAgICAgICAgIGdsb2J1c19mcmVlKGVudHJ5LT5hc2NpaV9idWZmZXIpOworICAgICAgICAgfQor LSAgICAKKysKKyAgICAgICAgIGlmKHRyYW5zZmVyX2hhbmRsZS0+b3JkZXJfZGF0YSkKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICBmcmVlX2VudHJ5ID0gR0xPQlVTX0ZBTFNFOworQEAgLTk5OTEs NyArOTk5MSw3IEBAIGdsb2J1c19sX2Z0cF9lYl9yZWFkX2NhbGxiYWNrKAorICAgICAgICAgfQor ICAgICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmRjX2hhbmRsZS0+bXV0ZXgpOworLSAg ICAKKysKKyAgICAgaWYoZnJlZV9lbnRyeSkKKyAgICAgeworICAgICAgICAgaWYoZW50cnktPmNh bGxiYWNrICE9IEdMT0JVU19OVUxMKQorQEAgLTEwMDIzLDcgKzEwMDIzLDcgQEAgZ2xvYnVzX2xf ZnRwX2ViX3JlYWRfY2FsbGJhY2soCisgICAgICAgICB9CisgICAgIH0KKyAgICAgZ2xvYnVzX211 dGV4X3VubG9jaygmZGNfaGFuZGxlLT5tdXRleCk7CistICAgIAorKworICAgICBpZihlcnJvciAh PSBHTE9CVVNfTlVMTCkKKyAgICAgeworICAgICAgICAgZ2xvYnVzX29iamVjdF9mcmVlKGVycm9y KTsKK0BAIC0xMDE4NCw3ICsxMDE4NCw3IEBAIGdsb2J1c19sX2Z0cF9lYl9jb25uZWN0X2NhbGxi YWNrKAorICAgICAgICAgICAgICAgICBnbG9idXNfZmlmb19lbnF1ZXVlKCZzdHJpcGUtPmZyZWVf Y29ubl9xLCBkYXRhX2Nvbm4pOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKy0gICAgICAg IAorKworICAgICAgICAgaWYoZXJyb3IgJiYgIWRjX2hhbmRsZS0+Y29ubmVjdF9lcnJvcikKKyAg ICAgICAgIHsKKyAgICAgICAgICAgICBkY19oYW5kbGUtPmNvbm5lY3RfZXJyb3IgPSBnbG9idXNf b2JqZWN0X2NvcHkoZXJyb3IpOworQEAgLTEwMjEwLDEyICsxMDIxMCwxMiBAQCBnbG9idXNfbF9m dHBfZWJfY29ubmVjdF9jYWxsYmFjaygKKyAgICAgICAgICAgICBHTE9CVVNfVFJVRSk7CisgICAg ICAgICBnbG9idXNfZnJlZShlb2ZfY2JfZW50KTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYo ZXJyb3IpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19vYmplY3RfZnJlZShlcnJvcik7CisgICAg IH0KKy0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZkY19oYW5kbGUtPm11dGV4KTsK KyAgICAgeworICAgICAgICAgLyoKK0BAIC0xMDYxNiwxMSArMTA2MTYsMTEgQEAgZ2xvYnVzX2xf ZnRwX2ViX3NlbmRfZW9mX2NhbGxiYWNrKAorIAorICAgICBnbG9idXNfbXV0ZXhfbG9jaygmZGNf aGFuZGxlLT5tdXRleCk7CisgICAgIHsKKy0gICAgICAgIC8qIGluIGNhc2Ugb2YgZXJyb3Igd2Ug ZW5kZWQgdXAgbmV2ZXIgY2FsbGluZyB0aGUgdXNlciBjYiwgc2luY2UgCistICAgICAgICAgKiB3 ZSBkZXN0cm95IHJpZ2h0IGFmdGVyIHRoaXMgLS0gc2F2ZSBvcmlnaW5hbCBlcnJvciBub3cgc28g CisrICAgICAgICAvKiBpbiBjYXNlIG9mIGVycm9yIHdlIGVuZGVkIHVwIG5ldmVyIGNhbGxpbmcg dGhlIHVzZXIgY2IsIHNpbmNlCisrICAgICAgICAgKiB3ZSBkZXN0cm95IHJpZ2h0IGFmdGVyIHRo aXMgLS0gc2F2ZSBvcmlnaW5hbCBlcnJvciBub3cgc28KKyAgICAgICAgICAqIHdlIGNhbiBjaGVj ayBsYXRlciBpZiB3ZSBzaG91bGQgZmlyZV9jYiAqLworICAgICAgICAgaW5pdGlhbF9zdGF0ZSA9 IGRjX2hhbmRsZS0+c3RhdGU7CistICAgICAgICAKKysKKyAgICAgICAgIGdsb2J1c19hc3NlcnQo ZW9mX2VudC0+ZGNfaGFuZGxlLT50cmFuc2Zlcl9oYW5kbGUgIT0gTlVMTCk7CisgICAgICAgICBp ZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICB7CitAQCAtMTA2NzQsNyArMTA2 NzQsNyBAQCBnbG9idXNfbF9mdHBfZWJfc2VuZF9lb2ZfY2FsbGJhY2soCisgICAgICAgICAgICAg ICAgIGZpcmVfY2IgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUo dG1wX2VudC0+Y291bnQpOworICAgICAgICAgICAgICAgICBnbG9idXNfZnJlZSh0bXBfZW50KTsK Ky0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAorKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICBlbHNlCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICB0cmFuc2Zlcl9oYW5k bGUtPnNlbmRfZW9mX2VudCA9IHRtcF9lbnQ7CitAQCAtMTA4OTksNyArMTA4OTksNyBAQCBnbG9i dXNfbF9mdHBfY29udHJvbF9kYXRhX2VuY29kZSgKKyAgICAgZ2xvYnVzX29mZl90ICAgICAgICAg ICAgICAgICAgICAgIGluX3NpemUpCisgeworICAgICBnbG9idXNfb2ZmX3QgICAgICAgICAgICAg ICAgICAgICAgeDsKKy0gICAgaW50CQkJCSAgICAgIGluZDsKKysgICAgaW50ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluZDsKKyAKKyAgICAgeCA9IChnbG9idXNfb2ZmX3QpIGluX3Np emU7CisgCitAQCAtMTA5MDcsNzQgKzEwOTA3LDc0IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2Rh dGFfZW5jb2RlKAorIAorICAgICBpZihzaXplb2YoZ2xvYnVzX29mZl90KSA8IDgpCisgICAgIHsK Ky0JYnVmW2luZCsrXSA9IDA7CisrICAgICAgICBidWZbaW5kKytdID0gMDsKKyAgICAgfQorICAg ICBlbHNlCisgICAgIHsKKy0JYnVmW2luZCsrXSA9ICh4ID4+IDU2KSAmIDB4ZmY7CisrICAgICAg ICBidWZbaW5kKytdID0gKHggPj4gNTYpICYgMHhmZjsKKyAgICAgfQorIAorICAgICBpZihzaXpl b2YoZ2xvYnVzX29mZl90KSA8IDcpCisgICAgIHsKKy0JYnVmW2luZCsrXSA9IDA7CisrICAgICAg ICBidWZbaW5kKytdID0gMDsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JYnVmW2luZCsr XSA9ICh4ID4+IDQ4KSAmIDB4ZmY7CisrICAgICAgICBidWZbaW5kKytdID0gKHggPj4gNDgpICYg MHhmZjsKKyAgICAgfQorIAorICAgICBpZihzaXplb2YoZ2xvYnVzX29mZl90KSA8IDYpCisgICAg IHsKKy0JYnVmW2luZCsrXSA9IDA7CisrICAgICAgICBidWZbaW5kKytdID0gMDsKKyAgICAgfQor ICAgICBlbHNlCisgICAgIHsKKy0JYnVmW2luZCsrXSA9ICh4ID4+IDQwKSAmIDB4ZmY7CisrICAg ICAgICBidWZbaW5kKytdID0gKHggPj4gNDApICYgMHhmZjsKKyAgICAgfQorIAorICAgICBpZihz aXplb2YoZ2xvYnVzX29mZl90KSA8IDUpCisgICAgIHsKKy0JYnVmW2luZCsrXSA9IDA7CisrICAg ICAgICBidWZbaW5kKytdID0gMDsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JYnVmW2lu ZCsrXSA9ICh4ID4+IDMyKSAmIDB4ZmY7CisrICAgICAgICBidWZbaW5kKytdID0gKHggPj4gMzIp ICYgMHhmZjsKKyAgICAgfQorIAorICAgICBpZihzaXplb2YoZ2xvYnVzX29mZl90KSA8IDQpCisg ICAgIHsKKy0JYnVmW2luZCsrXSA9IDA7CisrICAgICAgICBidWZbaW5kKytdID0gMDsKKyAgICAg fQorICAgICBlbHNlCisgICAgIHsKKy0JYnVmW2luZCsrXSA9ICh4ID4+IDI0KSAmIDB4ZmY7Cisr ICAgICAgICBidWZbaW5kKytdID0gKHggPj4gMjQpICYgMHhmZjsKKyAgICAgfQorIAorICAgICBp ZihzaXplb2YoZ2xvYnVzX29mZl90KSA8IDMpCisgICAgIHsKKy0JYnVmW2luZCsrXSA9IDA7Cisr ICAgICAgICBidWZbaW5kKytdID0gMDsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JYnVm W2luZCsrXSA9ICh4ID4+IDE2KSAmIDB4ZmY7CisrICAgICAgICBidWZbaW5kKytdID0gKHggPj4g MTYpICYgMHhmZjsKKyAgICAgfQorIAorICAgICBpZihzaXplb2YoZ2xvYnVzX29mZl90KSA8IDIp CisgICAgIHsKKy0JYnVmW2luZCsrXSA9IDA7CisrICAgICAgICBidWZbaW5kKytdID0gMDsKKyAg ICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JYnVmW2luZCsrXSA9ICh4ID4+IDgpICAmIDB4ZmY7 CisrICAgICAgICBidWZbaW5kKytdID0gKHggPj4gOCkgICYgMHhmZjsKKyAgICAgfQorIAorICAg ICBpZihzaXplb2YoZ2xvYnVzX29mZl90KSA8IDEpCisgICAgIHsKKy0JYnVmW2luZCsrXSA9IDA7 CisrICAgICAgICBidWZbaW5kKytdID0gMDsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0J YnVmW2luZCsrXSA9ICh4KSAgICAgICAmIDB4ZmY7CisrICAgICAgICBidWZbaW5kKytdID0gKHgp ICAgICAgICYgMHhmZjsKKyAgICAgfQorIH0KKyAvKiBnbG9idXNfbF9mdHBfY29udHJvbF9kYXRh X2VuY29kZSgpICovCitAQCAtMTA5ODUsMTA2ICsxMDk4NSwxMDYgQEAgZ2xvYnVzX2xfZnRwX2Nv bnRyb2xfZGF0YV9kZWNvZGUoCisgICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAgICAgICAg ICBidWYsCisgICAgIGdsb2J1c19vZmZfdCAgKiAgICAgICAgICAgICAgICAgICBvdXRfc2l6ZSkK KyB7CistICAgIGdsb2J1c19vZmZfdAkJICAgICAgeDsKKy0gICAgZ2xvYnVzX2Jvb2xfdAkJICAg ICAgb3ZlcmZsb3c7CisrICAgIGdsb2J1c19vZmZfdCAgICAgICAgICAgICAgICAgICAgICB4Owor KyAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c7CisgICAgIHgg PSAwOworIAorICAgICBvdmVyZmxvdyA9IEdMT0JVU19GQUxTRTsKKyAKKyAgICAgaWYoc2l6ZW9m KGdsb2J1c19vZmZfdCkgPj0gOCkKKyAgICAgeworLQl4ICs9ICgoZ2xvYnVzX29mZl90KSBidWZb MF0pIDw8IDU2OworKyAgICAgICAgeCArPSAoKGdsb2J1c19vZmZfdCkgYnVmWzBdKSA8PCA1NjsK KyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JaWYoYnVmWzBdICE9IDApCistCXsKKy0JICAg IG92ZXJmbG93ID0gR0xPQlVTX1RSVUU7CistCX0KKysgICAgICAgIGlmKGJ1ZlswXSAhPSAwKQor KyAgICAgICAgeworKyAgICAgICAgICAgIG92ZXJmbG93ID0gR0xPQlVTX1RSVUU7CisrICAgICAg ICB9CisgICAgIH0KKyAKKyAgICAgaWYoc2l6ZW9mKGdsb2J1c19vZmZfdCkgPj0gNykKKyAgICAg eworLQl4ICs9ICgoZ2xvYnVzX29mZl90KSBidWZbMV0pIDw8IDQ4OworKyAgICAgICAgeCArPSAo KGdsb2J1c19vZmZfdCkgYnVmWzFdKSA8PCA0ODsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsK Ky0JaWYoYnVmWzFdICE9IDApCistCXsKKy0JICAgIG92ZXJmbG93ID0gR0xPQlVTX1RSVUU7Cist CX0KKysgICAgICAgIGlmKGJ1ZlsxXSAhPSAwKQorKyAgICAgICAgeworKyAgICAgICAgICAgIG92 ZXJmbG93ID0gR0xPQlVTX1RSVUU7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaWYoc2l6 ZW9mKGdsb2J1c19vZmZfdCkgPj0gNikKKyAgICAgeworLQl4ICs9ICgoZ2xvYnVzX29mZl90KSBi dWZbMl0pIDw8IDQwOworKyAgICAgICAgeCArPSAoKGdsb2J1c19vZmZfdCkgYnVmWzJdKSA8PCA0 MDsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JaWYoYnVmWzJdICE9IDApCistCXsKKy0J ICAgIG92ZXJmbG93ID0gR0xPQlVTX1RSVUU7CistCX0KKysgICAgICAgIGlmKGJ1ZlsyXSAhPSAw KQorKyAgICAgICAgeworKyAgICAgICAgICAgIG92ZXJmbG93ID0gR0xPQlVTX1RSVUU7CisrICAg ICAgICB9CisgICAgIH0KKyAKKyAgICAgaWYoc2l6ZW9mKGdsb2J1c19vZmZfdCkgPj0gNSkKKyAg ICAgeworLQl4ICs9ICgoZ2xvYnVzX29mZl90KSBidWZbM10pIDw8IDMyOworKyAgICAgICAgeCAr PSAoKGdsb2J1c19vZmZfdCkgYnVmWzNdKSA8PCAzMjsKKyAgICAgfQorICAgICBlbHNlCisgICAg IHsKKy0JaWYoYnVmWzNdICE9IDApCistCXsKKy0JICAgIG92ZXJmbG93ID0gR0xPQlVTX1RSVUU7 CistCX0KKysgICAgICAgIGlmKGJ1ZlszXSAhPSAwKQorKyAgICAgICAgeworKyAgICAgICAgICAg IG92ZXJmbG93ID0gR0xPQlVTX1RSVUU7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaWYo c2l6ZW9mKGdsb2J1c19vZmZfdCkgPj0gNCkKKyAgICAgeworLQl4ICs9ICgoZ2xvYnVzX29mZl90 KSBidWZbNF0pIDw8IDI0OworKyAgICAgICAgeCArPSAoKGdsb2J1c19vZmZfdCkgYnVmWzRdKSA8 PCAyNDsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JaWYoYnVmWzRdICE9IDApCistCXsK Ky0JICAgIG92ZXJmbG93ID0gR0xPQlVTX1RSVUU7CistCX0KKysgICAgICAgIGlmKGJ1Zls0XSAh PSAwKQorKyAgICAgICAgeworKyAgICAgICAgICAgIG92ZXJmbG93ID0gR0xPQlVTX1RSVUU7Cisr ICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaWYoc2l6ZW9mKGdsb2J1c19vZmZfdCkgPj0gMykK KyAgICAgeworLQl4ICs9ICgoZ2xvYnVzX29mZl90KSBidWZbNV0pIDw8IDE2OworKyAgICAgICAg eCArPSAoKGdsb2J1c19vZmZfdCkgYnVmWzVdKSA8PCAxNjsKKyAgICAgfQorICAgICBlbHNlCisg ICAgIHsKKy0JaWYoYnVmWzVdICE9IDApCistCXsKKy0JICAgIG92ZXJmbG93ID0gR0xPQlVTX1RS VUU7CistCX0KKysgICAgICAgIGlmKGJ1Zls1XSAhPSAwKQorKyAgICAgICAgeworKyAgICAgICAg ICAgIG92ZXJmbG93ID0gR0xPQlVTX1RSVUU7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAg aWYoc2l6ZW9mKGdsb2J1c19vZmZfdCkgPj0gMikKKyAgICAgeworLQl4ICs9ICgoZ2xvYnVzX29m Zl90KSBidWZbNl0pIDw8IDg7CisrICAgICAgICB4ICs9ICgoZ2xvYnVzX29mZl90KSBidWZbNl0p IDw8IDg7CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CistCWlmKGJ1Zls2XSAhPSAwKQorLQl7 CistCSAgICBvdmVyZmxvdyA9IEdMT0JVU19UUlVFOworLQl9CisrICAgICAgICBpZihidWZbNl0g IT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBvdmVyZmxvdyA9IEdMT0JVU19UUlVFOwor KyAgICAgICAgfQorICAgICB9CisgCisgICAgIGlmKHNpemVvZihnbG9idXNfb2ZmX3QpID49IDEp CisgICAgIHsKKy0JeCArPSAoKGdsb2J1c19vZmZfdCkgYnVmWzddKTsKKysgICAgICAgIHggKz0g KChnbG9idXNfb2ZmX3QpIGJ1Zls3XSk7CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CistCWlm KGJ1Zls3XSAhPSAwKQorLQl7CistCSAgICBvdmVyZmxvdyA9IEdMT0JVU19UUlVFOworLQl9Cisr ICAgICAgICBpZihidWZbN10gIT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBvdmVyZmxv dyA9IEdMT0JVU19UUlVFOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIC8qIHNob3VsZCBk byBzb21ldGhpbmcgd2l0aCBvdmVyZmxvdz8gKi8KK0BAIC0xMTEwNyw3ICsxMTEwNyw3IEBAIGds b2J1c19sX2Z0cF9jb250cm9sX3N0YXRlX3RvX3N0cmluZygKKyAgICAgc3RhdGljIGNvbnN0IGNo YXIgKiBlb2YgICAgICAgICAgICAgPSAiRU9GIjsKKyAgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBz ZW5kX2VvZiAgICAgICAgPSAiU0VORF9FT0YiOworICAgICBzdGF0aWMgY29uc3QgY2hhciAqIHVu a25vd24gICAgICAgICA9ICJVTktOT1dOIjsKKy0gICAgCisrCisgICAgIHN3aXRjaChzdGF0ZSkK KyAgICAgeworICAgICAgIGNhc2UgR0xPQlVTX0ZUUF9EQVRBX1NUQVRFX05PTkU6CitkaWZmIC0t Z2l0IGEvZ3JpZGZ0cC9jb250cm9sL3NvdXJjZS9nbG9idXNfZnRwX2NvbnRyb2xfc2VydmVyLmMg Yi9ncmlkZnRwL2NvbnRyb2wvc291cmNlL2dsb2J1c19mdHBfY29udHJvbF9zZXJ2ZXIuYworaW5k ZXggOTMyNzI2MDA1Li4wMTU0N2I5MzYgMTAwNjQ0CistLS0gYS9ncmlkZnRwL2NvbnRyb2wvc291 cmNlL2dsb2J1c19mdHBfY29udHJvbF9zZXJ2ZXIuYworKysrIGIvZ3JpZGZ0cC9jb250cm9sL3Nv dXJjZS9nbG9idXNfZnRwX2NvbnRyb2xfc2VydmVyLmMKK0BAIC00NSw1NSArNDUsNTUgQEAgdHlw ZWRlZiBzdHJ1Y3QgZ2xvYnVzX2Z0cF9sX2NvbW1hbmRfaGFzaF9lbnRyeV9zCisgfQorIGdsb2J1 c19mdHBfbF9jb21tYW5kX2hhc2hfZW50cnlfdDsKKyAKKy1zdGF0aWMgdm9pZCAKKytzdGF0aWMg dm9pZAorIGdsb2J1c19sX2Z0cF9jb250cm9sX2xpc3Rlbl9jYigKKy0gICAgdm9pZCAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCAKKysgICAgdm9pZCAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLAorICAgICBnbG9idXNfaW9faGFuZGxlX3Qg KiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUsCisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgCistc3RhdGljIHZvaWQgCisrc3RhdGlj IHZvaWQKKyBnbG9idXNfbF9mdHBfY29udHJvbF9hY2NlcHRfY2IoCistICAgIHZvaWQgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgCisrICAgIHZvaWQgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywKKyAgICAgZ2xvYnVzX2lvX2hhbmRsZV90 ICogICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLAorICAgICBnbG9idXNfcmVzdWx0X3QgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOworIAorLXN0YXRpYyB2b2lkIAorK3N0YXRp YyB2b2lkCisgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfc3RvcF9zZXJ2ZXJfY2IoCistICAgIHZvaWQg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgCisrICAgIHZvaWQgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywKKyAgICAgZ2xvYnVzX2lvX2hh bmRsZV90ICogICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLAorICAgICBnbG9idXNfcmVzdWx0 X3QgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOworIAorIHN0YXRpYyB2b2lkCisg Z2xvYnVzX2xfZnRwX2NvbnRyb2xfcmVhZF9jb21tYW5kX2NiKAorLSAgICB2b2lkICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIAorKyAgICB2b2lkICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsCisgICAgIGdsb2J1c19pb19oYW5kbGVfdCAq ICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorLSAgICBnbG9idXNfYnl0ZV90ICogICAgICAg ICAgICAgICAgICAgICAgICAgICBidWYsIAorKyAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAg ICAgICAgICAgICAgICAgICBidWYsCisgICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5ieXRlcyk7CisgCistc3RhdGljIHZvaWQgCisrc3RhdGljIHZvaWQKKyBn bG9idXNfbF9mdHBfY29udHJvbF9zZW5kX3Jlc3BvbnNlX2NiKAorLSAgICB2b2lkICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIAorKyAgICB2b2lkICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsCisgICAgIGdsb2J1c19pb19oYW5kbGVfdCAq ICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorLSAgICBnbG9idXNfYnl0ZV90ICogICAgICAg ICAgICAgICAgICAgICAgICAgICBidWYsIAorKyAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAg ICAgICAgICAgICAgICAgICBidWYsCisgICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5ieXRlcyk7CisgCistc3RhdGljIHZvaWQgCisrc3RhdGljIHZvaWQKKyBn bG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3dyaXRlX2NiKAorLSAgICB2b2lkICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIAorKyAgICB2b2lkICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhcmcsCisgICAgIGdsb2J1c19pb19oYW5kbGVfdCAqICAg ICAgICAgICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzdWx0LAorLSAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAg ICAgICAgICAgICAgICAgICBidWYsIAorKyAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAgICAg ICAgICAgICAgICAgICBidWYsCisgICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5ieXRlcyk7CisgCisgCistc3RhdGljIHZvaWQgCisrc3RhdGljIHZvaWQKKyBn bG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRfY2IoCistICAgIHZvaWQgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgCisrICAgIHZvaWQgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFyZywKKyAgICAgZ2xvYnVzX2lvX2hhbmRsZV90ICogICAg ICAgICAgICAgICAgICAgICAgaGFuZGxlLAorICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXN1bHQsCistICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJ1ZiwgCisrICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJ1ZiwKKyAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmJ5dGVzKTsKKyAKKyBnbG9idXNfcmVzdWx0X3QgZ2xvYnVzX2xfZnRwX2NvbnRy b2xfcGFyc2Vfc2J1Zl9jbWQoCitAQCAtMTIxLDcgKzEyMSw3IEBAIGdsb2J1c19yZXN1bHRfdCBn bG9idXNfbF9mdHBfY29udHJvbF9wYXJzZV9tb2RlX2NtZCgKKyAgICAgZ2xvYnVzX2Z0cF9jb250 cm9sX2NvbW1hbmRfdCAqICAgICAgY29tbWFuZCk7CisgCisgZ2xvYnVzX3Jlc3VsdF90IGdsb2J1 c19sX2Z0cF9jb250cm9sX3BhcnNlX29wdHNfY21kKAorLSAgICBnbG9idXNfZnRwX2NvbnRyb2xf Y29tbWFuZF90ICogICAgICBjb21tYW5kKTsgICAgICAgCisrICAgIGdsb2J1c19mdHBfY29udHJv bF9jb21tYW5kX3QgKiAgICAgIGNvbW1hbmQpOworIAorIGdsb2J1c19yZXN1bHRfdCBnbG9idXNf bF9mdHBfY29udHJvbF9wYXJzZV9zdHJpbmdfYXJnKAorICAgICBnbG9idXNfZnRwX2NvbnRyb2xf Y29tbWFuZF90ICogICAgICBjb21tYW5kKTsKK0BAIC0xMzEsOCArMTMxLDggQEAgZ2xvYnVzX3Jl c3VsdF90IGdsb2J1c19sX2Z0cF9jb250cm9sX3BhcnNlX25vX2FyZygKKyAKKyAjZW5kaWYKKyAK Ky0vKiAKKy0gKiBIYXJkY29kZWQgcmVwbGllcyB1c2VkIGludCB0aGUgYWNjZXB0L2F1dGhlbnRp Y2F0aW9uIHByb2Nlc3MgCisrLyoKKysgKiBIYXJkY29kZWQgcmVwbGllcyB1c2VkIGludCB0aGUg YWNjZXB0L2F1dGhlbnRpY2F0aW9uIHByb2Nlc3MKKyAgKi8KKyAKKyBjb25zdCBjaGFyICogZ2xv YnVzX2lfZnRwX3NlcnZlcl8yMjBfcmVwbHk9CitAQCAtMTUyLDcgKzE1Miw3IEBAIGNvbnN0IGNo YXIgKiBnbG9idXNfaV9mdHBfc2VydmVyXzMzNF9yZXBseT0KKyAgKiBAZGV0YWlscworICAqIFRo aXMgZnVuY3Rpb24gd2lsbCBzZXQgdXAgKGkuZS4gaW5pdGlhbGl6ZSBhbGwgbXV0ZXhlcyBhbmQK KyAgKiB2YXJpYWJsZXMpIGEgZ2xvYnVzIGZ0cCBzZXJ2ZXIgaGFuZGxlLiBJdCB3aWxsIGFsc28g ZW50ZXIgdGhlCistICogaGFuZGxlIGluIGEgbGlzdCB1c2VkIGJ5IHRoZSBtb2R1bGUgYWN0aXZh dGlvbi9kZWFjdGl2YXRpb24gZnVuY3Rpb25zLiAKKysgKiBoYW5kbGUgaW4gYSBsaXN0IHVzZWQg YnkgdGhlIG1vZHVsZSBhY3RpdmF0aW9uL2RlYWN0aXZhdGlvbiBmdW5jdGlvbnMuCisgICoKKyAg KiBAcGFyYW0gaGFuZGxlCisgICogICAgICAgIFRoZSBoYW5kbGUgdG8gaW5pdGlhbGl6ZS4KK0BA IC0xNjAsNyArMTYwLDcgQEAgY29uc3QgY2hhciAqIGdsb2J1c19pX2Z0cF9zZXJ2ZXJfMzM0X3Jl cGx5PQorICAqICAgICAgICAtIEdMT0JVU19TVUNDRVNTCisgICogICAgICAgIC0gaW52YWxpZCBo YW5kbGUKKyAgKi8KKy1nbG9idXNfcmVzdWx0X3QgCisrZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVz X2Z0cF9jb250cm9sX3NlcnZlcl9oYW5kbGVfaW5pdCgKKyAgICAgZ2xvYnVzX2Z0cF9jb250cm9s X3NlcnZlcl90ICogICAgICAgICAgIGhhbmRsZSkKKyB7CitAQCAtMjEwLDcgKzIxMCw3IEBAIGds b2J1c19mdHBfY29udHJvbF9zZXJ2ZXJfaGFuZGxlX2luaXQoCisgICovCisgCisgCistZ2xvYnVz X3Jlc3VsdF90IAorK2dsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY29udHJvbF9zZXJ2ZXJf aGFuZGxlX2Rlc3Ryb3koCisgICAgIGdsb2J1c19mdHBfY29udHJvbF9zZXJ2ZXJfdCAqICAgICAg ICAgIGhhbmRsZSkKKyB7CitAQCAtMjI0LDEwICsyMjQsMTAgQEAgZ2xvYnVzX2Z0cF9jb250cm9s X3NlcnZlcl9oYW5kbGVfZGVzdHJveSgKKyAgICAgICAgICAgICApOworICAgICB9CisgCistICAg IGlmKGhhbmRsZS0+c3RhdGUgPT0gCisrICAgIGlmKGhhbmRsZS0+c3RhdGUgPT0KKyAgICAgICAg R0xPQlVTX0ZUUF9DT05UUk9MX1NFUlZFUl9MSVNURU5JTkcpCisgICAgIHsKKy0gICAgICAgIAor KworICAgICAgICAgcmV0dXJuIGdsb2J1c19lcnJvcl9wdXQoCisgICAgICAgICAgICAgZ2xvYnVz X2Vycm9yX2NvbnN0cnVjdF9zdHJpbmcoCisgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ09O VFJPTF9NT0RVTEUsCitAQCAtMjM1LDcgKzIzNSw3IEBAIGdsb2J1c19mdHBfY29udHJvbF9zZXJ2 ZXJfaGFuZGxlX2Rlc3Ryb3koCisgICAgICAgICAgICAgICAgIF9GQ1NMKCJnbG9idXNfZnRwX2Nv bnRyb2xfc2VydmVyX2hhbmRsZV9kZXN0cm95OiBoYW5kbGUgaXMgc3RpbGwgbGlzdGVuaW5nIikp CisgICAgICAgICAgICAgKTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX211dGV4X2xv Y2soJmdsb2J1c19sX2Z0cF9zZXJ2ZXJfaGFuZGxlX2xpc3RfbXV0ZXgpOworICAgICB7CisgICAg ICAgICBnbG9idXNfbXV0ZXhfZGVzdHJveSgmKGhhbmRsZS0+bXV0ZXgpKTsKK0BAIC0yNjgsNyAr MjY4LDcgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX3NlcnZlcl9oYW5kbGVfZGVzdHJveSgKKyAgKiAg ICAgICAgIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBjYWxsZWQgd2hlbiBjb25uZWN0aW9uIHJlcXVl c3RzCisgICogICAgICAgICBhcmUgbWFkZS4KKyAgKiAgQHBhcmFtIGNhbGxiYWNrX2FyZworLSAq ICAgICAgICAgVGhlIHVzZXIgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlv biB3aGVuIAorKyAqICAgICAgICAgVGhlIHVzZXIgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBjYWxs YmFjayBmdW5jdGlvbiB3aGVuCisgICogICAgICAgICBjb25uZWN0aW9uIHJlcXVlc3RzIGFyZSBt YWRlLgorICAqCisgICogIEBub3RlIEknbSBub3QgcHJvdmlkaW5nIGFueSBtZWNoYW5pc20gZm9y IG1ha2luZyBzdXJlIHRoYXQgdGhpcworQEAgLTMyMiw3ICszMjIsNyBAQCBnbG9idXNfZnRwX2Nv bnRyb2xfc2VydmVyX2xpc3RlbigKKyAgKiAgICAgICAgIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBj YWxsZWQgd2hlbiBjb25uZWN0aW9uIHJlcXVlc3RzCisgICogICAgICAgICBhcmUgbWFkZS4KKyAg KiAgQHBhcmFtIGNhbGxiYWNrX2FyZworLSAqICAgICAgICAgVGhlIHVzZXIgYXJndW1lbnQgcGFz c2VkIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aGVuIAorKyAqICAgICAgICAgVGhlIHVzZXIg YXJndW1lbnQgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aGVuCisgICogICAgICAg ICBjb25uZWN0aW9uIHJlcXVlc3RzIGFyZSBtYWRlLgorICAqCisgICogIEBub3RlIEknbSBub3Qg cHJvdmlkaW5nIGFueSBtZWNoYW5pc20gZm9yIG1ha2luZyBzdXJlIHRoYXQgdGhpcworQEAgLTQw Miw3ICs0MDIsNyBAQCBnbG9idXNfZnRwX2NvbnRyb2xfc2VydmVyX2xpc3Rlbl9leCgKKyAgICAg Z2xvYnVzX211dGV4X3VubG9jaygmKHNlcnZlcl9oYW5kbGUtPm11dGV4KSk7CisgCisgICAgIGJh Y2tsb2c9LTE7CistICAgIAorKworICAgICBnbG9idXNfaW9fYXR0cl9zZXRfc29ja2V0X29vYmlu bGluZShhdHRyLCBHTE9CVVNfVFJVRSk7CisgICAgIGdsb2J1c19pb19hdHRyX3NldF90Y3Bfbm9k ZWxheShhdHRyLCBHTE9CVVNfVFJVRSk7CisgCitAQCAtNDEwLDM2ICs0MTAsMzYgQEAgZ2xvYnVz X2Z0cF9jb250cm9sX3NlcnZlcl9saXN0ZW5fZXgoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJhY2tsb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZXJ2ZXJf aGFuZGxlLT5pb19oYW5kbGUpOworLSAgICAKKysKKyAKKyAgICAgaWYocmMgIT0gR0xPQlVTX1NV Q0NFU1MpCisgICAgIHsKKyAgICAgICAgIHJldHVybiByYzsKKyAgICAgfQorLSAgICAKKysKKyAg ICAgZ2xvYnVzX211dGV4X2xvY2soJihzZXJ2ZXJfaGFuZGxlLT5tdXRleCkpOworICAgICB7Cisg ICAgICAgICBzZXJ2ZXJfaGFuZGxlLT5zdGF0ZT1HTE9CVVNfRlRQX0NPTlRST0xfU0VSVkVSX0xJ U1RFTklORzsKKyAgICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCYoc2VydmVyX2hhbmRs ZS0+bXV0ZXgpKTsKKy0gICAgCisrCisgICAgIHJjPWdsb2J1c19pb190Y3BfcmVnaXN0ZXJfbGlz dGVuKCZzZXJ2ZXJfaGFuZGxlLT5pb19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdsb2J1c19sX2Z0cF9jb250cm9sX2xpc3Rlbl9jYiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgc2VydmVyX2hhbmRsZSk7CistICAg IAorKworICAgICBpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgcmV0 dXJuIHJjOworICAgICB9CistICAgICAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNT OworIH0KKyAKKyAjaWZkZWYgR0xPQlVTX0lOVEVSTkFMX0RPQworIAorIC8qKgorLSAqIEludGVy bmFsIGNhbGxiYWNrIGZvciB0aGUgZ2xvYnVzX2lvX3RjcF9yZWdpc3Rlcl9saXN0ZW4gZnVuY3Rp b24uICAgIAorLSAqIAorKyAqIEludGVybmFsIGNhbGxiYWNrIGZvciB0aGUgZ2xvYnVzX2lvX3Rj cF9yZWdpc3Rlcl9saXN0ZW4gZnVuY3Rpb24uCisrICoKKyAgKiBUaGlzIGlzIGEgaW50ZXJuYWwg Y2FsbGJhY2sgdXNlZCB3aXRoIHRoZQorICAqIGdsb2J1c19pb190Y3BfcmVnaXN0ZXJfbGlzdGVu IGZ1bmN0aW9uLCB3aGljaCBpbiB0aGlzIGxpYnJhcnkgaXMKKyAgKiB1c2VkIGZvciBkZXRlY3Rp bmcgY29ubmVjdGlvbnMgdG8gYSBsaXN0ZW5pbmcgInNlcnZlciIgc29ja2V0LgorQEAgLTQ1OSwx NSArNDU5LDE1IEBAIGdsb2J1c19mdHBfY29udHJvbF9zZXJ2ZXJfbGlzdGVuX2V4KAorICAqCisg ICogQG5vdGUgSWYgYSBlcnJvciBpcyBkZXRlY3RlZCBpbiB0aGlzIGZ1bmN0aW9uIHRoZSB1c2Vy IGNhbGxiYWNrIGlzCisgICogICAgICAgY2FsbGVkIHdpdGggYW4gYXBwcm9wcmlhdGUgZXJyb3Ig b2JqZWN0IGFuZCB0aGUgZnVuY3Rpb24KKy0gKiAgICAgICByZXR1cm5zLiAKKysgKiAgICAgICBy ZXR1cm5zLgorICAqLworIAorICNlbmRpZgorIAorIAorLXN0YXRpYyB2b2lkIAorK3N0YXRpYyB2 b2lkCisgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfbGlzdGVuX2NiKAorLSAgICB2b2lkICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIAorKyAgICB2b2lkICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsCisgICAgIGdsb2J1c19pb19oYW5kbGVfdCAq ICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KQorIHsKK0BAIC00OTAsMTEgKzQ5MCwxMSBAQCBn bG9idXNfbF9mdHBfY29udHJvbF9saXN0ZW5fY2IoCisgICAgIChzZXJ2ZXJfaGFuZGxlLT5jYWxs YmFjaykoc2VydmVyX2hhbmRsZS0+Y2FsbGJhY2tfYXJnLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlcnZlcl9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0xPQlVTX05VTEwpOworLSAgICAKKysKKyAgICAgcmM9Z2xvYnVzX2lvX3RjcF9yZWdpc3Rlcl9s aXN0ZW4oJnNlcnZlcl9oYW5kbGUtPmlvX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfbGlzdGVuX2NiLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcpOworLSAgICAKKysKKyAgICAgaWYocmMg IT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGVycm9yPWdsb2J1c19lcnJvcl9n ZXQocmMpOworQEAgLTUxNiwxMSArNTE2LDExIEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2xpc3Rl bl9jYigKKyAgKiBAZGV0YWlscworICAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgYSBjb21t YW5kIHN0cnVjdHVyZSBiYXNlZCBvbiBhIG51bGwKKyAgKiB0ZXJtaW5hdGVkIHN0cmluZyByZXBy ZXNlbnRpbmcgb25lIGxpbmUgb2YgaW5wdXQgZnJvbSB0aGUKKy0gKiBjbGllbnQuIFRoZSBjb21t YW5kIHN0cnVjdHVyZSBpcyB1c2VkIGFzIGEgY29udmVuaWVuY2UgdG8gZGV0ZXJtaW5lIAorKyAq IGNsaWVudC4gVGhlIGNvbW1hbmQgc3RydWN0dXJlIGlzIHVzZWQgYXMgYSBjb252ZW5pZW5jZSB0 byBkZXRlcm1pbmUKKyAgKiB3aGF0IGNvbW1hbmQgdGhlIGNsaWVudCBpc3N1ZWQuICBUaGlzIGZ1 bmN0aW9uIHBhcnNlcyBhIGNvbW1hbmQKKyAgKiBzdHJpbmcgc2VudCBieSBhIGNsaWVudCBhbmQg cG9wdWxhdGVzIHRoZSBjb21tYW5kIGFyZ3VtZW50CisgICogYXBwcm9wcmlhdGVseS4gSW4gdGhl IEdTU0FQSSBjYXNlIGl0IHdpbGwgYWxzbyBkZWNvZGUgYW5kIHVud3JhcAorLSAqIHRoZSBjb21t YW5kIGJlZm9yZSBwYXJzaW5nIGl0LiAgCisrICogdGhlIGNvbW1hbmQgYmVmb3JlIHBhcnNpbmcg aXQuCisgICoKKyAgKiBAcGFyYW0gY29tbWFuZAorICAqICAgICAgICBBIHBvaW50ZXIgdG8gdGhl IGNvbW1hbmQgc3RydWN0dXJlIHRvIGJlIGluaXRpYWxpemVkCitAQCAtNTQzLDcgKzU0Myw3IEBA IGdsb2J1c19mdHBfY29udHJvbF9jb21tYW5kX2luaXQoCisgICAgIGNoYXIgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZF9jbWQgPSBHTE9CVVNfTlVMTDsKKyAg ICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYzsKKyAgICAg Z2xvYnVzX2Z0cF9sX2NvbW1hbmRfaGFzaF9lbnRyeV90ICogICAgICAgICBjb21tYW5kX2hhc2hf ZW50cnk7CistICAgIAorKworICAgICBsZW5ndGg9c3RybGVuKHJhd19jb21tYW5kKTsKKyAKKyAg ICAgY29tbWFuZC0+bm9vcC5yYXdfY29tbWFuZD0KK0BAIC01NjksNyArNTY5LDcgQEAgZ2xvYnVz X2Z0cF9jb250cm9sX2NvbW1hbmRfaW5pdCgKKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UKKyAg ICAgICAgIHsKKy0gICAgICAgICAgICBjb21tYW5kLT5ub29wLnJhd19jb21tYW5kW2pdPXJhd19j b21tYW5kW2ldOyAgCisrICAgICAgICAgICAgY29tbWFuZC0+bm9vcC5yYXdfY29tbWFuZFtqXT1y YXdfY29tbWFuZFtpXTsKKyAgICAgICAgICAgICBqKys7CisgICAgICAgICB9CisgICAgIH0KK0BA IC01ODYsNyArNTg2LDcgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2NvbW1hbmRfaW5pdCgKKyAgICAg ICAgICAgICByZXR1cm4gcmM7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisgICAgIGlm KGRlY29kZWRfY21kICE9IEdMT0JVU19OVUxMKQorICAgICB7CisgICAgICAgICBnbG9idXNfbGli Y19mcmVlKGNvbW1hbmQtPm5vb3AucmF3X2NvbW1hbmQpOworQEAgLTYwMCw3ICs2MDAsNyBAQCBn bG9idXNfZnRwX2NvbnRyb2xfY29tbWFuZF9pbml0KAorICAgICBzc2NhbmYoY29tbWFuZC0+bm9v cC5yYXdfY29tbWFuZCwiJTRzIixjbWQpOworIAorICAgICBpPTA7CistICAgIAorKworICAgICB3 aGlsZShjbWRbaV0gIT0gJ1wwJykKKyAgICAgeworICAgICAgICAgY21kW2ldPXRvdXBwZXIoY21k W2ldKTsKK0BAIC02MjEsNyArNjIxLDcgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2NvbW1hbmRfaW5p dCgKKyAgICAgICAgIGNvbW1hbmQtPmNvZGUgPSBHTE9CVVNfRlRQX0NPTlRST0xfQ09NTUFORF9V TktOT1dOOworICAgICAgICAgcmMgPSBHTE9CVVNfU1VDQ0VTUzsKKyAgICAgfQorLSAgICAgICAg CisrCisgICAgIHJldHVybiByYzsKKyB9CisgCitAQCAtNjMxLDcgKzYzMSw3IEBAIGdsb2J1c19m dHBfY29udHJvbF9jb21tYW5kX2luaXQoCisgICogQGRldGFpbHMKKyAgKiBUaGlzIGZ1bmN0aW9u IGZyZWVzIHVwIHRoZSBtZW1vcnkgYWxsb2NhdGVkIHRvIHRoZSBjb21tYW5kCisgICogYXJndW1l bnQuCistICogCisrICoKKyAgKiBAcGFyYW0gY29tbWFuZAorICAqICAgICAgICBUaGUgY29tbWFu ZCBzdHJ1Y3R1cmUgd2hvc2UgYXNzb2NpYXRlZCBtZW1vcnkgaXMgdG8gYmUgZnJlZWQKKyAgKi8K K0BAIC02NDgsMTMgKzY0OCwxMyBAQCBnbG9idXNfZnRwX2NvbnRyb2xfY29tbWFuZF9kZXN0cm95 KAorICAgICAgICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2Z0cF9jb250cm9sX2NvbW1hbmRfZGVz dHJveTogY29tbWFuZCBhcmd1bWVudCBpcyBOVUxMIikpCisgICAgICAgICAgICAgKTsKKyAgICAg fQorLSAgICAKKysKKyAgICAgZ2xvYnVzX2xpYmNfZnJlZShjb21tYW5kLT5ub29wLnJhd19jb21t YW5kKTsKKy0gICAgCisrCisgICAgIHN3aXRjaChjb21tYW5kLT5jb2RlKQorICAgICB7CisgICAg IGNhc2UgR0xPQlVTX0ZUUF9DT05UUk9MX0NPTU1BTkRfU0lURToKKy0gICAgY2FzZSBHTE9CVVNf RlRQX0NPTlRST0xfQ09NTUFORF9ERUxFOiAgCisrICAgIGNhc2UgR0xPQlVTX0ZUUF9DT05UUk9M X0NPTU1BTkRfREVMRToKKyAgICAgY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xfQ09NTUFORF9STUQ6 CisgICAgIGNhc2UgR0xPQlVTX0ZUUF9DT05UUk9MX0NPTU1BTkRfTUtEOgorICAgICBjYXNlIEdM T0JVU19GVFBfQ09OVFJPTF9DT01NQU5EX05MU1Q6CitAQCAtNjg0LDcgKzY4NCw3IEBAIGdsb2J1 c19mdHBfY29udHJvbF9jb21tYW5kX2Rlc3Ryb3koCisgICAgIGNhc2UgR0xPQlVTX0ZUUF9DT05U Uk9MX0NPTU1BTkRfU1BPUjoKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2xpYmNfZnJlZShjb21t YW5kLT5zcG9yLmhvc3RfcG9ydCk7CistICAgICAgICBicmVhazsgIAorKyAgICAgICAgYnJlYWs7 CisgICAgIH0KKyAgICAgZGVmYXVsdDoKKyAgICAgICAgIGJyZWFrOworQEAgLTY5Nyw3ICs2OTcs NyBAQCBnbG9idXNfZnRwX2NvbnRyb2xfY29tbWFuZF9kZXN0cm95KAorICAqIEBicmllZiBDb3B5 IG9mIEdyaWRGVFAgY29tbWFuZAorICAqIEBpbmdyb3VwIGdsb2J1c19mdHBfY29udHJvbF9zZXJ2 ZXIKKyAgKiBAZGV0YWlscworLSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aGVu IHRoZSB1c2VyIG5lZWRzIHRvIG1ha2UgYSAKKysgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBj YWxsZWQgd2hlbiB0aGUgdXNlciBuZWVkcyB0byBtYWtlIGEKKyAgKiBjb3B5IG9mIGEgY29tbWFu ZCBzdHJ1Y3R1cmUuCisgICoKKyAgKiBAcGFyYW0gZGVzdAorQEAgLTcxNyw3ICs3MTcsNyBAQCBn bG9idXNfZnRwX2NvbnRyb2xfY29tbWFuZF9jb3B5KAorICAgICAgICAgICAgICAgICBHTE9CVVNf RlRQX0NPTlRST0xfTU9EVUxFLAorICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKyAgICAg ICAgICAgICAgICAgX0ZDU0woImdsb2J1c19mdHBfY29udHJvbF9jb21tYW5kX2NvcHk6IGRlc3Qg YXJndW1lbnQgaXMgTlVMTCIpKQorLSAgICAgICAgICAgICk7IAorKyAgICAgICAgICAgICk7Cisg ICAgIH0KKyAKKyAgICAgaWYoc3JjID09IEdMT0JVU19OVUxMKQorQEAgLTcyNywxMyArNzI3LDEz IEBAIGdsb2J1c19mdHBfY29udHJvbF9jb21tYW5kX2NvcHkoCisgICAgICAgICAgICAgICAgIEdM T0JVU19GVFBfQ09OVFJPTF9NT0RVTEUsCisgICAgICAgICAgICAgICAgIEdMT0JVU19OVUxMLAor ICAgICAgICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2Z0cF9jb250cm9sX2NvbW1hbmRfY29weTog c3JjIGFyZ3VtZW50IGlzIE5VTEwiKSkKKy0gICAgICAgICAgICApOyAKKysgICAgICAgICAgICAp OworICAgICB9CisgCisgICAgIGRlc3QtPmNvZGU9c3JjLT5jb2RlOworIAorICAgICBkZXN0LT5u b29wLnJhd19jb21tYW5kPWdsb2J1c19saWJjX3N0cmR1cChzcmMtPm5vb3AucmF3X2NvbW1hbmQp OworLSAKKysKKyAgICAgaWYoZGVzdC0+bm9vcC5yYXdfY29tbWFuZCA9PSBHTE9CVVNfTlVMTCkK KyAgICAgeworICAgICAgICAgcmV0dXJuIGdsb2J1c19lcnJvcl9wdXQoCitAQCAtNzQxLDE0ICs3 NDEsMTQgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2NvbW1hbmRfY29weSgKKyAgICAgICAgICAgICAg ICAgR0xPQlVTX0ZUUF9DT05UUk9MX01PRFVMRSwKKyAgICAgICAgICAgICAgICAgR0xPQlVTX05V TEwsCisgICAgICAgICAgICAgICAgIF9GQ1NMKCJnbG9idXNfZnRwX2NvbnRyb2xfY29tbWFuZF9j b3B5OiBzdHJkdXAgZmFpbGVkIikpCistICAgICAgICAgICAgKTsgCisrICAgICAgICAgICAgKTsK KyAgICAgfQorLSAgIAorKworICAgICBzd2l0Y2goZGVzdC0+Y29kZSkKKyAgICAgeworICAgICBj YXNlIEdMT0JVU19GVFBfQ09OVFJPTF9DT01NQU5EX1VOS05PV046CisgICAgIGNhc2UgR0xPQlVT X0ZUUF9DT05UUk9MX0NPTU1BTkRfU0lURToKKy0gICAgY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xf Q09NTUFORF9ERUxFOiAgCisrICAgIGNhc2UgR0xPQlVTX0ZUUF9DT05UUk9MX0NPTU1BTkRfREVM RToKKyAgICAgY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xfQ09NTUFORF9STUQ6CisgICAgIGNhc2Ug R0xPQlVTX0ZUUF9DT05UUk9MX0NPTU1BTkRfTUtEOgorICAgICBjYXNlIEdMT0JVU19GVFBfQ09O VFJPTF9DT01NQU5EX05MU1Q6CitAQCAtNzcyLDEyICs3NzIsMTIgQEAgZ2xvYnVzX2Z0cF9jb250 cm9sX2NvbW1hbmRfY29weSgKKyAgICAgY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xfQ09NTUFORF9R VUlUOgorIAorICAgICAgICAgZGVzdC0+bm9vcC5zdHJpbmdfYXJnID0gR0xPQlVTX05VTEw7Cist ICAgICAgICAKKysKKyAgICAgICAgIGlmKHNyYy0+bm9vcC5zdHJpbmdfYXJnICE9IEdMT0JVU19O VUxMKQorICAgICAgICAgeworICAgICAgICAgICAgIGRlc3QtPm5vb3Auc3RyaW5nX2FyZz0KKyAg ICAgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfc3RyZHVwKHNyYy0+bm9vcC5zdHJpbmdfYXJnKTsK Ky0gICAgICAgICAKKysKKyAgICAgICAgICAgICBpZihkZXN0LT5ub29wLnN0cmluZ19hcmcgPT0g R0xPQlVTX05VTEwpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBnbG9idXNfbGli Y19mcmVlKGRlc3QtPm5vb3AucmF3X2NvbW1hbmQpOworQEAgLTc4Niw3ICs3ODYsNyBAQCBnbG9i dXNfZnRwX2NvbnRyb2xfY29tbWFuZF9jb3B5KAorICAgICAgICAgICAgICAgICAgICAgICAgIEdM T0JVU19GVFBfQ09OVFJPTF9NT0RVTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVT X05VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgX0ZDU0woImdsb2J1c19mdHBfY29udHJv bF9jb21tYW5kX2NvcHk6IHN0cmR1cCBmYWlsZWQiKSkKKy0gICAgICAgICAgICAgICAgICAgICk7 IAorKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9Cisg ICAgICAgICBicmVhazsKK0BAIC04MDEsNyArODAxLDcgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2Nv bW1hbmRfY29weSgKKyAgICAgY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xfQ09NTUFORF9TUE9SOgor ICAgICAgICAgZGVzdC0+c3Bvci5udW1fYXJncz1zcmMtPnNwb3IubnVtX2FyZ3M7CisgICAgICAg ICBkZXN0LT5zcG9yLmhvc3RfcG9ydCA9IChnbG9idXNfZnRwX2NvbnRyb2xfaG9zdF9wb3J0X3Qg KikKKy0gICAgICAgICAgICBnbG9idXNfbGliY19tYWxsb2Moc3JjLT5zcG9yLm51bV9hcmdzICog CisrICAgICAgICAgICAgZ2xvYnVzX2xpYmNfbWFsbG9jKHNyYy0+c3Bvci5udW1fYXJncyAqCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihnbG9idXNfZnRwX2NvbnRyb2xf aG9zdF9wb3J0X3QpKTsKKyAgICAgICAgIGlmKGRlc3QtPnNwb3IuaG9zdF9wb3J0ID09IEdMT0JV U19OVUxMKQorICAgICAgICAgeworQEAgLTgxMSwxMiArODExLDEyIEBAIGdsb2J1c19mdHBfY29u dHJvbF9jb21tYW5kX2NvcHkoCisgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NPTlRS T0xfTU9EVUxFLAorICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX05VTEwsCisgICAgICAgICAg ICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2Z0cF9jb250cm9sX2NvbW1hbmRfY29weTogbWFsbG9j IGZhaWxlZCIpKQorLSAgICAgICAgICAgICAgICApOyAKKysgICAgICAgICAgICAgICAgKTsKKyAg ICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgbWVtY3B5KGRlc3QtPnNwb3IuaG9zdF9w b3J0LAorICAgICAgICAgICAgICAgIHNyYy0+c3Bvci5ob3N0X3BvcnQsCistICAgICAgICAgICAg ICAgc3JjLT5zcG9yLm51bV9hcmdzICogCisrICAgICAgICAgICAgICAgc3JjLT5zcG9yLm51bV9h cmdzICoKKyAgICAgICAgICAgICAgICBzaXplb2YoZ2xvYnVzX2Z0cF9jb250cm9sX2hvc3RfcG9y dF90KSk7CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xfQ09N TUFORF9UWVBFOgorQEAgLTg0MCw5ICs4NDAsOSBAQCBnbG9idXNfZnRwX2NvbnRyb2xfY29tbWFu ZF9jb3B5KAorICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NPTlRST0xfTU9EVUxFLAorICAg ICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKyAgICAgICAgICAgICAgICAgX0ZDU0woImdsb2J1 c19mdHBfY29udHJvbF9jb21tYW5kX2NvcHk6IFVua25vd24gY29tbWFuZCIpKQorLSAgICAgICAg ICAgICk7IAorKyAgICAgICAgICAgICk7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVybiBH TE9CVVNfU1VDQ0VTUzsKKyB9CisgCitAQCAtODUxLDEwICs4NTEsMTAgQEAgZ2xvYnVzX2Z0cF9j b250cm9sX2NvbW1hbmRfY29weSgKKyAgKiBAaW5ncm91cCBnbG9idXNfZnRwX2NvbnRyb2xfc2Vy dmVyCisgICogQGRldGFpbHMKKyAgKiBUaGlzIGZ1bmN0aW9uIHN0b3BzIGxpc3RlbmluZyBvbiB0 aGUgZ2l2ZW4gbGlzdGVuZXIgb2JqZWN0CistICogZm9yIGNsaWVudCBjb25uZWN0aW9ucy4gIEFs bCBleGlzdGluZyBjbGllbnQgY29ubmVjdGlvbnMgYXJlIAorKyAqIGZvciBjbGllbnQgY29ubmVj dGlvbnMuICBBbGwgZXhpc3RpbmcgY2xpZW50IGNvbm5lY3Rpb25zIGFyZQorICAqIGxlZnQgb3Bl bi4KKyAgKgorLSAqIEBwYXJhbSBsaXN0ZW5lciAKKysgKiBAcGFyYW0gbGlzdGVuZXIKKyAgKiAg ICAgICAgdGhlIGdsb2J1c19mdHBfY29udHJvbF9zZXJ2ZXJfdCBvYmplY3QgdGhhdCBzaG91bGQK KyAgKiAgICAgICAgbm8gbG9uZ2VyIGxpc3RlbiBmb3IgY29ubmVjdGlvbnMuCisgICogQHBhcmFt IGNhbGxiYWNrCitAQCAtODcxLDEwICs4NzEsMTAgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX3NlcnZl cl9zdG9wKAorIHsKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByYzsKKyAgICAgZ2xvYnVzX2lfZnRwX3NlcnZlcl9wYXNzdGhydV9jYl9hcmdfdCAqICAg ICBjYl9hcmc7CistICAgIAorKworIAorICAgICBpZihsaXN0ZW5lciA9PSBHTE9CVVNfTlVMTCkK Ky0gICAgeyAKKysgICAgeworICAgICAgICAgcmV0dXJuIGdsb2J1c19lcnJvcl9wdXQoCisgICAg ICAgICAgICAgZ2xvYnVzX2Vycm9yX2NvbnN0cnVjdF9zdHJpbmcoCisgICAgICAgICAgICAgICAg IEdMT0JVU19GVFBfQ09OVFJPTF9NT0RVTEUsCitAQCAtODkyLDEwICs4OTIsMTAgQEAgZ2xvYnVz X2Z0cF9jb250cm9sX3NlcnZlcl9zdG9wKAorICAgICAgICAgICAgICAgICBfRkNTTCgiZ2xvYnVz X2Z0cF9jb250cm9sX3NlcnZlcl9zdG9wOiBjYWxsYmFjayBhcmd1bWVudCBpcyBOVUxMIikpCisg ICAgICAgICAgICAgKTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX211dGV4X2xvY2so JihsaXN0ZW5lci0+bXV0ZXgpKTsKKyAgICAgeworLSAgICAgICAgaWYobGlzdGVuZXItPnN0YXRl ICE9IAorKyAgICAgICAgaWYobGlzdGVuZXItPnN0YXRlICE9CisgICAgICAgICAgICBHTE9CVVNf RlRQX0NPTlRST0xfU0VSVkVSX0xJU1RFTklORykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBn bG9idXNfbXV0ZXhfdW5sb2NrKCYobGlzdGVuZXItPm11dGV4KSk7CitAQCAtOTA4LDcgKzkwOCw3 IEBAIGdsb2J1c19mdHBfY29udHJvbF9zZXJ2ZXJfc3RvcCgKKyAgICAgY2JfYXJnID0gKGdsb2J1 c19pX2Z0cF9zZXJ2ZXJfcGFzc3RocnVfY2JfYXJnX3QgKikKKyAgICAgICAgIGdsb2J1c19saWJj X21hbGxvYygKKyAgICAgICAgICAgICBzaXplb2YoZ2xvYnVzX2lfZnRwX3NlcnZlcl9wYXNzdGhy dV9jYl9hcmdfdCkpOworLSAgICAKKysKKyAgICAgaWYoY2JfYXJnID09IEdMT0JVU19OVUxMKQor ICAgICB7CisgICAgICAgICByZXR1cm4gZ2xvYnVzX2Vycm9yX3B1dCgKK0BAIC05MzEsNyArOTMx LDcgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX3NlcnZlcl9zdG9wKAorICAgICAgICAgZ2xvYnVzX2xp YmNfZnJlZShjYl9hcmcpOworICAgICAgICAgcmV0dXJuIHJjOworICAgICB9CistICAgIAorKwor ICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCisgfQorQEAgLTkzOSw4ICs5MzksOCBAQCBn bG9idXNfZnRwX2NvbnRyb2xfc2VydmVyX3N0b3AoCisgI2lmZGVmIEdMT0JVU19JTlRFUk5BTF9E T0MKKyAKKyAvKioKKy0gKiBJbnRlcm5hbCBjYWxsYmFjayBmb3IgdGhlIGdsb2J1c19pb19yZWdp c3Rlcl9jbG9zZSBmdW5jdGlvbi4gICAgCistICogCisrICogSW50ZXJuYWwgY2FsbGJhY2sgZm9y IHRoZSBnbG9idXNfaW9fcmVnaXN0ZXJfY2xvc2UgZnVuY3Rpb24uCisrICoKKyAgKiBUaGlzIGlz IGFuIGludGVybmFsIGNhbGxiYWNrIHVzZWQgYXMgcGFydCBvZiB0aGUKKyAgKiBnbG9idXNfZnRw X2NvbnRyb2xfc2VydmVyX3N0b3AgZnVuY3Rpb24uIEl0IGNoZWNrcyB0aGUgcmVzdWx0IG9mCisg ICogdGhlIGNsb3NlIGFuZCBjYWxscyB0aGUgdXNlciBjYWxsYmFjay4KK0BAIC05NTIsMjAgKzk1 MiwyMCBAQCBnbG9idXNfZnRwX2NvbnRyb2xfc2VydmVyX3N0b3AoCisgICogICAgICAgIFRoZSBn bG9idXNfaW8gaGFuZGxlIGZvciB0aGUgY29ubmVjdGlvbi4gSW4gcHJhY3RpY2UgdGhpcworICAq ICAgICAgICByZXByZXNlbnRzIHRoZSBzb2NrZXQgZmQgZm9yIHRoZSBjb25uZWN0aW9uLgorICAq IEBwYXJhbSByZXN1bHQKKy0gKiAgICAgICAgVGhlIHJlc3VsdCBvZiB0aGUgY2xvc2Ugb3BlcmF0 aW9uIAorKyAqICAgICAgICBUaGUgcmVzdWx0IG9mIHRoZSBjbG9zZSBvcGVyYXRpb24KKyAgKgor ICAqIEByZXR1cm4gdm9pZAorICAqCisgICogQG5vdGUgSWYgYSBlcnJvciBpcyBkZXRlY3RlZCBp biB0aGlzIGZ1bmN0aW9uIHRoZSB1c2VyIGNhbGxiYWNrIGlzCisgICogICAgICAgY2FsbGVkIHdp dGggYW4gYXBwcm9wcmlhdGUgZXJyb3Igb2JqZWN0IG9yIGZ0cCByZXNwb25zZSBhbmQKKy0gKiAg ICAgICB0aGUgZnVuY3Rpb24gcmV0dXJucy4gCisrICogICAgICAgdGhlIGZ1bmN0aW9uIHJldHVy bnMuCisgICovCisgCisgI2VuZGlmCisgCistc3RhdGljIHZvaWQgCisrc3RhdGljIHZvaWQKKyBn bG9idXNfbF9mdHBfY29udHJvbF9zdG9wX3NlcnZlcl9jYigKKy0gICAgdm9pZCAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCAKKysgICAgdm9pZCAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXJnLAorICAgICBnbG9idXNfaW9faGFuZGxlX3QgKiAg ICAgICAgICAgICAgICAgICAgICBoYW5kbGUsCisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlc3VsdCkKKyB7CitAQCAtOTczLDcgKzk3Myw3IEBAIGdsb2J1 c19sX2Z0cF9jb250cm9sX3N0b3Bfc2VydmVyX2NiKAorICAgICBnbG9idXNfb2JqZWN0X3QgKiAg ICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjsKKyAKKyAgICAgY2JfYXJnID0gKGdsb2J1c19p X2Z0cF9zZXJ2ZXJfcGFzc3RocnVfY2JfYXJnX3QgKikgYXJnOworLSAgICAKKysKKyAgICAgaWYo cmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKXsKKyAgICAgICAgIGVycm9yPWdsb2J1c19lcnJvcl9n ZXQocmVzdWx0KTsKKyAgICAgICAgIChjYl9hcmctPmNhbGxiYWNrKShjYl9hcmctPmNhbGxiYWNr X2FyZywKK0BAIC0xMDA0LDkgKzEwMDQsOSBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9zdG9wX3Nl cnZlcl9jYigKKyAgKiBjb25uZWN0aW9uLiAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCB0 byBhY2NlcHQgdGhhdCB1c2VyCisgICogY29ubmVjdGlvbiByZXF1ZXN0LiAgT25jZSB0aGUgY29u bmVjdGlvbiBpcyBlc3RhYmxpc2hlZCBvciBpZgorICAqIGEgZXJyb3Igb2NjdXJzLCB0aGUgY2Fs bGJhY2sgZnVuY3Rpb24gaXMgY2FsbGVkLgorLSAqIAorKyAqCisgICogQHBhcmFtIGxpc3RlbmVy CistICogICAgICAgIFRoZSBzZXJ2ZXIgb2JqZWN0IHRoYXQgcmVjZWl2ZWQgdGhlIGNvbm5lY3Rp b24gcmVxdWVzdC4gCisrICogICAgICAgIFRoZSBzZXJ2ZXIgb2JqZWN0IHRoYXQgcmVjZWl2ZWQg dGhlIGNvbm5lY3Rpb24gcmVxdWVzdC4KKyAgKiBAcGFyYW0gaGFuZGxlCisgICogICAgICAgIFRo ZSBjb250cm9sIGNvbm5lY3Rpb24gb2JqZWN0LiAgVGhpcyBzdHJ1Y3R1cmUgd2lsbCBiZSBwb3B1 bGF0ZWQKKyAgKiAgICAgICAgYW5kIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgd2hlbiB0aGUgY2xp ZW50IGlzIGF1dGhvcml6ZWQuICBUaGlzCitAQCAtMTA1MCwxMiArMTA1MCwxMiBAQCBnbG9idXNf ZnRwX2NvbnRyb2xfc2VydmVyX2FjY2VwdCgKKyAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9D T05UUk9MX01PRFVMRSwKKyAgICAgICAgICAgICAgICAgR0xPQlVTX05VTEwsCisgICAgICAgICAg ICAgICAgIF9GQ1NMKCJnbG9idXNfZnRwX2NvbnRyb2xfc2VydmVyX2FjY2VwdDogbGlzdGVuZXIg YXJndW1lbnQgaXMgTlVMTCIpKQorLSAgICAgICAgICAgICk7IAorKyAgICAgICAgICAgICk7Cisg ICAgIH0KKyAKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJihsaXN0ZW5lci0+bXV0ZXgpKTsKKyAg ICAgeworLSAgICAgICAgaWYobGlzdGVuZXItPnN0YXRlICE9IAorKyAgICAgICAgaWYobGlzdGVu ZXItPnN0YXRlICE9CisgICAgICAgICAgICBHTE9CVVNfRlRQX0NPTlRST0xfU0VSVkVSX0xJU1RF TklORykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCYobGlz dGVuZXItPm11dGV4KSk7CitAQCAtMTEwMSw3ICsxMTAxLDcgQEAgZ2xvYnVzX2Z0cF9jb250cm9s X3NlcnZlcl9hY2NlcHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds b2J1c19sX2Z0cF9jb250cm9sX2FjY2VwdF9jYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHZvaWQgKikgaGFuZGxlKTsKKyAgICAgZ2xvYnVzX2lvX3RjcGF0dHJfZGVz dHJveSgmbGlzdGVuZXJfYXR0cik7CistICAgIAorKworICAgICBpZihyYyAhPSBHTE9CVVNfU1VD Q0VTUykKKyAgICAgeworICAgICAgICAgZ2xvYnVzX211dGV4X2xvY2soJihoYW5kbGUtPmNjX2hh bmRsZS5tdXRleCkpOworQEAgLTExMzAsOCArMTEzMCw4IEBAIGdsb2J1c19mdHBfY29udHJvbF9z ZXJ2ZXJfYWNjZXB0KAorICNpZmRlZiBHTE9CVVNfSU5URVJOQUxfRE9DCisgCisgLyoqCistICog SW50ZXJuYWwgY2FsbGJhY2sgZm9yIHRoZSBnbG9idXNfaW9fcmVnaXN0ZXJfYWNjZXB0IGZ1bmN0 aW9uLiAgICAKKy0gKiAKKysgKiBJbnRlcm5hbCBjYWxsYmFjayBmb3IgdGhlIGdsb2J1c19pb19y ZWdpc3Rlcl9hY2NlcHQgZnVuY3Rpb24uCisrICoKKyAgKiBUaGlzIGlzIGFuIGludGVybmFsIGNh bGxiYWNrIHVzZWQgYXMgcGFydCBvZiB0aGUKKyAgKiBnbG9idXNfZnRwX2NvbnRyb2xfYWNjZXB0 IGZ1bmN0aW9uLiBJdCBjaGVja3MgdGhlIHJlc3VsdCBvZgorICAqIHRoZSBhY2NlcHQsIGFuZCBz ZW5kcyBhIGluaXRpYWwgcmVzcG9uc2UgdG8gdGhlIHVzZXIuCitAQCAtMTE0MywyMCArMTE0Mywy MCBAQCBnbG9idXNfZnRwX2NvbnRyb2xfc2VydmVyX2FjY2VwdCgKKyAgKiAgICAgICAgVGhlIGds b2J1c19pbyBoYW5kbGUgZm9yIHRoZSBjb25uZWN0aW9uLiBJbiBwcmFjdGljZSB0aGlzCisgICog ICAgICAgIHJlcHJlc2VudHMgdGhlIHNvY2tldCBmZCBmb3IgdGhlIGNvbm5lY3Rpb24uCisgICog QHBhcmFtIHJlc3VsdAorLSAqICAgICAgICBUaGUgcmVzdWx0IG9mIHRoZSBhY2NlcHQgb3BlcmF0 aW9uIAorKyAqICAgICAgICBUaGUgcmVzdWx0IG9mIHRoZSBhY2NlcHQgb3BlcmF0aW9uCisgICoK KyAgKiBAcmV0dXJuIHZvaWQKKyAgKgorICAqIEBub3RlIElmIGEgZXJyb3IgaXMgZGV0ZWN0ZWQg aW4gdGhpcyBmdW5jdGlvbiB0aGUgdXNlciBjYWxsYmFjayBpcworICAqICAgICAgIGNhbGxlZCB3 aXRoIGFuIGFwcHJvcHJpYXRlIGVycm9yIG9iamVjdCBvciBmdHAgcmVzcG9uc2UgYW5kCistICog ICAgICAgdGhlIGZ1bmN0aW9uIHJldHVybnMuIAorKyAqICAgICAgIHRoZSBmdW5jdGlvbiByZXR1 cm5zLgorICAqLworIAorICNlbmRpZgorIAorLXN0YXRpYyB2b2lkIAorK3N0YXRpYyB2b2lkCisg Z2xvYnVzX2xfZnRwX2NvbnRyb2xfYWNjZXB0X2NiKAorLSAgICB2b2lkICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhcmcsIAorKyAgICB2b2lkICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhcmcsCisgICAgIGdsb2J1c19pb19oYW5kbGVfdCAqICAgICAg ICAgICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzdWx0KQorIHsKK0BAIC0xMTY1LDcgKzExNjUsNyBAQCBnbG9idXNf bF9mdHBfY29udHJvbF9hY2NlcHRfY2IoCisgICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVf dCAqICAgICAgICAgICAgIGNfaGFuZGxlOworICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjYWxsX2Nsb3NlX2NiID0gR0xPQlVTX0ZBTFNFOworIAorLSAgICAK KysKKyAgICAgY19oYW5kbGU9KGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqKSBhcmc7Cisg ICAgIGNjX2hhbmRsZT0mKGNfaGFuZGxlLT5jY19oYW5kbGUpOworIAorQEAgLTExOTgsNyArMTE5 OCw3IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2FjY2VwdF9jYigKKyAgICAgZ2xvYnVzX211dGV4 X2xvY2soJihjY19oYW5kbGUtPm11dGV4KSk7CisgICAgIHsKKyAgICAgICAgIGNjX2hhbmRsZS0+ Y2JfY291bnQtLTsKKy0gICAgICAgIAorKworICAgICAgICAgaWYoIWNjX2hhbmRsZS0+Y2JfY291 bnQgJiYKKyAgICAgICAgICAgIGNjX2hhbmRsZS0+Y2Nfc3RhdGUgPT0gR0xPQlVTX0ZUUF9DT05U Uk9MX0NMT1NJTkcpCisgICAgICAgICB7CitAQCAtMTIyNCw3ICsxMjI0LDcgQEAgZ2xvYnVzX2xf ZnRwX2NvbnRyb2xfYWNjZXB0X2NiKAorICAqIGdsb2J1c19mdHBfY29udHJvbF9zZXJ2ZXJfYWNj ZXB0IGNhbGwpLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQKKyAgKiB0byBhdXRoZW50 aWNhdGUgdGhlIGNsaWVudC4gVGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uIG1heSBzcGVjaWZ5 CisgICogY2VydGFpbiBhdXRoZW50aWNhdGlvbiByZXF1aXJlbWVudHMgdXNpbmcgdGhlIGF1dGhf cmVxdWlyZW1lbnRzIHBhcmFtZXRlci4KKy0gKiAKKysgKgorICAqIEBwYXJhbSBoYW5kbGUKKyAg KiAgICAgICAgIFRoZSBjb250cm9sIGNvbm5lY3Rpb24gb2JqZWN0LiAgVGhpcyBzdHJ1Y3R1cmUg d2lsbCBiZSBwb3B1bGF0ZWQKKyAgKiAgICAgICAgIGFuZCBwYXNzZWQgdG8gdGhlIGNhbGxiYWNr IHdoZW4gdGhlIGNsaWVudCBpcyBhdXRob3JpemVkLiAgVGhpcworQEAgLTEyNDcsNyArMTI0Nyw3 IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2FjY2VwdF9jYigKKyAgKiAgICAgICBoYXZlIGJlZW4g aW5pdGlhbGl6ZWQgcHJpb3IgdG8gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorICAqLworIGdsb2J1 c19yZXN1bHRfdAorLWdsb2J1c19mdHBfY29udHJvbF9zZXJ2ZXJfYXV0aGVudGljYXRlKCAKKytn bG9idXNfZnRwX2NvbnRyb2xfc2VydmVyX2F1dGhlbnRpY2F0ZSgKKyAgICAgZ2xvYnVzX2Z0cF9j b250cm9sX2hhbmRsZV90ICogICAgICAgICAgICAgICBoYW5kbGUsCisgICAgIGdsb2J1c19mdHBf Y29udHJvbF9hdXRoX3JlcXVpcmVtZW50c190ICAgICAgYXV0aF9yZXF1aXJlbWVudHMsCisgICAg IGdsb2J1c19mdHBfY29udHJvbF9hdXRoX2NhbGxiYWNrX3QgICAgICAgICAgY2FsbGJhY2ssCitA QCAtMTM4NiwxMSArMTM4NiwxMSBAQCBnbG9idXNfZnRwX2NvbnRyb2xfc2VydmVyX2F1dGhlbnRp Y2F0ZSgKKyAgICAgICAgIH0KKyAgICAgICAgIGNjX2hhbmRsZS0+YXV0aF9pbmZvLmF1dGhfZ3Nz YXBpX3N1YmplY3QKKyAgICAgICAgICAgICA9IG1hbGxvYyhzdWJqZWN0X2J1Zi5sZW5ndGggKyAx KTsKKy0gICAgCisrCisgICAgICAgICBpZiAoY2NfaGFuZGxlLT5hdXRoX2luZm8uYXV0aF9nc3Nh cGlfc3ViamVjdCA9PSBOVUxMKQorICAgICAgICAgeworICAgICAgICAgICAgIGdzc19yZWxlYXNl X2J1ZmZlcigmbWluX3N0YXQsICZzdWJqZWN0X2J1Zik7CistICAgICAgICAgICAKKysKKyAgICAg ICAgICAgICBlcnJvciA9IGdsb2J1c19lcnJvcl9jb25zdHJ1Y3Rfc3RyaW5nKAorICAgICAgICAg ICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX01PRFVMRSwKKyAgICAgICAgICAgICAgICAg ICAgIEdMT0JVU19OVUxMLAorQEAgLTE0MTAsNyArMTQxMCw3IEBAIGdsb2J1c19mdHBfY29udHJv bF9zZXJ2ZXJfYXV0aGVudGljYXRlKAorICAgICByYz1nbG9idXNfaW9fcmVnaXN0ZXJfcmVhZCgm Y2NfaGFuZGxlLT5pb19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNj X2hhbmRsZS0+cmVhZF9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM T0JVU19GVFBfQ09OVFJPTF9SRUFEX0JVRkZFUl9TSVpFLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAxLCAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFk X2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUpOworICAgICBpZihy YyAhPSBHTE9CVVNfU1VDQ0VTUykKK0BAIC0xNDE4LDExICsxNDE4LDExIEBAIGdsb2J1c19mdHBf Y29udHJvbF9zZXJ2ZXJfYXV0aGVudGljYXRlKAorICAgICAgICAgZXJyb3I9Z2xvYnVzX2Vycm9y X2dldChyYyk7CisgICAgICAgICBnb3RvIGVycm9yX3N0ZDsKKyAgICAgfQorLSAKKysKKyAgICAg cmV0dXJuIEdMT0JVU19TVUNDRVNTOworLSAgICAKKysKKyBlcnJvcl9zdGQ6CistICAgIAorKwor ICAgICByYzIgPSBnbG9idXNfaV9mdHBfY29udHJvbF9hdXRoX2luZm9fZGVzdHJveSgKKyAgICAg ICAgICYoY2NfaGFuZGxlLT5hdXRoX2luZm8pKTsKKyAgICAgZ2xvYnVzX2Fzc2VydChyYzIgPT0g R0xPQlVTX1NVQ0NFU1MpOworQEAgLTE0MzAsNyArMTQzMCw3IEBAIGVycm9yX3N0ZDoKKyAgICAg Z2xvYnVzX211dGV4X2xvY2soJihjY19oYW5kbGUtPm11dGV4KSk7CisgICAgIHsKKyAgICAgICAg IGNjX2hhbmRsZS0+Y2JfY291bnQtLTsKKy0gICAgICAgIAorKworICAgICAgICAgaWYoIWNjX2hh bmRsZS0+Y2JfY291bnQgJiYKKyAgICAgICAgICAgIGNjX2hhbmRsZS0+Y2Nfc3RhdGUgPT0gR0xP QlVTX0ZUUF9DT05UUk9MX0NMT1NJTkcpCisgICAgICAgICB7CitAQCAtMTQ0MywxNSArMTQ0Mywx NSBAQCBlcnJvcl9zdGQ6CisgICAgIHsKKyAgICAgICAgIGdsb2J1c19pX2Z0cF9jb250cm9sX2Nh bGxfY2xvc2VfY2IoaGFuZGxlKTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJuIHJjOwor IH0KKyAKKyAjaWZkZWYgR0xPQlVTX0lOVEVSTkFMX0RPQworIAorIC8qKgorLSAqIEludGVybmFs IGNhbGxiYWNrIGZvciB0aGUgZ2xvYnVzX2lvX3JlZ2lzdGVyX3dyaXRlIGZ1bmN0aW9uLiAgICAK Ky0gKiAKKysgKiBJbnRlcm5hbCBjYWxsYmFjayBmb3IgdGhlIGdsb2J1c19pb19yZWdpc3Rlcl93 cml0ZSBmdW5jdGlvbi4KKysgKgorICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgY2FsbGJhY2sgdXNl ZCBhcyBwYXJ0IG9mIHRoZQorICAqIGdsb2J1c19mdHBfY29udHJvbF9hdXRoZW50aWNhdGUgZnVu Y3Rpb24uIEl0IGNoZWNrcyB0aGUgcmVzdWx0IG9mCisgICogdGhlIHdyaXRlICh3aGljaCB3YXMg dXNlZCB0byBzZW5kIGEgcmVzcG9uc2UgdG8gdGhlIGNsaWVudCksIGFuZAorQEAgLTE0NjYsMjMg KzE0NjYsMjMgQEAgZXJyb3Jfc3RkOgorICAqICAgICAgICBUaGUgZ2xvYnVzX2lvIGhhbmRsZSBm b3IgdGhlIGNvbm5lY3Rpb24uIEluIHByYWN0aWNlIHRoaXMKKyAgKiAgICAgICAgcmVwcmVzZW50 cyB0aGUgc29ja2V0IGZkIGZvciB0aGUgY29ubmVjdGlvbi4KKyAgKiBAcGFyYW0gcmVzdWx0Cist ICogICAgICAgIFRoZSByZXN1bHQgb2YgdGhlIHdyaXRlIG9wZXJhdGlvbiAKKysgKiAgICAgICAg VGhlIHJlc3VsdCBvZiB0aGUgd3JpdGUgb3BlcmF0aW9uCisgICoKKyAgKiBAcmV0dXJuIHZvaWQK KyAgKgorICAqIEBub3RlIElmIGEgZXJyb3IgaXMgZGV0ZWN0ZWQgaW4gdGhpcyBmdW5jdGlvbiB0 aGUgdXNlciBjYWxsYmFjayBpcworICAqICAgICAgIGNhbGxlZCB3aXRoIGFuIGFwcHJvcHJpYXRl IGVycm9yIG9iamVjdCBvciBmdHAgcmVzcG9uc2UgYW5kCistICogICAgICAgdGhlIGZ1bmN0aW9u IHJldHVybnMuIAorKyAqICAgICAgIHRoZSBmdW5jdGlvbiByZXR1cm5zLgorICAqLworIAorICNl bmRpZgorIAorLXN0YXRpYyB2b2lkIAorK3N0YXRpYyB2b2lkCisgZ2xvYnVzX2xfZnRwX2NvbnRy b2xfYXV0aF93cml0ZV9jYigKKy0gICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXJnLCAKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXJnLAorICAgICBnbG9idXNfaW9faGFuZGxlX3QgKiAgICAgICAgICAgICAgICAgICAg ICBoYW5kbGUsCisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc3VsdCwKKy0gICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAg YnVmLCAKKysgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVm LAorICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYnl0ZXMp CisgeworICAgICBnbG9idXNfZnRwX2NjX2hhbmRsZV90ICogICAgICAgICAgICAgICAgICBjY19o YW5kbGU7CitAQCAtMTUwNCw3ICsxNTA0LDcgQEAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF93 cml0ZV9jYigKKyAgICAgICAgIGdvdG8gZXJyb3JfYXV0aF9kZXN0cm95OworICAgICB9CisgCist ICAgIGlmKGNjX2hhbmRsZS0+YXV0aF9yZXF1aXJlbWVudHMgJiAKKysgICAgaWYoY2NfaGFuZGxl LT5hdXRoX3JlcXVpcmVtZW50cyAmCisgICAgICAgIEdMT0JVU19GVFBfQ09OVFJPTF9BVVRIX1JF UV9OT05FKQorICAgICB7CisgICAgICAgICBjYWxsYmFjaz1jY19oYW5kbGUtPmF1dGhfY2I7CitA QCAtMTUyNywxNyArMTUyNywxNyBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3dyaXRlX2Ni KAorICAgICAgICAgICAgIGNjX2hhbmRsZS0+Y2JfY291bnQtLTsKKyAKKyAgICAgICAgICAgICBp ZighY2NfaGFuZGxlLT5jYl9jb3VudCAmJgorLSAgICAgICAgICAgICAgIGNjX2hhbmRsZS0+Y2Nf c3RhdGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX0NMT1NJTkcpIAorLSAgICAgICAgICAgIHsgCist ICAgICAgICAgICAgICAgIGNhbGxfY2xvc2VfY2IgPSBHTE9CVVNfVFJVRTsgCistICAgICAgICAg ICAgfSAKKysgICAgICAgICAgICAgICBjY19oYW5kbGUtPmNjX3N0YXRlID09IEdMT0JVU19GVFBf Q09OVFJPTF9DTE9TSU5HKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgY2FsbF9j bG9zZV9jYiA9IEdMT0JVU19UUlVFOworKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAg ICAgIGdsb2J1c19tdXRleF91bmxvY2soJihjY19oYW5kbGUtPm11dGV4KSk7CisgCistICAgICAg ICBpZihjYWxsX2Nsb3NlX2NiID09IEdMT0JVU19UUlVFKSAKKy0gICAgICAgIHsgCistICAgICAg ICAgICAgZ2xvYnVzX2lfZnRwX2NvbnRyb2xfY2FsbF9jbG9zZV9jYihjX2hhbmRsZSk7IAorLSAg ICAgICAgfSAKKysgICAgICAgIGlmKGNhbGxfY2xvc2VfY2IgPT0gR0xPQlVTX1RSVUUpCisrICAg ICAgICB7CisrICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NvbnRyb2xfY2FsbF9jbG9zZV9jYihj X2hhbmRsZSk7CisrICAgICAgICB9CisgCisgICAgICAgICByZXR1cm47CisgICAgIH0KK0BAIC0x NTU4LDcgKzE1NTgsNyBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3dyaXRlX2NiKAorICAg ICAgICAgZXJyb3I9Z2xvYnVzX2Vycm9yX2dldChyYyk7CisgICAgICAgICBnb3RvIGVycm9yX2F1 dGhfZGVzdHJveTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJuOworIAorIGVycm9yX2F1 dGhfZGVzdHJveToKK0BAIC0xNTc4LDE3ICsxNTc4LDE3IEBAIGVycm9yX2F1dGhfZGVzdHJveToK KyAgICAgICAgIGNjX2hhbmRsZS0+Y2JfY291bnQtLTsKKyAKKyAgICAgICAgIGlmKCFjY19oYW5k bGUtPmNiX2NvdW50ICYmCistICAgICAgICAgICBjY19oYW5kbGUtPmNjX3N0YXRlID09IEdMT0JV U19GVFBfQ09OVFJPTF9DTE9TSU5HKSAKKy0gICAgICAgIHsgCistICAgICAgICAgICAgY2FsbF9j bG9zZV9jYiA9IEdMT0JVU19UUlVFOyAKKy0gICAgICAgIH0gCisrICAgICAgICAgICBjY19oYW5k bGUtPmNjX3N0YXRlID09IEdMT0JVU19GVFBfQ09OVFJPTF9DTE9TSU5HKQorKyAgICAgICAgewor KyAgICAgICAgICAgIGNhbGxfY2xvc2VfY2IgPSBHTE9CVVNfVFJVRTsKKysgICAgICAgIH0KKyAg ICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCYoY2NfaGFuZGxlLT5tdXRleCkpOworLSAg ICAKKy0gICAgaWYoY2FsbF9jbG9zZV9jYiA9PSBHTE9CVVNfVFJVRSkgCistICAgIHsgCistICAg ICAgICBnbG9idXNfaV9mdHBfY29udHJvbF9jYWxsX2Nsb3NlX2NiKGNfaGFuZGxlKTsgCistICAg IH0gCisrCisrICAgIGlmKGNhbGxfY2xvc2VfY2IgPT0gR0xPQlVTX1RSVUUpCisrICAgIHsKKysg ICAgICAgIGdsb2J1c19pX2Z0cF9jb250cm9sX2NhbGxfY2xvc2VfY2IoY19oYW5kbGUpOworKyAg ICB9CisgCisgICAgIHJldHVybjsKKyB9CitAQCAtMTU5Niw4ICsxNTk2LDggQEAgZXJyb3JfYXV0 aF9kZXN0cm95OgorICNpZmRlZiBHTE9CVVNfSU5URVJOQUxfRE9DCisgCisgLyoqCistICogSW50 ZXJuYWwgY2FsbGJhY2sgZm9yIHRoZSBnbG9idXNfaW9fcmVnaXN0ZXJfcmVhZCBmdW5jdGlvbi4g ICAgCistICogCisrICogSW50ZXJuYWwgY2FsbGJhY2sgZm9yIHRoZSBnbG9idXNfaW9fcmVnaXN0 ZXJfcmVhZCBmdW5jdGlvbi4KKysgKgorICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgY2FsbGJhY2sg dXNlZCBhcyBwYXJ0IG9mIHRoZQorICAqIGdsb2J1c19mdHBfY29udHJvbF9hdXRoZW50aWNhdGUg ZnVuY3Rpb24uIEl0IGNoZWNrcyB0aGUgcmVzdWx0IG9mCisgICogdGhlIHJlYWQgKHdoaWNoIHdh cyB1c2VkIHRvIHJlYWQgY29tbWFuZHMgZnJvbSB0aGUgY2xpZW50KSwgYW5kCitAQCAtMTYwNyw3 ICsxNjA3LDcgQEAgZXJyb3JfYXV0aF9kZXN0cm95OgorICAqIGlzIG5vdCBjb21wbGV0ZSBhIHJl cGx5IHRvIHRoZSByZWNlaXZlZCBjb21tYW5kIGlzIHNlbnQgdG8gdGhlbgorICAqIGNsaWVudCB1 c2luZyB0aGUgYXV0aF93cml0ZSBjYWxsYmFja3Mgd2hpY2ggd2lsbCBjb250aW51ZSB0byByZWFk CisgICogY29tbWFuZHMuIElmIG5vIGZ1bGwgY29tbWFuZCB3YXMgcmVjZWl2ZWQgYSBuZXcgcmVn aXN0ZXJfcmVhZCBpcworLSAqIGNhbGxlZC4gCisrICogY2FsbGVkLgorICAqCisgICogQHBhcmFt IGFyZworICAqICAgICAgICBUaGUgY2FsbGJhY2sgYXJndW1lbnQsIHdoaWNoIGluIHRoaXMgY2Fz ZSBpcyB0aGUgY29udHJvbAorQEAgLTE2MTYsMjMgKzE2MTYsMjMgQEAgZXJyb3JfYXV0aF9kZXN0 cm95OgorICAqICAgICAgICBUaGUgZ2xvYnVzX2lvIGhhbmRsZSBmb3IgdGhlIGNvbm5lY3Rpb24u IEluIHByYWN0aWNlIHRoaXMKKyAgKiAgICAgICAgcmVwcmVzZW50cyB0aGUgc29ja2V0IGZkIGZv ciB0aGUgY29ubmVjdGlvbi4KKyAgKiBAcGFyYW0gcmVzdWx0CistICogICAgICAgIFRoZSByZXN1 bHQgb2YgdGhlIGFjY2VwdCBvcGVyYXRpb24gCisrICogICAgICAgIFRoZSByZXN1bHQgb2YgdGhl IGFjY2VwdCBvcGVyYXRpb24KKyAgKgorICAqIEByZXR1cm4gdm9pZAorICAqCisgICogQG5vdGUg SWYgYSBlcnJvciBpcyBkZXRlY3RlZCBpbiB0aGlzIGZ1bmN0aW9uIHRoZSB1c2VyIGNhbGxiYWNr IGlzCisgICogICAgICAgY2FsbGVkIHdpdGggYW4gYXBwcm9wcmlhdGUgZXJyb3Igb2JqZWN0IG9y IGZ0cCByZXNwb25zZSBhbmQKKy0gKiAgICAgICB0aGUgZnVuY3Rpb24gcmV0dXJucy4gCisrICog ICAgICAgdGhlIGZ1bmN0aW9uIHJldHVybnMuCisgICovCisgCisgI2VuZGlmCisgCistc3RhdGlj IHZvaWQgCisrc3RhdGljIHZvaWQKKyBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRfY2Io CistICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgCisr ICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywKKyAgICAg Z2xvYnVzX2lvX2hhbmRsZV90ICogICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLAorICAgICBn bG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsCistICAgIGds b2J1c19ieXRlX3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgCisrICAgIGdsb2J1 c19ieXRlX3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwKKyAgICAgZ2xvYnVzX3Np emVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJ5dGVzKQorIHsKKyAgICAgZ2xvYnVz X2Z0cF9jY19oYW5kbGVfdCAqICAgICAgICAgICAgICAgICAgY2NfaGFuZGxlOworQEAgLTE2Njcs NyArMTY2Nyw3IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYigKKyAgICAgICAg IGVycm9yPWdsb2J1c19lcnJvcl9nZXQocmVzdWx0KTsKKyAgICAgICAgIGdvdG8gZXJyb3JfYXV0 aF9kZXN0cm95OworICAgICB9CistICAgCisrCisgICAgIGNjX2hhbmRsZS0+Ynl0ZXNfcmVhZCAr PSBuYnl0ZXM7CisgCisgICAgIGZvcihpID0gMTtpPGNjX2hhbmRsZS0+Ynl0ZXNfcmVhZDtpKysp CitAQCAtMTY4NywxOSArMTY4NywxOSBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRf Y2IoCisgICAgICAgICAgICAgICAgIGVycm9yPWdsb2J1c19lcnJvcl9nZXQocmMpOworICAgICAg ICAgICAgICAgICBnb3RvIGVycm9yX2F1dGhfZGVzdHJveTsKKyAgICAgICAgICAgICB9CistICAg ICAgICAgICAgCisrCisgICAgICAgICAgICAgZm9yKGo9aSsxO2o8Y2NfaGFuZGxlLT5ieXRlc19y ZWFkO2orKykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGNjX2hhbmRsZS0+cmVh ZF9idWZmZXJbai0oaSsxKV09CisgICAgICAgICAgICAgICAgICAgICBjY19oYW5kbGUtPnJlYWRf YnVmZmVyW2pdOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAg ICBjY19oYW5kbGUtPmJ5dGVzX3JlYWQgLT0gKGkrMSk7CistICAgICAgICAgICAgCisrCisgICAg ICAgICAgICAgc3dpdGNoKGNvbW1hbmQuY29kZSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xfQ09NTUFORF9BVVRIOgorLSAgICAgICAgICAgICAg ICBpZihjb21tYW5kLmF1dGgudHlwZSAhPSAKKysgICAgICAgICAgICAgICAgaWYoY29tbWFuZC5h dXRoLnR5cGUgIT0KKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX0FVVEhf R1NTQVBJKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBlcnJvcj1n bG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmluZygKK0BAIC0xNzA4LDggKzE3MDgsOCBAQCBnbG9i dXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRfY2IoCisgICAgICAgICAgICAgICAgICAgICAgICAg X0ZDU0woImdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYjogQXV0aGVudGljYXRpb24g bWVjaGFuaXNtIG5vdCBzdXBwb3J0ZWQiKSk7CisgICAgICAgICAgICAgICAgICAgICBnb3RvIGVy cm9yX2NtZF9kZXN0cm95OworICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIAor LSAgICAgICAgICAgICAgICBpZiggIShjY19oYW5kbGUtPmF1dGhfcmVxdWlyZW1lbnRzICYgCisr CisrICAgICAgICAgICAgICAgIGlmKCAhKGNjX2hhbmRsZS0+YXV0aF9yZXF1aXJlbWVudHMgJgor ICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NPTlRST0xfQVVUSF9SRVFfR1NTQVBJ KSkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgZXJyb3I9Z2xvYnVz X2Vycm9yX2NvbnN0cnVjdF9zdHJpbmcoCitAQCAtMTcxOCw4ICsxNzE4LDggQEAgZ2xvYnVzX2xf ZnRwX2NvbnRyb2xfYXV0aF9yZWFkX2NiKAorICAgICAgICAgICAgICAgICAgICAgICAgIF9GQ1NM KCJnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRfY2I6IEdTU0FQSSBhdXRoZW50aWNhdGlv biBub3QgYWxsb3dlZCIpKTsKKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY21kX2Rl c3Ryb3k7CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgCistICAgICAgICAg ICAgICAgIGlmKGNjX2hhbmRsZS0+YXV0aF9pbmZvLnByZXZfY21kICE9IAorKworKyAgICAgICAg ICAgICAgICBpZihjY19oYW5kbGUtPmF1dGhfaW5mby5wcmV2X2NtZCAhPQorICAgICAgICAgICAg ICAgICAgICBHTE9CVVNfRlRQX0NPTlRST0xfQ09NTUFORF9VTktOT1dOKQorICAgICAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgICAgICBlcnJvcj1nbG9idXNfZXJyb3JfY29uc3RydWN0 X3N0cmluZygKK0BAIC0xNzI4LDExICsxNzI4LDExIEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2F1 dGhfcmVhZF9jYigKKyAgICAgICAgICAgICAgICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2xfZnRw X2NvbnRyb2xfYXV0aF9yZWFkX2NiOiBBVVRIIG11c3QgYmUgdGhlIGZpcnN0IGNvbW1hbmQgaW4g dGhlIGF1dGhlbnRpY2F0aW9uIHNlcXVlbmNlIikpOworICAgICAgICAgICAgICAgICAgICAgZ290 byBlcnJvcl9jbWRfZGVzdHJveTsKKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAg ICAKKysKKyAgICAgICAgICAgICAgICAgbWFqX3N0YXQ9Z2xvYnVzX2dzc19hc3Npc3RfYWNxdWly ZV9jcmVkKAorICAgICAgICAgICAgICAgICAgICAgJm1pbl9zdGF0LAorICAgICAgICAgICAgICAg ICAgICAgR1NTX0NfQUNDRVBULAorLSAgICAgICAgICAgICAgICAgICAgJihjY19oYW5kbGUtPmF1 dGhfaW5mby5jcmVkZW50aWFsX2hhbmRsZSkpOyAKKysgICAgICAgICAgICAgICAgICAgICYoY2Nf aGFuZGxlLT5hdXRoX2luZm8uY3JlZGVudGlhbF9oYW5kbGUpKTsKKyAKKyAgICAgICAgICAgICAg ICAgaWYobWFqX3N0YXQgIT0gR1NTX1NfQ09NUExFVEUpCisgICAgICAgICAgICAgICAgIHsKK0BA IC0xNzQwLDcgKzE3NDAsNyBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRfY2IoCisg ICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX01PRFVMRSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICBfRkNTTCgiZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFkX2NiOiBnbG9idXNfZ3NzX2Fz c2lzdF9hY3F1aXJlX2NyZWQgZmFpbGVkIikpOworLSAgICAgICAgICAgICAgICAgICAgZ290byBl cnJvcl9jbWRfZGVzdHJveTsgIAorKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbWRf ZGVzdHJveTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgICAgIHsKK0BAIC0xNzQ4LDE3ICsxNzQ4LDE3IEBAIGdsb2J1c19sX2Z0cF9jb250 cm9sX2F1dGhfcmVhZF9jYigKKyAgICAgICAgICAgICAgICAgfQorIAorICAgICAgICAgICAgICAg ICBjY19oYW5kbGUtPmF1dGhfaW5mby5wcmV2X2NtZD1jb21tYW5kLmNvZGU7CistICAgICAgICAg ICAgICAgIAorKworICAgICAgICAgICAgICAgICByZXBseT1nbG9idXNfbGliY19zdHJkdXAoCisg ICAgICAgICAgICAgICAgICAgICBnbG9idXNfaV9mdHBfc2VydmVyXzMzNF9yZXBseSk7CistICAg ICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBpZihyZXBseSA9PSBHTE9CVVNfTlVM TCkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgZXJyb3I9Z2xvYnVz X2Vycm9yX2NvbnN0cnVjdF9zdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVT X0ZUUF9DT05UUk9MX01PRFVMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVM TCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2xfZnRwX2NvbnRyb2xf YXV0aF9yZWFkX2NiOiBzdHJkdXAgZmFpbGVkIikpOworLSAgICAgICAgICAgICAgICAgICAgZ290 byBlcnJvcl9jbWRfZGVzdHJveTsgICAKKysgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3Jf Y21kX2Rlc3Ryb3k7CisgICAgICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgICAgICAgcmM9 Z2xvYnVzX2lvX3JlZ2lzdGVyX3dyaXRlKAorQEAgLTE3NjcsMjAgKzE3NjcsMjAgQEAgZ2xvYnVz X2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFkX2NiKAorICAgICAgICAgICAgICAgICAgICAgKGdsb2J1 c19zaXplX3QpIHN0cmxlbihyZXBseSksCisgICAgICAgICAgICAgICAgICAgICBnbG9idXNfbF9m dHBfY29udHJvbF9hdXRoX3dyaXRlX2NiLAorICAgICAgICAgICAgICAgICAgICAgYXJnKTsKKy0g ICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIGlmKHJjICE9IEdMT0JVU19TVUND RVNTKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBnbG9idXNfbGli Y19mcmVlKHJlcGx5KTsKKyAgICAgICAgICAgICAgICAgICAgIGVycm9yPWdsb2J1c19lcnJvcl9n ZXQocmMpOworICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbWRfZGVzdHJveTsKKyAg ICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAg YnJlYWs7CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGNhc2UgR0xPQlVTX0ZU UF9DT05UUk9MX0NPTU1BTkRfQURBVDoKKy0gICAgICAgICAgICAgICAgaWYoKGNjX2hhbmRsZS0+ YXV0aF9pbmZvLnByZXZfY21kICE9IAorKyAgICAgICAgICAgICAgICBpZigoY2NfaGFuZGxlLT5h dXRoX2luZm8ucHJldl9jbWQgIT0KKyAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ09O VFJPTF9DT01NQU5EX0FVVEgpICYmCistICAgICAgICAgICAgICAgICAgIChjY19oYW5kbGUtPmF1 dGhfaW5mby5wcmV2X2NtZCAhPSAKKysgICAgICAgICAgICAgICAgICAgKGNjX2hhbmRsZS0+YXV0 aF9pbmZvLnByZXZfY21kICE9CisgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NPTlRS T0xfQ09NTUFORF9BREFUKSkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg ICAgZXJyb3I9Z2xvYnVzX2Vycm9yX2NvbnN0cnVjdF9zdHJpbmcoCitAQCAtMTc5MSw4ICsxNzkx LDggQEAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFkX2NiKAorICAgICAgICAgICAgICAg ICB9CisgCisgICAgICAgICAgICAgICAgIGNjX2hhbmRsZS0+YXV0aF9pbmZvLnByZXZfY21kPWNv bW1hbmQuY29kZTsKKy0gICAgICAgICAgICAgICAgCistICAgICAgICAgICAgICAgIHJlY3ZfdG9r LnZhbHVlPSAKKysKKysgICAgICAgICAgICAgICAgcmVjdl90b2sudmFsdWU9CisgICAgICAgICAg ICAgICAgICAgICBnbG9idXNfbGliY19tYWxsb2MoCisgICAgICAgICAgICAgICAgICAgICAgICAg KHN0cmxlbihjb21tYW5kLmFkYXQuc3RyaW5nX2FyZykgKyAzKSAqIDYgLyA4KTsKKyAKK0BAIC0x ODA0LDEwICsxODA0LDEwIEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYigKKyAg ICAgICAgICAgICAgICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9y ZWFkX2NiOiBtYWxsb2MgZmFpbGVkIikpOworICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJv cl9jbWRfZGVzdHJveTsKKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAKKysK KyAgICAgICAgICAgICAgICAgcmM9Z2xvYnVzX2lfZnRwX2NvbnRyb2xfcmFkaXhfZGVjb2RlKAor LSAgICAgICAgICAgICAgICAgICAgKGdsb2J1c19ieXRlX3QgKikgY29tbWFuZC5hZGF0LnN0cmlu Z19hcmcsIAorLSAgICAgICAgICAgICAgICAgICAgcmVjdl90b2sudmFsdWUsIAorKyAgICAgICAg ICAgICAgICAgICAgKGdsb2J1c19ieXRlX3QgKikgY29tbWFuZC5hZGF0LnN0cmluZ19hcmcsCisr ICAgICAgICAgICAgICAgICAgICByZWN2X3Rvay52YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg ICZsZW5ndGgpOworICAgICAgICAgICAgICAgICBpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKyAg ICAgICAgICAgICAgICAgeworQEAgLTE4MTUsNyArMTgxNSw3IEBAIGdsb2J1c19sX2Z0cF9jb250 cm9sX2F1dGhfcmVhZF9jYigKKyAgICAgICAgICAgICAgICAgICAgIGVycm9yPWdsb2J1c19lcnJv cl9nZXQocmMpOworICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbWRfZGVzdHJveTsK KyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAg ICAgcmVjdl90b2subGVuZ3RoID0gbGVuZ3RoOworIAorICAgICAgICAgICAgICAgICBpZihjY19o YW5kbGUtPmF1dGhfaW5mby5lbmNyeXB0KQorQEAgLTE4MjcsOSArMTgyNyw5IEBAIGdsb2J1c19s X2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYigKKyAgICAgICAgICAgICAgICAgICAgIC8qIGNvbnRl eHRfaGFuZGxlICovCisgICAgICAgICAgICAgICAgICAgICAmKGNjX2hhbmRsZS0+YXV0aF9pbmZv LmF1dGhfZ3NzYXBpX2NvbnRleHQpLAorICAgICAgICAgICAgICAgICAgICAgLyogdmVyaWZpZXJf Y3JlZF9oYW5kbGUgKi8KKy0gICAgICAgICAgICAgICAgICAgIGNjX2hhbmRsZS0+YXV0aF9pbmZv LmNyZWRlbnRpYWxfaGFuZGxlLCAKKysgICAgICAgICAgICAgICAgICAgIGNjX2hhbmRsZS0+YXV0 aF9pbmZvLmNyZWRlbnRpYWxfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXRf dG9rZW4gKi8KKy0gICAgICAgICAgICAgICAgICAgICZyZWN2X3RvaywgCisrICAgICAgICAgICAg ICAgICAgICAmcmVjdl90b2ssCisgICAgICAgICAgICAgICAgICAgICAvKiBjaGFubmVsIGJpbmRp bmdzICovCisgICAgICAgICAgICAgICAgICAgICBHU1NfQ19OT19DSEFOTkVMX0JJTkRJTkdTLAor ICAgICAgICAgICAgICAgICAgICAgLyogc3JjX25hbWUgKi8KK0BAIC0xODQwLDE3ICsxODQwLDE3 IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYigKKyAgICAgICAgICAgICAgICAg ICAgICZzZW5kX3RvaywKKyAgICAgICAgICAgICAgICAgICAgICZyZXRfZmxhZ3MsCisgICAgICAg ICAgICAgICAgICAgICAvKiBpZ25vcmUgdGltZV9yZWMgKi8KKy0gICAgICAgICAgICAgICAgICAg IEdMT0JVU19OVUxMLCAKKysgICAgICAgICAgICAgICAgICAgIEdMT0JVU19OVUxMLAorICAgICAg ICAgICAgICAgICAgICAgJihjY19oYW5kbGUtPmF1dGhfaW5mby5kZWxlZ2F0ZWRfY3JlZGVudGlh bF9oYW5kbGUpCisgICAgICAgICAgICAgICAgICAgICApOworLSAgICAgICAgICAgICAgICAKKysK KyAgICAgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfZnJlZShyZWN2X3Rvay52YWx1ZSk7CisgCisg ICAgICAgICAgICAgICAgIHN3aXRjaChtYWpfc3RhdCkKKyAgICAgICAgICAgICAgICAgeworIAor ICAgICAgICAgICAgICAgICBjYXNlIEdTU19TX0NPTVBMRVRFOgorLSAgCisrCisgICAgICAgICAg ICAgICAgICAgICBjY19oYW5kbGUtPnVzZV9hdXRoID0gR0xPQlVTX1RSVUU7CisgICAgICAgICAg ICAgICAgICAgICBjY19oYW5kbGUtPmF1dGhfaW5mby5hdXRoZW50aWNhdGVkID0gR0xPQlVTX1RS VUU7CisgCitAQCAtMTg1OCw3ICsxODU4LDcgQEAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9y ZWFkX2NiKAorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg IGNjX2hhbmRsZS0+YXV0aF9pbmZvLmVuY3J5cHQgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgICAg ICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAg ICAgbWFqX3N0YXQgPSBnc3NfZGlzcGxheV9uYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAg ICZtaW5fc3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjY19oYW5kbGUtPmF1dGhfaW5m by50YXJnZXRfbmFtZSwKK0BAIC0xODY4LDExICsxODY4LDExIEBAIGdsb2J1c19sX2Z0cF9jb250 cm9sX2F1dGhfcmVhZF9jYigKKyAgICAgICAgICAgICAgICAgICAgIGNjX2hhbmRsZS0+YXV0aF9p bmZvLmF1dGhfZ3NzYXBpX3N1YmplY3QgPQorICAgICAgICAgICAgICAgICAgICAgICAgIG1hbGxv YyhzaXplb2YoY2hhcikqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzdWJqZWN0X2J1Zi5sZW5ndGggKyAxKSk7CistICAgICAgICAgICAgICAgICAgICAKKysK KyAgICAgICAgICAgICAgICAgICAgIGlmKGNjX2hhbmRsZS0+YXV0aF9pbmZvLmF1dGhfZ3NzYXBp X3N1YmplY3QgPT0gR0xPQlVTX05VTEwpCisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZtaW5fc3RhdCwgJnN1YmplY3Rf YnVmKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAg ICAgICBlcnJvcj1nbG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmluZygKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX01PRFVMRSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xPQlVTX05VTEwsCitAQCAtMTg4NiwzMSArMTg4NiwzMSBAQCBnbG9i dXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRfY2IoCisgCisgICAgICAgICAgICAgICAgICAgICBj Y19oYW5kbGUtPmF1dGhfaW5mby5hdXRoX2dzc2FwaV9zdWJqZWN0WworICAgICAgICAgICAgICAg ICAgICAgICAgIHN1YmplY3RfYnVmLmxlbmd0aF0gPSAnXDAnOworLSAgICAgICAgICAgICAgICAg ICAgCisrCisgICAgICAgICAgICAgICAgICAgICBnc3NfcmVsZWFzZV9idWZmZXIoJm1pbl9zdGF0 LCAmc3ViamVjdF9idWYpOworIAorLSAgICAgICAgICAgICAgICAgICAgaWYoY2NfaGFuZGxlLT5h dXRoX3JlcXVpcmVtZW50cyAmIAorKyAgICAgICAgICAgICAgICAgICAgaWYoY2NfaGFuZGxlLT5h dXRoX3JlcXVpcmVtZW50cyAmCisgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NP TlRST0xfQVVUSF9SRVFfVVNFUikKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICBpZihzZW5kX3Rvay5sZW5ndGggPT0gMCkKKy0gICAgICAgICAgICAgICAg ICAgICAgICB7IAorKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVwbHk9Z2xvYnVzX2xpYmNfc3RyZHVwKAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX3NlcnZlcl8yMzVfcmVwbHkpOworLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYo cmVwbHkgPT0gR0xPQlVTX05VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yPWdsb2J1c19lcnJvcl9jb25zdHJ1 Y3Rfc3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19G VFBfQ09OVFJPTF9NT0RVTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0xPQlVTX05VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0ZDU0wo Imdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYjogc3RyZHVwIGZhaWxlZCIpKTsKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY21kX2Rlc3Ryb3k7ICAg CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2NtZF9kZXN0cm95 OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5PSAoY2hhciAqKSBnbG9i dXNfbGliY19tYWxsb2MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX3Rv ay5sZW5ndGggKiA4IC8gNiArIDE2KTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgCisr CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlcGx5ID09IEdMT0JVU19OVUxMKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnc3NfcmVsZWFzZV9idWZmZXIoJm1pbl9zdGF0LCAmc2VuZF90b2spOworQEAgLTE5 MjAsMTYgKzE5MjAsMTYgQEAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFkX2NiKAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9GQ1NMKCJnbG9idXNfbF9mdHBfY29u dHJvbF9hdXRoX3JlYWRfY2I6IG1hbGxvYyBmYWlsZWQiKSk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIGVycm9yX2NtZF9kZXN0cm95OworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RyY3B5KHJlcGx5LCIyMzUgQURBVD0iKTsKKy0gICAgICAgICAgICAgICAg ICAgIAorKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg9c2VuZF90b2subGVu Z3RoOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmMgPSBnbG9idXNfaV9mdHBfY29udHJvbF9yYWRpeF9lbmNvZGUoc2VuZF90b2su dmFsdWUsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZ2xvYnVzX2J5dGVfdCAqKSAmKHJlcGx5WzldKSwgCisrCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gZ2xvYnVzX2lfZnRwX2NvbnRyb2xfcmFk aXhfZW5jb2RlKHNlbmRfdG9rLnZhbHVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2xvYnVzX2J5dGVfdCAqKSAm KHJlcGx5WzldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmbWluX3N0YXQsICZzZW5kX3Rvayk7CistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfZnJlZShyZXBseSk7 CitAQCAtMTk0MCwxNCArMTk0MCwxNCBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRf Y2IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5W2xlbmd0aCs5XT0nXHInOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseVtsZW5ndGgrMTBdPSdcbic7CisgICAg ICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgICAgIAorKworICAg ICAgICAgICAgICAgICAgICAgICAgIHJjPWdsb2J1c19pb19yZWdpc3Rlcl93cml0ZSgKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZ2xvYnVzX2J5dGVfdCAqKSByZXBseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGdsb2J1c19zaXplX3QpIHN0cmxlbihyZXBseSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfd3JpdGVfY2IsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFyZyk7CistICAgICAgICAgICAgICAgICAgICAgICAgCisrCisgICAg ICAgICAgICAgICAgICAgICAgICAgaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICAg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfbGli Y19mcmVlKHJlcGx5KTsKK0BAIC0xOTYzLDcgKzE5NjMsNyBAQCBnbG9idXNfbF9mdHBfY29udHJv bF9hdXRoX3JlYWRfY2IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjX2hhbmRsZS0+ YXV0aF9jYl9hcmc9R0xPQlVTX05VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJihjY19oYW5kbGUtPm11 dGV4KSk7CistICAgICAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAg ICAgICAgKGNhbGxiYWNrKShjYWxsYmFja19hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdMT0JVU19OVUxMLAorQEAgLTE5NzIsMjYgKzE5NzIsMjYgQEAgZ2xvYnVzX2xfZnRwX2NvbnRy b2xfYXV0aF9yZWFkX2NiKAorICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19tdXRleF9s b2NrKCYoY2NfaGFuZGxlLT5tdXRleCkpOworICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2NfaGFuZGxlLT5jYl9jb3VudC0tOworLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYoIWNjX2hhbmRsZS0+Y2JfY291bnQgJiYKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2NfaGFuZGxlLT5jY19zdGF0ZSA9PSAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xPQlVTX0ZUUF9DT05UUk9MX0NMT1NJTkcpIAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF9jbG9zZV9jYiA9 IEdMT0JVU19UUlVFOyAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2NfaGFuZGxlLT5jY19zdGF0ZSA9PQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NPTlRST0xfQ0xPU0lORykKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2FsbF9jbG9zZV9jYiA9IEdMT0JVU19UUlVFOworKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg ICAgIGdsb2J1c19tdXRleF91bmxvY2soJihjY19oYW5kbGUtPm11dGV4KSk7CistICAgICAgICAg ICAgICAgICAgICAgICAgCistICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2FsbF9jbG9zZV9j YiA9PSBHTE9CVVNfVFJVRSkgCistICAgICAgICAgICAgICAgICAgICAgICAgeyAKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NvbnRyb2xfY2FsbF9jbG9zZV9jYihj X2hhbmRsZSk7IAorLSAgICAgICAgICAgICAgICAgICAgICAgIH0gCisrCisrICAgICAgICAgICAg ICAgICAgICAgICAgaWYoY2FsbF9jbG9zZV9jYiA9PSBHTE9CVVNfVFJVRSkKKysgICAgICAgICAg ICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0 cF9jb250cm9sX2NhbGxfY2xvc2VfY2IoY19oYW5kbGUpOworKyAgICAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICAgICBjYXNlIEdTU19TX0NPTlRJTlVFX05FRURFRDoKKyAgICAgICAg ICAgICAgICAgICAgIHJlcGx5PSAoY2hhciAqKSBnbG9idXNfbGliY19tYWxsb2MoCisgICAgICAg ICAgICAgICAgICAgICAgICAgc2VuZF90b2subGVuZ3RoICogOCAvIDYgKyAxNik7CistICAgICAg ICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgIGlmKHJlcGx5ID09IEdMT0JV U19OVUxMKQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg IGdzc19yZWxlYXNlX2J1ZmZlcigmbWluX3N0YXQsICZzZW5kX3Rvayk7CitAQCAtMjAwMSwxMyAr MjAwMSwxMyBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRfY2IoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF9GQ1NMKCJnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRf Y2I6IG1hbGxvYyBmYWlsZWQiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJv cl9jbWRfZGVzdHJveTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAg ICAgIAorKworICAgICAgICAgICAgICAgICAgICAgc3RyY3B5KHJlcGx5LCIzMzUgQURBVD0iKTsK Ky0gICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoPXNl bmRfdG9rLmxlbmd0aDsKKy0gICAgICAgICAgICAgICAgICAgIAorLSAgICAgICAgICAgICAgICAg ICAgcmMgPSBnbG9idXNfaV9mdHBfY29udHJvbF9yYWRpeF9lbmNvZGUoc2VuZF90b2sudmFsdWUs IAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGdsb2J1c19ieXRlX3QgKikgJihyZXBseVs5XSksIAorKworKyAgICAgICAgICAgICAg ICAgICAgcmMgPSBnbG9idXNfaV9mdHBfY29udHJvbF9yYWRpeF9lbmNvZGUoc2VuZF90b2sudmFs dWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ2xvYnVzX2J5dGVfdCAqKSAmKHJlcGx5WzldKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZW5ndGgpOworICAg ICAgICAgICAgICAgICAgICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZtaW5fc3RhdCwgJnNlbmRfdG9r KTsKKyAKK0BAIC0yMDIwLDcgKzIwMjAsNyBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3Jl YWRfY2IoCisgCisgICAgICAgICAgICAgICAgICAgICByZXBseVtsZW5ndGgrOV09J1xyJzsKKyAg ICAgICAgICAgICAgICAgICAgIHJlcGx5W2xlbmd0aCsxMF09J1xuJzsKKy0gICAgICAgICAgICAg ICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgcmM9Z2xvYnVzX2lvX3JlZ2lzdGVyX3dy aXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAoZ2xvYnVzX2J5dGVfdCAqKSByZXBseSwKK0BAIC0yMDQ0LDkgKzIwNDQsOSBAQCBn bG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRfY2IoCisgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgY2FzZSBHTE9CVVNfRlRQX0NPTlRS T0xfQ09NTUFORF9VU0VSOgorLSAgICAgICAgICAgICAgICBpZigoY2NfaGFuZGxlLT5hdXRoX2lu Zm8ucHJldl9jbWQgIT0gCisrICAgICAgICAgICAgICAgIGlmKChjY19oYW5kbGUtPmF1dGhfaW5m by5wcmV2X2NtZCAhPQorICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX0NP TU1BTkRfQURBVCkgJiYKKy0gICAgICAgICAgICAgICAgICAgKGNjX2hhbmRsZS0+YXV0aF9pbmZv LnByZXZfY21kICE9IAorKyAgICAgICAgICAgICAgICAgICAoY2NfaGFuZGxlLT5hdXRoX2luZm8u cHJldl9jbWQgIT0KKyAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ09OVFJPTF9DT01N QU5EX1VOS05PV04pKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBl cnJvcj1nbG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmluZygKK0BAIC0yMDU1LDEwICsyMDU1LDEw IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYigKKyAgICAgICAgICAgICAgICAg ICAgICAgICBfRkNTTCgiZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFkX2NiOiBVU0VSIG11 c3QgZWl0aGVyIGJlIHByZWNlZGVkIGJ5IEFEQVQgb3IgYmUgdGhlIGZpcnN0IGNvbW1hbmQiKSk7 CisgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2NtZF9kZXN0cm95OworICAgICAgICAg ICAgICAgICB9CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBjY19oYW5k bGUtPmF1dGhfaW5mby5wcmV2X2NtZD1jb21tYW5kLmNvZGU7CisgCistICAgICAgICAgICAgICAg IGlmKChjY19oYW5kbGUtPmF1dGhfcmVxdWlyZW1lbnRzICYgCisrICAgICAgICAgICAgICAgIGlm KChjY19oYW5kbGUtPmF1dGhfcmVxdWlyZW1lbnRzICYKKyAgICAgICAgICAgICAgICAgICAgIEdM T0JVU19GVFBfQ09OVFJPTF9BVVRIX1JFUV9HU1NBUEkpICYmCisgICAgICAgICAgICAgICAgICAg IChjY19oYW5kbGUtPnVzZV9hdXRoID09IEdMT0JVU19GQUxTRSkpCisgICAgICAgICAgICAgICAg IHsKK0BAIC0yMDY2LDkgKzIwNjYsOSBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRf Y2IoCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX01PRFVMRSwK KyAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICBfRkNTTCgiZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFkX2NiOiBHU1NBUEkg YXV0aGVudGljYXRpb24gcmVxdWlyZWQiKSk7CistICAgICAgICAgICAgICAgICAgICBnb3RvIGVy cm9yX2NtZF9kZXN0cm95OyAKKysgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY21kX2Rl c3Ryb3k7CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAg ICAgICAgICAgIGNjX2hhbmRsZS0+YXV0aF9pbmZvLnVzZXI9Z2xvYnVzX2xpYmNfc3RyZHVwKAor ICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC51c2VyLnN0cmluZ19hcmcpOworIAorQEAgLTIw ODAsOCArMjA4MCw4IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYigKKyAgICAg ICAgICAgICAgICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFk X2NiOiBzdHJkdXAgZmFpbGVkIikpOworICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9j bWRfZGVzdHJveTsKKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAKKy0gICAg ICAgICAgICAgICAgaWYoY2NfaGFuZGxlLT5hdXRoX3JlcXVpcmVtZW50cyAmIAorKworKyAgICAg ICAgICAgICAgICBpZihjY19oYW5kbGUtPmF1dGhfcmVxdWlyZW1lbnRzICYKKyAgICAgICAgICAg ICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX0FVVEhfUkVRX1VTRVIpCisgICAgICAgICAgICAg ICAgIHsKKyAKK0BAIC0yMDk1LDcgKzIwOTUsNyBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRo X3JlYWRfY2IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjX2hhbmRsZS0+YXV0aF9j Yl9hcmc9R0xPQlVTX05VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJihjY19oYW5kbGUtPm11dGV4KSk7 CistICAgICAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAgICAgICAg KGNhbGxiYWNrKShjYWxsYmFja19hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JV U19OVUxMLAorQEAgLTIxMDYsMTkgKzIxMDYsMTkgQEAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0 aF9yZWFkX2NiKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY19oYW5kbGUtPmNiX2Nv dW50LS07CisgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFjY19oYW5kbGUtPmNi X2NvdW50ICYmCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjX2hhbmRsZS0+Y2Nf c3RhdGUgPT0gCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ09O VFJPTF9DTE9TSU5HKSAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxfY2xvc2VfY2IgPSBHTE9CVVNfVFJVRTsgCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNjX2hhbmRsZS0+Y2Nfc3RhdGUgPT0KKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX0NMT1NJTkcpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxfY2xvc2VfY2Ig PSBHTE9CVVNfVFJVRTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfbXV0ZXhf dW5sb2NrKCYoY2NfaGFuZGxlLT5tdXRleCkpOworIAorLSAgICAgICAgICAgICAgICAgICAgICAg IGlmKGNhbGxfY2xvc2VfY2IgPT0gR0xPQlVTX1RSVUUpIAorLSAgICAgICAgICAgICAgICAgICAg ICAgIHsgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jb250cm9s X2NhbGxfY2xvc2VfY2IoY19oYW5kbGUpOyAKKy0gICAgICAgICAgICAgICAgICAgICAgICB9IAor LSAgICAgICAgICAgICAgICAgICAgICAgIAorKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNh bGxfY2xvc2VfY2IgPT0gR0xPQlVTX1RSVUUpCisrICAgICAgICAgICAgICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfaV9mdHBfY29udHJvbF9jYWxsX2Ns b3NlX2NiKGNfaGFuZGxlKTsKKysgICAgICAgICAgICAgICAgICAgICAgICB9CisrCisgICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICB9CisgCitAQCAt MjEzNSw4ICsyMTM1LDggQEAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFkX2NiKAorICAg ICAgICAgICAgICAgICAgICAgICAgIHJlcGx5PSBnbG9idXNfbGliY19zdHJkdXAoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9zZXJ2ZXJfMzMyX3JlcGx5KTsKKyAg ICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgIAorLSAgICAgICAgICAg ICAgICAgICAgCisrCisrCisgICAgICAgICAgICAgICAgICAgICBpZihyZXBseSA9PSBHTE9CVVNf TlVMTCkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBl cnJvcj1nbG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmluZygKK0BAIC0yMTQ1LDE0ICsyMTQ1LDE0 IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYigKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgX0ZDU0woImdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYjogc3Ry ZHVwIGZhaWxlZCIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2NtZF9k ZXN0cm95OworICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgCisr CisgICAgICAgICAgICAgICAgICAgICBpZihjY19oYW5kbGUtPmF1dGhfaW5mby5hdXRoZW50aWNh dGVkID09IEdMT0JVU19UUlVFKQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgICAgICAgIHJjPWdsb2J1c19pX2Z0cF9jb250cm9sX2VuY29kZV9yZXBseSgKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZlbmNvZGVkX3JlcGx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKGNjX2hh bmRsZS0+YXV0aF9pbmZvKSk7CistICAgICAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAg ICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfZnJlZShyZXBseSk7CisgCisgICAgICAgICAg ICAgICAgICAgICAgICAgaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCitAQCAtMjE2MCwxMCArMjE2 MCwxMCBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRfY2IoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVycm9yPWdsb2J1c19lcnJvcl9nZXQocmMpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2NtZF9kZXN0cm95OworICAgICAgICAgICAgICAg ICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAg ICAgICAgICAgICByZXBseT1lbmNvZGVkX3JlcGx5OworICAgICAgICAgICAgICAgICAgICAgfQor LSAgICAgICAgICAgICAgICAgICAgCisrCisgCisgICAgICAgICAgICAgICAgICAgICByYz1nbG9i dXNfaW9fcmVnaXN0ZXJfd3JpdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLAor QEAgLTIxNzEsMTQgKzIxNzEsMTQgQEAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFkX2Ni KAorICAgICAgICAgICAgICAgICAgICAgICAgIChnbG9idXNfc2l6ZV90KSBzdHJsZW4ocmVwbHkp LAorICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfd3Jp dGVfY2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgYXJnKTsKKy0gICAgICAgICAgICAgICAg ICAgIAorKworICAgICAgICAgICAgICAgICAgICAgaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCisg ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xp YmNfZnJlZShyZXBseSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9Z2xvYnVzX2Vy cm9yX2dldChyYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbWRfZGVz dHJveTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgIAorKwor ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg ICAgeworQEAgLTIxOTEsNyArMjE5MSw3IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVh ZF9jYigKKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgY2FzZSBHTE9CVVNf RlRQX0NPTlRST0xfQ09NTUFORF9QQVNTOgorIAorLSAgICAgICAgICAgICAgICBpZihjY19oYW5k bGUtPmF1dGhfaW5mby5wcmV2X2NtZCAhPSAKKysgICAgICAgICAgICAgICAgaWYoY2NfaGFuZGxl LT5hdXRoX2luZm8ucHJldl9jbWQgIT0KKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9D T05UUk9MX0NPTU1BTkRfVVNFUikKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgICAgZXJyb3I9Z2xvYnVzX2Vycm9yX2NvbnN0cnVjdF9zdHJpbmcoCitAQCAtMjIxNCw4ICsy MjE0LDggQEAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFkX2NiKAorICAgICAgICAgICAg ICAgICAgICAgICAgIF9GQ1NMKCJnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRfY2I6IE5v IHBhc3N3b3JkIGdpdmVuIikpOworICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbWRf ZGVzdHJveTsKKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAKKy0gICAgICAg ICAgICAgICAgaWYoIShjY19oYW5kbGUtPmF1dGhfcmVxdWlyZW1lbnRzICYgCisrCisrICAgICAg ICAgICAgICAgIGlmKCEoY2NfaGFuZGxlLT5hdXRoX3JlcXVpcmVtZW50cyAmCisgICAgICAgICAg ICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX0FVVEhfUkVRX0FDQ1QpKQorICAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBnbG9idXNfbXV0ZXhfbG9jaygmKGNjX2hh bmRsZS0+bXV0ZXgpKTsKK0BAIC0yMjI0LDcgKzIyMjQsNyBAQCBnbG9idXNfbF9mdHBfY29udHJv bF9hdXRoX3JlYWRfY2IoCisgICAgICAgICAgICAgICAgICAgICAgICAgY2NfaGFuZGxlLT5hdXRo X2NiX2FyZz1HTE9CVVNfTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJihjY19oYW5kbGUtPm11dGV4KSk7CistICAg ICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgIChjYWxsYmFjaykoY2Fs bGJhY2tfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX2hhbmRsZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX05VTEwsCitAQCAtMjIzMywyMyAr MjIzMywyMyBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRfY2IoCisgICAgICAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgY2NfaGFuZGxlLT5jYl9jb3Vu dC0tOworICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFjY19oYW5kbGUtPmNiX2NvdW50ICYm CistICAgICAgICAgICAgICAgICAgICAgICAgICAgY2NfaGFuZGxlLT5jY19zdGF0ZSA9PSBHTE9C VVNfRlRQX0NPTlRST0xfQ0xPU0lORykgCistICAgICAgICAgICAgICAgICAgICAgICAgeyAKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF9jbG9zZV9jYiA9IEdMT0JVU19UUlVFOyAK Ky0gICAgICAgICAgICAgICAgICAgICAgICB9IAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGNjX2hhbmRsZS0+Y2Nfc3RhdGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX0NMT1NJTkcpCisrICAg ICAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxs X2Nsb3NlX2NiID0gR0xPQlVTX1RSVUU7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX211dGV4X3Vu bG9jaygmKGNjX2hhbmRsZS0+bXV0ZXgpKTsKKy0gICAgICAgICAgICAgICAgICAgIAorLSAgICAg ICAgICAgICAgICAgICAgaWYoY2FsbF9jbG9zZV9jYiA9PSBHTE9CVVNfVFJVRSkgCistICAgICAg ICAgICAgICAgICAgICB7IAorLSAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9j b250cm9sX2NhbGxfY2xvc2VfY2IoY19oYW5kbGUpOyAKKy0gICAgICAgICAgICAgICAgICAgIH0g CisrCisrICAgICAgICAgICAgICAgICAgICBpZihjYWxsX2Nsb3NlX2NiID09IEdMT0JVU19UUlVF KQorKyAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1 c19pX2Z0cF9jb250cm9sX2NhbGxfY2xvc2VfY2IoY19oYW5kbGUpOworKyAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgcmVwbHk9Z2xvYnVzX2xpYmNfc3Ry ZHVwKAorICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9zZXJ2ZXJfMzMyX3Jl cGx5KTsKKy0gICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgaWYo cmVwbHkgPT0gR0xPQlVTX05VTEwpCisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgZXJyb3I9Z2xvYnVzX2Vycm9yX2NvbnN0cnVjdF9zdHJpbmcoCitAQCAt MjI1OCwyNSArMjI1OCwyNSBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRfY2IoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9GQ1NMKCJnbG9idXNfbF9mdHBfY29udHJvbF9h dXRoX3JlYWRfY2I6IHN0cmR1cCBmYWlsZWQiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg Z290byBlcnJvcl9jbWRfZGVzdHJveTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAg ICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgaWYoY2NfaGFuZGxlLT5hdXRo X2luZm8uYXV0aGVudGljYXRlZCA9PSBHTE9CVVNfVFJVRSkKKyAgICAgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICByYz1nbG9idXNfaV9mdHBfY29udHJvbF9lbmNv ZGVfcmVwbHkoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmZW5jb2RlZF9yZXBseSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJihjY19oYW5kbGUtPmF1dGhfaW5mbykpOworLSAgICAgICAgICAgICAgICAgICAg ICAgIAorKworICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX2ZyZWUocmVwbHkp OworLSAgICAgICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgICAg IGlmKHJjICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9Z2xvYnVzX2Vycm9yX2dldChyYyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY21kX2Rlc3Ryb3k7CisgICAg ICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgICAgIAorKworICAg ICAgICAgICAgICAgICAgICAgICAgIHJlcGx5PWVuY29kZWRfcmVwbHk7CisgICAgICAgICAgICAg ICAgICAgICB9CistICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAg IHJjPWdsb2J1c19pb19yZWdpc3Rlcl93cml0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICBo YW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGdsb2J1c19ieXRlX3QgKikgcmVwbHks CitAQCAtMjI5MywxMSArMjI5MywxMSBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRf Y2IoCisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICAgY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xfQ09NTUFORF9BQ0NUOgorLSAgICAgICAgICAg ICAgICBpZigoKGNjX2hhbmRsZS0+YXV0aF9yZXF1aXJlbWVudHMgJiAKKysgICAgICAgICAgICAg ICAgaWYoKChjY19oYW5kbGUtPmF1dGhfcmVxdWlyZW1lbnRzICYKKyAgICAgICAgICAgICAgICAg ICAgICBHTE9CVVNfRlRQX0NPTlRST0xfQVVUSF9SRVFfUEFTUykgJiYKKy0gICAgICAgICAgICAg ICAgICAgIChjY19oYW5kbGUtPmF1dGhfaW5mby5wcmV2X2NtZCAhPSAKKysgICAgICAgICAgICAg ICAgICAgIChjY19oYW5kbGUtPmF1dGhfaW5mby5wcmV2X2NtZCAhPQorICAgICAgICAgICAgICAg ICAgICAgIEdMT0JVU19GVFBfQ09OVFJPTF9DT01NQU5EX1BBU1MpKSB8fAorLSAgICAgICAgICAg ICAgICAgICAoY2NfaGFuZGxlLT5hdXRoX2luZm8ucHJldl9jbWQgIT0gCisrICAgICAgICAgICAg ICAgICAgIChjY19oYW5kbGUtPmF1dGhfaW5mby5wcmV2X2NtZCAhPQorICAgICAgICAgICAgICAg ICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX0NPTU1BTkRfVVNFUikpCisgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgIGVycm9yPWdsb2J1c19lcnJvcl9jb25zdHJ1Y3Rfc3Ry aW5nKAorQEAgLTIzMTgsOCArMjMxOCw4IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVh ZF9jYigKKyAgICAgICAgICAgICAgICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2xfZnRwX2NvbnRy b2xfYXV0aF9yZWFkX2NiOiBubyBhY2NvdW50IGdpdmVuIikpOworICAgICAgICAgICAgICAgICAg ICAgZ290byBlcnJvcl9jbWRfZGVzdHJveTsKKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAg ICAgICAgICAKKy0gICAgICAgICAgICAgICAgaWYoY2NfaGFuZGxlLT5hdXRoX3JlcXVpcmVtZW50 cyAmIAorKworKyAgICAgICAgICAgICAgICBpZihjY19oYW5kbGUtPmF1dGhfcmVxdWlyZW1lbnRz ICYKKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX0FVVEhfUkVRX0FDQ1Qp CisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19tdXRleF9s b2NrKCYoY2NfaGFuZGxlLT5tdXRleCkpOworQEAgLTIzMjgsNyArMjMyOCw3IEBAIGdsb2J1c19s X2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYigKKyAgICAgICAgICAgICAgICAgICAgICAgICBjY19o YW5kbGUtPmF1dGhfY2JfYXJnPUdMT0JVU19OVUxMOworICAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmKGNjX2hhbmRsZS0+bXV0 ZXgpKTsKKy0gICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgKGNh bGxiYWNrKShjYWxsYmFja19hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNf aGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKK0BA IC0yMzM4LDE4ICsyMzM4LDE4IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYigK KyAgICAgICAgICAgICAgICAgICAgICAgICBjY19oYW5kbGUtPmNiX2NvdW50LS07CisgCisgICAg ICAgICAgICAgICAgICAgICAgICAgaWYoIWNjX2hhbmRsZS0+Y2JfY291bnQgJiYKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICBjY19oYW5kbGUtPmNjX3N0YXRlID09IEdMT0JVU19GVFBfQ09O VFJPTF9DTE9TSU5HKSAKKy0gICAgICAgICAgICAgICAgICAgICAgICB7IAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjYWxsX2Nsb3NlX2NiID0gR0xPQlVTX1RSVUU7IAorLSAgICAgICAg ICAgICAgICAgICAgICAgIH0gCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgY2NfaGFuZGxl LT5jY19zdGF0ZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfQ0xPU0lORykKKysgICAgICAgICAgICAg ICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxfY2xvc2VfY2Ig PSBHTE9CVVNfVFJVRTsKKysgICAgICAgICAgICAgICAgICAgICAgICB9CisgCisgICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCYo Y2NfaGFuZGxlLT5tdXRleCkpOworIAorLSAgICAgICAgICAgICAgICAgICAgaWYoY2FsbF9jbG9z ZV9jYiA9PSBHTE9CVVNfVFJVRSkgCistICAgICAgICAgICAgICAgICAgICB7IAorLSAgICAgICAg ICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jb250cm9sX2NhbGxfY2xvc2VfY2IoY19oYW5k bGUpOyAKKy0gICAgICAgICAgICAgICAgICAgIH0gCisrICAgICAgICAgICAgICAgICAgICBpZihj YWxsX2Nsb3NlX2NiID09IEdMT0JVU19UUlVFKQorKyAgICAgICAgICAgICAgICAgICAgeworKyAg ICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jb250cm9sX2NhbGxfY2xvc2VfY2Io Y19oYW5kbGUpOworKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgeworQEAgLTIzNjcsMTggKzIz NjcsMTggQEAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFkX2NiKAorICAgICAgICAgICAg ICAgICAgICAgX0ZDU0woImdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYjogQ29tbWFu ZCBub3QgcGFydCBvZiBhdXRoZW50aWNhdGlvbiBwcm9jZXNzIikpOworICAgICAgICAgICAgICAg ICBnb3RvIGVycm9yX2NtZF9kZXN0cm95OworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAK KysKKyAgICAgICAgICAgICBnbG9idXNfZnRwX2NvbnRyb2xfY29tbWFuZF9kZXN0cm95KCZjb21t YW5kKTsKKyAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisr CisgICAgIGlmKGNjX2hhbmRsZS0+Ynl0ZXNfcmVhZCA9PSBjY19oYW5kbGUtPnJlYWRfYnVmZmVy X3NpemUpCisgICAgIHsKKyAgICAgICAgIG5ld19idWY9IChnbG9idXNfYnl0ZV90ICopIGdsb2J1 c19saWJjX21hbGxvYygKKyAgICAgICAgICAgICBjY19oYW5kbGUtPnJlYWRfYnVmZmVyX3NpemUg KworICAgICAgICAgICAgIEdMT0JVU19JX0ZUUF9DT05UUk9MX0JVRl9JTkNSKTsKKy0gICAgICAg IAorKworICAgICAgICAgaWYobmV3X2J1ZiA9PSBHTE9CVVNfTlVMTCkKKyAgICAgICAgIHsKKyAg ICAgICAgICAgICBlcnJvcj1nbG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmluZygKK0BAIC0yMzg3 LDMxICsyMzg3LDMxIEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYigKKyAgICAg ICAgICAgICAgICAgX0ZDU0woImdsb2J1c19sX2Z0cF9jb250cm9sX2F1dGhfcmVhZF9jYjogbWFs bG9jIGZhaWxlZCIpKTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yX2F1dGhfZGVzdHJveTsKKyAg ICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgbWVtY3B5KG5ld19idWYsCisgICAgICAg ICAgICAgICAgY2NfaGFuZGxlLT5yZWFkX2J1ZmZlciwKKyAgICAgICAgICAgICAgICBjY19oYW5k bGUtPmJ5dGVzX3JlYWQpOworLSAgICAgICAgCisrCisgICAgICAgICBjY19oYW5kbGUtPnJlYWRf YnVmZmVyX3NpemUgKz0gR0xPQlVTX0lfRlRQX0NPTlRST0xfQlVGX0lOQ1I7CisgICAgICAgICBn bG9idXNfbGliY19mcmVlKGNjX2hhbmRsZS0+cmVhZF9idWZmZXIpOworICAgICAgICAgY2NfaGFu ZGxlLT5yZWFkX2J1ZmZlcj1uZXdfYnVmOworICAgICB9CistICAgIAorKworICAgICByYz1nbG9i dXNfaW9fcmVnaXN0ZXJfcmVhZCgmKGNjX2hhbmRsZS0+aW9faGFuZGxlKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJihjY19oYW5kbGUtPnJlYWRfYnVmZmVyWworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY19oYW5kbGUtPmJ5dGVzX3JlYWRdKSwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2NfaGFuZGxlLT5yZWFkX2J1ZmZlcl9zaXpl IC0gCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjX2hhbmRsZS0+cmVhZF9idWZm ZXJfc2l6ZSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjX2hhbmRsZS0+Ynl0 ZXNfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFkX2NiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcpOworLSAgICAKKysKKyAgICAgaWYo cmMgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGVycm9yPWdsb2J1c19lcnJv cl9nZXQocmMpOworICAgICAgICAgZ290byBlcnJvcl9hdXRoX2Rlc3Ryb3k7CisgICAgIH0KKy0g ICAgCisrCisgICAgIHJldHVybjsKKyAKKyBlcnJvcl9jbWRfZGVzdHJveToKK0BAIC0yNDIwLDcg KzI0MjAsNyBAQCBlcnJvcl9hdXRoX2Rlc3Ryb3k6CisgICAgIHJjID0gZ2xvYnVzX2lfZnRwX2Nv bnRyb2xfYXV0aF9pbmZvX2Rlc3Ryb3koCisgICAgICAgICAmKGNjX2hhbmRsZS0+YXV0aF9pbmZv KSk7CisgICAgIGdsb2J1c19hc3NlcnQocmMgPT0gR0xPQlVTX1NVQ0NFU1MpOworLSAgICAKKysK KyAgICAgKGNjX2hhbmRsZS0+YXV0aF9jYikoY2NfaGFuZGxlLT5hdXRoX2NiX2FyZywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgY19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg IGVycm9yLAorQEAgLTI0MzEsMTggKzI0MzEsMTggQEAgZXJyb3JfYXV0aF9kZXN0cm95OgorICAg ICB7CisgICAgICAgICBjY19oYW5kbGUtPmNiX2NvdW50LS07CisgICAgICAgICBpZighY2NfaGFu ZGxlLT5jYl9jb3VudCAmJgorLSAgICAgICAgICAgY2NfaGFuZGxlLT5jY19zdGF0ZSA9PSBHTE9C VVNfRlRQX0NPTlRST0xfQ0xPU0lORykgCistICAgICAgICB7IAorLSAgICAgICAgICAgIGNhbGxf Y2xvc2VfY2IgPSBHTE9CVVNfVFJVRTsgCistICAgICAgICB9IAorKyAgICAgICAgICAgY2NfaGFu ZGxlLT5jY19zdGF0ZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfQ0xPU0lORykKKysgICAgICAgIHsK KysgICAgICAgICAgICBjYWxsX2Nsb3NlX2NiID0gR0xPQlVTX1RSVUU7CisrICAgICAgICB9Cisg ICAgIH0KKyAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmKGNjX2hhbmRsZS0+bXV0ZXgpKTsKKyAK Ky0gICAgaWYoY2FsbF9jbG9zZV9jYiA9PSBHTE9CVVNfVFJVRSkgCistICAgIHsgCistICAgICAg ICBnbG9idXNfaV9mdHBfY29udHJvbF9jYWxsX2Nsb3NlX2NiKGNfaGFuZGxlKTsgCistICAgIH0g CistIAorKyAgICBpZihjYWxsX2Nsb3NlX2NiID09IEdMT0JVU19UUlVFKQorKyAgICB7CisrICAg ICAgICBnbG9idXNfaV9mdHBfY29udHJvbF9jYWxsX2Nsb3NlX2NiKGNfaGFuZGxlKTsKKysgICAg fQorKworICAgICByZXR1cm47CisgfQorIAorQEAgLTI0NTAsMTMgKzI0NTAsMTMgQEAgZXJyb3Jf YXV0aF9kZXN0cm95OgorICAqIEBicmllZiBSZWFkIEdyaWRGVFAgY29tbWFuZHMKKyAgKiBAaW5n cm91cCBnbG9idXNfZnRwX2NvbnRyb2xfc2VydmVyCisgICogQGRldGFpbHMKKy0gKiBUaGlzIGZ1 bmN0aW9uIGJlZ2lucyByZWFkaW5nIGNvbnRyb2wgY29tbWFuZHMgb24gYSAKKysgKiBUaGlzIGZ1 bmN0aW9uIGJlZ2lucyByZWFkaW5nIGNvbnRyb2wgY29tbWFuZHMgb24gYQorICAqIGdsb2J1c19m dHBfY29udHJvbF9oYW5kbGVfdC4gIFdoZW4gYSBjb21tYW5kIGlzIHJlYWQKKyAgKiB0aGUgY2Fs bGJhY2sgZnVuY3Rpb24gaXMgY2FsbGVkLgorICAqCisgICogIEBwYXJhbSBoYW5kbGUKKyAgKiAg ICAgICAgIFRoZSBjb250cm9sIGNvbm5lY3Rpb24gaGFuZGxlIHRoYXQgY29tbWFuZHMgd2lsbCBi ZSByZWFkCistICogICAgICAgICBmcm9tLiAgUHJpb3IgdG8gY2FsbGluZyB0aGlzIHRoZSBmdW5j dGlvbiAKKysgKiAgICAgICAgIGZyb20uICBQcmlvciB0byBjYWxsaW5nIHRoaXMgdGhlIGZ1bmN0 aW9uCisgICogICAgICAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX3QgbXVzdCBiZSBwb3B1 bGF0ZWQgdmlhIGEKKyAgKiAgICAgICAgIGNhbGwgdG8gZ2xvYnVzX2Z0cF9jb250cm9sX2FjY2Vw dCgpLgorICAqICBAcGFyYW0gY2FsbGJhY2sKK0BAIC0yNTA3LDExICsyNTA3LDExIEBAIGdsb2J1 c19mdHBfY29udHJvbF9yZWFkX2NvbW1hbmRzKAorICAgICB9CisgICAgIGdsb2J1c19tdXRleF91 bmxvY2soJihoYW5kbGUtPmNjX2hhbmRsZS5tdXRleCkpOworIAorLSAgICAKKysKKyAgICAgcmM9 Z2xvYnVzX2lvX3JlZ2lzdGVyX3JlYWQoJihoYW5kbGUtPmNjX2hhbmRsZS5pb19oYW5kbGUpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKGhhbmRsZS0+Y2NfaGFuZGxlLnJlYWRf YnVmZmVyWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUtPmNj X2hhbmRsZS5ieXRlc19yZWFkXSksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhh bmRsZS0+Y2NfaGFuZGxlLnJlYWRfYnVmZmVyX3NpemUgLSAKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaGFuZGxlLT5jY19oYW5kbGUucmVhZF9idWZmZXJfc2l6ZSAtCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+Y2NfaGFuZGxlLmJ5dGVzX3JlYWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdsb2J1c19sX2Z0cF9jb250cm9sX3JlYWRfY29tbWFuZF9jYiwKK0BAIC0yNTIx LDQwICsyNTIxLDQwIEBAIGdsb2J1c19mdHBfY29udHJvbF9yZWFkX2NvbW1hbmRzKAorICAgICB7 CisgICAgICAgICBnbG9idXNfaV9mdHBfY29udHJvbF9hdXRoX2luZm9fZGVzdHJveSgKKyAgICAg ICAgICAgICAmKGhhbmRsZS0+Y2NfaGFuZGxlLmF1dGhfaW5mbykpOworLSAgICAgICAgCisrCisg ICAgICAgICBnbG9idXNfbXV0ZXhfbG9jaygmKGhhbmRsZS0+Y2NfaGFuZGxlLm11dGV4KSk7Cisg ICAgICAgICB7CisgICAgICAgICAgICAgaGFuZGxlLT5jY19oYW5kbGUuY2JfY291bnQtLTsKKyAg ICAgICAgICAgICBpZighaGFuZGxlLT5jY19oYW5kbGUuY2JfY291bnQgJiYKKy0gICAgICAgICAg ICAgICBoYW5kbGUtPmNjX2hhbmRsZS5jY19zdGF0ZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfQ0xP U0lORykgCistICAgICAgICAgICAgeyAKKy0gICAgICAgICAgICAgICAgY2FsbF9jbG9zZV9jYiA9 IEdMT0JVU19UUlVFOyAKKy0gICAgICAgICAgICB9IAorKyAgICAgICAgICAgICAgIGhhbmRsZS0+ Y2NfaGFuZGxlLmNjX3N0YXRlID09IEdMT0JVU19GVFBfQ09OVFJPTF9DTE9TSU5HKQorKyAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgY2FsbF9jbG9zZV9jYiA9IEdMT0JVU19UUlVFOwor KyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2so JihoYW5kbGUtPmNjX2hhbmRsZS5tdXRleCkpOworIAorLSAgICAgICAgaWYoY2FsbF9jbG9zZV9j YiA9PSBHTE9CVVNfVFJVRSkgCistICAgICAgICB7IAorLSAgICAgICAgICAgIGdsb2J1c19pX2Z0 cF9jb250cm9sX2NhbGxfY2xvc2VfY2IoaGFuZGxlKTsgCistICAgICAgICB9IAorKyAgICAgICAg aWYoY2FsbF9jbG9zZV9jYiA9PSBHTE9CVVNfVFJVRSkKKysgICAgICAgIHsKKysgICAgICAgICAg ICBnbG9idXNfaV9mdHBfY29udHJvbF9jYWxsX2Nsb3NlX2NiKGhhbmRsZSk7CisrICAgICAgICB9 CisgCisgICAgICAgICByZXR1cm4gcmM7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVybiBH TE9CVVNfU1VDQ0VTUzsKKyB9CisgCisgI2lmZGVmIEdMT0JVU19JTlRFUk5BTF9ET0MKKyAKKyAv KioKKy0gKiBJbnRlcm5hbCBjYWxsYmFjayBmb3IgdGhlIGdsb2J1c19pb19yZWdpc3Rlcl9yZWFk IGZ1bmN0aW9uLiAgICAKKy0gKiAKKysgKiBJbnRlcm5hbCBjYWxsYmFjayBmb3IgdGhlIGdsb2J1 c19pb19yZWdpc3Rlcl9yZWFkIGZ1bmN0aW9uLgorKyAqCisgICogVGhpcyBpcyBhbiBpbnRlcm5h bCBjYWxsYmFjayB1c2VkIGFzIHBhcnQgb2YgdGhlCistICogZ2xvYnVzX2Z0cF9jb250cm9sX3Jl YWRfY29tbWFuZHMgZnVuY3Rpb24uIEl0IGNoZWNrcyB0aGUgcmVzdWx0IG9mIAorKyAqIGdsb2J1 c19mdHBfY29udHJvbF9yZWFkX2NvbW1hbmRzIGZ1bmN0aW9uLiBJdCBjaGVja3MgdGhlIHJlc3Vs dCBvZgorICAqIHRoZSByZWFkICh3aGljaCB3YXMgdXNlZCB0byByZWFkIGNvbW1hbmRzIGZyb20g dGhlIGNsaWVudCksIGFuZAorICAqIGlmIGEgZnVsbCBjb21tYW5kIHdhcyByZWNlaXZlZCwgcGFy c2VzIGl0IGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcKKyAgKiBjb21tYW5kIHN0cnVjdHVyZSB0 byB0aGUgdXNlciB0aHJvdWdoIHRoZSB1c2VyIGNhbGxiYWNrLiBJZiBubyBmdWxsCistICogY29t bWFuZCB3YXMgcmVjZWl2ZWQgYSBuZXcgcmVnaXN0ZXJfcmVhZCBpcyBjYWxsZWQuIAorKyAqIGNv bW1hbmQgd2FzIHJlY2VpdmVkIGEgbmV3IHJlZ2lzdGVyX3JlYWQgaXMgY2FsbGVkLgorICAqCisg ICogQHBhcmFtIGFyZworICAqICAgICAgICBUaGUgY2FsbGJhY2sgYXJndW1lbnQsIHdoaWNoIGlu IHRoaXMgY2FzZSBpcyB0aGUgY29udHJvbAorQEAgLTI1NjMsMjMgKzI1NjMsMjMgQEAgZ2xvYnVz X2Z0cF9jb250cm9sX3JlYWRfY29tbWFuZHMoCisgICogICAgICAgIFRoZSBnbG9idXNfaW8gaGFu ZGxlIGZvciB0aGUgY29ubmVjdGlvbi4gSW4gcHJhY3RpY2UgdGhpcworICAqICAgICAgICByZXBy ZXNlbnRzIHRoZSBzb2NrZXQgZmQgZm9yIHRoZSBjb25uZWN0aW9uLgorICAqIEBwYXJhbSByZXN1 bHQKKy0gKiAgICAgICAgVGhlIHJlc3VsdCBvZiB0aGUgYWNjZXB0IG9wZXJhdGlvbiAKKysgKiAg ICAgICAgVGhlIHJlc3VsdCBvZiB0aGUgYWNjZXB0IG9wZXJhdGlvbgorICAqCisgICogQHJldHVy biB2b2lkCisgICoKKyAgKiBAbm90ZSBJZiBhIGVycm9yIGlzIGRldGVjdGVkIGluIHRoaXMgZnVu Y3Rpb24gdGhlIHVzZXIgY2FsbGJhY2sgaXMKKyAgKiAgICAgICBjYWxsZWQgd2l0aCBhbiBhcHBy b3ByaWF0ZSBlcnJvciBvYmplY3Qgb3IgZnRwIHJlc3BvbnNlIGFuZAorLSAqICAgICAgIHRoZSBm dW5jdGlvbiByZXR1cm5zLiAKKysgKiAgICAgICB0aGUgZnVuY3Rpb24gcmV0dXJucy4KKyAgKi8K KyAKKyAjZW5kaWYKKyAKKyBzdGF0aWMgdm9pZAorIGdsb2J1c19sX2Z0cF9jb250cm9sX3JlYWRf Y29tbWFuZF9jYigKKy0gICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYXJnLCAKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXJnLAorICAgICBnbG9idXNfaW9faGFuZGxlX3QgKiAgICAgICAgICAgICAgICAgICAgICBoYW5k bGUsCisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs dCwKKy0gICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCAK KysgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorICAg ICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYnl0ZXMpCisgewor ICAgICBnbG9idXNfZnRwX2NjX2hhbmRsZV90ICogICAgICAgICAgICAgICAgICBjY19oYW5kbGU7 CitAQCAtMjYwMiwxMSArMjYwMiwxMSBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9yZWFkX2NvbW1h bmRfY2IoCisgICAgICAgICBlcnJvcj1nbG9idXNfZXJyb3JfZ2V0KHJlc3VsdCk7CisgICAgICAg ICBnb3RvIGVycm9yX2F1dGhfZGVzdHJveTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgY2NfaGFu ZGxlLT5ieXRlc19yZWFkICs9IG5ieXRlczsKKyAKKyAgICAgbGFzdD0wOworLSAgICAKKysKKyAg ICAgZm9yKGkgPSAxO2kgPCBjY19oYW5kbGUtPmJ5dGVzX3JlYWQ7IGkrKykKKyAgICAgeworICAg ICAgICAgaWYoY2NfaGFuZGxlLT5yZWFkX2J1ZmZlcltpLTFdID09ICdccicgJiYKK0BAIC0yNjI0 LDcgKzI2MjQsNyBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9yZWFkX2NvbW1hbmRfY2IoCisgICAg ICAgICAgICAgICAgIGVycm9yPWdsb2J1c19lcnJvcl9nZXQocmMpOworICAgICAgICAgICAgICAg ICBnb3RvIGVycm9yX2F1dGhfZGVzdHJveTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAg CisrCisgICAgICAgICAgICAgKGNjX2hhbmRsZS0+Y29tbWFuZF9jYikoY2NfaGFuZGxlLT5jb21t YW5kX2NiX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX2hhbmRs ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKK0BA IC0yNjM0LDcgKzI2MzQsNyBAQCBnbG9idXNfbF9mdHBfY29udHJvbF9yZWFkX2NvbW1hbmRfY2Io CisgICAgICAgICAgICAgbGFzdD1pKzE7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisg ICAgIGlmKGxhc3QgIT0gMCkKKyAgICAgeworICAgICAgICAgZm9yKGk9bGFzdDtpPGNjX2hhbmRs ZS0+Ynl0ZXNfcmVhZDtpKyspCitAQCAtMjY0Miw3ICsyNjQyLDcgQEAgZ2xvYnVzX2xfZnRwX2Nv bnRyb2xfcmVhZF9jb21tYW5kX2NiKAorICAgICAgICAgICAgIGNjX2hhbmRsZS0+cmVhZF9idWZm ZXJbaS1sYXN0XT0KKyAgICAgICAgICAgICAgICAgY2NfaGFuZGxlLT5yZWFkX2J1ZmZlcltpXTsK KyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgY2NfaGFuZGxlLT5ieXRlc19yZWFk IC09IGxhc3Q7CisgICAgIH0KKyAgICAgZWxzZQorQEAgLTI2NjEsNyArMjY2MSw3IEBAIGdsb2J1 c19sX2Z0cF9jb250cm9sX3JlYWRfY29tbWFuZF9jYigKKyAgICAgICAgICAgICAgICAgICAgIF9G Q1NMKCJnbG9idXNfbF9mdHBfY29udHJvbF9yZWFkX2NvbW1hbmRfY2I6IG1hbGxvYyBmYWlsZWQi KSk7CisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfYXV0aF9kZXN0cm95OworICAgICAgICAg ICAgIH0KKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBtZW1jcHkobmV3X2J1ZiwKKyAg ICAgICAgICAgICAgICAgICAgY2NfaGFuZGxlLT5yZWFkX2J1ZmZlciwKKyAgICAgICAgICAgICAg ICAgICAgY2NfaGFuZGxlLT5ieXRlc19yZWFkKTsKK0BAIC0yNjc2LDcxICsyNjc2LDcxIEBAIGds b2J1c19sX2Z0cF9jb250cm9sX3JlYWRfY29tbWFuZF9jYigKKyAgICAgZ2xvYnVzX211dGV4X2xv Y2soJihjY19oYW5kbGUtPm11dGV4KSk7CisgICAgIHsKKyAgICAgICAgIGlmKGNjX2hhbmRsZS0+ Y2JfY291bnQgPT0gMSAmJgorLSAgICAgICAgICAgY2NfaGFuZGxlLT5jY19zdGF0ZSA9PSBHTE9C VVNfRlRQX0NPTlRST0xfQ0xPU0lORykgCisrICAgICAgICAgICBjY19oYW5kbGUtPmNjX3N0YXRl ID09IEdMT0JVU19GVFBfQ09OVFJPTF9DTE9TSU5HKQorICAgICAgICAgeworICAgICAgICAgICAg IGNjX2hhbmRsZS0+Y2JfY291bnQtLTsKKy0gICAgICAgICAgICBjYWxsX2Nsb3NlX2NiID0gR0xP QlVTX1RSVUU7IAorKyAgICAgICAgICAgIGNhbGxfY2xvc2VfY2IgPSBHTE9CVVNfVFJVRTsKKyAg ICAgICAgIH0KKy0JZWxzZSBpZihjb2RlID09IEdMT0JVU19GVFBfQ09OVFJPTF9DT01NQU5EX1FV SVQpCistCXsKKysgICAgICAgIGVsc2UgaWYoY29kZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfQ09N TUFORF9RVUlUKQorKyAgICAgICAgeworICAgICAgICAgICAgIGNjX2hhbmRsZS0+Y2JfY291bnQt LTsKKy0JfQorKyAgICAgICAgfQorICAgICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJihj Y19oYW5kbGUtPm11dGV4KSk7CistICAgIAorLSAgICBpZihjYWxsX2Nsb3NlX2NiID09IEdMT0JV U19UUlVFKSAKKy0gICAgeyAKKysKKysgICAgaWYoY2FsbF9jbG9zZV9jYiA9PSBHTE9CVVNfVFJV RSkKKysgICAgeworICAgICAgICAgZ2xvYnVzX2lfZnRwX2NvbnRyb2xfY2FsbF9jbG9zZV9jYihj X2hhbmRsZSk7CisgICAgICAgICByZXR1cm47CistICAgIH0gCistICAgIAorKyAgICB9CisrCisg ICAgIGlmKGNvZGUgIT0gR0xPQlVTX0ZUUF9DT05UUk9MX0NPTU1BTkRfUVVJVCkKKyAgICAgewor ICAgICAgICAgcmM9Z2xvYnVzX2lvX3JlZ2lzdGVyX3JlYWQoJihjY19oYW5kbGUtPmlvX2hhbmRs ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKGNjX2hhbmRsZS0+cmVh ZF9idWZmZXJbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY19o YW5kbGUtPmJ5dGVzX3JlYWRdKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNjX2hhbmRsZS0+cmVhZF9idWZmZXJfc2l6ZSAtIAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2NfaGFuZGxlLT5yZWFkX2J1ZmZlcl9zaXplIC0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNjX2hhbmRsZS0+Ynl0ZXNfcmVhZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnbG9idXNfbF9mdHBfY29udHJvbF9yZWFkX2NvbW1hbmRfY2IsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcpOworLSAgICAgICAgCisrCisgICAgICAgICBp ZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBlcnJvcj1n bG9idXNfZXJyb3JfZ2V0KHJjKTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yX2F1dGhfZGVzdHJv eTsKKyAgICAgICAgIH0KKyAgICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJuOworIAorIGVycm9y X2F1dGhfZGVzdHJveToKKyAgICAgcmMgPSBnbG9idXNfaV9mdHBfY29udHJvbF9hdXRoX2luZm9f ZGVzdHJveSgKKyAgICAgICAgICYoY2NfaGFuZGxlLT5hdXRoX2luZm8pKTsKKyAgICAgZ2xvYnVz X2Fzc2VydChyYyA9PSBHTE9CVVNfU1VDQ0VTUyk7CistICAgIAorKworICAgICAoY2NfaGFuZGxl LT5jb21tYW5kX2NiKShjY19oYW5kbGUtPmNvbW1hbmRfY2JfYXJnLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJy b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19OVUxMKTsKKyAgICAgZ2xv YnVzX29iamVjdF9mcmVlKGVycm9yKTsKKy0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9sb2Nr KCYoY2NfaGFuZGxlLT5tdXRleCkpOworICAgICB7CisgICAgICAgICBjY19oYW5kbGUtPmNiX2Nv dW50LS07CisgCisgICAgICAgICBpZighY2NfaGFuZGxlLT5jYl9jb3VudCAmJgorLSAgICAgICAg ICAgY2NfaGFuZGxlLT5jY19zdGF0ZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfQ0xPU0lORykgCist ICAgICAgICB7IAorLSAgICAgICAgICAgIGNhbGxfY2xvc2VfY2IgPSBHTE9CVVNfVFJVRTsgCist ICAgICAgICB9IAorKyAgICAgICAgICAgY2NfaGFuZGxlLT5jY19zdGF0ZSA9PSBHTE9CVVNfRlRQ X0NPTlRST0xfQ0xPU0lORykKKysgICAgICAgIHsKKysgICAgICAgICAgICBjYWxsX2Nsb3NlX2Ni ID0gR0xPQlVTX1RSVUU7CisrICAgICAgICB9CisgICAgIH0KKyAgICAgZ2xvYnVzX211dGV4X3Vu bG9jaygmKGNjX2hhbmRsZS0+bXV0ZXgpKTsKKy0gICAgCistICAgIGlmKGNhbGxfY2xvc2VfY2Ig PT0gR0xPQlVTX1RSVUUpIAorLSAgICB7IAorLSAgICAgICAgZ2xvYnVzX2lfZnRwX2NvbnRyb2xf Y2FsbF9jbG9zZV9jYihjX2hhbmRsZSk7IAorLSAgICB9IAorKworKyAgICBpZihjYWxsX2Nsb3Nl X2NiID09IEdMT0JVU19UUlVFKQorKyAgICB7CisrICAgICAgICBnbG9idXNfaV9mdHBfY29udHJv bF9jYWxsX2Nsb3NlX2NiKGNfaGFuZGxlKTsKKysgICAgfQorIAorICAgICByZXR1cm47CisgfQor QEAgLTI3NTAsOCArMjc1MCw4IEBAIGVycm9yX2F1dGhfZGVzdHJveToKKyAgKiBAYnJpZWYgU2Vu ZCBhIEdyaWRGVFAgcmVzcG9uc2UKKyAgKiBAaW5ncm91cCBnbG9idXNfZnRwX2NvbnRyb2xfc2Vy dmVyCisgICogQGRldGFpbHMKKy0gKiBUaGlzIGZ1bmN0aW9uIHNlbmRzIGEgR3JpZEZUUCBmb3Jt YXR0ZWQgcmVzcG9uc2UgdG8gdGhlIGNsaWVudC4gIAorLSAqIFdoZW4gYSBjb21tYW5kIGNhbGxi YWNrIGlzIHJlY2VpdmVkIHRoZSB1c2VyIGNhbGxzIHRoaXMgZnVuY3Rpb24gCisrICogVGhpcyBm dW5jdGlvbiBzZW5kcyBhIEdyaWRGVFAgZm9ybWF0dGVkIHJlc3BvbnNlIHRvIHRoZSBjbGllbnQu CisrICogV2hlbiBhIGNvbW1hbmQgY2FsbGJhY2sgaXMgcmVjZWl2ZWQgdGhlIHVzZXIgY2FsbHMg dGhpcyBmdW5jdGlvbgorICAqIHRvIHJlc3BvbmQgdG8gdGhlIGNsaWVudHMgcmVxdWVzdC4KKyAg KgorICAqICBAcGFyYW0gaGFuZGxlCitAQCAtMjc5NCwxNSArMjc5NCwxNSBAQCBnbG9idXNfZnRw X2NvbnRyb2xfc2VuZF9yZXNwb25zZSgKKyAgICAgICAgICAgICApOworICAgICB9CisgCistICAg IAorKworICAgICB2YV9zdGFydChhcCwgY2FsbGJhY2tfYXJnKTsKKy0gICAgCisrCisgICAgIGFy Z2xlbmd0aD1nbG9idXNfbGliY192ZnByaW50ZihnbG9idXNfaV9mdHBfY29udHJvbF9kZXZudWxs LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcHNwZWMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcCk7CisgCisgICAgIHZhX2VuZChhcCk7Cist ICAgIAorKworICAgICBpZihhcmdsZW5ndGggPCAxKQorICAgICB7CisgICAgICAgICByZXN1bHQ9 Z2xvYnVzX2Vycm9yX3B1dCgKK0BAIC0yODU3LDEzICsyODU3LDEzIEBAIGdsb2J1c19mdHBfY29u dHJvbF9zZW5kX3Jlc3BvbnNlKAorICAgICAgICAgICAgIHJlc3VsdD1yYzsKKyAgICAgICAgICAg ICBnb3RvIHJldHVybl9lcnJvcjsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAg YnVmPWVuY29kZWRfYnVmOworICAgICB9CisgCisgICAgIGVsZW1lbnQgPSAoZ2xvYnVzX2Z0cF9j b250cm9sX3J3X3F1ZXVlX2VsZW1lbnRfdCAqKQorICAgICAgICAgZ2xvYnVzX2xpYmNfbWFsbG9j KHNpemVvZihnbG9idXNfZnRwX2NvbnRyb2xfcndfcXVldWVfZWxlbWVudF90KSk7CistICAgIAor KworICAgICBpZihlbGVtZW50ID09IEdMT0JVU19OVUxMKQorICAgICB7CisgICAgICAgICByZXN1 bHQ9Z2xvYnVzX2Vycm9yX3B1dCgKK0BAIC0yOTE3LDcgKzI5MTcsNyBAQCBnbG9idXNfZnRwX2Nv bnRyb2xfc2VuZF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChnbG9idXNfc2l6ZV90KSBzdHJsZW4oKGNoYXIgKikgYnVmKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2Z0cF9jb250cm9sX3NlbmRfcmVzcG9u c2VfY2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSBo YW5kbGUpOworLSAgICAKKysKKyAgICAgICAgIGlmKHJjICE9IEdMT0JVU19TVUNDRVNTKQorICAg ICAgICAgeworICAgICAgICAgICAgIGdsb2J1c19tdXRleF9sb2NrKCYoaGFuZGxlLT5jY19oYW5k bGUubXV0ZXgpKTsKK0BAIC0yOTI3LDI2ICsyOTI3LDI2IEBAIGdsb2J1c19mdHBfY29udHJvbF9z ZW5kX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICBxdWV1ZV9lbXB0eT1nbG9idXNfZmlmb19l bXB0eSgmaGFuZGxlLT5jY19oYW5kbGUud3JpdGVycyk7CisgCisgICAgICAgICAgICAgICAgIGlm KCFoYW5kbGUtPmNjX2hhbmRsZS5jYl9jb3VudCAmJgorLSAgICAgICAgICAgICAgICAgICBoYW5k bGUtPmNjX2hhbmRsZS5jY19zdGF0ZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfQ0xPU0lORykgCist ICAgICAgICAgICAgICAgIHsgCistICAgICAgICAgICAgICAgICAgICBjYWxsX2Nsb3NlX2NiID0g R0xPQlVTX1RSVUU7IAorLSAgICAgICAgICAgICAgICB9IAorKyAgICAgICAgICAgICAgICAgICBo YW5kbGUtPmNjX2hhbmRsZS5jY19zdGF0ZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfQ0xPU0lORykK KysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgY2FsbF9jbG9zZV9jYiA9 IEdMT0JVU19UUlVFOworKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAg ICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJihoYW5kbGUtPmNjX2hhbmRsZS5tdXRleCkpOwor IAorLSAgICAgICAgICAgIGlmKGNhbGxfY2xvc2VfY2IgPT0gR0xPQlVTX1RSVUUpIAorLSAgICAg ICAgICAgIHsgCistICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jb250cm9sX2NhbGxfY2xv c2VfY2IoaGFuZGxlKTsgCisrICAgICAgICAgICAgaWYoY2FsbF9jbG9zZV9jYiA9PSBHTE9CVVNf VFJVRSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jb250 cm9sX2NhbGxfY2xvc2VfY2IoaGFuZGxlKTsKKyAgICAgICAgICAgICB9CisgCisgICAgICAgICAg ICAgZ2xvYnVzX2xpYmNfZnJlZShidWYpOworLSAgICAgICAgICAgIGdsb2J1c19saWJjX2ZyZWUo ZWxlbWVudCk7ICAKKysgICAgICAgICAgICBnbG9idXNfbGliY19mcmVlKGVsZW1lbnQpOworIAor ICAgICAgICAgICAgIGlmKHF1ZXVlX2VtcHR5ID09IEdMT0JVU19GQUxTRSkKKyAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jb250cm9sX3dyaXRlX25leHQoaGFu ZGxlKTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgcmVz dWx0PXJjOworICAgICAgICAgICAgIGdvdG8gcmV0dXJuX2Vycm9yOworICAgICAgICAgfQorQEAg LTI5NjEsOCArMjk2MSw4IEBAIHJldHVybl9lcnJvcjoKKyAjaWZkZWYgR0xPQlVTX0lOVEVSTkFM X0RPQworIAorIC8qKgorLSAqIEludGVybmFsIGNhbGxiYWNrIGZvciB0aGUgZ2xvYnVzX2lvX3Jl Z2lzdGVyX3dyaXRlIGZ1bmN0aW9uLiAgICAKKy0gKiAKKysgKiBJbnRlcm5hbCBjYWxsYmFjayBm b3IgdGhlIGdsb2J1c19pb19yZWdpc3Rlcl93cml0ZSBmdW5jdGlvbi4KKysgKgorICAqIFRoaXMg aXMgYW4gaW50ZXJuYWwgY2FsbGJhY2sgdXNlZCBhcyBwYXJ0IG9mIHRoZQorICAqIGdsb2J1c19m dHBfY29udHJvbF9zZW5kX3Jlc3BvbnNlIGZ1bmN0aW9uLiBJdCBjaGVja3MgdGhlIHJlc3VsdCBv ZgorICAqIHRoZSB3cml0ZSAod2hpY2ggd2FzIHVzZWQgdG8gc2VuZCBhIHJlc3BvbnNlIHRvIHRo ZSBjbGllbnQpLCBhbmQKK0BAIC0yOTc1LDIzICsyOTc1LDIzIEBAIHJldHVybl9lcnJvcjoKKyAg KiAgICAgICAgVGhlIGdsb2J1c19pbyBoYW5kbGUgZm9yIHRoZSBjb25uZWN0aW9uLiBJbiBwcmFj dGljZSB0aGlzCisgICogICAgICAgIHJlcHJlc2VudHMgdGhlIHNvY2tldCBmZCBmb3IgdGhlIGNv bm5lY3Rpb24uCisgICogQHBhcmFtIHJlc3VsdAorLSAqICAgICAgICBUaGUgcmVzdWx0IG9mIHRo ZSB3cml0ZSBvcGVyYXRpb24gCisrICogICAgICAgIFRoZSByZXN1bHQgb2YgdGhlIHdyaXRlIG9w ZXJhdGlvbgorICAqCisgICogQHJldHVybiB2b2lkCisgICoKKyAgKiBAbm90ZSBJZiBhIGVycm9y IGlzIGRldGVjdGVkIGluIHRoaXMgZnVuY3Rpb24gdGhlIHVzZXIgY2FsbGJhY2sgaXMKKyAgKiAg ICAgICBjYWxsZWQgd2l0aCBhbiBhcHByb3ByaWF0ZSBlcnJvciBvYmplY3Qgb3IgZnRwIHJlc3Bv bnNlIGFuZAorLSAqICAgICAgIHRoZSBmdW5jdGlvbiByZXR1cm5zLiAKKysgKiAgICAgICB0aGUg ZnVuY3Rpb24gcmV0dXJucy4KKyAgKi8KKyAKKyAjZW5kaWYKKyAKKy1zdGF0aWMgdm9pZCAKKytz dGF0aWMgdm9pZAorIGdsb2J1c19sX2Z0cF9jb250cm9sX3NlbmRfcmVzcG9uc2VfY2IoCistICAg IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgCisrICAgIHZv aWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywKKyAgICAgZ2xvYnVz X2lvX2hhbmRsZV90ICogICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLAorICAgICBnbG9idXNf cmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsCistICAgIGdsb2J1c19i eXRlX3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgCisrICAgIGdsb2J1c19ieXRl X3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwKKyAgICAgZ2xvYnVzX3NpemVfdCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJ5dGVzKQorIHsKKyAgICAgZ2xvYnVzX2Z0cF9j Y19oYW5kbGVfdCAqICAgICAgICAgICAgICAgICAgY2NfaGFuZGxlOworQEAgLTMwMTQsMTIgKzMw MTQsMTIgQEAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfc2VuZF9yZXNwb25zZV9jYigKKyAgICAgICAg IHF1ZXVlX2VtcHR5PWdsb2J1c19maWZvX2VtcHR5KCZjY19oYW5kbGUtPndyaXRlcnMpOworICAg ICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJihjY19oYW5kbGUtPm11dGV4KSk7CistICAg IAorKworICAgICBpZihxdWV1ZV9lbXB0eSA9PSBHTE9CVVNfRkFMU0UpCisgICAgIHsKKyAgICAg ICAgIGdsb2J1c19pX2Z0cF9jb250cm9sX3dyaXRlX25leHQoY19oYW5kbGUpOworICAgICB9Cist ICAgIAorKworICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAg ICAgIGVycm9yPWdsb2J1c19lcnJvcl9nZXQocmVzdWx0KTsKK0BAIC0zMDMxLDI2ICszMDMxLDI2 IEBAIGdsb2J1c19sX2Z0cF9jb250cm9sX3NlbmRfcmVzcG9uc2VfY2IoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCk7CisgCisgICAgIGdsb2J1c19saWJjX2Zy ZWUoZWxlbWVudCk7CistICAgIAorKworICAgICBnbG9idXNfbXV0ZXhfbG9jaygmKGNjX2hhbmRs ZS0+bXV0ZXgpKTsKKyAgICAgeworICAgICAgICAgY2NfaGFuZGxlLT5jYl9jb3VudC0tOworIAor ICAgICAgICAgaWYoIWNjX2hhbmRsZS0+Y2JfY291bnQgJiYKKy0gICAgICAgICAgIGNjX2hhbmRs ZS0+Y2Nfc3RhdGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX0NMT1NJTkcpIAorLSAgICAgICAgeyAK Ky0gICAgICAgICAgICBjYWxsX2Nsb3NlX2NiID0gR0xPQlVTX1RSVUU7IAorKyAgICAgICAgICAg Y2NfaGFuZGxlLT5jY19zdGF0ZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfQ0xPU0lORykKKysgICAg ICAgIHsKKysgICAgICAgICAgICBjYWxsX2Nsb3NlX2NiID0gR0xPQlVTX1RSVUU7CisgICAgICAg ICB9CisgICAgIH0KKyAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmKGNjX2hhbmRsZS0+bXV0ZXgp KTsKKy0gICAgCistICAgIGlmKGNhbGxfY2xvc2VfY2IgPT0gR0xPQlVTX1RSVUUpIAorLSAgICB7 IAorLSAgICAgICAgZ2xvYnVzX2lfZnRwX2NvbnRyb2xfY2FsbF9jbG9zZV9jYihjX2hhbmRsZSk7 IAorLSAgICB9IAorKworKyAgICBpZihjYWxsX2Nsb3NlX2NiID09IEdMT0JVU19UUlVFKQorKyAg ICB7CisrICAgICAgICBnbG9idXNfaV9mdHBfY29udHJvbF9jYWxsX2Nsb3NlX2NiKGNfaGFuZGxl KTsKKysgICAgfQorIAorICAgICByZXR1cm47CistICAgIAorKworIHJldHVybl9lcnJvcjoKKyAK KyAgICAgKGVsZW1lbnQtPnNlbmRfcmVzcG9uc2VfY2IpKChlbGVtZW50LT5hcmcpLAorQEAgLTMw NjMsMTcgKzMwNjMsMTcgQEAgcmV0dXJuX2Vycm9yOgorICAgICB7CisgICAgICAgICBjY19oYW5k bGUtPmNiX2NvdW50LS07CisgICAgICAgICBpZighY2NfaGFuZGxlLT5jYl9jb3VudCAmJgorLSAg ICAgICAgICAgY2NfaGFuZGxlLT5jY19zdGF0ZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfQ0xPU0lO RykgCistICAgICAgICB7IAorLSAgICAgICAgICAgIGNhbGxfY2xvc2VfY2IgPSBHTE9CVVNfVFJV RTsgCisrICAgICAgICAgICBjY19oYW5kbGUtPmNjX3N0YXRlID09IEdMT0JVU19GVFBfQ09OVFJP TF9DTE9TSU5HKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGNhbGxfY2xvc2VfY2IgPSBHTE9C VVNfVFJVRTsKKyAgICAgICAgIH0KKyAgICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCYo Y2NfaGFuZGxlLT5tdXRleCkpOworIAorLSAgICBpZihjYWxsX2Nsb3NlX2NiID09IEdMT0JVU19U UlVFKSAKKy0gICAgeyAKKy0gICAgICAgIGdsb2J1c19pX2Z0cF9jb250cm9sX2NhbGxfY2xvc2Vf Y2IoY19oYW5kbGUpOyAKKy0gICAgfSAKKysgICAgaWYoY2FsbF9jbG9zZV9jYiA9PSBHTE9CVVNf VFJVRSkKKysgICAgeworKyAgICAgICAgZ2xvYnVzX2lfZnRwX2NvbnRyb2xfY2FsbF9jbG9zZV9j YihjX2hhbmRsZSk7CisrICAgIH0KKyAKKyAgICAgcmV0dXJuOworIH0KK0BAIC0zMDgzLDcgKzMw ODMsNyBAQCByZXR1cm5fZXJyb3I6CisgLyoqCisgICogSW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9u IHdoaWNoIGJhc2UgNjQgZGVjb2RlcyBhbmQgZ3NzIHVud3JhcHMgYQorICAqIE1JQyBjb21tYW5k CistICogCisrICoKKyAgKiBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gd2hpY2ggYmFzZSA2NCBk ZWNvZGVzIGFuZCBnc3MgdW53cmFwcyBhCisgICogTUlDIGNvbW1hbmQKKyAgKgorQEAgLTMwOTUs NyArMzA5NSw3IEBAIHJldHVybl9lcnJvcjoKKyAgKiBAcGFyYW0gYXV0aF9pbmZvCisgICogICAg ICAgIFRoZSBhdXRoX2luZm8gc3RydWN0dXJlIHRvIHVzZSBmb3IgZ3NzIHVud3JhcHBpbmcgdGhl IGNvbW1hbmQKKyAgKgorLSAqIEByZXR1cm4gCisrICogQHJldHVybgorICAqICAgICAgICAtIGVy cm9yIG9iamVjdAorICAqICAgICAgICAtIEdMT0JVU19TVUNDRVNTCisgICoKK0BAIC0zMTE5LDcg KzMxMTksNyBAQCBnbG9idXNfaV9mdHBfY29udHJvbF9kZWNvZGVfY29tbWFuZCgKKyAgICAgT01f dWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluX3N0YXQ7CisgICAgIGlu dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZfc3RhdGU7CisgICAg IGdzc19xb3BfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFvcF9zdGF0ZTsKKy0g ICAgCisrCisgICAgIGlmKGNtZCA9PSBHTE9CVVNfTlVMTCkKKyAgICAgeworICAgICAgICAgcmV0 dXJuIGdsb2J1c19lcnJvcl9wdXQoCitAQCAtMzEyOSwxMSArMzEyOSwxMSBAQCBnbG9idXNfaV9m dHBfY29udHJvbF9kZWNvZGVfY29tbWFuZCgKKyAgICAgICAgICAgICAgICAgX0ZDU0woImdsb2J1 c19pX2Z0cF9jb250cm9sX2RlY29kZV9jb21tYW5kOiBjbWQgYXJndW1lbnQgaXMgTlVMTCIpKQor ICAgICAgICAgICAgICk7CisgICAgIH0KKy0gICAgCisrCisgICAgIGxlbmd0aD1zdHJsZW4oY21k KTsKKy0gICAgCisrCisgICAgIHRtcD0oY2hhciAqKSBnbG9idXNfbGliY19tYWxsb2MobGVuZ3Ro KzEpOworLSAgICAKKysKKyAgICAgaWYodG1wID09IEdMT0JVU19OVUxMKQorICAgICB7CisgICAg ICAgICByZXR1cm4gZ2xvYnVzX2Vycm9yX3B1dCgKK0BAIC0zMTQzLDcgKzMxNDMsNyBAQCBnbG9i dXNfaV9mdHBfY29udHJvbF9kZWNvZGVfY29tbWFuZCgKKyAgICAgICAgICAgICAgICAgX0ZDU0wo Imdsb2J1c19mdHBfY29udHJvbF9kZWNvZGVfY29tbWFuZDogbWFsbG9jIGZhaWxlZCIpKQorICAg ICAgICAgICAgICk7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKHNzY2FuZihjbWQsIiU0cyIs dG1wKSA8IDEpCisgICAgIHsKKyAgICAgICAgIHJjID0gZ2xvYnVzX2Vycm9yX3B1dCgKK0BAIC0z MTU0LDE2ICszMTU0LDE2IEBAIGdsb2J1c19pX2Z0cF9jb250cm9sX2RlY29kZV9jb21tYW5kKAor ICAgICAgICAgICAgICk7CisgICAgICAgICBnb3RvIGRlY29kZV9lcnJvcjsKKyAgICAgfQorLSAg ICAKKysKKyAgICAgaT0wOworLSAgICAKKysKKyAgICAgd2hpbGUodG1wW2ldICE9ICdcMCcpCisg ICAgIHsKKyAgICAgICAgIHRtcFtpXT10b3VwcGVyKHRtcFtpXSk7CisgICAgICAgICBpKys7Cisg ICAgIH0KKy0gICAgCistICAgIAorKworKworICAgICBpZihzdHJjbXAodG1wLCJNSUMiKSAmJgor ICAgICAgICBzdHJjbXAodG1wLCJFTkMiKSkKKyAgICAgeworQEAgLTMxODAsNyArMzE4MCw3IEBA IGdsb2J1c19pX2Z0cF9jb250cm9sX2RlY29kZV9jb21tYW5kKAorICAgICB7CisgICAgICAgICAv KiBpZiBjb21tYW5kIGlzIEVOQyBhbmQgZW5jcnlwdGlvbiBpc24ndCB0dXJuZWQgb24gaW4KKyAg ICAgICAgICAgIHNlYyBjb250ZXh0ICovCistICAgICAgICAKKysKKyAgICAgICAgIHJjID0gZ2xv YnVzX2Vycm9yX3B1dCgKKyAgICAgICAgICAgICBnbG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmlu ZygKKyAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX01PRFVMRSwKK0BAIC0zMTg5 LDcgKzMxODksNyBAQCBnbG9idXNfaV9mdHBfY29udHJvbF9kZWNvZGVfY29tbWFuZCgKKyAgICAg ICAgICAgICApOworICAgICAgICAgZ290byBkZWNvZGVfZXJyb3I7CisgICAgIH0KKy0gICAgICAg CisrCisgICAgIGlmKHNzY2FuZihjbWQsIiUqcyAlcyIsdG1wKSA8IDEpCisgICAgIHsKKyAgICAg ICAgIHJjID0gZ2xvYnVzX2Vycm9yX3B1dCgKK0BAIC0zMjAwLDkgKzMyMDAsOSBAQCBnbG9idXNf aV9mdHBfY29udHJvbF9kZWNvZGVfY29tbWFuZCgKKyAgICAgICAgICAgICApOworICAgICAgICAg Z290byBkZWNvZGVfZXJyb3I7CisgICAgIH0KKy0gICAgCisrCisgICAgICpkZWNvZGVkX2NtZCA9 IChjaGFyICopIGdsb2J1c19saWJjX21hbGxvYygobGVuZ3RoKzMpICogNi84KTsKKy0gICAgICAg IAorKworICAgICBpZigqZGVjb2RlZF9jbWQgPT0gR0xPQlVTX05VTEwpCisgICAgIHsKKyAgICAg ICAgIHJjID0gZ2xvYnVzX2Vycm9yX3B1dCgKK0BAIC0zMjEzLDI3ICszMjEzLDI3IEBAIGdsb2J1 c19pX2Z0cF9jb250cm9sX2RlY29kZV9jb21tYW5kKAorICAgICAgICAgICAgICk7CisgICAgICAg ICBnb3RvIGRlY29kZV9lcnJvcjsKKyAgICAgfQorLSAgICAgICAgCisrCisgICAgIHJjPWdsb2J1 c19pX2Z0cF9jb250cm9sX3JhZGl4X2RlY29kZSgKKyAgICAgICAgIChnbG9idXNfYnl0ZV90ICop IHRtcCwKKyAgICAgICAgIChnbG9idXNfYnl0ZV90ICopICpkZWNvZGVkX2NtZCwmbGVuZ3RoKTsK Ky0gICAgICAgIAorKworICAgICBpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAg ICAgICAgZ2xvYnVzX2xpYmNfZnJlZSgqZGVjb2RlZF9jbWQpOworICAgICAgICAgZ290byBkZWNv ZGVfZXJyb3I7CisgICAgIH0KKy0gICAgCisrCisgICAgIHdyYXBwZWRfdG9rZW4udmFsdWUgPSAq ZGVjb2RlZF9jbWQ7CisgICAgIHdyYXBwZWRfdG9rZW4ubGVuZ3RoID0gbGVuZ3RoOworIAorLSAg ICBtYWpfc3RhdCA9IGdzc191bndyYXAoJm1pbl9zdGF0LCAKKysgICAgbWFqX3N0YXQgPSBnc3Nf dW53cmFwKCZtaW5fc3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhfaW5mby0+ YXV0aF9nc3NhcGlfY29udGV4dCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICZ3cmFwcGVk X3Rva2VuLCAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cmFwcGVkX3Rva2VuLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgJnVud3JhcHBlZF90b2tlbiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICZjb25mX3N0YXRlLCAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICZj b25mX3N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnFvcF9zdGF0ZSk7CistICAg IAorKworICAgICBpZihtYWpfc3RhdCAhPSBHU1NfU19DT01QTEVURSkKKyAgICAgeworICAgICAg ICAgcmMgPSBnbG9idXNfZXJyb3JfcHV0KAorQEAgLTMyNDIsMjMgKzMyNDIsMjMgQEAgZ2xvYnVz X2lfZnRwX2NvbnRyb2xfZGVjb2RlX2NvbW1hbmQoCisgICAgICAgICAgICAgICAgIEdMT0JVU19O VUxMLAorICAgICAgICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2Z0cF9jb250cm9sX2RlY29kZV9j b21tYW5kOiBmYWlsZWQgdG8gdW53cmFwIGNvbW1hbmQiKSkKKyAgICAgICAgICAgICApOworLSAg ICAgICAgCisrCisgICAgICAgICBnbG9idXNfbGliY19mcmVlKCpkZWNvZGVkX2NtZCk7CisgICAg ICAgICBnb3RvIGRlY29kZV9lcnJvcjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX2Fz c2VydChzdHJsZW4oY21kKSA+IHVud3JhcHBlZF90b2tlbi5sZW5ndGgpOworLSAgICAgICAgICAg ICAgICAgICAgCisrCisgICAgIG1lbWNweSh0bXAsCisgICAgICAgICAgICB1bndyYXBwZWRfdG9r ZW4udmFsdWUsCisgICAgICAgICAgICB1bndyYXBwZWRfdG9rZW4ubGVuZ3RoKTsKKyAKKyAgICAg dG1wW3Vud3JhcHBlZF90b2tlbi5sZW5ndGhdID0gJ1wwJzsKKy0gICAgCisrCisgICAgIGdzc19y ZWxlYXNlX2J1ZmZlcigmbWluX3N0YXQsICZ1bndyYXBwZWRfdG9rZW4pOworLSAgICAKKysKKyAg ICAgZ2xvYnVzX2xpYmNfZnJlZSgqZGVjb2RlZF9jbWQpOworLSAgICAKKysKKyAgICAgKmRlY29k ZWRfY21kPXRtcDsKKyAKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworQEAgLTMyNjYsOSAr MzI2Niw5IEBAIGdsb2J1c19pX2Z0cF9jb250cm9sX2RlY29kZV9jb21tYW5kKAorIGRlY29kZV9l cnJvcjoKKyAKKyAgICAgKmRlY29kZWRfY21kPUdMT0JVU19OVUxMOworLSAgICAKKysKKyAgICAg Z2xvYnVzX2xpYmNfZnJlZSh0bXApOworLSAgICAKKysKKyAgICAgcmV0dXJuIHJjOworIH0KKyAK K0BAIC0zMjc3LDcgKzMyNzcsNyBAQCBkZWNvZGVfZXJyb3I6CisgLyoqCisgICogSW50ZXJuYWwg aGVscGVyIGZ1bmN0aW9uIHdoaWNoIGdzcyB3cmFwcywgYmFzZSA2NCBlbmNvZGVzIGFuZCBwdXRz CisgICogYSA2MzUgaW4gZnJvbnQgb2YgdGhlIHN1cHBsaWVkIHJlc3BvbnNlCistICogCisrICoK KyAgKiBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gd2hpY2ggZ3NzIHdyYXBzLCBiYXNlIDY0IGVu Y29kZXMgYW5kIHB1dHMKKyAgKiBhIDYzNSBpbiBmcm9udCBvZiB0aGUgc3VwcGxpZWQgcmVzcG9u c2UKKyAgKgorQEAgLTMyODksNyArMzI4OSw3IEBAIGRlY29kZV9lcnJvcjoKKyAgKiBAcGFyYW0g YXV0aF9pbmZvCisgICogICAgICAgIFRoZSBhdXRoX2luZm8gc3RydWN0dXJlIHRvIHVzZSBmb3Ig Z3NzIHdyYXBwaW5nIHRoZSByZXBseS4KKyAgKgorLSAqIEByZXR1cm4gCisrICogQHJldHVybgor ICAqICAgICAgICAtIGVycm9yIG9iamVjdAorICAqICAgICAgICAtIEdMT0JVU19TVUNDRVNTCisg ICoKK0BAIC0zMzEwLDcgKzMzMTAsNyBAQCBnbG9idXNfaV9mdHBfY29udHJvbF9lbmNvZGVfcmVw bHkoCisgICAgIE9NX3VpbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9zdGF0 OworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25mX3N0YXRl OworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg7Cist ICAgIAorKworICAgICBpZihhdXRoX2luZm8gPT0gR0xPQlVTX05VTEwgfHwKKyAgICAgICAgcmVw bHkgPT0gR0xPQlVTX05VTEwgfHwKKyAgICAgICAgZW5jb2RlZF9yZXBseSA9PSBHTE9CVVNfTlVM TCkKK0BAIC0zMzIyLDcgKzMzMjIsNyBAQCBnbG9idXNfaV9mdHBfY29udHJvbF9lbmNvZGVfcmVw bHkoCisgICAgICAgICAgICAgICAgIF9GQ1NMKCJnbG9idXNfaV9mdHBfY29udHJvbF9lbmNvZGVf cmVwbHk6IE5VTEwgYXJndW1lbnQgZGV0ZWN0ZWQiKSkKKyAgICAgICAgICAgICApOworICAgICB9 CistICAgIAorKworICAgICBpbl9idWYudmFsdWUgPSByZXBseTsKKyAgICAgaW5fYnVmLmxlbmd0 aCA9IHN0cmxlbihyZXBseSkrMTsKKyAKK0BAIC0zMzMwLDExICszMzMwLDExIEBAIGdsb2J1c19p X2Z0cF9jb250cm9sX2VuY29kZV9yZXBseSgKKyAgICAgICAgICAgICAgICAgICAgICAgICBhdXRo X2luZm8tPmF1dGhfZ3NzYXBpX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgMCwK KyAgICAgICAgICAgICAgICAgICAgICAgICBHU1NfQ19RT1BfREVGQVVMVCwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAmaW5fYnVmLCAKKysgICAgICAgICAgICAgICAgICAgICAgICAmaW5fYnVm LAorICAgICAgICAgICAgICAgICAgICAgICAgICZjb25mX3N0YXRlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICZvdXRfYnVmKTsKKy0gICAgCistICAgIGlmKG1hal9zdGF0ICE9IEdTU19TX0NP TVBMRVRFKSAKKysKKysgICAgaWYobWFqX3N0YXQgIT0gR1NTX1NfQ09NUExFVEUpCisgICAgIHsK KyAgICAgICAgIHJldHVybiBnbG9idXNfZXJyb3JfcHV0KAorICAgICAgICAgICAgIGdsb2J1c19l cnJvcl9jb25zdHJ1Y3Rfc3RyaW5nKAorQEAgLTMzNjgsMTEgKzMzNjgsMTEgQEAgZ2xvYnVzX2lf ZnRwX2NvbnRyb2xfZW5jb2RlX3JlcGx5KAorICAgICB7CisgICAgICAgICBzdHJjYXQoKmVuY29k ZWRfcmVwbHksIjYzMSAiKTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgbGVuZ3RoID0gb3V0X2J1 Zi5sZW5ndGg7CisgICAgIGdsb2J1c19pX2Z0cF9jb250cm9sX3JhZGl4X2VuY29kZSgKKyAgICAg ICAgIG91dF9idWYudmFsdWUsCistICAgICAgICAoZ2xvYnVzX2J5dGVfdCAqKSAmKCgqZW5jb2Rl ZF9yZXBseSlbNF0pLCAKKysgICAgICAgIChnbG9idXNfYnl0ZV90ICopICYoKCplbmNvZGVkX3Jl cGx5KVs0XSksCisgICAgICAgICAmbGVuZ3RoKTsKKyAKKyAgICAgKCplbmNvZGVkX3JlcGx5KVts ZW5ndGgrNF09J1xyJzsKK0BAIC0zMzgwLDcgKzMzODAsNyBAQCBnbG9idXNfaV9mdHBfY29udHJv bF9lbmNvZGVfcmVwbHkoCisgICAgICgqZW5jb2RlZF9yZXBseSlbbGVuZ3RoKzZdPSdcMCc7Cisg CisgICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmbWluX3N0YXQsICZvdXRfYnVmKTsKKy0gICAgCisr CisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyB9CisgCitAQCAtMzM5MiwxMiArMzM5Miwx MiBAQCBnbG9idXNfaV9mdHBfY29udHJvbF9lbmNvZGVfcmVwbHkoCisgLyoqCisgICogSW50ZXJu YWwgaGVscGVyIGZ1bmN0aW9uIHdoaWNoIHNldHMgdXAgYSBsaXN0IGZvciBrZWVwaW5nIHRyYWNr IG9mCisgICogc2VydmVyIGhhbmRsZXMuCistICogCisrICoKKyAgKiBJbnRlcm5hbCBoZWxwZXIg ZnVuY3Rpb24gd2hpY2ggc2V0cyB1cCBhIGxpc3QgZm9yIGtlZXBpbmcgdHJhY2sgb2YKKyAgKiBz ZXJ2ZXIgaGFuZGxlcy4KKyAgKgorICAqCistICogQHJldHVybiAKKysgKiBAcmV0dXJuCisgICog ICAgICAgIC0gR0xPQlVTX1NVQ0NFU1MKKyAgKgorICAqLworQEAgLTM0MDksNyArMzQwOSw3IEBA IGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19pX2Z0cF9jb250cm9sX3NlcnZlcl9hY3RpdmF0ZSh2 b2lkKQorIHsKKyAgICAgZ2xvYnVzX2Z0cF9sX2NvbW1hbmRfaGFzaF9lbnRyeV90ICogZW50cmll czsKKy0gICAgICAgIAorKworICAgICBnbG9idXNfbXV0ZXhfaW5pdCgKKyAgICAgICAgICYoZ2xv YnVzX2xfZnRwX3NlcnZlcl9oYW5kbGVfbGlzdF9tdXRleCksIEdMT0JVU19OVUxMKTsKKyAKK0BA IC0zNDE5LDcgKzM0MTksNyBAQCBnbG9idXNfaV9mdHBfY29udHJvbF9zZXJ2ZXJfYWN0aXZhdGUo dm9pZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19oYXNodGFibGVfc3RyaW5n X2tleWVxKTsKKyAKKyAgICAgLyogdGhlIHNpemUgb2YgdGhpcyBhcnJheSBuZWVkcyB0byBiZSBh ZGp1c3RlZCAqLworLSAgICAgICAgCisrCisgICAgIGVudHJpZXMgPSAoZ2xvYnVzX2Z0cF9sX2Nv bW1hbmRfaGFzaF9lbnRyeV90ICopCisgICAgICAgICBnbG9idXNfbGliY19tYWxsb2MoNDQgKiBz aXplb2YoZ2xvYnVzX2Z0cF9sX2NvbW1hbmRfaGFzaF9lbnRyeV90KSk7CisgCitAQCAtMzUzMCw3 ICszNTMwLDcgQEAgZ2xvYnVzX2lfZnRwX2NvbnRyb2xfc2VydmVyX2FjdGl2YXRlKHZvaWQpCisg ICAgIGdsb2J1c19oYXNodGFibGVfaW5zZXJ0KCZnbG9idXNfbF9mdHBfY29udHJvbF9wYXJzZV90 YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNNTlQiLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmZW50cmllc1sxN10pOworLSAgICAgICAgCisrCisgICAgIGVudHJp ZXNbMThdLmNvZGUgPSBHTE9CVVNfRlRQX0NPTlRST0xfQ09NTUFORF9PUFRTOworICAgICBlbnRy aWVzWzE4XS5wYXJzZV9mdW5jID0gZ2xvYnVzX2xfZnRwX2NvbnRyb2xfcGFyc2Vfb3B0c19jbWQ7 CisgICAgIGdsb2J1c19oYXNodGFibGVfaW5zZXJ0KCZnbG9idXNfbF9mdHBfY29udHJvbF9wYXJz ZV90YWJsZSwKK0BAIC0zNTg0LDcgKzM1ODQsNyBAQCBnbG9idXNfaV9mdHBfY29udHJvbF9zZXJ2 ZXJfYWN0aXZhdGUodm9pZCkKKyAgICAgZ2xvYnVzX2hhc2h0YWJsZV9pbnNlcnQoJmdsb2J1c19s X2Z0cF9jb250cm9sX3BhcnNlX3RhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi UEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbnRyaWVzWzI2XSk7CistICAg ICAgICAKKysKKyAgICAgZW50cmllc1syN10uY29kZSA9IEdMT0JVU19GVFBfQ09OVFJPTF9DT01N QU5EX1JNRDsKKyAgICAgZW50cmllc1syN10ucGFyc2VfZnVuYyA9IGdsb2J1c19sX2Z0cF9jb250 cm9sX3BhcnNlX3N0cmluZ19hcmc7CisgICAgIGdsb2J1c19oYXNodGFibGVfaW5zZXJ0KCZnbG9i dXNfbF9mdHBfY29udHJvbF9wYXJzZV90YWJsZSwKK0BAIC0zNjk3LDkgKzM2OTcsOSBAQCBnbG9i dXNfaV9mdHBfY29udHJvbF9zZXJ2ZXJfYWN0aXZhdGUodm9pZCkKKyAgKgorICAqIEludGVybmFs IGhlbHBlciBmdW5jdGlvbiB3aGljaCBnb2VzIHRocm91Z2ggYSBsaXN0IG9mIHNlcnZlcgorICAq IGhhbmRsZXMgYW5kIGNsb3NlcyBhbnkgb3BlbiBjb25uZWN0aW9ucyBhc3NvY2lhdGVkIHdpdGgg dGhlCistICogaGFuZGxlcy4gCistICogCistICogQHJldHVybiAKKysgKiBoYW5kbGVzLgorKyAq CisrICogQHJldHVybgorICAqICAgICAgICAtIEdMT0JVU19TVUNDRVNTCisgICoKKyAgKi8KK0BA IC0zNzIwLDcgKzM3MjAsNyBAQCBnbG9idXNfaV9mdHBfY29udHJvbF9zZXJ2ZXJfZGVhY3RpdmF0 ZSh2b2lkKQorICAgICAgICAgICAgICAgICBnbG9idXNfbGlzdF9maXJzdChnbG9idXNfbF9mdHBf c2VydmVyX2hhbmRsZV9saXN0KTsKKyAgICAgICAgICAgICBnbG9idXNfbXV0ZXhfbG9jaygmKHNl cnZlcl9oYW5kbGUtPm11dGV4KSk7CisgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBp ZihzZXJ2ZXJfaGFuZGxlLT5zdGF0ZSA9PSAKKysgICAgICAgICAgICAgICAgaWYoc2VydmVyX2hh bmRsZS0+c3RhdGUgPT0KKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX1NF UlZFUl9MSVNURU5JTkcpCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg IHJjPWdsb2J1c19pb19jbG9zZSgmKHNlcnZlcl9oYW5kbGUtPmlvX2hhbmRsZSkpOworQEAgLTM3 MjksNyArMzcyOSw3IEBAIGdsb2J1c19pX2Z0cF9jb250cm9sX3NlcnZlcl9kZWFjdGl2YXRlKHZv aWQpCisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZ2xv YnVzX211dGV4X3VubG9jaygmKHNlcnZlcl9oYW5kbGUtPm11dGV4KSk7CistICAgICAgICAgICAg CisrCisgICAgICAgICAgICAgZ2xvYnVzX211dGV4X2Rlc3Ryb3koJihzZXJ2ZXJfaGFuZGxlLT5t dXRleCkpOworICAgICAgICAgICAgIGdsb2J1c19saXN0X3JlbW92ZSgmZ2xvYnVzX2xfZnRwX3Nl cnZlcl9oYW5kbGVfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVz X2xfZnRwX3NlcnZlcl9oYW5kbGVfbGlzdCk7CitAQCAtMzc0MSwxOCArMzc0MSwxOCBAQCBnbG9i dXNfaV9mdHBfY29udHJvbF9zZXJ2ZXJfZGVhY3RpdmF0ZSh2b2lkKQorIAorIAorICAgICAvKiBm cmVlIGFsbCBjb21tYW5kIGhhc2ggbWVtb3J5ICovCistICAgICAgICAKKysKKyAgICAgZ2xvYnVz X2xpYmNfZnJlZShnbG9idXNfaGFzaHRhYmxlX2xvb2t1cCgKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgJmdsb2J1c19sX2Z0cF9jb250cm9sX3BhcnNlX3RhYmxlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAiU0JVRiIpKTsKKyAKKyAgICAgZ2xvYnVzX2hhc2h0YWJsZV9kZXN0cm95KCZn bG9idXNfbF9mdHBfY29udHJvbF9wYXJzZV90YWJsZSk7CistICAgICAgICAKKysKKyAgICAgcmV0 dXJuIEdMT0JVU19TVUNDRVNTOworIH0KKyAKKyBnbG9idXNfcmVzdWx0X3QgZ2xvYnVzX2xfZnRw X2NvbnRyb2xfcGFyc2Vfc2J1Zl9jbWQoCistICAgIGdsb2J1c19mdHBfY29udHJvbF9jb21tYW5k X3QgKiAgICAgIGNvbW1hbmQpICAgICAgICAKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2NvbW1h bmRfdCAqICAgICAgY29tbWFuZCkKKyB7CisgICAgIGlmKHNzY2FuZihjb21tYW5kLT5ub29wLnJh d19jb21tYW5kLAorICAgICAgICAgICAgICAgIiUqcyAlZCIsICZjb21tYW5kLT5zYnVmLmJ1ZmZl cl9zaXplKSA8IDEpCitAQCAtMzc2NywxMiArMzc2NywxMiBAQCBnbG9idXNfcmVzdWx0X3QgZ2xv YnVzX2xfZnRwX2NvbnRyb2xfcGFyc2Vfc3RyaW5nX2FyZygKKyB7CisgICAgIGludCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aDsKKyAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXJnX3N0YXJ0OworLSAgICAgICAgCisrCisgICAgIGxlbmd0aCA9 IHN0cmxlbihjb21tYW5kLT5ub29wLnJhd19jb21tYW5kKTsKKy0gICAgICAgIAorKworICAgICBj b21tYW5kLT5zaXplLnN0cmluZ19hcmcgPQorICAgICAgICAgKGNoYXIgKikgZ2xvYnVzX2xpYmNf bWFsbG9jKGxlbmd0aCk7CistICAgICAgICAKKysKKyAgICAgaWYoY29tbWFuZC0+c2l6ZS5zdHJp bmdfYXJnID09IEdMT0JVU19OVUxMKQorICAgICB7CisgICAgICAgICByZXR1cm4gZ2xvYnVzX2Vy cm9yX3B1dCgKK0BAIC0zNzgxLDEwICszNzgxLDEwIEBAIGdsb2J1c19yZXN1bHRfdCBnbG9idXNf bF9mdHBfY29udHJvbF9wYXJzZV9zdHJpbmdfYXJnKAorICAgICAgICAgICAgICAgICBHTE9CVVNf TlVMTCwKKyAgICAgICAgICAgICAgICAgX0ZDU0woImdsb2J1c19mdHBfY29udHJvbF9jb21tYW5k X2luaXQ6IG1hbGxvYyBmYWlsZWQiKSkpOworICAgICB9CistICAgICAgICAKKysKKyAgICAgc3Nj YW5mKGNvbW1hbmQtPm5vb3AucmF3X2NvbW1hbmQsIiUqcyVuIiwKKyAgICAgICAgICAgICZhcmdf c3RhcnQpOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgd2hpbGUoaXNzcGFjZShjb21tYW5k LT5ub29wLnJhd19jb21tYW5kW2FyZ19zdGFydF0pKQorICAgICB7CisgICAgICAgICBhcmdfc3Rh cnQrKzsKK0BAIC0zNzk1LDExICszNzk1LDExIEBAIGdsb2J1c19yZXN1bHRfdCBnbG9idXNfbF9m dHBfY29udHJvbF9wYXJzZV9zdHJpbmdfYXJnKAorICAgICAgICAgbGVuZ3RoLS07CisgICAgIH0K KyAKKy0gICAgY29tbWFuZC0+bm9vcC5yYXdfY29tbWFuZFtsZW5ndGhdPSdcMCc7ICAgICAKKysg ICAgY29tbWFuZC0+bm9vcC5yYXdfY29tbWFuZFtsZW5ndGhdPSdcMCc7CisgCisgICAgIHN0cmNw eShjb21tYW5kLT5lcmV0LnN0cmluZ19hcmcsCisgICAgICAgICAgICAmY29tbWFuZC0+bm9vcC5y YXdfY29tbWFuZFthcmdfc3RhcnRdKTsKKy0gICAgICAgIAorKworICAgICByZXR1cm4gR0xPQlVT X1NVQ0NFU1M7CisgCisgfQorQEAgLTM4MDcsMTMgKzM4MDcsMTMgQEAgZ2xvYnVzX3Jlc3VsdF90 IGdsb2J1c19sX2Z0cF9jb250cm9sX3BhcnNlX3N0cmluZ19hcmcoCisgZ2xvYnVzX3Jlc3VsdF90 IGdsb2J1c19sX2Z0cF9jb250cm9sX3BhcnNlX25vX2FyZygKKyAgICAgZ2xvYnVzX2Z0cF9jb250 cm9sX2NvbW1hbmRfdCAqICAgICAgY29tbWFuZCkKKyB7CistICAgIGNvbW1hbmQtPmNkdXAuc3Ry aW5nX2FyZz1HTE9CVVNfTlVMTDsgICAgICAgCisrICAgIGNvbW1hbmQtPmNkdXAuc3RyaW5nX2Fy Zz1HTE9CVVNfTlVMTDsKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIH0KKyAKKyAKKyBn bG9idXNfcmVzdWx0X3QgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfcGFyc2VfYWxsb19jbWQoCistICAg IGdsb2J1c19mdHBfY29udHJvbF9jb21tYW5kX3QgKiAgICAgIGNvbW1hbmQpICAgICAgICAKKysg ICAgZ2xvYnVzX2Z0cF9jb250cm9sX2NvbW1hbmRfdCAqICAgICAgY29tbWFuZCkKKyB7CisgICAg IGNvbW1hbmQtPmFsbG8ucmVjb3JkX3NpemUgPSAwOworICAgICBpZihzc2NhbmYoY29tbWFuZC0+ bm9vcC5yYXdfY29tbWFuZCwiJSpzICVkIFIgJWQiLAorQEAgLTM4MjMsMTIgKzM4MjMsMTIgQEAg Z2xvYnVzX3Jlc3VsdF90IGdsb2J1c19sX2Z0cF9jb250cm9sX3BhcnNlX2FsbG9fY21kKAorICAg ICAgICAgY29tbWFuZC0+YWxsby5zaXplID0gMDsKKyAgICAgICAgIGNvbW1hbmQtPmFsbG8ucmVj b3JkX3NpemUgPSAwOworICAgICB9CistICAgICAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19T VUNDRVNTOworIH0KKyAKKyBnbG9idXNfcmVzdWx0X3QgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfcGFy c2Vfb3B0c19jbWQoCistICAgIGdsb2J1c19mdHBfY29udHJvbF9jb21tYW5kX3QgKiAgICAgIGNv bW1hbmQpICAgICAgICAKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2NvbW1hbmRfdCAqICAgICAg Y29tbWFuZCkKKyB7CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl bmd0aDsKKyAKK0BAIC0zODM2LDcgKzM4MzYsNyBAQCBnbG9idXNfcmVzdWx0X3QgZ2xvYnVzX2xf ZnRwX2NvbnRyb2xfcGFyc2Vfb3B0c19jbWQoCisgCisgICAgIGNvbW1hbmQtPm9wdHMuY21kX25h bWUgPQorICAgICAgICAgKGNoYXIgKikgZ2xvYnVzX2xpYmNfbWFsbG9jKGxlbmd0aCk7CistICAg ICAgICAgICAgCisrCisgICAgIGlmKGNvbW1hbmQtPm9wdHMuY21kX25hbWUgPT0gR0xPQlVTX05V TEwpCisgICAgIHsKKyAgICAgICAgIHJldHVybiBnbG9idXNfZXJyb3JfcHV0KAorQEAgLTM4NDYs NyArMzg0Niw3IEBAIGdsb2J1c19yZXN1bHRfdCBnbG9idXNfbF9mdHBfY29udHJvbF9wYXJzZV9v cHRzX2NtZCgKKyAgICAgICAgICAgICAgICAgX0ZDU0woImdsb2J1c19mdHBfY29udHJvbF9jb21t YW5kX2luaXQ6IG1hbGxvYyBmYWlsZWQiKSkpOworICAgICB9CisgCistICAgIGNvbW1hbmQtPm9w dHMuY21kX29wdHMgPSAKKysgICAgY29tbWFuZC0+b3B0cy5jbWRfb3B0cyA9CisgICAgICAgICAo Y2hhciAqKSBnbG9idXNfbGliY19tYWxsb2MobGVuZ3RoKTsKKyAKKyAgICAgaWYoY29tbWFuZC0+ b3B0cy5jbWRfb3B0cyA9PSBHTE9CVVNfTlVMTCkKK0BAIC0zODU4LDcgKzM4NTgsNyBAQCBnbG9i dXNfcmVzdWx0X3QgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfcGFyc2Vfb3B0c19jbWQoCisgICAgICAg ICAgICAgICAgIEdMT0JVU19OVUxMLAorICAgICAgICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2Z0 cF9jb250cm9sX2NvbW1hbmRfaW5pdDogbWFsbG9jIGZhaWxlZCIpKSk7CisgICAgIH0KKy0gICAg ICAgICAgICAKKysKKyAgICAgaWYoc3NjYW5mKGNvbW1hbmQtPm5vb3AucmF3X2NvbW1hbmQsIiUq cyAlcyAlcyIsCisgICAgICAgICAgICAgICBjb21tYW5kLT5vcHRzLmNtZF9uYW1lLCBjb21tYW5k LT5vcHRzLmNtZF9vcHRzKSA8IDIpCisgICAgIHsKK0BAIC0zODcyLDEwICszODcyLDEwIEBAIGds b2J1c19yZXN1bHRfdCBnbG9idXNfbF9mdHBfY29udHJvbF9wYXJzZV9vcHRzX2NtZCgKKyAKKyAK KyBnbG9idXNfcmVzdWx0X3QgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfcGFyc2VfcG9ydF9jbWQoCist ICAgIGdsb2J1c19mdHBfY29udHJvbF9jb21tYW5kX3QgKiAgICAgIGNvbW1hbmQpICAgICAgICAK KysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2NvbW1hbmRfdCAqICAgICAgY29tbWFuZCkKKyB7Cisg ICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRbMl07CistICAgICAg ICAgICAgICAgIAorKworICAgICBpZihzc2NhbmYoY29tbWFuZC0+bm9vcC5yYXdfY29tbWFuZCwK KyAgICAgICAgICAgICAgICIlKnMgJXUsJXUsJXUsJXUsJXUsJXUiLAorICAgICAgICAgICAgICAg Jihjb21tYW5kLT5wb3J0Lmhvc3RfcG9ydC5ob3N0WzBdKSwKK0BAIC0zODg4LDcgKzM4ODgsNyBA QCBnbG9idXNfcmVzdWx0X3QgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfcGFyc2VfcG9ydF9jbWQoCisg ICAgICAgICBjb21tYW5kLT5jb2RlPUdMT0JVU19GVFBfQ09OVFJPTF9DT01NQU5EX1VOS05PV047 CisgICAgICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgICAgIH0KKy0gICAgICAgIAorKwor ICAgICBpZigoY29tbWFuZC0+cG9ydC5ob3N0X3BvcnQuaG9zdClbMF0gPiAyNTUgfHwKKyAgICAg ICAgKGNvbW1hbmQtPnBvcnQuaG9zdF9wb3J0Lmhvc3QpWzFdID4gMjU1IHx8CisgICAgICAgIChj b21tYW5kLT5wb3J0Lmhvc3RfcG9ydC5ob3N0KVsyXSA+IDI1NSB8fAorQEAgLTM4OTksMzggKzM4 OTksMzggQEAgZ2xvYnVzX3Jlc3VsdF90IGdsb2J1c19sX2Z0cF9jb250cm9sX3BhcnNlX3BvcnRf Y21kKAorICAgICAgICAgY29tbWFuZC0+Y29kZT1HTE9CVVNfRlRQX0NPTlRST0xfQ09NTUFORF9V TktOT1dOOworICAgICAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworICAgICB9CistICAgICAg ICAKKysKKyAgICAgY29tbWFuZC0+cG9ydC5ob3N0X3BvcnQucG9ydD0gKHNob3J0KSAyNTYqcG9y dFswXStwb3J0WzFdOworICAgICBjb21tYW5kLT5wb3J0Lmhvc3RfcG9ydC5ob3N0bGVuID0gNDsK KyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIH0KKyAKKyBnbG9idXNfcmVzdWx0X3QgZ2xv YnVzX2xfZnRwX2NvbnRyb2xfcGFyc2Vfc3Bvcl9jbWQoCistICAgIGdsb2J1c19mdHBfY29udHJv bF9jb21tYW5kX3QgKiAgICAgIGNvbW1hbmQpICAgICAgICAKKysgICAgZ2xvYnVzX2Z0cF9jb250 cm9sX2NvbW1hbmRfdCAqICAgICAgY29tbWFuZCkKKyB7CisgICAgIGNoYXIgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0YXJ0OworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpOworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq OworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdfc3RhcnQ7Cisg ICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRbMl07CistICAgICAg ICAKKysKKyAgICAgc3RhcnQ9c3Ryc3RyKGNvbW1hbmQtPm5vb3AucmF3X2NvbW1hbmQsIlNQT1Ii KTsKKy0gICAgICAgICAgICAKKysKKyAgICAgaT0wOworLSAgICAgICAgICAgIAorKworICAgICB3 aGlsZShzdGFydCAhPSAmKGNvbW1hbmQtPm5vb3AucmF3X2NvbW1hbmRbaV0pKQorICAgICB7Cisg ICAgICAgICBpKys7CisgICAgIH0KKyAKKyAgICAgYXJnX3N0YXJ0ID0gaSs0OworLSAgICAgICAg CisrCisgICAgIGkgPSBhcmdfc3RhcnQ7CistICAgICAgICAgICAgCisrCisgICAgIGogPSAwOwor LSAgICAgICAgCisrCisgICAgIC8qIGZpZ3VyZSBvdXQgaG93IG1hbnkgaG9zdC9wb3J0IGFyZ3Vt ZW50cyB0aGVyZSBhcmUgKi8KKy0gICAgICAgIAorKworICAgICB3aGlsZShjb21tYW5kLT5ub29w LnJhd19jb21tYW5kW2ldKQorICAgICB7CisgICAgICAgICBpZihpc3NwYWNlKGNvbW1hbmQtPm5v b3AucmF3X2NvbW1hbmRbaV0pKQorQEAgLTM5NDEsNyArMzk0MSw3IEBAIGdsb2J1c19yZXN1bHRf dCBnbG9idXNfbF9mdHBfY29udHJvbF9wYXJzZV9zcG9yX2NtZCgKKyAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICAg ICAKKysKKyAgICAgICAgICAgICBpZihjb21tYW5kLT5ub29wLnJhd19jb21tYW5kW2ldKQorICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaisrOworQEAgLTM5NTIsMTIgKzM5NTIsMTIg QEAgZ2xvYnVzX3Jlc3VsdF90IGdsb2J1c19sX2Z0cF9jb250cm9sX3BhcnNlX3Nwb3JfY21kKAor ICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgIH0KKyAgICAgfQorLSAgICAgICAgCisrCisgICAg IC8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlbSAqLworLSAgICAgICAgCisrCisgICAgIGNvbW1h bmQtPnNwb3IuaG9zdF9wb3J0ID0gKGdsb2J1c19mdHBfY29udHJvbF9ob3N0X3BvcnRfdCopCisg ICAgICAgICBnbG9idXNfbGliY19tYWxsb2MoaipzaXplb2YoZ2xvYnVzX2Z0cF9jb250cm9sX2hv c3RfcG9ydF90KSk7CistICAgICAgICAKKysKKyAgICAgaWYoY29tbWFuZC0+c3Bvci5ob3N0X3Bv cnQgPT0gR0xPQlVTX05VTEwpCisgICAgIHsKKyAgICAgICAgIHJldHVybiBnbG9idXNfZXJyb3Jf cHV0KAorQEAgLTM5NjYsMTIgKzM5NjYsMTIgQEAgZ2xvYnVzX3Jlc3VsdF90IGdsb2J1c19sX2Z0 cF9jb250cm9sX3BhcnNlX3Nwb3JfY21kKAorICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwK KyAgICAgICAgICAgICAgICAgX0ZDU0woImdsb2J1c19mdHBfY29udHJvbF9jb21tYW5kX2luaXQ6 IG1hbGxvYyBmYWlsZWQiKSkpOworICAgICB9CistICAgICAgICAKKysKKyAgICAgY29tbWFuZC0+ c3Bvci5udW1fYXJncyA9IGo7CistICAgICAgICAKKysKKyAgICAgaSA9IGFyZ19zdGFydDsKKyAg ICAgaiA9IDA7CistICAgICAgICAKKysKKyAgICAgd2hpbGUoY29tbWFuZC0+bm9vcC5yYXdfY29t bWFuZFtpXSkKKyAgICAgeworICAgICAgICAgaWYoIWlzc3BhY2UoY29tbWFuZC0+bm9vcC5yYXdf Y29tbWFuZFtpXSkpCitAQCAtMzk4OSw3ICszOTg5LDcgQEAgZ2xvYnVzX3Jlc3VsdF90IGdsb2J1 c19sX2Z0cF9jb250cm9sX3BhcnNlX3Nwb3JfY21kKAorICAgICAgICAgICAgICAgICBjb21tYW5k LT5jb2RlPUdMT0JVU19GVFBfQ09OVFJPTF9DT01NQU5EX1VOS05PV047CisgICAgICAgICAgICAg ICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAg ICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgaWYoKGNvbW1hbmQtPnNwb3IuaG9zdF9wb3J0 W2pdLmhvc3QpWzBdID4gMjU1IHx8CisgICAgICAgICAgICAgICAgKGNvbW1hbmQtPnNwb3IuaG9z dF9wb3J0W2pdLmhvc3QpWzFdID4gMjU1IHx8CisgICAgICAgICAgICAgICAgKGNvbW1hbmQtPnNw b3IuaG9zdF9wb3J0W2pdLmhvc3QpWzJdID4gMjU1IHx8CitAQCAtNDAwMSwxOCArNDAwMSwxOCBA QCBnbG9idXNfcmVzdWx0X3QgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfcGFyc2Vfc3Bvcl9jbWQoCisg ICAgICAgICAgICAgICAgIGNvbW1hbmQtPmNvZGU9R0xPQlVTX0ZUUF9DT05UUk9MX0NPTU1BTkRf VU5LTk9XTjsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworICAgICAg ICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgIAorLSAgICAgICAgICAgIGNvbW1hbmQtPnNw b3IuaG9zdF9wb3J0W2pdLnBvcnQ9IAorKworKyAgICAgICAgICAgIGNvbW1hbmQtPnNwb3IuaG9z dF9wb3J0W2pdLnBvcnQ9CisgICAgICAgICAgICAgICAgIChzaG9ydCkgMjU2KnBvcnRbMF0rcG9y dFsxXTsKKyAgICAgICAgICAgICBjb21tYW5kLT5zcG9yLmhvc3RfcG9ydFtqXS5ob3N0bGVuID0g NDsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgd2hp bGUoY29tbWFuZC0+bm9vcC5yYXdfY29tbWFuZFtpXSAmJgorICAgICAgICAgICAgICAgICAgICFp c3NwYWNlKGNvbW1hbmQtPm5vb3AucmF3X2NvbW1hbmRbaV0pKQorICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAg ICAgICAKKysKKyAgICAgICAgICAgICBpZihjb21tYW5kLT5ub29wLnJhd19jb21tYW5kW2ldKQor ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaisrOworQEAgLTQwMjMsMTYgKzQwMjMs MTYgQEAgZ2xvYnVzX3Jlc3VsdF90IGdsb2J1c19sX2Z0cF9jb250cm9sX3BhcnNlX3Nwb3JfY21k KAorICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgIH0KKyAgICAgfQorLSAgICAgICAgCisrCisg ICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyB9CisgCisgZ2xvYnVzX3Jlc3VsdF90IGdsb2J1 c19sX2Z0cF9jb250cm9sX3BhcnNlX3R5cGVfY21kKAorLSAgICBnbG9idXNfZnRwX2NvbnRyb2xf Y29tbWFuZF90ICogICAgICBjb21tYW5kKSAgICAgICAgCisrICAgIGdsb2J1c19mdHBfY29udHJv bF9jb21tYW5kX3QgKiAgICAgIGNvbW1hbmQpCisgCisgeworICAgICBjaGFyICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0bXA7CistICAgICAgICAKKysKKyAgICAgY29tbWFuZC0+dHlw ZS5vcHRpb249R0xPQlVTX0ZUUF9DT05UUk9MX1RZUEVfTk9fT1BUSU9OOworICAgICBjb21tYW5k LT50eXBlLmJ5dGVzaXplPTA7CisgCitAQCAtNDA0MCwxMyArNDA0MCwxMyBAQCBnbG9idXNfcmVz dWx0X3QgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfcGFyc2VfdHlwZV9jbWQoCisgICAgIHsKKyAgICAg ICAgIGNvbW1hbmQtPnR5cGUudHlwZT1HTE9CVVNfRlRQX0NPTlRST0xfVFlQRV9OT05FOworICAg ICB9CistICAgICAgICAgICAgCisrCisgICAgIHN3aXRjaCh0bXApCisgICAgIHsKKyAgICAgY2Fz ZSAnQSc6CisgICAgIGNhc2UgJ2EnOgorICAgICAgICAgY29tbWFuZC0+dHlwZS50eXBlPUdMT0JV U19GVFBfQ09OVFJPTF9UWVBFX0FTQ0lJOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisrCisgICAgICAgICBpZihzc2NhbmYoY29tbWFuZC0+bm9vcC5yYXdfY29tbWFuZCwKKyAg ICAgICAgICAgICAgICAgICAiJSpzICUqYyAlYyIsJnRtcCkgPiAwKQorICAgICAgICAgeworQEAg LTQwNjgsMTEgKzQwNjgsMTEgQEAgZ2xvYnVzX3Jlc3VsdF90IGdsb2J1c19sX2Z0cF9jb250cm9s X3BhcnNlX3R5cGVfY21kKAorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIHJl dHVybiBHTE9CVVNfU1VDQ0VTUzsKKy0gICAgICAgICAgICAgICAgCisrCisgICAgIGNhc2UgJ0Un OgorICAgICBjYXNlICdlJzoKKyAgICAgICAgIGNvbW1hbmQtPnR5cGUudHlwZT1HTE9CVVNfRlRQ X0NPTlRST0xfVFlQRV9FQkNESUM7CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgaWYo c3NjYW5mKGNvbW1hbmQtPm5vb3AucmF3X2NvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgIiUq cyAlKmMgJWMiLCZ0bXApID4gMCkKKyAgICAgICAgIHsKK0BAIC00MTE4LDE3ICs0MTE4LDE3IEBA IGdsb2J1c19yZXN1bHRfdCBnbG9idXNfbF9mdHBfY29udHJvbF9wYXJzZV90eXBlX2NtZCgKKyAK KyAKKyBnbG9idXNfcmVzdWx0X3QgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfcGFyc2Vfc3RydV9jbWQo CistICAgIGdsb2J1c19mdHBfY29udHJvbF9jb21tYW5kX3QgKiAgICAgIGNvbW1hbmQpICAgICAg ICAKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2NvbW1hbmRfdCAqICAgICAgY29tbWFuZCkKKyB7 CisgICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcDsKKy0gICAgICAg IAorKworICAgICBjb21tYW5kLT5zdHJ1LnN0cnVjdHVyZT0KKyAgICAgICAgIEdMT0JVU19GVFBf Q09OVFJPTF9TVFJVQ1RVUkVfTk9ORTsKKyAgICAgaWYoc3NjYW5mKGNvbW1hbmQtPm5vb3AucmF3 X2NvbW1hbmQsIiUqcyAlYyIsJnRtcCkgPCAxKQorICAgICB7CisgICAgICAgICByZXR1cm4gR0xP QlVTX1NVQ0NFU1M7CisgICAgIH0KKy0gICAgICAgICAgICAKKysKKyAgICAgc3dpdGNoKHRtcCkK KyAgICAgeworICAgICBjYXNlICdGJzoKK0BAIC00MTUzLDQ4ICs0MTUzLDQ4IEBAIGdsb2J1c19y ZXN1bHRfdCBnbG9idXNfbF9mdHBfY29udHJvbF9wYXJzZV9zdHJ1X2NtZCgKKyAKKyAKKyBnbG9i dXNfcmVzdWx0X3QgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfcGFyc2VfYXV0aF9jbWQoCistICAgIGds b2J1c19mdHBfY29udHJvbF9jb21tYW5kX3QgKiAgICAgIGNvbW1hbmQpICAgICAgICAKKysgICAg Z2xvYnVzX2Z0cF9jb250cm9sX2NvbW1hbmRfdCAqICAgICAgY29tbWFuZCkKKyB7CisgICAgIGNo YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcFsxMF07CisgICAgIGludCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk7CistICAgICAgICAKKysKKyAgICAgY29tbWFu ZC0+YXV0aC50eXBlPUdMT0JVU19GVFBfQ09OVFJPTF9BVVRIX1VOS05PV047CistICAgICAgICAK KysKKyAgICAgaWYoc3NjYW5mKGNvbW1hbmQtPm5vb3AucmF3X2NvbW1hbmQsIiUqcyAlN3MiLHRt cCkgPCAxKQorICAgICB7CisgICAgICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgICAgIH0K Ky0gICAgICAgIAorKworICAgICBpID0gMDsKKy0gICAgICAgIAorKworICAgICB3aGlsZSh0bXBb aV0gIT0gJ1wwJykKKyAgICAgeworICAgICAgICAgdG1wW2ldID0gdG91cHBlcih0bXBbaV0pOwor ICAgICAgICAgaSsrOworICAgICB9CistICAgICAgICAKKysKKyAgICAgaWYoc3RyY21wKCJHU1NB UEkiLHRtcCkgPT0gMCkKKyAgICAgeworICAgICAgICAgY29tbWFuZC0+YXV0aC50eXBlPUdMT0JV U19GVFBfQ09OVFJPTF9BVVRIX0dTU0FQSTsKKyAgICAgfQorLSAgICAgICAgCisrCisgICAgIHJl dHVybiBHTE9CVVNfU1VDQ0VTUzsKKy0gICAgICAgIAorKworIH0KKyAKKyBnbG9idXNfcmVzdWx0 X3QgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfcGFyc2VfbW9kZV9jbWQoCistICAgIGdsb2J1c19mdHBf Y29udHJvbF9jb21tYW5kX3QgKiAgICAgIGNvbW1hbmQpICAgICAgICAKKysgICAgZ2xvYnVzX2Z0 cF9jb250cm9sX2NvbW1hbmRfdCAqICAgICAgY29tbWFuZCkKKyB7CisgICAgIGNoYXIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRtcDsKKy0gICAgICAgIAorKworICAgICBjb21tYW5k LT5jb2RlPUdMT0JVU19GVFBfQ09OVFJPTF9DT01NQU5EX01PREU7CistICAgICAgICAKKysKKyAg ICAgaWYoc3NjYW5mKGNvbW1hbmQtPm5vb3AucmF3X2NvbW1hbmQsIiUqcyAlYyIsJnRtcCkgPCAx KQorICAgICB7CisgICAgICAgICBjb21tYW5kLT5tb2RlLm1vZGU9R0xPQlVTX0ZUUF9DT05UUk9M X01PREVfTk9ORTsKKyAgICAgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAgICAgfQorLSAg ICAgICAgICAgIAorKworICAgICBzd2l0Y2godG1wKQorICAgICB7CisgICAgIGNhc2UgJ1MnOgor ZGlmZiAtLWdpdCBhL2dyaWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC9jb25uZWN0X3Rlc3QuYyBi L2dyaWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC9jb25uZWN0X3Rlc3QuYworaW5kZXggMmE5ZWQ1 NzM5Li5lMWNiNTk4MDkgMTAwNjQ0CistLS0gYS9ncmlkZnRwL2NvbnRyb2wvc291cmNlL3Rlc3Qv Y29ubmVjdF90ZXN0LmMKKysrKyBiL2dyaWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC9jb25uZWN0 X3Rlc3QuYworQEAgLTU5LDcgKzU5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKKyAgICAgZ2xvYnVzX2Z0 cF9jb250cm9sX2F1dGhfaW5mb190ICAgICAgYXV0aF9pbmZvOworICAgICBib29sICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1c2VfYXV0aDsKKyAgICAgZW51bQorLSAgICB7IAorKyAg ICB7CisgICAgICAgICBDTURfQ09OTkVDVCwKKyAgICAgICAgIENNRF9BVVRIRU5USUNBVEUsCisg ICAgICAgICBDTURfUVVJVCwKK0BAIC04MCw3ICs4MCw3IEBAIHZvaWQKKyBnbG9idXNfbF9zZXJ2 ZXJfY2xvc2VfY2FsbGJhY2soCisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNhbGxiYWNrX2FyZywKKyAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICAgICAg ICAqaGFuZGxlLAorLSAgICBnbG9idXNfb2JqZWN0X3QgCQkgICAgICAgKmVycm9yLAorKyAgICBn bG9idXNfb2JqZWN0X3QgICAgICAgICAgICAgICAgICAgICplcnJvciwKKyAgICAgZ2xvYnVzX2Z0 cF9jb250cm9sX3Jlc3BvbnNlX3QgICAgICAqZnRwX3Jlc3BvbnNlKTsKKyBzdGF0aWMKKyB2b2lk CitAQCAtOTQsNyArOTQsNyBAQCB2b2lkCisgZ2xvYnVzX2xfY2xpZW50X2NhbGxiYWNrKAorICAg ICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19hcmcsCisgICAg IGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAgICAgICAgKmhhbmRsZSwKKy0gICAgZ2xvYnVz X29iamVjdF90IAkJICAgICAgICplcnJvciwKKysgICAgZ2xvYnVzX29iamVjdF90ICAgICAgICAg ICAgICAgICAgICAqZXJyb3IsCisgICAgIGdsb2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICAg ICAgKmZ0cF9yZXNwb25zZSkKKyB7CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAg ICAgICAgIHJlc3VsdCA9IEdMT0JVU19TVUNDRVNTOworQEAgLTEzOCw3ICsxMzgsNyBAQCBnbG9i dXNfbF9jbGllbnRfY2FsbGJhY2soCisgICAgICAgICAgICAgICAgICAgICBnbG9idXNfbF9jbGll bnRfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICBjbGllbnQpOworICAgICAgICAgICAg ICAgICBjbGllbnQtPmNvbW1hbmQgPSBDTURfUVVJVDsKKy0gICAgICAgICAgICAgICAgaWYgKHJl c3VsdCA9PSBHTE9CVVNfU1VDQ0VTUyAKKysgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBH TE9CVVNfU1VDQ0VTUworICAgICAgICAgICAgICAgICAgICAgJiYgZnRwX3Jlc3BvbnNlLT5jb2Rl ID4gMzk5KQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBjbGllbnQt PmVycm9yID0gZ2xvYnVzX2Vycm9yX2NvbnN0cnVjdF9zdHJpbmcoCitAQCAtODc3LDcgKzg3Nyw3 IEBAIHZvaWQKKyBnbG9idXNfbF9zZXJ2ZXJfY2xvc2VfY2FsbGJhY2soCisgICAgIHZvaWQgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2FyZywKKyAgICAgZ2xvYnVzX2Z0 cF9jb250cm9sX2hhbmRsZV90ICAgICAgICAqaGFuZGxlLAorLSAgICBnbG9idXNfb2JqZWN0X3Qg CQkgICAgICAgKmVycm9yLAorKyAgICBnbG9idXNfb2JqZWN0X3QgICAgICAgICAgICAgICAgICAg ICplcnJvciwKKyAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX3Jlc3BvbnNlX3QgICAgICAqZnRwX3Jl c3BvbnNlKQorIHsKKyAgICAgZ2xvYnVzX2xfc2VydmVyX3Jlc3BvbnNlX2NhbGxiYWNrKGNhbGxi YWNrX2FyZywgaGFuZGxlLCBlcnJvcik7CitAQCAtODkyLDcgKzg5Miw3IEBAIGdsb2J1c19sX3Nl cnZlcl9yZXNwb25zZV9jYWxsYmFjaygKKyB7CisgICAgIGF1dGhfdGVzdF9zZXJ2ZXJfc2Vzc2lv bl90ICAgICAgICAgKnNlc3Npb24gPSBjYWxsYmFja19hcmc7CisgICAgIGdsb2J1c19yZXN1bHRf dCAgICAgICAgICAgICAgICAgICAgIHJlcyA9IEdMT0JVU19TVUNDRVNTOworLSAgICBnbG9idXNf ZnRwX2NvbnRyb2xfYXV0aF9yZXF1aXJlbWVudHNfdCAgICAgCisrICAgIGdsb2J1c19mdHBfY29u dHJvbF9hdXRoX3JlcXVpcmVtZW50c190CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGF1dGhfcmVxOworIAorICAgICBpZiAoZXJyb3IpCitAQCAtOTc0LDcgKzk3NCw3 IEBAIGdsb2J1c19sX3NlcnZlcl9hY2NlcHRfY2FsbGJhY2soCisgfQorIAorIHN0YXRpYworLXZv aWQgCisrdm9pZAorIGdsb2J1c19sX3NlcnZlcl9saXN0ZW5fY2FsbGJhY2soCisgICAgIHZvaWQg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2FyZywKKyAgICAgZ2xvYnVz X2Z0cF9jb250cm9sX3NlcnZlcl90ICogICAgICAgc2VydmVyX2hhbmRsZSwKK0BAIC0xMDQ4LDcg KzEwNDgsNyBAQCBpbml0aWFsaXplX3NlcnZlcnModm9pZCkKKyAgICAgY2xlYXJ0ZXh0X3NlcnZl ci5hdXRoX3JlcXVpcmVtZW50cyA9CisgICAgICAgICBHTE9CVVNfRlRQX0NPTlRST0xfQVVUSF9S RVFfVVNFUgorICAgICAgICAgfCBHTE9CVVNfRlRQX0NPTlRST0xfQVVUSF9SRVFfUEFTUzsKKy0g ICAgCisrCisgICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9zZXJ2ZXJfaGFuZGxlX2lu aXQoCisgICAgICAgICAmdGxzX3NlcnZlci5zZXJ2ZXIpOworICAgICBpZiAocmVzdWx0ICE9IEdM T0JVU19TVUNDRVNTKQorZGlmZiAtLWdpdCBhL2dyaWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC9k YXRhX3Rlc3QuYyBiL2dyaWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC9kYXRhX3Rlc3QuYworaW5k ZXggOGU1ODgxNmY0Li5iNzA4NzQ3ZWYgMTAwNjQ0CistLS0gYS9ncmlkZnRwL2NvbnRyb2wvc291 cmNlL3Rlc3QvZGF0YV90ZXN0LmMKKysrKyBiL2dyaWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC9k YXRhX3Rlc3QuYworQEAgLTE0NiwxMiArMTQ2LDEyIEBAIGNvbm5lY3RfcmVhZF9iaWdfYnVmZmVy X2NhbGxiYWNrKAorICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc3VzZSwKKyAgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAgICAgICAgICAg ICAgICBlcnJvcik7CisgCistdm9pZCAKKyt2b2lkCisgYmluYXJ5X2ViX21vZGUoCisgICAgIGds b2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICBoYW5kbGUsCisgICAgIGlu dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGV2ZWwpOworIAorLXZv aWQgCisrdm9pZAorIGJpbmFyeV9zdHJlYW1fbW9kZSgKKyAgICAgZ2xvYnVzX2Z0cF9jb250cm9s X2hhbmRsZV90ICogICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBsZXZlbCk7CitAQCAtMTcwLDcgKzE3MCw3IEBAIGRp ZmYoCisgICAgIGNvbnN0IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QpOworIAor IHZvaWQKKy1mb3JjZV9jbG9zZV9jYiggCisrZm9yY2VfY2xvc2VfY2IoCisgICAgIHZvaWQgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2FyZywKKyAgICAgZ2xvYnVz X2Z0cF9jb250cm9sX2hhbmRsZV90ICogICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVz X29iamVjdF90ICogICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKQorQEAgLTE4NywxNSAr MTg3LDE1IEBAIGZvcmNlX2Nsb3NlX2NiKAorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZtb25p dG9yLT5tdXRleCk7CisgfQorIAorLWludCAKKytpbnQKKyBtYWluKAorICAgICBpbnQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2MsCisgICAgIGNoYXIgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndltdKQorLXsgCisreworICAgICBn bG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlczsKKyAgICAgaW50 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHI7CistICAgIGludAkJ CQkJCXJjOworLSAgICBpbnQJCQkJCQlpOworKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJjOworKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGk7CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGxldmVsOworIAorICAgICBMVERMX1NFVF9QUkVMT0FERURfU1lNQk9MUygp OworQEAgLTMyOCw3ICszMjgsNyBAQCBtYWluKAorICAgICBmb3IocGxldmVsID0gMTsgcGxldmVs IDw9IE1BWF9QTEVWRUw7IHBsZXZlbCsrKQorICAgICB7CisgICAgICAgICB2ZXJib3NlX3ByaW50 ZigyLCAicGFyYWxsZWwgbGV2ZWwgJWRcbiIsIHBsZXZlbCk7CistICAgICAgICBiaWdfYnVmZmVy X3Rlc3QoYmluYXJ5X2ViX21vZGUsIHBsZXZlbCk7ICAKKysgICAgICAgIGJpZ19idWZmZXJfdGVz dChiaW5hcnlfZWJfbW9kZSwgcGxldmVsKTsKKyAgICAgfQorICAgICB2ZXJib3NlX3ByaW50Zigx LCAiYmlnIGJ1ZmZlciBpbiBlYiBtb2RlIHBhc3NlZFxuIik7CisgICAgIHByaW50Zigib2sgLSBi aWdfYnVmZmVyX3Rlc3QoYmluYXJ5X2ViX21vZGUsIHBsZXZlbClcbiIpOworQEAgLTQxNCwxMyAr NDE0LDEzIEBAIHRlc3Rfc2VuZF9lb2YoCisgICAgICAgICAgICAgICAodm9pZCAqKSZkb25lX21v bml0b3IpOworIAorICAgICBpZihyZXMgIT0gR0xPQlVTX1NVQ0NFU1MpCistICAgIHsgCisrICAg IHsKKyAgICAgICAgIHJldHVybiByZXM7CisgICAgIH0KKyAgICAgZ2xvYnVzX211dGV4X2xvY2so JmRvbmVfbW9uaXRvci5tdXRleCk7CisgICAgIHsKKyAgICAgICAgIHdoaWxlKCFkb25lX21vbml0 b3IuZG9uZSkKKy0gICAgICAgIHsgCisrICAgICAgICB7CisgICAgICAgICAgICAgZ2xvYnVzX2Nv bmRfd2FpdCgmZG9uZV9tb25pdG9yLmNvbmQsICZkb25lX21vbml0b3IubXV0ZXgpOworICAgICAg ICAgfQorICAgICB9CitAQCAtNDkwLDcgKzQ5MCw3IEBAIGJpZ19idWZmZXJfdGVzdCgKKyAgICAg ICAgIHZlcmJvc2VfcHJpbnRmKDMsICJ3YWl0aW5nIGZvciB0cmFuc2Zlci5cbiIpOworICAgICAg ICAgZ2xvYnVzX211dGV4X2xvY2soJmRvbmVfbW9uaXRvci5tdXRleCk7CisgICAgICAgICB7Cist ICAgICAgICAgICAgd2hpbGUoZG9uZV9tb25pdG9yLmNvdW50IDwgMiAmJiAKKysgICAgICAgICAg ICB3aGlsZShkb25lX21vbml0b3IuY291bnQgPCAyICYmCisgICAgICAgICAgICAgICAgICAgIWRv bmVfbW9uaXRvci5kb25lKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZ2xvYnVz X2NvbmRfd2FpdCgmZG9uZV9tb25pdG9yLmNvbmQsICZkb25lX21vbml0b3IubXV0ZXgpOworQEAg LTYxOSwxMiArNjE5LDEyIEBAIHJldXNlX2hhbmRsZXNfdGVzdCgKKyAgICAgICAgICAgICAgICAg ICAgICZwb3J0X2Nvbm5lY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgMCk7CisgCistICAg ICAgICB2ZXJib3NlX3ByaW50ZigzLCAKKysgICAgICAgIHZlcmJvc2VfcHJpbnRmKDMsCisgICAg ICAgICAgICAicGFzdl9jb25uZWN0aW9uIGNvdW50ID0gJWQsIHBvcnQgY29ubmVjdGlvbiBjb3Vu dCA9ICVkXG4iLAorICAgICAgICAgICAgIHBhc3ZfY29ubmVjdGlvbnMsIHBvcnRfY29ubmVjdGlv bnMpOworICAgICAgICAgZ2xvYnVzX211dGV4X2xvY2soJmRvbmVfbW9uaXRvci5tdXRleCk7Cisg ICAgICAgICB7CistICAgICAgICAgICAgd2hpbGUoZG9uZV9tb25pdG9yLmNvdW50IDwgMiAmJiAK KysgICAgICAgICAgICB3aGlsZShkb25lX21vbml0b3IuY291bnQgPCAyICYmCisgICAgICAgICAg ICAgICAgICAgIWRvbmVfbW9uaXRvci5kb25lKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgZ2xvYnVzX2NvbmRfd2FpdCgmZG9uZV9tb25pdG9yLmNvbmQsICZkb25lX21vbml0b3Iu bXV0ZXgpOworQEAgLTY4NCw3ICs2ODQsNyBAQCByZXVzZV9oYW5kbGVzX3Rlc3QoCisgICAgIHJl dHVybiBHTE9CVVNfU1VDQ0VTUzsKKyB9CisgCistdm9pZCAKKyt2b2lkCisgYmluYXJ5X2ViX21v ZGUoCisgICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgaGFu ZGxlLAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBs ZXZlbCkKK0BAIC02OTYsMjMgKzY5NiwyMyBAQCBiaW5hcnlfZWJfbW9kZSgKKyAgICAgcGFyYWxs ZWxpc20uZml4ZWQuc2l6ZSA9IHBsZXZlbDsKKyAKKyAgICAgcmVzID0gZ2xvYnVzX2Z0cF9jb250 cm9sX2xvY2FsX3R5cGUoCistICAgICAgICAgICAgICBoYW5kbGUsIAorLSAgICAgICAgICAgICAg R0xPQlVTX0ZUUF9DT05UUk9MX1RZUEVfSU1BR0UsIAorKyAgICAgICAgICAgICAgaGFuZGxlLAor KyAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX1RZUEVfSU1BR0UsCisgICAgICAgICAg ICAgICAwKTsKKyAgICAgdGVzdF9yZXN1bHQocmVzLCAibG9jYWxfdHlwZSIsIF9fTElORV9fKTsK KyAKKyAgICAgcmVzID0gZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX21vZGUoCistICAgICAgICAg ICAgICBoYW5kbGUsIAorKyAgICAgICAgICAgICAgaGFuZGxlLAorICAgICAgICAgICAgICAgR0xP QlVTX0ZUUF9DT05UUk9MX01PREVfRVhURU5ERURfQkxPQ0spOworICAgICB0ZXN0X3Jlc3VsdChy ZXMsICJsb2NhbF9tb2RlIiwgX19MSU5FX18pOworIAorICAgICByZXMgPSBnbG9idXNfZnRwX2Nv bnRyb2xfbG9jYWxfcGFyYWxsZWxpc20oCistICAgICAgICAgICAgICBoYW5kbGUsIAorKyAgICAg ICAgICAgICAgaGFuZGxlLAorICAgICAgICAgICAgICAgJnBhcmFsbGVsaXNtKTsKKyAgICAgdGVz dF9yZXN1bHQocmVzLCAibG9jYWxfbW9kZSIsIF9fTElORV9fKTsKKyB9CisgCistdm9pZCAKKyt2 b2lkCisgYmluYXJ5X3N0cmVhbV9tb2RlKAorICAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxl X3QgKiAgICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwbGV2ZWwpCitAQCAtNzIwLDEzICs3MjAsMTMgQEAgYmluYXJ5 X3N0cmVhbV9tb2RlKAorICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlczsKKyAKKyAgICAgcmVzID0gZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX3R5cGUo CistICAgICAgICAgICAgICBoYW5kbGUsIAorLSAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05U Uk9MX1RZUEVfSU1BR0UsIAorKyAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICAgICAgICAgICAg R0xPQlVTX0ZUUF9DT05UUk9MX1RZUEVfSU1BR0UsCisgICAgICAgICAgICAgICAwKTsKKyAgICAg dGVzdF9yZXN1bHQocmVzLCAibG9jYWxfdHlwZSIsIF9fTElORV9fKTsKKyAKKyAgICAgcmVzID0g Z2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX21vZGUoCistICAgICAgICAgICAgICBoYW5kbGUsIAor KyAgICAgICAgICAgICAgaGFuZGxlLAorICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9M X01PREVfU1RSRUFNKTsKKyAgICAgdGVzdF9yZXN1bHQocmVzLCAibG9jYWxfbW9kZSIsIF9fTElO RV9fKTsKKyB9CitAQCAtNzQzLDcgKzc0Myw3IEBAIGNhY2hlX211bHRpcGFyYWxsZWxfdGVzdCgK KyAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICAgICAgICAgICAgICAgIHBhc3ZfaGFu ZGxlOworICAgICBmdHBfdGVzdF9tb25pdG9yX3QgICAgICAgICAgICAgICAgICAgICAgICAgZG9u ZV9tb25pdG9yOworICAgICBkYXRhX3Rlc3RfaW5mb190ICogICAgICAgICAgICAgICAgICAgICAg ICAgdGVzdF9pbmZvOworLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbnNvY2tfYVtdID0gCisrICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBuc29ja19hW10gPQorICAgICAgICAgICAgICB7NCwgMTYsIDgsIDMyLCAyLCA0 LCAwfTsKKyAKKyAgICAgZnRwX3Rlc3RfbW9uaXRvcl9pbml0KCZkb25lX21vbml0b3IpOworQEAg LTc5NCw3ICs3OTQsNyBAQCBjYWNoZV9tdWx0aXBhcmFsbGVsX3Rlc3QoCisgICAgICAgICAgICAg dmVyYm9zZV9wcmludGYoMywgIndhaXRpbmcgZm9yIHRyYW5zZmVyLlxuIik7CisgICAgICAgICAg ICAgZ2xvYnVzX211dGV4X2xvY2soJmRvbmVfbW9uaXRvci5tdXRleCk7CisgICAgICAgICAgICAg eworLSAgICAgICAgICAgICAgICB3aGlsZShkb25lX21vbml0b3IuY291bnQgPCAyICYmIAorKyAg ICAgICAgICAgICAgICB3aGlsZShkb25lX21vbml0b3IuY291bnQgPCAyICYmCisgICAgICAgICAg ICAgICAgICAgICAgICFkb25lX21vbml0b3IuZG9uZSkKKyAgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICAgZ2xvYnVzX2NvbmRfd2FpdCgmZG9uZV9tb25pdG9yLmNvbmQsICZk b25lX21vbml0b3IubXV0ZXgpOworQEAgLTkxNCw3ICs5MTQsNyBAQCBjYWNoZV90ZXN0KAorICAg ICAgICAgdmVyYm9zZV9wcmludGYoMywgIndhaXRpbmcgZm9yIHRyYW5zZmVyLlxuIik7CisgICAg ICAgICBnbG9idXNfbXV0ZXhfbG9jaygmZG9uZV9tb25pdG9yLm11dGV4KTsKKyAgICAgICAgIHsK Ky0gICAgICAgICAgICB3aGlsZShkb25lX21vbml0b3IuY291bnQgPCAyICYmIAorKyAgICAgICAg ICAgIHdoaWxlKGRvbmVfbW9uaXRvci5jb3VudCA8IDIgJiYKKyAgICAgICAgICAgICAgICAgICAh ZG9uZV9tb25pdG9yLmRvbmUpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBnbG9i dXNfY29uZF93YWl0KCZkb25lX21vbml0b3IuY29uZCwgJmRvbmVfbW9uaXRvci5tdXRleCk7CitA QCAtOTc0LDEzICs5NzQsMTMgQEAgY2FjaGVfdGVzdCgKKyAgKiAgSXQgdGhlbiBzZW5kcyBkYXRh IHRvIGFsbCBvZiB0aGVtIGFuZCBjb21wYXJlcyB0aGUgZGF0YSBvbiBib3RoIGVuZHMKKyAgKiAg aWYgdGhlIHRyYXNmZXJzLiAgSW4gb3JkZXIgdG8gZWFzZSB0aGUgdGVzdGluZyBvZiBzb21lIG9m IHRoZSBjbGVhbiB1cAorICAqICB0aGlzIHRlc3QgZG9lcyBsZWFrIHNvbWUgbWVtb3J5LgorLSAq IAorKyAqCisgICogIEl0IHRlc3RzIHRoZSBjb250cm9sIGxpYnJhcnkgZGF0YSBjb2RlIGZvcjoK KyAgKiAgMSkgcmVhZCBhbmQgd3JpdGUgZnVuY3Rpb25hbGl0eSBmb3IgZGF0YSBpbnRlZ3JpdHkK KyAgKiAgMikgZnVuY3Rpb25hbGl0eSB3aGVuIG11bHRpcGxlIGhhbmRsZXMgYXJlIHNpbWFsdGFu ZW91c2x5IGJlaW5nIHVzZWQuCisgICogIDMpIHJlYWRzIG9mIHNpemVzIGdyZWF0ZXIgdGhhbiBh bmQgc21hbGxlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBleHRlbmRlZAorICAqICAgICBibG9jay4K Ky0gKiAgNCkgY2xlYW4gdXAuICBBdCB0aGUgZW5kIG9mIGhhbGYgdGhlIHRyYW5zZmVycyBjbG9z ZSgpIGFuZCBkZXN0cm95KCkgCisrICogIDQpIGNsZWFuIHVwLiAgQXQgdGhlIGVuZCBvZiBoYWxm IHRoZSB0cmFuc2ZlcnMgY2xvc2UoKSBhbmQgZGVzdHJveSgpCisgICogICAgIGFyZSBjYWxsZWQu ICBUaGUgb3RoZXIgaGFsZiBsZWF2ZSB0aGUgY2xlYW4gdXAgdXAgdG8gZGVhY3RpdmF0ZS4KKyAg Ki8KKyBnbG9idXNfcmVzdWx0X3QKK0BAIC0xMDE4LDcgKzEwMTgsNyBAQCB0cmFuc2Zlcl90ZXN0 KAorIAorICAgICAgICAgcmVzID0gZ2xvYnVzX2lfZnRwX2NvbnRyb2xfZGF0YV9jY19pbml0KHBh c3ZfaGFuZGxlKTsKKyAgICAgICAgIHRlc3RfcmVzdWx0KHJlcywgInBhc3YgaGFuZGxlIGluaXQi LCBfX0xJTkVfXyk7CistICAgICAKKysKKyAgICAgICAgIHJlcyA9IGdsb2J1c19pX2Z0cF9jb250 cm9sX2RhdGFfY2NfaW5pdChwb3J0X2hhbmRsZSk7CisgICAgICAgICB0ZXN0X3Jlc3VsdChyZXMs ICJwb3J0IGhhbmRsZSBpbml0IiwgX19MSU5FX18pOworIAorQEAgLTEwMzMsNyArMTAzMyw3IEBA IHRyYW5zZmVyX3Rlc3QoCisgCisgICAgICAgICBtb2RlX2NiKHBhc3ZfaGFuZGxlLCBwbGV2ZWwp OworICAgICAgICAgbW9kZV9jYihwb3J0X2hhbmRsZSwgcGxldmVsKTsKKy0gCisrCisgICAgICAg ICBpZighZ19zZW5kX2VvZikKKyAgICAgICAgIHsKKyAgICAgICAgICAgICByZXMgPSBnbG9idXNf ZnRwX2NvbnRyb2xfbG9jYWxfc2VuZF9lb2YoCitAQCAtMTA4Miw3ICsxMDgyLDcgQEAgdHJhbnNm ZXJfdGVzdCgKKyAgICAgICAgIGlmKHJlcyA9PSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgIHsK KyAgICAgICAgICAgICBnbG9idXNfbXV0ZXhfbG9jaygmZG9uZV9tb25pdG9yLm11dGV4KTsKKy0g ICAgICAgICAgICB7IAorKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgd2hpbGUoIWRv bmVfbW9uaXRvci5kb25lKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg ICBnbG9idXNfY29uZF93YWl0KCZkb25lX21vbml0b3IuY29uZCwgJmRvbmVfbW9uaXRvci5tdXRl eCk7CitAQCAtMTEzNiwxMiArMTEzNiwxMiBAQCBjb25uZWN0X3JlYWRfYmlnX2J1ZmZlcl9jYWxs YmFjaygKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl czsKKyAKKyAgICAgdGVzdF9pbmZvID0gKGRhdGFfdGVzdF9pbmZvX3QgKiljYWxsYmFja19hcmc7 CistICAgCistICAgIHZlcmJvc2VfcHJpbnRmKDMsIAorLSAgICAgICAgImNvbm5lY3RfcmVhZF9i aWdfYnVmZmVyX2NhbGxiYWNrKCkgOiBzdGFydFxuIik7IAorKworKyAgICB2ZXJib3NlX3ByaW50 ZigzLAorKyAgICAgICAgImNvbm5lY3RfcmVhZF9iaWdfYnVmZmVyX2NhbGxiYWNrKCkgOiBzdGFy dFxuIik7CisgICAgIGlmKGVycm9yICE9IEdMT0JVU19OVUxMKQorICAgICB7CistICAgICAgICB0 ZXN0X3Jlc3VsdChnbG9idXNfZXJyb3JfcHV0KGVycm9yKSwgCisrICAgICAgICB0ZXN0X3Jlc3Vs dChnbG9idXNfZXJyb3JfcHV0KGVycm9yKSwKKyAgICAgICAgICAgICAgICAgICAgICJjb25uZWN0 X3JlYWRfYmlnX2J1ZmZlcl9jYWxsYmFjayBlcnJvciIsIF9fTElORV9fKTsKKyAgICAgfQorIAor QEAgLTExOTQsOCArMTE5NCw4IEBAIGNvbm5lY3RfcmVhZF9jYWxsYmFjaygKKyAgICAgZ2xvYnVz X3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlczsKKyAKKyAgICAgdGVzdF9p bmZvID0gKGRhdGFfdGVzdF9pbmZvX3QgKiljYWxsYmFja19hcmc7CistICAgCistICAgIHZlcmJv c2VfcHJpbnRmKDMsICJjb25uZWN0X3JlYWRfY2FsbGJhY2soKSA6IHN0YXJ0XG4iKTsgCisrCisr ICAgIHZlcmJvc2VfcHJpbnRmKDMsICJjb25uZWN0X3JlYWRfY2FsbGJhY2soKSA6IHN0YXJ0XG4i KTsKKyAgICAgaWYoZXJyb3IgIT0gR0xPQlVTX05VTEwpCisgICAgIHsKKyAgICAgICAgIHRlc3Rf cmVzdWx0KGdsb2J1c19lcnJvcl9wdXQoZXJyb3IpLCAiY29ubmVjdF9yZWFkX2NhbGxiYWNrIGVy cm9yIgorQEAgLTEyMTMsNyArMTIxMyw3IEBAIGNvbm5lY3RfcmVhZF9jYWxsYmFjaygKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICBmYWlsdXJlX2VuZCgic3RhdCBmYWlsZWRcbiIpOworICAgICAg ICAgfQorLSAgICAgICAgd3JpdGVfYmxrX3NpemUgPSBzdGF0X2luZm8uc3Rfc2l6ZSAvIFdSSVRF X0NIVU5LX0NPVU5UICsgMTsgCisrICAgICAgICB3cml0ZV9ibGtfc2l6ZSA9IHN0YXRfaW5mby5z dF9zaXplIC8gV1JJVEVfQ0hVTktfQ09VTlQgKyAxOworICAgICAgICAgYmxrX3NpemUgPSB3cml0 ZV9ibGtfc2l6ZSAvIDIgKyAxOworIAorICAgICAgICAgYnVmID0gKGdsb2J1c19ieXRlX3QgKilt YWxsb2MoYmxrX3NpemUpOworQEAgLTEyMzksMTAgKzEyMzksMTAgQEAgZGF0YV9yZWFkX2JpZ19i dWZmZXJfY2FsbGJhY2soCisgICAgIGdsb2J1c19vZmZfdCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb2Zmc2V0X3JlYWQsCisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZW9mKQorIHsKKy0gICAgZGF0YV90ZXN0X2luZm9fdCAqICAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0X2luZm87IAorKyAgICBkYXRhX3Rlc3RfaW5mb190ICogICAg ICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5mbzsKKyAKKy0gICAgdmVyYm9zZV9wcmludGYo NCwgCistICAgICAgICAiZGF0YV9yZWFkX2JpZ19idWZmZXJfY2FsbGJhY2soKTpzdGFydCAlZCAl ZCAlZFxuIiwgCisrICAgIHZlcmJvc2VfcHJpbnRmKDQsCisrICAgICAgICAiZGF0YV9yZWFkX2Jp Z19idWZmZXJfY2FsbGJhY2soKTpzdGFydCAlZCAlZCAlZFxuIiwKKyAgICAgICAgICBsZW5ndGhf cmVhZCwgb2Zmc2V0X3JlYWQsIGVvZik7CisgCisgICAgIGlmKGVycm9yICE9IEdMT0JVU19OVUxM KQorQEAgLTEyNjIsOCArMTI2Miw4IEBAIGRhdGFfcmVhZF9iaWdfYnVmZmVyX2NhbGxiYWNrKAor ICAgICAgICAgeworICAgICAgICAgICAgIHZlcmJvc2VfcHJpbnRmKDMsICJlb2YgYmlnIGJ1ZmZl ciBjYWxsYmFja1xuIik7CisgICAgICAgICAgICAgLyogd3JpdGUgb3V0IHRoZSBlbnRpcmUgYnVm ZmVyICovCistICAgICAgICAgICAgCistICAgICAgICAgICAgaWYoZndyaXRlKGJ1ZmZlciwgMSwg dGVzdF9pbmZvLT5iYl9sZW4sIHRlc3RfaW5mby0+Zm91dCkgCisrCisrICAgICAgICAgICAgaWYo ZndyaXRlKGJ1ZmZlciwgMSwgdGVzdF9pbmZvLT5iYl9sZW4sIHRlc3RfaW5mby0+Zm91dCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IHRl c3RfaW5mby0+YmJfbGVuKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZmFpbHVy ZV9lbmQoImZ3cml0ZSBmYWlsZWRcbiIpOworQEAgLTEyNzYsNyArMTI3Niw3IEBAIGRhdGFfcmVh ZF9iaWdfYnVmZmVyX2NhbGxiYWNrKAorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg dmVyYm9zZV9wcmludGYoMSwgImZpbGVzIGFyZSBub3QgdGhlIHNhbWU6ICVkXG4iLCBfX0xJTkVf Xyk7CisgICAgICAgICAgICAgICAgIHRlc3RfaW5mby0+bW9uaXRvci0+ZG9uZSA9IEdMT0JVU19U UlVFOworLSAgICAgICAgICAgICAgICB0ZXN0X2luZm8tPm1vbml0b3ItPnJlc3VsdCA9IAorKyAg ICAgICAgICAgICAgICB0ZXN0X2luZm8tPm1vbml0b3ItPnJlc3VsdCA9CisgICAgICAgICAgICAg ICAgICAgICAgIGdsb2J1c19lcnJvcl9wdXQoR0xPQlVTX0VSUk9SX05PX0lORk8pOworICAgICAg ICAgICAgICAgICBnbG9idXNfY29uZF9zaWduYWwoJnRlc3RfaW5mby0+bW9uaXRvci0+Y29uZCk7 CisgICAgICAgICAgICAgfQorQEAgLTEzMzEsMTAgKzEzMzEsMTAgQEAgY29ubmVjdF93cml0ZV9i aWdfYnVmZmVyX2NhbGxiYWNrKAorICAgICAgICAgeworICAgICAgICAgICAgIGZhaWx1cmVfZW5k KCJzdGF0IGZhaWxlZFxuIik7CisgICAgICAgICB9CistICAgCisrCisgICAgICAgICBvZmZzZXQg PSAwOworICAgICAgICAgZnNlZWsodGVzdF9pbmZvLT5maW4sIG9mZnNldCwgU0VFS19TRVQpOwor LSAgICAgICAgYmxrX3NpemUgPSBzdGF0X2luZm8uc3Rfc2l6ZSAvIFdSSVRFX0NIVU5LX0NPVU5U ICsgMTsgCisrICAgICAgICBibGtfc2l6ZSA9IHN0YXRfaW5mby5zdF9zaXplIC8gV1JJVEVfQ0hV TktfQ09VTlQgKyAxOworICAgICAgICAgZm9yKGN0ciA9IDA7IGN0ciA8IFdSSVRFX0NIVU5LX0NP VU5UOyBjdHIrKykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBidWYgPSBnbG9idXNfbWFsbG9j KGJsa19zaXplKTsKK0BAIC0xMzQyLDcgKzEzNDIsNyBAQCBjb25uZWN0X3dyaXRlX2JpZ19idWZm ZXJfY2FsbGJhY2soCisgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgKiAgcmVhZCBhIGNo dW5rCisgICAgICAgICAgICAgICovCistICAgICAgICAgICAgbmJ5dGUgPSBmcmVhZChidWYsIDEs IGJsa19zaXplLCB0ZXN0X2luZm8tPmZpbik7IAorKyAgICAgICAgICAgIG5ieXRlID0gZnJlYWQo YnVmLCAxLCBibGtfc2l6ZSwgdGVzdF9pbmZvLT5maW4pOworICAgICAgICAgICAgIGlmKG5ieXRl IDwgYmxrX3NpemUpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBpZihmZW9mKHRl c3RfaW5mby0+ZmluKSkKK0BAIC0xMzY4LDcgKzEzNjgsNyBAQCBjb25uZWN0X3dyaXRlX2JpZ19i dWZmZXJfY2FsbGJhY2soCisgICAgICAgICAgICAgICAgICAgICAgIG5ieXRlLAorICAgICAgICAg ICAgICAgICAgICAgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgIGVvZiwKKy0gICAg ICAgICAgICAgICAgICAgICAgZGF0YV93cml0ZV9jYWxsYmFjaywgCisrICAgICAgICAgICAgICAg ICAgICAgIGRhdGFfd3JpdGVfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICh2b2lk ICopdGVzdF9pbmZvKTsKKyAgICAgICAgICAgICB0ZXN0X3Jlc3VsdChyZXMsICJkYXRhX3dyaXRl IiwgX19MSU5FX18pOworICAgICAgICAgICAgIG9mZnNldCArPSBuYnl0ZTsKK0BAIC0xMzc3LDcg KzEzNzcsNyBAQCBjb25uZWN0X3dyaXRlX2JpZ19idWZmZXJfY2FsbGJhY2soCisgICAgIGdsb2J1 c19tdXRleF91bmxvY2soJnRlc3RfaW5mby0+bW9uaXRvci0+bXV0ZXgpOworIH0KKyAKKy12b2lk IAorK3ZvaWQKKyBkYXRhX3JlYWRfY2FsbGJhY2soCisgICAgIHZvaWQgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfYXJnLAorICAgICBnbG9idXNfZnRwX2Nv bnRyb2xfaGFuZGxlX3QgKiAgICAgICAgICAgICAgIGhhbmRsZSwKK0BAIC0xMzg3LDEyICsxMzg3 LDEyIEBAIGRhdGFfcmVhZF9jYWxsYmFjaygKKyAgICAgZ2xvYnVzX29mZl90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvZmZzZXQsCisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW9mKQorIHsKKy0gICAgZGF0YV90ZXN0X2luZm9fdCAqICAg ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2luZm87IAorKyAgICBkYXRhX3Rlc3RfaW5mb190 ICogICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5mbzsKKyAgICAgZ2xvYnVzX3Jlc3Vs dF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXM7CisgICAgIGludCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxrX3NpemU7CisgICAgIGdsb2J1c19ieXRl X3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmOworIAorLSAgICB2ZXJib3NlX3By aW50Zig0LCAiZGF0YV9yZWFkX2NhbGxiYWNrKCkgOiBzdGFydFxuIik7IAorKyAgICB2ZXJib3Nl X3ByaW50Zig0LCAiZGF0YV9yZWFkX2NhbGxiYWNrKCkgOiBzdGFydFxuIik7CisgICAgIGlmKGVy cm9yICE9IEdMT0JVU19OVUxMKQorICAgICB7CisgICAgICAgICBmYWlsdXJlX2VuZCgiZGF0YV9y ZWFkX2NhbGxiYWNrIGVycm9yXG4iKTsKK0BAIC0xNDIwLDcgKzE0MjAsNyBAQCBkYXRhX3JlYWRf Y2FsbGJhY2soCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICB2ZXJib3NlX3ByaW50 ZigxLCAiZmlsZXMgYXJlIG5vdCB0aGUgc2FtZTogJWRcbiIsIF9fTElORV9fKTsKKyAgICAgICAg ICAgICAgICAgdGVzdF9pbmZvLT5tb25pdG9yLT5kb25lID0gR0xPQlVTX1RSVUU7CistICAgICAg ICAgICAgICAgIHRlc3RfaW5mby0+bW9uaXRvci0+cmVzdWx0ID0gCisrICAgICAgICAgICAgICAg IHRlc3RfaW5mby0+bW9uaXRvci0+cmVzdWx0ID0KKyAgICAgICAgICAgICAgICAgICAgICAgZ2xv YnVzX2Vycm9yX3B1dChHTE9CVVNfRVJST1JfTk9fSU5GTyk7CisgICAgICAgICAgICAgICAgIGds b2J1c19jb25kX3NpZ25hbCgmdGVzdF9pbmZvLT5tb25pdG9yLT5jb25kKTsKKyAgICAgICAgICAg ICB9CitAQCAtMTQ5Miw4ICsxNDkyLDggQEAgY29ubmVjdF93cml0ZV9jYWxsYmFjaygKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICBmYWlsdXJlX2VuZCgic3RhdCBmYWlsZWRcbiIpOworICAgICAg ICAgfQorLSAgICAgICAKKy0gICAgICAgIGJsa19zaXplID0gc3RhdF9pbmZvLnN0X3NpemUgLyBX UklURV9DSFVOS19DT1VOVCArIDE7IAorKworKyAgICAgICAgYmxrX3NpemUgPSBzdGF0X2luZm8u c3Rfc2l6ZSAvIFdSSVRFX0NIVU5LX0NPVU5UICsgMTsKKyAgICAgICAgIGZvcihjdHIgPSAwOyBj dHIgPCBXUklURV9DSFVOS19DT1VOVDsgY3RyKyspCisgICAgICAgICB7CisgICAgICAgICAgICAg YnVmID0gZ2xvYnVzX21hbGxvYyhibGtfc2l6ZSk7CitAQCAtMTUwMSw3ICsxNTAxLDcgQEAgY29u bmVjdF93cml0ZV9jYWxsYmFjaygKKyAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAqICBy ZWFkIGEgY2h1bmsKKyAgICAgICAgICAgICAgKi8KKy0gICAgICAgICAgICBuYnl0ZSA9IGZyZWFk KGJ1ZiwgMSwgYmxrX3NpemUsIHRlc3RfaW5mby0+ZmluKTsgCisrICAgICAgICAgICAgbmJ5dGUg PSBmcmVhZChidWYsIDEsIGJsa19zaXplLCB0ZXN0X2luZm8tPmZpbik7CisgICAgICAgICAgICAg aWYobmJ5dGUgPCBibGtfc2l6ZSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGlm KGZlb2YodGVzdF9pbmZvLT5maW4pKQorQEAgLTE1MTgsNyArMTUxOCw3IEBAIGNvbm5lY3Rfd3Jp dGVfY2FsbGJhY2soCisgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgKiAgd3JpdGUgYSBj aHVuaworICAgICAgICAgICAgICAqLworLSAgICAgICAgICAgIHZlcmJvc2VfcHJpbnRmKDQsIAor KyAgICAgICAgICAgIHZlcmJvc2VfcHJpbnRmKDQsCisgICAgICAgICAgICAgICAgICJyZWdpc3Rl cmluZyBhIHdyaXRlIDB4JXggb2Zmc2V0PSVkIGxlbmd0aD0lZCBlb2Y9JWRcbiIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBidWYsIG9mZnNldCwgbmJ5dGUsIGVvZik7CisgICAgICAgICAg ICAgcmVzID0gZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfd3JpdGUoCitAQCAtMTUyNyw3ICsxNTI3 LDcgQEAgY29ubmVjdF93cml0ZV9jYWxsYmFjaygKKyAgICAgICAgICAgICAgICAgICAgICAgbmJ5 dGUsCisgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg ICAgZW9mLAorLSAgICAgICAgICAgICAgICAgICAgICBkYXRhX3dyaXRlX2NhbGxiYWNrLCAKKysg ICAgICAgICAgICAgICAgICAgICAgZGF0YV93cml0ZV9jYWxsYmFjaywKKyAgICAgICAgICAgICAg ICAgICAgICAgKHZvaWQgKil0ZXN0X2luZm8pOworICAgICAgICAgICAgIHRlc3RfcmVzdWx0KHJl cywgImRhdGFfd3JpdGUiLCBfX0xJTkVfXyk7CisgICAgICAgICAgICAgb2Zmc2V0ICs9IG5ieXRl OworQEAgLTE1OTIsNyArMTU5Miw3IEBAIGNvbm5lY3Rfd3JpdGVfemVyb19lb2ZfY2FsbGJhY2so CisgICAgICAgICAvKgorICAgICAgICAgICogIHdyaXRlIGEgY2h1bmsKKyAgICAgICAgICAqLwor LSAgICAgICAgdmVyYm9zZV9wcmludGYoNCwgCisrICAgICAgICB2ZXJib3NlX3ByaW50Zig0LAor ICAgICAgICAgICAgICJyZWdpc3RlcmluZyBhIHdyaXRlIDB4JXggb2Zmc2V0PSVkIGxlbmd0aD0l ZCBlb2Y9JWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIG9mZnNldCwgbmJ5 dGUsIGVvZik7CisgICAgICAgICByZXMgPSBnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV93cml0ZSgK K0BAIC0xNjA1LDcgKzE2MDUsNyBAQCBjb25uZWN0X3dyaXRlX3plcm9fZW9mX2NhbGxiYWNrKAor ICAgICAgICAgICAgICAgICAgICh2b2lkICopdGVzdF9pbmZvKTsKKyAgICAgICAgIHRlc3RfcmVz dWx0KHJlcywgImRhdGFfd3JpdGUiLCBfX0xJTkVfXyk7CisgICAgICAgICBvZmZzZXQgKz0gbmJ5 dGU7CistICAgICAgIAorKworICAgICAgICAgcmVzID0gZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFf d3JpdGUoCisgICAgICAgICAgICAgICAgICAgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgIGJ1 ZiwKK0BAIC0xNjU4LDcgKzE2NTgsNyBAQCBkYXRhX3dyaXRlX2NhbGxiYWNrKAorICAgICAgICAg ICAgIGdsb2J1c19jb25kX3NpZ25hbCgmdGVzdF9pbmZvLT5tb25pdG9yLT5jb25kKTsKKyAgICAg ICAgIH0KKyAgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJnRlc3RfaW5mby0+bW9uaXRvci0+ bXV0ZXgpOworLSAgICB9IAorKyAgICB9CisgICAgIGlmKGxlbmd0aCA+IDAgJiYhZW9mKQorICAg ICB7CisgICAgICAgICBnbG9idXNfZnJlZShidWZmZXIpOworQEAgLTE3NzYsNyArMTc3Niw3IEBA IGRpZmYoCisgICAgICAgICAgICAgZG8KKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg IGIgKz0gZnJlYWQoZGJ1ZiArIGIsIDEsIGEtYiwgZGZwKTsKKy0gICAgICAgICAgICB9IAorKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICB3aGlsZSAoYiA+IDAgJiYgYiA8IGEgJiYgKCFmZW9m KGRmcCkpICYmICghZmVycm9yKGRmcCkpKTsKKyAKKyAgICAgICAgICAgICBpZiAoYSA9PSBiKQor ZGlmZiAtLWdpdCBhL2dyaWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC9nbG9idXNfZnRwX2NvbnRy b2xfdGVzdC5jIGIvZ3JpZGZ0cC9jb250cm9sL3NvdXJjZS90ZXN0L2dsb2J1c19mdHBfY29udHJv bF90ZXN0LmMKK2luZGV4IDRkNjhlNDRmMi4uMzJjYTI5NDZmIDEwMDY0NAorLS0tIGEvZ3JpZGZ0 cC9jb250cm9sL3NvdXJjZS90ZXN0L2dsb2J1c19mdHBfY29udHJvbF90ZXN0LmMKKysrKyBiL2dy aWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC9nbG9idXNfZnRwX2NvbnRyb2xfdGVzdC5jCitAQCAt NTcsOCArNTcsOCBAQCBhYm9ydF90ZXN0X3dyYXBwZXIoCisgICogIGEgc3RyaW5nIGRlc2NyaWJp bmcgaXQgdG8gdGhlICJ0ZXN0X2FycmF5IiB0YWJsZSwgYW5kCisgICogIGluY3JlYXNlIHRoZSBU RVNUX0NPVU5UIGJ5IG9uZS4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy10eXBlZGVmIAorLWdsb2J1c19ib29sX3Qg CisrdHlwZWRlZgorK2dsb2J1c19ib29sX3QKKyAgICAgKCpnbG9idXNfZnRwX2NvbnRyb2xfdGVz dF9mdW5jX3QpKAorICAgICAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICogICAgICAg ICAgIGNvbnRyb2xfaGFuZGxlKTsKKyAKK0BAIC03NCw3ICs3NCw3IEBAIHRlc3RfZW50cnlfdCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfYXJyYXlbXSA9CisgICAgIHtk aXNjb25uZWN0X3dyYXBwZXIsICJkaXNjb25uZWN0IGhhbmRsZSB0ZXN0In0sCisgICAgIHtzaW1w bGVfZGlyX3Rlc3Rfd3JhcHBlciwgInNpbXBsZSBkaXJlY3RvcnkgdGVzdCJ9LAorICAgICB7c2lt cGxlX2RhdGFfdGVzdF93cmFwcGVyLCAic2ltcGxlIGRhdGEgdGVzdCJ9LAorLSAgICB7YWJvcnRf dGVzdF93cmFwcGVyLCAiYWJvcnQgdGVzdCJ9LCAgCisrICAgIHthYm9ydF90ZXN0X3dyYXBwZXIs ICJhYm9ydCB0ZXN0In0sCisgICAgIHtvdXRzdGFuZGluZ19pb190ZXN0X3dyYXBwZXIsICJvdXRz dGFuZGluZyBpbyBkYXRhIHRlc3QifSwKKyAgICAge3NpbXBsZV9jb250cm9sX3Rlc3Rfd3JhcHBl ciwgInNpbXBsZSBjb250cm9sIHRlc3QifSwKKyAgICAge2FzeW5jX2NvbnRyb2xfdGVzdCwgImFz eW5jaHJvbm91cyBjb250cm9sIHRlc3QifSwKK0BAIC05OSwxMSArOTksMTEgQEAgbG9naW5fdCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5faW5mbyA9IHsKKyAg ICAgMAorIH07CisgZXh0ZXJuIGludCB2ZXJib3NlX3ByaW50X2xldmVsOworLWludCAKKytpbnQK KyBtYWluKAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFyZ2MsCisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXJndltdKQorLXsgCisreworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN0cjsKKyAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICAgICAgICAg ICAgICAgICBjb250cm9sX2hhbmRsZTsKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXN1bHQ7CitAQCAtMTcxLDcgKzE3MSw3IEBAIG1haW4oCisgICAg IHRlc3RzX3J1bisrOworICAgICByZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX2lu aXQoJmhhbmRsZXNbMF0pOworICAgICBjb25uZWN0X2NvbnRyb2xfaGFuZGxlKAorLSAgICAgICAg JmhhbmRsZXNbMF0sIAorKyAgICAgICAgJmhhbmRsZXNbMF0sCisgICAgICAgICBsb2dpbl9pbmZv LmxvZ2luLAorICAgICAgICAgbG9naW5faW5mby5wYXNzd29yZCwKKyAgICAgICAgIGxvZ2luX2lu Zm8uZGlyLAorQEAgLTE5Miw4ICsxOTIsOCBAQCBtYWluKAorICAgICAgICAgaWYocmVzdWx0ICE9 IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgeworICAgICAgICAgICAgIHRlc3RzX2ZhaWxlZCsr OworLSAgICAgICAgICAgIHZlcmJvc2VfcHJpbnRmKDEsIAorLSAgICAgICAgICAgICAgICAgICAg ICAgICJhY3RpdmF0ZS9kZWFjdGl2YXRlIHRlc3QgIyAlZCBmYWlsZWRcbiIsIAorKyAgICAgICAg ICAgIHZlcmJvc2VfcHJpbnRmKDEsCisrICAgICAgICAgICAgICAgICAgICAgICAgImFjdGl2YXRl L2RlYWN0aXZhdGUgdGVzdCAjICVkIGZhaWxlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg IHRlc3RzX3J1bik7CisgICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgIH0KK0BAIC0yMDMs OCArMjAzLDggQEAgbWFpbigKKyAgICAgICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NF U1MpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICB0ZXN0c19mYWlsZWQrKzsKKy0g ICAgICAgICAgICAgICAgdmVyYm9zZV9wcmludGYoMSwgCistICAgICAgICAgICAgICAgICAgICAg ICAgImFjdGl2YXRlL2RlYWN0aXZhdGUgdGVzdCAjICVkIGZhaWxlZFxuIiwgCisrICAgICAgICAg ICAgICAgIHZlcmJvc2VfcHJpbnRmKDEsCisrICAgICAgICAgICAgICAgICAgICAgICAgImFjdGl2 YXRlL2RlYWN0aXZhdGUgdGVzdCAjICVkIGZhaWxlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3RzX3J1bik7CisgICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICAg fQorQEAgLTIxNCwxNSArMjE0LDE1IEBAIG1haW4oCisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNf U1VDQ0VTUykKKyAgICAgeworICAgICAgICAgdGVzdHNfZmFpbGVkKys7CistICAgICAgICB2ZXJi b3NlX3ByaW50ZigxLCAKKy0gICAgICAgICAgICAgICAgICAgICAgICJhY3RpdmF0ZS9kZWFjdGl2 YXRlIHRlc3QgIyAlZCBmYWlsZWRcbiIsIAorKyAgICAgICAgdmVyYm9zZV9wcmludGYoMSwKKysg ICAgICAgICAgICAgICAgICAgICAgICJhY3RpdmF0ZS9kZWFjdGl2YXRlIHRlc3QgIyAlZCBmYWls ZWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19ydW4pOworICAgICAgICAgZXhp dCgxKTsKKyAgICAgfQorICAgICB0ZXN0c19wYXNzZWQrKzsKKyAgICAgdmVyYm9zZV9wcmludGYo MSwgInRlc3QgIyVkKSBhY3RpdmF0ZS9kZWFjdGl2YXRlIHBhc3NlZFxuIiwgdGVzdHNfcnVuKTsK KyAKKy0gCisrCisgICAgIC8qCisgICAgICAqICBpbml0YWlsaXplIHZhcmlhYmxlcyBmb3IgdGhl IHRlc3QKKyAgICAgICovCitAQCAtMjQ5LDE0ICsyNDksMTQgQEAgbWFpbigKKyAgICAgICAgIGlm KGViX3Rlc3RfYXJyYXlbY3RyXS50ZXN0X2Z1bmMoJmNvbnRyb2xfaGFuZGxlKSkKKyAgICAgICAg IHsKKyAgICAgICAgICAgICB0ZXN0c19wYXNzZWQrKzsKKy0gICAgICAgICAgICB2ZXJib3NlX3By aW50ZigxLCAidGVzdCAjJWQpIFwiJXNcIiBwYXNzZWQuXG4iLCAKKysgICAgICAgICAgICB2ZXJi b3NlX3ByaW50ZigxLCAidGVzdCAjJWQpIFwiJXNcIiBwYXNzZWQuXG4iLAorICAgICAgICAgICAg ICAgICAgICAgICAgdGVzdHNfcnVuLCBlYl90ZXN0X2FycmF5W2N0cl0ubmFtZSk7CisgICAgICAg ICB9CisgICAgICAgICBlbHNlCisgICAgICAgICB7CisgICAgICAgICAgICAgdGVzdHNfZmFpbGVk Kys7CisgICAgICAgICAgICAgcHJpbnRmKCJGYWlsZWRcbiIpOworLSAgICAgICAgICAgIHZlcmJv c2VfcHJpbnRmKDEsICJ0ZXN0ICMlZCkgXCIlc1wiIGZhaWxlZC5cbiIsIAorKyAgICAgICAgICAg IHZlcmJvc2VfcHJpbnRmKDEsICJ0ZXN0ICMlZCkgXCIlc1wiIGZhaWxlZC5cbiIsCisgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0c19ydW4sIGViX3Rlc3RfYXJyYXlbY3RyXS5uYW1lKTsKKyAg ICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgfQorQEAgLTI3MCwxNCArMjcwLDE0IEBAIG1h aW4oCisgICAgICAgICBpZih0ZXN0X2FycmF5W2N0cl0udGVzdF9mdW5jKCZjb250cm9sX2hhbmRs ZSkpCisgICAgICAgICB7CisgICAgICAgICAgICAgdGVzdHNfcGFzc2VkKys7CistICAgICAgICAg ICAgdmVyYm9zZV9wcmludGYoMSwgInRlc3QgIyVkKSBcIiVzXCIgcGFzc2VkLlxuIiwgCisrICAg ICAgICAgICAgdmVyYm9zZV9wcmludGYoMSwgInRlc3QgIyVkKSBcIiVzXCIgcGFzc2VkLlxuIiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19ydW4sIHRlc3RfYXJyYXlbY3RyXS5u YW1lKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsKKyAgICAgICAgICAg ICB0ZXN0c19mYWlsZWQrKzsKKyAgICAgICAgICAgICBwcmludGYoIkZhaWxlZFxuIik7CistICAg ICAgICAgICAgdmVyYm9zZV9wcmludGYoMSwgInRlc3QgIyVkKSBcIiVzXCIgZmFpbGVkLlxuIiwg CisrICAgICAgICAgICAgdmVyYm9zZV9wcmludGYoMSwgInRlc3QgIyVkKSBcIiVzXCIgZmFpbGVk LlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19ydW4sIHRlc3RfYXJyYXlb Y3RyXS5uYW1lKTsKKyAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgfQorQEAgLTMxMCwx MiArMzEwLDEyIEBAIHNpbXBsZV9jb250cm9sX3Rlc3Rfd3JhcHBlcigKKyAgICAgICAgICAgICAg bG9naW5faW5mby5kaXIsCisgICAgICAgICAgICAgIGxvZ2luX2luZm8uaG9zdG5hbWUsCisgICAg ICAgICAgICAgIGxvZ2luX2luZm8ucG9ydCk7CistICAgIGlmKHJjKSAKKysgICAgaWYocmMpCisg ICAgIHsKKyAgICAgICAgIHJjID0gc2ltcGxlX2NvbnRyb2xfdGVzdChjb250cm9sX2hhbmRsZSk7 CisgICAgIH0KKyAgICAgaWYocmMpCistICAgIHsgCisrICAgIHsKKyAgICAgICAgIHJjID0gZGlz Y29ubmVjdF9jb250cm9sX2hhbmRsZShjb250cm9sX2hhbmRsZSk7CisgICAgIH0KKyAKK0BAIC0z NjIsMTQgKzM2MiwxNCBAQCBzaW1wbGVfZGF0YV90ZXN0X3dyYXBwZXIoCisgICAgIHsKKyAgICAg ICAgIHJjID0gc2ltcGxlX2RhdGFfdGVzdChjb250cm9sX2hhbmRsZSk7CisgICAgIH0KKy0gICAg aWYocmMpIAorKyAgICBpZihyYykKKyAgICAgeworICAgICAgICAgcmMgPSBkaXNjb25uZWN0X2Nv bnRyb2xfaGFuZGxlKGNvbnRyb2xfaGFuZGxlKTsKKyAgICAgfQorIAorICAgICByZXR1cm4gcmM7 CisgfQorLSAgICAKKysKKyBnbG9idXNfYm9vbF90CisgZWJfc2ltcGxlX2RhdGFfdGVzdF93cmFw cGVyKAorICAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX3QgKiAgICAgICAgICAgICAgIGNv bnRyb2xfaGFuZGxlKQorQEAgLTM4NiwxNCArMzg2LDE0IEBAIGViX3NpbXBsZV9kYXRhX3Rlc3Rf d3JhcHBlcigKKyAgICAgeworICAgICAgICAgcmMgPSBlYl9kYXRhX3Rlc3QoY29udHJvbF9oYW5k bGUpOworICAgICB9CistICAgIGlmKHJjKSAKKysgICAgaWYocmMpCisgICAgIHsKKyAgICAgICAg IHJjID0gZGlzY29ubmVjdF9jb250cm9sX2hhbmRsZShjb250cm9sX2hhbmRsZSk7CisgICAgIH0K KyAKKyAgICAgcmV0dXJuIHJjOworIH0KKy0gICAgCisrCisgZ2xvYnVzX2Jvb2xfdAorIG91dHN0 YW5kaW5nX2lvX3Rlc3Rfd3JhcHBlcigKKyAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90 ICogICAgICAgICAgICAgICBjb250cm9sX2hhbmRsZSkKK0BAIC00MDYsMTEgKzQwNiwxMSBAQCBv dXRzdGFuZGluZ19pb190ZXN0X3dyYXBwZXIoCisgICAgICAgICAgICAgICAgbG9naW5faW5mby5k aXIsCisgICAgICAgICAgICAgIGxvZ2luX2luZm8uaG9zdG5hbWUsCisgICAgICAgICAgICAgIGxv Z2luX2luZm8ucG9ydCk7CistICAgIGlmKHJjKSAgCisrICAgIGlmKHJjKQorICAgICB7CisgICAg ICAgICByYyA9IG91dHN0YW5kaW5nX2lvX3Rlc3QoY29udHJvbF9oYW5kbGUpOworICAgICB9Cist ICAgIGlmKHJjKSAKKysgICAgaWYocmMpCisgICAgIHsKKyAgICAgICAgIHJjID0gZGlzY29ubmVj dF9jb250cm9sX2hhbmRsZShjb250cm9sX2hhbmRsZSk7CisgICAgIH0KK0BAIC00NjQsNCArNDY0 LDQgQEAgYWJvcnRfdGVzdF93cmFwcGVyKAorICAgICB9CisgCisgICAgIHJldHVybiByYzsKKy19 IAorK30KK2RpZmYgLS1naXQgYS9ncmlkZnRwL2NvbnRyb2wvc291cmNlL3Rlc3QvdGVzdF9zZXJ2 ZXIuYyBiL2dyaWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC90ZXN0X3NlcnZlci5jCitpbmRleCBk MDI3NDYyNGEuLjgwNWFjZWUyZSAxMDA2NDQKKy0tLSBhL2dyaWRmdHAvY29udHJvbC9zb3VyY2Uv dGVzdC90ZXN0X3NlcnZlci5jCisrKysgYi9ncmlkZnRwL2NvbnRyb2wvc291cmNlL3Rlc3QvdGVz dF9zZXJ2ZXIuYworQEAgLTExOSw3ICsxMTksNyBAQCBncGZ0cGRfYWNfcmVzcG9uc2VfY2FsbGJh Y2soCisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxs YmFja19hcmcsCisgICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAg ICBoYW5kbGUsCisgICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgICAgICAg ICBlcnJvcikKKy17ICAKKyt7CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAg ICAgIHJlc3VsdDsKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX3JlYWRfY29tbWFu ZHMoCisgICAgICAgICBoYW5kbGUsCitAQCAtMjI3LDcgKzIyNyw3IEBAIGdwZnRwZF9hY2NlcHRf Y2FsbGJhY2soCisgICAgICAgICAgICAgICBjYWxsYmFja19hcmcpOworIH0KKyAKKy12b2lkIAor K3ZvaWQKKyBncGZ0cGRfbGlzdGVuX2NhbGxiYWNrKAorICAgICB2b2lkICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2FyZywKKyAgICAgZ2xvYnVzX2Z0cF9j b250cm9sX3NlcnZlcl90ICogICAgICAgICAgICAgICBzZXJ2ZXJfaGFuZGxlLAorLS0gCisyLjU0 LjAKKwoKZGlmZiAtLWdpdCBhLzAwMDItRml4LWNvbXBpbGVyLWFuZC1kb3h5Z2VuLXdhcm5pbmdz LnBhdGNoIGIvMDAwMi1GaXgtY29tcGlsZXItYW5kLWRveHlnZW4td2FybmluZ3MucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYxYjNlOAotLS0gL2Rldi9udWxsCisr KyBiLzAwMDItRml4LWNvbXBpbGVyLWFuZC1kb3h5Z2VuLXdhcm5pbmdzLnBhdGNoCkBAIC0wLDAg KzEsMzY2IEBACitGcm9tIDRlZTA4ZDEzZTI5NjMzMDllMjA2M2RjNDVkZWRkMDY3MzM3ZDNiNzYg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0aWFzIEVsbGVydCA8bWF0dGlhcy5l bGxlcnRAcGh5c2ljcy51dS5zZT4KK0RhdGU6IFdlZCwgMjAgTWF5IDIwMjYgMDA6MTU6MzcgKzAy MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIEZpeCBjb21waWxlciBhbmQgZG94eWdlbiB3YXJuaW5n cworCistLS0KKyAuLi4vY29udHJvbC9zb3VyY2UvZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGEuYyAg fCAyMSArLS0tLS0tLS0tCisgLi4uL3NvdXJjZS9nbG9idXNfZnRwX2NvbnRyb2xfc2VydmVyLmMg ICAgICAgIHwgNDEgKysrKysrKysrKy0tLS0tLS0tLQorIC4uLi9zb3VyY2UvdGVzdC9jb25uZWN0 X2Rpc2Nvbm5lY3RfdGVzdC5jICAgICB8ICA0ICstCisgZ3JpZGZ0cC9jb250cm9sL3NvdXJjZS90 ZXN0L2Nvbm5lY3RfdGVzdC5jICAgIHwgIDUgKy0tCisgZ3JpZGZ0cC9jb250cm9sL3NvdXJjZS90 ZXN0L2RhdGFfdGVzdC5jICAgICAgIHwgIDIgLQorIC4uLi9jb250cm9sL3NvdXJjZS90ZXN0L2dl dF9saW5nZXJpbmdfY2xvc2UuYyB8ICA0ICstCisgLi4uL3NvdXJjZS90ZXN0L2dsb2J1c19mdHBf Y29udHJvbF90ZXN0LmMgICAgIHwgMTQgKysrLS0tLQorIGdyaWRmdHAvY29udHJvbC9zb3VyY2Uv dGVzdC90ZXN0X3NlcnZlci5jICAgICB8ICA3ICstLS0KKyA4IGZpbGVzIGNoYW5nZWQsIDM5IGlu c2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3JpZGZ0cC9jb250 cm9sL3NvdXJjZS9nbG9idXNfZnRwX2NvbnRyb2xfZGF0YS5jIGIvZ3JpZGZ0cC9jb250cm9sL3Nv dXJjZS9nbG9idXNfZnRwX2NvbnRyb2xfZGF0YS5jCitpbmRleCA2MTlhYTQ4MTAuLjUzM2UwZmJk NyAxMDA2NDQKKy0tLSBhL2dyaWRmdHAvY29udHJvbC9zb3VyY2UvZ2xvYnVzX2Z0cF9jb250cm9s X2RhdGEuYworKysrIGIvZ3JpZGZ0cC9jb250cm9sL3NvdXJjZS9nbG9idXNfZnRwX2NvbnRyb2xf ZGF0YS5jCitAQCAtMjQ5MSw3ICsyNDkxLDYgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfZ2V0 X3JlbW90ZV9ob3N0cygKKyAgICAgZ2xvYnVzX2Z0cF9kYXRhX2Nvbm5lY3Rpb25fdCAqICAgICAg ICAgICAgICBkYXRhX2Nvbm47CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY3RyOworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5keDsKKy0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb3VudDsKKyAgICAgc3RhdGljIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBteW5hbWU9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYnVzX2Z0cF9j b250cm9sX2RhdGFfZ2V0X3JlbW90ZV9ob3N0cyI7CisgCitAQCAtMjU2NSwxMyArMjU2NCw2IEBA IGdsb2J1c19mdHBfY29udHJvbF9kYXRhX2dldF9yZW1vdGVfaG9zdHMoCisgICAgICAgICAgICAg cmV0dXJuIHJlczsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIC8qIGNvdW50IHRoZSB0b3RhbCAj IG9mIGNvbm5lY3Rpb25zICovCistICAgICAgICBjb3VudCA9IDA7CistICAgICAgICBmb3IoY3Ry ID0gMDsgY3RyIDwgdHJhbnNmZXJfaGFuZGxlLT5zdHJpcGVfY291bnQ7IGN0cisrKQorLSAgICAg ICAgeworLSAgICAgICAgICAgIGNvdW50ICs9IGdsb2J1c19saXN0X3NpemUodHJhbnNmZXJfaGFu ZGxlLT5zdHJpcGVzW2N0cl0uYWxsX2Nvbm5fbGlzdCk7CistICAgICAgICB9CistCisgICAgICAg ICBuZHggPSAwOworICAgICAgICAgZm9yKGN0ciA9IDA7IGN0ciA8IHRyYW5zZmVyX2hhbmRsZS0+ c3RyaXBlX2NvdW50ICYmCisgICAgICAgICAgICAgICAgICAgICAgbmR4IDwgKmFkZHJfY291bnQ7 IGN0cisrKQorQEAgLTgyMTksNyArODIxMSw2IEBAIGdsb2J1c19sX2Z0cF9pb19jbG9zZV9jYWxs YmFjaygKKyAgICAgZ2xvYnVzX2xfZnRwX2RhdGFfY2FsbGJhY2tfaW5mb190ICogICAgICAgICAg Y2FsbGJhY2tfaW5mbzsKKyAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfY2FsbGJhY2tfdCAg ICAgICAgICBlb2ZfY2FsbGJhY2sgPSBHTE9CVVNfTlVMTDsKKyAgICAgZ2xvYnVzX2xfZnRwX2hh bmRsZV90YWJsZV9lbnRyeV90ICogICAgICAgICBlb2ZfY2JfZW50OworLSAgICBnbG9idXNfYm9v bF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGw7CisgCisgICAgIGNhbGxiYWNr X2luZm8gPSAoZ2xvYnVzX2xfZnRwX2RhdGFfY2FsbGJhY2tfaW5mb190ICopYXJnOworIAorQEAg LTgyNjYsMTMgKzgyNTcsMTMgQEAgZ2xvYnVzX2xfZnRwX2lvX2Nsb3NlX2NhbGxiYWNrKAorIAor ICAgICBnbG9idXNfbXV0ZXhfbG9jaygmZGNfaGFuZGxlLT5tdXRleCk7CisgICAgIHsKKy0gICAg ICAgIHBvbGwgPSAhZ2xvYnVzX2xfZnRwX2NvbnRyb2xfZGNfZGVjX3JlZih0cmFuc2Zlcl9oYW5k bGUpOworKyAgICAgICAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfZGNfZGVjX3JlZih0cmFuc2Zlcl9o YW5kbGUpOworICAgICAgICAgLyoKKyAgICAgICAgICAqICBkZWNyZW1lbnQgdGhlIHJlZmVyZW5j ZSB0aGUgY2FsbGJhY2tzIGhhZAorICAgICAgICAgICovCisgICAgICAgICBpZihlb2ZfY2FsbGJh Y2sgIT0gR0xPQlVTX05VTEwpCisgICAgICAgICB7CistICAgICAgICAgICAgcG9sbCA9ICFnbG9i dXNfbF9mdHBfY29udHJvbF9kY19kZWNfcmVmKHRyYW5zZmVyX2hhbmRsZSk7CisrICAgICAgICAg ICAgZ2xvYnVzX2xfZnRwX2NvbnRyb2xfZGNfZGVjX3JlZih0cmFuc2Zlcl9oYW5kbGUpOworICAg ICAgICAgfQorICAgICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmRjX2hhbmRsZS0+bXV0 ZXgpOworQEAgLTgyOTMsMTQgKzgyODQsNiBAQCBnbG9idXNfbF9mdHBfaW9fY2xvc2VfY2FsbGJh Y2soCisgICAgICAgICAgICAgZGF0YV9jb25uLT5mcmVlX21lID0gR0xPQlVTX1RSVUU7CisgICAg ICAgICB9CisgICAgIH0KKy0KKy0gICAgLyoKKy0gICAgVGhpcyBpcyBub3QgbmVlZGVkIGFuZCBp bnRyb2R1Y2VzIGEgcmFjZQorLSAgICBpZihwb2xsKQorLSAgICB7CistICAgICAgICBnbG9idXNf bF9mdHBfZGF0YV9zdHJpcGVfcG9sbChkY19oYW5kbGUpOworLSAgICB9CistICAgICovCisgfQor IAorIAorZGlmZiAtLWdpdCBhL2dyaWRmdHAvY29udHJvbC9zb3VyY2UvZ2xvYnVzX2Z0cF9jb250 cm9sX3NlcnZlci5jIGIvZ3JpZGZ0cC9jb250cm9sL3NvdXJjZS9nbG9idXNfZnRwX2NvbnRyb2xf c2VydmVyLmMKK2luZGV4IDAxNTQ3YjkzNi4uMzA2MDUzMWM5IDEwMDY0NAorLS0tIGEvZ3JpZGZ0 cC9jb250cm9sL3NvdXJjZS9nbG9idXNfZnRwX2NvbnRyb2xfc2VydmVyLmMKKysrKyBiL2dyaWRm dHAvY29udHJvbC9zb3VyY2UvZ2xvYnVzX2Z0cF9jb250cm9sX3NlcnZlci5jCitAQCAtMTI1Myw3 ICsxMjUzLDYgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX3NlcnZlcl9hdXRoZW50aWNhdGUoCisgICAg IGdsb2J1c19mdHBfY29udHJvbF9hdXRoX2NhbGxiYWNrX3QgICAgICAgICAgY2FsbGJhY2ssCisg ICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tf YXJnKQorIHsKKy0gICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAgICAgICAgICAgICAg ZXJyb3IgPSBHTE9CVVNfTlVMTDsKKyAgICAgZ2xvYnVzX2Z0cF9jY19oYW5kbGVfdCAqICAgICAg ICAgICAgICAgICAgY2NfaGFuZGxlOworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAg ICAgICAgICAgICAgICByYzsKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmMyOworQEAgLTEyOTgsNyArMTI5Nyw2IEBAIGdsb2J1c19mdHBfY29udHJvbF9z ZXJ2ZXJfYXV0aGVudGljYXRlKAorICAgICAgICAgJihjY19oYW5kbGUtPmF1dGhfaW5mbyksR0xP QlVTX05VTEwpOworICAgICBpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworLSAgICAg ICAgZXJyb3I9Z2xvYnVzX2Vycm9yX2dldChyYyk7CisgICAgICAgICBnb3RvIGVycm9yX3N0ZDsK KyAgICAgfQorIAorQEAgLTEzMTYsNyArMTMxNCw2IEBAIGdsb2J1c19mdHBfY29udHJvbF9zZXJ2 ZXJfYXV0aGVudGljYXRlKAorIAorICAgICAgICAgaWYgKHJjICE9IEdMT0JVU19TVUNDRVNTKQor ICAgICAgICAgeworLSAgICAgICAgICAgIGVycm9yID0gZ2xvYnVzX2Vycm9yX2dldChyYyk7Cisg ICAgICAgICAgICAgZ290byBlcnJvcl9zdGQ7CisgICAgICAgICB9CisgCitAQCAtMTMzMCwxMSAr MTMyNywxMiBAQCBnbG9idXNfZnRwX2NvbnRyb2xfc2VydmVyX2F1dGhlbnRpY2F0ZSgKKyAgICAg ICAgICAgICB8fCBjY19oYW5kbGUtPmF1dGhfaW5mby5hdXRoX2dzc2FwaV9jb250ZXh0CisgICAg ICAgICAgICAgICAgID09IEdTU19DX05PX0NPTlRFWFQpCisgICAgICAgICB7CistICAgICAgICAg ICAgZXJyb3IgPSBnbG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmluZygKKy0gICAgICAgICAgICAg ICAgR0xPQlVTX0ZUUF9DT05UUk9MX01PRFVMRSwKKy0gICAgICAgICAgICAgICAgKHJjICE9IEdM T0JVU19TVUNDRVNTKSA/IGdsb2J1c19lcnJvcl9nZXQocmMpIDogTlVMTCwKKy0gICAgICAgICAg ICAgICAgX0ZDU0woIlRMUyBjb250cm9sIGNoYW5uZWwgbm90IGVzdGFibGlzaGVkIikpOworLQor KyAgICAgICAgICAgIHJjID0gZ2xvYnVzX2Vycm9yX3B1dCgKKysgICAgICAgICAgICAgICAgZ2xv YnVzX2Vycm9yX2NvbnN0cnVjdF9zdHJpbmcoCisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNf RlRQX0NPTlRST0xfTU9EVUxFLAorKyAgICAgICAgICAgICAgICAgICAgKHJjICE9IEdMT0JVU19T VUNDRVNTKSA/IGdsb2J1c19lcnJvcl9nZXQocmMpIDogTlVMTCwKKysgICAgICAgICAgICAgICAg ICAgIF9GQ1NMKCJUTFMgY29udHJvbCBjaGFubmVsIG5vdCBlc3RhYmxpc2hlZCIpKQorKyAgICAg ICAgICAgICAgICApOworICAgICAgICAgICAgIGdvdG8gZXJyb3Jfc3RkOworICAgICAgICAgfQor IAorQEAgLTEzNTgsMTAgKzEzNTYsMTIgQEAgZ2xvYnVzX2Z0cF9jb250cm9sX3NlcnZlcl9hdXRo ZW50aWNhdGUoCisgCisgICAgICAgICBpZiAobWFqX3N0YXQgIT0gR1NTX1NfQ09NUExFVEUpCisg ICAgICAgICB7CistICAgICAgICAgICAgZXJyb3IgPSBnbG9idXNfZXJyb3JfY29uc3RydWN0X3N0 cmluZygKKy0gICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX01PRFVMRSwKKy0gICAg ICAgICAgICAgICAgZ2xvYnVzX2Vycm9yX2dldChtaW5fc3RhdCksCistICAgICAgICAgICAgICAg IF9GQ1NMKCJnc3NfaW5xdWlyZV9jb250ZXh0IGZhaWxlZCIpKTsKKysgICAgICAgICAgICByYyA9 IGdsb2J1c19lcnJvcl9wdXQoCisrICAgICAgICAgICAgICAgIGdsb2J1c19lcnJvcl9jb25zdHJ1 Y3Rfc3RyaW5nKAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX01PRFVM RSwKKysgICAgICAgICAgICAgICAgICAgIGdsb2J1c19lcnJvcl9nZXQobWluX3N0YXQpLAorKyAg ICAgICAgICAgICAgICAgICAgX0ZDU0woImdzc19pbnF1aXJlX2NvbnRleHQgZmFpbGVkIikpCisr ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgZ290byBlcnJvcl9zdGQ7CisgICAgICAg ICB9CisgCitAQCAtMTM3OCwxMCArMTM3OCwxMiBAQCBnbG9idXNfZnRwX2NvbnRyb2xfc2VydmVy X2F1dGhlbnRpY2F0ZSgKKyAKKyAgICAgICAgIGlmIChtYWpfc3RhdCAhPSBHU1NfU19DT01QTEVU RSkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBlcnJvciA9IGdsb2J1c19lcnJvcl9jb25zdHJ1 Y3Rfc3RyaW5nKAorLSAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NPTlRST0xfTU9EVUxFLAor LSAgICAgICAgICAgICAgICBOVUxMLAorLSAgICAgICAgICAgICAgICBfRkNTTCgiZ3NzX2Rpc3Bs YXlfbmFtZSBmYWlsZWQiKSk7CisrICAgICAgICAgICAgcmMgPSBnbG9idXNfZXJyb3JfcHV0KAor KyAgICAgICAgICAgICAgICBnbG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmluZygKKysgICAgICAg ICAgICAgICAgICAgIEdMT0JVU19GVFBfQ09OVFJPTF9NT0RVTEUsCisrICAgICAgICAgICAgICAg ICAgICBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgX0ZDU0woImdzc19kaXNwbGF5X25hbWUg ZmFpbGVkIikpCisrICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgZ290byBlcnJvcl9z dGQ7CisgICAgICAgICB9CisgICAgICAgICBjY19oYW5kbGUtPmF1dGhfaW5mby5hdXRoX2dzc2Fw aV9zdWJqZWN0CitAQCAtMTM5MSwxMCArMTM5MywxMiBAQCBnbG9idXNfZnRwX2NvbnRyb2xfc2Vy dmVyX2F1dGhlbnRpY2F0ZSgKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnc3NfcmVsZWFzZV9i dWZmZXIoJm1pbl9zdGF0LCAmc3ViamVjdF9idWYpOworIAorLSAgICAgICAgICAgIGVycm9yID0g Z2xvYnVzX2Vycm9yX2NvbnN0cnVjdF9zdHJpbmcoCisrICAgICAgICAgICAgcmMgPSBnbG9idXNf ZXJyb3JfcHV0KAorKyAgICAgICAgICAgICAgICBnbG9idXNfZXJyb3JfY29uc3RydWN0X3N0cmlu ZygKKyAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ09OVFJPTF9NT0RVTEUsCisgICAg ICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKy0gICAgICAgICAgICAgICAgICAgIF9GQ1NM KCJnbG9idXNfbF9mdHBfY29udHJvbF9hdXRoX3JlYWRfY2I6IG1hbGxvYyBmYWlsZWQiKSk7Cisr ICAgICAgICAgICAgICAgICAgICBfRkNTTCgiZ2xvYnVzX2xfZnRwX2NvbnRyb2xfYXV0aF9yZWFk X2NiOiBtYWxsb2MgZmFpbGVkIikpCisrICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAg Z290byBlcnJvcl9zdGQ7CisgICAgICAgICB9CisgCitAQCAtMTQxNSw3ICsxNDE5LDYgQEAgZ2xv YnVzX2Z0cF9jb250cm9sX3NlcnZlcl9hdXRoZW50aWNhdGUoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGhhbmRsZSk7CisgICAgIGlmKHJjICE9IEdMT0JVU19TVUNDRVNTKQorICAg ICB7CistICAgICAgICBlcnJvcj1nbG9idXNfZXJyb3JfZ2V0KHJjKTsKKyAgICAgICAgIGdvdG8g ZXJyb3Jfc3RkOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvZ3JpZGZ0cC9jb250cm9sL3NvdXJj ZS90ZXN0L2Nvbm5lY3RfZGlzY29ubmVjdF90ZXN0LmMgYi9ncmlkZnRwL2NvbnRyb2wvc291cmNl L3Rlc3QvY29ubmVjdF9kaXNjb25uZWN0X3Rlc3QuYworaW5kZXggOTI2NzNhODRhLi5iZjQ3YTQ3 NGEgMTAwNjQ0CistLS0gYS9ncmlkZnRwL2NvbnRyb2wvc291cmNlL3Rlc3QvY29ubmVjdF9kaXNj b25uZWN0X3Rlc3QuYworKysrIGIvZ3JpZGZ0cC9jb250cm9sL3NvdXJjZS90ZXN0L2Nvbm5lY3Rf ZGlzY29ubmVjdF90ZXN0LmMKK0BAIC03MywxMCArNzMsMTAgQEAgY29ubmVjdF9yZXNwb25zZV9j YWxsYmFjaygKKyAgICAgeworICAgICAgICAgbWVtc2V0KCZhdXRoLCAnXDAnLCBzaXplb2YoYXV0 aCkpOworICAgICAgICAgeworLSAgICAgICAgICAgIE9NX3VpbnQzMiBtYWosIG1pbjsKKysgICAg ICAgICAgICBPTV91aW50MzIgbWluOworICAgICAgICAgICAgIGdzc19idWZmZXJfZGVzYyBidWZm ZXI7CisgCistICAgICAgICAgICAgbWFqID0gZ3NzX2FjcXVpcmVfY3JlZCgKKysgICAgICAgICAg ICBnc3NfYWNxdWlyZV9jcmVkKAorICAgICAgICAgICAgICAgICAgICAgJm1pbiwKKyAgICAgICAg ICAgICAgICAgICAgIEdTU19DX05PX05BTUUsCisgICAgICAgICAgICAgICAgICAgICAwLAorZGlm ZiAtLWdpdCBhL2dyaWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC9jb25uZWN0X3Rlc3QuYyBiL2dy aWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC9jb25uZWN0X3Rlc3QuYworaW5kZXggZTFjYjU5ODA5 Li45ZjlhYjllZTkgMTAwNjQ0CistLS0gYS9ncmlkZnRwL2NvbnRyb2wvc291cmNlL3Rlc3QvY29u bmVjdF90ZXN0LmMKKysrKyBiL2dyaWRmdHAvY29udHJvbC9zb3VyY2UvdGVzdC9jb25uZWN0X3Rl c3QuYworQEAgLTk1NCwxOSArOTU0LDE4IEBAIGdsb2J1c19sX3NlcnZlcl9hY2NlcHRfY2FsbGJh Y2soCisgICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgaGFu ZGxlLAorICAgICBnbG9idXNfb2JqZWN0X3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy cm9yKQorIHsKKy0gICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzOwor ICAgICBhdXRoX3Rlc3Rfc2VydmVyX3Nlc3Npb25fdCAgICAgICAgICpzZXNzaW9uID0gY2FsbGJh Y2tfYXJnOworIAorICAgICBpZiAoZXJyb3IgIT0gTlVMTCkKKyAgICAgeworICAgICAgICAgc2Vz c2lvbi0+c2VydmVyX3N0YXRlID0gU0VSVkVSX0RPTkU7CistICAgICAgICByZXMgPSBnbG9idXNf ZnRwX2NvbnRyb2xfZm9yY2VfY2xvc2UoCisrICAgICAgICBnbG9idXNfZnRwX2NvbnRyb2xfZm9y Y2VfY2xvc2UoCisgICAgICAgICAgICAgaGFuZGxlLAorICAgICAgICAgICAgIGdsb2J1c19sX3Nl cnZlcl9jbG9zZV9jYWxsYmFjaywKKyAgICAgICAgICAgICBjYWxsYmFja19hcmcpOworICAgICB9 CisgCistICAgIHJlcyA9IGdsb2J1c19mdHBfY29udHJvbF9zZW5kX3Jlc3BvbnNlKAorKyAgICBn bG9idXNfZnRwX2NvbnRyb2xfc2VuZF9yZXNwb25zZSgKKyAgICAgICAgIGhhbmRsZSwKKyAgICAg ICAgICIyMjAgR2xvYnVzIEdyaWRGVFAgVGVzdCBTZXJ2ZXJcclxuIiwKKyAgICAgICAgIGdsb2J1 c19sX3NlcnZlcl9yZXNwb25zZV9jYWxsYmFjaywKK2RpZmYgLS1naXQgYS9ncmlkZnRwL2NvbnRy b2wvc291cmNlL3Rlc3QvZGF0YV90ZXN0LmMgYi9ncmlkZnRwL2NvbnRyb2wvc291cmNlL3Rlc3Qv ZGF0YV90ZXN0LmMKK2luZGV4IGI3MDg3NDdlZi4uYmE1ZDllNjEwIDEwMDY0NAorLS0tIGEvZ3Jp ZGZ0cC9jb250cm9sL3NvdXJjZS90ZXN0L2RhdGFfdGVzdC5jCisrKysgYi9ncmlkZnRwL2NvbnRy b2wvc291cmNlL3Rlc3QvZGF0YV90ZXN0LmMKK0BAIC03MzUsNyArNzM1LDYgQEAgZ2xvYnVzX3Jl c3VsdF90CisgY2FjaGVfbXVsdGlwYXJhbGxlbF90ZXN0KAorICAgICBzZXRfaGFuZGxlX21vZGVf Y2JfdCAgICAgICAgICAgICAgICAgICAgICAgbW9kZV9jYikKKyB7CistICAgIGludCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHI7CisgICAgIGludCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHIyOworICAgICBnbG9idXNfcmVzdWx0X3Qg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzOworICAgICBnbG9idXNfZnRwX2NvbnRyb2xf aG9zdF9wb3J0X3QgICAgICAgICAgICAgaG9zdF9wb3J0OworQEAgLTc2OSw3ICs3NjgsNiBAQCBj YWNoZV9tdWx0aXBhcmFsbGVsX3Rlc3QoCisgICAgIGZvcihjdHIyID0gMDsgbnNvY2tfYVtjdHIy XSAhPSAwOyBjdHIyKyspCisgICAgIHsKKyAgICAgICAgIHZlcmJvc2VfcHJpbnRmKDIsICJwYXJh bGxlbCBsZXZlbCAlZFxuIiwgbnNvY2tfYVtjdHIyXSk7CistLy8gICAgICAgIGZvcihjdHIgPSAw OyBjdHIgPCBURVNUX0lURVJBVElPTlM7IGN0cisrKQorICAgICAgICAgeworICAgICAgICAgICAg IG1vZGVfY2IoJnBhc3ZfaGFuZGxlLCBuc29ja19hW2N0cjJdKTsKKyAgICAgICAgICAgICBtb2Rl X2NiKCZwb3J0X2hhbmRsZSwgbnNvY2tfYVtjdHIyXSk7CitkaWZmIC0tZ2l0IGEvZ3JpZGZ0cC9j b250cm9sL3NvdXJjZS90ZXN0L2dldF9saW5nZXJpbmdfY2xvc2UuYyBiL2dyaWRmdHAvY29udHJv bC9zb3VyY2UvdGVzdC9nZXRfbGluZ2VyaW5nX2Nsb3NlLmMKK2luZGV4IGZhMTAwMzBkOC4uM2Zh NjkyNWRkIDEwMDY0NAorLS0tIGEvZ3JpZGZ0cC9jb250cm9sL3NvdXJjZS90ZXN0L2dldF9saW5n ZXJpbmdfY2xvc2UuYworKysrIGIvZ3JpZGZ0cC9jb250cm9sL3NvdXJjZS90ZXN0L2dldF9saW5n ZXJpbmdfY2xvc2UuYworQEAgLTU5LDEzICs1OSwxMyBAQCByZXNwb25zZV9jYigKKyAgICAgewor ICAgICAgICAgaWYocmVzcG9uc2UtPmNvZGUgPT0gMjIwKQorICAgICAgICAgeworLSAgICAgICAg ICAgIE9NX3VpbnQzMiBtYWosIG1pbjsKKysgICAgICAgICAgICBPTV91aW50MzIgbWluOworICAg ICAgICAgICAgIGdzc19idWZmZXJfZGVzYyBidWZmZXI7CisgICAgICAgICAgICAgZ3NzX2NyZWRf aWRfdCBnX2NyZWQ7CisgICAgICAgICAgICAgZ3NzX25hbWVfdCBnX25hbWU7CisgICAgICAgICAg ICAgY2hhciAqIGdfc3ViamVjdDsKKyAKKy0gICAgICAgICAgICBtYWogPSBnc3NfYWNxdWlyZV9j cmVkKAorKyAgICAgICAgICAgIGdzc19hY3F1aXJlX2NyZWQoCisgICAgICAgICAgICAgICAgICAg ICAmbWluLAorICAgICAgICAgICAgICAgICAgICAgR1NTX0NfTk9fTkFNRSwKKyAgICAgICAgICAg ICAgICAgICAgIDAsCitkaWZmIC0tZ2l0IGEvZ3JpZGZ0cC9jb250cm9sL3NvdXJjZS90ZXN0L2ds b2J1c19mdHBfY29udHJvbF90ZXN0LmMgYi9ncmlkZnRwL2NvbnRyb2wvc291cmNlL3Rlc3QvZ2xv YnVzX2Z0cF9jb250cm9sX3Rlc3QuYworaW5kZXggMzJjYTI5NDZmLi4wMTU3NWFiNTEgMTAwNjQ0 CistLS0gYS9ncmlkZnRwL2NvbnRyb2wvc291cmNlL3Rlc3QvZ2xvYnVzX2Z0cF9jb250cm9sX3Rl c3QuYworKysrIGIvZ3JpZGZ0cC9jb250cm9sL3NvdXJjZS90ZXN0L2dsb2J1c19mdHBfY29udHJv bF90ZXN0LmMKK0BAIC0xNjcsNyArMTY3LDcgQEAgbWFpbigKKyAgICAgLyoKKyAgICAgICogIGZp cnN0IHRlc3QKKyAgICAgICovCistICAgIHJjID0gZ2xvYnVzX21vZHVsZV9hY3RpdmF0ZShHTE9C VVNfRlRQX0NPTlRST0xfTU9EVUxFKTsKKysgICAgZ2xvYnVzX21vZHVsZV9hY3RpdmF0ZShHTE9C VVNfRlRQX0NPTlRST0xfTU9EVUxFKTsKKyAgICAgdGVzdHNfcnVuKys7CisgICAgIHJlc3VsdCA9 IGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfaW5pdCgmaGFuZGxlc1swXSk7CisgICAgIGNvbm5l Y3RfY29udHJvbF9oYW5kbGUoCitAQCAtMTc3LDE0ICsxNzcsMTQgQEAgbWFpbigKKyAgICAgICAg IGxvZ2luX2luZm8uZGlyLAorICAgICAgICAgbG9naW5faW5mby5ob3N0bmFtZSwKKyAgICAgICAg IGxvZ2luX2luZm8ucG9ydCk7CistICAgIHJjID0gZ2xvYnVzX21vZHVsZV9kZWFjdGl2YXRlKEdM T0JVU19GVFBfQ09OVFJPTF9NT0RVTEUpOworKyAgICBnbG9idXNfbW9kdWxlX2RlYWN0aXZhdGUo R0xPQlVTX0ZUUF9DT05UUk9MX01PRFVMRSk7CisgICAgIHRlc3RzX3Bhc3NlZCsrOworICAgICB2 ZXJib3NlX3ByaW50ZigxLCAidGVzdCAjJWQpIGFjdGl2YXRlL2Nvbm5lY3QvZGVhY3RpdmF0ZSBw YXNzZWRcbiIsIHRlc3RzX3J1bik7CisgCisgICAgIC8qCisgICAgICAqICBzZWNvbmQgdGVzdAor ICAgICAgKi8KKy0gICAgcmMgPSBnbG9idXNfbW9kdWxlX2FjdGl2YXRlKEdMT0JVU19GVFBfQ09O VFJPTF9NT0RVTEUpOworKyAgICBnbG9idXNfbW9kdWxlX2FjdGl2YXRlKEdMT0JVU19GVFBfQ09O VFJPTF9NT0RVTEUpOworICAgICB0ZXN0c19ydW4rKzsKKyAgICAgZm9yKGN0ciA9IDA7IGN0ciA8 IFRFU1RfQ09VTlQ7IGN0cisrKQorICAgICB7CitAQCAtMjExLDcgKzIxMSw3IEBAIG1haW4oCisg ICAgICAgICB9CisgICAgIH0KKyAgICAgcmMgPSBnbG9idXNfbW9kdWxlX2RlYWN0aXZhdGUoR0xP QlVTX0ZUUF9DT05UUk9MX01PRFVMRSk7CistICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VT UykKKysgICAgaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIHRlc3Rz X2ZhaWxlZCsrOworICAgICAgICAgdmVyYm9zZV9wcmludGYoMSwKK0BAIC0yMjcsNyArMjI3LDcg QEAgbWFpbigKKyAgICAgICogIGluaXRhaWxpemUgdmFyaWFibGVzIGZvciB0aGUgdGVzdAorICAg ICAgKi8KKyAgICAgcmMgPSBnbG9idXNfbW9kdWxlX2FjdGl2YXRlKEdMT0JVU19DT01NT05fTU9E VUxFKTsKKy0gICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICBpZihyYyAhPSBH TE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2xpYmNfcHJpbnRmKCJ1bmFi bGUgdG8gYWN0aXZhdGUgY29tbW9uIG1vZHVsZVxuIik7CisgICAgICAgICBleGl0KDEpOworQEAg LTIzNiw3ICsyMzYsNyBAQCBtYWluKAorICAgICAgKiAgcnVuIHN0cmVhbSBtb2RlIHRlc3RzCisg ICAgICAqLworICAgICByYyA9IGdsb2J1c19tb2R1bGVfYWN0aXZhdGUoR0xPQlVTX0ZUUF9DT05U Uk9MX01PRFVMRSk7CistICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgaWYo cmMgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19saWJjX3ByaW50 ZigidW5hYmxlIHRvIGFjdGl2YXRlIGdzaWZ0cCBtb2R1bGVcbiIpOworICAgICAgICAgZXhpdCgx KTsKK0BAIC0yODUsNyArMjg1LDcgQEAgbWFpbigKKyAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hh bmRsZV9kZXN0cm95KCZjb250cm9sX2hhbmRsZSk7CisgCisgICAgIHJjID0gZ2xvYnVzX21vZHVs ZV9kZWFjdGl2YXRlKEdMT0JVU19GVFBfQ09OVFJPTF9NT0RVTEUpOworLSAgICBpZihyZXN1bHQg IT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgIGlmKHJjICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7 CisgICAgICAgICBnbG9idXNfbGliY19wcmludGYoInVuYWJsZSB0byBhY3RpdmF0ZSBnc2lmdHAg bW9kdWxlXG4iKTsKKyAgICAgICAgIGV4aXQoMSk7CitkaWZmIC0tZ2l0IGEvZ3JpZGZ0cC9jb250 cm9sL3NvdXJjZS90ZXN0L3Rlc3Rfc2VydmVyLmMgYi9ncmlkZnRwL2NvbnRyb2wvc291cmNlL3Rl c3QvdGVzdF9zZXJ2ZXIuYworaW5kZXggODA1YWNlZTJlLi41NmI5NGM1MzAgMTAwNjQ0CistLS0g YS9ncmlkZnRwL2NvbnRyb2wvc291cmNlL3Rlc3QvdGVzdF9zZXJ2ZXIuYworKysrIGIvZ3JpZGZ0 cC9jb250cm9sL3NvdXJjZS90ZXN0L3Rlc3Rfc2VydmVyLmMKK0BAIC0xMjAsOCArMTIwLDcgQEAg Z3BmdHBkX2FjX3Jlc3BvbnNlX2NhbGxiYWNrKAorICAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFu ZGxlX3QgKiAgICAgICAgICAgICAgaGFuZGxlLAorICAgICBnbG9idXNfb2JqZWN0X3QgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgZXJyb3IpCisgeworLSAgICBnbG9idXNfcmVzdWx0X3QgICAg ICAgICAgICAgICAgICAgICByZXN1bHQ7CistICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJv bF9yZWFkX2NvbW1hbmRzKAorKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfcmVhZF9jb21tYW5kcygK KyAgICAgICAgIGhhbmRsZSwKKyAgICAgICAgIGdwZnRwZF9jb21tYW5kX2NhbGxiYWNrLAorICAg ICAgICAgY2FsbGJhY2tfYXJnKTsKK0BAIC0yMTMsMTQgKzIxMiwxMiBAQCBncGZ0cGRfYWNjZXB0 X2NhbGxiYWNrKAorICAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX3QgKiAgICAgICAgICAg ICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAgICAgICAgICAg ICAgICBlcnJvcikKKyB7CistICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVzOworLQorICAgICBpZihlcnJvcikKKyAgICAgeworICAgICAgICAgZXJyb3Jf bXNnKGdsb2J1c19lcnJvcl9wdXQoZXJyb3IpLCBfX0xJTkVfXyk7CisgICAgIH0KKyAKKy0gICAg cmVzID0gZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfcmVzcG9uc2UoCisrICAgIGdsb2J1c19mdHBf Y29udHJvbF9zZW5kX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgaGFuZGxlLAorICAgICAgICAg ICAgICAgIjIyMCBHbG9idXMgR3JpZEZUUCBUZXN0IFNlcnZlclxyXG4iLAorICAgICAgICAgICAg ICAgZ3BmdHBkX3Jlc3BvbnNlX2NhbGxiYWNrLAorLS0gCisyLjU0LjAKKwoKZGlmZiAtLWdpdCBh L2dsb2J1cy1mdHAtY29udHJvbC5zcGVjIGIvZ2xvYnVzLWZ0cC1jb250cm9sLnNwZWMKaW5kZXgg MGM1NDc2ZS4uY2M2ZmNlZiAxMDA2NDQKLS0tIGEvZ2xvYnVzLWZ0cC1jb250cm9sLnNwZWMKKysr IGIvZ2xvYnVzLWZ0cC1jb250cm9sLnNwZWMKQEAgLTEsMTMgKzEsMTUgQEAKIE5hbWU6CQlnbG9i dXMtZnRwLWNvbnRyb2wKICVnbG9iYWwgX25hbWUgJSh0ciAtIF8gPDw8ICV7bmFtZX0pCiBWZXJz aW9uOgk5LjEwCi1SZWxlYXNlOgkxMCV7P2Rpc3R9CitSZWxlYXNlOgkxMSV7P2Rpc3R9CiBTdW1t YXJ5OglHcmlkIENvbW11bml0eSBUb29sa2l0IC0gR3JpZEZUUCBDb250cm9sIExpYnJhcnkKIAog TGljZW5zZToJQXBhY2hlLTIuMAogVVJMOgkJaHR0cHM6Ly9naXRodWIuY29tL2dyaWRjZi9nY3Qv CiBTb3VyY2U6CQlodHRwczovL3JlcG8uZ3JpZGNmLm9yZy9nY3Q2L3NvdXJjZXMvJXtfbmFtZX0t JXt2ZXJzaW9ufS50YXIuZ3oKIFNvdXJjZTg6CVJFQURNRQorUGF0Y2gwOgkJMDAwMS1VbnRhYmlm eS1hbmQtcmVtb3ZlLXRyYWlsaW5nLXdoaXRlLXNwYWNlLnBhdGNoCitQYXRjaDE6CQkwMDAyLUZp eC1jb21waWxlci1hbmQtZG94eWdlbi13YXJuaW5ncy5wYXRjaAogCiBCdWlsZFJlcXVpcmVzOglt YWtlCiBCdWlsZFJlcXVpcmVzOglnY2MKQEAgLTY3LDYgKzY5LDggQEAgR3JpZEZUUCBDb250cm9s IExpYnJhcnkgRG9jdW1lbnRhdGlvbiBGaWxlcwogCiAlcHJlcAogJXNldHVwIC1xIC1uICV7X25h bWV9LSV7dmVyc2lvbn0KKyVwYXRjaCAtUDAgLXA0CislcGF0Y2ggLVAxIC1wNAogCiAlYnVpbGQK ICMgUmVkdWNlIG92ZXJsaW5raW5nCkBAIC0xMTgsNiArMTIyLDkgQEAgR0xPQlVTX0hPU1ROQU1F PWxvY2FsaG9zdCAlbWFrZV9idWlsZCBjaGVjawogJWxpY2Vuc2UgR0xPQlVTX0xJQ0VOU0UKIAog JWNoYW5nZWxvZworKiBTdW4gSnVuIDE0IDIwMjYgTWF0dGlhcyBFbGxlcnQgPG1hdHRpYXMuZWxs ZXJ0QHBoeXNpY3MudXUuc2U+IC0gOS4xMC0xMQorLSBGaXggY29tcGlsZXIgd2FybmluZ3MKKwog KiBGcmkgSmFuIDE2IDIwMjYgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRv cmFwcm9qZWN0Lm9yZz4gLSA5LjEwLTEwCiAtIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJv amVjdC5vcmcvd2lraS9GZWRvcmFfNDRfTWFzc19SZWJ1aWxkCiAK