From: Mikael Ronstrom Date: March 2 2012 7:03pm Subject: bzr push into mysql-5.5-cluster-7.2 branch (mikael.ronstrom:3758 to 3792) List-Archive: http://lists.mysql.com/commits/143065 Message-Id: <201203021904.q22J49Uv011762@dator6> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM3OTIgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDIKICAgICAgRml4ZXMgZm9yIGZsZXhBc3lu Y2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5j aC5jcHAKIDM3OTEgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDIKICAgICAgRml4ZXMgZm9yIGZs ZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxl eEFzeW5jaC5jcHAKIDM3OTAgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDIKICAgICAgRml4ZXMg Zm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJh cGkvZmxleEFzeW5jaC5jcHAKIDM3ODkgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDIKICAgICAg Rml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVz dC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3ODggTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDIK ICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9u ZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3ODcgTWlrYWVsIFJvbnN0cm9tCTIwMTIt MDMtMDIKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3Rv cmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3ODYgTWlrYWVsIFJvbnN0cm9t CTIwMTItMDMtMDIKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAg ICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3ODUgTWlrYWVsIFJv bnN0cm9tCTIwMTItMDMtMDIKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmll ZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3ODQgTWlr YWVsIFJvbnN0cm9tCTIwMTItMDMtMDIKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBt b2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3 ODMgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDIKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gK CiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5j cHAKIDM3ODIgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDIKICAgICAgRml4ZXMgZm9yIGZsZXhB c3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFz eW5jaC5jcHAKIDM3ODEgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDIKICAgICAgRml4ZXMgZm9y IGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkv ZmxleEFzeW5jaC5jcHAKIDM3ODAgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDIKICAgICAgRml4 ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9u ZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3NzkgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDIKICAg ICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIv dGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3NzggTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMt MDIKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFn ZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3NzcgTWlrYWVsIFJvbnN0cm9tCTIw MTItMDMtMDEKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAg c3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3NzYgTWlrYWVsIFJvbnN0 cm9tCTIwMTItMDMtMDEKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoK ICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3NzUgTWlrYWVs IFJvbnN0cm9tCTIwMTItMDMtMDEKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2Rp ZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3NzQg TWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDEKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAg ICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAK IDM3NzMgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDEKICAgICAgRml4ZXMgZm9yIGZsZXhBc3lu Y2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5j aC5jcHAKIDM3NzIgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDEKICAgICAgRml4ZXMgZm9yIGZs ZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxl eEFzeW5jaC5jcHAKIDM3NzEgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDEKICAgICAgRml4ZXMg Zm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJh cGkvZmxleEFzeW5jaC5jcHAKIDM3NzAgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDEKICAgICAg Rml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVz dC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3NjkgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDEK ICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9u ZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3NjggTWlrYWVsIFJvbnN0cm9tCTIwMTIt MDMtMDEKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3Rv cmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3NjcgTWlrYWVsIFJvbnN0cm9t CTIwMTItMDMtMDEKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmllZDoKICAg ICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3NjYgTWlrYWVsIFJv bnN0cm9tCTIwMTItMDMtMDEKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBtb2RpZmll ZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3NjUgTWlr YWVsIFJvbnN0cm9tCTIwMTItMDMtMDEKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gKCiAgICBt b2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKIDM3 NjQgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDEKICAgICAgRml4ZXMgZm9yIGZsZXhBc3luY2gK CiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5j cHAKIDM3NjMgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDEKICAgICAgRml4ZXMgZm9yIGZsZXhB c3luY2gKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFz eW5jaC5jcHAKIDM3NjIgTWlrYWVsIFJvbnN0cm9tCTIwMTItMDMtMDEKICAgICAgRml4ZXMgZm9y IGRlYnVnIHByaW50b3V0cwoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdlL25kYi90ZXN0L25k YmFwaS9mbGV4QXN5bmNoLmNwcAogMzc2MSBNaWthZWwgUm9uc3Ryb20JMjAxMi0wMy0wMQogICAg ICBGaXhlcyBmb3IgZGVidWcgcHJpbnRvdXRzCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2Uv bmRiL3Rlc3QvbmRiYXBpL2ZsZXhBc3luY2guY3BwCiAzNzYwIE1pa2FlbCBSb25zdHJvbQkyMDEy LTAzLTAxCiAgICAgIE1ha2Ugc291cmNlIGRpc3RyaWJ1dGlvbnMgY29tcGlsYWJsZSB3aXRoIGRl YnVnCgogICAgbW9kaWZpZWQ6CiAgICAgIGNtYWtlL21haW50YWluZXIuY21ha2UKIDM3NTkgTWlr YWVsIFJvbnN0cm9tCTIwMTItMDMtMDEKICAgICAgTW9yZSBkZWJ1ZyBwcmludG91dHMgZm9yIG5l dyBmbGV4QXN5bmNoCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvbmRiL3Rlc3QvbmRiYXBp L2ZsZXhBc3luY2guY3BwCiAzNzU4IE1pa2FlbCBSb25zdHLDtm0JMjAxMi0wMi0yOQogICAgICBT aWduYWwgdG8gd2FrZSB3YWl0aW5nIGV4ZWN1dG9yIHRocmVhZHMKCiAgICBtb2RpZmllZDoKICAg ICAgc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAKPT09IG1vZGlmaWVkIGZp bGUgJ2NtYWtlL21haW50YWluZXIuY21ha2UnCi0tLSBhL2NtYWtlL21haW50YWluZXIuY21ha2UJ cmV2aWQ6bWlrYWVsQGRhdG9yOS0yMDEyMDIyOTE0MzgzNy13cDNzN2ZjZG81YnFueWt6CisrKyBi L2NtYWtlL21haW50YWluZXIuY21ha2UJcmV2aWQ6bWlrYWVsLnJvbnN0cm9tQG9yYWNsZS5jb20t MjAxMjAzMDIxODU1MjQtbWZwZmVhczY5cTY5a3F5eQpAQCAtMTgsNyArMTgsNyBAQCBJTkNMVURF KENoZWNrQ0NvbXBpbGVyRmxhZykKICMgU2V0dXAgR0NDIChHTlUgQyBjb21waWxlcikgd2Fybmlu ZyBvcHRpb25zLgogTUFDUk8oU0VUX01ZU1FMX01BSU5UQUlORVJfR05VX0NfT1BUSU9OUykKICAg U0VUKE1ZX01BSU5UQUlORVJfV0FSTklOR1MKLSAgICAgICItV2FsbCAtV2V4dHJhIC1XdW51c2Vk IC1Xd3JpdGUtc3RyaW5ncyAtV25vLXN0cmljdC1hbGlhc2luZyAtV2Vycm9yIikKKyAgICAgICIt V2FsbCAtV2V4dHJhIC1XdW51c2VkIC1Xd3JpdGUtc3RyaW5ncyAtV25vLXN0cmljdC1hbGlhc2lu ZyIpCiAgIENIRUNLX0NfQ09NUElMRVJfRkxBRygiLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1l bnQiCiAgICAgICAgICAgICAgICAgICAgICAgICBIQVZFX0RFQ0xBUkFUSU9OX0FGVEVSX1NUQVRF TUVOVCkKICAgSUYoSEFWRV9ERUNMQVJBVElPTl9BRlRFUl9TVEFURU1FTlQpCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9uZGIvdGVzdC9uZGJhcGkvZmxleEFzeW5jaC5jcHAnCi0tLSBhL3N0 b3JhZ2UvbmRiL3Rlc3QvbmRiYXBpL2ZsZXhBc3luY2guY3BwCXJldmlkOm1pa2FlbEBkYXRvcjkt MjAxMjAyMjkxNDM4Mzctd3AzczdmY2RvNWJxbnlregorKysgYi9zdG9yYWdlL25kYi90ZXN0L25k YmFwaS9mbGV4QXN5bmNoLmNwcAlyZXZpZDptaWthZWwucm9uc3Ryb21Ab3JhY2xlLmNvbS0yMDEy MDMwMjE4NTUyNC1tZnBmZWFzNjlxNjlrcXl5CkBAIC01Niw2ICs1Niw5IEBACiAjZGVmaW5lIE1B WEFUVFJTSVpFIDEwMDAKICNkZWZpbmUgUEtTSVpFIDIKIAorI2RlZmluZSBERUJfUFJJTlQoYSkg bmRib3V0X2MgYQorLy8jZGVmaW5lIERFQl9QUklOVChhKQorCiBlbnVtIFN0YXJ0VHlwZSB7IAog ICBzdElkbGUgPSAwLCAKICAgc3RJbnNlcnQgPSAxLApAQCAtMTAxLDkgKzEwNCwxMCBAQCBzdGF0 aWMgdm9pZCBleGVjdXRlQ2FsbGJhY2soaW50IHJlc3VsdCwgCiBzdGF0aWMgYm9vbCBlcnJvcl9o YW5kbGVyKGNvbnN0IE5kYkVycm9yICYgZXJyKTsKIHN0YXRpYyB2b2lkIGlucHV0X2Vycm9yKCk7 CiBzdGF0aWMgVWludDMyIGdldF9teV9ub2RlX2lkKFVpbnQzMiB0YWJsZU5vLCBVaW50MzIgdGhy ZWFkTm8pOwotc3RhdGljIHZvaWQgbWFpbl90aHJlYWQoUnVuVHlwZSBydW5fdHlwZSk7Ci1zdGF0 aWMgdm9pZCBydW5fb2xkX2ZsZXhBc3luY2goVGhyZWFkTmRiICpwVGhyZWFkRGF0YSwgTmRiVGlt ZXIgJiB0aW1lcik7CiAKK3N0YXRpYyB2b2lkIG1haW5fdGhyZWFkKFJ1blR5cGUgcnVuX3R5cGUs IE5kYlRpbWVyICYgdGltZXIpOworc3RhdGljIFVpbnQ2NCBnZXRfdG90YWxfdHJhbnNhY3Rpb25z KCk7CitzdGF0aWMgdm9pZCBydW5fb2xkX2ZsZXhBc3luY2goVGhyZWFkTmRiICpwVGhyZWFkRGF0 YSwgTmRiVGltZXIgJiB0aW1lcik7CiAKIHN0YXRpYyBpbnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXRyeV9vcHQgPSAzIDsKIHN0YXRpYyBpbnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmYWlsZWQgPSAwIDsKQEAgLTE1Myw3ICsxNTcsNiBAQCBzdGF0aWMgaW50ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiBzdGF0aWMgaW50ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGhlU3RkVGFibGVOYW1lRmxhZyA9IDA7CiBzdGF0aWMgaW50ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGhlVGFibGVDcmVhdGVGbGFnID0gMDsKIHN0YXRpYyBpbnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0Q29ubmVjdGlvbnMgPSAxOwotc3RhdGljIGludCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRTdG9wID0gMDsKIAogI2RlZmluZSBTVEFSVF9S RUFMX1RJTUUKICNkZWZpbmUgU1RPUF9SRUFMX1RJTUUKQEAgLTE4NiwxMyArMTg5LDEzIEBAIHJl c2V0VGhyZWFkcygpewogfQogCiBzdGF0aWMgdm9pZCAKLXdhaXRGb3JUaHJlYWRzKHZvaWQpCit3 YWl0Rm9yVGhyZWFkcyhVaW50MzIgbnVtX3RocmVhZHNfdG9fd2FpdF9mb3IpCiB7CiAgIGludCBj b250ID0gMDsKICAgZG8gewogICAgIGNvbnQgPSAwOwogICAgIE5kYlNsZWVwX01pbGxpU2xlZXAo MjApOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0Tm9PZlRocmVhZHMgOyBpKyspIHsK KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtX3RocmVhZHNfdG9fd2FpdF9mb3IgOyBp KyspIHsKICAgICAgIGlmIChUaHJlYWRSZWFkeVtpXSA9PSAwKSB7CiAgICAgICAgIGNvbnQgPSAx OwogICAgICAgfS8vaWYKQEAgLTI2NCw3ICsyNjcsNyBAQCBOREJfQ09NTUFORChmbGV4QXN5bmNo LCAiZmxleEFzeW5jaCIsICJmCiAKICAgbmRib3V0IDw8IGVuZGw7CiAKLSAgTmRiVGhyZWFkX1Nl dENvbmN1cnJlbmN5TGV2ZWwoMiArIHROb09mVGhyZWFkcyk7CisgIE5kYlRocmVhZF9TZXRDb25j dXJyZW5jeUxldmVsKDIgKyAodE5vT2ZUaHJlYWRzICogNSAvIDQpKTsKIAogICAvKiBwcmludCBT ZXR0aW5nICovCiAgIGZsZXhBc3luY2hFcnJvckRhdGEtPnByaW50U2V0dGluZ3MobmRib3V0KTsK QEAgLTMxOSw3ICszMjIsNyBAQCBOREJfQ09NTUFORChmbGV4QXN5bmNoLCAiZmxleEFzeW5jaCIs ICJmCiAgICAgfQogICB9CiAKLSAgaWYgKHROZGJSZWNvcmQpCisgIGlmICh0TmRiUmVjb3JkICYm ICF0TmV3KQogICB7CiAgICAgVWludDMyIHN6ID0gTmRiRGljdGlvbmFyeTo6Z2V0UmVjb3JkUm93 TGVuZ3RoKGdfcmVjb3JkWzBdKTsKICAgICBzeiArPSAzOwpAQCAtMzM1LDcgKzMzOCw3IEBAIE5E Ql9DT01NQU5EKGZsZXhBc3luY2gsICJmbGV4QXN5bmNoIiwgImYKICAgICAgdFJ1blR5cGUgIT0g UnVuRHJvcFRhYmxlKXsKICAgICBpZiAodE5ldykKICAgICB7Ci0gICAgICBtYWluX3RocmVhZCh0 UnVuVHlwZSk7CisgICAgICBtYWluX3RocmVhZCh0UnVuVHlwZSwgdGltZXIpOwogICAgIH0KICAg ICBlbHNlCiAgICAgewpAQCAtMzcwLDI3ICszNzMsMzkgQEAgTkRCX0NPTU1BTkQoZmxleEFzeW5j aCwgImZsZXhBc3luY2giLCAiZgogICAgICAgdFJ1blR5cGUgPT0gUnVuVXBkYXRlIHx8CiAgICAg ICB0UnVuVHlwZSA9PSBSdW5EZWxldGUpCiAgIHsKLSAgICBsb25nbG9uZyB0b3RhbF90cmFuc2Fj dGlvbnMgPSAwOwotICAgIGxvbmdsb25nIGV4ZWNfdGltZTsKKyAgICBVaW50NjQgdG90YWxfdHJh bnNhY3Rpb25zID0gMDsKKyAgICBVaW50NjQgZXhlY190aW1lOwogCi0gICAgaWYgKHRSdW5UeXBl ID09IFJ1bkluc2VydCB8fCB0UnVuVHlwZSA9PSBSdW5EZWxldGUpIHsKLSAgICAgIHRvdGFsX3Ry YW5zYWN0aW9ucyA9IChsb25nbG9uZyl0Tm9PZlRyYW5zYWN0aW9uczsKLSAgICAgIHRvdGFsX3Ry YW5zYWN0aW9ucyAqPSAobG9uZ2xvbmcpdE5vT2ZUaHJlYWRzOwotICAgICAgdG90YWxfdHJhbnNh Y3Rpb25zICo9IChsb25nbG9uZyl0Tm9PZlBhcmFsbGVsVHJhbnM7Ci0gICAgfSBlbHNlIHsKLSAg ICAgIGZvciAoVWludDMyIGkgPSAwOyBpIDwgdE5vT2ZUaHJlYWRzOyBpKyspewotICAgICAgICB0 b3RhbF90cmFuc2FjdGlvbnMgKz0gVGhyZWFkRXhlY3V0aW9uc1tpXTsKKyAgICBpZiAodE5ldykK KyAgICB7CisgICAgICB0b3RhbF90cmFuc2FjdGlvbnMgPSBnZXRfdG90YWxfdHJhbnNhY3Rpb25z KCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBpZiAodFJ1blR5cGUgPT0gUnVuSW5z ZXJ0IHx8IHRSdW5UeXBlID09IFJ1bkRlbGV0ZSkgeworICAgICAgICB0b3RhbF90cmFuc2FjdGlv bnMgPSAobG9uZ2xvbmcpdE5vT2ZUcmFuc2FjdGlvbnM7CisgICAgICAgIHRvdGFsX3RyYW5zYWN0 aW9ucyAqPSAobG9uZ2xvbmcpdE5vT2ZUaHJlYWRzOworICAgICAgICB0b3RhbF90cmFuc2FjdGlv bnMgKj0gKGxvbmdsb25nKXROb09mUGFyYWxsZWxUcmFuczsKKyAgICAgIH0gZWxzZSB7CisgICAg ICAgIGZvciAoVWludDMyIGkgPSAwOyBpIDwgdE5vT2ZUaHJlYWRzOyBpKyspeworICAgICAgICAg IHRvdGFsX3RyYW5zYWN0aW9ucyArPSBUaHJlYWRFeGVjdXRpb25zW2ldOworICAgICAgICB9CiAg ICAgICB9CiAgICAgfQogICAgIGlmICh0UnVuVHlwZSA9PSBSdW5JbnNlcnQgfHwgdFJ1blR5cGUg PT0gUnVuRGVsZXRlKSB7Ci0gICAgICBleGVjX3RpbWUgPSAobG9uZ2xvbmcpdGltZXIuZWxhcHNl ZFRpbWUoKTsKKyAgICAgIGV4ZWNfdGltZSA9IChVaW50NjQpdGltZXIuZWxhcHNlZFRpbWUoKTsK ICAgICB9IGVsc2UgewotICAgICAgZXhlY190aW1lID0gKGxvbmdsb25nKXRFeGVjdXRpb25UaW1l ICogMTAwMDsKKyAgICAgIGV4ZWNfdGltZSA9IChVaW50NjQpdEV4ZWN1dGlvblRpbWUgKiAxMDAw OwogICAgIH0KICAgICBuZGJvdXQgPDwgIlRvdGFsIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgaXMg IiA8PCB0b3RhbF90cmFuc2FjdGlvbnM7CiAgICAgbmRib3V0IDw8IGVuZGw7CiAgICAgbmRib3V0 IDw8ICJFeGVjdXRpb24gdGltZSBpcyAiIDw8IGV4ZWNfdGltZSA8PCAiIG1pbGxpc2Vjb25kcyIg PDwgZW5kbDsKIAorICAgIGlmICghZXhlY190aW1lKQorICAgIHsKKyAgICAgIGV4ZWNfdGltZSA9 IDE7IC8qIEF2b2lkIGZsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbiAqLworICAgICAgbmRib3V0X2Mo Ilplcm8gZXhlY3V0aW9uIHRpbWUhISEiKTsKKyAgICB9CiAgICAgdG90YWxfdHJhbnNhY3Rpb25z ID0gKHRvdGFsX3RyYW5zYWN0aW9ucyAqIDEwMDApIC8gZXhlY190aW1lOwogICAgIGludCB0cmFu c19wZXJfc2VjID0gKGludCl0b3RhbF90cmFuc2FjdGlvbnM7CiAgICAgbmRib3V0IDw8ICJUb3Rh bCB0cmFuc2FjdGlvbnMgcGVyIHNlY29uZCAiIDw8IHRyYW5zX3Blcl9zZWMgPDwgZW5kbDsKQEAg LTQwNiw3ICs0MjEsNyBAQCBzdGF0aWMgdm9pZCBleGVjdXRlKFN0YXJ0VHlwZSBhVHlwZSkKIHsK ICAgcmVzZXRUaHJlYWRzKCk7CiAgIHRlbGxUaHJlYWRzKGFUeXBlKTsKLSAgd2FpdEZvclRocmVh ZHMoKTsKKyAgd2FpdEZvclRocmVhZHModE5vT2ZUaHJlYWRzKTsKIH0vL2V4ZWN1dGUoKQogCiBz dGF0aWMgdm9pZCoKQEAgLTExMjgsNiArMTE0Myw5IEBAIHNldEFnZ3JlZ2F0ZVJ1bih2b2lkKQog ICogTkRCIFJlY29yZCBmb3JtYXQgaW4gdGhlIE5EQiBBUEkuCiAgKi8KIAorc3RhdGljIHZvaWQq IGRlZmluZXJfdGhyZWFkKHZvaWQgKmRhdGEpOworc3RhdGljIHZvaWQqIGV4ZWN1dG9yX3RocmVh ZCh2b2lkICpkYXRhKTsKKwogc3RhdGljIFVpbnQzMiB0Tm9PZkV4ZWN1dG9yVGhyZWFkczsKIHN0 YXRpYyBVaW50MzIgdE5vT2ZEZWZpbmVyVGhyZWFkczsKIApAQCAtMTE1OSw3MCArMTE3NywyMzIg QEAgc3RydWN0IGtleV9saXN0X2hlYWRlcgogICBVaW50MzIgbnVtX2luX2xpc3Q7CiB9OwogCi10 eXBlZGVmIHN0cnVjdCB0aHJlYWRfZGF0YSBUSFJFQURfREFUQTsKLXN0cnVjdCB0aHJlYWRfZGF0 YQorCit0eXBlZGVmIHN0cnVjdCB0aHJlYWRfZGF0YV9zdHJ1Y3QgVEhSRUFEX0RBVEE7CitzdHJ1 Y3QgdGhyZWFkX2RhdGFfc3RydWN0CiB7CiAgIEtFWV9MSVNUX0hFQURFUiBsaXN0X2hlYWRlcjsK ICAgY2hhciAqcmVjb3JkOwogICBVaW50MzIgdGhyZWFkX2lkOworICBib29sIHJlYWR5OworICBi b29sIHN0b3A7CisgIGJvb2wgc3RhcnQ7CiAgIE5kYk11dGV4ICp0cmFuc3BvcnRfbXV0ZXg7CiAg IHN0cnVjdCBOZGJDb25kaXRpb24gKnRyYW5zcG9ydF9jb25kOworICBzdHJ1Y3QgTmRiQ29uZGl0 aW9uICptYWluX2NvbmQ7CisgIHN0cnVjdCBOZGJDb25kaXRpb24gKnN0YXJ0X2NvbmQ7CiB9Owor VEhSRUFEX0RBVEEgdGhyZWFkX2RhdGFfYXJyYXlbTUFYX0RFRklORVJfVEhSRUFEUyArIE1BWF9F WEVDVVRPUl9USFJFQURTXTsKIAotc3RhdGljIHZvaWQqIGRlZmluZXJfdGhyZWFkKHZvaWQgKmRh dGEpOwotc3RhdGljIHZvaWQqIGV4ZWN1dG9yX3RocmVhZCh2b2lkICpkYXRhKTsKK3N0YXRpYyBV aW50NjQKK2dldF90b3RhbF90cmFuc2FjdGlvbnMoKQoreworICBVaW50NjQgdG90YWxfdHJhbnNh Y3Rpb25zID0gMDsKKworICBmb3IgKFVpbnQzMiBpID0gdE5vT2ZEZWZpbmVyVGhyZWFkczsgaSA8 IHROb09mVGhyZWFkczsgaSsrKXsKKyAgICB0b3RhbF90cmFuc2FjdGlvbnMgKz0gVGhyZWFkRXhl Y3V0aW9uc1tpXTsKKyAgfQorICByZXR1cm4gdG90YWxfdHJhbnNhY3Rpb25zOworfQogCiBzdGF0 aWMgdm9pZAotd2FpdF9mb3Jfc3RhcnRfc2lnbmFsKFRIUkVBRF9EQVRBICpteV90aHJlYWRfZGF0 YSkKK2luaXRfbGlzdF9oZWFkZXJzKEtFWV9MSVNUX0hFQURFUiAqbGlzdF9oZWFkZXIsCisgICAg ICAgICAgICAgICAgICBVaW50MzIgbnVtX2xpc3RfaGVhZGVycykKK3sKKyAgVWludDMyIGk7Cisg IEtFWV9MSVNUX0hFQURFUiAqbGlzdF9oZWFkZXJfcmVmOworICBjaGFyICpsaXN0X2hlYWRlcl9w dHIgPSAoY2hhciopbGlzdF9oZWFkZXI7CisgIGZvciAoaSA9IDA7CisgICAgICAgaSA8IG51bV9s aXN0X2hlYWRlcnM7CisgICAgICAgaSsrLCBsaXN0X2hlYWRlcl9wdHIgKz0gc2l6ZW9mKEtFWV9M SVNUX0hFQURFUikpCisgIHsKKyAgICBsaXN0X2hlYWRlcl9yZWYgPSAoS0VZX0xJU1RfSEVBREVS KilsaXN0X2hlYWRlcl9wdHI7CisgICAgbGlzdF9oZWFkZXJfcmVmLT5maXJzdF9pbl9saXN0ID0g TlVMTDsKKyAgICBsaXN0X2hlYWRlcl9yZWYtPmxhc3RfaW5fbGlzdCA9IE5VTEw7CisgICAgbGlz dF9oZWFkZXJfcmVmLT5udW1faW5fbGlzdCA9IDA7CisgIH0KK30KKworc3RhdGljIFVpbnQzMgor Z2V0X3RocmVhZF9pZF9zYWZlKFRIUkVBRF9EQVRBICpteV90aHJlYWRfZGF0YSkKIHsKICAgTmRi TXV0ZXhfTG9jayhteV90aHJlYWRfZGF0YS0+dHJhbnNwb3J0X211dGV4KTsKLSAgTmRiQ29uZGl0 aW9uX1dhaXQobXlfdGhyZWFkX2RhdGEtPnRyYW5zcG9ydF9jb25kLAotICAgICAgICAgICAgICAg ICAgICBteV90aHJlYWRfZGF0YS0+dHJhbnNwb3J0X211dGV4KTsKKyAgVWludDMyIHRocmVhZF9p ZCA9IG15X3RocmVhZF9kYXRhLT50aHJlYWRfaWQ7CiAgIE5kYk11dGV4X1VubG9jayhteV90aHJl YWRfZGF0YS0+dHJhbnNwb3J0X211dGV4KTsKKyAgcmV0dXJuIHRocmVhZF9pZDsKIH0KIAogc3Rh dGljIHZvaWQKLXNpZ25hbF90aHJlYWRfdG9fc3RhcnQoVEhSRUFEX0RBVEEgKnRocmVhZF9kYXRh KQord2FpdF90aHJlYWRfcmVhZHkoVEhSRUFEX0RBVEEgKm15X3RocmVhZF9kYXRhKQogewotICBO ZGJNdXRleF9Mb2NrKHRocmVhZF9kYXRhLT50cmFuc3BvcnRfbXV0ZXgpOwotICBOZGJDb25kaXRp b25fU2lnbmFsKHRocmVhZF9kYXRhLT50cmFuc3BvcnRfY29uZCk7Ci0gIE5kYk11dGV4X1VubG9j ayh0aHJlYWRfZGF0YS0+dHJhbnNwb3J0X211dGV4KTsKKyAgTmRiTXV0ZXhfTG9jayhteV90aHJl YWRfZGF0YS0+dHJhbnNwb3J0X211dGV4KTsKKyAgd2hpbGUgKDEpCisgIHsKKyAgICBpZiAobXlf dGhyZWFkX2RhdGEtPnJlYWR5KQorICAgICAgYnJlYWs7CisgICAgTmRiQ29uZGl0aW9uX1dhaXQo bXlfdGhyZWFkX2RhdGEtPm1haW5fY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICBteV90aHJl YWRfZGF0YS0+dHJhbnNwb3J0X211dGV4KTsKKyAgfQorICBOZGJNdXRleF9VbmxvY2sobXlfdGhy ZWFkX2RhdGEtPnRyYW5zcG9ydF9tdXRleCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1zdGFydF9kZWZp bmVyX3RocmVhZChUSFJFQURfREFUQSAqdGhyZWFkX2RhdGEsIFVpbnQzMiB0aHJlYWRfaWQpCit3 YWl0X2Zvcl90aHJlYWRzX3JlYWR5KFVpbnQzMiBudW1fdGhyZWFkcykKIHsKLSAgdGhyZWFkX2Rh dGEtPnRocmVhZF9pZCA9IHRocmVhZF9pZDsKKyAgZm9yIChVaW50MzIgaSA9IDA7IGkgPCBudW1f dGhyZWFkczsgaSsrKQorICAgIHdhaXRfdGhyZWFkX3JlYWR5KCZ0aHJlYWRfZGF0YV9hcnJheVtp XSk7Cit9CisKK3N0YXRpYyB2b2lkCitzaWduYWxfdGhyZWFkX3RvX3N0YXJ0KFRIUkVBRF9EQVRB ICpteV90aHJlYWRfZGF0YSkKK3sKKyAgTmRiTXV0ZXhfTG9jayhteV90aHJlYWRfZGF0YS0+dHJh bnNwb3J0X211dGV4KTsKKyAgbXlfdGhyZWFkX2RhdGEtPnN0YXJ0ID0gdHJ1ZTsKKyAgbXlfdGhy ZWFkX2RhdGEtPnJlYWR5ID0gZmFsc2U7CisgIE5kYkNvbmRpdGlvbl9TaWduYWwobXlfdGhyZWFk X2RhdGEtPnN0YXJ0X2NvbmQpOworICBOZGJNdXRleF9VbmxvY2sobXlfdGhyZWFkX2RhdGEtPnRy YW5zcG9ydF9tdXRleCk7Cit9CisKK3N0YXRpYyB2b2lkCitzaWduYWxfZGVmaW5lcl90aHJlYWRz X3RvX3N0YXJ0KCkKK3sKKyAgZm9yIChVaW50MzIgaSA9IDA7IGkgPCB0Tm9PZkRlZmluZXJUaHJl YWRzOyBpKyspCisgICAgc2lnbmFsX3RocmVhZF90b19zdGFydCgmdGhyZWFkX2RhdGFfYXJyYXlb aV0pOworfQorCitzdGF0aWMgdm9pZAorc2lnbmFsX2V4ZWN1dG9yX3RocmVhZHNfdG9fc3RhcnQo KQoreworICBmb3IgKFVpbnQzMiBpID0gMDsgaSA8IHROb09mRXhlY3V0b3JUaHJlYWRzOyBpKysp CisgICAgc2lnbmFsX3RocmVhZF90b19zdGFydCgmdGhyZWFkX2RhdGFfYXJyYXlbdE5vT2ZEZWZp bmVyVGhyZWFkcyArIGldKTsKK30KKworc3RhdGljIHZvaWQKK3NpZ25hbF90aHJlYWRfcmVhZHlf d2FpdF9mb3Jfc3RhcnQoVEhSRUFEX0RBVEEgKm15X3RocmVhZF9kYXRhKQoreworICBOZGJNdXRl eF9Mb2NrKG15X3RocmVhZF9kYXRhLT50cmFuc3BvcnRfbXV0ZXgpOworICBteV90aHJlYWRfZGF0 YS0+cmVhZHkgPSB0cnVlOworICBOZGJDb25kaXRpb25fU2lnbmFsKG15X3RocmVhZF9kYXRhLT5t YWluX2NvbmQpOworICB3aGlsZSAoMSkKKyAgeworICAgIGlmIChteV90aHJlYWRfZGF0YS0+c3Rh cnQpCisgICAgICBicmVhazsKKyAgICBOZGJDb25kaXRpb25fV2FpdChteV90aHJlYWRfZGF0YS0+ c3RhcnRfY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICBteV90aHJlYWRfZGF0YS0+dHJhbnNw b3J0X211dGV4KTsKKyAgfQorICBteV90aHJlYWRfZGF0YS0+c3RhcnQgPSBmYWxzZTsKKyAgTmRi TXV0ZXhfVW5sb2NrKG15X3RocmVhZF9kYXRhLT50cmFuc3BvcnRfbXV0ZXgpOworfQorCitzdGF0 aWMgdm9pZAorc2lnbmFsX3RocmVhZF90b19zdG9wKFRIUkVBRF9EQVRBICpteV90aHJlYWRfZGF0 YSkKK3sKKyAgTmRiTXV0ZXhfTG9jayhteV90aHJlYWRfZGF0YS0+dHJhbnNwb3J0X211dGV4KTsK KyAgbXlfdGhyZWFkX2RhdGEtPnN0b3AgPSB0cnVlOworICBOZGJDb25kaXRpb25fU2lnbmFsKG15 X3RocmVhZF9kYXRhLT50cmFuc3BvcnRfY29uZCk7CisgIE5kYk11dGV4X1VubG9jayhteV90aHJl YWRfZGF0YS0+dHJhbnNwb3J0X211dGV4KTsKK30KKworc3RhdGljIHZvaWQKK3NpZ25hbF9kZWZp bmVyX3RocmVhZHNfdG9fc3RvcCgpCit7CisgIGZvciAoVWludDMyIGkgPSAwOyBpIDwgdE5vT2ZE ZWZpbmVyVGhyZWFkczsgaSsrKQorICAgIHNpZ25hbF90aHJlYWRfdG9fc3RvcCgmdGhyZWFkX2Rh dGFfYXJyYXlbaV0pOworfQorCitzdGF0aWMgdm9pZAorc2lnbmFsX2V4ZWN1dG9yX3RocmVhZHNf dG9fc3RvcCgpCit7CisgIGZvciAoVWludDMyIGkgPSB0Tm9PZkRlZmluZXJUaHJlYWRzOyBpIDwg dE5vT2ZUaHJlYWRzOyBpKyspCisgICAgc2lnbmFsX3RocmVhZF90b19zdG9wKCZ0aHJlYWRfZGF0 YV9hcnJheVtpXSk7Cit9CisKK3N0YXRpYyB2b2lkCitkZXN0cm95X3RocmVhZF9kYXRhKFRIUkVB RF9EQVRBICpteV90aHJlYWRfZGF0YSkKK3sKKyAgZnJlZShteV90aHJlYWRfZGF0YS0+cmVjb3Jk KTsKKyAgTmRiTXV0ZXhfRGVzdHJveShteV90aHJlYWRfZGF0YS0+dHJhbnNwb3J0X211dGV4KTsK KyAgTmRiQ29uZGl0aW9uX0Rlc3Ryb3kobXlfdGhyZWFkX2RhdGEtPnRyYW5zcG9ydF9jb25kKTsK KyAgTmRiQ29uZGl0aW9uX0Rlc3Ryb3kobXlfdGhyZWFkX2RhdGEtPnN0YXJ0X2NvbmQpOworICBO ZGJDb25kaXRpb25fRGVzdHJveShteV90aHJlYWRfZGF0YS0+bWFpbl9jb25kKTsKK30KKworc3Rh dGljIHZvaWQKK2luaXRfdGhyZWFkX2RhdGEoVEhSRUFEX0RBVEEgKm15X3RocmVhZF9kYXRhLCBV aW50MzIgdGhyZWFkX2lkKQoreworICBVaW50MzIgc3ogPSBOZGJEaWN0aW9uYXJ5OjpnZXRSZWNv cmRSb3dMZW5ndGgoZ19yZWNvcmRbMF0pOworICBteV90aHJlYWRfZGF0YS0+cmVjb3JkID0gKGNo YXIqKW1hbGxvYyhzeik7CisgIG1lbXNldChteV90aHJlYWRfZGF0YS0+cmVjb3JkLCAwLCBzeik7 CisgIGluaXRfbGlzdF9oZWFkZXJzKCZteV90aHJlYWRfZGF0YS0+bGlzdF9oZWFkZXIsIDEpOwor ICBteV90aHJlYWRfZGF0YS0+c3RvcCA9IGZhbHNlOworICBteV90aHJlYWRfZGF0YS0+cmVhZHkg PSBmYWxzZTsKKyAgbXlfdGhyZWFkX2RhdGEtPnN0YXJ0ID0gZmFsc2U7CisgIG15X3RocmVhZF9k YXRhLT50cmFuc3BvcnRfbXV0ZXggPSBOZGJNdXRleF9DcmVhdGUoKTsKKyAgbXlfdGhyZWFkX2Rh dGEtPnRyYW5zcG9ydF9jb25kID0gTmRiQ29uZGl0aW9uX0NyZWF0ZSgpOworICBteV90aHJlYWRf ZGF0YS0+bWFpbl9jb25kID0gTmRiQ29uZGl0aW9uX0NyZWF0ZSgpOworICBteV90aHJlYWRfZGF0 YS0+c3RhcnRfY29uZCA9IE5kYkNvbmRpdGlvbl9DcmVhdGUoKTsKKyAgTmRiTXV0ZXhfTG9jayht eV90aHJlYWRfZGF0YS0+dHJhbnNwb3J0X211dGV4KTsKKyAgbXlfdGhyZWFkX2RhdGEtPnRocmVh ZF9pZCA9IHRocmVhZF9pZDsKKyAgTmRiTXV0ZXhfVW5sb2NrKG15X3RocmVhZF9kYXRhLT50cmFu c3BvcnRfbXV0ZXgpOworfQorCitzdGF0aWMgdm9pZAorc3RhcnRfZGVmaW5lcl90aHJlYWQoVEhS RUFEX0RBVEEgKm15X3RocmVhZF9kYXRhLCBVaW50MzIgdGhyZWFkX2lkKQoreworICBpbml0X3Ro cmVhZF9kYXRhKG15X3RocmVhZF9kYXRhLCB0aHJlYWRfaWQpOworICBERUJfUFJJTlQoKCJOb3cg c3RhcnRpbmcgZGVmaW5lciB0aHJlYWQsIGlkID0gJXUiLCB0aHJlYWRfaWQpKTsKICAgdGhyZWFk TGlmZVt0aHJlYWRfaWRdID0gTmRiVGhyZWFkX0NyZWF0ZShkZWZpbmVyX3RocmVhZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCoqKXRocmVhZF9kYXRh LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKiopbXlf dGhyZWFkX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MTAyNCAqIDEwMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ImZsZXhBc3luY2hUaHJlYWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE5EQl9USFJFQURfUFJJT19MT1cpOwogfQogCiBzdGF0aWMgdm9pZAotc3RhcnRfZXhl Y3V0b3JfdGhyZWFkKFRIUkVBRF9EQVRBICp0aHJlYWRfZGF0YSwgVWludDMyIHRocmVhZF9pZCkK K3N0YXJ0X2RlZmluZXJfdGhyZWFkcygpCit7CisgIGZvciAoVWludDMyIGkgPSAwOyBpIDwgdE5v T2ZEZWZpbmVyVGhyZWFkczsgaSsrKQorICB7CisgICAgVWludDMyIHRocmVhZF9pZCA9IGk7Cisg ICAgc3RhcnRfZGVmaW5lcl90aHJlYWQoJnRocmVhZF9kYXRhX2FycmF5W3RocmVhZF9pZF0sIHRo cmVhZF9pZCk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK3N0YXJ0X2V4ZWN1dG9yX3RocmVhZChU SFJFQURfREFUQSAqbXlfdGhyZWFkX2RhdGEsIFVpbnQzMiB0aHJlYWRfaWQpCiB7Ci0gIHRocmVh ZF9kYXRhLT50aHJlYWRfaWQgPSB0aHJlYWRfaWQ7CisgIGluaXRfdGhyZWFkX2RhdGEobXlfdGhy ZWFkX2RhdGEsIHRocmVhZF9pZCk7CisgIERFQl9QUklOVCgoIk5vdyBzdGFydGluZyBleGVjdXRv ciB0aHJlYWQsIGlkID0gJXUiLCB0aHJlYWRfaWQpKTsKICAgdGhyZWFkTGlmZVt0aHJlYWRfaWRd ID0gTmRiVGhyZWFkX0NyZWF0ZShleGVjdXRvcl90aHJlYWQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKil0aHJlYWRfZGF0YSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCoqKW15X3RocmVhZF9kYXRhLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMjQgKiAxMDI0LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbGV4QXN5bmNoVGhy ZWFkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOREJfVEhS RUFEX1BSSU9fTE9XKTsKIH0KIAotVEhSRUFEX0RBVEEgdGhyZWFkX2RhdGFbTUFYX0RFRklORVJf VEhSRUFEUyArIE1BWF9FWEVDVVRPUl9USFJFQURTXTsKK3N0YXRpYyB2b2lkCitzdGFydF9leGVj dXRvcl90aHJlYWRzKCkKK3sKKyAgZm9yIChVaW50MzIgaSA9IDA7IGkgPCB0Tm9PZkV4ZWN1dG9y VGhyZWFkczsgaSsrKQorICB7CisgICAgVWludDMyIHRocmVhZF9pZCA9IHROb09mRGVmaW5lclRo cmVhZHMgKyBpOworICAgIHN0YXJ0X2V4ZWN1dG9yX3RocmVhZCgmdGhyZWFkX2RhdGFfYXJyYXlb dGhyZWFkX2lkXSwgdGhyZWFkX2lkKTsKKyAgfQorfQogCiBzdGF0aWMgdm9pZAotbWFpbl90aHJl YWQoUnVuVHlwZSBzdGFydF90eXBlKQorbWFpbl90aHJlYWQoUnVuVHlwZSBzdGFydF90eXBlLCBO ZGJUaW1lciAmIHRpbWVyKQogewogICBib29sIGluc2VydF9kZWxldGU7CiAKKyAgREVCX1BSSU5U KCgiRXhlY3V0aW5nIHR5cGUgPSAldSBpbiBuZXcgbWFubmVyIiwgKHVpbnQpc3RhcnRfdHlwZSkp OwogICB0Tm9PZkV4ZWN1dG9yVGhyZWFkcyA9IHROb09mVGhyZWFkczsKICAgdE5vT2ZEZWZpbmVy VGhyZWFkcyA9ICh0Tm9PZlRocmVhZHMgKyAzKS80OwogICB0Tm9PZlRocmVhZHMgPSB0Tm9PZkV4 ZWN1dG9yVGhyZWFkcyArIHROb09mRGVmaW5lclRocmVhZHM7CiAKLSAgcmVzZXRUaHJlYWRzKCk7 CisgIERFQl9QUklOVCgoCisgICAgIm51bSB0aHJlYWRzID0gJXUsIG51bSBkZWZpbmVyIHRocmVh ZHMgPSAldSwgbnVtIGV4ZWN1dG9yIHRocmVhZHMgPSAldSIsCisgICAgICB0Tm9PZlRocmVhZHMs IHROb09mRGVmaW5lclRocmVhZHMsIHROb09mRXhlY3V0b3JUaHJlYWRzKSk7CiAKICAgaWYgKHN0 YXJ0X3R5cGUgPT0gUnVuSW5zZXJ0IHx8CiAgICAgICBzdGFydF90eXBlID09IFJ1bkRlbGV0ZSkK QEAgLTEyMzAsNDkgKzE0MTAsNDggQEAgbWFpbl90aHJlYWQoUnVuVHlwZSBzdGFydF90eXBlKQog ICBlbHNlCiAgICAgaW5zZXJ0X2RlbGV0ZSA9IGZhbHNlOwogCi0gIGZvciAoVWludDMyIGkgPSAw OyBpIDwgdE5vT2ZEZWZpbmVyVGhyZWFkczsgaSsrKQotICB7Ci0gICAgVWludDMyIHRocmVhZF9p ZCA9IGk7Ci0gICAgc3RhcnRfZGVmaW5lcl90aHJlYWQoJnRocmVhZF9kYXRhW3RocmVhZF9pZF0s IHRocmVhZF9pZCk7Ci0gIH0KLSAgZm9yIChVaW50MzIgaSA9IDA7IGkgPCB0Tm9PZkV4ZWN1dG9y VGhyZWFkczsgaSsrKQotICB7Ci0gICAgVWludDMyIHRocmVhZF9pZCA9IHROb09mRGVmaW5lclRo cmVhZHMgKyBpOwotICAgIHN0YXJ0X2V4ZWN1dG9yX3RocmVhZCgmdGhyZWFkX2RhdGFbdGhyZWFk X2lkXSwgdGhyZWFkX2lkKTsKLSAgfQotICB3YWl0Rm9yVGhyZWFkcygpOyAvKiBXYWl0IGZvciB0 aHJlYWRzIHRvIGNvbXBsZXRlIHN0YXJ0dXAgKi8KKyAgc3RhcnRfZGVmaW5lcl90aHJlYWRzKCk7 CisgIHN0YXJ0X2V4ZWN1dG9yX3RocmVhZHMoKTsKKworICB3YWl0X2Zvcl90aHJlYWRzX3JlYWR5 KHROb09mVGhyZWFkcyk7CisKKyAgREVCX1BSSU5UKCgibWFpbjogRGVmaW5lciBhbmQgZXhlY3V0 aW9uIHRocmVhZHMgaGF2ZSBjb21wbGV0ZWQgc3RhcnR1cCIpKTsKIAogICAvKioKICAgICogU3Rh cnQgdGhyZWFkcywgc3RhcnQgd2l0aCBleGVjdXRpb24gdGhyZWFkcyB0byBlbnN1cmUgdGhleSBh cmUKICAgICogdXAgYW5kIHJ1bm5pbmcgYmVmb3JlIGRlZmluZXIgdGhyZWFkcyBzdGFydHMgc2Vu ZGluZyBkYXRhIHRvCiAgICAqIHRoZW0KICAgICovCi0gIGZvciAoVWludDMyIGkgPSAwOyBpIDwg dE5vT2ZFeGVjdXRvclRocmVhZHM7IGkrKykKLSAgICBzaWduYWxfdGhyZWFkX3RvX3N0YXJ0KCZ0 aHJlYWRfZGF0YVt0Tm9PZkRlZmluZXJUaHJlYWRzICsgaV0pOwotICBmb3IgKFVpbnQzMiBpID0g MDsgaSA8IHROb09mRGVmaW5lclRocmVhZHM7IGkrKykKLSAgICBzaWduYWxfdGhyZWFkX3RvX3N0 YXJ0KCZ0aHJlYWRfZGF0YVtpXSk7CisgIFNUQVJUX1RJTUVSOworICBzaWduYWxfZGVmaW5lcl90 aHJlYWRzX3RvX3N0YXJ0KCk7CisgIHNpZ25hbF9leGVjdXRvcl90aHJlYWRzX3RvX3N0YXJ0KCk7 CiAKLSAgaWYgKGluc2VydF9kZWxldGUpCi0gIHsKLSAgICB3YWl0Rm9yVGhyZWFkcygpOwotICB9 Ci0gIGVsc2UKKyAgaWYgKCFpbnNlcnRfZGVsZXRlKQogICB7CiAgICAgc2xlZXAodFdhcm11cFRp bWUpOwogICAgIHRSdW5TdGF0ZSA9IEVYRUNVVElORzsKICAgICBzbGVlcCh0RXhlY3V0aW9uVGlt ZSk7CiAgICAgdFJ1blN0YXRlID0gQ09PTERPV047CiAgICAgc2xlZXAodENvb2xkb3duVGltZSk7 Ci0gICAgdFN0b3AgPSB0cnVlOwotICAgIHdhaXRGb3JUaHJlYWRzKCk7CisgICAgc2lnbmFsX2Rl ZmluZXJfdGhyZWFkc190b19zdG9wKCk7CiAgIH0KKyAgd2FpdF9mb3JfdGhyZWFkc19yZWFkeSh0 Tm9PZkRlZmluZXJUaHJlYWRzKTsKKyAgU1RPUF9USU1FUjsKKyAgREVCX1BSSU5UKCgibWFpbjog RGVmaW5lciB0aHJlYWRzIGFyZSBkb25lIikpOworICBzaWduYWxfZXhlY3V0b3JfdGhyZWFkc190 b19zdG9wKCk7CisgIHdhaXRfZm9yX3RocmVhZHNfcmVhZHkodE5vT2ZUaHJlYWRzKTsKKyAgREVC X1BSSU5UKCgibWFpbjogRGVmaW5lciBhbmQgRXhlY3V0b3IgdGhyZWFkcyBhcmUgZG9uZSIpKTsK KworICBzaWduYWxfZGVmaW5lcl90aHJlYWRzX3RvX3N0YXJ0KCk7CisgIHNpZ25hbF9leGVjdXRv cl90aHJlYWRzX3RvX3N0YXJ0KCk7CiAKICAgdm9pZCAqIHRtcDsKLSAgZm9yKFVpbnQzMiBpID0g MDsgaSA8ICh0Tm9PZkRlZmluZXJUaHJlYWRzICsgdE5vT2ZFeGVjdXRvclRocmVhZHMpOyBpKysp CisgIGZvcihVaW50MzIgaSA9IDA7IGkgPCB0Tm9PZlRocmVhZHM7IGkrKykKICAgewogICAgIE5k YlRocmVhZF9XYWl0Rm9yKHRocmVhZExpZmVbaV0sICZ0bXApOwogICAgIE5kYlRocmVhZF9EZXN0 cm95KCZ0aHJlYWRMaWZlW2ldKTsKICAgfQorICBERUJfUFJJTlQoKCJtYWluOiBEZWZpbmVyIGFu ZCBFeGVjdXRvciB0aHJlYWRzIGFyZSBnb25lIikpOwogfQogCiBzdGF0aWMgTmRiQ29ubmVjdGlv bioKQEAgLTEzMzYsNDMgKzE1MTUsNiBAQCBnZXRfZmlyc3RfZnJlZShLRVlfTElTVF9IRUFERVIg Kmxpc3RfaGVhCiAgIHJldHVybiBrZXlfb3A7CiB9CiAKLXN0YXRpYyB2b2lkCi1pbml0X2xpc3Rf aGVhZGVycyhLRVlfTElTVF9IRUFERVIgKmxpc3RfaGVhZGVyLAotICAgICAgICAgICAgICAgICAg VWludDMyIG51bV9saXN0X2hlYWRlcnMpCi17Ci0gIFVpbnQzMiBpOwotICBLRVlfTElTVF9IRUFE RVIgKmxpc3RfaGVhZGVyX3JlZjsKLSAgY2hhciAqbGlzdF9oZWFkZXJfcHRyID0gKGNoYXIqKWxp c3RfaGVhZGVyOwotICBmb3IgKGkgPSAwOwotICAgICAgIGkgPCBudW1fbGlzdF9oZWFkZXJzOwot ICAgICAgIGxpc3RfaGVhZGVyX3B0ciArPSBzaXplb2YoS0VZX0xJU1RfSEVBREVSKSkKLSAgewot ICAgIGxpc3RfaGVhZGVyX3JlZiA9IChLRVlfTElTVF9IRUFERVIqKWxpc3RfaGVhZGVyX3B0cjsK LSAgICBsaXN0X2hlYWRlcl9yZWYtPmZpcnN0X2luX2xpc3QgPSBOVUxMOwotICAgIGxpc3RfaGVh ZGVyX3JlZi0+bGFzdF9pbl9saXN0ID0gTlVMTDsKLSAgICBsaXN0X2hlYWRlcl9yZWYtPm51bV9p bl9saXN0ID0gMDsKLSAgfQotfQotCi1zdGF0aWMgdm9pZAotaW5pdF90aHJlYWRfZGF0YShUSFJF QURfREFUQSAqdGhyZWFkX2RhdGEpCi17Ci0gIFVpbnQzMiBzeiA9IE5kYkRpY3Rpb25hcnk6Omdl dFJlY29yZFJvd0xlbmd0aChnX3JlY29yZFswXSk7Ci0gIHRocmVhZF9kYXRhLT5yZWNvcmQgPSAo Y2hhciopbWFsbG9jKHN6KTsKLSAgbWVtc2V0KCZ0aHJlYWRfZGF0YS0+cmVjb3JkLCAwLCBzeik7 Ci0gIGluaXRfbGlzdF9oZWFkZXJzKCZ0aHJlYWRfZGF0YS0+bGlzdF9oZWFkZXIsIDEpOwotICB0 aHJlYWRfZGF0YS0+dHJhbnNwb3J0X211dGV4ID0gTmRiTXV0ZXhfQ3JlYXRlKCk7Ci0gIHRocmVh ZF9kYXRhLT50cmFuc3BvcnRfY29uZCA9IE5kYkNvbmRpdGlvbl9DcmVhdGUoKTsKLX0KLQotc3Rh dGljIHZvaWQKLWRlc3Ryb3lfdGhyZWFkX2RhdGEoVEhSRUFEX0RBVEEgKnRocmVhZF9kYXRhKQot ewotICBmcmVlKHRocmVhZF9kYXRhLT5yZWNvcmQpOwotICBOZGJNdXRleF9EZXN0cm95KHRocmVh ZF9kYXRhLT50cmFuc3BvcnRfbXV0ZXgpOwotICBOZGJDb25kaXRpb25fRGVzdHJveSh0aHJlYWRf ZGF0YS0+dHJhbnNwb3J0X2NvbmQpOwotfQotCiAvKioKICAqIFJldHJpZXZlIGEgbGlua2VkIGxp c3Qgb2YgcHJlcGFyZWQgb3BlcmF0aW9ucy4gSWYgbm8gb3BlcmF0aW9ucwogICogcHJlcGFyZWQg d2Ugd2FpdCBvbiBhIGNvbmRpdGlvbiB1bnRpbCBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGZvcgpA QCAtMTM4Niw3ICsxNTI4LDcgQEAgcmVjZWl2ZV9vcGVyYXRpb25zKFRIUkVBRF9EQVRBICpteV90 aHJlYQogICBLRVlfTElTVF9IRUFERVIgKnRocmVhZF9saXN0X2hlYWRlciA9ICZteV90aHJlYWRf ZGF0YS0+bGlzdF9oZWFkZXI7CiAKICAgTmRiTXV0ZXhfTG9jayhteV90aHJlYWRfZGF0YS0+dHJh bnNwb3J0X211dGV4KTsKLSAgd2hpbGUgKCFmaXJzdF9pbl9saXN0KQorICB3aGlsZSAoIWZpcnN0 X2luX2xpc3QgJiYgIW15X3RocmVhZF9kYXRhLT5zdG9wKQogICB7CiAgICAgZmlyc3RfaW5fbGlz dCA9IHRocmVhZF9saXN0X2hlYWRlci0+Zmlyc3RfaW5fbGlzdDsKICAgICBsaXN0X2hlYWRlci0+ Zmlyc3RfaW5fbGlzdCA9IHRocmVhZF9saXN0X2hlYWRlci0+Zmlyc3RfaW5fbGlzdDsKQEAgLTE0 MjgsOCArMTU3MCwxMCBAQCBzdGF0aWMgdm9pZAogc2VuZF9vcGVyYXRpb25zKFVpbnQzMiB0aHJl YWRfaWQsCiAgICAgICAgICAgICAgICAgS0VZX0xJU1RfSEVBREVSICpsaXN0X2hlYWRlcikKIHsK LSAgVEhSRUFEX0RBVEEgKnJlY3ZfdGhyZWFkID0gJnRocmVhZF9kYXRhW3RocmVhZF9pZF07Cisg IFRIUkVBRF9EQVRBICpyZWN2X3RocmVhZCA9ICZ0aHJlYWRfZGF0YV9hcnJheVt0aHJlYWRfaWRd OwogCisgIERFQl9QUklOVCgoIlNlbmRpbmcgJXUgb3BlcmF0aW9ucyB0byB0aHJlYWQgaWQgJXUi LAorICAgICAgICAgICAgbGlzdF9oZWFkZXItPm51bV9pbl9saXN0LCB0aHJlYWRfaWQpKTsKICAg TmRiTXV0ZXhfTG9jayhyZWN2X3RocmVhZC0+dHJhbnNwb3J0X211dGV4KTsKICAgaWYgKCFyZWN2 X3RocmVhZC0+bGlzdF9oZWFkZXIuZmlyc3RfaW5fbGlzdCAmJgogICAgICAgbGlzdF9oZWFkZXIt PmZpcnN0X2luX2xpc3QpCkBAIC0xNDc1LDYgKzE2MTksNyBAQCBnZXRfdGhyZWFkX2lkX2Zvcl9y ZWNvcmQoVWludDMyIHJlY29yZF9pCiAgICAgICAgICAgICAgICAgICAgICAgICAgVWludDMyIG5v ZGVfY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgVWludDMyIHRocmVhZF9jb3VudCwK ICAgICAgICAgICAgICAgICAgICAgICAgICBVaW50MzIgdGhyZWFkX2dyb3VwLAorICAgICAgICAg ICAgICAgICAgICAgICAgIFVpbnQzMiBudW1fdGhyZWFkX2dyb3VwcywKICAgICAgICAgICAgICAg ICAgICAgICAgICBOZGIgKm15X25kYikKIHsKICAgVWludDMyIHRocmVhZF9pZDsKQEAgLTE0ODIs MTEgKzE2MjcsMTcgQEAgZ2V0X3RocmVhZF9pZF9mb3JfcmVjb3JkKFVpbnQzMiByZWNvcmRfaQog ICBVaW50MzIgbm9kZV9pZCA9IHRyYW5zLT5nZXRDb25uZWN0ZWROb2RlSWQoKTsKICAgdHJhbnMt PmNsb3NlKCk7CiAgIFVpbnQzMiBub2RlX3JlbF9pZCA9IGdldF9ub2RlX3JlbGF0aXZlX2lkKChV aW50MzIpMCwgbm9kZV9pZCk7CisgIGlmIChub2RlX2NvdW50ID49IHRocmVhZF9jb3VudCkKKyAg eworICAgIHRocmVhZF9pZCA9IG5vZGVfcmVsX2lkICUgdGhyZWFkX2NvdW50OworICAgIHJldHVy biB0aHJlYWRfaWQ7CisgIH0KKyAgCiByZWNhbGN1bGF0ZToKICAgdGhyZWFkX2lkID0gdGhyZWFk X2dyb3VwICogbm9kZV9jb3VudCArIG5vZGVfcmVsX2lkOwotICBpZiAodGhyZWFkX2lkID4gdGhy ZWFkX2NvdW50KQorICBpZiAodGhyZWFkX2lkID49IHRocmVhZF9jb3VudCkKICAgewotICAgIHRo cmVhZF9ncm91cCA9IHJhbmQoKSAlIHRocmVhZF9ncm91cDsKKyAgICB0aHJlYWRfZ3JvdXAgPSBy YW5kKCkgJSAobnVtX3RocmVhZF9ncm91cHMgLSAxKTsKICAgICBnb3RvIHJlY2FsY3VsYXRlOwog ICB9CiAgIHJldHVybiB0aHJlYWRfaWQ7CkBAIC0xNDk5LDcgKzE2NTAsNyBAQCB2b2lkIGluaXRf dGhyZWFkX2lkX21lbShjaGFyICp0aHJlYWRfaWRfCiB7CiAgIFVpbnQzMiBub2RlX2NvdW50ID0g Z2V0X25vZGVfY291bnQoKFVpbnQzMikwKTsKICAgVWludDMyIHRocmVhZF9jb3VudCA9IHROb09m RXhlY3V0b3JUaHJlYWRzOwotICBVaW50MzIgdGhyZWFkX2dyb3VwcyA9ICh0aHJlYWRfY291bnQg KyBub2RlX2NvdW50IC0gMSkgLyBub2RlX2NvdW50OworICBVaW50MzIgbnVtX3RocmVhZF9ncm91 cHMgPSAodGhyZWFkX2NvdW50ICsgbm9kZV9jb3VudCAtIDEpIC8gbm9kZV9jb3VudDsKICAgVWlu dDMyIHRocmVhZF9ncm91cCA9IDA7CiAgIGZvciAoVWludDMyIHJlY29yZF9pZCA9IGZpcnN0X3Jl Y29yZCwgaSA9IDA7CiAgICAgICAgaSA8IHRvdGFsX3JlY29yZHM7CkBAIC0xNTA5LDkgKzE2NjAs MTAgQEAgdm9pZCBpbml0X3RocmVhZF9pZF9tZW0oY2hhciAqdGhyZWFkX2lkXwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZV9jb3VudCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo cmVhZF9jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRocmVhZF9ncm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG51bV90aHJlYWRfZ3JvdXBzLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlfbmRiKTsKICAgICB0aHJl YWRfZ3JvdXArKzsKLSAgICBpZiAodGhyZWFkX2dyb3VwID09IHRocmVhZF9ncm91cHMpCisgICAg aWYgKHRocmVhZF9ncm91cCA9PSBudW1fdGhyZWFkX2dyb3VwcykKICAgICAgIHRocmVhZF9ncm91 cCA9IDA7CiAgIH0KIH0KQEAgLTE1MTksNyArMTY3MSw3IEBAIHZvaWQgaW5pdF90aHJlYWRfaWRf bWVtKGNoYXIgKnRocmVhZF9pZF8KIHN0YXRpYyBib29sCiBjaGVja19mb3Jfb3V0c3RhbmRpbmco VWludDMyICp0aHJlYWRfc3RhdGUpCiB7Ci0gIGZvciAoVWludDMyIGkgPSAwOyBpIDwgTUFYX0VY RUNVVE9SX1RIUkVBRFM7IGkrKykKKyAgZm9yIChVaW50MzIgaSA9IDA7IGkgPCB0Tm9PZkV4ZWN1 dG9yVGhyZWFkczsgaSsrKQogICB7CiAgICAgaWYgKHRocmVhZF9zdGF0ZVtpXSkKICAgICAgIHJl dHVybiB0cnVlOwpAQCAtMTU0OCw5ICsxNzAwLDExIEBAIHdhaXRfdW50aWxfYWxsX2NvbXBsZXRl ZChUSFJFQURfREFUQSAqbXkKIHsKICAgS0VZX0xJU1RfSEVBREVSIGxpc3RfaGVhZGVyOwogICBi b29sIG91dHN0YW5kaW5nID0gdHJ1ZTsKLSAgd2hpbGUgKG91dHN0YW5kaW5nKQorICB3aGlsZSAo b3V0c3RhbmRpbmcgJiYgIW15X3RocmVhZF9kYXRhLT5zdG9wKQogICB7CiAgICAgcmVjZWl2ZV9v cGVyYXRpb25zKG15X3RocmVhZF9kYXRhLCAmbGlzdF9oZWFkZXIpOworICAgIERFQl9QUklOVCgo InJlY2VpdmVkICV1IG9wZXJhdGlvbnMgaW4gdGhyZWFkIGlkID0gJXUiLAorICAgICAgICAgICAg ICBsaXN0X2hlYWRlci5udW1faW5fbGlzdCwgbXlfdGhyZWFkX2RhdGEtPnRocmVhZF9pZCkpOwog ICAgIHVwZGF0ZV90aHJlYWRfc3RhdGUoJmxpc3RfaGVhZGVyLCB0aHJlYWRfc3RhdGUpOwogICAg IG1vdmVfbGlzdCgmbGlzdF9oZWFkZXIsIGZyZWVfbGlzdF9oZWFkZXIpOwogICAgIG91dHN0YW5k aW5nID0gY2hlY2tfZm9yX291dHN0YW5kaW5nKHRocmVhZF9zdGF0ZSk7CkBAIC0xNTU5LDMxICsx NzEzLDMxIEBAIHdhaXRfdW50aWxfYWxsX2NvbXBsZXRlZChUSFJFQURfREFUQSAqbXkKIAogc3Rh dGljIFVpbnQzMgogcHJlcGFyZV9vcGVyYXRpb25zKGNoYXIgKnRocmVhZF9pZF9tZW0sCi0gICAg ICAgICAgICAgICAgICAgS0VZX0xJU1RfSEVBREVSICpsaXN0X2hlYWRlciwKKyAgICAgICAgICAg ICAgICAgICBLRVlfTElTVF9IRUFERVIgKmZyZWVfbGlzdF9oZWFkZXIsCiAgICAgICAgICAgICAg ICAgICAgVWludDMyICp0aHJlYWRfc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgVWludDMyIGZp cnN0X3JlY29yZF90b19kZWZpbmUsCiAgICAgICAgICAgICAgICAgICAgVWludDMyIG51bV9yZWNv cmRzX3RvX2RlZmluZSwKKyAgICAgICAgICAgICAgICAgICBVaW50MzIgZmlyc3RfcmVjb3JkLAog ICAgICAgICAgICAgICAgICAgIFVpbnQzMiBsYXN0X3JlY29yZCwKICAgICAgICAgICAgICAgICAg ICBVaW50MzIgbWF4X3Blcl90aHJlYWQpCiB7CiAgIEtFWV9MSVNUX0hFQURFUiB0aHJlYWRfbGlz dF9oZWFkZXJzW01BWF9FWEVDVVRPUl9USFJFQURTXTsKICAgVWludDMyIHJlY29yZF9pZCwgaSwg bnVtX3JlY29yZHM7CiAKLSAgaW5pdF9saXN0X2hlYWRlcnMoJnRocmVhZF9saXN0X2hlYWRlcnNb MF0sCi0gICAgICAgICAgICAgICAgICAgIE1BWF9FWEVDVVRPUl9USFJFQURTKTsKKyAgaW5pdF9s aXN0X2hlYWRlcnMoJnRocmVhZF9saXN0X2hlYWRlcnNbMF0sIHROb09mRXhlY3V0b3JUaHJlYWRz KTsKICAgZm9yIChyZWNvcmRfaWQgPSBmaXJzdF9yZWNvcmRfdG9fZGVmaW5lLCBpID0gMDsKLSAg ICAgICByZWNvcmRfaWQgPCBsYXN0X3JlY29yZCAmJiBpIDwgbnVtX3JlY29yZHNfdG9fZGVmaW5l OworICAgICAgIHJlY29yZF9pZCA8PSBsYXN0X3JlY29yZCAmJiBpIDwgbnVtX3JlY29yZHNfdG9f ZGVmaW5lOwogICAgICAgIHJlY29yZF9pZCsrLCBpKyspCiAgIHsKLSAgICBLRVlfT1BFUkFUSU9O ICpkZWZpbmVfb3AgPSBnZXRfZmlyc3RfZnJlZShsaXN0X2hlYWRlcik7Ci0gICAgVWludDMyIHRo cmVhZF9pZCA9IChVaW50MzIpdGhyZWFkX2lkX21lbVtyZWNvcmRfaWRdOworICAgIEtFWV9PUEVS QVRJT04gKmRlZmluZV9vcCA9IGdldF9maXJzdF9mcmVlKGZyZWVfbGlzdF9oZWFkZXIpOworICAg IFVpbnQzMiB0aHJlYWRfaWQgPSAoVWludDMyKXRocmVhZF9pZF9tZW1bcmVjb3JkX2lkIC0gZmly c3RfcmVjb3JkXTsKICAgICBkZWZpbmVfb3AtPmZpcnN0X2tleSA9IHJlY29yZF9pZDsKICAgICBk ZWZpbmVfb3AtPnNlY29uZF9rZXkgPSByZWNvcmRfaWQ7CiAgICAgZGVmaW5lX29wLT5leGVjdXRv cl90aHJlYWRfaWQgPSB0aHJlYWRfaWQ7CiAgICAgdGhyZWFkX3N0YXRlW3RocmVhZF9pZF0rKzsK LSAgICBLRVlfTElTVF9IRUFERVIgKmxpc3RfaGVhZGVyID0gJnRocmVhZF9saXN0X2hlYWRlcnNb dGhyZWFkX2lkXTsKLSAgICBpbnNlcnRfbGlzdChsaXN0X2hlYWRlciwgZGVmaW5lX29wKTsKLSAg ICBpZiAobGlzdF9oZWFkZXItPm51bV9pbl9saXN0ID49IG1heF9wZXJfdGhyZWFkKQorICAgIEtF WV9MSVNUX0hFQURFUiAqdGhyZWFkX2xpc3RfaGVhZGVyID0gJnRocmVhZF9saXN0X2hlYWRlcnNb dGhyZWFkX2lkXTsKKyAgICBpbnNlcnRfbGlzdCh0aHJlYWRfbGlzdF9oZWFkZXIsIGRlZmluZV9v cCk7CisgICAgaWYgKHRocmVhZF9saXN0X2hlYWRlci0+bnVtX2luX2xpc3QgPj0gbWF4X3Blcl90 aHJlYWQpCiAgICAgewogICAgICAgLyoqCiAgICAgICAgKiBPbmUgdGhyZWFkIGhhcyBtYXggbnVt YmVyIG9mIHJlY29yZHMsIHdlIHdvbid0IGRlZmluZSBhbnkKQEAgLTE1OTMsMTIgKzE3NDcsMTIg QEAgcHJlcGFyZV9vcGVyYXRpb25zKGNoYXIgKnRocmVhZF9pZF9tZW0sCiAgICAgfQogICB9CiAg IG51bV9yZWNvcmRzID0gaTsKLSAgZm9yIChpID0gMDsgaSA8IE1BWF9FWEVDVVRPUl9USFJFQURT OyBpKyspCisgIGZvciAoaSA9IDA7IGkgPCB0Tm9PZkV4ZWN1dG9yVGhyZWFkczsgaSsrKQogICB7 Ci0gICAgS0VZX0xJU1RfSEVBREVSICpsaXN0X2hlYWRlciA9ICZ0aHJlYWRfbGlzdF9oZWFkZXJz W2ldOwotICAgIGlmIChsaXN0X2hlYWRlci0+bnVtX2luX2xpc3QpCisgICAgS0VZX0xJU1RfSEVB REVSICp0aHJlYWRfbGlzdF9oZWFkZXIgPSAmdGhyZWFkX2xpc3RfaGVhZGVyc1tpXTsKKyAgICBp ZiAodGhyZWFkX2xpc3RfaGVhZGVyLT5udW1faW5fbGlzdCkKICAgICB7Ci0gICAgICBzZW5kX29w ZXJhdGlvbnModE5vT2ZEZWZpbmVyVGhyZWFkcyArIGksIGxpc3RfaGVhZGVyKTsKKyAgICAgIHNl bmRfb3BlcmF0aW9ucyh0Tm9PZkRlZmluZXJUaHJlYWRzICsgaSwgdGhyZWFkX2xpc3RfaGVhZGVy KTsKICAgICB9CiAgIH0KICAgcmV0dXJuIG51bV9yZWNvcmRzOwpAQCAtMTYwOCwxMiArMTc2Miwx NCBAQCBzdGF0aWMgdm9pZCoKIGRlZmluZXJfdGhyZWFkKHZvaWQgKmRhdGEpCiB7CiAgIFRIUkVB RF9EQVRBICpteV90aHJlYWRfZGF0YSA9IChUSFJFQURfREFUQSopZGF0YTsKLSAgVWludDMyIG15 X3RocmVhZF9pZCA9IG15X3RocmVhZF9kYXRhLT50aHJlYWRfaWQ7CisgIFVpbnQzMiBteV90aHJl YWRfaWQgPSBnZXRfdGhyZWFkX2lkX3NhZmUobXlfdGhyZWFkX2RhdGEpOworICBERUJfUFJJTlQo KCJkZWZpbmVyIHRocmVhZDogbXlfdGhyZWFkX2RhdGEgPSAweCVsbHgsIG15X3RocmVhZF9pZCA9 ICV1IiwKKyAgICAgICAgICAgIChVaW50NjQpbXlfdGhyZWFkX2RhdGEsIG15X3RocmVhZF9pZCkp OwogICBSdW5UeXBlICBydW5fdHlwZSA9IHRSdW5UeXBlOwogICBVaW50MzIgdGhyZWFkX3N0YXRl W01BWF9FWEVDVVRPUl9USFJFQURTXTsKLSAgVWludDMyIG1heF9vdXRzdGFuZGluZyA9ICh0Tm9P ZlRocmVhZHMgKiB0Tm9PZlBhcmFsbGVsVHJhbnMpIC8KKyAgVWludDMyIG1heF9vdXRzdGFuZGlu ZyA9ICh0Tm9PZkV4ZWN1dG9yVGhyZWFkcyAqIHROb09mUGFyYWxsZWxUcmFucykgLwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHROb09mRGVmaW5lclRocmVhZHM7Ci0gIFVpbnQzMiBtYXhf cGVyX3RocmVhZCA9IDEwMjQgLyB0Tm9PZkRlZmluZXJUaHJlYWRzOworICBVaW50MzIgbWF4X3Bl cl90aHJlYWQgPSAxMDAwIC8gdE5vT2ZEZWZpbmVyVGhyZWFkczsKICAgVWludDMyIHRvdGFsX3Jl Y29yZHMgPSBtYXhfb3V0c3RhbmRpbmcgKiB0Tm9PZlRyYW5zYWN0aW9uczsKICAgVWludDMyIGZp cnN0X3JlY29yZCA9IHRvdGFsX3JlY29yZHMgKiBteV90aHJlYWRfaWQ7CiAgIFVpbnQzMiBteV9s YXN0X3JlY29yZCA9IGZpcnN0X3JlY29yZCArIHRvdGFsX3JlY29yZHMgLSAxOwpAQCAtMTYyMSwz NCArMTc3Nyw0MSBAQCBkZWZpbmVyX3RocmVhZCh2b2lkICpkYXRhKQogICBLRVlfTElTVF9IRUFE RVIgZnJlZV9saXN0X2hlYWRlcjsKICAgdm9pZCAqa2V5X29wX21lbSA9IG1hbGxvYyhzaXplb2Yo S0VZX09QRVJBVElPTikgKiBtYXhfb3V0c3RhbmRpbmcpOwogICBjaGFyICp0aHJlYWRfaWRfbWVt ID0gKGNoYXIqKW1hbGxvYyh0b3RhbF9yZWNvcmRzKTsKLSAgTmRiICpteV9uZGIgPSBnZXRfbmRi X29iamVjdChteV90aHJlYWRfaWQpOworICBtZW1zZXQoKGNoYXIqKSZ0aHJlYWRfc3RhdGVbMF0s IDAsIHNpemVvZih0aHJlYWRfc3RhdGUpKTsKIAotICBpbml0X2xpc3RfaGVhZGVycygmbXlfdGhy ZWFkX2RhdGEtPmxpc3RfaGVhZGVyLCAxKTsKICAgaW5pdF9rZXlfb3BfbGlzdCgoY2hhciopa2V5 X29wX21lbSwKICAgICAgICAgICAgICAgICAgICAmZnJlZV9saXN0X2hlYWRlciwKICAgICAgICAg ICAgICAgICAgICBtYXhfb3V0c3RhbmRpbmcsCiAgICAgICAgICAgICAgICAgICAgbXlfdGhyZWFk X2lkLAogICAgICAgICAgICAgICAgICAgIHJ1bl90eXBlKTsKKyAgTmRiICpteV9uZGIgPSBnZXRf bmRiX29iamVjdChteV90aHJlYWRfaWQpOwogICBpbml0X3RocmVhZF9pZF9tZW0odGhyZWFkX2lk X21lbSwKICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X3JlY29yZCwKICAgICAgICAgICAgICAg ICAgICAgIHRvdGFsX3JlY29yZHMsCiAgICAgICAgICAgICAgICAgICAgICBteV9uZGIpOwogICBk ZWxldGUgbXlfbmRiOwotICBpbml0X3RocmVhZF9kYXRhKG15X3RocmVhZF9kYXRhKTsKICAgVGhy ZWFkRXhlY3V0aW9uc1tteV90aHJlYWRfaWRdID0gMDsKLSAgVGhyZWFkUmVhZHlbbXlfdGhyZWFk X2lkXSA9IDE7IC8qIEZsYWcgd2UndmUgY29tcGxldGVkIHN0YXJ0dXAgKi8KLSAgd2FpdF9mb3Jf c3RhcnRfc2lnbmFsKG15X3RocmVhZF9kYXRhKTsKKyAgREVCX1BSSU5UKCgiZGVmaW5lciB0aHJl YWQgJXUgaGF2ZSBjb21wbGV0ZWQgc3RhcnR1cCIsIG15X3RocmVhZF9pZCkpOworICBzaWduYWxf dGhyZWFkX3JlYWR5X3dhaXRfZm9yX3N0YXJ0KG15X3RocmVhZF9kYXRhKTsKKyAgREVCX1BSSU5U KCgiZGVmaW5lciB0aHJlYWQgJXUgc3RhcnRzIGV4ZWN1dGluZyIsIG15X3RocmVhZF9pZCkpOwog Ci0gIHdoaWxlICghdFN0b3ApCisgIHdoaWxlICghbXlfdGhyZWFkX2RhdGEtPnN0b3ApCiAgIHsK ICAgICBVaW50MzIgZGVmaW5lZF9vcHMgPSBwcmVwYXJlX29wZXJhdGlvbnModGhyZWFkX2lkX21l bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyZWVfbGlz dF9oZWFkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0 aHJlYWRfc3RhdGVbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGN1cnJlbnRfcmVjb3JkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtYXhfb3V0c3RhbmRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZpcnN0X3JlY29yZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbXlfbGFzdF9yZWNvcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1heF9wZXJfdGhyZWFkKTsKICAgICBjdXJyZW50X3JlY29yZCAr PSBkZWZpbmVkX29wczsKKyAgICBpZiAoZGVmaW5lZF9vcHMpCisgICAgeworICAgICAgd2FpdF91 bnRpbF9hbGxfY29tcGxldGVkKG15X3RocmVhZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZ0aHJlYWRfc3RhdGVbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmZyZWVfbGlzdF9oZWFkZXIpOworICAgIH0KICAgICBpZiAoY3VycmVudF9yZWNvcmQgPiBt eV9sYXN0X3JlY29yZCkKICAgICB7CiAgICAgICBpZiAocnVuX3R5cGUgIT0gUnVuUmVhZCAmJgpA QCAtMTY2MywxNCArMTgyNiwxMiBAQCBkZWZpbmVyX3RocmVhZCh2b2lkICpkYXRhKQogICAgICAg fQogICAgICAgY3VycmVudF9yZWNvcmQgPSBmaXJzdF9yZWNvcmQ7CiAgICAgfQotICAgIHdhaXRf dW50aWxfYWxsX2NvbXBsZXRlZChteV90aHJlYWRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnRocmVhZF9zdGF0ZVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmZyZWVfbGlzdF9oZWFkZXIpOwogICB9CisgIERFQl9QUklOVCgoImRlZmluZXIgdGhyZWFkICV1 IGlzIGRvbmUiLCBteV90aHJlYWRfaWQpKTsKKyAgc2lnbmFsX3RocmVhZF9yZWFkeV93YWl0X2Zv cl9zdGFydChteV90aHJlYWRfZGF0YSk7CiAgIGZyZWUoa2V5X29wX21lbSk7CiAgIGZyZWUodGhy ZWFkX2lkX21lbSk7CiAgIGRlc3Ryb3lfdGhyZWFkX2RhdGEobXlfdGhyZWFkX2RhdGEpOwotICBU aHJlYWRSZWFkeVtteV90aHJlYWRfaWRdID0gMTsKICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTE3 NDMsNyArMTkwNCw3IEBAIHJlcG9ydF9iYWNrX29wZXJhdGlvbnMoS0VZX09QRVJBVElPTiAqZmkK ICAgS0VZX0xJU1RfSEVBREVSIHRocmVhZF9saXN0X2hlYWRlcltNQVhfREVGSU5FUl9USFJFQURT XTsKICAgS0VZX09QRVJBVElPTiAqbmV4dF9vcCwgKmV4ZWN1dGVkX29wOwogCi0gIGluaXRfbGlz dF9oZWFkZXJzKCZ0aHJlYWRfbGlzdF9oZWFkZXJbMF0sIE1BWF9ERUZJTkVSX1RIUkVBRFMpOwor ICBpbml0X2xpc3RfaGVhZGVycygmdGhyZWFkX2xpc3RfaGVhZGVyWzBdLCB0Tm9PZkRlZmluZXJU aHJlYWRzKTsKICAgZXhlY3V0ZWRfb3AgPSBmaXJzdF9kZWZpbmVkX29wOwogICB3aGlsZSAoZXhl Y3V0ZWRfb3ApCiAgIHsKQEAgLTE3NTIsNyArMTkxMyw3IEBAIHJlcG9ydF9iYWNrX29wZXJhdGlv bnMoS0VZX09QRVJBVElPTiAqZmkKICAgICAgICAgICAgICAgICBleGVjdXRlZF9vcCk7CiAgICAg ZXhlY3V0ZWRfb3AgPSBuZXh0X29wOwogICB9Ci0gIGZvciAoVWludDMyIGkgPSAwOyBpIDwgTUFY X0RFRklORVJfVEhSRUFEUzsgaSsrKQorICBmb3IgKFVpbnQzMiBpID0gMDsgaSA8IHROb09mRGVm aW5lclRocmVhZHM7IGkrKykKICAgewogICAgIGlmICh0aHJlYWRfbGlzdF9oZWFkZXJbaV0uZmly c3RfaW5fbGlzdCkKICAgICB7CkBAIC0xNzcxLDM0ICsxOTMyLDY2IEBAIHN0YXRpYyB2b2lkKgog ZXhlY3V0b3JfdGhyZWFkKHZvaWQgKmRhdGEpCiB7CiAgIFRIUkVBRF9EQVRBICpteV90aHJlYWRf ZGF0YSA9IChUSFJFQURfREFUQSopZGF0YTsKLSAgVWludDMyIG15X3RocmVhZF9pZCA9IG15X3Ro cmVhZF9kYXRhLT50aHJlYWRfaWQ7CisgIFVpbnQzMiBteV90aHJlYWRfaWQgPSBnZXRfdGhyZWFk X2lkX3NhZmUobXlfdGhyZWFkX2RhdGEpOwogICBVaW50NjQgZXhlY19jb3VudCA9IDA7CisgIFVp bnQzMiBlcnJvcl9jb3VudCA9IDA7CisgIFVpbnQzMiBlcnJvcl9mbGFnID0gZmFsc2U7CiAgIGlu dCByZXRfY29kZTsKICAgS0VZX0xJU1RfSEVBREVSIGxpc3RfaGVhZGVyOwotICBOZGIgKm15X25k YiA9IGdldF9uZGJfb2JqZWN0KG15X3RocmVhZF9pZCk7CiAKLSAgaW5pdF90aHJlYWRfZGF0YSht eV90aHJlYWRfZGF0YSk7CisgIERFQl9QUklOVCgoImV4ZWN1dG9yIHRocmVhZDogbXlfdGhyZWFk X2RhdGEgPSAweCVsbHgsIHRocmVhZF9pZCA9ICV1IiwKKyAgICAgICAgICAgICAoVWludDY0KW15 X3RocmVhZF9kYXRhLCBteV90aHJlYWRfaWQpKTsKKyAgTmRiICpteV9uZGIgPSBnZXRfbmRiX29i amVjdChteV90aHJlYWRfaWQpOwogICBUaHJlYWRFeGVjdXRpb25zW215X3RocmVhZF9pZF0gPSAw OwotICBUaHJlYWRSZWFkeVtteV90aHJlYWRfaWRdID0gMTsgLyogRmxhZyB3ZSd2ZSBjb21wbGV0 ZWQgc3RhcnR1cCAqLwotICB3YWl0X2Zvcl9zdGFydF9zaWduYWwobXlfdGhyZWFkX2RhdGEpOwor ICBERUJfUFJJTlQoKCJleGVjdXRvciB0aHJlYWQgaWQgPSAldSBoYXZlIGNvbXBsZXRlZCBzdGFy dHVwIiwKKyAgICAgICAgICAgIG15X3RocmVhZF9pZCkpOworCisgIHNpZ25hbF90aHJlYWRfcmVh ZHlfd2FpdF9mb3Jfc3RhcnQobXlfdGhyZWFkX2RhdGEpOwogCi0gIHdoaWxlICghdFN0b3ApCisg IERFQl9QUklOVCgoImV4ZWN1dG9yIHRocmVhZCBpZCA9ICV1IGFyZSBzdGFydGluZyB0byBleGVj dXRlIiwKKyAgICAgICAgICAgIG15X3RocmVhZF9pZCkpOworCisgIHdoaWxlICghbXlfdGhyZWFk X2RhdGEtPnN0b3ApCiAgIHsKICAgICByZWNlaXZlX29wZXJhdGlvbnMobXlfdGhyZWFkX2RhdGEs ICZsaXN0X2hlYWRlcik7Ci0gICAgcmV0X2NvZGUgPSBleGVjdXRlX29wZXJhdGlvbnMobXlfdGhy ZWFkX2RhdGEtPnJlY29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteV9u ZGIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9oZWFkZXIuZmlyc3Rf aW5fbGlzdCk7Ci0gICAgaWYgKHJldF9jb2RlIDwgMCkKKyAgICBpZiAobGlzdF9oZWFkZXIubnVt X2luX2xpc3QgPT0gMCkKKyAgICB7CisgICAgICBERUJfUFJJTlQoKCJTdG9wIGV4ZWN1dG9yIHRo cmVhZCBoYXMgYmVlbiByZXF1ZXN0ZWQgYnkgd2FrZXVwIikpOwogICAgICAgYnJlYWs7CisgICAg fQorICAgIHJldF9jb2RlID0gMDsKKyAgICBpZiAoIWVycm9yX2ZsYWcpCisgICAgeworICAgICAg LyogSWdub3JlIHRvIGV4ZWN1dGUgYWZ0ZXIgZXJyb3JzIHRvIHNpbXBsaWZ5IGVycm9yIGhhbmRs aW5nICovCisgICAgICByZXRfY29kZSA9IGV4ZWN1dGVfb3BlcmF0aW9ucyhteV90aHJlYWRfZGF0 YS0+cmVjb3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlfbmRiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9oZWFkZXIuZmlyc3RfaW5f bGlzdCk7CisgICAgfQogICAgIHJlcG9ydF9iYWNrX29wZXJhdGlvbnMobGlzdF9oZWFkZXIuZmly c3RfaW5fbGlzdCk7Ci0gICAgaWYgKHRSdW5TdGF0ZSA9PSBFWEVDVVRJTkcpCisgICAgaWYgKHJl dF9jb2RlIDwgMCkKKyAgICB7CisgICAgICBuZGJvdXRfYygiZXhlY3V0b3IgdGhyZWFkIGlkID0g JXUgcmVjZWl2ZWQgZXJyb3IiLCBteV90aHJlYWRfaWQpOworICAgICAgZXJyb3JfZmxhZyA9IHRy dWU7CisgICAgfQorICAgIGVsc2UgaWYgKCFlcnJvcl9mbGFnICYmCisgICAgICAgICAgICAgKHRS dW5UeXBlID09IFJ1bkluc2VydCB8fAorICAgICAgICAgICAgICB0UnVuVHlwZSA9PSBSdW5EZWxl dGUgfHwKKyAgICAgICAgICAgICAgdFJ1blN0YXRlID09IEVYRUNVVElORykpCisgICAgewogICAg ICAgZXhlY19jb3VudCArPSAoVWludDY0KXJldF9jb2RlOworICAgIH0KICAgfQorICBERUJfUFJJ TlQoKCJleGVjdXRvciB0aHJlYWQgaWQgPSAldSBhcmUgZG9uZSBleGVjdXRpbmcsIGV4ZWN1dGVk ICVsbHUgcm93cyIsCisgICAgICAgICAgICBteV90aHJlYWRfaWQsIGV4ZWNfY291bnQpKTsKICAg VGhyZWFkRXhlY3V0aW9uc1tteV90aHJlYWRfaWRdID0gZXhlY19jb3VudDsKLSAgZnJlZShteV90 aHJlYWRfZGF0YS0+cmVjb3JkKTsKKyAgaWYgKGVycm9yX2NvdW50KQorICB7CisgICAgbmRib3V0 X2MoIlJlY2VpdmVkICV1IGVycm9ycyBpbiBleGVjdXRvciB0aHJlYWQsIGlkID0gJXUiLAorICAg ICAgICAgICAgIGVycm9yX2NvdW50LCBteV90aHJlYWRfaWQpOworICB9CisgIHNpZ25hbF90aHJl YWRfcmVhZHlfd2FpdF9mb3Jfc3RhcnQobXlfdGhyZWFkX2RhdGEpOwogICBkZWxldGUgbXlfbmRi OwogICBkZXN0cm95X3RocmVhZF9kYXRhKG15X3RocmVhZF9kYXRhKTsKLSAgVGhyZWFkUmVhZHlb bXlfdGhyZWFkX2lkXSA9IDE7CiAgIHJldHVybiBOVUxMOwogfQogCkBAIC0xOTQyLDYgKzIxMzUs NyBAQCByZWFkQXJndW1lbnRzKGludCBhcmdjLCBjb25zdCBjaGFyKiogYXJnCiAgICAgICBhcmdj Kys7CiAgICAgfSBlbHNlIGlmIChzdHJjbXAoYXJndltpXSwgIi1uZXciKSA9PSAwKXsKICAgICAg IHROZXcgPSB0cnVlOworICAgICAgdE5kYlJlY29yZCA9IHRydWU7CiAgICAgICBhcmdjKys7CiAg ICAgICBpLS07CiAgICAgfSBlbHNlIGlmIChzdHJjbXAoYXJndltpXSwgIi1kcm9wX3RhYmxlIikg PT0gMCl7CgpObyBidW5kbGUgKHJlYXNvbjogdXNlbGVzcyBmb3IgcHVzaCBlbWFpbHMpLg==