ZGlmZiAtLWdpdCBhL2ZsYXNoL2V4dHJhY3QvUkVBRE1FIGIvZmxhc2gvZXh0cmFjdC9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY2NDQzYQotLS0gL2Rldi9udWxsCisrKyBiL2ZsYXNoL2V4dHJhY3QvUkVBRE1FCkBAIC0wLDAgKzEsNSBAQAorKGMpIDIwMDMgYnkgSvZyZyBIb2hlbnNvaG4KKworVGhpcyB0b29sIGV4dHJhY3RzIHRoZSBmaXJtd2FyZSBpbWFnZSBvdXQgb2YgYW4gb3JpZ2luYWwgQXJjaG9zIFJPTSBkdW1wLAorbGlrZSBjcmVhdGVkIHdpdGggdGhlIFJvY2tib3ggZGVidWctPmR1bXAgZmVhdHVyZS4KK1RoZSBleHRyYWN0ZWQgaW1hZ2UgY2FuIHRoZW4gYmUgdXNlZCB0byBjb21wb3NlIGEgZHVhbC1ib290IGZpcm13YXJlLgpkaWZmIC0tZ2l0IGEvZmxhc2gvZXh0cmFjdC9leHRyYWN0LmMgYi9mbGFzaC9leHRyYWN0L2V4dHJhY3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWUyMjNhCi0tLSAvZGV2L251bGwKKysrIGIvZmxhc2gvZXh0cmFjdC9leHRyYWN0LmMKQEAgLTAsMCArMSwxNDAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgIF9fX19fX19fX18gICAgICAgICAgICAgICBfXyAgIF9fXy4KKyAqICAgT3BlbiAgICAgIFxfX19fX18gICBcIF9fX18gICBfX19fIHwgIHwgX1xfIHxfXyAgIF9fX19fX18gIF9fXworICogICBTb3VyY2UgICAgIHwgICAgICAgXy8vICBfIFxfLyBfX19cfCAgfC8gL3wgX18gXCAvICBfIFwgIFwvICAvCisgKiAgIEp1a2Vib3ggICAgfCAgICB8ICAgKCAgPF8+ICkgIFxfX198ICAgIDwgfCBcX1wgKCAgPF8+ID4gPCAgPAorICogICBGaXJtd2FyZSAgIHxfX19ffF8gIC9cX19fXy8gXF9fXyAgPl9ffF8gXHxfX18gIC9cX19fXy9fXy9cXyBcCisgKiAgICAgICAgICAgICAgICAgICAgIFwvICAgICAgICAgICAgXC8gICAgIFwvICAgIFwvICAgICAgICAgICAgXC8KKyAqICRJZCQKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgYnkgSvZyZyBIb2hlbnNvaG4gCisgKiAKKyAqIFRvb2wgdG8gZXh0cmFjdCB0aGUgc2NyYW1ibGVkIGltYWdlIG91dCBvZiBhbiBBcmNob3MgZmxhc2ggUk9NIGR1bXAKKyAqCisgKiBBbGwgZmlsZXMgaW4gdGhpcyBhcmNoaXZlIGFyZSBzdWJqZWN0IHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKyAqIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBzb3VyY2UgdHJlZSByb290IGZvciBmdWxsIGxpY2Vuc2UgYWdyZWVtZW50LgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPG1lbW9yeS5oPgorCisjZGVmaW5lIFVJTlQ4IHVuc2lnbmVkIGNoYXIKKyNkZWZpbmUgVUlOVDE2IHVuc2lnbmVkIHNob3J0CisjZGVmaW5lIFVJTlQzMiB1bnNpZ25lZCBsb25nCisKKyNkZWZpbmUgSU1BR0VfSEVBREVSIDB4NjAwMCAvLyBhIDMyIGJ5dGUgaGVhZGVyIGluIGZyb250IG9mIHRoZSBzb2Z0d2FyZSBpbWFnZQorI2RlZmluZSBJTUFHRV9TVEFSVCAgMHg2MDIwCS8vIHNvZnR3YXJlIGltYWdlIHBvc2l0aW9uIGluIEZsYXNoCisKKworLy8gcGxhY2UgYSAzMiBiaXQgdmFsdWUgaW50byBtZW1vcnksIGJpZyBlbmRpYW4KK3ZvaWQgV3JpdGUzMihVSU5UOCogcEJ5dGUsIFVJTlQzMiB2YWx1ZSkKK3sKKwlwQnl0ZVswXSA9IChVSU5UOCkodmFsdWUgPj4gMjQpOwkKKwlwQnl0ZVsxXSA9IChVSU5UOCkodmFsdWUgPj4gMTYpOwkKKwlwQnl0ZVsyXSA9IChVSU5UOCkodmFsdWUgPj4gOCk7CQorCXBCeXRlWzNdID0gKFVJTlQ4KSh2YWx1ZSk7CQorfQorCisKKy8vIHJlYWQgYSAzMiBiaXQgdmFsdWUgZnJvbSBtZW1vcnksIGJpZyBlbmRpYW4KK1VJTlQzMiBSZWFkMzIoVUlOVDgqIHBCeXRlKQoreworCVVJTlQzMiB2YWx1ZSA9IDA7CisKKwl2YWx1ZSB8PSAoVUlOVDMyKXBCeXRlWzBdIDw8IDI0OworCXZhbHVlIHw9IChVSU5UMzIpcEJ5dGVbMV0gPDwgMTY7CisJdmFsdWUgfD0gKFVJTlQzMilwQnl0ZVsyXSA8PCA4OworCXZhbHVlIHw9IChVSU5UMzIpcEJ5dGVbM107CisKKwlyZXR1cm4gdmFsdWU7Cit9CisKKworLy8gZW50cnkgcG9pbnQKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCit7CisJRklMRSogcEluRmlsZTsKKwlGSUxFKiBwT3V0RmlsZTsKKwlVSU5UOCBhSGVhZGVyWzZdOworCVVJTlQ4IGFJbWFnZVsyNTYqMTAyNF07CisJVUlOVDMyIGk7CisJVUlOVDMyIHVpU2l6ZSwgdWlTdGFydDsKKwlVSU5UMTYgdXNDaGVja3N1bSA9IDA7CisJCisJaWYgKGFyZ2MgPCAyKQorCXsKKwkJcHJpbnRmKCJFeHRyYWN0IHRoZSBzb2Z0d2FyZSBpbWFnZSBvdXQgb2YgYW4gb3JpZ2luYWwgQXJjaG9zIEZsYXNoIFJPTSBkdW1wLlxuIik7CisJCXByaW50ZigiUmVzdWx0IGlzIGEgc2NyYW1ibGVkIGZpbGUsIHVzZSB0aGUgZGVzY3JhbWJsZSB0b29sIHRvIGdldCB0aGUgYmluYXJ5LFxuIik7CisJCXByaW50ZigiIGFsd2F5cyB3aXRob3V0IHRoZSAtZm0gb3B0aW9uLCBldmVuIGlmIHByb2Nlc3NpbmcgYW4gRk0gc29mdHdhcmUuXG5cbiIpOworCQlwcmludGYoIlVzYWdlOiBleHRyYWN0IDxmbGFzaCBkdW1wIGZpbGU+IDxvdXRwdXQgZmlsZT5cbiIpOworCQlwcmludGYoIkV4YW1wbGU6IGV4dHJhY3QgaW50ZXJuYWxfcm9tXzIwMDAwMDAtMjAzRkZGRi5iaW4gYXJjaG9zLmFqelxuIik7CisJCWV4aXQoMCk7CisJfQorCQorCXBJbkZpbGUgPSBmb3Blbihhcmd2WzFdLCAicmIiKTsKKwlpZiAocEluRmlsZSA9PSBOVUxMKQorCXsKKwkJcHJpbnRmKCJFcnJvciBvcGVuaW5nIGlucHV0IGZpbGUgJXNcbiIsIGFyZ3ZbMV0pOworCQlleGl0KDEpOworCX0KKworCWlmIChmcmVhZChhSW1hZ2UsIDEsIHNpemVvZihhSW1hZ2UpLCBwSW5GaWxlKSAhPSBzaXplb2YoYUltYWdlKSkKKwl7CisJCXByaW50ZigiRXJyb3IgcmVhZGluZyBpbnB1dCBmaWxlICVzLCBtdXN0IGJlIDI1NmtCIGluIHNpemUuXG4iLCBhcmd2WzFdKTsKKwkJZmNsb3NlKHBJbkZpbGUpOworCQlleGl0KDIpOworCX0KKwlmY2xvc2UocEluRmlsZSk7CisKKwkvLyBmaW5kIG91dCBhYm91dCB0aGUgdHlwZQorCXVpU3RhcnQgPSBSZWFkMzIoYUltYWdlICsgOCk7CisJdWlTaXplID0gUmVhZDMyKGFJbWFnZSArIDEyKTsgLy8gYm9vdGVkIFJPTSBpbWFnZQorCWlmICh1aVN0YXJ0ID09IDB4MDIwMDAxMDAgJiYgdWlTaXplID4gMjAwMDApCisJewkvLyBQbGF5ZXIgaGFzIG5vIGxvYWRlciwgc3RhcnRzIGRpcmVjdGx5IHdpdGggdGhlIGltYWdlCisJCXVpU3RhcnQgPSAweDAxMDA7CisJfQorCWVsc2UKKwl7CS8vIFJlY29yZGVyIC8gRk0gLyBWMiBSZWNvcmRlcgorCQl1aVN0YXJ0ID0gSU1BR0VfU1RBUlQ7CisJCXVpU2l6ZSA9IFJlYWQzMihhSW1hZ2UgKyBJTUFHRV9IRUFERVIgKyA0KTsgLy8gc2l6ZSByZWNvcmQgb2YgaGVhZGVyCisJfQorCisJLy8gc2FuaXR5IGNoZWNrCisJaWYgKHVpU2l6ZSA+IHNpemVvZihhSW1hZ2UpIC0gdWlTdGFydCB8fCB1aVNpemUgPCA0MDAwMCkKKwl7CQorCQlwcmludGYoIkVycm9yOiBJbXBvc3NpYmxlIGltYWdlIHNpemUgJmQgYnl0ZXMuXG4iLCB1aVNpemUpOworCQlleGl0KDMpOworCX0KKworCS8vIGdlbmVyYXRlIGNoZWNrc3VtCisJZm9yIChpPTA7IGk8dWlTaXplOyBpKyspCisJCXVzQ2hlY2tzdW0gKz0gYUltYWdlW3VpU3RhcnQgKyBpXTsKKworCS8vIG1ha2UgaGVhZGVyCisJV3JpdGUzMihhSGVhZGVyICsgMiwgdXNDaGVja3N1bSk7IC8vIGNoZWNrc3VtIGluIDV0aCBhbmQgNnRoIGJ5dGUKKwlXcml0ZTMyKGFIZWFkZXIsIHVpU2l6ZSk7IC8vIHNpemUgaW4gZmlyc3QgNCBieXRlcworCisJcE91dEZpbGUgPSBmb3Blbihhcmd2WzJdLCAid2IiKTsKKwlpZiAocE91dEZpbGUgPT0gTlVMTCkKKwl7CisJCXByaW50ZigiRXJyb3Igb3BlbmluZyBvdXRwdXQgZmlsZSAlc1xuIiwgYXJndlsyXSk7CisJCWV4aXQoNCk7CisJfQorCisJaWYgKGZ3cml0ZShhSGVhZGVyLCAxLCBzaXplb2YoYUhlYWRlciksIHBPdXRGaWxlKSAhPSBzaXplb2YoYUhlYWRlcikKKwkgfHwgZndyaXRlKGFJbWFnZSArIHVpU3RhcnQsIDEsIHVpU2l6ZSwgcE91dEZpbGUpICE9IHVpU2l6ZSkKKwl7CisJCXByaW50ZigiV3JpdGUgZXJyb3JcbiIpOworCQlmY2xvc2UocE91dEZpbGUpOworCQlleGl0KDUpOworCX0KKworCWZjbG9zZShwT3V0RmlsZSk7CisKKwlyZXR1cm4gMDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9mbGFzaC9leHRyYWN0L2V4dHJhY3QuZHNwIGIvZmxhc2gvZXh0cmFjdC9leHRyYWN0LmRzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTAyODFhCi0tLSAvZGV2L251bGwKKysrIGIvZmxhc2gvZXh0cmFjdC9leHRyYWN0LmRzcApAQCAtMCwwICsxLDEwMCBAQAorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJleHRyYWN0IiAtIFBhY2thZ2UgT3duZXI9PDQ+CisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwCisjICoqIERPIE5PVCBFRElUICoqCisKKyMgVEFSR1RZUEUgIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iIDB4MDEwMworCitDRkc9ZXh0cmFjdCAtIFdpbjMyIERlYnVnCishTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsCishTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4KKyFNRVNTQUdFIAorIU1FU1NBR0UgTk1BS0UgL2YgImV4dHJhY3QubWFrIi4KKyFNRVNTQUdFIAorIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UKKyFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6CishTUVTU0FHRSAKKyFNRVNTQUdFIE5NQUtFIC9mICJleHRyYWN0Lm1hayIgQ0ZHPSJleHRyYWN0IC0gV2luMzIgRGVidWciCishTUVTU0FHRSAKKyFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOgorIU1FU1NBR0UgCishTUVTU0FHRSAiZXh0cmFjdCAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiZXh0cmFjdCAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgCisKKyMgQmVnaW4gUHJvamVjdAorIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDAKKyMgUFJPUCBTY2NfUHJvak5hbWUgIiIKKyMgUFJPUCBTY2NfTG9jYWxQYXRoICIiCitDUFA9Y2wuZXhlCitSU0M9cmMuZXhlCisKKyFJRiAgIiQoQ0ZHKSIgPT0gImV4dHJhY3QgLSBXaW4zMiBSZWxlYXNlIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSIKKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCisjIFBST1AgVXNlX01GQyAwCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgT3V0cHV0X0RpciAiUmVsZWFzZSIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIgorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQkFTRSBSU0MgL2wgMHg0MDcgL2QgIk5ERUJVRyIKKyMgQUREIFJTQyAvbCAweDQwNyAvZCAiTkRFQlVHIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2CisjIEFERCBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorCishRUxTRUlGICAiJChDRkcpIiA9PSAiZXh0cmFjdCAtIFdpbjMyIERlYnVnIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBPdXRwdXRfRGlyICJEZWJ1ZyIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyIKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA3IC9kICJfREVCVUciCisjIEFERCBSU0MgL2wgMHg0MDcgL2QgIl9ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKworIUVORElGIAorCisjIEJlZ2luIFRhcmdldAorCisjIE5hbWUgImV4dHJhY3QgLSBXaW4zMiBSZWxlYXNlIgorIyBOYW1lICJleHRyYWN0IC0gV2luMzIgRGVidWciCisjIEJlZ2luIEdyb3VwICJTb3VyY2UgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCIKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS5cZXh0cmFjdC5jCisjIEVuZCBTb3VyY2UgRmlsZQorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIgorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgIlJlc291cmNlIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSIKKyMgRW5kIEdyb3VwCisjIEVuZCBUYXJnZXQKKyMgRW5kIFByb2plY3QK