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: Tomas Mraz To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: KBKDF for Kerberos 5 Date: Tue, 09 Jun 2026 12:44:36 GMT Message-ID: <178100907660.1.3298455702501923618.rpms-openssl-dc9d5caf5e42@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: dc9d5caf5e42ae56d849ac6e586bf4f67c444cc0 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzbApCcmFu Y2ggOiByZWJhc2VfNDBiZXRhCkNvbW1pdCA6IGRjOWQ1Y2FmNWU0MmFlNTZkODQ5YWM2ZTU4NmJm NGY2N2M0NDRjYzAKQXV0aG9yIDogVG9tYXMgTXJheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+ CkRhdGUgICA6IDIwMTktMTEtMTJUMTY6Mzg6MTErMDE6MDAKU3RhdHMgIDogKzEyNTQvLTAgaW4g MSBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvb3Bl bnNzbC9jL2RjOWQ1Y2FmNWU0MmFlNTZkODQ5YWM2ZTU4NmJmNGY2N2M0NDRjYzA/YnJhbmNoPXJl YmFzZV80MGJldGEKCkxvZzoKS0JLREYgZm9yIEtlcmJlcm9zIDUKCi0tLQpkaWZmIC0tZ2l0IGEv b3BlbnNzbC0xLjEuMS1rcmI1LWtkZi5wYXRjaCBiL29wZW5zc2wtMS4xLjEta3JiNS1rZGYucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJmMzNmNgotLS0gL2Rldi9u dWxsCisrKyBiL29wZW5zc2wtMS4xLjEta3JiNS1rZGYucGF0Y2gKQEAgLTAsMCArMSwxMjU0IEBA CitkaWZmIC11cCBvcGVuc3NsLTEuMS4xZC9jcnlwdG8vZXJyL29wZW5zc2wudHh0LmtyYjUta2Rm IG9wZW5zc2wtMS4xLjFkL2NyeXB0by9lcnIvb3BlbnNzbC50eHQKKy0tLSBvcGVuc3NsLTEuMS4x ZC9jcnlwdG8vZXJyL29wZW5zc2wudHh0LmtyYjUta2RmCTIwMTktMTEtMTIgMTM6MzA6MzYuMjYx NzQ4OTczICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWQvY3J5cHRvL2Vyci9vcGVuc3NsLnR4dAky MDE5LTExLTEyIDEzOjMwOjM2LjI4Mzc0ODU3NyArMDEwMAorQEAgLTgyMSw2ICs4MjEsMTEgQEAg RVZQX0ZfUzM5MFhfQUVTX0dDTV9DVFJMOjIwMTpzMzkweF9hZXNfZworIEVWUF9GX1NDUllQVF9B TEc6MjI4OnNjcnlwdF9hbGcKKyBFVlBfRl9VUERBVEU6MTczOnVwZGF0ZQorIEtERl9GX0hLREZf RVhUUkFDVDoxMTI6SEtERl9FeHRyYWN0CisrS0RGX0ZfS0JLREZfQ1RSTDoxMzQ6a2JrZGZfY3Ry bAorK0tERl9GX0tCS0RGX0NUUkxfU1RSOjEzNTprYmtkZl9jdHJsX3N0cgorK0tERl9GX0tCS0RG X0RFUklWRToxMzY6a2JrZGZfZGVyaXZlCisrS0RGX0ZfS0JLREZfTkVXOjEzNzprYmtkZl9uZXcK KytLREZfRl9LREZfQ0lQSEVSMkNUUkw6MTM4OmtkZl9jaXBoZXIyY3RybAorIEtERl9GX0tERl9I S0RGX0RFUklWRToxMTM6a2RmX2hrZGZfZGVyaXZlCisgS0RGX0ZfS0RGX0hLREZfTkVXOjExNDpr ZGZfaGtkZl9uZXcKKyBLREZfRl9LREZfSEtERl9TSVpFOjExNTprZGZfaGtkZl9zaXplCitAQCAt MjMyNiw2ICsyMzMxLDggQEAgRVZQX1JfV1JBUF9NT0RFX05PVF9BTExPV0VEOjE3MDp3cmFwIG1v ZAorIEVWUF9SX1dST05HX0ZJTkFMX0JMT0NLX0xFTkdUSDoxMDk6d3JvbmcgZmluYWwgYmxvY2sg bGVuZ3RoCisgRVZQX1JfWFRTX0RVUExJQ0FURURfS0VZUzoxODM6eHRzIGR1cGxpY2F0ZWQga2V5 cworIEtERl9SX0lOVkFMSURfRElHRVNUOjEwMDppbnZhbGlkIGRpZ2VzdAorK0tERl9SX0lOVkFM SURfU0VFRF9MRU5HVEg6MTE2OmludmFsaWQgc2VlZCBsZW5ndGgKKytLREZfUl9NSVNTSU5HX0NJ UEhFUjoxMTc6bWlzc2luZyBjaXBoZXIKKyBLREZfUl9NSVNTSU5HX0lURVJBVElPTl9DT1VOVDox MDk6bWlzc2luZyBpdGVyYXRpb24gY291bnQKKyBLREZfUl9NSVNTSU5HX0tFWToxMDQ6bWlzc2lu ZyBrZXkKKyBLREZfUl9NSVNTSU5HX01FU1NBR0VfRElHRVNUOjEwNTptaXNzaW5nIG1lc3NhZ2Ug ZGlnZXN0CitkaWZmIC11cCBvcGVuc3NsLTEuMS4xZC9jcnlwdG8vZXZwL2tkZl9saWIuYy5rcmI1 LWtkZiBvcGVuc3NsLTEuMS4xZC9jcnlwdG8vZXZwL2tkZl9saWIuYworLS0tIG9wZW5zc2wtMS4x LjFkL2NyeXB0by9ldnAva2RmX2xpYi5jLmtyYjUta2RmCTIwMTktMTEtMTIgMTM6MzA6MzYuMjYx NzQ4OTczICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWQvY3J5cHRvL2V2cC9rZGZfbGliLmMJMjAx OS0xMS0xMiAxMzo0NDowNC40MzUyODI4NTQgKzAxMDAKK0BAIC0zMSw2ICszMSw3IEBAIHN0YXRp YyBjb25zdCBFVlBfS0RGX01FVEhPRCAqc3RhbmRhcmRfbWUKKyAgICAgJnRsczFfcHJmX2tkZl9t ZXRoLAorICAgICAmaGtkZl9rZGZfbWV0aCwKKyAgICAgJnNzaGtkZl9rZGZfbWV0aCwKKysgICAg JmtiX2tkZl9tZXRoLAorIH07CisgCisgREVDTEFSRV9PQkpfQlNFQVJDSF9DTVBfRk4oY29uc3Qg RVZQX0tERl9NRVRIT0QgKiwgY29uc3QgRVZQX0tERl9NRVRIT0QgKiwKK2RpZmYgLXVwIG9wZW5z c2wtMS4xLjFkL2NyeXB0by9pbmNsdWRlL2ludGVybmFsL2V2cF9pbnQuaC5rcmI1LWtkZiBvcGVu c3NsLTEuMS4xZC9jcnlwdG8vaW5jbHVkZS9pbnRlcm5hbC9ldnBfaW50LmgKKy0tLSBvcGVuc3Ns LTEuMS4xZC9jcnlwdG8vaW5jbHVkZS9pbnRlcm5hbC9ldnBfaW50Lmgua3JiNS1rZGYJMjAxOS0x MS0xMiAxMzozMDozNi4yNjE3NDg5NzMgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xZC9jcnlwdG8v aW5jbHVkZS9pbnRlcm5hbC9ldnBfaW50LmgJMjAxOS0xMS0xMiAxMzozMDozNi4yODM3NDg1Nzcg KzAxMDAKK0BAIC0xMzAsNiArMTMwLDcgQEAgZXh0ZXJuIGNvbnN0IEVWUF9LREZfTUVUSE9EIHNj cnlwdF9rZGZfbQorIGV4dGVybiBjb25zdCBFVlBfS0RGX01FVEhPRCB0bHMxX3ByZl9rZGZfbWV0 aDsKKyBleHRlcm4gY29uc3QgRVZQX0tERl9NRVRIT0QgaGtkZl9rZGZfbWV0aDsKKyBleHRlcm4g Y29uc3QgRVZQX0tERl9NRVRIT0Qgc3Noa2RmX2tkZl9tZXRoOworK2V4dGVybiBjb25zdCBFVlBf S0RGX01FVEhPRCBrYl9rZGZfbWV0aDsKKyAKKyBzdHJ1Y3QgZXZwX21kX3N0IHsKKyAgICAgaW50 IHR5cGU7CitkaWZmIC11cCBvcGVuc3NsLTEuMS4xZC9jcnlwdG8va2RmL2J1aWxkLmluZm8ua3Ji NS1rZGYgb3BlbnNzbC0xLjEuMWQvY3J5cHRvL2tkZi9idWlsZC5pbmZvCistLS0gb3BlbnNzbC0x LjEuMWQvY3J5cHRvL2tkZi9idWlsZC5pbmZvLmtyYjUta2RmCTIwMTktMTEtMTIgMTM6MzA6MzYu MjYxNzQ4OTczICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWQvY3J5cHRvL2tkZi9idWlsZC5pbmZv CTIwMTktMTEtMTIgMTM6MzA6MzYuMjg0NzQ4NTU5ICswMTAwCitAQCAtMSwzICsxLDMgQEAKKyBM SUJTPS4uLy4uL2xpYmNyeXB0bworIFNPVVJDRVsuLi8uLi9saWJjcnlwdG9dPVwKKy0gICAgICAg IHRsczFfcHJmLmMga2RmX2Vyci5jIGtkZl91dGlsLmMgaGtkZi5jIHNjcnlwdC5jIHBia2RmMi5j IHNzaGtkZi5jCisrICAgICAgICB0bHMxX3ByZi5jIGtkZl9lcnIuYyBrZGZfdXRpbC5jIGhrZGYu YyBzY3J5cHQuYyBwYmtkZjIuYyBzc2hrZGYuYyBrYmtkZi5jCitkaWZmIC11cCBvcGVuc3NsLTEu MS4xZC9jcnlwdG8va2RmL2tia2RmLmMua3JiNS1rZGYgb3BlbnNzbC0xLjEuMWQvY3J5cHRvL2tk Zi9rYmtkZi5jCistLS0gb3BlbnNzbC0xLjEuMWQvY3J5cHRvL2tkZi9rYmtkZi5jLmtyYjUta2Rm CTIwMTktMTEtMTIgMTM6MzA6MzYuMjg0NzQ4NTU5ICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWQv Y3J5cHRvL2tkZi9rYmtkZi5jCTIwMTktMTEtMTIgMTY6MDk6MzIuODI4MjM4OTI2ICswMTAwCitA QCAtMCwwICsxLDUzMCBAQAorKy8qCisrICogQ29weXJpZ2h0IDIwMTkgVGhlIE9wZW5TU0wgUHJv amVjdCBBdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorKyAqIENvcHlyaWdodCAyMDE5IFJl ZCBIYXQsIEluYy4KKysgKgorKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSAy LjAgKHRoZSAiTGljZW5zZSIpLiAgWW91IG1heSBub3QgdXNlCisrICogdGhpcyBmaWxlIGV4Y2Vw dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgY2FuIG9idGFpbiBhIGNvcHkK KysgKiBpbiB0aGUgZmlsZSBMSUNFTlNFIGluIHRoZSBzb3VyY2UgZGlzdHJpYnV0aW9uIG9yIGF0 CisrICogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorKyAqLwor KworKy8qCisrICogVGhpcyBpbXBsZW1lbnRzIGh0dHBzOi8vY3NyYy5uaXN0Lmdvdi9wdWJsaWNh dGlvbnMvZGV0YWlsL3NwLzgwMC0xMDgvZmluYWwKKysgKiBzZWN0aW9uIDUuMSAoImNvdW50ZXIg bW9kZSIpIGFuZCBzZWN0aW9uIDUuMiAoImZlZWRiYWNrIG1vZGUiKSBpbiBib3RoIEhNQUMKKysg KiBhbmQgQ01BQy4gIFRoYXQgZG9jdW1lbnQgZG9lcyBub3QgbmFtZSB0aGUgS0RGcyBpdCBkZWZp bmVzOyB0aGUgbmFtZSBpcworKyAqIGRlcml2ZWQgZnJvbQorKyAqIGh0dHBzOi8vY3NyYy5uaXN0 Lmdvdi9Qcm9qZWN0cy9DcnlwdG9ncmFwaGljLUFsZ29yaXRobS1WYWxpZGF0aW9uLVByb2dyYW0v S2V5LURlcml2YXRpb24KKysgKgorKyAqIE5vdGUgdGhhdCBzZWN0aW9uIDUuMyAoImRvdWJsZS1w aXBlbGluZSBtb2RlIikgaXMgbm90IGltcGxlbWVudGVkLCB0aG91Z2gKKysgKiBpdCB3b3VsZCBi ZSBwb3NzaWJsZSB0byBkbyBzbyBpbiB0aGUgZnV0dXJlLgorKyAqCisrICogVGhlc2UgdmVyc2lv bnMgYWxsIGFzc3VtZSB0aGUgY291bnRlciBpcyB1c2VkLiAgSXQgd291bGQgYmUgcmVsYXRpdmVs eQorKyAqIHN0cmFpZ2h0Zm9yd2FyZCB0byBleHBvc2UgYSBjb25maWd1cmF0aW9uIGhhbmRsZSBz aG91bGQgdGhlIG5lZWQgYXJpc2UuCisrICoKKysgKiBWYXJpYWJsZSBuYW1lcyBhdHRlbXB0IHRv IG1hdGNoIHRob3NlIG9mIFNQODAwLTEwOC4KKysgKi8KKysKKysjaW5jbHVkZSA8c3RkYXJnLmg+ CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVk ZSA8b3BlbnNzbC9ldnAuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+CisrI2luY2x1ZGUg PG9wZW5zc2wvY21hYy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2tkZi5oPgorKworKyNpbmNsdWRl ICJpbnRlcm5hbC9jcnlwdGxpYi5oIgorKyNpbmNsdWRlICJpbnRlcm5hbC9ldnBfaW50LmgiCisr I2luY2x1ZGUgImtkZl9sb2NhbC5oIgorKworKyNpbmNsdWRlICJlX29zLmgiCisrCisrI2RlZmlu ZSBNSU4oYSwgYikgKChhKSA8IChiKSkgPyAoYSkgOiAoYikKKysKKyt0eXBlZGVmIHN0cnVjdCB7 CisrICAgIGludCBtYWNfdHlwZTsKKysgICAgdW5pb24geworKyAgICAgICAgSE1BQ19DVFggKmht YWM7CisrICAgICAgICBDTUFDX0NUWCAqY21hYzsKKysgICAgfSBtOworK30gTUFDX0NUWDsKKysK KysvKiBPdXIgY29udGV4dCBzdHJ1Y3R1cmUuICovCisrc3RydWN0IGV2cF9rZGZfaW1wbF9zdCB7 CisrICAgIGludCBtb2RlOworKworKyAgICBNQUNfQ1RYICpjdHhfaW5pdDsKKysKKysgICAgY29u c3QgRVZQX0NJUEhFUiAqY2lwaGVyOworKyAgICBjb25zdCBFVlBfTUQgKm1kOworKworKyAgICAv KiBOYW1lcyBhcmUgbG93ZXJjYXNlZCB2ZXJzaW9ucyBvZiB0aG9zZSBmb3VuZCBpbiBTUDgwMC0x MDguICovCisrICAgIHVuc2lnbmVkIGNoYXIgKmtpOworKyAgICBzaXplX3Qga2lfbGVuOworKyAg ICB1bnNpZ25lZCBjaGFyICpsYWJlbDsKKysgICAgc2l6ZV90IGxhYmVsX2xlbjsKKysgICAgdW5z aWduZWQgY2hhciAqY29udGV4dDsKKysgICAgc2l6ZV90IGNvbnRleHRfbGVuOworKyAgICB1bnNp Z25lZCBjaGFyICppdjsKKysgICAgc2l6ZV90IGl2X2xlbjsKKyt9OworKworK3N0YXRpYyBNQUNf Q1RYICpFVlBfTUFDX0NUWF9uZXcoaW50IG1hY190eXBlKQorK3sKKysgICAgTUFDX0NUWCAqY3R4 OworKworKyAgICBjdHggPSBPUEVOU1NMX3phbGxvYyhzaXplb2YoKmN0eCkpOworKyAgICBpZiAo Y3R4ID09IE5VTEwpCisrICAgICAgICByZXR1cm4gTlVMTDsKKysKKysgICAgY3R4LT5tYWNfdHlw ZSA9IG1hY190eXBlOworKyAgICBpZiAobWFjX3R5cGUgPT0gRVZQX0tERl9LQl9NQUNfVFlQRV9I TUFDKSB7CisrICAgICAgICBpZiAoKGN0eC0+bS5obWFjID0gSE1BQ19DVFhfbmV3KCkpID09IE5V TEwpCisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBpZiAo KGN0eC0+bS5jbWFjID0gQ01BQ19DVFhfbmV3KCkpID09IE5VTEwpCisrICAgICAgICAgICAgZ290 byBlcnI7CisrICAgIH0KKysgICAgcmV0dXJuIGN0eDsKKysKKytlcnI6CisrICAgIE9QRU5TU0xf ZnJlZShjdHgpOworKyAgICByZXR1cm4gTlVMTDsKKyt9CisrCisrc3RhdGljIHZvaWQgRVZQX01B Q19DVFhfZnJlZShNQUNfQ1RYICpjdHgpCisreworKyAgICBpZiAoY3R4ID09IE5VTEwpCisrICAg ICAgICByZXR1cm47CisrCisrICAgIGlmIChjdHgtPm1hY190eXBlID09IEVWUF9LREZfS0JfTUFD X1RZUEVfSE1BQykKKysgICAgICAgIEhNQUNfQ1RYX2ZyZWUoY3R4LT5tLmhtYWMpOworKyAgICBl bHNlCisrICAgICAgICBDTUFDX0NUWF9mcmVlKGN0eC0+bS5jbWFjKTsKKyt9CisrCisrc3RhdGlj IE1BQ19DVFggKkVWUF9NQUNfQ1RYX2R1cChNQUNfQ1RYICpzY3R4KQorK3sKKysgICAgTUFDX0NU WCAqY3R4OworKworKyAgICBjdHggPSBPUEVOU1NMX3phbGxvYyhzaXplb2YoKnNjdHgpKTsKKysg ICAgaWYgKGN0eCA9PSBOVUxMKQorKyAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAgIGN0eC0+ bWFjX3R5cGUgPSBzY3R4LT5tYWNfdHlwZTsKKysgICAgaWYgKHNjdHgtPm1hY190eXBlID09IEVW UF9LREZfS0JfTUFDX1RZUEVfSE1BQykgeworKyAgICAgICAgaWYgKChjdHgtPm0uaG1hYyA9IEhN QUNfQ1RYX25ldygpKSA9PSBOVUxMCisrICAgICAgICAgICAgfHwgSE1BQ19DVFhfY29weShjdHgt Pm0uaG1hYywgc2N0eC0+bS5obWFjKSA8PSAwKQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAg ICB9IGVsc2UgeworKyAgICAgICAgaWYgKChjdHgtPm0uY21hYyA9IENNQUNfQ1RYX25ldygpKSA9 PSBOVUxMCisrICAgICAgICAgICAgfHwgQ01BQ19DVFhfY29weShjdHgtPm0uY21hYywgc2N0eC0+ bS5jbWFjKSA8PSAwKQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrICAgIHJldHVy biBjdHg7CisrCisrZXJyOgorKyAgICBFVlBfTUFDX0NUWF9mcmVlKGN0eCk7CisrICAgIHJldHVy biBOVUxMOworK30KKysKKytzdGF0aWMgc2l6ZV90IEVWUF9NQUNfc2l6ZShNQUNfQ1RYICpjdHgp CisreworKyAgICBpZiAoY3R4LT5tYWNfdHlwZSA9PSBFVlBfS0RGX0tCX01BQ19UWVBFX0hNQUMp IHsKKysgICAgICAgIGNvbnN0IEVWUF9NRCAqbWQ7CisrCisrICAgICAgICBpZiAoY3R4LT5tLmht YWMgPT0gTlVMTCkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGlmICgobWQgPSBI TUFDX0NUWF9nZXRfbWQoY3R4LT5tLmhtYWMpKSA9PSBOVUxMKQorKyAgICAgICAgICAgIHJldHVy biAwOworKyAgICAgICAgcmV0dXJuIChzaXplX3QpRVZQX01EX3NpemUobWQpOworKyAgICB9IGVs c2UgeworKyAgICAgICAgY29uc3QgRVZQX0NJUEhFUl9DVFggKmNjdHg7CisrCisrICAgICAgICBp ZiAoY3R4LT5tLmNtYWMgPT0gTlVMTCkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAg IGlmICgoY2N0eCA9IENNQUNfQ1RYX2dldDBfY2lwaGVyX2N0eChjdHgtPm0uY21hYykpID09IE5V TEwpCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICByZXR1cm4gRVZQX0NJUEhFUl9D VFhfYmxvY2tfc2l6ZShjY3R4KTsKKysgICAgfQorK30KKysKKytzdGF0aWMgaW50IEVWUF9NQUNf dXBkYXRlKE1BQ19DVFggKmN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVfdCBkYXRhbGVuKQorK3sKKysgICAgaWYgKGN0eC0+bWFj X3R5cGUgPT0gRVZQX0tERl9LQl9NQUNfVFlQRV9ITUFDKQorKyAgICAgICAgcmV0dXJuIEhNQUNf VXBkYXRlKGN0eC0+bS5obWFjLCBkYXRhLCBkYXRhbGVuKTsKKysgICAgZWxzZQorKyAgICAgICAg cmV0dXJuIENNQUNfVXBkYXRlKGN0eC0+bS5jbWFjLCBkYXRhLCBkYXRhbGVuKTsKKyt9CisrCisr c3RhdGljIGludCBFVlBfTUFDX2ZpbmFsKE1BQ19DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dGwsIHNpemVfdCBvdXRzaXpl KQorK3sKKysgICAgaWYgKG91dHNpemUgIT0gRVZQX01BQ19zaXplKGN0eCkpCisrICAgICAgICAv KiB3ZSBkbyBub3QgY29wZSB3aXRoIGFueXRoaW5nIGVsc2UgKi8KKysgICAgICAgIHJldHVybiAw OworKworKyAgICBpZiAoY3R4LT5tYWNfdHlwZSA9PSBFVlBfS0RGX0tCX01BQ19UWVBFX0hNQUMp IHsKKysgICAgICAgIHVuc2lnbmVkIGludCBpbnRzaXplID0gKHVuc2lnbmVkIGludClvdXRzaXpl OworKyAgICAgICAgaW50IHJldDsKKysKKysgICAgICAgIHJldCA9IEhNQUNfRmluYWwoY3R4LT5t LmhtYWMsIG91dCwgJmludHNpemUpOworKyAgICAgICAgaWYgKG91dGwgIT0gTlVMTCkKKysgICAg ICAgICAgICAqb3V0bCA9IGludHNpemU7CisrICAgICAgICByZXR1cm4gcmV0OworKyAgICB9IGVs c2UgeworKyAgICAgICAgc2l6ZV90IHNpemUgPSBvdXRzaXplOworKyAgICAgICAgaW50IHJldDsK KysKKysgICAgICAgIHJldCA9IENNQUNfRmluYWwoY3R4LT5tLmNtYWMsIG91dCwgJnNpemUpOwor KyAgICAgICAgaWYgKG91dGwgIT0gTlVMTCkKKysgICAgICAgICAgICAqb3V0bCA9IHNpemU7Cisr ICAgICAgICByZXR1cm4gcmV0OworKyAgICB9CisrfQorKworK3N0YXRpYyBpbnQgZXZwX21hY19p bml0KE1BQ19DVFggKmN0eCwgY29uc3QgRVZQX01EICptZCwKKysgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBFVlBfQ0lQSEVSICpjaXBoZXIsIHVuc2lnbmVkIGNoYXIgKmtleSwgc2l6ZV90 IGtleWxlbikKKyt7CisrICAgIGlmIChjdHgtPm1hY190eXBlID09IEVWUF9LREZfS0JfTUFDX1RZ UEVfSE1BQykgeworKyAgICAgICAgaWYgKG1kID09IE5VTEwpCisrICAgICAgICAgICAgcmV0dXJu IDA7CisrICAgICAgICByZXR1cm4gSE1BQ19Jbml0X2V4KGN0eC0+bS5obWFjLCBrZXksIChpbnQp a2V5bGVuLCBtZCwgTlVMTCk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBpZiAoY2lwaGVyID09 IE5VTEwpCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICByZXR1cm4gQ01BQ19Jbml0 KGN0eC0+bS5jbWFjLCBrZXksIGtleWxlbiwgY2lwaGVyLCBOVUxMKTsKKysgICAgfQorK30KKysK KytzdGF0aWMgdm9pZCBrYmtkZl9yZXNldChFVlBfS0RGX0lNUEwgKmN0eCk7CisrCisrLyogTm90 IGFsbCBwbGF0Zm9ybXMgaGF2ZSBodG9iZTMyKCkuICovCisrc3RhdGljIHVpbnQzMl90IGJlMzIo dWludDMyX3QgaG9zdCkKKyt7CisrICAgIHVpbnQzMl90IGJpZyA9IDA7CisrICAgIGNvbnN0IHVu aW9uIHsKKysgICAgICAgIGxvbmcgb25lOworKyAgICAgICAgY2hhciBsaXR0bGU7CisrICAgIH0g aXNfZW5kaWFuID0geyAxIH07CisrCisrICAgIGlmICghaXNfZW5kaWFuLmxpdHRsZSkKKysgICAg ICAgIHJldHVybiBob3N0OworKworKyAgICBiaWcgfD0gKGhvc3QgJiAweGZmMDAwMDAwKSA+PiAy NDsKKysgICAgYmlnIHw9IChob3N0ICYgMHgwMGZmMDAwMCkgPj4gODsKKysgICAgYmlnIHw9ICho b3N0ICYgMHgwMDAwZmYwMCkgPDwgODsKKysgICAgYmlnIHw9IChob3N0ICYgMHgwMDAwMDBmZikg PDwgMjQ7CisrICAgIHJldHVybiBiaWc7CisrfQorKworK3N0YXRpYyBFVlBfS0RGX0lNUEwgKmti a2RmX25ldyh2b2lkKQorK3sKKysgICAgRVZQX0tERl9JTVBMICpjdHg7CisrCisrICAgIGN0eCA9 IE9QRU5TU0xfemFsbG9jKHNpemVvZigqY3R4KSk7CisrICAgIGlmIChjdHggPT0gTlVMTCkgewor KyAgICAgICAgS0RGZXJyKEtERl9GX0tCS0RGX05FVywgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOwor KyAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysKKysgICAgcmV0dXJuIGN0eDsKKyt9Cisr Cisrc3RhdGljIHZvaWQga2JrZGZfZnJlZShFVlBfS0RGX0lNUEwgKmN0eCkKKyt7CisrICAgIGti a2RmX3Jlc2V0KGN0eCk7CisrICAgIE9QRU5TU0xfZnJlZShjdHgpOworK30KKysKKytzdGF0aWMg dm9pZCBrYmtkZl9yZXNldChFVlBfS0RGX0lNUEwgKmN0eCkKKyt7CisrICAgIEVWUF9NQUNfQ1RY X2ZyZWUoY3R4LT5jdHhfaW5pdCk7CisrICAgIE9QRU5TU0xfY2xlYXJfZnJlZShjdHgtPmNvbnRl eHQsIGN0eC0+Y29udGV4dF9sZW4pOworKyAgICBPUEVOU1NMX2NsZWFyX2ZyZWUoY3R4LT5sYWJl bCwgY3R4LT5sYWJlbF9sZW4pOworKyAgICBPUEVOU1NMX2NsZWFyX2ZyZWUoY3R4LT5raSwgY3R4 LT5raV9sZW4pOworKyAgICBPUEVOU1NMX2NsZWFyX2ZyZWUoY3R4LT5pdiwgY3R4LT5pdl9sZW4p OworKyAgICBtZW1zZXQoY3R4LCAwLCBzaXplb2YoKmN0eCkpOworK30KKysKKysvKiBTUDgwMC0x MDggc2VjdGlvbiA1LjEgb3Igc2VjdGlvbiA1LjIgZGVwZW5kaW5nIG9uIG1vZGUuICovCisrc3Rh dGljIGludCBkZXJpdmUoTUFDX0NUWCAqY3R4X2luaXQsIGludCBtb2RlLCB1bnNpZ25lZCBjaGFy ICppdiwKKysgICAgICAgICAgICAgICAgICBzaXplX3QgaXZfbGVuLCB1bnNpZ25lZCBjaGFyICps YWJlbCwgc2l6ZV90IGxhYmVsX2xlbiwKKysgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy ICpjb250ZXh0LCBzaXplX3QgY29udGV4dF9sZW4sCisrICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgY2hhciAqa19pLCBzaXplX3QgaCwgdWludDMyX3QgbCwgdW5zaWduZWQgY2hhciAqa28sCisr ICAgICAgICAgICAgICAgICAgc2l6ZV90IGtvX2xlbikKKyt7CisrICAgIGludCByZXQgPSAwOwor KyAgICBNQUNfQ1RYICpjdHggPSBOVUxMOworKyAgICBzaXplX3Qgd3JpdHRlbiA9IDAsIHRvX3dy aXRlLCBrX2lfbGVuID0gaXZfbGVuOworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIHplcm8gPSAw OworKyAgICB1aW50MzJfdCBjb3VudGVyLCBpOworKworKyAgICAvKiBTZXR1cCBLKDApIGZvciBm ZWVkYmFjayBtb2RlLiAqLworKyAgICBpZiAoaXZfbGVuID4gMCkKKysgICAgICAgIG1lbWNweShr X2ksIGl2LCBpdl9sZW4pOworKworKyAgICBmb3IgKGNvdW50ZXIgPSAxOyB3cml0dGVuIDwga29f bGVuOyBjb3VudGVyKyspIHsKKysgICAgICAgIGkgPSBiZTMyKGNvdW50ZXIpOworKworKyAgICAg ICAgY3R4ID0gRVZQX01BQ19DVFhfZHVwKGN0eF9pbml0KTsKKysgICAgICAgIGlmIChjdHggPT0g TlVMTCkKKysgICAgICAgICAgICBnb3RvIGRvbmU7CisrCisrICAgICAgICAvKiBQZXJmb3JtIGZl ZWRiYWNrLCBpZiBhcHByb3ByaWF0ZS4gKi8KKysgICAgICAgIGlmIChtb2RlID09IEVWUF9LREZf S0JfTU9ERV9GRUVEQkFDSyAmJiAhRVZQX01BQ191cGRhdGUoY3R4LCBrX2ksIGtfaV9sZW4pKQor KyAgICAgICAgICAgIGdvdG8gZG9uZTsKKysKKysgICAgICAgIGlmICghRVZQX01BQ191cGRhdGUo Y3R4LCAodW5zaWduZWQgY2hhciAqKSZpLCA0KQorKyAgICAgICAgICAgIHx8ICFFVlBfTUFDX3Vw ZGF0ZShjdHgsIGxhYmVsLCBsYWJlbF9sZW4pCisrICAgICAgICAgICAgfHwgIUVWUF9NQUNfdXBk YXRlKGN0eCwgJnplcm8sIDEpCisrICAgICAgICAgICAgfHwgIUVWUF9NQUNfdXBkYXRlKGN0eCwg Y29udGV4dCwgY29udGV4dF9sZW4pCisrICAgICAgICAgICAgfHwgIUVWUF9NQUNfdXBkYXRlKGN0 eCwgKHVuc2lnbmVkIGNoYXIgKikmbCwgNCkKKysgICAgICAgICAgICB8fCAhRVZQX01BQ19maW5h bChjdHgsIGtfaSwgTlVMTCwgaCkpCisrICAgICAgICAgICAgZ290byBkb25lOworKworKyAgICAg ICAgdG9fd3JpdGUgPSBrb19sZW4gLSB3cml0dGVuOworKyAgICAgICAgbWVtY3B5KGtvICsgd3Jp dHRlbiwga19pLCBNSU4odG9fd3JpdGUsIGgpKTsKKysgICAgICAgIHdyaXR0ZW4gKz0gaDsKKysK KysgICAgICAgIGtfaV9sZW4gPSBoOworKyAgICAgICAgRVZQX01BQ19DVFhfZnJlZShjdHgpOwor KyAgICAgICAgY3R4ID0gTlVMTDsKKysgICAgfQorKworKyAgICByZXQgPSAxOworK2RvbmU6Cisr ICAgIEVWUF9NQUNfQ1RYX2ZyZWUoY3R4KTsKKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrc3Rh dGljIGludCBrYmtkZl9kZXJpdmUoRVZQX0tERl9JTVBMICpjdHgsIHVuc2lnbmVkIGNoYXIgKmtl eSwgc2l6ZV90IGtleWxlbikKKyt7CisrICAgIGludCByZXQgPSAwOworKyAgICB1bnNpZ25lZCBj aGFyICprX2kgPSBOVUxMOworKyAgICB1aW50MzJfdCBsID0gYmUzMihrZXlsZW4gKiA4KTsKKysg ICAgc2l6ZV90IGggPSAwOworKworKyAgICAvKiBsYWJlbCwgY29udGV4dCwgYW5kIGl2IGFyZSBw ZXJtaXR0ZWQgdG8gYmUgZW1wdHkuICBDaGVjayBldmVyeXRoaW5nCisrICAgICAqIGVsc2UuICov CisrICAgIGlmIChjdHgtPmN0eF9pbml0ID09IE5VTEwKKysgICAgICAgIHx8IGV2cF9tYWNfaW5p dChjdHgtPmN0eF9pbml0LCBjdHgtPm1kLCBjdHgtPmNpcGhlciwgY3R4LT5raSwgY3R4LT5raV9s ZW4pIDw9IDApIHsKKysgICAgICAgIGlmIChjdHgtPmtpX2xlbiA9PSAwIHx8IGN0eC0+a2kgPT0g TlVMTCkgeworKyAgICAgICAgICAgIEtERmVycihLREZfRl9LQktERl9ERVJJVkUsIEtERl9SX01J U1NJTkdfS0VZKTsKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIH0KKysgICAgICAg IC8qIENvdWxkIGVpdGhlciBiZSBtaXNzaW5nIE1BQyBvciBtaXNzaW5nIG1lc3NhZ2UgZGlnZXN0 IG9yIG1pc3NpbmcKKysgICAgICAgICAqIGNpcGhlciAtIGFyYml0cmFyaWx5LCBJIHBpY2sgdGhp cyBvbmUuICovCisrICAgICAgICBLREZlcnIoS0RGX0ZfS0JLREZfREVSSVZFLCBLREZfUl9NSVNT SU5HX1BBUkFNRVRFUik7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICBoID0g RVZQX01BQ19zaXplKGN0eC0+Y3R4X2luaXQpOworKyAgICBpZiAoaCA9PSAwKQorKyAgICAgICAg Z290byBkb25lOworKyAgICBpZiAoY3R4LT5pdl9sZW4gIT0gMCAmJiBjdHgtPml2X2xlbiAhPSBo KSB7CisrICAgICAgICBLREZlcnIoS0RGX0ZfS0JLREZfREVSSVZFLCBLREZfUl9JTlZBTElEX1NF RURfTEVOR1RIKTsKKysgICAgICAgIGdvdG8gZG9uZTsKKysgICAgfQorKworKyAgICBrX2kgPSBP UEVOU1NMX3phbGxvYyhoKTsKKysgICAgaWYgKGtfaSA9PSBOVUxMKQorKyAgICAgICAgZ290byBk b25lOworKworKyAgICByZXQgPSBkZXJpdmUoY3R4LT5jdHhfaW5pdCwgY3R4LT5tb2RlLCBjdHgt Pml2LCBjdHgtPml2X2xlbiwgY3R4LT5sYWJlbCwKKysgICAgICAgICAgICAgICAgIGN0eC0+bGFi ZWxfbGVuLCBjdHgtPmNvbnRleHQsIGN0eC0+Y29udGV4dF9sZW4sIGtfaSwgaCwgbCwKKysgICAg ICAgICAgICAgICAgIGtleSwga2V5bGVuKTsKKytkb25lOgorKyAgICBpZiAocmV0ICE9IDEpCisr ICAgICAgICBPUEVOU1NMX2NsZWFuc2Uoa2V5LCBrZXlsZW4pOworKyAgICBPUEVOU1NMX2NsZWFy X2ZyZWUoa19pLCBoKTsKKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIHNpemVfdCBr YmtkZl9zaXplKEVWUF9LREZfSU1QTCAqY3R4KQorK3sKKysgICAgcmV0dXJuIFVJTlQzMl9NQVgv ODsKKyt9CisrCisrc3RhdGljIGludCBrYmtkZl9wYXJzZV9idWZmZXJfYXJnKHVuc2lnbmVkIGNo YXIgKipkc3QsIHNpemVfdCAqZHN0X2xlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2YV9saXN0IGFyZ3MpCisreworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpw OworKyAgICBzaXplX3QgbGVuOworKworKyAgICBwID0gdmFfYXJnKGFyZ3MsIGNvbnN0IHVuc2ln bmVkIGNoYXIgKik7CisrICAgIGxlbiA9IHZhX2FyZyhhcmdzLCBzaXplX3QpOworKyAgICBPUEVO U1NMX2NsZWFyX2ZyZWUoKmRzdCwgKmRzdF9sZW4pOworKyAgICAqZHN0ID0gT1BFTlNTTF9tZW1k dXAocCwgbGVuKTsKKysgICAgaWYgKCpkc3QgPT0gTlVMTCkKKysgICAgICAgIHJldHVybiAwOwor KworKyAgICAqZHN0X2xlbiA9IGxlbjsKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBp bnQga2JrZGZfY3RybChFVlBfS0RGX0lNUEwgKmN0eCwgaW50IGNtZCwgdmFfbGlzdCBhcmdzKQor K3sKKysgICAgaW50IHQ7CisrCisrICAgIHN3aXRjaCAoY21kKSB7CisrICAgIGNhc2UgRVZQX0tE Rl9DVFJMX1NFVF9NRDoKKysgICAgICAgIGN0eC0+bWQgPSB2YV9hcmcoYXJncywgY29uc3QgRVZQ X01EICopOworKyAgICAgICAgaWYgKGN0eC0+bWQgPT0gTlVMTCkKKysgICAgICAgICAgICByZXR1 cm4gMDsKKysKKysgICAgICAgIHJldHVybiAxOworKworKyAgICBjYXNlIEVWUF9LREZfQ1RSTF9T RVRfQ0lQSEVSOgorKyAgICAgICAgY3R4LT5jaXBoZXIgPSB2YV9hcmcoYXJncywgY29uc3QgRVZQ X0NJUEhFUiAqKTsKKysgICAgICAgIGlmIChjdHgtPmNpcGhlciA9PSBOVUxMKQorKyAgICAgICAg ICAgIHJldHVybiAwOworKworKyAgICAgICAgcmV0dXJuIDE7CisrCisrICAgIGNhc2UgRVZQX0tE Rl9DVFJMX1NFVF9LRVk6CisrICAgICAgICByZXR1cm4ga2JrZGZfcGFyc2VfYnVmZmVyX2FyZygm Y3R4LT5raSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdHgtPmtp X2xlbiwgYXJncyk7CisrCisrICAgIGNhc2UgRVZQX0tERl9DVFJMX1NFVF9TQUxUOgorKyAgICAg ICAgcmV0dXJuIGtia2RmX3BhcnNlX2J1ZmZlcl9hcmcoJmN0eC0+bGFiZWwsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdHgtPmxhYmVsX2xlbiwgYXJncyk7 CisrCisrICAgIGNhc2UgRVZQX0tERl9DVFJMX1NFVF9LQl9JTkZPOgorKyAgICAgICAgcmV0dXJu IGtia2RmX3BhcnNlX2J1ZmZlcl9hcmcoJmN0eC0+Y29udGV4dCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN0eC0+Y29udGV4dF9sZW4sIGFyZ3MpOworKwor KyAgICBjYXNlIEVWUF9LREZfQ1RSTF9TRVRfS0JfU0VFRDoKKysgICAgICAgIHJldHVybiBrYmtk Zl9wYXJzZV9idWZmZXJfYXJnKCZjdHgtPml2LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmY3R4LT5pdl9sZW4sIGFyZ3MpOworKworKyAgICBjYXNlIEVWUF9L REZfQ1RSTF9TRVRfS0JfTU9ERToKKysgICAgICAgIHQgPSB2YV9hcmcoYXJncywgaW50KTsKKysg ICAgICAgIGlmICh0ICE9IEVWUF9LREZfS0JfTU9ERV9DT1VOVEVSICYmIHQgIT0gRVZQX0tERl9L Ql9NT0RFX0ZFRURCQUNLICkgeworKyAgICAgICAgICAgIEtERmVycihLREZfRl9LQktERl9DVFJM LCBLREZfUl9WQUxVRV9FUlJPUik7CisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICB9 CisrICAgICAgICBjdHgtPm1vZGUgPSB0OworKyAgICAgICAgcmV0dXJuIDE7CisrCisrICAgIGNh c2UgRVZQX0tERl9DVFJMX1NFVF9LQl9NQUNfVFlQRToKKysgICAgICAgIHQgPSB2YV9hcmcoYXJn cywgaW50KTsKKysgICAgICAgIGlmICh0ICE9IEVWUF9LREZfS0JfTUFDX1RZUEVfSE1BQyAmJiB0 ICE9IEVWUF9LREZfS0JfTUFDX1RZUEVfQ01BQyApIHsKKysgICAgICAgICAgICBLREZlcnIoS0RG X0ZfS0JLREZfQ1RSTCwgS0RGX1JfVkFMVUVfRVJST1IpOworKyAgICAgICAgICAgIHJldHVybiAw OworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKGN0eC0+Y3R4X2luaXQgIT0gTlVMTCkgewor KyAgICAgICAgICAgIEVWUF9NQUNfQ1RYX2ZyZWUoY3R4LT5jdHhfaW5pdCk7CisrICAgICAgICB9 CisrICAgICAgICBjdHgtPmN0eF9pbml0ID0gRVZQX01BQ19DVFhfbmV3KHQpOworKyAgICAgICAg aWYgKGN0eC0+Y3R4X2luaXQgPT0gTlVMTCkgeworKyAgICAgICAgICAgIEtERmVycihLREZfRl9L QktERl9DVFJMLCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisrICAgICAgICAgICAgcmV0dXJuIDA7 CisrICAgICAgICB9CisrICAgICAgICByZXR1cm4gMTsKKysKKysgICAgZGVmYXVsdDoKKysgICAg ICAgIHJldHVybiAtMjsKKysKKysgICAgfQorK30KKysKKytzdGF0aWMgaW50IGtia2RmX2N0cmxf c3RyKEVWUF9LREZfSU1QTCAqY3R4LCBjb25zdCBjaGFyICp0eXBlLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YWx1ZSkKKyt7CisrICAgIGlmICh2YWx1ZSA9 PSBOVUxMKSB7CisrICAgICAgICBLREZlcnIoS0RGX0ZfS0RGX1NTSEtERl9DVFJMX1NUUiwgS0RG X1JfVkFMVUVfTUlTU0lORyk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICBp ZiAoc3RyY21wKHR5cGUsICJkaWdlc3QiKSA9PSAwKQorKyAgICAgICAgcmV0dXJuIGtkZl9tZDJj dHJsKGN0eCwga2JrZGZfY3RybCwgRVZQX0tERl9DVFJMX1NFVF9NRCwgdmFsdWUpOworKyAgICAv KiBhbGlhcywgZm9yIGhpc3RvcmljYWwgcmVhc29ucyAqLworKyAgICBpZiAoc3RyY21wKHR5cGUs ICJtZCIpID09IDApCisrICAgICAgICByZXR1cm4ga2RmX21kMmN0cmwoY3R4LCBrYmtkZl9jdHJs LCBFVlBfS0RGX0NUUkxfU0VUX01ELCB2YWx1ZSk7CisrCisrICAgIGlmIChzdHJjbXAodHlwZSwg ImNpcGhlciIpID09IDApCisrICAgICAgICByZXR1cm4ga2RmX2NpcGhlcjJjdHJsKGN0eCwga2Jr ZGZfY3RybCwgRVZQX0tERl9DVFJMX1NFVF9DSVBIRVIsIHZhbHVlKTsKKysKKysgICAgaWYgKHN0 cmNtcCh0eXBlLCAia2V5IikgPT0gMCkKKysgICAgICAgIHJldHVybiBrZGZfc3RyMmN0cmwoY3R4 LCBrYmtkZl9jdHJsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfS0RGX0NUUkxf U0VUX0tFWSwgdmFsdWUpOworKworKyAgICBpZiAoc3RyY21wKHR5cGUsICJoZXhrZXkiKSA9PSAw KQorKyAgICAgICAgcmV0dXJuIGtkZl9oZXgyY3RybChjdHgsIGtia2RmX2N0cmwsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVWUF9LREZfQ1RSTF9TRVRfS0VZLCB2YWx1ZSk7CisrCisr ICAgIGlmIChzdHJjbXAodHlwZSwgInNhbHQiKSA9PSAwKQorKyAgICAgICAgcmV0dXJuIGtkZl9z dHIyY3RybChjdHgsIGtia2RmX2N0cmwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVW UF9LREZfQ1RSTF9TRVRfU0FMVCwgdmFsdWUpOworKworKyAgICBpZiAoc3RyY21wKHR5cGUsICJo ZXhzYWx0IikgPT0gMCkKKysgICAgICAgIHJldHVybiBrZGZfaGV4MmN0cmwoY3R4LCBrYmtkZl9j dHJsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfS0RGX0NUUkxfU0VUX1NBTFQs IHZhbHVlKTsKKysKKysgICAgaWYgKHN0cmNtcCh0eXBlLCAiaW5mbyIpID09IDApCisrICAgICAg ICByZXR1cm4ga2RmX3N0cjJjdHJsKGN0eCwga2JrZGZfY3RybCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRVZQX0tERl9DVFJMX1NFVF9LQl9JTkZPLCB2YWx1ZSk7CisrCisrICAgIGlm IChzdHJjbXAodHlwZSwgImhleGluZm8iKSA9PSAwKQorKyAgICAgICAgcmV0dXJuIGtkZl9oZXgy Y3RybChjdHgsIGtia2RmX2N0cmwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9L REZfQ1RSTF9TRVRfS0JfSU5GTywgdmFsdWUpOworKworKyAgICBpZiAoc3RyY21wKHR5cGUsICJz ZWVkIikgPT0gMCkKKysgICAgICAgIHJldHVybiBrZGZfc3RyMmN0cmwoY3R4LCBrYmtkZl9jdHJs LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfS0RGX0NUUkxfU0VUX0tCX1NFRUQs IHZhbHVlKTsKKysKKysgICAgaWYgKHN0cmNtcCh0eXBlLCAiaGV4c2VlZCIpID09IDApCisrICAg ICAgICByZXR1cm4ga2RmX2hleDJjdHJsKGN0eCwga2JrZGZfY3RybCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRVZQX0tERl9DVFJMX1NFVF9LQl9TRUVELCB2YWx1ZSk7CisrCisrICAg IGlmIChzdHJjbXAodHlwZSwgIm1vZGUiKSA9PSAwKSB7CisrICAgICAgICBpbnQgbW9kZTsKKysK KysgICAgICAgIGlmIChzdHJjYXNlY21wKHZhbHVlLCAiY291bnRlciIpID09IDApIHsKKysgICAg ICAgICAgICBtb2RlID0gRVZQX0tERl9LQl9NT0RFX0NPVU5URVI7CisrICAgICAgICB9IGVsc2Ug aWYgKHN0cmNhc2VjbXAodmFsdWUsICJmZWVkYmFjayIpID09IDApIHsKKysgICAgICAgICAgICBt b2RlID0gRVZQX0tERl9LQl9NT0RFX0ZFRURCQUNLOworKyAgICAgICAgfSBlbHNlIHsKKysgICAg ICAgICAgICBLREZlcnIoS0RGX0ZfS0JLREZfQ1RSTF9TVFIsIEtERl9SX1ZBTFVFX0VSUk9SKTsK KysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIH0KKysKKysgICAgICAgIHJldHVybiBj YWxsX2N0cmwoa2JrZGZfY3RybCwgY3R4LCBFVlBfS0RGX0NUUkxfU0VUX0tCX01PREUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgIG1vZGUpOworKyAgICB9CisrCisrICAgIGlmIChzdHJjbXAo dHlwZSwgIm1hY190eXBlIikgPT0gMCkgeworKyAgICAgICAgaW50IG1hY190eXBlOworKworKyAg ICAgICAgaWYgKHN0cmNhc2VjbXAodmFsdWUsICJobWFjIikgPT0gMCkgeworKyAgICAgICAgICAg IG1hY190eXBlID0gRVZQX0tERl9LQl9NQUNfVFlQRV9ITUFDOworKyAgICAgICAgfSBlbHNlIGlm IChzdHJjYXNlY21wKHZhbHVlLCAiY21hYyIpID09IDApIHsKKysgICAgICAgICAgICBtYWNfdHlw ZSA9IEVWUF9LREZfS0JfTUFDX1RZUEVfQ01BQzsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAg ICAgICAgS0RGZXJyKEtERl9GX0tCS0RGX0NUUkxfU1RSLCBLREZfUl9WQUxVRV9FUlJPUik7Cisr ICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICB9CisrCisrICAgICAgICByZXR1cm4gY2Fs bF9jdHJsKGtia2RmX2N0cmwsIGN0eCwgRVZQX0tERl9DVFJMX1NFVF9LQl9NQUNfVFlQRSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgbWFjX3R5cGUpOworKyAgICB9CisrCisrICAgIEtERmVy cihLREZfRl9LQktERl9DVFJMX1NUUiwgS0RGX1JfVU5LTk9XTl9QQVJBTUVURVJfVFlQRSk7Cisr ICAgIHJldHVybiAtMjsKKyt9CisrCisrCisrY29uc3QgRVZQX0tERl9NRVRIT0Qga2Jfa2RmX21l dGggPSB7CisrICAgIEVWUF9LREZfS0IsCisrICAgIGtia2RmX25ldywKKysgICAga2JrZGZfZnJl ZSwKKysgICAga2JrZGZfcmVzZXQsCisrICAgIGtia2RmX2N0cmwsCisrICAgIGtia2RmX2N0cmxf c3RyLAorKyAgICBrYmtkZl9zaXplLAorKyAgICBrYmtkZl9kZXJpdmUsCisrfTsKKysKK2RpZmYg LXVwIG9wZW5zc2wtMS4xLjFkL2NyeXB0by9rZGYva2RmX2Vyci5jLmtyYjUta2RmIG9wZW5zc2wt MS4xLjFkL2NyeXB0by9rZGYva2RmX2Vyci5jCistLS0gb3BlbnNzbC0xLjEuMWQvY3J5cHRvL2tk Zi9rZGZfZXJyLmMua3JiNS1rZGYJMjAxOS0xMS0xMiAxMzozMDozNi4yNjI3NDg5NTUgKzAxMDAK KysrKyBvcGVuc3NsLTEuMS4xZC9jcnlwdG8va2RmL2tkZl9lcnIuYwkyMDE5LTExLTEyIDEzOjMw OjM2LjI4NDc0ODU1OSArMDEwMAorQEAgLTE1LDYgKzE1LDExIEBACisgCisgc3RhdGljIGNvbnN0 IEVSUl9TVFJJTkdfREFUQSBLREZfc3RyX2Z1bmN0c1tdID0geworICAgICB7RVJSX1BBQ0soRVJS X0xJQl9LREYsIEtERl9GX0hLREZfRVhUUkFDVCwgMCksICJIS0RGX0V4dHJhY3QifSwKKysgICAg e0VSUl9QQUNLKEVSUl9MSUJfS0RGLCBLREZfRl9LQktERl9DVFJMLCAwKSwgImtia2RmX2N0cmwi fSwKKysgICAge0VSUl9QQUNLKEVSUl9MSUJfS0RGLCBLREZfRl9LQktERl9DVFJMX1NUUiwgMCks ICJrYmtkZl9jdHJsX3N0ciJ9LAorKyAgICB7RVJSX1BBQ0soRVJSX0xJQl9LREYsIEtERl9GX0tC S0RGX0RFUklWRSwgMCksICJrYmtkZl9kZXJpdmUifSwKKysgICAge0VSUl9QQUNLKEVSUl9MSUJf S0RGLCBLREZfRl9LQktERl9ORVcsIDApLCAia2JrZGZfbmV3In0sCisrICAgIHtFUlJfUEFDSyhF UlJfTElCX0tERiwgS0RGX0ZfS0RGX0NJUEhFUjJDVFJMLCAwKSwgImtkZl9jaXBoZXIyY3RybCJ9 LAorICAgICB7RVJSX1BBQ0soRVJSX0xJQl9LREYsIEtERl9GX0tERl9IS0RGX0RFUklWRSwgMCks ICJrZGZfaGtkZl9kZXJpdmUifSwKKyAgICAge0VSUl9QQUNLKEVSUl9MSUJfS0RGLCBLREZfRl9L REZfSEtERl9ORVcsIDApLCAia2RmX2hrZGZfbmV3In0sCisgICAgIHtFUlJfUEFDSyhFUlJfTElC X0tERiwgS0RGX0ZfS0RGX0hLREZfU0laRSwgMCksICJrZGZfaGtkZl9zaXplIn0sCitAQCAtNjQs NyArNjksOSBAQCBzdGF0aWMgY29uc3QgRVJSX1NUUklOR19EQVRBIEtERl9zdHJfZnVuCisgfTsK KyAKKyBzdGF0aWMgY29uc3QgRVJSX1NUUklOR19EQVRBIEtERl9zdHJfcmVhc29uc1tdID0gewor KyAgICB7RVJSX1BBQ0soRVJSX0xJQl9LREYsIDAsIEtERl9SX0lOVkFMSURfQ0lQSEVSKSwgImlu dmFsaWQgY2lwaGVyIn0sCisgICAgIHtFUlJfUEFDSyhFUlJfTElCX0tERiwgMCwgS0RGX1JfSU5W QUxJRF9ESUdFU1QpLCAiaW52YWxpZCBkaWdlc3QifSwKKysgICAge0VSUl9QQUNLKEVSUl9MSUJf S0RGLCAwLCBLREZfUl9JTlZBTElEX1NFRURfTEVOR1RIKSwgImludmFsaWQgc2VlZCBsZW5ndGgi fSwKKyAgICAge0VSUl9QQUNLKEVSUl9MSUJfS0RGLCAwLCBLREZfUl9NSVNTSU5HX0lURVJBVElP Tl9DT1VOVCksCisgICAgICJtaXNzaW5nIGl0ZXJhdGlvbiBjb3VudCJ9LAorICAgICB7RVJSX1BB Q0soRVJSX0xJQl9LREYsIDAsIEtERl9SX01JU1NJTkdfS0VZKSwgIm1pc3Npbmcga2V5In0sCitk aWZmIC11cCBvcGVuc3NsLTEuMS4xZC9jcnlwdG8va2RmL2tkZl9sb2NhbC5oLmtyYjUta2RmIG9w ZW5zc2wtMS4xLjFkL2NyeXB0by9rZGYva2RmX2xvY2FsLmgKKy0tLSBvcGVuc3NsLTEuMS4xZC9j cnlwdG8va2RmL2tkZl9sb2NhbC5oLmtyYjUta2RmCTIwMTktMTEtMTIgMTM6MzA6MzYuMjUzNzQ5 MTE3ICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWQvY3J5cHRvL2tkZi9rZGZfbG9jYWwuaAkyMDE5 LTExLTEyIDEzOjMwOjM2LjI4NDc0ODU1OSArMDEwMAorQEAgLTE5LDQgKzE5LDYgQEAgaW50IGtk Zl9oZXgyY3RybChFVlBfS0RGX0lNUEwgKmltcGwsCisgaW50IGtkZl9tZDJjdHJsKEVWUF9LREZf SU1QTCAqaW1wbCwKKyAgICAgICAgICAgICAgICAgaW50ICgqY3RybCkoRVZQX0tERl9JTVBMICpp bXBsLCBpbnQgY21kLCB2YV9saXN0IGFyZ3MpLAorICAgICAgICAgICAgICAgICBpbnQgY21kLCBj b25zdCBjaGFyICptZF9uYW1lKTsKKy0KKytpbnQga2RmX2NpcGhlcjJjdHJsKEVWUF9LREZfSU1Q TCAqaW1wbCwKKysgICAgICAgICAgICAgICAgICAgIGludCAoKmN0cmwpKEVWUF9LREZfSU1QTCAq aW1wbCwgaW50IGNtZCwgdmFfbGlzdCBhcmdzKSwKKysgICAgICAgICAgICAgICAgICAgIGludCBj bWQsIGNvbnN0IGNoYXIgKmNpcGhlcl9uYW1lKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFkL2Ny eXB0by9rZGYva2RmX3V0aWwuYy5rcmI1LWtkZiBvcGVuc3NsLTEuMS4xZC9jcnlwdG8va2RmL2tk Zl91dGlsLmMKKy0tLSBvcGVuc3NsLTEuMS4xZC9jcnlwdG8va2RmL2tkZl91dGlsLmMua3JiNS1r ZGYJMjAxOS0xMS0xMiAxMzozMDozNi4yNTM3NDkxMTcgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4x ZC9jcnlwdG8va2RmL2tkZl91dGlsLmMJMjAxOS0xMS0xMiAxMzozMDozNi4yODQ3NDg1NTkgKzAx MDAKK0BAIC03MSwzICs3MSwxNiBAQCBpbnQga2RmX21kMmN0cmwoRVZQX0tERl9JTVBMICppbXBs LAorICAgICByZXR1cm4gY2FsbF9jdHJsKGN0cmwsIGltcGwsIGNtZCwgbWQpOworIH0KKyAKKysv KiBQYXNzIGEgY2lwaGVyIHRvIGEgY3RybCAqLworK2ludCBrZGZfY2lwaGVyMmN0cmwoRVZQX0tE Rl9JTVBMICppbXBsLAorKyAgICAgICAgICAgICAgICAgICAgaW50ICgqY3RybCkoRVZQX0tERl9J TVBMICppbXBsLCBpbnQgY21kLCB2YV9saXN0IGFyZ3MpLAorKyAgICAgICAgICAgICAgICAgICAg aW50IGNtZCwgY29uc3QgY2hhciAqY2lwaGVyX25hbWUpCisreworKyAgICBjb25zdCBFVlBfQ0lQ SEVSICpjaXBoZXI7CisrCisrICAgIGlmIChjaXBoZXJfbmFtZSA9PSBOVUxMIHx8IChjaXBoZXIg PSBFVlBfZ2V0X2NpcGhlcmJ5bmFtZShjaXBoZXJfbmFtZSkpID09IE5VTEwpIHsKKysgICAgICAg IEtERmVycihLREZfRl9LREZfQ0lQSEVSMkNUUkwsIEtERl9SX0lOVkFMSURfQ0lQSEVSKTsKKysg ICAgICAgIHJldHVybiAwOworKyAgICB9CisrICAgIHJldHVybiBjYWxsX2N0cmwoY3RybCwgaW1w bCwgY21kLCBjaXBoZXIpOworK30KK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFkL2NyeXB0by9vYmpl Y3RzL29ial9kYXQuaC5rcmI1LWtkZiBvcGVuc3NsLTEuMS4xZC9jcnlwdG8vb2JqZWN0cy9vYmpf ZGF0LmgKKy0tLSBvcGVuc3NsLTEuMS4xZC9jcnlwdG8vb2JqZWN0cy9vYmpfZGF0Lmgua3JiNS1r ZGYJMjAxOS0xMS0xMiAxMzozMDozNi4yNjM3NDg5MzcgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4x ZC9jcnlwdG8vb2JqZWN0cy9vYmpfZGF0LmgJMjAxOS0xMS0xMiAxMzozMDozNi4yODU3NDg1NDEg KzAxMDAKK0BAIC0xMDc4LDcgKzEwNzgsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBz b1s3NzYyXSA9IHsKKyAgICAgMHgyQSwweDg2LDB4NDgsMHg4NiwweEY3LDB4MEQsMHgwMiwweDBE LCAgICAgICAvKiBbIDc3NTNdIE9CSl9obWFjV2l0aFNIQTUxMl8yNTYgKi8KKyB9OworIAorLSNk ZWZpbmUgTlVNX05JRCAxMTk2CisrI2RlZmluZSBOVU1fTklEIDExOTcKKyBzdGF0aWMgY29uc3Qg QVNOMV9PQkpFQ1QgbmlkX29ianNbTlVNX05JRF0gPSB7CisgICAgIHsiVU5ERUYiLCAidW5kZWZp bmVkIiwgTklEX3VuZGVmfSwKKyAgICAgeyJyc2Fkc2kiLCAiUlNBIERhdGEgU2VjdXJpdHksIElu Yy4iLCBOSURfcnNhZHNpLCA2LCAmc29bMF19LAorQEAgLTIyNzYsOSArMjI3NiwxMCBAQCBzdGF0 aWMgY29uc3QgQVNOMV9PQkpFQ1QgbmlkX29ianNbTlVNX05JCisgICAgIHsiaG1hY1dpdGhTSEE1 MTItMjI0IiwgImhtYWNXaXRoU0hBNTEyLTIyNCIsIE5JRF9obWFjV2l0aFNIQTUxMl8yMjQsIDgs ICZzb1s3NzQ1XX0sCisgICAgIHsiaG1hY1dpdGhTSEE1MTItMjU2IiwgImhtYWNXaXRoU0hBNTEy LTI1NiIsIE5JRF9obWFjV2l0aFNIQTUxMl8yNTYsIDgsICZzb1s3NzUzXX0sCisgICAgIHsiU1NI S0RGIiwgInNzaGtkZiIsIE5JRF9zc2hrZGZ9LAorKyAgICB7IktCS0RGIiwgImtia2RmIiwgTklE X2tia2RmfSwKKyB9OworIAorLSNkZWZpbmUgTlVNX1NOIDExODcKKysjZGVmaW5lIE5VTV9TTiAx MTg4Cisgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBzbl9vYmpzW05VTV9TTl0gPSB7CisgICAg ICAzNjQsICAgIC8qICJBRF9EVkNTIiAqLworICAgICAgNDE5LCAgICAvKiAiQUVTLTEyOC1DQkMi ICovCitAQCAtMjQ0Miw2ICsyNDQzLDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBzbl9v YmpzW05VTV9TTgorICAgICAgMTgzLCAgICAvKiAiSVNPLVVTIiAqLworICAgICAgNjQ1LCAgICAv KiAiSVRVLVQiICovCisgICAgICA2NDYsICAgIC8qICJKT0lOVC1JU08tSVRVLVQiICovCisrICAg IDExOTYsICAgIC8qICJLQktERiIgKi8KKyAgICAgIDc3MywgICAgLyogIktJU0EiICovCisgICAg IDEwNjMsICAgIC8qICJLeEFOWSIgKi8KKyAgICAgMTAzOSwgICAgLyogIkt4REhFIiAqLworQEAg LTM0NjksNyArMzQ3MSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgc25fb2Jqc1tOVU1f U04KKyAgICAgMTA5MywgICAgLyogIng1MDlFeHRBZG1pc3Npb24iICovCisgfTsKKyAKKy0jZGVm aW5lIE5VTV9MTiAxMTg3CisrI2RlZmluZSBOVU1fTE4gMTE4OAorIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBpbnQgbG5fb2Jqc1tOVU1fTE5dID0geworICAgICAgMzYzLCAgICAvKiAiQUQgVGltZSBT dGFtcGluZyIgKi8KKyAgICAgIDQwNSwgICAgLyogIkFOU0kgWDkuNjIiICovCitAQCAtNDI2Miw2 ICs0MjY0LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBsbl9vYmpzW05VTV9MTgorICAg ICAgOTU3LCAgICAvKiAianVyaXNkaWN0aW9uQ291bnRyeU5hbWUiICovCisgICAgICA5NTUsICAg IC8qICJqdXJpc2RpY3Rpb25Mb2NhbGl0eU5hbWUiICovCisgICAgICA5NTYsICAgIC8qICJqdXJp c2RpY3Rpb25TdGF0ZU9yUHJvdmluY2VOYW1lIiAqLworKyAgICAxMTk2LCAgICAvKiAia2JrZGYi ICovCisgICAgICAxNTAsICAgIC8qICJrZXlCYWciICovCisgICAgICA3NzMsICAgIC8qICJraXNh IiAqLworICAgICAxMDYzLCAgICAvKiAia3gtYW55IiAqLworZGlmZiAtdXAgb3BlbnNzbC0xLjEu MWQvY3J5cHRvL29iamVjdHMvb2JqZWN0cy50eHQua3JiNS1rZGYgb3BlbnNzbC0xLjEuMWQvY3J5 cHRvL29iamVjdHMvb2JqZWN0cy50eHQKKy0tLSBvcGVuc3NsLTEuMS4xZC9jcnlwdG8vb2JqZWN0 cy9vYmplY3RzLnR4dC5rcmI1LWtkZgkyMDE5LTExLTEyIDEzOjMwOjM2LjI2Mzc0ODkzNyArMDEw MAorKysrIG9wZW5zc2wtMS4xLjFkL2NyeXB0by9vYmplY3RzL29iamVjdHMudHh0CTIwMTktMTEt MTIgMTM6MzA6MzYuMjg2NzQ4NTIzICswMTAwCitAQCAtMTYwMyw2ICsxNjAzLDkgQEAgc2VjZy1z Y2hlbWUgMTQgMyA6IGRoU2luZ2xlUGFzcy1jb2ZhY3RvcgorICMgTklEIGZvciBTU0hLREYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTU0hLREYgICAgICAgICAgICA6IHNzaGtkZgor IAorKyMgTklEIGZvciBLQktERgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEtCS0RG ICAgICAgICAgICAgIDoga2JrZGYKKysKKyAjIFJGQyA0NTU2CisgMSAzIDYgMSA1IDIgMyA6IGlk LXBraW5pdAorIGlkLXBraW5pdCA0ICAgICAgICAgICAgICAgICAgICAgOiBwa0luaXRDbGllbnRB dXRoICAgICAgOiBQS0lOSVQgQ2xpZW50IEF1dGgKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFkL2Ny eXB0by9vYmplY3RzL29ial9tYWMubnVtLmtyYjUta2RmIG9wZW5zc2wtMS4xLjFkL2NyeXB0by9v YmplY3RzL29ial9tYWMubnVtCistLS0gb3BlbnNzbC0xLjEuMWQvY3J5cHRvL29iamVjdHMvb2Jq X21hYy5udW0ua3JiNS1rZGYJMjAxOS0xMS0xMiAxMzozMDozNi4yNjM3NDg5MzcgKzAxMDAKKysr KyBvcGVuc3NsLTEuMS4xZC9jcnlwdG8vb2JqZWN0cy9vYmpfbWFjLm51bQkyMDE5LTExLTEyIDEz OjMwOjM2LjI4Njc0ODUyMyArMDEwMAorQEAgLTExOTMsMyArMTE5Myw0IEBAIG1hZ21hX21hYwkJ MTE5MgorIGhtYWNXaXRoU0hBNTEyXzIyNAkJMTE5MworIGhtYWNXaXRoU0hBNTEyXzI1NgkJMTE5 NAorIHNzaGtkZgkJMTE5NQorK2tia2RmCQkxMTk2CitkaWZmIC11cCBvcGVuc3NsLTEuMS4xZC9k b2MvbWFuMy9FVlBfS0RGX0NUWC5wb2Qua3JiNS1rZGYgb3BlbnNzbC0xLjEuMWQvZG9jL21hbjMv RVZQX0tERl9DVFgucG9kCistLS0gb3BlbnNzbC0xLjEuMWQvZG9jL21hbjMvRVZQX0tERl9DVFgu cG9kLmtyYjUta2RmCTIwMTktMTEtMTIgMTM6MzA6MzYuMjU0NzQ5MDk5ICswMTAwCisrKysgb3Bl bnNzbC0xLjEuMWQvZG9jL21hbjMvRVZQX0tERl9DVFgucG9kCTIwMTktMTEtMTIgMTM6MzA6MzYu Mjg2NzQ4NTIzICswMTAwCitAQCAtMTQwLDcgKzE0MCwxNCBAQCBUaGUgdmFsdWUgc3RyaW5nIGlz IGV4cGVjdGVkIHRvIGJlIGEgZGVjCisgVGhpcyBjb250cm9sIGV4cGVjdHMgb25lIGFyZ3VtZW50 OiBDPEVWUF9NRCAqbWQ+CisgCisgRm9yIE1BQyBpbXBsZW1lbnRhdGlvbnMgdGhhdCB1c2UgYSBt ZXNzYWdlIGRpZ2VzdCBhcyBhbiB1bmRlcmx5aW5nIGNvbXB1dGF0aW9uCistYWxnb3JpdGhtLCB0 aGlzIGNvbnRyb2wgc2V0IHdoYXQgdGhlIGRpZ2VzdCBhbGdvcml0aG0gc2hvdWxkIGJlLgorK2Fs Z29yaXRobSwgdGhpcyBjb250cm9sIHNldHMgd2hhdCB0aGUgZGlnZXN0IGFsZ29yaXRobSBzaG91 bGQgYmUuCisrCisrPWl0ZW0gQjxFVlBfS0RGX0NUUkxfU0VUX0NJUEhFUj4KKysKKytUaGlzIGNv bnRyb2wgZXhwZWN0cyBvbmUgYXJndW1lbnQ6IEM8RVZQX0NJUEhFUiAqY2lwaGVyPgorKworK0Zv ciBNQUMgaW1wbGVtZW50YXRpb25zIHRoYXQgdXNlIGEgY2lwaGVyIGFzIGFuIHVuZGVybHlpbmcg Y29tcHV0YXRpb24KKythbGdvcml0aG0sIHRoaXMgY29udHJvbCBzZXRzIHdoYXQgdGhlIGNpcGhl ciBhbGdvcml0aG0gc2hvdWxkIGJlLgorIAorIEVWUF9LREZfY3RybF9zdHIoKSB0eXBlIHN0cmlu ZzogIm1kIgorIAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWQvZG9jL21hbjcvRVZQX0tERl9LQi5w b2Qua3JiNS1rZGYgb3BlbnNzbC0xLjEuMWQvZG9jL21hbjcvRVZQX0tERl9LQi5wb2QKKy0tLSBv cGVuc3NsLTEuMS4xZC9kb2MvbWFuNy9FVlBfS0RGX0tCLnBvZC5rcmI1LWtkZgkyMDE5LTExLTEy IDEzOjMwOjM2LjI4Njc0ODUyMyArMDEwMAorKysrIG9wZW5zc2wtMS4xLjFkL2RvYy9tYW43L0VW UF9LREZfS0IucG9kCTIwMTktMTEtMTIgMTM6MzA6MzYuMjg2NzQ4NTIzICswMTAwCitAQCAtMCww ICsxLDE3NyBAQAorKz1wb2QKKysKKys9aGVhZDEgTkFNRQorKworK0VWUF9LREZfS0IgLSBUaGUg S2V5LUJhc2VkIEVWUF9LREYgaW1wbGVtZW50YXRpb24KKysKKys9aGVhZDEgREVTQ1JJUFRJT04K KysKKytUaGUgRVZQX0tERl9LQiBhbGdvcml0aG0gaW1wbGVtZW50cyB0aGUgS2V5LUJhc2VkIGtl eSBkZXJpdmF0aW9uIGZ1bmN0aW9uCisrKEtCS0RGKS4gIEtCS0RGIGRlcml2ZXMgYSBrZXkgZnJv bSByZXBlYXRlZCBhcHBsaWNhdGlvbiBvZiBhIGtleWVkIE1BQyB0byBhbgorK2lucHV0IHNlY3Jl dCAoYW5kIG90aGVyIG9wdGlvbmFsIHZhbHVlcykuCisrCisrPWhlYWQyIE51bWVyaWMgaWRlbnRp dHkKKysKKytCPEVWUF9LREZfS0I+IGlzIHRoZSBudW1lcmljIGlkZW50aXR5IGZvciB0aGlzIGlt cGxlbWVudGF0aW9uOyBpdCBjYW4gYmUgdXNlZCB3aXRoIHRoZQorK0VWUF9LREZfQ1RYX25ld19p ZCgpIGZ1bmN0aW9uLgorKworKz1oZWFkMiBTdXBwb3J0ZWQgY29udHJvbHMKKysKKytUaGUgc3Vw cG9ydGVkIGNvbnRyb2xzIGFyZToKKysKKys9b3ZlciA0CisrCisrPWl0ZW0gQjxFVlBfS0RGX0NU UkxfU0VUX0tCX01PREU+CisrCisrVGhpcyBjb250cm9sIGV4cGVjdHMgb25lIGFyZ3VtZW50OiBD PGludCBtb2RlPgorKworK1NldHMgdGhlIG1vZGUgZm9yIHRoZSBLQktERiBvcGVyYXRpb24uIFRo ZXJlIGFyZSB0d28gc3VwcG9ydGVkIG1vZGVzOgorKworKz1vdmVyIDQKKysKKys9aXRlbSBCPEVW UF9LREZfS0JfTU9ERV9DT1VOVEVSPgorKworK1RoZSBjb3VudGVyIG1vZGUgb2YgS0JLREYgc2hv dWxkIGJlIHVzZWQuIFRoaXMgaXMgdGhlIGRlZmF1bHQuCisrCisrPWl0ZW0gQjxFVlBfS0RGX0tC X01PREVfRkVFREJBQ0s+CisrCisrVGhlIGZlZWRiYWNrIG1vZGUgb2YgS0JLREYgc2hvdWxkIGJl IHVzZWQuCisrCisrPWJhY2sKKysKKys9aXRlbSBCPEVWUF9LREZfQ1RSTF9TRVRfS0JfTUFDX1RZ UEU+CisrCisrVGhpcyBjb250cm9sIGV4cGVjdHMgb25lIGFyZ3VtZW50OiBDPGludCBtYWNfdHlw ZT4KKysKKytTZXRzIHRoZSBtYWMgdHlwZSBmb3IgdGhlIEtCS0RGIG9wZXJhdGlvbi4gVGhlcmUg YXJlIHR3byBzdXBwb3J0ZWQgbWFjIHR5cGVzOgorKworKz1vdmVyIDQKKysKKys9aXRlbSBCPEVW UF9LREZfS0JfTUFDX1RZUEVfSE1BQz4KKysKKytUaGUgSE1BQyB3aXRoIHRoZSBkaWdlc3Qgc2V0 IGJ5IEI8RVZQX0tERl9DVFJMX1NFVF9NRD4gc2hvdWxkIGJlIHVzZWQgYXMgdGhlIG1hYy4KKysK Kys9aXRlbSBCPEVWUF9LREZfS0JfTUFDX1RZUEVfQ01BQz4KKysKKytUaGUgQ01BQyB3aXRoIHRo ZSBjaXBoZXIgc2V0IGJ5IEI8RVZQX0tERl9DVFJMX1NFVF9DSVBIRVI+IHNob3VsZCBiZSB1c2Vk IGFzIHRoZSBtYWMuCisrCisrPWJhY2sKKysKKys9aXRlbSBCPEVWUF9LREZfQ1RSTF9TRVRfTUQ+ CisrCisrPWl0ZW0gQjxFVlBfS0RGX0NUUkxfU0VUX0NJUEhFUj4KKysKKys9aXRlbSBCPEVWUF9L REZfQ1RSTF9TRVRfS0VZPgorKworKz1pdGVtIEI8RVZQX0tERl9DVFJMX1NFVF9TQUxUPgorKwor K1RoZXNlIGNvbnRyb2xzIHdvcmsgYXMgZGVzY3JpYmVkIGluIEw8RVZQX0tERl9DVFgoMykvQ09O VFJPTFM+LgorKworKz1pdGVtIEI8RVZQX0tERl9DVFJMX1NFVF9LQl9JTkZPPgorKworK1RoaXMg Y29udHJvbCBleHBlY3RzIHR3byBhcmd1bWVudHM6IEM8dW5zaWduZWQgY2hhciAqaW5mbz4sIEM8 c2l6ZV90IGluZm9sZW4+CisrCisrPWl0ZW0gQjxFVlBfS0RGX0NUUkxfU0VUX0tCX1NFRUQ+Cisr CisrVGhpcyBjb250cm9sIGV4cGVjdHMgdHdvIGFyZ3VtZW50czogQzx1bnNpZ25lZCBjaGFyICpz ZWVkPiwgQzxzaXplX3Qgc2VlZGxlbj4KKysKKytJdCBpcyB1c2VkIG9ubHkgaW4gdGhlIGZlZWRi YWNrIG1vZGUgYW5kIHRoZSBsZW5ndGggbXVzdCBiZSB0aGUgc2FtZQorK2FzIHRoZSBibG9jayBs ZW5ndGggb2YgdGhlIGNpcGhlciBpbiBDTUFDIG9yIHRoZSBzaXplIG9mIHRoZSBkaWdlc3QgaW4g SE1BQy4KKysKKys9YmFjaworKworK1RoZSBjb250cm9scyBCPEVWUF9LREZfQ1RSTF9TRVRfS0VZ PiwgQjxFVlBfS0RGX0NUUkxfU0VUX1NBTFQ+LAorK0I8RVZQX0tERl9DVFJMX1NFVF9LQl9JTkZP PiwgYW5kIEI8RVZQX0tERl9DVFJMX1NFVF9LQl9TRUVEPiAKKytjb3JyZXNwb25kIHRvIEtJLCBM YWJlbCwgQ29udGV4dCwgYW5kIElWIChyZXNwZWN0aXZlbHkpIGluIFNQODAwLTEwOC4KKytBcyBp biB0aGF0IGRvY3VtZW50LCBzYWx0LCBpbmZvLCBhbmQgc2VlZCBhcmUgb3B0aW9uYWwgYW5kIG1h eSBiZQorK29taXR0ZWQuCisrCisrRGVwZW5kaW5nIG9uIHdoZXRoZXIgbWFjIGlzIENNQUMgb3Ig SE1BQywgZWl0aGVyIGRpZ2VzdCBvciBjaXBoZXIgaXMKKytyZXF1aXJlZCAocmVzcGVjdGl2ZWx5 KSBhbmQgdGhlIG90aGVyIGlzIHVudXNlZC4KKysKKys9aGVhZDEgTk9URVMKKysKKytBIGNvbnRl eHQgZm9yIEtCS0RGIGNhbiBiZSBvYnRhaW5lZCBieSBjYWxsaW5nOgorKworKyBFVlBfS0RGX0NU WCAqa2N0eCA9IEVWUF9LREZfQ1RYX25ld19pZChFVlBfS0RGX0tCKTsKKysKKytUaGUgb3V0cHV0 IGxlbmd0aCBvZiBhbiBLQktERiBpcyBzcGVjaWZpZWQgdmlhIHRoZSBDPGtleWxlbj4KKytwYXJh bWV0ZXIgdG8gdGhlIEw8RVZQX0tERl9kZXJpdmUoMyk+IGZ1bmN0aW9uLgorKworK05vdGUgdGhh dCBjdXJyZW50bHkgT3BlblNTTCBvbmx5IGltcGxlbWVudHMgY291bnRlciBhbmQgZmVlZGJhY2sg bW9kZXMuICBPdGhlcgorK3ZhcmlhbnRzIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlIGZ1dHVyZS4K KysKKys9aGVhZDEgRVhBTVBMRVMKKysKKytUaGlzIGV4YW1wbGUgZGVyaXZlcyAxMCBieXRlcyB1 c2luZyBDT1VOVEVSLUhNQUMtU0hBMjU2LCB3aXRoIEtJICJzZWNyZXQiLAorK0xhYmVsICJsYWJl bCIsIGFuZCBDb250ZXh0ICJjb250ZXh0Ii4KKysKKysgRVZQX0tERl9DVFggKmtjdHg7CisrIHVu c2lnbmVkIGNoYXIgb3V0WzEwXTsKKysKKysga2N0eCA9IEVWUF9LREZfQ1RYX25ld19pZChFVlBf S0RGX0tCKTsKKysKKysgRVZQX0tERl9jdHJsKGtjdHgsIEVWUF9LREZfQ1RSTF9TRVRfTUQsIEVW UF9zaGEyNTYoKSk7CisrIEVWUF9LREZfY3RybChrY3R4LCBFVlBfS0RGX0NUUkxfU0VUX0tCX01B Q19UWVBFLCBFVlBfS0RGX0tCX01BQ19UWVBFX0hNQUMpOworKyBFVlBfS0RGX2N0cmwoa2N0eCwg RVZQX0tERl9DVFJMX1NFVF9LRVksICJzZWNyZXQiLCBzdHJsZW4oInNlY3JldCIpKTsKKysgRVZQ X0tERl9jdHJsKGtjdHgsIEVWUF9LREZfQ1RSTF9TRVRfU0FMVCwgImxhYmVsIiwgc3RybGVuKCJs YWJlbCIpKTsKKysgRVZQX0tERl9jdHJsKGtjdHgsIEVWUF9LREZfQ1RSTF9TRVRfS0JfSU5GTywg ImNvbnRleHQiLCBzdHJsZW4oImNvbnRleHQiKSk7CisrIGlmIChFVlBfS0RGX2Rlcml2ZShrY3R4 LCBvdXQsIHNpemVvZihvdXQpKSA8PSAwKQorKyAgICAgZXJyb3IoIkVWUF9LREZfZGVyaXZlIik7 CisrCisrIEVWUF9LREZfQ1RYX2ZyZWUoa2N0eCk7CisrCisrVGhpcyBleGFtcGxlIGRlcml2ZXMg MTAgYnl0ZXMgdXNpbmcgRkVFREJBQ0stQ01BQy1BRVMyNTYsIHdpdGggS0kgInNlY3JldCIsCisr TGFiZWwgImxhYmVsIiwgQ29udGV4dCAiY29udGV4dCIsIGFuZCBJViAic2l4dGVlbiBieXRlcyBp diIuCisrCisrIEVWUF9LREZfQ1RYICprY3R4OworKyB1bnNpZ25lZCBjaGFyIG91dFsxMF07Cisr IHVuc2lnbmVkIGNoYXIgKml2ID0gInNpeHRlZW4gYnl0ZXMgaXYiOworKworKyBrZGYgPSBFVlBf S0RGX2ZldGNoKE5VTEwsICJLQktERiIsIE5VTEwpOworKyBrY3R4ID0gRVZQX0tERl9DVFhfbmV3 KGtkZik7CisrIEVWUF9LREZfZnJlZShrZGYpOworKworKyBrY3R4ID0gRVZQX0tERl9DVFhfbmV3 X2lkKEVWUF9LREZfS0IpOworKworKyBFVlBfS0RGX2N0cmwoa2N0eCwgRVZQX0tERl9DVFJMX1NF VF9DSVBIRVIsIEVWUF9hZXNfMjU2X2VjYigpKTsKKysgRVZQX0tERl9jdHJsKGtjdHgsIEVWUF9L REZfQ1RSTF9TRVRfS0JfTUFDX1RZUEUsIEVWUF9LREZfS0JfTUFDX1RZUEVfQ01BQyk7CisrIEVW UF9LREZfY3RybChrY3R4LCBFVlBfS0RGX0NUUkxfU0VUX0tCX01PREUsIEVWUF9LREZfS0JfTU9E RV9GRUVEQkFDSyk7CisrIEVWUF9LREZfY3RybChrY3R4LCBFVlBfS0RGX0NUUkxfU0VUX0tFWSwg InNlY3JldCIsIHN0cmxlbigic2VjcmV0IikpOworKyBFVlBfS0RGX2N0cmwoa2N0eCwgRVZQX0tE Rl9DVFJMX1NFVF9TQUxULCAibGFiZWwiLCBzdHJsZW4oImxhYmVsIikpOworKyBFVlBfS0RGX2N0 cmwoa2N0eCwgRVZQX0tERl9DVFJMX1NFVF9LQl9JTkZPLCAiY29udGV4dCIsIHN0cmxlbigiY29u dGV4dCIpKTsKKysgRVZQX0tERl9jdHJsKGtjdHgsIEVWUF9LREZfQ1RSTF9TRVRfS0JfU0VFRCwg aXYsIHN0cmxlbihpdikpOworKyBpZiAoRVZQX0tERl9kZXJpdmUoa2N0eCwgb3V0LCBzaXplb2Yo b3V0KSkgPD0gMCkKKysgICAgIGVycm9yKCJFVlBfS0RGX2Rlcml2ZSIpOworKworKyBFVlBfS0RG X0NUWF9mcmVlKGtjdHgpOworKworKz1oZWFkMSBDT05GT1JNSU5HIFRPCisrCisrTklTVCBTUDgw MC0xMDgsIElFVEYgUkZDIDY4MDMsIElFVEYgUkZDIDgwMDkuCisrCisrPWhlYWQxIFNFRSBBTFNP CisrCisrTDxFVlBfS0RGX0NUWCgzKT4sCisrTDxFVlBfS0RGX0NUWF9uZXdfaWQoMyk+LAorK0w8 RVZQX0tERl9DVFhfZnJlZSgzKT4sCisrTDxFVlBfS0RGX2N0cmwoMyk+LAorK0w8RVZQX0tERl9z aXplKDMpPiwKKytMPEVWUF9LREZfZGVyaXZlKDMpPiwKKytMPEVWUF9LREZfQ1RYKDMpL0NPTlRS T0xTPgorKworKz1oZWFkMSBISVNUT1JZCisrCisrVGhpcyBmdW5jdGlvbmFsaXR5IHdhcyBhZGRl ZCB0byBPcGVuU1NMIDMuMC4KKysKKys9aGVhZDEgQ09QWVJJR0hUCisrCisrQ29weXJpZ2h0IDIw MTkgVGhlIE9wZW5TU0wgUHJvamVjdCBBdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorK0Nv cHlyaWdodCAyMDE5IFJlZCBIYXQsIEluYy4KKysKKytMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl IExpY2Vuc2UgMi4wICh0aGUgIkxpY2Vuc2UiKS4gIFlvdSBtYXkgbm90IHVzZQorK3RoaXMgZmls ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IGNhbiBvYnRhaW4g YSBjb3B5CisraW4gdGhlIGZpbGUgTElDRU5TRSBpbiB0aGUgc291cmNlIGRpc3RyaWJ1dGlvbiBv ciBhdAorK0w8aHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbD4uCisr CisrPWN1dAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWQvaW5jbHVkZS9vcGVuc3NsL2tkZmVyci5o LmtyYjUta2RmIG9wZW5zc2wtMS4xLjFkL2luY2x1ZGUvb3BlbnNzbC9rZGZlcnIuaAorLS0tIG9w ZW5zc2wtMS4xLjFkL2luY2x1ZGUvb3BlbnNzbC9rZGZlcnIuaC5rcmI1LWtkZgkyMDE5LTExLTEy IDEzOjMwOjM2LjI2NDc0ODkxOSArMDEwMAorKysrIG9wZW5zc2wtMS4xLjFkL2luY2x1ZGUvb3Bl bnNzbC9rZGZlcnIuaAkyMDE5LTExLTEyIDEzOjMwOjM2LjI4Njc0ODUyMyArMDEwMAorQEAgLTI0 LDYgKzI0LDExIEBAIGludCBFUlJfbG9hZF9LREZfc3RyaW5ncyh2b2lkKTsKKyAgKiBLREYgZnVu Y3Rpb24gY29kZXMuCisgICovCisgIyBkZWZpbmUgS0RGX0ZfSEtERl9FWFRSQUNUICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDExMgorKyMgZGVmaW5lIEtERl9GX0tCS0RGX0NUUkwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzQKKysjIGRlZmluZSBLREZfRl9LQktERl9D VFJMX1NUUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM1CisrIyBkZWZpbmUgS0RGX0Zf S0JLREZfREVSSVZFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNgorKyMgZGVmaW5l IEtERl9GX0tCS0RGX05FVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzcKKysj IGRlZmluZSBLREZfRl9LREZfQ0lQSEVSMkNUUkwgICAgICAgICAgICAgICAgICAgICAgICAgICAg MTM4CisgIyBkZWZpbmUgS0RGX0ZfS0RGX0hLREZfREVSSVZFICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDExMworICMgZGVmaW5lIEtERl9GX0tERl9IS0RGX05FVyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAxMTQKKyAjIGRlZmluZSBLREZfRl9LREZfSEtERl9TSVpFICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMTE1CitAQCAtNjEsNyArNjYsOSBAQCBpbnQgRVJSX2xvYWRf S0RGX3N0cmluZ3Modm9pZCk7CisgLyoKKyAgKiBLREYgcmVhc29uIGNvZGVzLgorICAqLworKyMg ZGVmaW5lIEtERl9SX0lOVkFMSURfQ0lQSEVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx MTYKKyAjIGRlZmluZSBLREZfUl9JTlZBTElEX0RJR0VTVCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMTAwCisrIyBkZWZpbmUgS0RGX1JfSU5WQUxJRF9TRUVEX0xFTkdUSCAgICAgICAgICAg ICAgICAgICAgICAgIDExNworICMgZGVmaW5lIEtERl9SX01JU1NJTkdfSVRFUkFUSU9OX0NPVU5U ICAgICAgICAgICAgICAgICAgICAxMDkKKyAjIGRlZmluZSBLREZfUl9NSVNTSU5HX0tFWSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA0CisgIyBkZWZpbmUgS0RGX1JfTUlTU0lOR19N RVNTQUdFX0RJR0VTVCAgICAgICAgICAgICAgICAgICAgIDEwNQorZGlmZiAtdXAgb3BlbnNzbC0x LjEuMWQvaW5jbHVkZS9vcGVuc3NsL2tkZi5oLmtyYjUta2RmIG9wZW5zc2wtMS4xLjFkL2luY2x1 ZGUvb3BlbnNzbC9rZGYuaAorLS0tIG9wZW5zc2wtMS4xLjFkL2luY2x1ZGUvb3BlbnNzbC9rZGYu aC5rcmI1LWtkZgkyMDE5LTExLTEyIDEzOjMwOjM2LjI2Mzc0ODkzNyArMDEwMAorKysrIG9wZW5z c2wtMS4xLjFkL2luY2x1ZGUvb3BlbnNzbC9rZGYuaAkyMDE5LTExLTEyIDEzOjMwOjM2LjI4Nzc0 ODUwNSArMDEwMAorQEAgLTIxLDYgKzIxLDcgQEAgZXh0ZXJuICJDIiB7CisgIyBkZWZpbmUgRVZQ X0tERl9UTFMxX1BSRiAgIE5JRF90bHMxX3ByZgorICMgZGVmaW5lIEVWUF9LREZfSEtERiAgICAg ICBOSURfaGtkZgorICMgZGVmaW5lIEVWUF9LREZfU1NIS0RGICAgICBOSURfc3Noa2RmCisrIyBk ZWZpbmUgRVZQX0tERl9LQiAgICAgICAgIE5JRF9rYmtkZgorIAorIEVWUF9LREZfQ1RYICpFVlBf S0RGX0NUWF9uZXdfaWQoaW50IGlkKTsKKyB2b2lkIEVWUF9LREZfQ1RYX2ZyZWUoRVZQX0tERl9D VFggKmN0eCk7CitAQCAtNTEsNiArNTIsMTEgQEAgaW50IEVWUF9LREZfZGVyaXZlKEVWUF9LREZf Q1RYICpjdHgsIHVucworICMgZGVmaW5lIEVWUF9LREZfQ1RSTF9TRVRfU1NIS0RGX1hDR0hBU0gg ICAgMHgxMCAvKiB1bnNpZ25lZCBjaGFyICosIHNpemVfdCAqLworICMgZGVmaW5lIEVWUF9LREZf Q1RSTF9TRVRfU1NIS0RGX1NFU1NJT05fSUQgMHgxMSAvKiB1bnNpZ25lZCBjaGFyICosIHNpemVf dCAqLworICMgZGVmaW5lIEVWUF9LREZfQ1RSTF9TRVRfU1NIS0RGX1RZUEUgICAgICAgMHgxMiAv KiBpbnQgKi8KKysjIGRlZmluZSBFVlBfS0RGX0NUUkxfU0VUX0tCX01PREUgICAgICAgMHgxMyAv KiBpbnQgKi8KKysjIGRlZmluZSBFVlBfS0RGX0NUUkxfU0VUX0tCX01BQ19UWVBFICAgMHgxNCAv KiBpbnQgKi8KKysjIGRlZmluZSBFVlBfS0RGX0NUUkxfU0VUX0NJUEhFUiAgICAgICAgMHgxNSAv KiBFVlBfQ0lQSEVSICogKi8KKysjIGRlZmluZSBFVlBfS0RGX0NUUkxfU0VUX0tCX0lORk8gICAg ICAgMHgxNiAvKiB1bnNpZ25lZCBjaGFyICosIHNpemVfdCAqLworKyMgZGVmaW5lIEVWUF9LREZf Q1RSTF9TRVRfS0JfU0VFRCAgICAgICAweDE3IC8qIHVuc2lnbmVkIGNoYXIgKiwgc2l6ZV90ICov CisgCisgIyBkZWZpbmUgRVZQX0tERl9IS0RGX01PREVfRVhUUkFDVF9BTkRfRVhQQU5EICAwCisg IyBkZWZpbmUgRVZQX0tERl9IS0RGX01PREVfRVhUUkFDVF9PTkxZICAgICAgICAxCitAQCAtNjMs NiArNjksMTIgQEAgaW50IEVWUF9LREZfZGVyaXZlKEVWUF9LREZfQ1RYICpjdHgsIHVucworICNk ZWZpbmUgRVZQX0tERl9TU0hLREZfVFlQRV9JTlRFR1JJVFlfS0VZX0NMSV9UT19TUlYgNjkKKyAj ZGVmaW5lIEVWUF9LREZfU1NIS0RGX1RZUEVfSU5URUdSSVRZX0tFWV9TUlZfVE9fQ0xJIDcwCisg CisrI2RlZmluZSBFVlBfS0RGX0tCX01PREVfQ09VTlRFUiAgICAgMAorKyNkZWZpbmUgRVZQX0tE Rl9LQl9NT0RFX0ZFRURCQUNLICAgIDEKKysKKysjZGVmaW5lIEVWUF9LREZfS0JfTUFDX1RZUEVf SE1BQyAgICAwCisrI2RlZmluZSBFVlBfS0RGX0tCX01BQ19UWVBFX0NNQUMgICAgMQorKworIC8q KioqIFRoZSBsZWdhY3kgUEtFWS1iYXNlZCBLREYgQVBJIGZvbGxvd3MuICoqKiovCisgCisgIyBk ZWZpbmUgRVZQX1BLRVlfQ1RSTF9UTFNfTUQgICAgICAgICAgICAgICAgICAgKEVWUF9QS0VZX0FM R19DVFJMKQorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWQvaW5jbHVkZS9vcGVuc3NsL29ial9tYWMu aC5rcmI1LWtkZiBvcGVuc3NsLTEuMS4xZC9pbmNsdWRlL29wZW5zc2wvb2JqX21hYy5oCistLS0g b3BlbnNzbC0xLjEuMWQvaW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaC5rcmI1LWtkZgkyMDE5LTEx LTEyIDEzOjMwOjM2LjI2NDc0ODkxOSArMDEwMAorKysrIG9wZW5zc2wtMS4xLjFkL2luY2x1ZGUv b3BlbnNzbC9vYmpfbWFjLmgJMjAxOS0xMS0xMiAxMzozMDozNi4yODc3NDg1MDUgKzAxMDAKK0BA IC00OTc0LDYgKzQ5NzQsMTAgQEAKKyAjZGVmaW5lIExOX3NzaGtkZiAgICAgICAgICAgICAgICJz c2hrZGYiCisgI2RlZmluZSBOSURfc3Noa2RmICAgICAgICAgICAgICAxMjAzCisgCisrI2RlZmlu ZSBTTl9rYmtkZiAgICAgICAgICAgICAgICJLQktERiIKKysjZGVmaW5lIExOX2tia2RmICAgICAg ICAgICAgICAgImtia2RmIgorKyNkZWZpbmUgTklEX2tia2RmICAgICAgICAgICAgICAxMjA0Cisr CisgI2RlZmluZSBTTl9pZF9wa2luaXQgICAgICAgICAgICAiaWQtcGtpbml0IgorICNkZWZpbmUg TklEX2lkX3BraW5pdCAgICAgICAgICAgMTAzMQorICNkZWZpbmUgT0JKX2lkX3BraW5pdCAgICAg ICAgICAgMUwsM0wsNkwsMUwsNUwsMkwsM0wKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFkL3Rlc3Qv ZXZwX2tkZl90ZXN0LmMua3JiNS1rZGYgb3BlbnNzbC0xLjEuMWQvdGVzdC9ldnBfa2RmX3Rlc3Qu YworLS0tIG9wZW5zc2wtMS4xLjFkL3Rlc3QvZXZwX2tkZl90ZXN0LmMua3JiNS1rZGYJMjAxOS0x MS0xMiAxMzozMDozNi4yNTc3NDkwNDUgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xZC90ZXN0L2V2 cF9rZGZfdGVzdC5jCTIwMTktMTEtMTIgMTY6MzU6MTkuMjY1MjM3NjY0ICswMTAwCitAQCAtMjI1 LDggKzIyNSwyNjEgQEAgZXJyOgorIH0KKyAjZW5kaWYKKyAKKysvKgorKyAqIEtCS0RGIHRlc3Qg dmVjdG9ycyBmcm9tIFJGQyA2ODAzIChDYW1lbGxpYSBFbmNyeXB0aW9uIGZvciBLZXJiZXJvcyA1 KQorKyAqIHNlY3Rpb24gMTAuCisrICovCisrc3RhdGljIGludCB0ZXN0X2tkZl9rYmtkZl82ODAz XzEyOCh2b2lkKQorK3sKKysgICAgaW50IHJldCA9IDAsIGk7CisrICAgIEVWUF9LREZfQ1RYICpr Y3R4OworKyAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBpbnB1dF9rZXlbXSA9IHsKKysgICAgICAg IDB4NTcsIDB4RDAsIDB4MjksIDB4NzIsIDB4OTgsIDB4RkYsIDB4RDksIDB4RDMsCisrICAgICAg ICAweDVELCAweEU1LCAweEE0LCAweDdGLCAweEI0LCAweEJELCAweEUyLCAweDRCLAorKyAgICB9 OworKyAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBjb25zdGFudHNbXVs1XSA9IHsKKysgICAgICAg IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHg5OSB9LAorKyAgICAgICAgeyAweDAwLCAweDAw LCAweDAwLCAweDAyLCAweGFhIH0sCisrICAgICAgICB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIs IDB4NTUgfSwKKysgICAgfTsKKysgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgb3V0cHV0c1tdWzE2 XSA9IHsKKysgICAgICAgIHsweEQxLCAweDU1LCAweDc3LCAweDVBLCAweDIwLCAweDlELCAweDA1 LCAweEYwLAorKyAgICAgICAgIDB4MkIsIDB4MzgsIDB4RDQsIDB4MkEsIDB4MzgsIDB4OUUsIDB4 NUEsIDB4NTZ9LAorKyAgICAgICAgezB4NjQsIDB4REYsIDB4ODMsIDB4RjgsIDB4NUEsIDB4NTMs IDB4MkYsIDB4MTcsCisrICAgICAgICAgMHg1NywgMHg3RCwgMHg4QywgMHgzNywgMHgwMywgMHg1 NywgMHg5NiwgMHhBQn0sCisrICAgICAgICB7MHgzRSwgMHg0RiwgMHhCRCwgMHhGMywgMHgwRiwg MHhCOCwgMHgyNSwgMHg5QywKKysgICAgICAgICAweDQyLCAweDVDLCAweEI2LCAweEM5LCAweDZG LCAweDFGLCAweDQ2LCAweDM1fQorKyAgICB9OworKyAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBp dlsxNl0gPSB7IDAgfTsKKysgICAgdW5zaWduZWQgY2hhciByZXN1bHRbMTZdID0geyAwIH07Cisr CisrICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKysgICAgICAgIHJldCA9IDA7CisrICAg ICAgICBpZiAoKGtjdHggPSBFVlBfS0RGX0NUWF9uZXdfaWQoRVZQX0tERl9LQikpID09IE5VTEwp IHsKKysgICAgICAgICAgICBURVNUX2Vycm9yKCJFVlBfS0RGX0tCIik7CisrICAgICAgICAgICAg Z290byBlcnI7CisrICAgICAgICB9CisrICAgICAgICBpZiAoRVZQX0tERl9jdHJsKGtjdHgsIEVW UF9LREZfQ1RSTF9TRVRfS0JfTUFDX1RZUEUsIEVWUF9LREZfS0JfTUFDX1RZUEVfQ01BQykgPD0g MCkgeworKyAgICAgICAgICAgIFRFU1RfZXJyb3IoIkVWUF9LREZfQ1RSTF9TRVRfS0JfTUFDX1RZ UEUiKTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChF VlBfS0RGX2N0cmwoa2N0eCwgRVZQX0tERl9DVFJMX1NFVF9LQl9NT0RFLCBFVlBfS0RGX0tCX01P REVfRkVFREJBQ0spIDw9IDApIHsKKysgICAgICAgICAgICBURVNUX2Vycm9yKCJFVlBfS0RGX0NU UkxfU0VUX0tCX01PREUiKTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysg ICAgICAgIGlmIChFVlBfS0RGX2N0cmwoa2N0eCwgRVZQX0tERl9DVFJMX1NFVF9DSVBIRVIsIEVW UF9jYW1lbGxpYV8xMjhfY2JjKCkpIDw9IDApIHsKKysgICAgICAgICAgICBURVNUX2Vycm9yKCJF VlBfS0RGX0NUUkxfU0VUX0NJUEhFUiIpOworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAg ICAgfQorKyAgICAgICAgaWYgKEVWUF9LREZfY3RybChrY3R4LCBFVlBfS0RGX0NUUkxfU0VUX0tF WSwgaW5wdXRfa2V5LCBzaXplb2YoaW5wdXRfa2V5KSkgPD0gMCkgeworKyAgICAgICAgICAgIFRF U1RfZXJyb3IoIkVWUF9LREZfQ1RSTF9TRVRfS0VZIik7CisrICAgICAgICAgICAgZ290byBlcnI7 CisrICAgICAgICB9CisrICAgICAgICBpZiAoRVZQX0tERl9jdHJsKGtjdHgsIEVWUF9LREZfQ1RS TF9TRVRfU0FMVCwgY29uc3RhbnRzW2ldLCBzaXplb2YoY29uc3RhbnRzW2ldKSkgPD0gMCkgewor KyAgICAgICAgICAgIFRFU1RfZXJyb3IoIkVWUF9LREZfQ1RSTF9TRVRfU0FMVCIpOworKyAgICAg ICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKEVWUF9LREZfY3RybChr Y3R4LCBFVlBfS0RGX0NUUkxfU0VUX0tCX1NFRUQsIGl2LCBzaXplb2YoaXYpKSA8PSAwKSB7Cisr ICAgICAgICAgICAgVEVTVF9lcnJvcigiRVZQX0tERl9DVFJMX1NFVF9LQl9TRUVEIik7CisrICAg ICAgICAgICAgZ290byBlcnI7CisrICAgICAgICB9CisrICAgICAgICByZXQgPSBURVNUX2ludF9n dChFVlBfS0RGX2Rlcml2ZShrY3R4LCByZXN1bHQsIHNpemVvZihyZXN1bHQpKSwgMCkKKysgICAg ICAgICAgICAmJiBURVNUX21lbV9lcShyZXN1bHQsIHNpemVvZihyZXN1bHQpLCBvdXRwdXRzW2ld LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihvdXRwdXRzW2ldKSk7CisrZXJy OgorKyAgICAgICAgRVZQX0tERl9DVFhfZnJlZShrY3R4KTsKKysgICAgICAgIGlmIChyZXQgIT0g MSkKKysgICAgICAgICAgICByZXR1cm4gcmV0OworKyAgICB9CisrICAgIHJldHVybiByZXQ7Cisr fQorKworK3N0YXRpYyBpbnQgdGVzdF9rZGZfa2JrZGZfNjgwM18yNTYodm9pZCkKKyt7CisrICAg IGludCByZXQgPSAwLCBpOworKyAgICBFVlBfS0RGX0NUWCAqa2N0eDsKKysgICAgc3RhdGljIHVu c2lnbmVkIGNoYXIgaW5wdXRfa2V5W10gPSB7CisrICAgICAgICAweEI5LCAweEQ2LCAweDgyLCAw eDhCLCAweDIwLCAweDU2LCAweEI3LCAweEJFLAorKyAgICAgICAgMHg2NSwgMHg2RCwgMHg4OCwg MHhBMSwgMHgyMywgMHhCMSwgMHhGQSwgMHhDNiwKKysgICAgICAgIDB4ODIsIDB4MTQsIDB4QUMs IDB4MkIsIDB4NzIsIDB4N0UsIDB4Q0YsIDB4NUYsCisrICAgICAgICAweDY5LCAweEFGLCAweEUw LCAweEM0LCAweERGLCAweDJBLCAweDZELCAweDJDLAorKyAgICB9OworKyAgICBzdGF0aWMgdW5z aWduZWQgY2hhciBjb25zdGFudHNbXVs1XSA9IHsKKysgICAgICAgIHsgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMiwgMHg5OSB9LAorKyAgICAgICAgeyAweDAwLCAweDAwLCAweDAwLCAweDAyLCAweGFh IH0sCisrICAgICAgICB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4NTUgfSwKKysgICAgfTsK KysgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgb3V0cHV0c1tdWzMyXSA9IHsKKysgICAgICAgIHsw eEU0LCAweDY3LCAweEY5LCAweEE5LCAweDU1LCAweDJCLCAweEM3LCAweEQzLAorKyAgICAgICAg IDB4MTUsIDB4NUEsIDB4NjIsIDB4MjAsIDB4QUYsIDB4OUMsIDB4MTksIDB4MjIsCisrICAgICAg ICAgMHgwRSwgMHhFRSwgMHhENCwgMHhGRiwgMHg3OCwgMHhCMCwgMHhEMSwgMHhFNiwKKysgICAg ICAgICAweEExLCAweDU0LCAweDQ5LCAweDkxLCAweDQ2LCAweDFBLCAweDlFLCAweDUwLAorKyAg ICAgICAgfSwKKysgICAgICAgIHsweDQxLCAweDJBLCAweEVGLCAweEMzLCAweDYyLCAweEE3LCAw eDI4LCAweDVGLAorKyAgICAgICAgIDB4QzMsIDB4OTYsIDB4NkMsIDB4NkEsIDB4NTEsIDB4ODEs IDB4RTcsIDB4NjAsCisrICAgICAgICAgMHg1QSwgMHhFNiwgMHg3NSwgMHgyMywgMHg1QiwgMHg2 RCwgMHg1NCwgMHg5RiwKKysgICAgICAgICAweEJGLCAweEM5LCAweEFCLCAweDY2LCAweDMwLCAw eEE0LCAweEM2LCAweDA0LAorKyAgICAgICAgfSwKKysgICAgICAgIHsweEZBLCAweDYyLCAweDRG LCAweEEwLCAweEU1LCAweDIzLCAweDk5LCAweDNGLAorKyAgICAgICAgIDB4QTMsIDB4ODgsIDB4 QUUsIDB4RkQsIDB4QzYsIDB4N0UsIDB4NjcsIDB4RUIsCisrICAgICAgICAgMHhDRCwgMHg4Qywg MHgwOCwgMHhFOCwgMHhBMCwgMHgyNCwgMHg2QiwgMHgxRCwKKysgICAgICAgICAweDczLCAweEIw LCAweEQxLCAweERELCAweDlGLCAweEM1LCAweDgyLCAweEIwLAorKyAgICAgICAgfSwKKysgICAg fTsKKysgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgaXZbMTZdID0geyAwIH07CisrICAgIHVuc2ln bmVkIGNoYXIgcmVzdWx0WzMyXSA9IHsgMCB9OworKworKyAgICBmb3IgKGkgPSAwOyBpIDwgMzsg aSsrKSB7CisrICAgICAgICByZXQgPSAwOworKyAgICAgICAgaWYgKChrY3R4ID0gRVZQX0tERl9D VFhfbmV3X2lkKEVWUF9LREZfS0IpKSA9PSBOVUxMKSB7CisrICAgICAgICAgICAgVEVTVF9lcnJv cigiRVZQX0tERl9LQiIpOworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKyAg ICAgICAgaWYgKEVWUF9LREZfY3RybChrY3R4LCBFVlBfS0RGX0NUUkxfU0VUX0tCX01BQ19UWVBF LCBFVlBfS0RGX0tCX01BQ19UWVBFX0NNQUMpIDw9IDApIHsKKysgICAgICAgICAgICBURVNUX2Vy cm9yKCJFVlBfS0RGX0NUUkxfU0VUX0tCX01BQ19UWVBFIik7CisrICAgICAgICAgICAgZ290byBl cnI7CisrICAgICAgICB9CisrICAgICAgICBpZiAoRVZQX0tERl9jdHJsKGtjdHgsIEVWUF9LREZf Q1RSTF9TRVRfS0JfTU9ERSwgRVZQX0tERl9LQl9NT0RFX0ZFRURCQUNLKSA8PSAwKSB7CisrICAg ICAgICAgICAgVEVTVF9lcnJvcigiRVZQX0tERl9DVFJMX1NFVF9LQl9NT0RFIik7CisrICAgICAg ICAgICAgZ290byBlcnI7CisrICAgICAgICB9CisrICAgICAgICBpZiAoRVZQX0tERl9jdHJsKGtj dHgsIEVWUF9LREZfQ1RSTF9TRVRfQ0lQSEVSLCBFVlBfY2FtZWxsaWFfMjU2X2NiYygpKSA8PSAw KSB7CisrICAgICAgICAgICAgVEVTVF9lcnJvcigiRVZQX0tERl9DVFJMX1NFVF9DSVBIRVIiKTsK KysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChFVlBfS0RG X2N0cmwoa2N0eCwgRVZQX0tERl9DVFJMX1NFVF9LRVksIGlucHV0X2tleSwgc2l6ZW9mKGlucHV0 X2tleSkpIDw9IDApIHsKKysgICAgICAgICAgICBURVNUX2Vycm9yKCJFVlBfS0RGX0NUUkxfU0VU X0tFWSIpOworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKyAgICAgICAgaWYg KEVWUF9LREZfY3RybChrY3R4LCBFVlBfS0RGX0NUUkxfU0VUX1NBTFQsIGNvbnN0YW50c1tpXSwg c2l6ZW9mKGNvbnN0YW50c1tpXSkpIDw9IDApIHsKKysgICAgICAgICAgICBURVNUX2Vycm9yKCJF VlBfS0RGX0NUUkxfU0VUX1NBTFQiKTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAg IH0KKysgICAgICAgIGlmIChFVlBfS0RGX2N0cmwoa2N0eCwgRVZQX0tERl9DVFJMX1NFVF9LQl9T RUVELCBpdiwgc2l6ZW9mKGl2KSkgPD0gMCkgeworKyAgICAgICAgICAgIFRFU1RfZXJyb3IoIkVW UF9LREZfQ1RSTF9TRVRfS0JfU0VFRCIpOworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAg ICAgfQorKyAgICAgICAgcmV0ID0gVEVTVF9pbnRfZ3QoRVZQX0tERl9kZXJpdmUoa2N0eCwgcmVz dWx0LCBzaXplb2YocmVzdWx0KSksIDApCisrICAgICAgICAgICAgJiYgVEVTVF9tZW1fZXEocmVz dWx0LCBzaXplb2YocmVzdWx0KSwgb3V0cHV0c1tpXSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplb2Yob3V0cHV0c1tpXSkpOworK2VycjoKKysgICAgICAgIEVWUF9LREZfQ1RYX2Zy ZWUoa2N0eCk7CisrICAgICAgICBpZiAocmV0ICE9IDEpCisrICAgICAgICAgICAgcmV0dXJuIHJl dDsKKysgICAgfQorKyAgICByZXR1cm4gcmV0OworK30KKysKKysvKiBUd28gdGVzdCB2ZWN0b3Jz IGZyb20gUkZDIDgwMDkgKEFFUyBFbmNyeXB0aW9uIHdpdGggSE1BQy1TSEEyIGZvciBLZXJiZXJv cworKyAqIDUpIGFwcGVuZGl4IEEuICovCisrc3RhdGljIGludCB0ZXN0X2tkZl9rYmtkZl84MDA5 X3ByZjEodm9pZCkKKyt7CisrICAgIGludCByZXQgPSAwOworKyAgICBFVlBfS0RGX0NUWCAqa2N0 eDsKKysgICAgY2hhciAqbGFiZWwgPSAicHJmIiwgKnByZl9pbnB1dCA9ICJ0ZXN0IjsKKysgICAg c3RhdGljIHVuc2lnbmVkIGNoYXIgaW5wdXRfa2V5W10gPSB7CisrICAgICAgICAweDM3LCAweDA1 LCAweEQ5LCAweDYwLCAweDgwLCAweEMxLCAweDc3LCAweDI4LAorKyAgICAgICAgMHhBMCwgMHhF OCwgMHgwMCwgMHhFQSwgMHhCNiwgMHhFMCwgMHhEMiwgMHgzQywKKysgICAgfTsKKysgICAgc3Rh dGljIHVuc2lnbmVkIGNoYXIgb3V0cHV0W10gPSB7CisrICAgICAgICAweDlELCAweDE4LCAweDg2 LCAweDE2LCAweEY2LCAweDM4LCAweDUyLCAweEZFLAorKyAgICAgICAgMHg4NiwgMHg5MSwgMHg1 QiwgMHhCOCwgMHg0MCwgMHhCNCwgMHhBOCwgMHg4NiwKKysgICAgICAgIDB4RkYsIDB4M0UsIDB4 NkIsIDB4QjAsIDB4RjgsIDB4MTksIDB4QjQsIDB4OUIsCisrICAgICAgICAweDg5LCAweDMzLCAw eDkzLCAweEQzLCAweDkzLCAweDg1LCAweDQyLCAweDk1LAorKyAgICB9OworKyAgICB1bnNpZ25l ZCBjaGFyIHJlc3VsdFtzaXplb2Yob3V0cHV0KV0gPSB7IDAgfTsKKysKKysgICAgaWYgKChrY3R4 ID0gRVZQX0tERl9DVFhfbmV3X2lkKEVWUF9LREZfS0IpKSA9PSBOVUxMKSB7CisrICAgICAgICBU RVNUX2Vycm9yKCJFVlBfS0RGX0tCIik7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKyAg ICBpZiAoRVZQX0tERl9jdHJsKGtjdHgsIEVWUF9LREZfQ1RSTF9TRVRfS0JfTUFDX1RZUEUsIEVW UF9LREZfS0JfTUFDX1RZUEVfSE1BQykgPD0gMCkgeworKyAgICAgICAgVEVTVF9lcnJvcigiRVZQ X0tERl9DVFJMX1NFVF9LQl9NQUNfVFlQRSIpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0K KysgICAgaWYgKEVWUF9LREZfY3RybChrY3R4LCBFVlBfS0RGX0NUUkxfU0VUX01ELCBFVlBfc2hh MjU2KCkpIDw9IDApIHsKKysgICAgICAgIFRFU1RfZXJyb3IoIkVWUF9LREZfQ1RSTF9TRVRfTUQi KTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrICAgIGlmIChFVlBfS0RGX2N0cmwoa2N0 eCwgRVZQX0tERl9DVFJMX1NFVF9LRVksIGlucHV0X2tleSwgc2l6ZW9mKGlucHV0X2tleSkpIDw9 IDApIHsKKysgICAgICAgIFRFU1RfZXJyb3IoIkVWUF9LREZfQ1RSTF9TRVRfS0VZIik7CisrICAg ICAgICBnb3RvIGVycjsKKysgICAgfQorKyAgICBpZiAoRVZQX0tERl9jdHJsKGtjdHgsIEVWUF9L REZfQ1RSTF9TRVRfU0FMVCwgbGFiZWwsIHN0cmxlbihsYWJlbCkpIDw9IDApIHsKKysgICAgICAg IFRFU1RfZXJyb3IoIkVWUF9LREZfQ1RSTF9TRVRfU0FMVCIpOworKyAgICAgICAgZ290byBlcnI7 CisrICAgIH0KKysgICAgaWYgKEVWUF9LREZfY3RybChrY3R4LCBFVlBfS0RGX0NUUkxfU0VUX0tC X0lORk8sIHByZl9pbnB1dCwgc3RybGVuKHByZl9pbnB1dCkpIDw9IDApIHsKKysgICAgICAgIFRF U1RfZXJyb3IoIkVWUF9LREZfQ1RSTF9TRVRfS0JfSU5GTyIpOworKyAgICAgICAgZ290byBlcnI7 CisrICAgIH0KKysgICAgcmV0ID0gVEVTVF9pbnRfZ3QoRVZQX0tERl9kZXJpdmUoa2N0eCwgcmVz dWx0LCBzaXplb2YocmVzdWx0KSksIDApCisrICAgICAgICAmJiBURVNUX21lbV9lcShyZXN1bHQs IHNpemVvZihyZXN1bHQpLCBvdXRwdXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZW9mKG91dHB1dCkpOworK2VycjoKKysgICAgRVZQX0tERl9DVFhfZnJlZShrY3R4KTsKKysgICAg cmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGludCB0ZXN0X2tkZl9rYmtkZl84MDA5X3ByZjIo dm9pZCkKKyt7CisrICAgIGludCByZXQgPSAwOworKyAgICBFVlBfS0RGX0NUWCAqa2N0eDsKKysg ICAgY2hhciAqbGFiZWwgPSAicHJmIiwgKnByZl9pbnB1dCA9ICJ0ZXN0IjsKKysgICAgc3RhdGlj IHVuc2lnbmVkIGNoYXIgaW5wdXRfa2V5W10gPSB7CisrICAgICAgICAweDZELCAweDQwLCAweDRE LCAweDM3LCAweEZBLCAweEY3LCAweDlGLCAweDlELAorKyAgICAgICAgMHhGMCwgMHhEMywgMHgz NSwgMHg2OCwgMHhEMywgMHgyMCwgMHg2NiwgMHg5OCwKKysgICAgICAgIDB4MDAsIDB4RUIsIDB4 NDgsIDB4MzYsIDB4NDcsIDB4MkUsIDB4QTgsIDB4QTAsCisrICAgICAgICAweDI2LCAweEQxLCAw eDZCLCAweDcxLCAweDgyLCAweDQ2LCAweDBDLCAweDUyLAorKyAgICB9OworKyAgICBzdGF0aWMg dW5zaWduZWQgY2hhciBvdXRwdXRbXSA9IHsKKysgICAgICAgIDB4OTgsIDB4MDEsIDB4RjYsIDB4 OUEsIDB4MzYsIDB4OEMsIDB4MkIsIDB4RjYsCisrICAgICAgICAweDc1LCAweEU1LCAweDk1LCAw eDIxLCAweEUxLCAweDc3LCAweEQ5LCAweEEwLAorKyAgICAgICAgMHg3RiwgMHg2NywgMHhFRiwg MHhFMSwgMHhDRiwgMHhERSwgMHg4RCwgMHgzQywKKysgICAgICAgIDB4OEQsIDB4NkYsIDB4NkEs IDB4MDIsIDB4NTYsIDB4RTMsIDB4QjEsIDB4N0QsCisrICAgICAgICAweEIzLCAweEMxLCAweEI2 LCAweDJBLCAweEQxLCAweEI4LCAweDU1LCAweDMzLAorKyAgICAgICAgMHg2MCwgMHhEMSwgMHg3 MywgMHg2NywgMHhFQiwgMHgxNSwgMHgxNCwgMHhEMiwKKysgICAgfTsKKysgICAgdW5zaWduZWQg Y2hhciByZXN1bHRbc2l6ZW9mKG91dHB1dCldID0geyAwIH07CisrCisrICAgIGlmICgoa2N0eCA9 IEVWUF9LREZfQ1RYX25ld19pZChFVlBfS0RGX0tCKSkgPT0gTlVMTCkgeworKyAgICAgICAgVEVT VF9lcnJvcigiRVZQX0tERl9LQiIpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysgICAg aWYgKEVWUF9LREZfY3RybChrY3R4LCBFVlBfS0RGX0NUUkxfU0VUX0tCX01BQ19UWVBFLCBFVlBf S0RGX0tCX01BQ19UWVBFX0hNQUMpIDw9IDApIHsKKysgICAgICAgIFRFU1RfZXJyb3IoIkVWUF9L REZfQ1RSTF9TRVRfS0JfTUFDX1RZUEUiKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9Cisr ICAgIGlmIChFVlBfS0RGX2N0cmwoa2N0eCwgRVZQX0tERl9DVFJMX1NFVF9NRCwgRVZQX3NoYTM4 NCgpKSA8PSAwKSB7CisrICAgICAgICBURVNUX2Vycm9yKCJFVlBfS0RGX0NUUkxfU0VUX01EIik7 CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKyAgICBpZiAoRVZQX0tERl9jdHJsKGtjdHgs IEVWUF9LREZfQ1RSTF9TRVRfS0VZLCBpbnB1dF9rZXksIHNpemVvZihpbnB1dF9rZXkpKSA8PSAw KSB7CisrICAgICAgICBURVNUX2Vycm9yKCJFVlBfS0RGX0NUUkxfU0VUX0tFWSIpOworKyAgICAg ICAgZ290byBlcnI7CisrICAgIH0KKysgICAgaWYgKEVWUF9LREZfY3RybChrY3R4LCBFVlBfS0RG X0NUUkxfU0VUX1NBTFQsIGxhYmVsLCBzdHJsZW4obGFiZWwpKSA8PSAwKSB7CisrICAgICAgICBU RVNUX2Vycm9yKCJFVlBfS0RGX0NUUkxfU0VUX1NBTFQiKTsKKysgICAgICAgIGdvdG8gZXJyOwor KyAgICB9CisrICAgIGlmIChFVlBfS0RGX2N0cmwoa2N0eCwgRVZQX0tERl9DVFJMX1NFVF9LQl9J TkZPLCBwcmZfaW5wdXQsIHN0cmxlbihwcmZfaW5wdXQpKSA8PSAwKSB7CisrICAgICAgICBURVNU X2Vycm9yKCJFVlBfS0RGX0NUUkxfU0VUX0tCX0lORk8iKTsKKysgICAgICAgIGdvdG8gZXJyOwor KyAgICB9CisrICAgIHJldCA9IFRFU1RfaW50X2d0KEVWUF9LREZfZGVyaXZlKGtjdHgsIHJlc3Vs dCwgc2l6ZW9mKHJlc3VsdCkpLCAwKQorKyAgICAgICAgJiYgVEVTVF9tZW1fZXEocmVzdWx0LCBz aXplb2YocmVzdWx0KSwgb3V0cHV0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVv ZihvdXRwdXQpKTsKKytlcnI6CisrICAgIEVWUF9LREZfQ1RYX2ZyZWUoa2N0eCk7CisrICAgIHJl dHVybiByZXQ7CisrfQorKworIGludCBzZXR1cF90ZXN0cyh2b2lkKQorIHsKKysgICAgQUREX1RF U1QodGVzdF9rZGZfa2JrZGZfNjgwM18xMjgpOworKyAgICBBRERfVEVTVCh0ZXN0X2tkZl9rYmtk Zl82ODAzXzI1Nik7CisrICAgIEFERF9URVNUKHRlc3Rfa2RmX2tia2RmXzgwMDlfcHJmMSk7Cisr ICAgIEFERF9URVNUKHRlc3Rfa2RmX2tia2RmXzgwMDlfcHJmMik7CisgICAgIEFERF9URVNUKHRl c3Rfa2RmX3RsczFfcHJmKTsKKyAgICAgQUREX1RFU1QodGVzdF9rZGZfaGtkZik7CisgICAgIEFE RF9URVNUKHRlc3Rfa2RmX3Bia2RmMik7Cg==