From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1SpG9S-0006yu-KU for kexec@lists.infradead.org; Thu, 12 Jul 2012 09:57:47 +0000 Message-ID: <4FFE9F79.5010805@cn.fujitsu.com> Date: Thu, 12 Jul 2012 17:57:13 +0800 From: Zhang Yanfei MIME-Version: 1.0 Subject: [PATCH v5 2/3] KVM-INTEL: Add new module vmcsinfo-intel to fill VMCSINFO References: <4FFE9EDE.8080107@cn.fujitsu.com> In-Reply-To: <4FFE9EDE.8080107@cn.fujitsu.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: kexec-bounces@lists.infradead.org Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Avi Kivity , mtosatti@redhat.com Cc: dzickus@redhat.com, luto@mit.edu, kvm@vger.kernel.org, Joerg Roedel , kexec@lists.infradead.org, linux-kernel@vger.kernel.org, paul.gortmaker@windriver.com, ludwig.nussel@suse.de, ebiederm@xmission.com, Greg KH VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IG1vZHVsZSBuYW1lZCB2bWNzaW5mby1pbnRlbC4g VGhlCm1vZHVsZSBmaWxscyBWTUNTSU5GTyB3aXRoIHRoZSBWTUNTIHJldmlzaW9uIGlkZW50aWZp ZXIsCmFuZCBvZmZzZXRzIG9mIFZNQ1MgZmllbGRzLgoKTm90ZSwgb2Zmc2V0cyBvZiBmaWVsZHMg dGhhdCBkZWZpbmVkIGluIEludGVsIHNwZWNpZmljYXRpb24KKEludGVswq4gNjQgYW5kIElBLTMy IEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVy4oCZcyBNYW51YWwsClZvbHVtZSAzQykg YnV0IG5vdCBkZWZpbmVkIGluICp2bWNzX2ZpZWxkKiB3aWxsIG5vdCBiZSBmaWxsZWQgaW4KVk1D U0lORk8uIEFuZCwgc29tZSBmaWVsZHMgbWF5IGJlIHVuc3VwcG9ydGVkIGluIHNvbWUgbWFjaGlu ZXMsCmluIHRoZXNlIG1hY2hpbmVzLCBjb3JyZXNwb25kaW5nIG9mZnNldHMgd2lsbCBiZSB6ZXJv LgoKQmVzaWRlcywgdGhpcyBwYXRjaCBhbHNvIGV4cG9ydHMgdm1jcyByZXZpc2lvbiBpZGVudGlm aWVyIHZpYQovc3lzL2RldmljZXMvc3lzdGVtL2NwdS92bWNzL2lkIGFuZCBvZmZzZXRzIG9mIGZp ZWxkcyB2aWEKL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvdm1jcy8uCkluZGl2aWR1YWwgb2Zmc2V0 cyBhcmUgY29udGFpbmVkIGluIHN1YmZpbGVzIG5hbWVkIGJ5IHRoZSBmaWxlZCdzCmVuY29kaW5n LCBlLmcuOiAvc3lzL2RldmljZXMvY3B1L3ZtY3MvMDgwMAoKU2lnbmVkLW9mZi1ieTogemhhbmd5 YW5mZWkgPHpoYW5neWFuZmVpQGNuLmZ1aml0c3UuY29tPgotLS0KIGFyY2gveDg2L2t2bS9LY29u ZmlnICAgIHwgICAxMSArCiBhcmNoL3g4Ni9rdm0vTWFrZWZpbGUgICB8ICAgIDMgKwogYXJjaC94 ODYva3ZtL3ZtY3NpbmZvLmMgfCAgNzE0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDcyOCBpbnNlcnRpb25zKCspLCAwIGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L2t2bS92bWNzaW5mby5jCgpk aWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL0tjb25maWcgYi9hcmNoL3g4Ni9rdm0vS2NvbmZpZwpp bmRleCBhMjhmMzM4Li4xZGQ2NGIxIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vS2NvbmZpZwor KysgYi9hcmNoL3g4Ni9rdm0vS2NvbmZpZwpAQCAtNjMsNiArNjMsMTcgQEAgY29uZmlnIEtWTV9J TlRFTAogCSAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUg bW9kdWxlCiAJICB3aWxsIGJlIGNhbGxlZCBrdm0taW50ZWwuCiAKK2NvbmZpZyBWTUNTSU5GT19J TlRFTAorCXRyaXN0YXRlICJFeHBvcnQgVk1DU0lORk8gZm9yIEludGVsIHByb2Nlc3NvcnMiCisJ ZGVwZW5kcyBvbiBLVk1fSU5URUwKKwktLS1oZWxwLS0tCisJICBQcm92aWRlcyBzdXBwb3J0IGZv ciBleHBvcnRpbmcgVk1DU0lORk8gb24gSW50ZWwgcHJvY2Vzc29ycyBlcXVpcHBlZAorCSAgd2l0 aCB0aGUgVlQgZXh0ZW5zaW9ucy4gVGhlIFZNQ1NJTkZPIGNvbnRhaW5zIGEgVk1DUyByZXZpc2lv bgorCSAgaWRlbnRpZmllciBhbmQgb2Zmc2V0cyBvZiBWTUNTIGZpZWxkcy4KKworCSAgVG8gY29t cGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlCisJICB3aWxs IGJlIGNhbGxlZCB2bWNzaW5mby1pbnRlbC4KKwogY29uZmlnIEtWTV9BTUQKIAl0cmlzdGF0ZSAi S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0IgogCWRlcGVuZHMgb24gS1ZNCmRpZmYgLS1n aXQgYS9hcmNoL3g4Ni9rdm0vTWFrZWZpbGUgYi9hcmNoL3g4Ni9rdm0vTWFrZWZpbGUKaW5kZXgg NGY1NzllOC4uMTJhMWVmNiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL01ha2VmaWxlCisrKyBi L2FyY2gveDg2L2t2bS9NYWtlZmlsZQpAQCAtNCw2ICs0LDcgQEAgY2NmbGFncy15ICs9IC1Jdmly dC9rdm0gLUlhcmNoL3g4Ni9rdm0KIENGTEFHU194ODYubyA6PSAtSS4KIENGTEFHU19zdm0ubyA6 PSAtSS4KIENGTEFHU192bXgubyA6PSAtSS4KK0NGTEFHU192bWNzaW5mby5vIDo9IC1JLgogCiBr dm0teQkJCSs9ICQoYWRkcHJlZml4IC4uLy4uLy4uL3ZpcnQva3ZtLywga3ZtX21haW4ubyBpb2Fw aWMubyBcCiAJCQkJY29hbGVzY2VkX21taW8ubyBpcnFfY29tbS5vIGV2ZW50ZmQubyBcCkBAIC0x NSw3ICsxNiw5IEBAIGt2bS15CQkJKz0geDg2Lm8gbW11Lm8gZW11bGF0ZS5vIGk4MjU5Lm8gaXJx Lm8gbGFwaWMubyBcCiAJCQkgICBpODI1NC5vIHRpbWVyLm8gY3B1aWQubyBwbXUubwoga3ZtLWlu dGVsLXkJCSs9IHZteC5vCiBrdm0tYW1kLXkJCSs9IHN2bS5vCit2bWNzaW5mby1pbnRlbC15CSs9 IHZtY3NpbmZvLm8KIAogb2JqLSQoQ09ORklHX0tWTSkJKz0ga3ZtLm8KIG9iai0kKENPTkZJR19L Vk1fSU5URUwpCSs9IGt2bS1pbnRlbC5vCiBvYmotJChDT05GSUdfS1ZNX0FNRCkJKz0ga3ZtLWFt ZC5vCitvYmotJChDT05GSUdfVk1DU0lORk9fSU5URUwpCSs9IHZtY3NpbmZvLWludGVsLm8KZGlm ZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bWNzaW5mby5jIGIvYXJjaC94ODYva3ZtL3ZtY3NpbmZv LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDczMDQ3MwotLS0gL2Rldi9u dWxsCisrKyBiL2FyY2gveDg2L2t2bS92bWNzaW5mby5jCkBAIC0wLDAgKzEsNzE0IEBACisvKgor ICogS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSBkcml2ZXIgZm9yIExpbnV4CisgKgorICog VGhpcyBtb2R1bGUgZW5hYmxlcyBtYWNoaW5lcyB3aXRoIEludGVsIFZULXggZXh0ZW5zaW9ucyB0 byBleHBvcnQKKyAqIG9mZnNldHMgb2YgVk1DUyBmaWVsZHMgZm9yIGd1ZXN0IGRlYnVnZ2luZy4K KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRnVqaXRzdSwgSW5jLgorICoKKyAqIEF1dGhvcnM6 CisgKiAgIFpoYW5nIFlhbmZlaSA8emhhbmd5YW5mZWlAY24uZnVqaXRzdS5jb20+CisgKgorICog VGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCwgdmVy c2lvbiAyLiAgU2VlCisgKiB0aGUgQ09QWUlORyBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0 b3J5LgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGlu dXgvbW9kX2RldmljZXRhYmxlLmg+CisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVk ZSA8bGludXgvc3dhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2NwdS5oPgorCisjaW5jbHVkZSA8YXNt L3ZteC5oPgorCitNT0RVTEVfQVVUSE9SKCJGdWppdHN1Iik7CitNT0RVTEVfTElDRU5TRSgiR1BM Iik7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeDg2X2NwdV9pZCB2bWNzaW5mb19jcHVfaWRbXSA9 IHsKKwlYODZfRkVBVFVSRV9NQVRDSChYODZfRkVBVFVSRV9WTVgpLAorCXt9Cit9OworTU9EVUxF X0RFVklDRV9UQUJMRSh4ODZjcHUsIHZtY3NpbmZvX2NwdV9pZCk7CisKKy8qCisgKiB2bWNzIGZp ZWxkIG9mZnNldHMuCisgKi8KK3N0YXRpYyBzdHJ1Y3Qgdm1jc2luZm8geworCXUzMiB2bWNzX3Jl dmlzaW9uX2lkOworCXUxNiBmaWVsZF9vZmZzZXRbXVsyXTsKK30gdm1jc2luZm8gPSB7CisJMCwK Kwl7CisJCXtWSVJUVUFMX1BST0NFU1NPUl9JRCwgMH0sCisJCXtHVUVTVF9FU19TRUxFQ1RPUiwg MH0sCisJCXtHVUVTVF9DU19TRUxFQ1RPUiwgMH0sCisJCXtHVUVTVF9TU19TRUxFQ1RPUiwgMH0s CisJCXtHVUVTVF9EU19TRUxFQ1RPUiwgMH0sCisJCXtHVUVTVF9GU19TRUxFQ1RPUiwgMH0sCisJ CXtHVUVTVF9HU19TRUxFQ1RPUiwgMH0sCisJCXtHVUVTVF9MRFRSX1NFTEVDVE9SLCAwfSwKKwkJ e0dVRVNUX1RSX1NFTEVDVE9SLCAwfSwKKwkJe0hPU1RfRVNfU0VMRUNUT1IsIDB9LAorCQl7SE9T VF9DU19TRUxFQ1RPUiwgMH0sCisJCXtIT1NUX1NTX1NFTEVDVE9SLCAwfSwKKwkJe0hPU1RfRFNf U0VMRUNUT1IsIDB9LAorCQl7SE9TVF9GU19TRUxFQ1RPUiwgMH0sCisJCXtIT1NUX0dTX1NFTEVD VE9SLCAwfSwKKwkJe0hPU1RfVFJfU0VMRUNUT1IsIDB9LAorCQl7SU9fQklUTUFQX0EsIDB9LAor CQl7SU9fQklUTUFQX0FfSElHSCwgMH0sCisJCXtJT19CSVRNQVBfQiwgMH0sCisJCXtJT19CSVRN QVBfQl9ISUdILCAwfSwKKwkJe01TUl9CSVRNQVAsIDB9LAorCQl7TVNSX0JJVE1BUF9ISUdILCAw fSwKKwkJe1ZNX0VYSVRfTVNSX1NUT1JFX0FERFIsIDB9LAorCQl7Vk1fRVhJVF9NU1JfU1RPUkVf QUREUl9ISUdILCAwfSwKKwkJe1ZNX0VYSVRfTVNSX0xPQURfQUREUiwgMH0sCisJCXtWTV9FWElU X01TUl9MT0FEX0FERFJfSElHSCwgMH0sCisJCXtWTV9FTlRSWV9NU1JfTE9BRF9BRERSLCAwfSwK KwkJe1ZNX0VOVFJZX01TUl9MT0FEX0FERFJfSElHSCwgMH0sCisJCXtUU0NfT0ZGU0VULCAwfSwK KwkJe1RTQ19PRkZTRVRfSElHSCwgMH0sCisJCXtWSVJUVUFMX0FQSUNfUEFHRV9BRERSLCAwfSwK KwkJe1ZJUlRVQUxfQVBJQ19QQUdFX0FERFJfSElHSCwgMH0sCisJCXtBUElDX0FDQ0VTU19BRERS LCAwfSwKKwkJe0FQSUNfQUNDRVNTX0FERFJfSElHSCwgMH0sCisJCXtFUFRfUE9JTlRFUiwgMH0s CisJCXtFUFRfUE9JTlRFUl9ISUdILCAwfSwKKwkJe0dVRVNUX1BIWVNJQ0FMX0FERFJFU1MsIDB9 LAorCQl7R1VFU1RfUEhZU0lDQUxfQUREUkVTU19ISUdILCAwfSwKKwkJe1ZNQ1NfTElOS19QT0lO VEVSLCAwfSwKKwkJe1ZNQ1NfTElOS19QT0lOVEVSX0hJR0gsIDB9LAorCQl7R1VFU1RfSUEzMl9E RUJVR0NUTCwgMH0sCisJCXtHVUVTVF9JQTMyX0RFQlVHQ1RMX0hJR0gsIDB9LAorCQl7R1VFU1Rf SUEzMl9QQVQsIDB9LAorCQl7R1VFU1RfSUEzMl9QQVRfSElHSCwgMH0sCisJCXtHVUVTVF9JQTMy X0VGRVIsIDB9LAorCQl7R1VFU1RfSUEzMl9FRkVSX0hJR0gsIDB9LAorCQl7R1VFU1RfSUEzMl9Q RVJGX0dMT0JBTF9DVFJMLCAwfSwKKwkJe0dVRVNUX0lBMzJfUEVSRl9HTE9CQUxfQ1RSTF9ISUdI LCAwfSwKKwkJe0dVRVNUX1BEUFRSMCwgMH0sCisJCXtHVUVTVF9QRFBUUjBfSElHSCwgMH0sCisJ CXtHVUVTVF9QRFBUUjEsIDB9LAorCQl7R1VFU1RfUERQVFIxX0hJR0gsIDB9LAorCQl7R1VFU1Rf UERQVFIyLCAwfSwKKwkJe0dVRVNUX1BEUFRSMl9ISUdILCAwfSwKKwkJe0dVRVNUX1BEUFRSMywg MH0sCisJCXtHVUVTVF9QRFBUUjNfSElHSCwgMH0sCisJCXtIT1NUX0lBMzJfUEFULCAwfSwKKwkJ e0hPU1RfSUEzMl9QQVRfSElHSCwgMH0sCisJCXtIT1NUX0lBMzJfRUZFUiwgMH0sCisJCXtIT1NU X0lBMzJfRUZFUl9ISUdILCAwfSwKKwkJe0hPU1RfSUEzMl9QRVJGX0dMT0JBTF9DVFJMLCAwfSwK KwkJe0hPU1RfSUEzMl9QRVJGX0dMT0JBTF9DVFJMX0hJR0gsIDB9LAorCQl7UElOX0JBU0VEX1ZN X0VYRUNfQ09OVFJPTCwgMH0sCisJCXtDUFVfQkFTRURfVk1fRVhFQ19DT05UUk9MLCAwfSwKKwkJ e0VYQ0VQVElPTl9CSVRNQVAsIDB9LAorCQl7UEFHRV9GQVVMVF9FUlJPUl9DT0RFX01BU0ssIDB9 LAorCQl7UEFHRV9GQVVMVF9FUlJPUl9DT0RFX01BVENILCAwfSwKKwkJe0NSM19UQVJHRVRfQ09V TlQsIDB9LAorCQl7Vk1fRVhJVF9DT05UUk9MUywgMH0sCisJCXtWTV9FWElUX01TUl9TVE9SRV9D T1VOVCwgMH0sCisJCXtWTV9FWElUX01TUl9MT0FEX0NPVU5ULCAwfSwKKwkJe1ZNX0VOVFJZX0NP TlRST0xTLCAwfSwKKwkJe1ZNX0VOVFJZX01TUl9MT0FEX0NPVU5ULCAwfSwKKwkJe1ZNX0VOVFJZ X0lOVFJfSU5GT19GSUVMRCwgMH0sCisJCXtWTV9FTlRSWV9FWENFUFRJT05fRVJST1JfQ09ERSwg MH0sCisJCXtWTV9FTlRSWV9JTlNUUlVDVElPTl9MRU4sIDB9LAorCQl7VFBSX1RIUkVTSE9MRCwg MH0sCisJCXtTRUNPTkRBUllfVk1fRVhFQ19DT05UUk9MLCAwfSwKKwkJe1BMRV9HQVAsIDB9LAor CQl7UExFX1dJTkRPVywgMH0sCisJCXtWTV9JTlNUUlVDVElPTl9FUlJPUiwgMH0sCisJCXtWTV9F WElUX1JFQVNPTiwgMH0sCisJCXtWTV9FWElUX0lOVFJfSU5GTywgMH0sCisJCXtWTV9FWElUX0lO VFJfRVJST1JfQ09ERSwgMH0sCisJCXtJRFRfVkVDVE9SSU5HX0lORk9fRklFTEQsIDB9LAorCQl7 SURUX1ZFQ1RPUklOR19FUlJPUl9DT0RFLCAwfSwKKwkJe1ZNX0VYSVRfSU5TVFJVQ1RJT05fTEVO LCAwfSwKKwkJe1ZNWF9JTlNUUlVDVElPTl9JTkZPLCAwfSwKKwkJe0dVRVNUX0VTX0xJTUlULCAw fSwKKwkJe0dVRVNUX0NTX0xJTUlULCAwfSwKKwkJe0dVRVNUX1NTX0xJTUlULCAwfSwKKwkJe0dV RVNUX0RTX0xJTUlULCAwfSwKKwkJe0dVRVNUX0ZTX0xJTUlULCAwfSwKKwkJe0dVRVNUX0dTX0xJ TUlULCAwfSwKKwkJe0dVRVNUX0xEVFJfTElNSVQsIDB9LAorCQl7R1VFU1RfVFJfTElNSVQsIDB9 LAorCQl7R1VFU1RfR0RUUl9MSU1JVCwgMH0sCisJCXtHVUVTVF9JRFRSX0xJTUlULCAwfSwKKwkJ e0dVRVNUX0VTX0FSX0JZVEVTLCAwfSwKKwkJe0dVRVNUX0NTX0FSX0JZVEVTLCAwfSwKKwkJe0dV RVNUX1NTX0FSX0JZVEVTLCAwfSwKKwkJe0dVRVNUX0RTX0FSX0JZVEVTLCAwfSwKKwkJe0dVRVNU X0ZTX0FSX0JZVEVTLCAwfSwKKwkJe0dVRVNUX0dTX0FSX0JZVEVTLCAwfSwKKwkJe0dVRVNUX0xE VFJfQVJfQllURVMsIDB9LAorCQl7R1VFU1RfVFJfQVJfQllURVMsIDB9LAorCQl7R1VFU1RfSU5U RVJSVVBUSUJJTElUWV9JTkZPLCAwfSwKKwkJe0dVRVNUX0FDVElWSVRZX1NUQVRFLCAwfSwKKwkJ e0dVRVNUX1NZU0VOVEVSX0NTLCAwfSwKKwkJe0hPU1RfSUEzMl9TWVNFTlRFUl9DUywgMH0sCisJ CXtDUjBfR1VFU1RfSE9TVF9NQVNLLCAwfSwKKwkJe0NSNF9HVUVTVF9IT1NUX01BU0ssIDB9LAor CQl7Q1IwX1JFQURfU0hBRE9XLCAwfSwKKwkJe0NSNF9SRUFEX1NIQURPVywgMH0sCisJCXtDUjNf VEFSR0VUX1ZBTFVFMCwgMH0sCisJCXtDUjNfVEFSR0VUX1ZBTFVFMSwgMH0sCisJCXtDUjNfVEFS R0VUX1ZBTFVFMiwgMH0sCisJCXtDUjNfVEFSR0VUX1ZBTFVFMywgMH0sCisJCXtFWElUX1FVQUxJ RklDQVRJT04sIDB9LAorCQl7R1VFU1RfTElORUFSX0FERFJFU1MsIDB9LAorCQl7R1VFU1RfQ1Iw LCAwfSwKKwkJe0dVRVNUX0NSMywgMH0sCisJCXtHVUVTVF9DUjQsIDB9LAorCQl7R1VFU1RfRVNf QkFTRSwgMH0sCisJCXtHVUVTVF9DU19CQVNFLCAwfSwKKwkJe0dVRVNUX1NTX0JBU0UsIDB9LAor CQl7R1VFU1RfRFNfQkFTRSwgMH0sCisJCXtHVUVTVF9GU19CQVNFLCAwfSwKKwkJe0dVRVNUX0dT X0JBU0UsIDB9LAorCQl7R1VFU1RfTERUUl9CQVNFLCAwfSwKKwkJe0dVRVNUX1RSX0JBU0UsIDB9 LAorCQl7R1VFU1RfR0RUUl9CQVNFLCAwfSwKKwkJe0dVRVNUX0lEVFJfQkFTRSwgMH0sCisJCXtH VUVTVF9EUjcsIDB9LAorCQl7R1VFU1RfUlNQLCAwfSwKKwkJe0dVRVNUX1JJUCwgMH0sCisJCXtH VUVTVF9SRkxBR1MsIDB9LAorCQl7R1VFU1RfUEVORElOR19EQkdfRVhDRVBUSU9OUywgMH0sCisJ CXtHVUVTVF9TWVNFTlRFUl9FU1AsIDB9LAorCQl7R1VFU1RfU1lTRU5URVJfRUlQLCAwfSwKKwkJ e0hPU1RfQ1IwLCAwfSwKKwkJe0hPU1RfQ1IzLCAwfSwKKwkJe0hPU1RfQ1I0LCAwfSwKKwkJe0hP U1RfRlNfQkFTRSwgMH0sCisJCXtIT1NUX0dTX0JBU0UsIDB9LAorCQl7SE9TVF9UUl9CQVNFLCAw fSwKKwkJe0hPU1RfR0RUUl9CQVNFLCAwfSwKKwkJe0hPU1RfSURUUl9CQVNFLCAwfSwKKwkJe0hP U1RfSUEzMl9TWVNFTlRFUl9FU1AsIDB9LAorCQl7SE9TVF9JQTMyX1NZU0VOVEVSX0VJUCwgMH0s CisJCXtIT1NUX1JTUCwgMH0sCisJCXtIT1NUX1JJUCwgMH0KKwl9Cit9OworCitjb25zdCBjaGFy IHZtY3NfZ3JvdXBfbmFtZVtdID0gInZtY3MiOworCitzdGF0aWMgc3NpemVfdCB2bWNzX2lkX3No b3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLAorCQkJICAgIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwg dm1jc2luZm8udm1jc19yZXZpc2lvbl9pZCk7Cit9CitzdGF0aWMgREVWSUNFX0FUVFIoaWQsIDA0 NDQsIHZtY3NfaWRfc2hvdywgTlVMTCk7CisKKyNkZWZpbmUgQlVJTERfT0ZGU0VUX1NIT1coaSwg ZmllbGRfY29kZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3N0YXRp YyBzc2l6ZV90IF8jI2ZpZWxkX2NvZGUjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgICAgICAg ICAgICAgICAgICAgICAgIFwKKwkJCQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs ICAgICAgICAgICAgXAorCQkJCSAgICBjaGFyICpidWYpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJcmV0dXJuIHNwcmludGYoYnVmLCAi JWRcbiIsIHZtY3NpbmZvLmZpZWxkX29mZnNldFtpXVsxXSk7ICAgICAgICAgICAgIFwKK30gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKK3N0YXRpYyBERVZJQ0VfQVRUUihmaWVsZF9jb2RlLCAwNDQ0LCBf IyNmaWVsZF9jb2RlIyNfc2hvdywgTlVMTCk7CisKK0JVSUxEX09GRlNFVF9TSE9XKCAgMCwgMDAw MCk7IC8qIFZJUlRVQUxfUFJPQ0VTU09SX0lEICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRf U0hPVyggIDEsIDA4MDApOyAvKiBHVUVTVF9FU19TRUxFQ1RPUiAgICAgICAgICAgICAgICAqLwor QlVJTERfT0ZGU0VUX1NIT1coICAyLCAwODAyKTsgLyogR1VFU1RfQ1NfU0VMRUNUT1IgICAgICAg ICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCAgMywgMDgwNCk7IC8qIEdVRVNUX1NTX1NF TEVDVE9SICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggIDQsIDA4MDYpOyAv KiBHVUVTVF9EU19TRUxFQ1RPUiAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1co ICA1LCAwODA4KTsgLyogR1VFU1RfRlNfU0VMRUNUT1IgICAgICAgICAgICAgICAgKi8KK0JVSUxE X09GRlNFVF9TSE9XKCAgNiwgMDgwYSk7IC8qIEdVRVNUX0dTX1NFTEVDVE9SICAgICAgICAgICAg ICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggIDcsIDA4MGMpOyAvKiBHVUVTVF9MRFRSX1NFTEVD VE9SICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coICA4LCAwODBlKTsgLyogR1VF U1RfVFJfU0VMRUNUT1IgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCAgOSwg MGMwMCk7IC8qIEhPU1RfRVNfU0VMRUNUT1IgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZT RVRfU0hPVyggMTAsIDBjMDIpOyAvKiBIT1NUX0NTX1NFTEVDVE9SICAgICAgICAgICAgICAgICAq LworQlVJTERfT0ZGU0VUX1NIT1coIDExLCAwYzA0KTsgLyogSE9TVF9TU19TRUxFQ1RPUiAgICAg ICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCAxMiwgMGMwNik7IC8qIEhPU1RfRFNf U0VMRUNUT1IgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggMTMsIDBjMDgp OyAvKiBIT1NUX0ZTX1NFTEVDVE9SICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NI T1coIDE0LCAwYzBhKTsgLyogSE9TVF9HU19TRUxFQ1RPUiAgICAgICAgICAgICAgICAgKi8KK0JV SUxEX09GRlNFVF9TSE9XKCAxNSwgMGMwYyk7IC8qIEhPU1RfVFJfU0VMRUNUT1IgICAgICAgICAg ICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggMTYsIDIwMDApOyAvKiBJT19CSVRNQVBfQSAg ICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDE3LCAyMDAxKTsgLyog SU9fQklUTUFQX0FfSElHSCAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCAx OCwgMjAwMik7IC8qIElPX0JJVE1BUF9CICAgICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9P RkZTRVRfU0hPVyggMTksIDIwMDMpOyAvKiBJT19CSVRNQVBfQl9ISUdIICAgICAgICAgICAgICAg ICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDIwLCAyMDA0KTsgLyogTVNSX0JJVE1BUCAgICAgICAg ICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCAyMSwgMjAwNSk7IC8qIE1TUl9C SVRNQVBfSElHSCAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggMjIsIDIw MDYpOyAvKiBWTV9FWElUX01TUl9TVE9SRV9BRERSICAgICAgICAgICAqLworQlVJTERfT0ZGU0VU X1NIT1coIDIzLCAyMDA3KTsgLyogVk1fRVhJVF9NU1JfU1RPUkVfQUREUl9ISUdIICAgICAgKi8K K0JVSUxEX09GRlNFVF9TSE9XKCAyNCwgMjAwOCk7IC8qIFZNX0VYSVRfTVNSX0xPQURfQUREUiAg ICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggMjUsIDIwMDkpOyAvKiBWTV9FWElUX01T Ul9MT0FEX0FERFJfSElHSCAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDI2LCAyMDBhKTsg LyogVk1fRU5UUllfTVNSX0xPQURfQUREUiAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9X KCAyNywgMjAwYik7IC8qIFZNX0VOVFJZX01TUl9MT0FEX0FERFJfSElHSCAgICAgICovCitCVUlM RF9PRkZTRVRfU0hPVyggMjgsIDIwMTApOyAvKiBUU0NfT0ZGU0VUICAgICAgICAgICAgICAgICAg ICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDI5LCAyMDExKTsgLyogVFNDX09GRlNFVF9ISUdI ICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCAzMCwgMjAxMik7IC8qIFZJ UlRVQUxfQVBJQ19QQUdFX0FERFIgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggMzEs IDIwMTMpOyAvKiBWSVJUVUFMX0FQSUNfUEFHRV9BRERSX0hJR0ggICAgICAqLworQlVJTERfT0ZG U0VUX1NIT1coIDMyLCAyMDE0KTsgLyogQVBJQ19BQ0NFU1NfQUREUiAgICAgICAgICAgICAgICAg Ki8KK0JVSUxEX09GRlNFVF9TSE9XKCAzMywgMjAxNSk7IC8qIEFQSUNfQUNDRVNTX0FERFJfSElH SCAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggMzQsIDIwMWEpOyAvKiBFUFRfUE9J TlRFUiAgICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDM1LCAyMDFi KTsgLyogRVBUX1BPSU5URVJfSElHSCAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9T SE9XKCAzNiwgMjQwMCk7IC8qIEdVRVNUX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgICAgICovCitC VUlMRF9PRkZTRVRfU0hPVyggMzcsIDI0MDEpOyAvKiBHVUVTVF9QSFlTSUNBTF9BRERSRVNTX0hJ R0ggICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDM4LCAyODAwKTsgLyogVk1DU19MSU5LX1BP SU5URVIgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCAzOSwgMjgwMSk7IC8q IFZNQ1NfTElOS19QT0lOVEVSX0hJR0ggICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygg NDAsIDI4MDIpOyAvKiBHVUVTVF9JQTMyX0RFQlVHQ1RMICAgICAgICAgICAgICAqLworQlVJTERf T0ZGU0VUX1NIT1coIDQxLCAyODAzKTsgLyogR1VFU1RfSUEzMl9ERUJVR0NUTF9ISUdIICAgICAg ICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCA0MiwgMjgwNCk7IC8qIEdVRVNUX0lBMzJfUEFUICAg ICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggNDMsIDI4MDUpOyAvKiBHVUVT VF9JQTMyX1BBVF9ISUdIICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDQ0LCAy ODA2KTsgLyogR1VFU1RfSUEzMl9FRkVSICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNF VF9TSE9XKCA0NSwgMjgwNyk7IC8qIEdVRVNUX0lBMzJfRUZFUl9ISUdIICAgICAgICAgICAgICov CitCVUlMRF9PRkZTRVRfU0hPVyggNDYsIDI4MDgpOyAvKiBHVUVTVF9JQTMyX1BFUkZfR0xPQkFM X0NUUkwgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDQ3LCAyODA5KTsgLyogR1VFU1RfSUEz Ml9QRVJGX0dMT0JBTF9DVFJMX0hJR0ggKi8KK0JVSUxEX09GRlNFVF9TSE9XKCA0OCwgMjgwYSk7 IC8qIEdVRVNUX1BEUFRSMCAgICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hP VyggNDksIDI4MGIpOyAvKiBHVUVTVF9QRFBUUjBfSElHSCAgICAgICAgICAgICAgICAqLworQlVJ TERfT0ZGU0VUX1NIT1coIDUwLCAyODBjKTsgLyogR1VFU1RfUERQVFIxICAgICAgICAgICAgICAg ICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCA1MSwgMjgwZCk7IC8qIEdVRVNUX1BEUFRSMV9I SUdIICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggNTIsIDI4MGUpOyAvKiBH VUVTVF9QRFBUUjIgICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDUz LCAyODBmKTsgLyogR1VFU1RfUERQVFIyX0hJR0ggICAgICAgICAgICAgICAgKi8KK0JVSUxEX09G RlNFVF9TSE9XKCA1NCwgMjgxMCk7IC8qIEdVRVNUX1BEUFRSMyAgICAgICAgICAgICAgICAgICAg ICovCitCVUlMRF9PRkZTRVRfU0hPVyggNTUsIDI4MTEpOyAvKiBHVUVTVF9QRFBUUjNfSElHSCAg ICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDU2LCAyYzAwKTsgLyogSE9TVF9J QTMyX1BBVCAgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCA1NywgMmMw MSk7IC8qIEhPU1RfSUEzMl9QQVRfSElHSCAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRf U0hPVyggNTgsIDJjMDIpOyAvKiBIT1NUX0lBMzJfRUZFUiAgICAgICAgICAgICAgICAgICAqLwor QlVJTERfT0ZGU0VUX1NIT1coIDU5LCAyYzAzKTsgLyogSE9TVF9JQTMyX0VGRVJfSElHSCAgICAg ICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCA2MCwgMmMwNCk7IC8qIEhPU1RfSUEzMl9Q RVJGX0dMT0JBTF9DVFJMICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggNjEsIDJjMDUpOyAv KiBIT1NUX0lBMzJfUEVSRl9HTE9CQUxfQ1RSTF9ISUdIICAqLworQlVJTERfT0ZGU0VUX1NIT1co IDYyLCA0MDAwKTsgLyogUElOX0JBU0VEX1ZNX0VYRUNfQ09OVFJPTCAgICAgICAgKi8KK0JVSUxE X09GRlNFVF9TSE9XKCA2MywgNDAwMik7IC8qIENQVV9CQVNFRF9WTV9FWEVDX0NPTlRST0wgICAg ICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggNjQsIDQwMDQpOyAvKiBFWENFUFRJT05fQklUTUFQ ICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDY1LCA0MDA2KTsgLyogUEFH RV9GQVVMVF9FUlJPUl9DT0RFX01BU0sgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCA2Niwg NDAwOCk7IC8qIFBBR0VfRkFVTFRfRVJST1JfQ09ERV9NQVRDSCAgICAgICovCitCVUlMRF9PRkZT RVRfU0hPVyggNjcsIDQwMGEpOyAvKiBDUjNfVEFSR0VUX0NPVU5UICAgICAgICAgICAgICAgICAq LworQlVJTERfT0ZGU0VUX1NIT1coIDY4LCA0MDBjKTsgLyogVk1fRVhJVF9DT05UUk9MUyAgICAg ICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCA2OSwgNDAwZSk7IC8qIFZNX0VYSVRf TVNSX1NUT1JFX0NPVU5UICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggNzAsIDQwMTAp OyAvKiBWTV9FWElUX01TUl9MT0FEX0NPVU5UICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NI T1coIDcxLCA0MDEyKTsgLyogVk1fRU5UUllfQ09OVFJPTFMgICAgICAgICAgICAgICAgKi8KK0JV SUxEX09GRlNFVF9TSE9XKCA3MiwgNDAxNCk7IC8qIFZNX0VOVFJZX01TUl9MT0FEX0NPVU5UICAg ICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggNzMsIDQwMTYpOyAvKiBWTV9FTlRSWV9JTlRS X0lORk9fRklFTEQgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDc0LCA0MDE4KTsgLyog Vk1fRU5UUllfRVhDRVBUSU9OX0VSUk9SX0NPREUgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCA3 NSwgNDAxYSk7IC8qIFZNX0VOVFJZX0lOU1RSVUNUSU9OX0xFTiAgICAgICAgICovCitCVUlMRF9P RkZTRVRfU0hPVyggNzYsIDQwMWMpOyAvKiBUUFJfVEhSRVNIT0xEICAgICAgICAgICAgICAgICAg ICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDc3LCA0MDFlKTsgLyogU0VDT05EQVJZX1ZNX0VYRUNf Q09OVFJPTCAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCA3OCwgNDAyMCk7IC8qIFBMRV9H QVAgICAgICAgICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggNzksIDQw MjIpOyAvKiBQTEVfV0lORE9XICAgICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VU X1NIT1coIDgwLCA0NDAwKTsgLyogVk1fSU5TVFJVQ1RJT05fRVJST1IgICAgICAgICAgICAgKi8K K0JVSUxEX09GRlNFVF9TSE9XKCA4MSwgNDQwMik7IC8qIFZNX0VYSVRfUkVBU09OICAgICAgICAg ICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggODIsIDQ0MDQpOyAvKiBWTV9FWElUX0lO VFJfSU5GTyAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDgzLCA0NDA2KTsg LyogVk1fRVhJVF9JTlRSX0VSUk9SX0NPREUgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9X KCA4NCwgNDQwOCk7IC8qIElEVF9WRUNUT1JJTkdfSU5GT19GSUVMRCAgICAgICAgICovCitCVUlM RF9PRkZTRVRfU0hPVyggODUsIDQ0MGEpOyAvKiBJRFRfVkVDVE9SSU5HX0VSUk9SX0NPREUgICAg ICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDg2LCA0NDBjKTsgLyogVk1fRVhJVF9JTlNUUlVD VElPTl9MRU4gICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCA4NywgNDQwZSk7IC8qIFZN WF9JTlNUUlVDVElPTl9JTkZPICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggODgs IDQ4MDApOyAvKiBHVUVTVF9FU19MSU1JVCAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZG U0VUX1NIT1coIDg5LCA0ODAyKTsgLyogR1VFU1RfQ1NfTElNSVQgICAgICAgICAgICAgICAgICAg Ki8KK0JVSUxEX09GRlNFVF9TSE9XKCA5MCwgNDgwNCk7IC8qIEdVRVNUX1NTX0xJTUlUICAgICAg ICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVyggOTEsIDQ4MDYpOyAvKiBHVUVTVF9E U19MSU1JVCAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDkyLCA0ODA4 KTsgLyogR1VFU1RfRlNfTElNSVQgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9T SE9XKCA5MywgNDgwYSk7IC8qIEdVRVNUX0dTX0xJTUlUICAgICAgICAgICAgICAgICAgICovCitC VUlMRF9PRkZTRVRfU0hPVyggOTQsIDQ4MGMpOyAvKiBHVUVTVF9MRFRSX0xJTUlUICAgICAgICAg ICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coIDk1LCA0ODBlKTsgLyogR1VFU1RfVFJfTElN SVQgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCA5NiwgNDgxMCk7IC8q IEdVRVNUX0dEVFJfTElNSVQgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygg OTcsIDQ4MTIpOyAvKiBHVUVTVF9JRFRSX0xJTUlUICAgICAgICAgICAgICAgICAqLworQlVJTERf T0ZGU0VUX1NIT1coIDk4LCA0ODE0KTsgLyogR1VFU1RfRVNfQVJfQllURVMgICAgICAgICAgICAg ICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKCA5OSwgNDgxNik7IC8qIEdVRVNUX0NTX0FSX0JZVEVT ICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygxMDAsIDQ4MTgpOyAvKiBHVUVT VF9TU19BUl9CWVRFUyAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMTAxLCA0 ODFhKTsgLyogR1VFU1RfRFNfQVJfQllURVMgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNF VF9TSE9XKDEwMiwgNDgxYyk7IC8qIEdVRVNUX0ZTX0FSX0JZVEVTICAgICAgICAgICAgICAgICov CitCVUlMRF9PRkZTRVRfU0hPVygxMDMsIDQ4MWUpOyAvKiBHVUVTVF9HU19BUl9CWVRFUyAgICAg ICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMTA0LCA0ODIwKTsgLyogR1VFU1RfTERU Ul9BUl9CWVRFUyAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDEwNSwgNDgyMik7 IC8qIEdVRVNUX1RSX0FSX0JZVEVTICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hP VygxMDYsIDQ4MjQpOyAvKiBHVUVTVF9JTlRFUlJVUFRJQklMSVRZX0lORk8gICAgICAqLworQlVJ TERfT0ZGU0VUX1NIT1coMTA3LCA0ODI2KTsgLyogR1VFU1RfQUNUSVZJVFlfU1RBVEUgICAgICAg ICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDEwOCwgNDgyQSk7IC8qIEdVRVNUX1NZU0VOVEVS X0NTICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygxMDksIDRjMDApOyAvKiBI T1NUX0lBMzJfU1lTRU5URVJfQ1MgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMTEw LCA2MDAwKTsgLyogQ1IwX0dVRVNUX0hPU1RfTUFTSyAgICAgICAgICAgICAgKi8KK0JVSUxEX09G RlNFVF9TSE9XKDExMSwgNjAwMik7IC8qIENSNF9HVUVTVF9IT1NUX01BU0sgICAgICAgICAgICAg ICovCitCVUlMRF9PRkZTRVRfU0hPVygxMTIsIDYwMDQpOyAvKiBDUjBfUkVBRF9TSEFET1cgICAg ICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMTEzLCA2MDA2KTsgLyogQ1I0X1JF QURfU0hBRE9XICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDExNCwgNjAw OCk7IC8qIENSM19UQVJHRVRfVkFMVUUwICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRf U0hPVygxMTUsIDYwMGEpOyAvKiBDUjNfVEFSR0VUX1ZBTFVFMSAgICAgICAgICAgICAgICAqLwor QlVJTERfT0ZGU0VUX1NIT1coMTE2LCA2MDBjKTsgLyogQ1IzX1RBUkdFVF9WQUxVRTIgICAgICAg ICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDExNywgNjAwZSk7IC8qIENSM19UQVJHRVRf VkFMVUUzICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygxMTgsIDY0MDApOyAv KiBFWElUX1FVQUxJRklDQVRJT04gICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1co MTE5LCA2NDBhKTsgLyogR1VFU1RfTElORUFSX0FERFJFU1MgICAgICAgICAgICAgKi8KK0JVSUxE X09GRlNFVF9TSE9XKDEyMCwgNjgwMCk7IC8qIEdVRVNUX0NSMCAgICAgICAgICAgICAgICAgICAg ICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygxMjEsIDY4MDIpOyAvKiBHVUVTVF9DUjMgICAgICAg ICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMTIyLCA2ODA0KTsgLyogR1VF U1RfQ1I0ICAgICAgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDEyMywg NjgwNik7IC8qIEdVRVNUX0VTX0JBU0UgICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZT RVRfU0hPVygxMjQsIDY4MDgpOyAvKiBHVUVTVF9DU19CQVNFICAgICAgICAgICAgICAgICAgICAq LworQlVJTERfT0ZGU0VUX1NIT1coMTI1LCA2ODBhKTsgLyogR1VFU1RfU1NfQkFTRSAgICAgICAg ICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDEyNiwgNjgwYyk7IC8qIEdVRVNUX0RT X0JBU0UgICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygxMjcsIDY4MGUp OyAvKiBHVUVTVF9GU19CQVNFICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NI T1coMTI4LCA2ODEwKTsgLyogR1VFU1RfR1NfQkFTRSAgICAgICAgICAgICAgICAgICAgKi8KK0JV SUxEX09GRlNFVF9TSE9XKDEyOSwgNjgxMik7IC8qIEdVRVNUX0xEVFJfQkFTRSAgICAgICAgICAg ICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygxMzAsIDY4MTQpOyAvKiBHVUVTVF9UUl9CQVNF ICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMTMxLCA2ODE2KTsgLyog R1VFU1RfR0RUUl9CQVNFICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDEz MiwgNjgxOCk7IC8qIEdVRVNUX0lEVFJfQkFTRSAgICAgICAgICAgICAgICAgICovCitCVUlMRF9P RkZTRVRfU0hPVygxMzMsIDY4MWEpOyAvKiBHVUVTVF9EUjcgICAgICAgICAgICAgICAgICAgICAg ICAqLworQlVJTERfT0ZGU0VUX1NIT1coMTM0LCA2ODFjKTsgLyogR1VFU1RfUlNQICAgICAgICAg ICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDEzNSwgNjgxZSk7IC8qIEdVRVNU X1JJUCAgICAgICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygxMzYsIDY4 MjApOyAvKiBHVUVTVF9SRkxBR1MgICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VU X1NIT1coMTM3LCA2ODIyKTsgLyogR1VFU1RfUEVORElOR19EQkdfRVhDRVBUSU9OUyAgICAgKi8K K0JVSUxEX09GRlNFVF9TSE9XKDEzOCwgNjgyNCk7IC8qIEdVRVNUX1NZU0VOVEVSX0VTUCAgICAg ICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygxMzksIDY4MjYpOyAvKiBHVUVTVF9TWVNF TlRFUl9FSVAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMTQwLCA2YzAwKTsg LyogSE9TVF9DUjAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9X KDE0MSwgNmMwMik7IC8qIEhPU1RfQ1IzICAgICAgICAgICAgICAgICAgICAgICAgICovCitCVUlM RF9PRkZTRVRfU0hPVygxNDIsIDZjMDQpOyAvKiBIT1NUX0NSNCAgICAgICAgICAgICAgICAgICAg ICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMTQzLCA2YzA2KTsgLyogSE9TVF9GU19CQVNFICAg ICAgICAgICAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9TSE9XKDE0NCwgNmMwOCk7IC8qIEhP U1RfR1NfQkFTRSAgICAgICAgICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygxNDUs IDZjMGEpOyAvKiBIT1NUX1RSX0JBU0UgICAgICAgICAgICAgICAgICAgICAqLworQlVJTERfT0ZG U0VUX1NIT1coMTQ2LCA2YzBjKTsgLyogSE9TVF9HRFRSX0JBU0UgICAgICAgICAgICAgICAgICAg Ki8KK0JVSUxEX09GRlNFVF9TSE9XKDE0NywgNmMwZSk7IC8qIEhPU1RfSURUUl9CQVNFICAgICAg ICAgICAgICAgICAgICovCitCVUlMRF9PRkZTRVRfU0hPVygxNDgsIDZjMTApOyAvKiBIT1NUX0lB MzJfU1lTRU5URVJfRVNQICAgICAgICAgICAqLworQlVJTERfT0ZGU0VUX1NIT1coMTQ5LCA2YzEy KTsgLyogSE9TVF9JQTMyX1NZU0VOVEVSX0VJUCAgICAgICAgICAgKi8KK0JVSUxEX09GRlNFVF9T SE9XKDE1MCwgNmMxNCk7IC8qIEhPU1RfUlNQICAgICAgICAgICAgICAgICAgICAgICAgICovCitC VUlMRF9PRkZTRVRfU0hPVygxNTEsIDZjMTYpOyAvKiBIT1NUX1JJUCAgICAgICAgICAgICAgICAg ICAgICAgICAqLworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqdm1jc19hdHRyc1tdID0gewor CSZkZXZfYXR0cl9pZC5hdHRyLAorCSZkZXZfYXR0cl8wMDAwLmF0dHIsCisJJmRldl9hdHRyXzA4 MDAuYXR0ciwKKwkmZGV2X2F0dHJfMDgwMi5hdHRyLAorCSZkZXZfYXR0cl8wODA0LmF0dHIsCisJ JmRldl9hdHRyXzA4MDYuYXR0ciwKKwkmZGV2X2F0dHJfMDgwOC5hdHRyLAorCSZkZXZfYXR0cl8w ODBhLmF0dHIsCisJJmRldl9hdHRyXzA4MGMuYXR0ciwKKwkmZGV2X2F0dHJfMDgwZS5hdHRyLAor CSZkZXZfYXR0cl8wYzAwLmF0dHIsCisJJmRldl9hdHRyXzBjMDIuYXR0ciwKKwkmZGV2X2F0dHJf MGMwNC5hdHRyLAorCSZkZXZfYXR0cl8wYzA2LmF0dHIsCisJJmRldl9hdHRyXzBjMDguYXR0ciwK KwkmZGV2X2F0dHJfMGMwYS5hdHRyLAorCSZkZXZfYXR0cl8wYzBjLmF0dHIsCisJJmRldl9hdHRy XzIwMDAuYXR0ciwKKwkmZGV2X2F0dHJfMjAwMS5hdHRyLAorCSZkZXZfYXR0cl8yMDAyLmF0dHIs CisJJmRldl9hdHRyXzIwMDMuYXR0ciwKKwkmZGV2X2F0dHJfMjAwNC5hdHRyLAorCSZkZXZfYXR0 cl8yMDA1LmF0dHIsCisJJmRldl9hdHRyXzIwMDYuYXR0ciwKKwkmZGV2X2F0dHJfMjAwNy5hdHRy LAorCSZkZXZfYXR0cl8yMDA4LmF0dHIsCisJJmRldl9hdHRyXzIwMDkuYXR0ciwKKwkmZGV2X2F0 dHJfMjAwYS5hdHRyLAorCSZkZXZfYXR0cl8yMDBiLmF0dHIsCisJJmRldl9hdHRyXzIwMTAuYXR0 ciwKKwkmZGV2X2F0dHJfMjAxMS5hdHRyLAorCSZkZXZfYXR0cl8yMDEyLmF0dHIsCisJJmRldl9h dHRyXzIwMTMuYXR0ciwKKwkmZGV2X2F0dHJfMjAxNC5hdHRyLAorCSZkZXZfYXR0cl8yMDE1LmF0 dHIsCisJJmRldl9hdHRyXzIwMWEuYXR0ciwKKwkmZGV2X2F0dHJfMjAxYi5hdHRyLAorCSZkZXZf YXR0cl8yNDAwLmF0dHIsCisJJmRldl9hdHRyXzI0MDEuYXR0ciwKKwkmZGV2X2F0dHJfMjgwMC5h dHRyLAorCSZkZXZfYXR0cl8yODAxLmF0dHIsCisJJmRldl9hdHRyXzI4MDIuYXR0ciwKKwkmZGV2 X2F0dHJfMjgwMy5hdHRyLAorCSZkZXZfYXR0cl8yODA0LmF0dHIsCisJJmRldl9hdHRyXzI4MDUu YXR0ciwKKwkmZGV2X2F0dHJfMjgwNi5hdHRyLAorCSZkZXZfYXR0cl8yODA3LmF0dHIsCisJJmRl dl9hdHRyXzI4MDguYXR0ciwKKwkmZGV2X2F0dHJfMjgwOS5hdHRyLAorCSZkZXZfYXR0cl8yODBh LmF0dHIsCisJJmRldl9hdHRyXzI4MGIuYXR0ciwKKwkmZGV2X2F0dHJfMjgwYy5hdHRyLAorCSZk ZXZfYXR0cl8yODBkLmF0dHIsCisJJmRldl9hdHRyXzI4MGUuYXR0ciwKKwkmZGV2X2F0dHJfMjgw Zi5hdHRyLAorCSZkZXZfYXR0cl8yODEwLmF0dHIsCisJJmRldl9hdHRyXzI4MTEuYXR0ciwKKwkm ZGV2X2F0dHJfMmMwMC5hdHRyLAorCSZkZXZfYXR0cl8yYzAxLmF0dHIsCisJJmRldl9hdHRyXzJj MDIuYXR0ciwKKwkmZGV2X2F0dHJfMmMwMy5hdHRyLAorCSZkZXZfYXR0cl8yYzA0LmF0dHIsCisJ JmRldl9hdHRyXzJjMDUuYXR0ciwKKwkmZGV2X2F0dHJfNDAwMC5hdHRyLAorCSZkZXZfYXR0cl80 MDAyLmF0dHIsCisJJmRldl9hdHRyXzQwMDQuYXR0ciwKKwkmZGV2X2F0dHJfNDAwNi5hdHRyLAor CSZkZXZfYXR0cl80MDA4LmF0dHIsCisJJmRldl9hdHRyXzQwMGEuYXR0ciwKKwkmZGV2X2F0dHJf NDAwYy5hdHRyLAorCSZkZXZfYXR0cl80MDBlLmF0dHIsCisJJmRldl9hdHRyXzQwMTAuYXR0ciwK KwkmZGV2X2F0dHJfNDAxMi5hdHRyLAorCSZkZXZfYXR0cl80MDE0LmF0dHIsCisJJmRldl9hdHRy XzQwMTYuYXR0ciwKKwkmZGV2X2F0dHJfNDAxOC5hdHRyLAorCSZkZXZfYXR0cl80MDFhLmF0dHIs CisJJmRldl9hdHRyXzQwMWMuYXR0ciwKKwkmZGV2X2F0dHJfNDAxZS5hdHRyLAorCSZkZXZfYXR0 cl80MDIwLmF0dHIsCisJJmRldl9hdHRyXzQwMjIuYXR0ciwKKwkmZGV2X2F0dHJfNDQwMC5hdHRy LAorCSZkZXZfYXR0cl80NDAyLmF0dHIsCisJJmRldl9hdHRyXzQ0MDQuYXR0ciwKKwkmZGV2X2F0 dHJfNDQwNi5hdHRyLAorCSZkZXZfYXR0cl80NDA4LmF0dHIsCisJJmRldl9hdHRyXzQ0MGEuYXR0 ciwKKwkmZGV2X2F0dHJfNDQwYy5hdHRyLAorCSZkZXZfYXR0cl80NDBlLmF0dHIsCisJJmRldl9h dHRyXzQ4MDAuYXR0ciwKKwkmZGV2X2F0dHJfNDgwMi5hdHRyLAorCSZkZXZfYXR0cl80ODA0LmF0 dHIsCisJJmRldl9hdHRyXzQ4MDYuYXR0ciwKKwkmZGV2X2F0dHJfNDgwOC5hdHRyLAorCSZkZXZf YXR0cl80ODBhLmF0dHIsCisJJmRldl9hdHRyXzQ4MGMuYXR0ciwKKwkmZGV2X2F0dHJfNDgwZS5h dHRyLAorCSZkZXZfYXR0cl80ODEwLmF0dHIsCisJJmRldl9hdHRyXzQ4MTIuYXR0ciwKKwkmZGV2 X2F0dHJfNDgxNC5hdHRyLAorCSZkZXZfYXR0cl80ODE2LmF0dHIsCisJJmRldl9hdHRyXzQ4MTgu YXR0ciwKKwkmZGV2X2F0dHJfNDgxYS5hdHRyLAorCSZkZXZfYXR0cl80ODFjLmF0dHIsCisJJmRl dl9hdHRyXzQ4MWUuYXR0ciwKKwkmZGV2X2F0dHJfNDgyMC5hdHRyLAorCSZkZXZfYXR0cl80ODIy LmF0dHIsCisJJmRldl9hdHRyXzQ4MjQuYXR0ciwKKwkmZGV2X2F0dHJfNDgyNi5hdHRyLAorCSZk ZXZfYXR0cl80ODJBLmF0dHIsCisJJmRldl9hdHRyXzRjMDAuYXR0ciwKKwkmZGV2X2F0dHJfNjAw MC5hdHRyLAorCSZkZXZfYXR0cl82MDAyLmF0dHIsCisJJmRldl9hdHRyXzYwMDQuYXR0ciwKKwkm ZGV2X2F0dHJfNjAwNi5hdHRyLAorCSZkZXZfYXR0cl82MDA4LmF0dHIsCisJJmRldl9hdHRyXzYw MGEuYXR0ciwKKwkmZGV2X2F0dHJfNjAwYy5hdHRyLAorCSZkZXZfYXR0cl82MDBlLmF0dHIsCisJ JmRldl9hdHRyXzY0MDAuYXR0ciwKKwkmZGV2X2F0dHJfNjQwYS5hdHRyLAorCSZkZXZfYXR0cl82 ODAwLmF0dHIsCisJJmRldl9hdHRyXzY4MDIuYXR0ciwKKwkmZGV2X2F0dHJfNjgwNC5hdHRyLAor CSZkZXZfYXR0cl82ODA2LmF0dHIsCisJJmRldl9hdHRyXzY4MDguYXR0ciwKKwkmZGV2X2F0dHJf NjgwYS5hdHRyLAorCSZkZXZfYXR0cl82ODBjLmF0dHIsCisJJmRldl9hdHRyXzY4MGUuYXR0ciwK KwkmZGV2X2F0dHJfNjgxMC5hdHRyLAorCSZkZXZfYXR0cl82ODEyLmF0dHIsCisJJmRldl9hdHRy XzY4MTQuYXR0ciwKKwkmZGV2X2F0dHJfNjgxNi5hdHRyLAorCSZkZXZfYXR0cl82ODE4LmF0dHIs CisJJmRldl9hdHRyXzY4MWEuYXR0ciwKKwkmZGV2X2F0dHJfNjgxYy5hdHRyLAorCSZkZXZfYXR0 cl82ODFlLmF0dHIsCisJJmRldl9hdHRyXzY4MjAuYXR0ciwKKwkmZGV2X2F0dHJfNjgyMi5hdHRy LAorCSZkZXZfYXR0cl82ODI0LmF0dHIsCisJJmRldl9hdHRyXzY4MjYuYXR0ciwKKwkmZGV2X2F0 dHJfNmMwMC5hdHRyLAorCSZkZXZfYXR0cl82YzAyLmF0dHIsCisJJmRldl9hdHRyXzZjMDQuYXR0 ciwKKwkmZGV2X2F0dHJfNmMwNi5hdHRyLAorCSZkZXZfYXR0cl82YzA4LmF0dHIsCisJJmRldl9h dHRyXzZjMGEuYXR0ciwKKwkmZGV2X2F0dHJfNmMwYy5hdHRyLAorCSZkZXZfYXR0cl82YzBlLmF0 dHIsCisJJmRldl9hdHRyXzZjMTAuYXR0ciwKKwkmZGV2X2F0dHJfNmMxMi5hdHRyLAorCSZkZXZf YXR0cl82YzE0LmF0dHIsCisJJmRldl9hdHRyXzZjMTYuYXR0ciwKKwlOVUxMLAorfTsKKworc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgdm1jc19hdHRyX2dyb3VwID0geworCS5uYW1lID0g dm1jc19ncm91cF9uYW1lLAorCS5hdHRycyA9IHZtY3NfYXR0cnMsCit9OworCisjZGVmaW5lIFZN Q1NJTkZPX01BWF9GSUVMRCAoQVJSQVlfU0laRSh2bWNzX2F0dHJzKSAtIDEpCisKK3N0YXRpYyBp bmxpbmUgdm9pZCB2bWNzaW5mb19yZXZpc2lvbl9pZCh1MzIgaWQpCit7CisJdm1jc2luZm8udm1j c19yZXZpc2lvbl9pZCA9IGlkOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgdm1jc2luZm9fZmll bGQoaW50IGksIHUxNiBvZmZzZXQpCit7CisJaWYgKGkgPCBWTUNTSU5GT19NQVhfRklFTEQpCisJ CXZtY3NpbmZvLmZpZWxkX29mZnNldFtpXVsxXSA9IG9mZnNldDsKK30KKworLyoKKyAqIEZvciBj YWN1bGF0aW5nIG9mZnNldHMgb2YgZmllbGRzIGluIFZNQ1MgZGF0YSwgd2UgaW5kZXggZXZlcnkg MTYtYml0CisgKiBmaWVsZCBieSB0aGlzIGtpbmQgb2YgZm9ybWF0OgorICogICAgICAgICB8IC0t LS0tLS0tLSAxNiBiaXRzIC0tLS0tLS0tLS0gfAorICogICAgICAgICArLS0tLS0tLS0tLS0tLSst Ky0tLS0tLS0tLS0tLSstKworICogICAgICAgICB8IGhpZ2ggNyBiaXRzIHwxfCBsb3cgNyBiaXRz IHwwfAorICogICAgICAgICArLS0tLS0tLS0tLS0tLSstKy0tLS0tLS0tLS0tLSstKworICogSW4g aGlnaCBieXRlLCB0aGUgbG93ZXN0IGJpdCBtdXN0IGJlIDE7IEluIGxvdyBieXRlLCB0aGUgbG93 ZXN0IGJpdAorICogbXVzdCBiZSAwLiBUaGUgdHdvIGJpdHMgYXJlIHNldCBsaWtlIHRoaXMgaW4g Y2FzZSBpbmRleGVzIGluIFZNQ1MKKyAqIGRhdGEgYXJlIHJlYWQgYXMgYmlnIGVuZGlhbiBtb2Rl LgorICogVGhlIHJlbWFpbmluZyAxNCBiaXRzIG9mIHRoZSBpbmRleCBpbmRpY2F0ZSB0aGUgcmVh bCBvZmZzZXQgb2YgdGhlCisgKiBmaWVsZC4gQmVjYXVzZSB0aGUgc2l6ZSBvZiBhIFZNQ1MgcmVn aW9uIGlzIGF0IG1vc3QgNCBLQnl0ZXMsIHNvCisgKiAxNCBiaXRzIGFyZSBlbm91Z2ggdG8gaW5k ZXggdGhlIHdob2xlIFZNQ1MgcmVnaW9uLgorICoKKyAqIEVOQ09ESU5HX09GRlNFVDogZW5jb2Rl IHRoZSBvZmZzZXQgaW50byB0aGUgaW5kZXggb2YgdGhpcyBraW5kLgorICogREVDT0RJTkdfT0ZG U0VUOiBkZWNvZGUgdGhlIGluZGV4IG9mIHRoaXMga2luZCBpbnRvIHJlYWwgb2Zmc2V0LgorICov CisjZGVmaW5lIE9GRlNFVF9ISUdIX1NISUZUICg3KQorI2RlZmluZSBPRkZTRVRfTE9XX01BU0sg ICAoKDEgPDwgT0ZGU0VUX0hJR0hfU0hJRlQpIC0gMSkgLyogMHg3ZiAqLworI2RlZmluZSBPRkZT RVRfSElHSF9NQVNLICAoT0ZGU0VUX0xPV19NQVNLIDw8IE9GRlNFVF9ISUdIX1NISUZUKSAvKiAw eDNmODAgKi8KKyNkZWZpbmUgRU5DT0RJTkdfT0ZGU0VUKG9mZnNldCkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorCSgoKChvZmZzZXQpICYgT0ZGU0VUX0xPV19NQVNLKSA8 PCAxKSArICAgICAgICAgICAgICAgICAgICAgIFwKKwkoKCgob2Zmc2V0KSAmIE9GRlNFVF9ISUdI X01BU0spIDw8IDIpIHwgMHgxMDApKQorLyoKKyAqIGluZGV4IGhlcmUgc2hvdWxkIGJlIGFsd2F5 cyByZWFkIGluIGxpdHRsZSBlbmRpYW4gbW9kZS4KKyAqLworI2RlZmluZSBERUNPRElOR19PRkZT RVRfTEUoaW5kZXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJKCgoKGlu ZGV4KSA+PiAxKSAmIE9GRlNFVF9MT1dfTUFTSykgKyAgICAgICAgICAgICAgICAgICAgICAgXAor CSgoKGluZGV4KSA+PiAyKSAmIE9GRlNFVF9ISUdIX01BU0spKQorLyoKKyAqIG4gaW5kaWNhdGVz IHRoZSBiaXRzIG9mIGluZGV4LiBXZSBmaXJzdCBjaGVjayBpZiBpbmRleAorICogaXMgcmVhZCBp biBiaWcgZW5kaWFuIG1vZGUuCisgKi8KKyNkZWZpbmUgREVDT0RJTkdfT0ZGU0VUKGluZGV4LCBu KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCSgoaW5kZXggJiAxKSA/IChE RUNPRElOR19PRkZTRVRfTEUoX19zd2FiIyNuKGluZGV4KSkpIDogICAgIFwKKwkoREVDT0RJTkdf T0ZGU0VUX0xFKGluZGV4KSkpCisKKyNkZWZpbmUgRklFTERfT0ZGU0VUMTYoaSwgb2Zmc2V0KSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCXZtY3NpbmZvX2ZpZWxkKGksIERF Q09ESU5HX09GRlNFVChvZmZzZXQsIDE2KSkKKyNkZWZpbmUgRklFTERfT0ZGU0VUNjQoaSwgb2Zm c2V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCXZtY3NpbmZvX2ZpZWxk KGksIERFQ09ESU5HX09GRlNFVChvZmZzZXQsIDY0KSkKKyNkZWZpbmUgRklFTERfT0ZGU0VUMzIo aSwgb2Zmc2V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCXZtY3NpbmZv X2ZpZWxkKGksIERFQ09ESU5HX09GRlNFVChvZmZzZXQsIDMyKSkKKyNkZWZpbmUgRklFTERfT0ZG U0VUTlcoaSwgb2Zmc2V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZG8g eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisJaWYgKHNpemVvZihvZmZzZXQpID09IDgpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorCQl2bWNzaW5mb19maWVsZChpLCBERUNPRElOR19PRkZTRVQob2Zm c2V0LCA2NCkpOyAgICAgXAorCWVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKwkJdm1jc2luZm9fZmllbGQoaSwgREVDT0RJTkdfT0ZG U0VUKG9mZnNldCwgMzIpKTsgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgVk1DU19GSUVM RF9DSEVDSyhpLCBvZmZzZXQsIHR5cGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZG8g eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisJaWYgKHZtY3NfcmVhZDMyKFZNX0lOU1RSVUNUSU9OX0VSUk9SKSAhPSAgICAg ICAgICAgICAgICAgICAgXAorCQlWTVhFUlJfVU5TVVBQT1JURURfVk1DU19DT01QT05FTlQpICAg ICAgICAgICAgICAgICAgXAorCQlGSUVMRF9PRkZTRVQjI3R5cGUoaSwgb2Zmc2V0KTsgICAgICAg ICAgICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworc3RhdGljIGlubGluZSB2b2lkIHZtY3Nf cmVhZF9jaGVja2luZyhpbnQgaSkKK3sKKwl1bnNpZ25lZCBsb25nIGZpZWxkOworCXUxNiBvZmZz ZXQxNjsKKwl1NjQgb2Zmc2V0NjQ7CisJdTMyIG9mZnNldDMyOworCXVuc2lnbmVkIGxvbmcgb2Zm c2V0bnc7CisKKwlmaWVsZCA9IHZtY3NpbmZvLmZpZWxkX29mZnNldFtpXVswXTsKKwlzd2l0Y2gg KHZtY3NfZmllbGRfdHlwZShmaWVsZCkpIHsKKwljYXNlIFZNQ1NfRklFTERfVFlQRV9VMTY6CisJ CW9mZnNldDE2ID0gdm1jc19yZWFkMTYoZmllbGQpOworCQlWTUNTX0ZJRUxEX0NIRUNLKGksIG9m ZnNldDE2LCAxNik7CisJCWJyZWFrOworCWNhc2UgVk1DU19GSUVMRF9UWVBFX1U2NDoKKwkJb2Zm c2V0NjQgPSB2bWNzX3JlYWQ2NChmaWVsZCk7CisJCVZNQ1NfRklFTERfQ0hFQ0soaSwgb2Zmc2V0 NjQsIDY0KTsKKwkJYnJlYWs7CisJY2FzZSBWTUNTX0ZJRUxEX1RZUEVfVTMyOgorCQlvZmZzZXQz MiA9IHZtY3NfcmVhZDMyKGZpZWxkKTsKKwkJVk1DU19GSUVMRF9DSEVDSyhpLCBvZmZzZXQzMiwg MzIpOworCQlicmVhazsKKwljYXNlIFZNQ1NfRklFTERfVFlQRV9OQVRVUkFMX1dJRFRIOgorCQlv ZmZzZXRudyA9IHZtY3NfcmVhZGwoZmllbGQpOworCQlWTUNTX0ZJRUxEX0NIRUNLKGksIG9mZnNl dG53LCBOVyk7CisJCWJyZWFrOworCX0KK30KKworLyoKKyAqIE5vdGUsIG9mZnNldHMgb2YgZmll bGRzIHRoYXQgZGVmaW5lZCBpbiBJbnRlbCBzcGVjaWZpY2F0aW9uCisgKiAoSW50ZWzCriA2NCBh bmQgSUEtMzIgQXJjaGl0ZWN0dXJlcyBTb2Z0d2FyZSBEZXZlbG9wZXLigJlzIE1hbnVhbCwKKyAq IFZvbHVtZSAzQykgYnV0IG5vdCBkZWZpbmVkIGluICp2bWNzX2ZpZWxkKiB3aWxsIG5vdCBiZSBm aWxsZWQgaW4KKyAqIFZNQ1NJTkZPLiBBbmQsIHNvbWUgZmllbGRzIG1heSBiZSB1bnN1cHBvcnRl ZCBpbiBzb21lIG1hY2hpbmVzLAorICogaW4gdGhlc2UgbWFjaGluZXMsIGNvcnJlc3BvbmRpbmcg b2Zmc2V0cyB3aWxsIGJlIHplcm8uCisgKi8KK3N0YXRpYyBpbnQgX19pbml0IGFsbG9jX3ZtY3Np bmZvX2luaXQodm9pZCkKK3sKKy8qCisgKiBUaGUgZmlyc3QgOCBieXRlcyBpbiB2bWNzIHJlZ2lv biBhcmUgZm9yCisgKiAgIFZNQ1MgcmV2aXNpb24gaWRlbnRpZmllcgorICogICBWTVgtYWJvcnQg aW5kaWNhdG9yCisgKi8KKyNkZWZpbmUgRklFTERfU1RBUlQgKDgpCisKKwlpbnQgciwgb2Zmc2V0 LCBpOworCXN0cnVjdCB2bWNzICp2bWNzOworCWludCBjcHU7CisKKwl2bWNzID0gYWxsb2Nfdm1j cygpOworCWlmICghdm1jcykgeworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlyID0gaGFyZHdh cmVfZW5hYmxlX2FsbCgpOworCWlmIChyKQorCQlnb3RvIG91dDsKKworCS8qCisJICogV3JpdGUg ZW5jb2RlZCBvZmZzZXRzIGludG8gVk1DUyBkYXRhIGZvciBsYXRlciB2bWNzX3JlYWQuCisJICov CisJZm9yIChvZmZzZXQgPSBGSUVMRF9TVEFSVDsgb2Zmc2V0IDwgdm1jc19jb25maWcuc2l6ZTsK KwkgICAgIG9mZnNldCArPSBzaXplb2YodTE2KSkKKwkJKih1MTYgKikoKGNoYXIgKil2bWNzICsg b2Zmc2V0KSA9IEVOQ09ESU5HX09GRlNFVChvZmZzZXQpOworCisJY3B1ID0gZ2V0X2NwdSgpOwor CXZtY3NfY2xlYXIodm1jcyk7CisJcGVyX2NwdShjdXJyZW50X3ZtY3MsIGNwdSkgPSB2bWNzOwor CXZtY3NfbG9hZCh2bWNzKTsKKworCXZtY3NpbmZvX3JldmlzaW9uX2lkKHZtY3MtPnJldmlzaW9u X2lkKTsKKworCWZvciAoaSA9IDA7IGkgPCBWTUNTSU5GT19NQVhfRklFTEQ7ICsraSkgeworCQlp ZiAodm1jc2luZm8uZmllbGRfb2Zmc2V0W2ldWzBdICE9IFZNX0lOU1RSVUNUSU9OX0VSUk9SKQor CQkJY29udGludWU7CisJCXZtY3NfcmVhZF9jaGVja2luZyhpKTsKKwkJaWYgKHZtY3NpbmZvLmZp ZWxkX29mZnNldFtpXVsxXSA9PSAwKSB7CisJCQlnb3RvIG91dF9jbGVhcjsKKwkJfSBlbHNlIHsK KwkJCW9mZnNldCA9IHZtY3NpbmZvLmZpZWxkX29mZnNldFtpXVsxXTsKKwkJCWJyZWFrOworCQl9 CisJfQorCisJZm9yIChpID0gMDsgaSA8IFZNQ1NJTkZPX01BWF9GSUVMRDsgKytpKSB7CisJCWlm ICh2bWNzaW5mby5maWVsZF9vZmZzZXRbaV1bMF0gPT0gVk1fSU5TVFJVQ1RJT05fRVJST1IpCisJ CQljb250aW51ZTsKKwkJLyoKKwkJICogQmVmb3JlIGVhY2ggcmVhZGluZywgemVyb2VkIGZpZWxk IFZNX0lOU1RSVUNUSU9OX0VSUk9SCisJCSAqLworCQkqKHUzMiAqKSgoY2hhciAqKXZtY3MgKyBv ZmZzZXQpID0gMDsKKwkJdm1jc19yZWFkX2NoZWNraW5nKGkpOworCX0KKworCXIgPSBzeXNmc19j cmVhdGVfZ3JvdXAoJmNwdV9zdWJzeXMuZGV2X3Jvb3QtPmtvYmosICZ2bWNzX2F0dHJfZ3JvdXAp OworCitvdXRfY2xlYXI6CisJdm1jc19jbGVhcih2bWNzKTsKKwlwdXRfY3B1KCk7CisJaGFyZHdh cmVfZGlzYWJsZV9hbGwoKTsKK291dDoKKwlmcmVlX3ZtY3Modm1jcyk7CisJcmV0dXJuIHI7Cit9 CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBhbGxvY192bWNzaW5mb19leGl0KHZvaWQpCit7CisJc3lz ZnNfcmVtb3ZlX2dyb3VwKCZjcHVfc3Vic3lzLmRldl9yb290LT5rb2JqLCAmdm1jc19hdHRyX2dy b3VwKTsKK30KKworbW9kdWxlX2luaXQoYWxsb2Nfdm1jc2luZm9faW5pdCk7Cittb2R1bGVfZXhp dChhbGxvY192bWNzaW5mb19leGl0KTsKLS0gCjEuNy4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwprZXhlYyBtYWlsaW5nIGxpc3QKa2V4ZWNAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2tleGVjCg==