IyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJtYWtlY2ZnIiAtIFBhY2thZ2UgT3duZXI9PDQ+CiMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDAKIyAqKiDK1L24pLekyqSkpMekr6TApLWkpCAqKgoKIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIgMHgwMTAzCgpDRkc9bWFrZWNmZyAtIFdpbjMyIERlYnVnCiFNRVNTQUdFIKSzpOykz82tuPqkyo7SjrKOuI7MjqeOso7ZpMekz6SipOqk3qS7pPOhoyCks6TOjsyO347bjryO3o6qjriOxKTyjsuO3o7ZjsSO3qS5pOukv6ThpMukzyBOTUFLRSCk8rvIzdGkt6TGpK+kwKS1pKShowohTUVTU0FHRSBbjtKOso64jsyOp46yjtmkzo60jriOvY7Ojt+OsI7EXSCOuo7Pjt2OxI7epPK7yM3RpLekxrzCudSkt6TGpK+kwKS1pKQKIU1FU1NBR0UgCiFNRVNTQUdFIE5NQUtFIC9mICJtYWtlY2ZnLm1hayIuCiFNRVNTQUdFIAohTUVTU0FHRSBOTUFLRSCkzrzCudS7/qTLub3ArqTyu9jE6qTHpK2k3qS5CiFNRVNTQUdFII66js+O3Y7Ejt4gjteOso7dvuWkx47PjriO26TOwN/E6qTyxOq1waS3pN6kuaGjzuM6CiFNRVNTQUdFIAohTUVTU0FHRSBOTUFLRSAvZiAibWFrZWNmZy5tYWsiIENGRz0ibWFrZWNmZyAtIFdpbjMyIERlYnVnIgohTUVTU0FHRSAKIU1FU1NBR0UgwarC8rLEx72kyo7Ljt6O2Y7Ejt4gjtOOsI7Ejt46CiFNRVNTQUdFIAohTUVTU0FHRSAibWFrZWNmZyAtIFdpbjMyIFJlbGVhc2UiICgiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIgzdEpCiFNRVNTQUdFICJtYWtlY2ZnIC0gV2luMzIgRGVidWciICgiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIgzdEpCiFNRVNTQUdFIAoKIyBCZWdpbiBQcm9qZWN0CiMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwCiMgUFJPUCBTY2NfUHJvak5hbWUgIiIKIyBQUk9QIFNjY19Mb2NhbFBhdGggIiIKQ1BQPWNsLmV4ZQpSU0M9cmMuZXhlCgohSUYgICIkKENGRykiID09ICJtYWtlY2ZnIC0gV2luMzIgUmVsZWFzZSIKCiMgUFJPUCBCQVNFIFVzZV9NRkMgMAojIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSIKIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSIKIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgojIFBST1AgVXNlX01GQyAwCiMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKIyBQUk9QIE91dHB1dF9EaXIgIlJlbGVhc2UiCiMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIgojIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAojIFBST1AgVGFyZ2V0X0RpciAiIgojIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvWVggL0ZEIC9jCiMgQUREIENQUCAvbm9sb2dvIC9XMyAvTzIgL0dGIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvWVggL0ZEIC9jCiMgQUREIEJBU0UgUlNDIC9sIDB4NDExIC9kICJOREVCVUciCiMgQUREIFJTQyAvbCAweDQxMSAvZCAiTkRFQlVHIgpCU0MzMj1ic2NtYWtlLmV4ZQojIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KIyBBREQgQlNDMzIgL25vbG9nbwpMSU5LMzI9bGluay5leGUKIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgojIEFERCBMSU5LMzIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NiAvb3B0Om5vd2luOTgKIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lCiMgQmVnaW4gQ3VzdG9tIEJ1aWxkIC0gR2VuZXJhdGluZyAtICQoT3V0RGlyKVxqc2ltZGNmZy5pbmMKT3V0RGlyPS5cUmVsZWFzZQpJbnB1dFBhdGg9LlxSZWxlYXNlXG1ha2VjZmcuZXhlClNPVVJDRT0iJChJbnB1dFBhdGgpIgoKIiQoT3V0RGlyKVxqc2ltZGNmZy5pbmMiIDogJChTT1VSQ0UpICIkKElOVERJUikiICIkKE9VVERJUikiCgkkKFRhcmdldFBhdGgpID4gJChPdXREaXIpXGpzaW1kY2ZnLmluYwoKIyBFbmQgQ3VzdG9tIEJ1aWxkCgohRUxTRUlGICAiJChDRkcpIiA9PSAibWFrZWNmZyAtIFdpbjMyIERlYnVnIgoKIyBQUk9QIEJBU0UgVXNlX01GQyAwCiMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQojIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyIKIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciCiMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKIyBQUk9QIFVzZV9NRkMgMAojIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCiMgUFJPUCBPdXRwdXRfRGlyICJEZWJ1ZyIKIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIgojIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAojIFBST1AgVGFyZ2V0X0RpciAiIgojIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9ZWCAvRkQgL0daIC9jCiMgQUREIENQUCAvbm9sb2dvIC9XMyAvR20gL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL1lYIC9GRCAvR1ogL2MKIyBBREQgQkFTRSBSU0MgL2wgMHg0MTEgL2QgIl9ERUJVRyIKIyBBREQgUlNDIC9sIDB4NDExIC9kICJfREVCVUciCkJTQzMyPWJzY21ha2UuZXhlCiMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwojIEFERCBCU0MzMiAvbm9sb2dvCkxJTkszMj1saW5rLmV4ZQojIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CiMgQUREIExJTkszMiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0IC9vcHQ6bm93aW45OAojIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUKIyBCZWdpbiBDdXN0b20gQnVpbGQgLSBHZW5lcmF0aW5nIC0gJChPdXREaXIpXGpzaW1kY2ZnLmluYwpPdXREaXI9LlxEZWJ1ZwpJbnB1dFBhdGg9LlxEZWJ1Z1xtYWtlY2ZnLmV4ZQpTT1VSQ0U9IiQoSW5wdXRQYXRoKSIKCiIkKE91dERpcilcanNpbWRjZmcuaW5jIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIiAiJChPVVRESVIpIgoJJChUYXJnZXRQYXRoKSA+ICQoT3V0RGlyKVxqc2ltZGNmZy5pbmMKCiMgRW5kIEN1c3RvbSBCdWlsZAoKIUVORElGIAoKIyBCZWdpbiBUYXJnZXQKCiMgTmFtZSAibWFrZWNmZyAtIFdpbjMyIFJlbGVhc2UiCiMgTmFtZSAibWFrZWNmZyAtIFdpbjMyIERlYnVnIgojIEJlZ2luIEdyb3VwICJTb3VyY2UgRmlsZXMiCgojIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXG1ha2VjZmcuYwojIEVuZCBTb3VyY2UgRmlsZQojIEVuZCBHcm91cAojIEJlZ2luIEdyb3VwICJIZWFkZXIgRmlsZXMiCgojIFBST1AgRGVmYXVsdF9GaWx0ZXIgImg7aHBwO2h4eDtobTtpbmwiCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXGpjb25maWcuaAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxqZXJyb3IuaAojIEVuZCBTb3VyY2UgRmlsZQojIEJlZ2luIFNvdXJjZSBGaWxlCgpTT1VSQ0U9LlxqaW5jbHVkZS5oCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXGptb3JlY2ZnLmgKIyBFbmQgU291cmNlIEZpbGUKIyBCZWdpbiBTb3VyY2UgRmlsZQoKU09VUkNFPS5canBlZ2ludC5oCiMgRW5kIFNvdXJjZSBGaWxlCiMgQmVnaW4gU291cmNlIEZpbGUKClNPVVJDRT0uXGpwZWdsaWIuaAojIEVuZCBTb3VyY2UgRmlsZQojIEVuZCBHcm91cAojIEVuZCBUYXJnZXQKIyBFbmQgUHJvamVjdAo=