YQ0NCgAAAAB4EahiUkwEAOMAAAAAAAAAAAAAAAAAAAAABAAAAEAAAABzXgcAAGQAZAFsAFoAZABkAWwBWgFkAmQDbAJtA1oDAQBkAmQEbARtBVoFAQBkAmQFbARtBloGAQBkAmQGbARtB1oHAQBkAmQHbARtCFoIAQBkAmQIbARtCVoJAQBkAmQJbAptC1oLAQBkAmQKbAptDFoMAQBkAmQLbAptDVoNAQBkAmQMbAptDloOAQBkAmQNbAptD1oPAQBkAmQObAptEFoQAQBkAmQPbAptEVoRAQBkAmQQbAptEloSAQBkAmQRbBNtFFoUAQBkAmQSbBNtFVoVAQBkAmQTbBNtFloWAQBkAmQUbBNtF1oXAQBkAmQVbBNtGFoYAQBkAmQWbBNtGVoZAQBkAmQXbBNtGloaAQBkAmQYbBNtG1obAQBkAmQZbBNtHFocAQBkAmQabBNtHVodAQBkAmQbbB5tH1ofAQBkAmQcbCBtIVohAQBkAmQdbCJtI1ojAQBkAmQebCJtJFokAQBkAmQfbCJtJVolAQBkAmQgbCJtJlomAQBkAmQhbCdtKFopAQBkAmQibCptK1orAQBkAmQjbCptLFosAQBkAmQkbCptLVotAQBkAmQlbCptLlouAQBkAmQmbCptL1ovAQBkAmQnbCptMFowAQBkAmQobCptMVoxAQBkAmQpbDJtM1ozAQBkAmQqbDRtNFo0AQBkAmQrbDVtNlo2AQBkAmQsbDdtOFo4AQBkLWQuhABaOWQvZDCEAFo6kAFkPmQyZDOEAVo7ZDRkNYQAWjxkNmQ3hABaPWQ4ZDmEAFo+ZDpkO4QAWj9kPGQ9hABaQGQ+ZD+EAFpBZEBkQYQAWkKQAWQ/ZEJkQ4QBWkOQAWRAZERkRYQBWkRkRmRHhABaRWRIZEmEAFpGZEpkS4QAWkdkTGRNhABaSGROZE+EAFpJZFBkUYQAWkpkUmRThABaS2RUZFWEAFpMZFZkV4QAWk1kWGRZhABaTmRaZFuEAFpPZFxkXYQAWlBkXmRfhABaUWRgZGGEAFpSZGJkY4QAWlNkZGRlhABaVJABZEFkZmRnhAFaVWRoZGmEAFpWZGpka4QAWldkbGRthABaWGRuZG+EAFpZZHBkcYQAWlpkcmRzhABaW2R0ZHWEAFpcZHZkd4QAWl1keGR5hABaXmR6ZHuEAFpfZHxkfYQAWmBkfmR/hABaYWSAZIGEAFpiZIJkg4QAWmNkhGSFhABaZGSGZIeEAFplZIhkiYQAWmZkimSLhABaZ5ABZEJkjGSNhAFaaGSOZI+EAFppZJBkkYQAWmpkkmSThABaa2SUZJWEAFpsZJZkl4QAWm1kmGSZhABabmSaZJuEAFpvZJxknYQAWnBknmSfhABacWSgZKGEAFpyZKJko4QAWnNkpGSlhABadGSmZKeEAFp1ZKhkqYQAWnZkqmSrhABad2SsZK2EAFp4ZK5kr4QAWnlksGSxhABaemSyZLOEAFp7ZLRktYQAWnxktmS3hABafWS4ZLmEAFp+ZLpku4QAWn9kvGS9hABagGS+ZL+EAFqBZMBkwYQAWoJkwmTDhABag2TEZMWEAFqEZMZkx4QAWoVkyGTJhABahmTKZMuEAFqHZMxkzYQAWohkzmTPhABaiWTQZNGEAFqKZNJk04QAWotk1GTVhABajGTWZNeEAFqNZNhk2YQAWo5k2mTbhABaj2TcZN2EAFqQZN5k34QAWpFk4GThhABakmTiZOOEAFqTZORk5YQAWpRlA6CVZOahAVqWZQOglWTnoQFal2UDoJVk6KEBWphlA6CVZOmhAVqZZQOgmmTqoQFam2UDoJpk66EBWpxlA6CaZOyhAVqdZQOgmmTtoQFanmTuZO+EAFqfkAFkQ2TwZPGEAVqgZPJk84QAWqFk9GT1hABaomT2ZPeEAFqjZPhk+YQAWqRk+mT7hABapWT8ZP2EAFqmZP5k/4QAWqeQAWQAkAFkAYQAWqiQAWQCkAFkA4QAWqmQAWQEkAFkBYQAWqqQAWQGkAFkB4QAWquQAWQIkAFkCYQAWqxHAJABZAqQAWQLhACQAWQLZa2DA1quRwCQAWQMkAFkDYQAkAFkDWWugwNar0cAkAFkDpABZA+EAJABZA9lroMDWrBHAJABZBCQAWQRhACQAWQRZa6DA1qxRwCQAWQSkAFkE4QAkAFkE2WugwNaskcAkAFkFJABZBWEAJABZBVlroMDWrOQAWQWkAFkF4QAWrSQAWQYkAFkGYQAWrWQAWQakAFkG4QAWrZHAJABZByQAWQdhACQAWQdZa2DA1q3kAFkHpABZB+EAFq4kAFkIJABZCGEAFq5kAFkIpABZCOEAFq6kAFkJJABZCWEAFq7kAFkJpABZCeEAFq8kAFkKJABZCmEAFq9kAFkKpABZCuEAFq+kAFkLJABZC2EAFq/kAFkLpABZC+EAFrAkAFkMJABZDGEAFrBkAFkMpABZDOEAFrCkAFkNJABZDWEAFrDkAFkNpABZDeEAFrEkAFkRJABZDiQAWQ5hAFaxZABZEWQAWQ6kAFkO4QBWsaQAWQ8kAFkPYQAWsdkAVMAKEYBAADpAAAAAE7pAQAAACkB2gpuYW1lX3N0eWxlKQHaEGJsaW5rX2NsYXNzX25hbWUpAdoPYmxpbmtfdHlwZV9pbmZvKQHaFm1ha2VfdjhfdG9fYmxpbmtfdmFsdWUpAdofbWFrZV92OF90b19ibGlua192YWx1ZV92YXJpYWRpYykB2hR2OF9icmlkZ2VfY2xhc3NfbmFtZSkB2glFbXB0eU5vZGUpAdoITGlzdE5vZGUpAdoMU2VxdWVuY2VOb2RlKQHaFFN5bWJvbERlZmluaXRpb25Ob2RlKQHaClN5bWJvbE5vZGUpAdoPU3ltYm9sU2NvcGVOb2RlKQHaCFRleHROb2RlKQHaEldlYWtEZXBlbmRlbmN5Tm9kZSkB2gxDeHhCbG9ja05vZGUpAdoVQ3h4QnJlYWthYmxlQmxvY2tOb2RlKQHaD0N4eENsYXNzRGVmTm9kZSkB2g9DeHhGdW5jRGVjbE5vZGUpAdoOQ3h4RnVuY0RlZk5vZGUpAdoPQ3h4TGlrZWx5SWZOb2RlKQHaFEN4eE11bHRpQnJhbmNoZXNOb2RlKQHaEEN4eE5hbWVzcGFjZU5vZGUpAdoNQ3h4U3dpdGNoTm9kZSkB2hFDeHhVbmxpa2VseUlmTm9kZSkB2hJDb2RlR2VuQWNjdW11bGF0b3IpAdoOQ29kZUdlbkNvbnRleHQpAdoLQ29kZUdlbkV4cHIpAdoIZXhwcl9hbmQpAdoSZXhwcl9mcm9tX2V4cG9zdXJlKQHaB2V4cHJfb3IpAdoPZm9ybWF0X3RlbXBsYXRlKQHaEGNvbXBvbmVudF9leHBvcnQpAdoXY29tcG9uZW50X2V4cG9ydF9oZWFkZXIpAdoZZW5jbG9zZV93aXRoX2hlYWRlcl9ndWFyZCkB2hVtYWtlX2NvcHlyaWdodF9oZWFkZXIpAdoZbWFrZV9mb3J3YXJkX2RlY2xhcmF0aW9ucykB2h5tYWtlX2hlYWRlcl9pbmNsdWRlX2RpcmVjdGl2ZXMp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bmQgJ18nIChsb3cgbGluZSkgaW4KICAgICAgICBpZGVudGlmaWVycyBidXQgQysrIGRvZXMgbm90IGFsbG93IG9yIHJlY29tbWVuZCB0aGVtLiAgVGhpcyBmdW5jdGlvbgogICAgICAgIGVuY29kZXMgdGhlc2UgY2hhcmFjdGVycy4KICAgICAgICBaBURlYzQ1WgVEZWM5NfoBLdoBXykB2gdyZXBsYWNlqQFyTwAAAHIyAAAAcjIAAAByMwAAANoJX2N4eF9uYW1lZgAAAHMKAAAAAA0MAQwBDAEMAXopY2FsbGJhY2tfZnVuY3Rpb25fbmFtZS48bG9jYWxzPi5fY3h4X25hbWVaDEF0dHJpYnV0ZUdldFoMQXR0cmlidXRlU2V02ghDb25zdGFudNoQTmFtZWRDb25zdHJ1Y3RvcnI7AAAA2gtDb25zdHJ1Y3RvcloYTmFtZWRDb25zdHJ1Y3RvclByb3BlcnR52hFMZWdhY3lXaW5kb3dBbGlhc1oQRXhwb3NlZENvbnN0cnVjdNoJT3BlcmF0aW9u2gtDcm9zc09yaWdpbnoKT3ZlcmxvYWR7fXICAAAAWhVOb0FsbG9jRGlyZWN0Q2FsbGJhY2vaCENhbGxiYWNrWgxGb3JNYWluV29ybGRaEEZvck5vbk1haW5Xb3JsZHMpFHIvAAAAchwAAADaCGNvbnN0YW50ckAAAAByPwAAAHJBAAAAckIAAADaEWNvbnN0cnVjdG9yX2dyb3Vw2hRpc19uYW1lZF9jb25zdHJ1Y3RvctoRZXhwb3NlZF9jb25zdHJ1Y3TaE2xlZ2FjeV93aW5kb3dfYWxpYXPaD29wZXJhdGlvbl9ncm91cNoLc3RyaW5naWZpZXLaBmZvcm1hdNoJZm9yX3dvcmxk2gpNQUlOX1dPUkxE2g9OT05fTUFJTl9XT1JMRFPaCkFMTF9XT1JMRFNyAwAAANoEZnVuYykJck4AAADaDm92ZXJsb2FkX2luZGV42hBmb3JfY3Jvc3Nfb3JpZ2lu2hRub19hbGxvY19kaXJlY3RfY2FsbHJWAAAA2g1wcm9wZXJ0eV9uYW1l2gRraW5k2gZzdWZmaXhaDHdvcmxkX3N1ZmZpeHIyAAAAcjIAAAByMwAAANoWY2FsbGJhY2tfZnVuY3Rpb25fbmFtZWAAAABzUAAAAAAEDgIIEwYBCgIMAgYBBgEGAQYBBgEGAQYBBgEGAgQBBgEGAQYBBgEGAQYCBgEGAQYBBgEEAgQBBgEIARABBAEGAgQCDAEGAQ4BBgEOAQQCcnEAAABjAQAAAAAAAAAAAAAAAgAAAAMAAABDAAAAcy4AAAB0AHwAdAGDAnMOSgCCAXwAagJzGEoAggF8AGoDagSgBaEAfQF0BqACfAGhAVMAci0AAAApB3IvAAAAchwAAAByXgAAAHJAAAAAcj8AAADaBWxvd2VycgMAAAApAnJOAAAAcm4AAAByMgAAAHIyAAAAcjMAAADaDWNvbnN0YW50X25hbWWpAAAAcwgAAAAAAQ4BCgIMAnJzAAAAYwEAAAAAAAAAAAAAAAIAAAAEAAAAQwAAAHNoAAAAdAB8AHQBgwJzDkoAggF8AGoCchhkAVMAfABqA3IiZAJTAHwAagRyLGQDUwB8AGoFcjhkBH0BbiB8AGoGckRkBX0BbhR8AGoHclBkBn0BbghkB3NYSgCCAXQIoAl8AGoKagt8AaECUwApCE5aGU5hbWVkUHJvcGVydHlHZXR0ZXJDdXN0b21aGU5hbWVkUHJvcGVydHlTZXR0ZXJDdXN0b21aGk5hbWVkUHJvcGVydHlEZWxldGVyQ3VzdG9tWhVBdHRyaWJ1dGVHZXR0ZXJDdXN0b21aFUF0dHJpYnV0ZVNldHRlckN1c3RvbVoMTWV0aG9kQ3VzdG9tRikMci8AAAByHAAAAHJLAAAAckwAAAByTQAAAHJBAAAAckIAAAByYwAAAHIDAAAAcmoAAAByQAAAAHI/AAAAKQJyTgAAAHJwAAAAcjIAAAByMgAAAHIzAAAA2hRjdXN0b21fZnVuY3Rpb25fbmFtZbIAAABzHgAAAAABDgIGAQQBBgEEAQYBBAIGAQYBBgEGAQYBBgIIAnJ0AAAAYwIAAAAAAAAAAAAAAAgAAAAKAAAAQwAAAHMAAQAAdAB8AHQBgwJzDkoAggF0AHwBdAKDAnMcSgCCAXwBagNyJmQAUwB8AWoEcpJ8AWoFagZqB2QBZAKNAX0CfAJqCHJwZAN9A3QJfAN0CnwCaguDAXwCagxkBI0DfQR8AKANdA5kBXwEgwKhAQEAZABTAGQFfQVkBn0GfACgDXQPfAV8BnwBagVqBoMDoQEBAGQAUwB8AWoQahFEAF1gfQd0EqATZAd8B2oUZAgXAHwHagyhA30FfAdqFXLUfACgDXQWfAVkCXwHahR8B2oGgwShAQEAcZpkCqAXfAdqFKEBfQZ8AKANdA98BXwGfAdqBnwHfAFkC40FoQEBAHGaZABTACkMTlSpAdoHdHlwZWRlZmG8AgAALy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1zZXR0ZXIKLy8gc3RlcCA0LjYuMS4gTGV0IFMgYmUgPyBUb1N0cmluZyhWKS4KY29uc3QgYXV0byYmIGFyZzFfdmFsdWVfc3RyaW5nID0KICAgIE5hdGl2ZVZhbHVlVHJhaXRzPElETFN0cmluZ1YyPjo6TmF0aXZlVmFsdWUoCiAgICAgICAgJHtpc29sYXRlfSwgJHt2OF9wcm9wZXJ0eV92YWx1ZX0sICR7ZXhjZXB0aW9uX3N0YXRlfSk7CmlmICgke2V4Y2VwdGlvbl9zdGF0ZX0uSGFkRXhjZXB0aW9uKCkpCiAgcmV0dXJuOwovLyBzdGVwIDQuNi4yLiBJZiBTIGlzIG5vdCBvbmUgb2YgdGhlIGVudW1lcmF0aW9uJ3MgdmFsdWVzLCB0aGVuIHJldHVybgovLyAgIHVuZGVmaW5lZC4KY29uc3QgYXV0byBhcmcxX3ZhbHVlX21heWJlX2VudW0gPSB7ZW51bV90eXBlfTo6Q3JlYXRlKGFyZzFfdmFsdWVfc3RyaW5nKTsKaWYgKCFhcmcxX3ZhbHVlX21heWJlX2VudW0pIHt7CiAgYmluZGluZ3M6OlJlcG9ydEludmFsaWRFbnVtU2V0VG9BdHRyaWJ1dGUoCiAgICAgICR7aXNvbGF0ZX0sIGFyZzFfdmFsdWVfc3RyaW5nLCAie2VudW1fdHlwZV9uYW1lfSIsICR7ZXhjZXB0aW9uX3N0YXRlfSk7CiAgcmV0dXJuOyAgLy8gUmV0dXJuIHVuZGVmaW5lZC4KfX0KY29uc3QgYXV0byAke2FyZzFfdmFsdWV9ID0gYXJnMV92YWx1ZV9tYXliZV9lbnVtLnZhbHVlKCk7CikCWgllbnVtX3R5cGVaDmVudW1fdHlwZV9uYW1lWgphcmcxX3ZhbHVl+hQke3Y4X3Byb3BlcnR5X3ZhbHVlffoIYXJne31fe31yAgAAAPoHJHtpbmZvfXoNJHt7aW5mb319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2gdpc29sYXRlei92ODo6SXNvbGF0ZSogJHtpc29sYXRlfSA9ICR7aW5mb30uR2V0SXNvbGF0ZSgpO1odbm9uX3VuZGVmaW5lZF9hcmd1bWVudF9sZW5ndGh6W2NvbnN0IGludCAke25vbl91bmRlZmluZWRfYXJndW1lbnRfbGVuZ3RofSA9IGJpbmRpbmdzOjpOb25VbmRlZmluZWRBcmd1bWVudExlbmd0aCgke2luZm99KTtaEHBlcl9jb250ZXh0X2RhdGF6SlY4UGVyQ29udGV4dERhdGEqICR7cGVyX2NvbnRleHRfZGF0YX0gPSAke3NjcmlwdF9zdGF0ZX0tPlBlckNvbnRleHREYXRhKCk7WhBwZXJfaXNvbGF0ZV9kYXRhektWOFBlcklzb2xhdGVEYXRhKiAke3Blcl9pc29sYXRlX2RhdGF9ID0gVjhQZXJJc29sYXRlRGF0YTo6RnJvbSgke2lzb2xhdGV9KTtybgAAAHo+Y29uc3QgY2hhciogY29uc3QgJHtwcm9wZXJ0eV9uYW1lfSA9ICIke3Byb3BlcnR5LmlkZW50aWZpZXJ9IjtaEHJlY2VpdmVyX2NvbnRleHR6T3Y4OjpMb2NhbDx2ODo6Q29udGV4dD4gJHtyZWNlaXZlcl9jb250ZXh0fSA9ICR7djhfcmVjZWl2ZXJ9LT5DcmVhdGlvbkNvbnRleHQoKTtaFXJlY2VpdmVyX3NjcmlwdF9zdGF0ZXpPU2NyaXB0U3RhdGUqICR7cmVjZWl2ZXJfc2NyaXB0X3N0YXRlfSA9IFNjcmlwdFN0YXRlOjpGcm9tKCR7cmVjZWl2ZXJfY29udGV4dH0pO3o5Y29uc3Qgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiYgJHtjcmVhdGlvbl9jb250ZXh0fSA9IHtfMX07ehMke3JlY2VpdmVyX2NvbnRleHR9ehIke2N1cnJlbnRfY29udGV4dH1aEGNyZWF0aW9uX2NvbnRleHSpAdoCXzF6DiR7djhfcmVjZWl2ZXJ9ehwke2N1cnJlbnRfY29udGV4dH0tPkdsb2JhbCgpWhdjcmVhdGlvbl9jb250ZXh0X29iamVjdHokU2NyaXB0U3RhdGUqICR7c2NyaXB0X3N0YXRlfSA9IHtfMX07ehgke3JlY2VpdmVyX3NjcmlwdF9zdGF0ZX16FyR7Y3VycmVudF9zY3JpcHRfc3RhdGV92gxzY3JpcHRfc3RhdGV6LkV4ZWN1dGlvbkNvbnRleHQqICR7ZXhlY3V0aW9uX2NvbnRleHR9ID0ge18xfTt6HSR7cmVjZWl2ZXJfZXhlY3V0aW9uX2NvbnRleHR9ehwke2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHR92hFleGVjdXRpb25fY29udGV4dFoZY3VycmVudF9leGVjdXRpb25fY29udGV4dHpcRXhlY3V0aW9uQ29udGV4dCogJHtjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0fSA9IEV4ZWN1dGlvbkNvbnRleHQ6OkZyb20oJHtjdXJyZW50X2NvbnRleHR9KTv6RXRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvZXhlY3V0aW9uX2NvbnRleHQvZXhlY3V0aW9uX2NvbnRleHQuaFoacmVjZWl2ZXJfZXhlY3V0aW9uX2NvbnRleHR6XkV4ZWN1dGlvbkNvbnRleHQqICR7cmVjZWl2ZXJfZXhlY3V0aW9uX2NvbnRleHR9ID0gRXhlY3V0aW9uQ29udGV4dDo6RnJvbSgke3JlY2VpdmVyX2NvbnRleHR9KTt6P0V4ZWN1dGlvbkNvbnRleHQqICR7ZXhlY3V0aW9uX2NvbnRleHRfb2ZfZG9jdW1lbnRfdHJlZX0gPSB7XzF9O3o8YmluZGluZ3M6OkV4ZWN1dGlvbkNvbnRleHRGcm9tVjhXcmFwcGFibGUoJHtibGlua19yZWNlaXZlcn0pWiJleGVjdXRpb25fY29udGV4dF9vZl9kb2N1bWVudF90cmVlekljb25zdCBFeGNlcHRpb25TdGF0ZTo6Q29udGV4dFR5cGUgJHtleGNlcHRpb25fc3RhdGVfY29udGV4dF90eXBlfSA9IHtfMX07eh5FeGNlcHRpb25TdGF0ZTo6a0dldHRlckNvbnRleHR6HkV4Y2VwdGlvblN0YXRlOjprU2V0dGVyQ29udGV4dHokRXhjZXB0aW9uU3RhdGU6OmtDb25zdHJ1Y3Rpb25Db250ZXh0eiVFeGNlcHRpb25TdGF0ZTo6a0luZGV4ZWRHZXR0ZXJDb250ZXh0eiVFeGNlcHRpb25TdGF0ZTo6a0luZGV4ZWRTZXR0ZXJDb250ZXh0eiNFeGNlcHRpb25TdGF0ZTo6a05hbWVkR2V0dGVyQ29udGV4dHojRXhjZXB0aW9uU3RhdGU6OmtOYW1lZFNldHRlckNvbnRleHR6JUV4Y2VwdGlvblN0YXRlOjprTmFtZWREZWxldGlvbkNvbnRleHR6IUV4Y2VwdGlvblN0YXRlOjprRXhlY3V0aW9uQ29udGV4dFocZXhjZXB0aW9uX3N0YXRlX2NvbnRleHRfdHlwZXosRXhjZXB0aW9uU3RhdGUgJHtleGNlcHRpb25fc3RhdGV9KHtfMX0pO3tfMn36CiR7aXNvbGF0ZX16HyR7ZXhjZXB0aW9uX3N0YXRlX2NvbnRleHRfdHlwZX16BCJ7fSJ6EiR7Y2xhc3NfbGlrZV9uYW1lfXoQJHtwcm9wZXJ0eV9uYW1lfXI7AAAAelEKRXhjZXB0aW9uVG9SZWplY3RQcm9taXNlU2NvcGUgcmVqZWN0X3Byb21pc2Vfc2NvcGUoJHtpbmZvfSwgJHtleGNlcHRpb25fc3RhdGV9KTvaD2V4Y2VwdGlvbl9zdGF0ZfoCLCCpAnKPAAAA2gJfMtoGV2luZG93clwAAAB6UERPTVdpbmRvdyogJHtibGlua19yZWNlaXZlcn0gPSAke2NsYXNzX25hbWV9OjpUb1dyYXBwYWJsZVVuc2FmZSgke3Y4X3JlY2VpdmVyfSk7emlMb2NhbERPTVdpbmRvdyogJHtibGlua19yZWNlaXZlcn0gPSBUbzxMb2NhbERPTVdpbmRvdz4oJHtjbGFzc19uYW1lfTo6VG9XcmFwcGFibGVVbnNhZmUoJHt2OF9yZWNlaXZlcn0pKTt6S3tfMX0qICR7YmxpbmtfcmVjZWl2ZXJ9ID0gJHtjbGFzc19uYW1lfTo6VG9XcmFwcGFibGVVbnNhZmUoJHt2OF9yZWNlaXZlcn0pO1oOYmxpbmtfcmVjZWl2ZXLaEXY4X3Byb3BlcnR5X3ZhbHVlejd2ODo6TG9jYWw8djg6OlZhbHVlPiAke3Y4X3Byb3BlcnR5X3ZhbHVlfSA9ICR7aW5mb31bMF07Wgt2OF9yZWNlaXZlcno2djg6OkxvY2FsPHY4OjpPYmplY3Q+ICR7djhfcmVjZWl2ZXJ9ID0gJHtpbmZvfS5UaGlzKCk7ejh2ODo6TG9jYWw8djg6Ok9iamVjdD4g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e2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHR9LCB7fSk7eo4hQmluZGluZ1NlY3VyaXR5OjpTaG91bGRBbGxvd0FjY2Vzc1RvKFRvTG9jYWxET01XaW5kb3coJHtjdXJyZW50X2NvbnRleHR9KSwgJHtyZXR1cm5fdmFsdWV9LCBCaW5kaW5nU2VjdXJpdHk6OkVycm9yUmVwb3J0T3B0aW9uOjprRG9Ob3RSZXBvcnQp+jViaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgke2luZm99LCBudWxscHRyKTsKcmV0dXJuO3oeLy8gW0NoZWNrU2VjdXJpdHk9UmV0dXJuVmFsdWVdctEAAAApA/o+dGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92OC9iaW5kaW5nX3NlY3VyaXR5Lmj6M3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvZnJhbWUvd2ViX2ZlYXR1cmUuaPpBdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaW5zdHJ1bWVudGF0aW9uL3VzZV9jb3VudGVyLmgpEXIvAAAAchwAAAByDwAAAHI8AAAAcqIAAABytAAAAHJ/AAAAcgMAAAByXgAAAHKhAAAAcj8AAAByQAAAAHILAAAAchoAAAByngAAAHIbAAAAcp8AAAApCHJOAAAAcqgAAABaDmNoZWNrX3NlY3VyaXR5Wgt3ZWJfZmVhdHVyZVoLdXNlX2NvdW50ZXJy0gAAAHLTAAAAcqsAAAByMgAAAHIyAAAAcjMAAADaI21ha2VfY2hlY2tfc2VjdXJpdHlfb2ZfcmV0dXJuX3ZhbHVlZwMAAHM4AAAAAAEOAgQCCAEC/wQCCAEEAgIBAgEMAQb/Av4EBAIBBP8EAggEBgEG/gQFAgEGAQr+BgQEAQz/BAZyIgEAAGMBAAAAAAAAAAAAAAACAAAABQAAAEMAAABzLAAAAHQAfAB0AYMCcw5KAIIBdAJkAYMBfQF8AaADdASgBWQCZwGhAaEBAQB8AVMAKQNOekFzY2hlZHVsZXI6OkNvb3BlcmF0aXZlU2NoZWR1bGluZ01hbmFnZXI6Okluc3RhbmNlKCktPlNhZmVwb2ludCgpO3pVdGhpcmRfcGFydHkvYmxpbmsvcmVu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AgAAAAMAAABDAAAAc0gAAAB0AHwAdAGDAnMOSgCCAXwAagJqA6AEZAGhAX0BfAFyMHQFZAJ8ARcAZAMXAIMBUwBkBHwAagJqA3YAckR0BWQFgwFTAGQAUwApBk7aD0NhY2hlZEF0dHJpYnV0ZXrsLy8gW0NhY2hlZEF0dHJpYnV0ZV0Kc3RhdGljIGNvbnN0IFY4UHJpdmF0ZVByb3BlcnR5OjpTeW1ib2xLZXkga1ByaXZhdGVQcm9wZXJ0eUNhY2hlZEF0dHJpYnV0ZTsKYXV0byYmIHY4X3ByaXZhdGVfY2FjaGVkX2F0dHJpYnV0ZSA9CiAgICBWOFByaXZhdGVQcm9wZXJ0eTo6R2V0U3ltYm9sKCR7aXNvbGF0ZX0sIGtQcml2YXRlUHJvcGVydHlDYWNoZWRBdHRyaWJ1dGUpOwppZiAoISR7YmxpbmtfcmVjZWl2ZXJ9LT5hAQEAACgpKSB7CiAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhfdmFsdWU7CiAgaWYgKCF2OF9wcml2YXRlX2NhY2hlZF9hdHRyaWJ1dGUuR2V0T3JVbmRlZmluZWQoJHt2OF9yZWNlaXZlcn0pCiAgICAgICAgICAgLlRvTG9jYWwoJnY4X3ZhbHVlKSkgewogICAgcmV0dXJuOwogIH0KICBpZiAoIXY4X3ZhbHVlLT5Jc1VuZGVmaW5lZCgpKSB7CiAgICBiaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgke2luZm99LCB2OF92YWx1ZSk7CiAgICByZXR1cm47CiAgfQp92g5TYXZlU2FtZU9iamVjdGHOAQAALy8gW1NhdmVTYW1lT2JqZWN0XQpzdGF0aWMgY29uc3QgVjhQcml2YXRlUHJvcGVydHk6OlN5bWJvbEtleSBrUHJpdmF0ZVByb3BlcnR5U2F2ZVNhbWVPYmplY3Q7CmF1dG8mJiB2OF9wcml2YXRlX3NhdmVfc2FtZV9vYmplY3QgPQogICAgVjhQcml2YXRlUHJvcGVydHk6OkdldFN5bWJvbCgke2lzb2xhdGV9LCBrUHJpdmF0ZVByb3BlcnR5U2F2ZVNhbWVPYmplY3QpOwp7CiAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhfdmFsdWU7CiAgaWYgKCF2OF9wcml2YXRlX3NhdmVfc2Ft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AGkAfAGkAY4BgwFTAHItAAAAcsMAAAByxAAAAHLHAAAAcjIAAAByMwAAAHLIAAAA7AUAAHLJAAAAeiptYWtlX3Y4X3NldF9yZXR1cm5fdmFsdWUuPGxvY2Fscz4uPGxhbWJkYT56NWJpbmRpbmdzOjpWOFNldFJldHVyblZhbHVlKCR7aW5mb30sICR7cmV0dXJuX3ZhbHVlfSk7ei48JSByZXR1cm5fdmFsdWUucmVxdWVzdF9zeW1ib2xfZGVmaW5pdGlvbigpICU+qQPaDEV2ZW50SGFuZGxlctoaT25CZWZvcmVVbmxvYWRFdmVudEhhbmRsZXLaE09uRXJyb3JFdmVudEhhbmRsZXJ6VGJpbmRpbmdzOjpWOFNldFJldHVyblZhbHVlKCR7aW5mb30sICR7cmV0dXJuX3ZhbHVlfSwgJHtpc29sYXRlfSwgJHtibGlua19yZWNlaXZlcn0pO3IbAQAAchwBAAB6/S8vIFtDaGVja1NlY3VyaXR5PVJldHVyblZhbHVlXQpiaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgKICAgICR7aW5mb30sCiAgICBUb1Y4KCR7cmV0dXJuX3ZhbHVlfSwKICAgICAgICAgVG9WOCgke2JsaW5rX3JlY2VpdmVyfS0+Y29udGVudFdpbmRvdygpLAogICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpLAogICAgICAgICAgICAgICR7aXNvbGF0ZX0pLkFzPHY4OjpPYmplY3Q+KCksCiAgICAgICAgICR7aXNvbGF0ZX0pKTtUcnUAAADaBGJvb2zaBmludDhfdNoHdWludDhfdNoHaW50MTZfdNoIdWludDE2X3TaB2ludDMyX3TaCHVpbnQzMl902gdpbnQ2NF902gh1aW50NjRfdNoFZmxvYXTaBmRvdWJsZSkNcroAAADaBGJ5dGXaBW9jdGV02gVzaG9ydHoOdW5zaWduZWQgc2hvcnRyuwAAAHK8AAAAeglsb25nIGxvbmd6EnVuc2lnbmVkIGxvbmcgbG9uZ3KkAQAAehJ1bnJlc3RyaWN0ZWQgZmxvYXRypQEAAHoTdW5yZXN0cmljdGVkIGRvdWJsZXprYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgJHtyZXR1cm5fdmFsdWV9LCBiaW5kaW5nczo6VjhSZXR1cm5WYWx1ZTo6UHJpbWl0aXZlVHlwZTx7Y3h4X3R5cGV9PigpKTspAdoIY3h4X3R5cGUpA3J5AAAAcugAAABykwAAAHoiYmluZGluZ3M6OlY4UmV0dXJuVmFsdWU6OmtOdWxsYWJsZXolYmluZGluZ3M6OlY4UmV0dXJuVmFsdWU6OmtOb25OdWxsYWJsZXofYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoe30pO3KVAAAAcnkAAABy6AAAAHojYmluZGluZ3M6OlY4UmV0dXJuVmFsdWU6OmtNYWluV29ybGR6EyR7Y3JlYXRpb25fY29udGV4dH16ESR7YmxpbmtfcmVjZWl2ZXJ9eoViaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgke2luZm99LCBUb1Y4KCR7cmV0dXJuX3ZhbHVlfSwgJHtjcmVhdGlvbl9jb250ZXh0X29iamVjdH0sICR7aXNvbGF0ZX0pLCBiaW5kaW5nczo6VjhSZXR1cm5WYWx1ZTo6a0Zyb3plbik7ej9iaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgke2luZm99LCAke3JldHVybl92YWx1ZX0uVjhWYWx1ZSgpKTt6Y2JpbmRpbmdzOjpWOFNldFJldHVyblZhbHVlKCR7aW5mb30sIFRvVjgoJHtyZXR1cm5fdmFsdWV9LCAke2NyZWF0aW9uX2NvbnRleHRfb2JqZWN0fSwgJHtpc29sYXRlfSkpOykeci8AAAByHAAAAHIPAAAAcgMBAABy2AAAAHJ9AAAAcgIBAAByfgEAANoJaXNfc2V0dGVy2gppc19kZWxldGVyclABAAByPwAAAHI8AAAAcqIAAABytAAAAHK4AAAAcr4AAAByagEAAHJ+AAAActkAAABynQAAAHJlAAAAckgAAAByvwAAAHJmAAAAcmcAAABynAAAAHKbAAAAcmEBAADaCmlzX3Byb21pc2UpCHJOAAAActsAAAByfgEAAHLYAAAAWhByZXR1cm5fdHlwZV9ib2R5WhpQUklNSVRJVkVfVFlQRV9UT19DWFhfVFlQRXKpAQAAcsUAAAByMgAAAHLHAAAAcjMAAADaGG1ha2Vfdjhfc2V0X3JldHVybl92YWx1ZegFAABzfgAAAAABDgIE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ZX06OntmdW5jX25hbWV9KCoke2JsaW5rX3JlY2VpdmVyfSwgZXZlbnRfaGFuZGxlcik7KQJy+gAAAHL5AAAAei4ke2JsaW5rX3JlY2VpdmVyfS0+e2Z1bmNfbmFtZX0oZXZlbnRfaGFuZGxlcik7KQFy+QAAAGMAAAAAAAAAAAAAAAAHAAAABQAAABMAAABzzgAAAGQBfQBkAX0BiAKgAKEARABdMH0CfAJkAmsCciJkA30AcRB8AmQEawJyMGQDfQFxEHwCZAV2AHI6cRABAGQAUwBxEHwAckp8AXNOZABTAIgBagGgAmQGoQFzXmQAUwB0A4gAiAGDAn0DiAFqBGoFagZkA2QHjQF9BHwEagdyhGQIfQVuNHwEaghkCWsCcpRkCn0FbiR8BGoIZAtrAnKkZAx9BW4UfARqCGQNawJytGQOfQVuBGQAUwB0CWQPfAV8A2QQjQN9BnQKfAaDAVMAKRFORnKRAQAAVHKtAAAAKRDaB0FmZmVjdHNyegEAANoHRXhwb3NlZHIkAQAAcicBAAByfQEAAHJ8AQAAcswAAAByzQAAAHLLAAAAcsoAAAByjAEAANoOUnVudGltZUVuYWJsZWTaDVNlY3VyZUNvbnRleHRyuQAAANoKVW5zY29wYWJsZXK9AAAAcnUAAABaMFBlcmZvcm1BdHRyaWJ1dGVTZXRDRVJlYWN0aW9uc1JlZmxlY3RUeXBlQm9vbGVhbtoGU3RyaW5nWi9QZXJmb3JtQXR0cmlidXRlU2V0Q0VSZWFjdGlvbnNSZWZsZWN0VHlwZVN0cmluZ9oRU3RyaW5nVHJlYXROdWxsQXNaRlBlcmZvcm1BdHRyaWJ1dGVTZXRDRVJlYWN0aW9uc1JlZmxlY3RUeXBlU3RyaW5nTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdaDFN0cmluZ09yTnVsbFo1UGVyZm9ybUF0dHJpYnV0ZVNldENFUmVhY3Rpb25zUmVmbGVjdFR5cGVTdHJpbmdPck51bGx6WmJpbmRpbmdzOjp7ZnVuY19uYW1lfSgke2luZm99LCB7Y29udGVudF9hdHRyaWJ1dGV9LCAke2NsYXNzX2xpa2VfbmFtZX0sICR7cHJvcGVydHlfbmFtZX0pOykCcvkAAADaEWNvbnRlbnRfYXR0cmlidXRlKQvaBGtleXPaCWludGVyZmFj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cvoAAABh2wEAAHN0YXRpYyBjb25zdCBWOFByaXZhdGVQcm9wZXJ0eTo6U3ltYm9sS2V5IGtQcml2YXRlUHJvcGVydHlOYW1lZENvbnN0cnVjdG9yOwphdXRvJiYgdjhfcHJpdmF0ZV9uYW1lZF9jb25zdHJ1Y3RvciA9CiAgICBWOFByaXZhdGVQcm9wZXJ0eTo6R2V0U3ltYm9sKCR7aXNvbGF0ZX0sIGtQcml2YXRlUHJvcGVydHlOYW1lZENvbnN0cnVjdG9yKTsKdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhfbmFtZWRfY29uc3RydWN0b3I7CmlmICghdjhfcHJpdmF0ZV9uYW1lZF9jb25zdHJ1Y3Rvci5HZXRPclVuZGVmaW5lZCgke3Y4X3JlY2VpdmVyfSkKICAgICAgICAgLlRvTG9jYWwoJnY4X25hbWVkX2NvbnN0cnVjdG9yKSkgewogIHJldHVybjsKfQppZiAoIXY4X25hbWVkX2NvbnN0cnVjdG9yLT5Jc1VuZGVmaW5lZCgpKSB7CiAgYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgdjhfbmFtZWRfY29uc3RydWN0b3IpOwogIHJldHVybjsKfQphMAEAAHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4X3ZhbHVlOwppZiAoIWJpbmRpbmdzOjpDcmVhdGVOYW1lZENvbnN0cnVjdG9yRnVuY3Rpb24oCiAgICAgICAgICR7c2NyaXB0X3N0YXRlfSwKICAgICAgICAge2NhbGxiYWNrfSwKICAgICAgICAgIntmdW5jX25hbWV9IiwKICAgICAgICAge2Z1bmNfbGVuZ3RofSwKICAgICAgICAge3Y4X2JyaWRnZX06OkdldFdyYXBwZXJUeXBlSW5mbygpKQogICAgIC5Ub0xvY2FsKCZ2OF92YWx1ZSkpIHsKICByZXR1cm47Cn0KYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgdjhfdmFsdWUpOwopBNoIY2FsbGJhY2ty+QAAAFoLZnVuY19sZW5ndGhaCXY4X2JyaWRnZXo8djhfcHJpdmF0ZV9uYW1lZF9jb25zdHJ1Y3Rvci5TZXQoJHt2OF9yZWNlaXZlcn0sIHY4X3ZhbHVlKTsKKRlyLwAAAHIcAAAAcjAAAABywgEAAHLTAAAAcpoAAABykAEAAHIMAQAAcnsBAAByhQEAAHItAQAAcgkAAAByYQAAAHITAQAA2hBDb25zdHJ1Y3Rvckdyb3Vw2gVvd25lctoJSW50ZXJmYWNlcggAAABycQAAAHLlAQAAcn8AAAByPwAAAHIVAQAAcg8AAAByCwAAACkNck4AAAByvgEAAHLAAQAActMAAAByXwAAAFoUbmFtZWRfY3Rvcl92OF9icmlkZ2Vy5AEAAFoPbmFtZWRfY3Rvcl9uYW1lWg5uYW1lZF9jdG9yX2RlZlofcmV0dXJuX3ZhbHVlX2NhY2hlX3JldHVybl9lYXJseXKJAAAAWiFjcmVhdGVfbmFtZWRfY29uc3RydWN0b3JfZnVuY3Rpb25aH3JldHVybl92YWx1ZV9jYWNoZV91cGRhdGVfdmFsdWVyMgAAAHIyAAAAcjMAAADaLG1ha2VfbmFtZWRfY29uc3RydWN0b3JfcHJvcGVydHlfY2FsbGJhY2tfZGVm9AcAAHNQAAAAAAEOAQ4CCgEGAgQBBgEGAQYBBgEGAQT6BgkGARABEgEKAQIBBAECAQIBAvwGBQgBCgIEDwQNAgECAQIBBAEEAQL7BgcEBAQBBgEGAQb9BgZy7QEAAGMCAAAAAAAAAAAAAAAMAAAACQAAAEMAAABz5AAAAHQAfAB0AYMCcw5KAIIBdAB8AXQCgwJzHEoAggF8AGoDcjB0BHwAagODAWQBawJzNEoAggF8AGoDZAIZAH0CfAJqBWoGckpkA24KdAd8AmoFgwFqCH0DZARkBYQAdAl8AmoKgwFEAIMBfQRkBmcBZAdkBYQAfAREAIMBFwB9BXwFoAtkCKEBAQB0DHwBfAV8A2QJjQN9BnwGag19B2QKfQh0DnwAag+DAX0JdBB8AIMBfQpkC6ARZAxkBYQAfAREAIMBoQF9C3wHoAt0EnQTfAh8CXwKfAtkDY0EgwGhAQEAfAZTACkOTnICAAAAcgEAAABytQEAAGMBAAAAAAAAAAAAAAADAAAACAAAAFMAAABzMAAAAGcAfABdKFwCfQF9AnQAfAJqAYMBagJ0A6AEZAB8AWQBFwB8AmoFoQNmApECcQRTACkCcngAAAByAgAAACkGcgUAAAByfAAAAHIEAQAAcgMAAAByhAAAAHI/AAAAKQNy4wAAAHKFAAAAcjEAAAByMgAAAHIyAAAAcjMAAAByNAEAAEoIAABzDAAAAAYDBv0KAQwBBP8C/3o6bWFrZV9ub19hbGxvY19kaXJlY3RfY2FsbF9jYWxsYmFja19kZWYuPGxvY2Fscz4uPGxpc3Rjb21wPnobdjg6OkFwaU9iamVjdCBhcmcwX3JlY2VpdmVyYwEAAAAAAAAAAAAAAAMAAAAGAAAAUwAAAHMcAAAAZwB8AF0UXAJ9AX0CZACgAHwBfAKhApECcQRTACkBegV7fSB7fXLVAAAAqQNy4wAAANoIYXJnX3R5cGVywQEAAHIyAAAAcjIAAAByMwAAAHI0AQAATggAAHMEAAAABgIG/3owdjg6OkZhc3RBcGlDYWxsYmFja09wdGlvbnMmIGFyZ19jYWxsYmFja19vcHRpb25zcrYBAABhAAIAAFRocmVhZFN0YXRlOjpOb0FsbG9jYXRpb25TY29wZSBub19hbGxvY19zY29wZShUaHJlYWRTdGF0ZTo6Q3VycmVudCgpKTsKdjg6Ok9iamVjdCogdjhfcmVjZWl2ZXIgPSByZWludGVycHJldF9jYXN0PHY4OjpPYmplY3QqPigmYXJnMF9yZWNlaXZlcik7CnY4OjpJc29sYXRlKiBpc29sYXRlID0gdjhfcmVjZWl2ZXItPkdldElzb2xhdGUoKTsKdjg6Oklzb2xhdGU6OkRpc2FsbG93SmF2YXNjcmlwdEV4ZWN1dGlvblNjb3BlIG5vX2pzX2V4ZWNfc2NvcGUoCiAgICBpc29sYXRlLAogICAgdjg6Oklzb2xhdGU6OkRpc2FsbG93SmF2YXNjcmlwdEV4ZWN1dGlvblNjb3BlOjpDUkFTSF9PTl9GQUlMVVJFKTsKe2JsaW5rX2NsYXNzfSogYmxpbmtfcmVjZWl2ZXIgPQogICAgVG9TY3JpcHRXcmFwcGFibGUodjhfcmVjZWl2ZXIpLT5Ub0ltcGw8e2JsaW5rX2NsYXNzfT4oKTsKcmV0dXJuIGJsaW5rX3JlY2VpdmVyLT57bWVtYmVyX2Z1bmN9KHtibGlua19hcmd1bWVudHN9LCBhcmdfY2FsbGJhY2tfb3B0aW9ucyk7cpUAAABjAQAAAAAAAAAAAAAAAwAAAAQAAABTAAAAcxQAAABnAHwAXQxcAn0BfQJ8ApECcQRTAHIyAAAAcjIA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BmoHaghzanwGoAl0CmQGgwGhAQEAfAR8BWYCUwB0C3wGfABkB2cBZAiNAwEAfAagDHQKZAmDAXQNfACDAWcCoQEBAHwEfAVmAlMAKQpO+g51aW50MzJfdCBpbmRleHKwAQAAcoUAAAByrgEAAFoVSW5kZXhlZFByb3BlcnR5R2V0dGVyeqp2ODo6TG9jYWw8djg6OlN0cmluZz4gcHJvcGVydHlfbmFtZSA9CiAgICBWOEF0b21pY1N0cmluZygke2lzb2xhdGV9LCBBdG9taWNTdHJpbmc6Ok51bWJlcigke2luZGV4fSkpOwoke2NsYXNzX25hbWV9OjpOYW1lZFByb3BlcnR5R2V0dGVyQ2FsbGJhY2socHJvcGVydHlfbmFtZSwgJHtpbmZvfSk7CvoIJHtpbmRleH1y/AAAAGFKAQAALy8gTGVnYWN5UGxhdGZvcm1PYmplY3RHZXRPd25Qcm9wZXJ0eQovLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lQbGF0Zm9ybU9iamVjdEdldE93blByb3BlcnR5Ci8vIHN0ZXAgMS4yLiBJZiBpbmRleCBpcyBhIHN1cHBvcnRlZCBwcm9wZXJ0eSBpbmRleCwgdGhlbjoKLy8gc3RlcCAzLiBSZXR1cm4gT3JkaW5hcnlHZXRPd25Qcm9wZXJ0eShPLCBQKS4KaWYgKCR7aW5kZXh9ID49ICR7YmxpbmtfcmVjZWl2ZXJ9LT5sZW5ndGgoKSkKICByZXR1cm47ICAvLyBEbyBub3QgaW50ZXJjZXB0LiAgRmFsbGJhY2sgdG8gT3JkaW5hcnlHZXRPd25Qcm9wZXJ0eS4KKQ5yLwAAAHIcAAAAcjAAAAByAgIAAHL6AAAActMAAABy0gEAANocaW5kZXhlZF9hbmRfbmFtZWRfcHJvcGVydGllc9oOaW5kZXhlZF9nZXR0ZXJynQAAAHIPAAAAcgsBAABymgAAAHKtAQAAqQdyTgAAAHK+AQAAcrcBAAByvwEAAHIBAgAAcsABAABy0wAAAHIyAAAAcjIAAAByMwAAANolbWFrZV9pbmRleGVkX3Byb3BlcnR5X2dldHRlcl9jYWxsYmFjaxcJAABzLAAAAAABDgEOAwIBAv4EBAgCAgEMAQL+CAMGAgoBBAEG/wQGCAIQAgQB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AwYBBAEGAQb5Av8EDAQBBu0GGHISAgAAYwIAAAAAAAAAAAAAAAcAAAAHAAAAQwAAAHOAAAAAdAB8AHQBgwJzDkoAggF0AHwBdAKDAnMcSgCCAWQBZAJnAn0CZANkBGcCfQN0A3wAfAF8AnwDfABqBGQFgwZcAn0EfQV8BWoFfQZ8AGoGagdqCHNqfAagCXQKZAaDAaEBAQB8BHwFZgJTAHwGoAl0CmQHgwGhAQEAfAR8BWYCUwApCE5yBAIAAPoxY29uc3Qgdjg6OlByb3BlcnR5Q2FsbGJhY2tJbmZvPHY4OjpCb29sZWFuPiYgaW5mb3KFAAAAcq4BAABaFkluZGV4ZWRQcm9wZXJ0eURlbGV0ZXJ6q3Y4OjpMb2NhbDx2ODo6U3RyaW5nPiBwcm9wZXJ0eV9uYW1lID0KICAgIFY4QXRvbWljU3RyaW5nKCR7aXNvbGF0ZX0sIEF0b21pY1N0cmluZzo6TnVtYmVyKCR7aW5kZXh9KSk7CiR7Y2xhc3NfbmFtZX06Ok5hbWVkUHJvcGVydHlEZWxldGVyQ2FsbGJhY2socHJvcGVydHlfbmFtZSwgJHtpbmZvfSk7CmF2AgAALy8gMy45LjQuIFtbRGVsZXRlXV0KLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbGVnYWN5LXBsYXRmb3JtLW9iamVjdC1kZWxldGUKLy8gc3RlcCAxLjIuIElmIGluZGV4IGlzIG5vdCBhIHN1cHBvcnRlZCBwcm9wZXJ0eSBpbmRleCwgdGhlbiByZXR1cm4gdHJ1ZS4KLy8gc3RlcCAxLjMuIFJldHVybiBmYWxzZS4KY29uc3QgYm9vbCBpc19zdXBwb3J0ZWQgPSAke2luZGV4fSA8ICR7YmxpbmtfcmVjZWl2ZXJ9LT5sZW5ndGgoKTsKYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgIWlzX3N1cHBvcnRlZCk7CmlmIChpc19zdXBwb3J0ZWQgYW5kICR7aW5mb30uU2hvdWxkVGhyb3dPbkVycm9yKCkpIHsKICBFeGNlcHRpb25TdGF0ZSBleGNlcHRpb25fc3RhdGUoJHtpbmZvfS5HZXRJc29sYXRlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlOjprSW5kZXhlZERlbGV0aW9uQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiR7aW50ZXJmYWNlLmlkZW50aWZpZXJ9Iik7CiAgZXhjZXB0aW9uX3N0YXRlLlRocm93VHlwZUVycm9yKCJJbmRleCBwcm9wZXJ0eSBkZWxldGVyIGlzIG5vdCBzdXBwb3J0ZWQuIik7Cn0KKQtyLwAAAHIcAAAAcjAAAAByAgIAAHL6AAAActMAAABy0gEAAHIGAgAAcgcCAABynQAAAHIPAAAAcggCAAByMgAAAHIyAAAAcjMAAADaJm1ha2VfaW5kZXhlZF9wcm9wZXJ0eV9kZWxldGVyX2NhbGxiYWNrkwkAAHMoAAAAAAEOAQ4DAgEC/gQECAICAQwBAv4IAwYCCgEEAQb/BAYIAgQBBv8EEHIUAgAAYwIAAAAAAAAAAAAAAAcAAAAHAAAAQwAAAHOoAAAAdAB8AHQBgwJzDkoAggF0AHwBdAKDAnMcSgCCAWcAZAGiAX0CZwBkAqIBfQN0A3wAfAF8AnwDfABqBGQDgwZcAn0EfQV8BWoFfQZ8AGoGagdqCHNqfAagCXQKZASDAaEBAQB8BHwFZgJTAHwGoAl0CmQFgwGhAQEAfABqBmoHagtzknwGoAl0CmQGgwGhAQEAbg58BqAJdApkB4MBoQEBAHwEfAVmAlMAKQhOqQNyBAIAAPouY29uc3Qgdjg6OlByb3BlcnR5RGVzY3JpcHRvciYgdjhfcHJvcGVydHlfZGVzY3KwAQAAqQNyhQAAANoQdjhfcHJvcGVydHlfZGVzY3KuAQAAWhZJbmRleGVkUHJvcGVydHlEZWZpbmVyesV2ODo6TG9jYWw8djg6OlN0cmluZz4gcHJvcGVydHlfbmFtZSA9CiAgICBWOEF0b21pY1N0cmluZygke2lzb2xhdGV9LCBBdG9taWNTdHJpbmc6Ok51bWJlcigke2luZGV4fSkpOwoke2NsYXNzX25hbWV9OjpOYW1lZFByb3BlcnR5RGVmaW5lckNhbGxiYWNrKAogICAgcHJvcGVydHlfbmFtZSwgJHt2OF9wcm9wZXJ0eV9kZXNjfSwgJHtpbmZvfSk7CmGAAgAALy8gMy45LjMuIFtbRGVmaW5lT3duUHJvcGVydHldXQovLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlZmluZW93bnByb3BlcnR5Ci8vIHN0ZXAgMS4xLiBJZiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgSXNEYXRhRGVzY3JpcHRvcihEZXNjKSBpcyBmYWxzZSwgdGhlbgovLyAgIHJldHVybiBmYWxzZS4KaWYgKHY4X3Byb3BlcnR5X2Rlc2MuaGFzX2dldCgpIHx8IHY4X3Byb3BlcnR5X2Rlc2MuaGFzX3NldCgpKSB7CiAgYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgbnVsbHB0cik7CiAgaWYgKCR7aW5mb30uU2hvdWxkVGhyb3dPbkVycm9yKCkpIHsKICAgIEV4Y2VwdGlvblN0YXRlIGV4Y2VwdGlvbl9zdGF0ZSgke2luZm99LkdldElzb2xhdGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZTo6a0luZGV4ZWRTZXR0ZXJDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIke2ludGVyZmFjZS5pZGVudGlmaWVyfSIpOwogICAgZXhjZXB0aW9uX3N0YXRlLlRocm93VHlwZUVycm9yKCJBY2Nlc3NvciBwcm9wZXJ0aWVzIGFyZSBub3QgYWxsb3dlZC4iKTsKICB9CiAgcmV0dXJuOwp9CmHIAQAALy8gc3RlcCAxLjIuIElmIE8gZG9lcyBub3QgaW1wbGVtZW50IGFuIGludGVyZmFjZSB3aXRoIGFuIGluZGV4ZWQgcHJvcGVydHkKLy8gICBzZXR0ZXIsIHRoZW4gcmV0dXJuIGZhbHNlLgpiaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgke2luZm99LCBudWxscHRyKTsKaWYgKCR7aW5mb30uU2hvdWxkVGhyb3dPbkVycm9yKCkpIHsKICBFeGNlcHRpb25TdGF0ZSBleGNlcHRpb25fc3RhdGUoJHtpbmZvfS5HZXRJc29sYXRlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlOjprSW5kZXhlZFNldHRlckNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIke2ludGVyZmFjZS5pZGVudGlmaWVyfSIpOwogIGV4Y2VwdGlvbl9zdGF0ZS5UaHJvd1R5cGVFcnJvcigiSW5kZXggcHJvcGVydHkgc2V0dGVyIGlzIG5vdCBzdXBwb3J0ZWQuIik7Cn0Keq4vLyBzdGVwIDEuMy4gSW52b2tlIHRoZSBpbmRleGVkIHByb3BlcnR5IHNldHRlciB3aXRoIFAgYW5kIERlc2MuW1tWYWx1ZV1dLgoke2NsYXNzX25hbWV9OjpJbmRleGVkUHJvcGVydHlTZXR0ZXJDYWxsYmFjaygKICAgICR7aW5kZXh9LCAke3Y4X3Byb3BlcnR5X2Rlc2N9LnZhbHVlKCksICR7aW5mb30pOwopDHIvAAAAchwAAAByMAAAAHICAgAAcvoAAABy0wAAAHLSAQAAcgYCAAByBwIAAHKdAAAAcg8AAADaDmluZGV4ZWRfc2V0dGVycggCAAByMgAAAHIyAAAAcjMAAADaJm1ha2VfaW5kZXhlZF9wcm9wZXJ0eV9kZWZpbmVyX2NhbGxiYWNrvgkAAHMyAAAAAAEOAQ4CCAUIAgIBDAEC/ggDBgIKAQQBBv8EBwgCBAEG/wQSCgEEAQb/Bg0EAQb/BAdyGgIAAGMCAAAAAAAAAAAAAAAKAAAABwAAAEMAAABzpgAAAHQAfAB0AYMCcw5KAIIBdAB8AXQCgwJzHEoAggFkAWQCZwJ9AmQDZARnAn0DdAN8AHwBfAJ8A3wAagRkBYMGXAJ9BH0FfAVqBX0GfABqBmoHaghzanwGoAl0CmQGgwGhAQEAfAR8BWYCUwBkB30HdAt8AGoGagdqDIMBfQh8CHKEZAhuAmQJfQl8BqAJdAp0DXwHfAlkCo0CgwGhAQEAfAR8BWYCUwApC05yBAIAAHKwAQAAcoUAAAByrgEAAFoZSW5kZXhlZFByb3BlcnR5RGVzY3JpcHRvcnqudjg6OkxvY2FsPHY4OjpTdHJpbmc+IHByb3BlcnR5X25hbWUgPQogICAgVjhBdG9taWNTdHJpbmcoJHtpc29sYXRlfSwgQXRvbWljU3RyaW5nOjpOdW1iZXIoJHtpbmRleH0pKTsKJHtjbGFzc19uYW1lfTo6TmFtZWRQcm9wZXJ0eURlc2NyaXB0b3JDYWxsYmFjayhwcm9wZXJ0eV9uYW1lLCAke2luZm99KTsKYVgFAAAvLyBMZWdhY3lQbGF0Zm9ybU9iamVjdEdldE93blByb3BlcnR5Ci8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeVBsYXRmb3JtT2JqZWN0R2V0T3duUHJvcGVydHkKLy8gc3RlcCAxLjIuMy4gSWYgb3BlcmF0aW9uIHdhcyBkZWZpbmVkIHdpdGhvdXQgYW4gaWRlbnRpZmllciwgdGhlbiBzZXQKLy8gICB2YWx1ZSB0byB0aGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgdGhlIHN0ZXBzIGxpc3RlZCBpbiB0aGUgaW50ZXJmYWNlCi8vICAgZGVzY3JpcHRpb24gdG8gZGV0ZXJtaW5lIHRoZSB2YWx1ZSBvZiBhbiBpbmRleGVkIHByb3BlcnR5IHdpdGggaW5kZXgKLy8gICBhcyB0aGUgaW5kZXguCi8vIHN0ZXAgMS4yLjQuIE90aGVyd2lzZSwgb3BlcmF0aW9uIHdhcyBkZWZpbmVkIHdpdGggYW4gaWRlbnRpZmllci4gU2V0Ci8vICAgdmFsdWUgdG8gdGhlIHJlc3VsdCBvZiBwZXJmb3JtaW5nIHRoZSBzdGVwcyBsaXN0ZWQgaW4gdGhlIGRlc2NyaXB0aW9uCi8vICAgb2Ygb3BlcmF0aW9uIHdpdGggaW5kZXggYXMgdGhlIG9ubHkgYXJndW1lbnQgdmFsdWUuCiR7Y2xhc3NfbmFtZX06OkluZGV4ZWRQcm9wZXJ0eUdldHRlckNhbGxiYWNrKCR7aW5kZXh9LCAke2luZm99KTsKdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhfdmFsdWUgPSAke2luZm99LkdldFJldHVyblZhbHVlKCkuR2V0KCk7Ci8vIHN0ZXAgMS4yLiBJZiBpbmRleCBpcyBhIHN1cHBvcnRlZCBwcm9wZXJ0eSBpbmRleCwgdGhlbjoKLy8gc3RlcCAzLiBSZXR1cm4gT3JkaW5hcnlHZXRPd25Qcm9wZXJ0eShPLCBQKS4KaWYgKHY4X3ZhbHVlLT5Jc1VuZGVmaW5lZCgpKQogIHJldHVybjsgIC8vIERvIG5vdCBpbnRlcmNlcHQuICBGYWxsYmFjayB0byBPcmRpbmFyeUdldE93blByb3BlcnR5LgoKLy8gc3RlcCAxLjIuNi4gU2V0IGRlc2MuW1tWYWx1ZV1dIHRvIHRoZSByZXN1bHQgb2YgY29udmVydGluZyB2YWx1ZSB0byBhbgovLyAgIEVDTUFTY3JpcHQgdmFsdWUuCi8vIHN0ZXAgMS4yLjcuIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZhY2Ugd2l0aCBhbiBpbmRleGVkIHByb3BlcnR5IHNldHRlciwKLy8gICB0aGVuIHNldCBkZXNjLltbV3JpdGFibGVdXSB0byB0cnVlLCBvdGhlcndpc2Ugc2V0IGl0IHRvIGZhbHNlLgovLyBzdGVwIDEuMi44LiBTZXQgZGVzYy5bW0VudW1lcmFibGVdXSBhbmQgZGVzYy5bW0NvbmZpZ3VyYWJsZV1dIHRvIHRydWUuCnY4OjpQcm9wZXJ0eURlc2NyaXB0b3IgZGVzYyh2OF92YWx1ZSwgLyp3cml0YWJsZT0qL3tjeHhfd3JpdGFibGV9KTsKZGVzYy5zZXRfZW51bWVyYWJsZSh0cnVlKTsKZGVzYy5zZXRfY29uZmlndXJhYmxlKHRydWUpOwpiaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgke2luZm99LCBkZXNjKTvaBHRydWXaBWZhbHNlKQHaDGN4eF93cml0YWJsZSkOci8AAAByHAAAAHIwAAAAcgICAABy+gAAAHLTAAAActIBAAByBgIAAHIHAgAAcp0AAAByDwAAAHKbAQAAchkCAAByfwAAACkKck4AAAByvgEAAHK3AQAAcr8BAAByAQIAAHLAAQAActMAAAByiQAAANoId3JpdGFibGVyHQIAAHIyAAAAcjIAAAByMwAAANopbWFrZV9pbmRleGVkX3Byb3BlcnR5X2Rlc2NyaXB0b3JfY2FsbGJhY2sCCgAAcy4AAAAAAQ4BDgMCAQL+BAQIAgIBDAEC/ggDBgIKAQQBBv8EBggCBBoCAQj/BAIMARYCch8CAABjAgAAAAAAAAAAAAAABwAAAAcAAABDAAAAc3wAAAB0AHwAdAGDAnMOSgCCAXQAfAF0AoMCcxxKAIIBfABqA2oEagVzKmQBUwBkAmcBfQJkA2cBfQN0BnwAfAF8AnwDfABqB2QEgwZcAn0EfQV8BWoIfQZ8BqAJdApkBYMBoQEBAHwGoAt0DKANZAZnAaEBoQEBAHwEfAVmAlMAKQdOqQJOTvovY29uc3Qgdjg6OlByb3BlcnR5Q2FsbGJhY2tJbmZvPHY4OjpBcnJheT4mIGluZm9yrgEAAFoZSW5kZXhlZFByb3BlcnR5RW51bWVyYXRvcmHNAQAALy8gMy45LjYuIFtbT3duUHJvcGVydHlLZXlzXV0KLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbGVnYWN5LXBsYXRmb3JtLW9iamVjdC1vd25wcm9wZXJ0eWtleXMKLy8gc3RlcCAyLiBJZiBPIHN1cHBvcnRzIGluZGV4ZWQgcHJvcGVydGllcywgdGhlbiBmb3IgZWFjaCBpbmRleCBvZiBPJ3MKLy8gICBzdXBwb3J0ZWQgcHJvcGVydHkgaW5kaWNlcywgaW4gYXNjZW5kaW5nIG51bWVyaWNhbCBvcmRlciwgYXBwZW5kCi8vICAgISBUb1N0cmluZyhpbmRleCkgdG8ga2V5cy4KdWludDMyX3QgbGVuZ3RoID0gJHtibGlua19yZWNlaXZlcn0tPmxlbmd0aCgpOwp2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9CiAgICBiaW5kaW5nczo6RW51bWVyYXRlSW5kZXhlZFByb3BlcnRpZXMoJHtpc29sYXRlfSwgbGVuZ3RoKTsKYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgYXJyYXkpOwr6Q3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvZ2VuZXJhdGVkX2NvZGVfaGVscGVyLmgpDnIvAAAAchwAAAByMAAAAHLSAQAAcgYCAAByBwIAAHICAgAAcvoAAABy0wAAAHKdAAAAcg8AAAByngAAAHIbAAAAcp8AAAByCAIAAHIyAAAAcjIAAAByMwAAANopbWFrZV9pbmRleGVkX3Byb3BlcnR5X2VudW1lcmF0b3JfY2FsbGJhY2s8CgAAcygAAAAAAQ4BDgIKAQQCBgEGAgIBDAEC/ggDBgIEAQb/BAwEAQQBAv8E/wQFciMCAABjAgAAAAAAAAAAAAAACgAA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jQShAQEAZA98AGoGagp2AHL4dBBkEHQRfACDAYMCfQd8BqAHdAh8B4MBoQEBAHwEfAVmAlMAfAagEnQIZBGDAXQTZBJ0CGQTgwF0FHwAgwF0FYMAdBZ8AIMBdAhkFIMBZwVkFY0CdBWDAHQIZBaDAWcEoQEBAHwEfAVmAlMAKRdOcrQBAAByswEAAFoTTmFtZWRQcm9wZXJ0eVNldHRlcnqfLy8gMy45LjIuIFtbU2V0XV0KLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbGVnYWN5LXBsYXRmb3JtLW9iamVjdC1zZXQKLy8gc3RlcCAzLiBQZXJmb3JtID8gT3JkaW5hcnlTZXRXaXRoT3duRGVzY3JpcHRvcihPLCBQLCBWLCBSZWNlaXZlciwgb3duRGVzYyku2hZMZWdhY3lPdmVycmlkZUJ1aWx0SW5zetIvLyBbTGVnYWN5T3ZlcnJpZGVCdWlsdEluc10KaWYgKCR7aW5mb30uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5QXR0cmlidXRlc0luUHJvdG90eXBlQ2hhaW4oCiAgICAgICAgJHtjdXJyZW50X2NvbnRleHR9LCAke3Y4X3Byb3BlcnR5X25hbWV9KS5Jc0p1c3QoKSkgewogIHJldHVybjsgIC8vIEZhbGxiYWNrIHRvIHRoZSBleGlzdGluZyBwcm9wZXJ0eS4KfQphagIAACR7Y2xhc3NfbmFtZX06Ok5hbWVkUHJvcGVydHlHZXR0ZXJDYWxsYmFjaygke3Y4X3Byb3BlcnR5X25hbWV9LCAke2luZm99KTsKY29uc3QgYm9vbCBpc19jcmVhdGluZyA9ICR7aW5mb30uR2V0UmV0dXJuVmFsdWUoKS5HZXQoKS0+SXNVbmRlZmluZWQoKTsKaWYgKCFpc19jcmVhdGluZykgewogIGJpbmRpbmdzOjpWOFNldFJldHVyblZhbHVlKCR7aW5mb30sIG51bGxwdHIpOwogIGlmICgke2luZm99LlNob3VsZFRocm93T25FcnJvcigpKSB7CiAgICBFeGNlcHRpb25TdGF0ZSBleGNlcHRpb25fc3RhdGUoJHtpbmZvfS5HZXRJc29sYXRlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg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c2libGUKLy8gb3Igbm90LiAgSnVzdCBkbyBub3QgaW50ZXJjZXB0IGFuZCBmYWxsYmFjayB0byB0aGUgZGVmYXVsdCBiZWhhdmlvci4KYdsDAAAvLyAzLjkuNC4gW1tEZWxldGVdXQovLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlbGV0ZQovLyBzdGVwIDIuIElmIE8gc3VwcG9ydHMgbmFtZWQgcHJvcGVydGllcywgTyBkb2VzIG5vdCBpbXBsZW1lbnQgYW4gaW50ZXJmYWNlCi8vICAgd2l0aCB0aGUgW0dsb2JhbF0gZXh0ZW5kZWQgYXR0cmlidXRlIGFuZCB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlCi8vICAgbmFtZWQgcHJvcGVydHkgdmlzaWJpbGl0eSBhbGdvcml0aG0gd2l0aCBwcm9wZXJ0eSBuYW1lIFAgYW5kIG9iamVjdCBPCi8vICAgaXMgdHJ1ZSwgdGhlbjoKLy8gc3RlcCAyLjEuIElmIE8gZG9lcyBub3QgaW1wbGVtZW50IGFuIGludGVyZmFjZSB3aXRoIGEgbmFtZWQgcHJvcGVydHkKLy8gICBkZWxldGVyLCB0aGVuIHJldHVybiBmYWxzZS4KRXhjZXB0aW9uU3RhdGUgZXhjZXB0aW9uX3N0YXRlKCR7aW5mb30uR2V0SXNvbGF0ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uU3RhdGU6OmtOYW1lZERlbGV0aW9uQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIke2ludGVyZmFjZS5pZGVudGlmaWVyfSIpOwpib29sIGRvZXNfZXhpc3QgPSAke2JsaW5rX3JlY2VpdmVyfS0+TmFtZWRQcm9wZXJ0eVF1ZXJ5KAogICAgJHtibGlua19wcm9wZXJ0eV9uYW1lfSwgZXhjZXB0aW9uX3N0YXRlKTsKaWYgKGV4Y2VwdGlvbl9zdGF0ZS5IYWRFeGNlcHRpb24oKSkKICByZXR1cm47CmlmIChkb2VzX2V4aXN0KSB7CiAgYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgZmFsc2UpOwogIGlmICgke2luZm99LlNob3VsZFRocm93T25FcnJvcigpKSB7CiAgICBleGNlcHRpb25fc3RhdGUuVGhyb3dUeXBlRXJyb3IoIk5hbWVkIHByb3BlcnR5IGRlbGV0ZXIgaXMgbm90IHN1cHBvcnRlZC4iKTsKICB9CiAgcmV0dXJuOwp9CgovLyBEbyBub3QgaW50ZXJjZXB0LgpyJAIAAHL8AAAAcsMBAAByJQIAAHpWLy8gMy45LjQuIFtbRGVsZXRlXV0KLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbGVnYWN5LXBsYXRmb3JtLW9iamVjdC1kZWxldGVhfwEAAGlmICgke3JldHVybl92YWx1ZX0gPT0gTmFtZWRQcm9wZXJ0eURlbGV0ZXJSZXN1bHQ6OmtEaWROb3REZWxldGUpIHsKICBpZiAoJHtpbmZvfS5TaG91bGRUaHJvd09uRXJyb3IoKSkgewogICAgRXhjZXB0aW9uU3RhdGUgZXhjZXB0aW9uX3N0YXRlKCR7aW5mb30uR2V0SXNvbGF0ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlOjprTmFtZWREZWxldGlvbkNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiR7aW50ZXJmYWNlLmlkZW50aWZpZXJ9Iik7CiAgICBleGNlcHRpb25fc3RhdGUuVGhyb3dUeXBlRXJyb3IoIkZhaWxlZCB0byBkZWxldGUgYSBwcm9wZXJ0eS4iKTsKICB9CiAgcmV0dXJuOwp9KRRyLwAAAHIcAAAAcjAAAAByAgIAAHL6AAAActMAAABy0gEAAHIGAgAAck0AAADaDG5hbWVkX2dldHRlcnKiAAAAcp0AAAByDwAAAHILAQAAcn8AAABydAAAAHKaAAAAcpQBAAByCQAAAHKtAQAAKQlyTgAAAHK+AQAAcrcBAAByvwEAAHIBAgAAcsABAABy0wAAANoFcHJvcHNyigAAAHIyAAAAcjIAAAByMwAAANokbWFrZV9uYW1lZF9wcm9wZXJ0eV9kZWxldGVyX2NhbGxiYWNrCgsAAHNSAAAAAAEOAQ4DAgEC/gQECAICAQwBAv4IAwYCCAEGAQr/AgIEAQb/BAwIAgYBBAEG/wQbCAICAQj/BgMMAQQBBv8EAg4BCAIEAQYEBgEEAQYBBvgGFHIsAgAAYwIAAAAAAAAAAAAAAAcAAAAHAAAAQwAAAHOyAAAAdAB8AHQBgwJzDkoAggF0AHwBdAKDAnMcSgCCAWcAZAGiAX0CZwBkAqIBfQN0A3wAfAF8AnwDfABqBGQDgwZcAn0EfQV8BWoFfQZ8AGoGagdkBGsCcmZ8BqAIdAlkBYMBoQEBAG5EfABqBmoHZAZ2AHKCfAagCHQJZAeDAaEBAQBuKHwAagZqCmoLc5x8BqAIdAlkCIMBoQEBAG4OfAagCHQJZAmDAaEBAQB8BHwFZgJTACkKTqkDcq8BAAByFgIAAHKwAQAAqQNysQEAAHIYAgAAcq4BAABaFE5hbWVkUHJvcGVydHlEZWZpbmVy2hNDU1NTdHlsZURlY2xhcmF0aW9uenEvLyBDU1NTdHlsZURlY2xhcmF0aW9uIGlzIGFidXNpbmcgbmFtZWQgcHJvcGVydGllcy4KLy8gRG8gbm90IGludGVyY2VwdC4gIEZhbGxiYWNrIHRvIE9yZGluYXJ5RGVmaW5lT3duUHJvcGVydHkuCikCWhBIVE1MRW1iZWRFbGVtZW50WhFIVE1MT2JqZWN0RWxlbWVudHqFLy8gSFRNTEVtYmVkRWxlbWVudCBhbmQgSFRNTE9iamVjdEVsZW1lbnQgYXJlIGFidXNpbmcgbmFtZWQgcHJvcGVydGllcy4KLy8gRG8gbm90IGludGVyY2VwdC4gIEZhbGxiYWNrIHRvIE9yZGluYXJ5RGVmaW5lT3duUHJvcGVydHkuCmGpAwAALy8gMy45LjMuIFtbRGVmaW5lT3duUHJvcGVydHldXQovLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlZmluZW93bnByb3BlcnR5Ci8vIHN0ZXAgMi4xLiBMZXQgY3JlYXRpbmcgYmUgdHJ1ZSBpZiBQIGlzIG5vdCBhIHN1cHBvcnRlZCBwcm9wZXJ0eSBuYW1lLCBhbmQKLy8gICBmYWxzZSBvdGhlcndpc2UuCi8vIHN0ZXAgMi4yLjEuIElmIGNyZWF0aW5nIGlzIGZhbHNlIGFuZCBPIGRvZXMgbm90IGltcGxlbWVudCBhbiBpbnRlcmZhY2UKLy8gICB3aXRoIGEgbmFtZWQgcHJvcGVydHkgc2V0dGVyLCB0aGVuIHJldHVybiBmYWxzZS4KJHtjbGFzc19uYW1lfTo6TmFtZWRQcm9wZXJ0eUdldHRlckNhbGxiYWNrKCR7djhfcHJvcGVydHlfbmFtZX0sICR7aW5mb30pOwpjb25zdCBib29sIGlzX2NyZWF0aW5nID0gJHtpbmZvfS5HZXRSZXR1cm5WYWx1ZSgpLkdldCgpLT5Jc1VuZGVmaW5lZCgpOwppZiAoIWlzX2NyZWF0aW5nKSB7CiAgYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgbnVsbHB0cik7CiAgaWYgKCR7aW5mb30uU2hvdWxkVGhyb3dPbkVycm9yKCkpIHsKICAgIEV4Y2VwdGlvblN0YXRlIGV4Y2VwdGlvbl9zdGF0ZSgke2luZm99LkdldElzb2xhdGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZTo6a05hbWVkU2V0dGVyQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJHtpbnRlcmZhY2UuaWRlbnRpZmllcn0iKTsKICAgIGV4Y2VwdGlvbl9zdGF0ZS5UaHJvd1R5cGVFcnJvcigiTmFtZWQgcHJvcGVydHkgc2V0dGVyIGlzIG5vdCBzdXBwb3J0ZWQuIik7CiAgfQogIHJldHVybjsKfQoKLy8gRG8gbm90IGludGVyY2VwdC4gIEZhbGxiYWNrIHRvIE9yZGluYXJ5RGVmaW5lT3duUHJvcGVydHkuCmG/AwAALy8gMy45LjMuIFtbRGVmaW5lT3duUHJvcGVydHldXQovLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNsZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlZmluZW93bnByb3BlcnR5Ci8vIHN0ZXAgMi4yLjIuIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZhY2Ugd2l0aCBhIG5hbWVkIHByb3BlcnR5IHNldHRlciwKLy8gICB0aGVuOgovLyBzdGVwIDIuMi4yLjEuIElmIHRoZSByZXN1bHQgb2YgY2FsbGluZyBJc0RhdGFEZXNjcmlwdG9yKERlc2MpIGlzIGZhbHNlLAovLyAgIHRoZW4gcmV0dXJuIGZhbHNlLgppZiAodjhfcHJvcGVydHlfZGVzYy5oYXNfZ2V0KCkgfHwgdjhfcHJvcGVydHlfZGVzYy5oYXNfc2V0KCkpIHsKICBiaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgke2luZm99LCBudWxscHRyKTsKICBpZiAoJHtpbmZvfS5TaG91bGRUaHJvd09uRXJyb3IoKSkgewogICAgRXhjZXB0aW9uU3RhdGUgZXhjZXB0aW9uX3N0YXRlKCR7aW5mb30uR2V0SXNvbGF0ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlOjprTmFtZWRTZXR0ZXJDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIke2ludGVyZmFjZS5pZGVudGlmaWVyfSIpOwogICAgZXhjZXB0aW9uX3N0YXRlLlRocm93VHlwZUVycm9yKCJBY2Nlc3NvciBwcm9wZXJ0aWVzIGFyZSBub3QgYWxsb3dlZC4iKTsKICB9CiAgcmV0dXJuOwp9CgovLyBzdGVwIDIuMi4yLjIuIEludm9rZSB0aGUgbmFtZWQgcHJvcGVydHkgc2V0dGVyIHdpdGggUCBhbmQgRGVzYy5bW1ZhbHVlXV0uCiR7Y2xhc3NfbmFtZX06Ok5hbWVkUHJvcGVydHlTZXR0ZXJDYWxsYmFjaygKICAgICR7djhfcHJvcGVydHlfbmFtZX0sICR7djhfcHJvcGVydHlfZGVzY30udmFsdWUoKSwgJHtpbmZvfSk7CmJpbmRpbmdzOjpWOFNldFJldHVyblZhbHVlKCR7aW5mb30sIG51bGxwdHIpOwopDHIvAAAAchwAAAByMAAAAHICAgAAcvoAAABy0wAAAHLSAQAAcj8AAABynQAAAHIPAAAAcgYCAADaDG5hbWVkX3NldHRlcnIIAgAAcjIAAAByMgAAAHIzAAAA2iRtYWtlX25hbWVkX3Byb3BlcnR5X2RlZmluZXJfY2FsbGJhY2toCwAAczIAAAAAAQ4BDgIIBQgCAgEMAQL+CAMGAgwBBAEG/wYFDAIEAQb/BgUKAQQBBv8GGAQBBv8EGXIxAgAAYwIAAAAAAAAAAAAAAA0AAAAIAAAAQwAAAHPGAAAAdAB8AHQBgwJzDkoAggF0AHwBdAKDAnMcSgCCAWQBZAJnAn0CZANkBGcCfQN0A3wAfAF8AnwDfABqBGQFgwZcAn0EfQV8BWoFfQZ8BqAGdAdkBoMBoQEBAGQHfABqCGoJdgFycnwGoAZ0B2QIgwGhAQEAZAl9B3wAaghqCn0IdAt8CGoMgwF9CXwJcpBkCm4CZAt9CnwIag19C3wLcqJkCm4CZAt9DHwGoAZ0B3QOfAd8CnwMZAyNA4MBoQEBAHwEfAVmAlMAKQ1Ocq8BAABysAEAAHKxAQAAcq4BAABaF05hbWVkUHJvcGVydHlEZXNjcmlwdG9yemwvLyBMZWdhY3lQbGF0Zm9ybU9iamVjdEdldE93blByb3BlcnR5Ci8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeVBsYXRmb3JtT2JqZWN0R2V0T3duUHJvcGVydHlyJwIAAGFMAQAALy8gc3RlcCAyLjEuIElmIHRoZSByZXN1bHQgb2YgcnVubmluZyB0aGUgbmFtZWQgcHJvcGVydHkgdmlzaWJpbGl0eSBhbGdvcml0aG0KLy8gICB3aXRoIHByb3BlcnR5IG5hbWUgUCBhbmQgb2JqZWN0IE8gaXMgdHJ1ZSwgdGhlbjoKaWYgKCR7djhfcmVjZWl2ZXJ9LT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUF0dHJpYnV0ZXNJblByb3RvdHlwZUNoYWluKAogICAgICAgICR7Y3VycmVudF9jb250ZXh0fSwgJHt2OF9wcm9wZXJ0eV9uYW1lfSkuSXNKdXN0KCkpIHsKICByZXR1cm47ICAvLyBEbyBub3QgaW50ZXJjZXB0LiAgRmFsbGJhY2sgdG8gT3JkaW5hcnlHZXRPd25Qcm9wZXJ0eS4KfQph2wUAAC8vIHN0ZXAgMi4xLjMuIElmIG9wZXJhdGlvbiB3YXMgZGVmaW5lZCB3aXRob3V0IGFuIGlkZW50aWZpZXIsIHRoZW4gc2V0Ci8vICAgdmFsdWUgdG8gdGhlIHJlc3VsdCBvZiBwZXJmb3JtaW5nIHRoZSBzdGVwcyBsaXN0ZWQgaW4gdGhlIGludGVyZmFjZQovLyAgIGRlc2NyaXB0aW9uIHRvIGRldGVybWluZSB0aGUgdmFsdWUgb2YgYSBuYW1lZCBwcm9wZXJ0eSB3aXRoIFAgYXMgdGhlCi8vICAgbmFtZS4KLy8gc3RlcCAyLjEuNC4gT3RoZXJ3aXNlLCBvcGVyYXRpb24gd2FzIGRlZmluZWQgd2l0aCBhbiBpZGVudGlmaWVyLiBTZXQKLy8gICB2YWx1ZSB0byB0aGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgdGhlIHN0ZXBzIGxpc3RlZCBpbiB0aGUgZGVzY3JpcHRpb24KLy8gICBvZiBvcGVyYXRpb24gd2l0aCBQIGFzIHRoZSBvbmx5IGFyZ3VtZW50IHZhbHVlLgoke2NsYXNzX25hbWV9OjpOYW1lZFByb3BlcnR5R2V0dGVyQ2FsbGJhY2soJHt2OF9wcm9wZXJ0eV9uYW1lfSwgJHtpbmZvfSk7CnY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4X3ZhbHVlID0gJHtpbmZvfS5HZXRSZXR1cm5WYWx1ZSgpLkdldCgpOwovLyBzdGVwIDIuMS4gSWYgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBuYW1lZCBwcm9wZXJ0eSB2aXNpYmlsaXR5Ci8vICAgYWxnb3JpdGhtIHdpdGggcHJvcGVydHkgbmFtZSBQIGFuZCBvYmplY3QgTyBpcyB0cnVlLCB0aGVuOgovLyBzdGVwIDMuIFJldHVybiBPcmRpbmFyeUdldE93blByb3BlcnR5KE8sIFApLgppZiAodjhfdmFsdWUtPklzVW5kZWZpbmVkKCkpCiAgcmV0dXJuOyAgLy8gRG8gbm90IGludGVyY2VwdC4gIEZhbGxiYWNrIHRvIE9yZGluYXJ5R2V0T3duUHJvcGVydHkuCgovLyBzdGVwIDIuMS42LiBTZXQgZGVzYy5bW1ZhbHVlXV0gdG8gdGhlIHJlc3VsdCBvZiBjb252ZXJ0aW5nIHZhbHVlIHRvIGFuCi8vICAgRUNNQVNjcmlwdCB2YWx1ZS4KLy8gc3RlcCAyLjEuNy4gSWYgTyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB3aXRoIGEgbmFtZWQgcHJvcGVydHkgc2V0dGVyLAovLyAgIHRoZW4gc2V0IGRlc2MuW1tXcml0YWJsZV1dIHRvIHRydWUsIG90aGVyd2lzZSBzZXQgaXQgdG8gZmFsc2UuCi8vIHN0ZXAgMi4xLjguIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZhY2Ugd2l0aCB0aGUKLy8gICBbTGVnYWN5VW5lbnVtZXJhYmxlTmFtZWRQcm9wZXJ0aWVzXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4gc2V0Ci8vICAgZGVzYy5bW0VudW1lcmFibGVdXSB0byBmYWxzZSwgb3RoZXJ3aXNlIHNldCBpdCB0byB0cnVlLgovLyBzdGVwIDIuMS45LiBTZXQgZGVzYy5bW0NvbmZpZ3VyYWJsZV1dIHRvIHRydWUuCnY4OjpQcm9wZXJ0eURlc2NyaXB0b3IgZGVzYyh2OF92YWx1ZSwgLyp3cml0YWJsZT0qL3tjeHhfd3JpdGFibGV9KTsKZGVzYy5zZXRfZW51bWVyYWJsZSh7Y3h4X2VudW1lcmFibGV9KTsKZGVzYy5zZXRfY29uZmlndXJhYmxlKHRydWUpOwpiaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgke2luZm99LCBkZXNjKTsKchsCAAByHAIAACkCch0CAADaDmN4eF9lbnVtZXJhYmxlKQ9yLwAAAHIcAAAAcjAAAAByAgIAAHL6AAAActMAAABynQAAAHIPAAAActIBAAByogAAAHIGAgAAcpsBAAByMAIAANocaXNfbmFtZWRfcHJvcGVydHlfZW51bWVyYWJsZXJ/AAAAKQ1yTgAAAHK+AQAAcrcBAAByvwEAAHIBAgAAcsABAABy0wAAAHKJAAAAcisCAAByHgIAAHIdAgAAWgplbnVtZXJhYmxlcjICAAByMgAAAHIyAAAAcjMAAADaJ21ha2VfbmFtZWRfcHJvcGVydHlfZGVzY3JpcHRvcl9jYWxsYmFja7oLAABzSAAAAAABDgEOAwIBAv4EBAgCAgEMAQL+CAMGAgQBBv8EBgIBBv8EAgQBBv8ECgQdCAEKAQwBBgEMAQQBAgECAQIBAgEC/QT/Av8EB3I0AgAAYwIAAAAAAAAAAAAAAAoAAAAIAAAAQwAAAHPaAAAAdAB8AHQBgwJzDkoAggF0AHwBdAKDAnMcSgCCAXwAagNqBH0CZAF8AmoFagZ2AHI0ZAJTAGQDZARnAn0DZAVkBmcCfQR0B3wAfAF8A3wEfABqCGQHgwZcAn0FfQZ8BmoJfQdnAH0IfAJqCnN2fAigC2QIoQEBAHwCagxzhnwIoAtkCaEBAQB8CHOUfAigC2QKoQEBAHQNfAiDAWQLawJyqnwIZAwZAH0JbgpkDaAOfAihAX0JfAegD3QQZA6DAXQQdBFkD3wJZBCNAoMBZwKhAQEAfAV8BmYCUwApEU5yKQIAAHIgAgAAcq8BAAD6MWNvbnN0IHY4OjpQcm9wZXJ0eUNhbGxiYWNrSW5mbzx2ODo6SW50ZWdlcj4mIGluZm9ysQEAAHKuAQAAWhJOYW1lZFByb3BlcnR5UXVlcnn6DHY4OjpSZWFkT25sefoMdjg6OkRvbnRFbnVt+gh2ODo6Tm9uZXICAAAAcgEAAAD6AyB8IGFCAQAARXhjZXB0aW9uU3RhdGUgZXhjZXB0aW9uX3N0YXRlKCR7aXNvbGF0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZTo6a05hbWVkR2V0dGVyQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIke2ludGVyZmFjZS5pZGVudGlmaWVyfSIpOwpib29sIGRvZXNfZXhpc3QgPSAke2JsaW5rX3JlY2VpdmVyfS0+TmFtZWRQcm9wZXJ0eVF1ZXJ5KAogICAgJHtibGlua19wcm9wZXJ0eV9uYW1lfSwgZXhjZXB0aW9uX3N0YXRlKTsKaWYgKCFkb2VzX2V4aXN0KQogIHJldHVybjsgIC8vIERvIG5vdCBpbnRlcmNlcHQuCnpEYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgdWludDMyX3Qoe3Byb3BlcnR5X2F0dHJpYnV0ZX0pKTspAdoScHJvcGVydHlfYXR0cmlidXRlKRJyLwAAAHIcAAAAcjAAAABy0gEAAHIGAgAAcioCAAByogAAAHICAgAAcvoAAABy0wAAAHIwAgAAcp0AAAByMwIAAHIFAQAAckgAAABymgAAAHIPAAAAcn8AAAApCnJOAAAAcr4BAAByKwIAAHK3AQAAcr8BAAByAQIAAHLAAQAActMAAADaBWZsYWdzcjoCAAByMgAAAHIyAAAAcjMAAADaIm1ha2VfbmFtZWRfcHJvcGVydHlfcXVlcnlfY2FsbGJhY2sHDAAAc0QAAAAAAQ4BDgIIAQwBBAMCAQL+BAQIAgIBDAEC/ggDBgIEAQYBCgEGAQoBBAEKAQwBCgIKAgQBBgkCAQIBAgIC/QT/AvYGEXI8AgAAYwIAAAAAAAAAAAAAAAgAAAAHAAAAQwAAAHN0AAAAdAB8AHQBgwJzDkoAggF0AHwBdAKDAnMcSgCCAXwAagNqBH0CZAF8AmoFagZ2AHI0ZAJTAGQDZwF9A2QEZwF9BHQHfAB8AXwDfAR8AGoIZAWDBlwCfQV9BnwGagl9B3wHoAp0C2QGgwGhAQEAfAV8BmYCUwApB05yKQIAAHIgAgAAciECAAByrgEAAFoXTmFtZWRQcm9wZXJ0eUVudW1lcmF0b3Jh9wIAAC8vIDMuOS42LiBbW093blByb3BlcnR5S2V5c11dCi8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3Qtb3ducHJvcGVydHlrZXlzCi8vIHN0ZXAgMy4gSWYgTyBzdXBwb3J0cyBuYW1lZCBwcm9wZXJ0aWVzLCB0aGVuIGZvciBlYWNoIFAgb2YgTydzIHN1cHBvcnRlZAovLyAgIHByb3BlcnR5IG5hbWVzIHRoYXQgaXMgdmlzaWJsZSBhY2NvcmRpbmcgdG8gdGhlIG5hbWVkIHByb3BlcnR5Ci8vICAgdmlzaWJpbGl0eSBhbGdvcml0aG0sIGFwcGVuZCBQIHRvIGtleXMuClZlY3RvcjxTdHJpbmc+IGJsaW5rX3Byb3BlcnR5X25hbWVzOwpFeGNlcHRpb25TdGF0ZSBleGNlcHRpb25fc3RhdGUoJHtpbmZvfS5HZXRJc29sYXRlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZTo6a0VudW1lcmF0aW9uQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIke2ludGVyZmFjZS5pZGVudGlmaWVyfSIpOwoke2JsaW5rX3JlY2VpdmVyfS0+TmFtZWRQcm9wZXJ0eUVudW1lcmF0b3IoCiAgICBibGlua19wcm9wZXJ0eV9uYW1lcywgZXhjZXB0aW9uX3N0YXRlKTsKaWYgKGV4Y2VwdGlvbl9zdGF0ZS5IYWRFeGNlcHRpb24oKSkKICByZXR1cm47CmJpbmRpbmdzOjpWOFNldFJldHVyblZhbHVlKAogICAgJHtpbmZvfSwKICAgIFRvVjgoYmxpbmtfcHJvcGVydHlfbmFtZXMsICR7Y3JlYXRpb25fY29udGV4dF9vYmplY3R9LCAke2lzb2xhdGV9KSk7CikMci8AAAByHAAAAHIwAAAActIBAAByBgIAAHIqAgAAcqIAAAByAgIAAHL6AAAActMAAABynQAAAHIPAAAAKQhyTgAAAHK+AQAAcisCAABytwEAAHK/AQAAcgECAABywAEAAHLTAAAAcjIAAAByMgAAAHIzAAAA2idtYWtlX25hbWVkX3Byb3BlcnR5X2VudW1lcmF0b3JfY2FsbGJhY2s6DAAAcyAAAAAAAQ4BDgIIAQwBBAIGAQYCAgEMAQL+CAMGAgQBBv8EFHI9AgAAYwIAAAAAAAAAAAAAAAYAAAAHAAAAQwAAAHNWAAAAdAB8AHQBgwJzDkoAggF0AHwBdAKDAnMcSgCCAWQBZAJnAn0CZANkBGcCfQN0A3wAfAF8AnwDZABkBYMGfQR8BGoEfQV8BaAFdAZkBoMBoQEBAHwEUwApB05yBAIAAHKwAQAAcoUAAAByrgEAAForTmFtZWRQcm9wZXJ0aWVzT2JqZWN0X0luZGV4ZWRQcm9wZXJ0eUdldHRlcnqgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHByb3BlcnR5X25hbWUgPQogICAgVjhBdG9taWNTdHJpbmcoJHtpc29sYXRlfSwgQXRvbWljU3RyaW5nOjpOdW1iZXIoJHtpbmRleH0pKTsKTmFtZWRQcm9wc09iak5hbWVkR2V0dGVyQ2FsbGJhY2socHJvcGVydHlfbmFtZSwgJHtpbmZvfSk7CqkHci8AAAByHAAAAHIwAAAAcv8BAABy0wAAAHKdAAAAcg8AAACpBnJOAAAAcr4BAABytwEAAHK/AQAAcsABAABy0wAAAHIyAAAAcjIAAAByMwAAANosbWFrZV9uYW1lZF9wcm9wc19vYmpfaW5kZXhlZF9nZXR0ZXJfY2FsbGJhY2tmDAAAcx4AAAAAAQ4BDgMCAQL+BAQIAgIBCgEC/gQDBgIEAQb/BAdyQAIAAGMCAAAAAAAAAAAAAAAGAAAABwAAAEMAAABzVgAAAHQAfAB0AYMCcw5KAIIBdAB8AXQCgwJzHEoAggFkAWQCZwJ9AmQDZARnAn0DdAN8AHwBfAJ8A2QAZAWDBn0EfARqBH0FfAWgBXQGZAaDAaEBAQB8BFMAKQdOcgQCAAByEwIAAHKFAAAAcq4BAABaLE5hbWVkUHJvcGVydGllc09iamVjdF9JbmRleGVkUHJvcGVydHlEZWxldGVyYV4BAABiaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgke2luZm99LCBmYWxzZSk7CmlmICgke2luZm99LlNob3VsZFRocm93T25FcnJvcigpKSB7CiAgRXhjZXB0aW9uU3RhdGUgZXhjZXB0aW9uX3N0YXRlKCR7aW5mb30uR2V0SXNvbGF0ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZTo6a0luZGV4ZWREZWxldGlvbkNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIke2ludGVyZmFjZS5pZGVudGlmaWVyfSIpOwogIGV4Y2VwdGlvbl9zdGF0ZS5UaHJvd1R5cGVFcnJvcigiTmFtZWQgcHJvcGVydHkgZGVsZXRlciBpcyBub3Qgc3VwcG9ydGVkLiIpOwp9CnI+AgAAcj8CAAByMgAAAHIyAAAAcjMAAADaLW1ha2VfbmFtZWRfcHJvcHNfb2JqX2luZGV4ZWRfZGVsZXRlcl9jYWxsYmFja38MAABzHgAAAAABDgEOAwIBAv4EBAgCAgEKAQL+BAMGAgQBBv8EC3JBAgAAYwIAAAAAAAAAAAAAAAYAAAAHAAAAQwAAAHNWAAAAdAB8AHQBgwJzDkoAggF0AHwBdAKDAnMcSgCCAWcAZAGiAX0CZwBkAqIBfQN0A3wAfAF8AnwDZABkA4MGfQR8BGoEfQV8BaAFdAZkBIMBoQEBAHwEUwApBU5yFQIAAHIXAgAAWixOYW1lZFByb3BlcnRpZXNPYmplY3RfSW5kZXhlZFByb3BlcnR5RGVmaW5lcmHOAQAALy8gMy42LjQuMi4gW1tEZWZpbmVPd25Qcm9wZXJ0eV1dCi8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI25hbWVkLXByb3BlcnRpZXMtb2JqZWN0LWRlZmluZW93bnByb3BlcnR5CmJpbmRpbmdzOjpWOFNldFJldHVyblZhbHVlKCR7aW5mb30sIG51bGxwdHIpOwppZiAoJHtpbmZvfS5TaG91bGRUaHJvd09uRXJyb3IoKSkgewogIEV4Y2VwdGlvblN0YXRlIGV4Y2VwdGlvbl9zdGF0ZSgke2luZm99LkdldElzb2xhdGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uU3RhdGU6OmtJbmRleGVkU2V0dGVyQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiR7aW50ZXJmYWNlLmlkZW50aWZpZXJ9Iik7CiAgZXhjZXB0aW9uX3N0YXRlLlRocm93VHlwZUVycm9yKCJOYW1lZCBwcm9wZXJ0eSBkZWxldGVyIGlzIG5vdCBzdXBwb3J0ZWQuIik7Cn0Kcj4CAAByPwIAAHIyAAAAcjIAAAByMwAAANotbWFrZV9uYW1lZF9wcm9wc19vYmpfaW5kZXhlZF9kZWZpbmVyX2NhbGxiYWNrnAwAAHMaAAAAAAEOAQ4CCAUIAgIBCgEC/gQDBgIEAQb/BA1yQgIAAGMCAAAAAAAAAAAAAAAGAAAABwAAAEMAAABzVgAAAHQAfAB0AYMCcw5KAIIBdAB8AXQCgwJzHEoAggFkAWQCZwJ9AmQDZARnAn0DdAN8AHwBfAJ8A2QAZAWDBn0EfARqBH0FfAWgBXQGZAaDAaEBAQB8BFMAKQdOcgQCAABysAEAAHKFAAAAcq4BAABaL05hbWVkUHJvcGVydGllc09iamVjdF9JbmRleGVkUHJvcGVydHlEZXNjcmlwdG9yeqR2ODo6TG9jYWw8djg6OlN0cmluZz4gcHJvcGVydHlfbmFtZSA9CiAgICBWOEF0b21pY1N0cmluZygke2lzb2xhdGV9LCBBdG9taWNTdHJpbmc6Ok51bWJlcigke2luZGV4fSkpOwpOYW1lZFByb3BzT2JqTmFtZWREZXNjcmlwdG9yQ2FsbGJhY2socHJvcGVydHlfbmFtZSwgJHtpbmZvfSk7CnI+AgAAcj8CAAByMgAAAHIyAAAAcjMAAADaMG1ha2VfbmFtZWRfcHJvcHNfb2JqX2luZGV4ZWRfZGVzY3JpcHRvcl9jYWxsYmFja7wMAABzHgAAAAACDgEOAwIBAv4EBAgCAgEKAQL+BAMGAgQBBv8EB3JDAgAAYwIAAAAAAAAAAAAAAAYAAAAHAAAAQwAAAHNWAAAAdAB8AHQBgwJzDkoAggF0AHwBdAKDAnMcSgCCAWQBZAJnAn0CZANkBGcCfQN0A3wAfAF8AnwDZABkBYMGfQR8BGoEfQV8BaAFdAZkBoMBoQEBAHwEUwApB05yrwEAAHKwAQAAcrEBAAByrgEAAFopTmFtZWRQcm9wZXJ0aWVzT2JqZWN0X05hbWVkUHJvcGVydHlHZXR0ZXJhBwEAAC8vIDMuNi40LjEuIFtbR2V0T3duUHJvcGVydHldXQovLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNuYW1lZC1wcm9wZXJ0aWVzLW9iamVjdC1nZXRvd25wcm9wZXJ0eQovLwovLyBUT0RPKHl1a2lzaGlpbm8pOiBVcGRhdGUgdGhlIGZvbGxvd2luZyBoYXJkLWNvZGVkIGNhbGwgdG8gYW4gYXBwcm9wcmlhdGUKLy8gb25lLgpWOFdpbmRvdzo6TmFtZWRQcm9wZXJ0eUdldHRlckN1c3RvbSgke2JsaW5rX3Byb3BlcnR5X25hbWV9LCAke2luZm99KTsKcj4CAAByPwIAAHIyAAAAcjIAAAByMwAAANoqbWFrZV9uYW1lZF9wcm9wc19vYmpfbmFtZWRfZ2V0dGVyX2NhbGxiYWNr1gwAAHMeAAAAAAEOAQ4DAgEC/gQECAICAQoBAv4EAwYCBAEG/wQKckQCAABjAgAAAAAAAAAAAAAABgAAAAcAAABDAAAAc1YAAAB0AHwAdAGDAnMOSgCCAXQAfAF0AoMCcxxKAIIBZAFkAmcCfQJkA2QEZwJ9A3QDfAB8AXwCfANkAGQFgwZ9BHwEagR9BXwFoAV0BmQGgwGhAQEAfARTACkHTnKvAQAAchMCAABysQEAAHKuAQAAWipOYW1lZFByb3BlcnRpZXNPYmplY3RfTmFtZWRQcm9wZXJ0eURlbGV0ZXJhtgEAAC8vIDMuNi40LjMuIFtbRGVsZXRlXV0KLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbmFtZWQtcHJvcGVydGllcy1vYmplY3QtZGVsZXRlCmJpbmRpbmdzOjpWOFNldFJldHVyblZhbHVlKCR7aW5mb30sIGZhbHNlKTsKaWYgKCR7aW5mb30uU2hvdWxkVGhyb3dPbkVycm9yKCkpIHsKICBFeGNlcHRpb25TdGF0ZSBleGNlcHRpb25fc3RhdGUoJHtpbmZvfS5HZXRJc29sYXRlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlOjprTmFtZWREZWxldGlvbkNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIke2ludGVyZmFjZS5pZGVudGlmaWVyfSIpOwogIGV4Y2VwdGlvbl9zdGF0ZS5UaHJvd1R5cGVFcnJvcigiTmFtZWQgcHJvcGVydHkgZGVsZXRlciBpcyBub3Qgc3VwcG9ydGVkLiIpOwp9CnI+AgAAcj8CAAByMgAAAHIyAAAAcjMAAADaK21ha2VfbmFtZWRfcHJvcHNfb2JqX25hbWVkX2RlbGV0ZXJfY2FsbGJhY2vyDAAAcx4AAAAAAQ4BDgMCAQL+BAQIAgIBCgEC/gQDBgIEAQb/BA1yRQIAAGMCAAAAAAAAAAAAAAAGAAAABwAAAEMAAABzVgAAAHQAfAB0AYMCcw5KAIIBdAB8AXQCgwJzHEoAggFnAGQBogF9AmcAZAKiAX0DdAN8AHwBfAJ8A2QAZAODBn0EfARqBH0FfAWgBXQGZASDAaEBAQB8BFMAKQVOci0CAAByLgIAAFoqTmFtZWRQcm9wZXJ0aWVzT2JqZWN0X05hbWVkUHJvcGVydHlEZWZpbmVyYcsBAAAvLyAzLjYuNC4yLiBbW0RlZmluZU93blByb3BlcnR5XV0KLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbmFtZWQtcHJvcGVydGllcy1vYmplY3QtZGVmaW5lb3ducHJvcGVydHkKYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgbnVsbHB0cik7CmlmICgke2luZm99LlNob3VsZFRocm93T25FcnJvcigpKSB7CiAgRXhjZXB0aW9uU3RhdGUgZXhjZXB0aW9uX3N0YXRlKCR7aW5mb30uR2V0SXNvbGF0ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZTo6a05hbWVkU2V0dGVyQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiR7aW50ZXJmYWNlLmlkZW50aWZpZXJ9Iik7CiAgZXhjZXB0aW9uX3N0YXRlLlRocm93VHlwZUVycm9yKCJOYW1lZCBwcm9wZXJ0eSBzZXR0ZXIgaXMgbm90IHN1cHBvcnRlZC4iKTsKfQpyPgIAAHI/AgAAcjIAAAByMgAAAHIzAAAA2ittYWtlX25hbWVkX3Byb3BzX29ial9uYW1lZF9kZWZpbmVyX2NhbGxiYWNrEQ0AAHMaAAAAAAEOAQ4CCAUIAgIBCgEC/gQDBgIEAQb/BA1yRgIAAGMCAAAAAAAAAAAAAAAGAAAABwAAAEMAAABzVgAAAHQAfAB0AYMCcw5KAIIBdAB8AXQCgwJzHEoAggFkAWQCZwJ9AmQDZARnAn0DdAN8AHwBfAJ8A2QAZAWDBn0EfARqBH0FfAWgBXQGZAaDAaEBAQB8BFMAKQdOcq8BAABysAEAAHKxAQAAcq4BAABaLU5hbWVkUHJvcGVydGllc09iamVjdF9OYW1lZFByb3BlcnR5RGVzY3JpcHRvcmGeBAAALy8gMy42LjQuMS4gW1tHZXRPd25Qcm9wZXJ0eV1dCi8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI25hbWVkLXByb3BlcnRpZXMtb2JqZWN0LWdldG93bnByb3BlcnR5Ci8vIHN0ZXAgNC4gSWYgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBuYW1lZCBwcm9wZXJ0eSB2aXNpYmlsaXR5IGFsZ29yaXRobQovLyAgIHdpdGggcHJvcGVydHkgbmFtZSBQIGFuZCBvYmplY3Qgb2JqZWN0IGlzIHRydWUsIHRoZW46CmlmICgke3Y4X3JlY2VpdmVyfS0+R2V0UmVhbE5hbWVkUHJvcGVydHlBdHRyaWJ1dGVzSW5Qcm90b3R5cGVDaGFpbigKICAgICAgICAke2N1cnJlbnRfY29udGV4dH0sICR7djhfcHJvcGVydHlfbmFtZX0pLklzSnVzdCgpKSB7CiAgcmV0dXJuOyAgLy8gRG8gbm90IGludGVyY2VwdC4gIEZhbGxiYWNrIHRvIE9yZGluYXJ5R2V0T3duUHJvcGVydHkuCn0KCi8vIFRPRE8oeXVraXNoaWlubyk6IFVwZGF0ZSB0aGUgZm9sbG93aW5nIGhhcmQtY29kZWQgY2FsbCB0byBhbiBhcHByb3ByaWF0ZQovLyBvbmUuClY4V2luZG93OjpOYW1lZFByb3BlcnR5R2V0dGVyQ3VzdG9tKCR7YmxpbmtfcHJvcGVydHlfbmFtZX0sICR7aW5mb30pOwp2ODo6TG9jYWw8djg6OlZhbHVlPiB2OF92YWx1ZSA9ICR7aW5mb30uR2V0UmV0dXJuVmFsdWUoKS5HZXQoKTsKaWYgKHY4X3ZhbHVlLT5Jc1VuZGVmaW5lZCgpKQogIHJldHVybjsgIC8vIERvIG5vdCBpbnRlcmNlcHQuICBGYWxsYmFjayB0byBPcmRpbmFyeUdldE93blByb3BlcnR5LgoKLy8gc3RlcCA0LjcuIElmIEEgaW1wbGVtZW50cyBhbiBpbnRlcmZhY2Ugd2l0aCB0aGUKLy8gICBbTGVnYWN5VW5lbnVtZXJhYmxlTmFtZWRQcm9wZXJ0aWVzXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4gc2V0Ci8vICAgZGVzYy5bW0VudW1lcmFibGVdXSB0byBmYWxzZSwgb3RoZXJ3aXNlIHNldCBpdCB0byB0cnVlLgovLyBzdGVwIDQuOC4gU2V0IGRlc2MuW1tXcml0YWJsZV1dIHRvIHRydWUgYW5kIGRlc2MuW1tDb25maWd1cmFibGVdXSB0bwovLyAgIHRydWUuCnY4OjpQcm9wZXJ0eURlc2NyaXB0b3IgZGVzYyh2OF92YWx1ZSwgLyp3cml0YWJsZT0qL3RydWUpOwpkZXNjLnNldF9lbnVtZXJhYmxlKGZhbHNlKTsKZGVzYy5zZXRfY29uZmlndXJhYmxlKHRydWUpOwpiaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgke2luZm99LCBkZXNjKTsKcj4CAAByPwIAAHIyAAAAcjIAAAByMwAAANoubWFrZV9uYW1lZF9wcm9wc19vYmpfbmFtZWRfZGVzY3JpcHRvcl9jYWxsYmFjazENAABz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fAF0AoMCcxxKAIIBZAFkAmcCfQJkA2QEZwJ9A3QDfAB8AXwCfANkAGQFgwZ9BHwEagR9BWcAfQZ8BqAFdAZkBoMBoQEBAHwAagdqCGQHawJycHwGoAV0BmQIgwGhAQEAfAWgCXQKZAl8BmQKjQJ0C4MAdAZkC4MBZwOhAQEAfARTACkMTnKvAQAAcrABAABysQEAAHKuAQAAWidDcm9zc09yaWdpblByb3BlcnR5X05hbWVkUHJvcGVydHlHZXR0ZXJhsQIAAGZvciAoY29uc3QgYXV0byYgYXR0cmlidXRlIDoga0Nyb3NzT3JpZ2luQXR0cmlidXRlVGFibGUpIHsKICBpZiAoJHtibGlua19wcm9wZXJ0eV9uYW1lfSAhPSBhdHRyaWJ1dGUubmFtZSkKICAgIGNvbnRpbnVlOwogIGlmIChVTkxJS0VMWSghYXR0cmlidXRlLmdldF92YWx1ZSkpIHsKICAgICR7dGhyb3dfc2VjdXJpdHlfZXJyb3J9CiAgICByZXR1cm47CiAgfQogIGF0dHJpYnV0ZS5nZXRfdmFsdWUoJHt2OF9wcm9wZXJ0eV9uYW1lfSwgJHtpbmZvfSk7CiAgcmV0dXJuOwp9CmZvciAoY29uc3QgYXV0byYgb3BlcmF0aW9uIDoga0Nyb3NzT3JpZ2luT3BlcmF0aW9uVGFibGUpIHsKICBpZiAoJHtibGlua19wcm9wZXJ0eV9uYW1lfSAhPSBvcGVyYXRpb24ubmFtZSkKICAgIGNvbnRpbnVlOwogIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uOwogIGlmIChiaW5kaW5nczo6R2V0Q3Jvc3NPcmlnaW5GdW5jdGlvbigKICAgICAgICAgICR7aW5mb30uR2V0SXNvbGF0ZSgpLCBvcGVyYXRpb24uY2FsbGJhY2ssIG9wZXJhdGlvbi5mdW5jX2xlbmd0aCwKICAgICAgICAgICR7Y2xhc3NfbmFtZX06OkdldFdyYXBwZXJUeXBlSW5mbygpKQogICAgICAgICAgLlRvTG9jYWwoJmZ1bmN0aW9uKSkgewogICAgYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgZnVuY3Rpb24pOwogIH0KICByZXR1cm47Cn0KcpgAAABhJQEAAC8vIFdpbmRvdyBvYmplY3QncyBkb2N1bWVudC10cmVlIGNoaWxkIGJyb3dzaW5nIGNvbnRleHQgbmFtZSBwcm9wZXJ0eSBzZXQKLy8KLy8gVE9ETyh5dWtpc2hpaW5vKTogVXBkYXRlIHRoZSBmb2xsb3dpbmcgaGFyZC1jb2RlZCBjYWxsIHRvIGFuIGFwcHJvcHJpYXRlCi8vIG9uZS4KVjhXaW5kb3c6Ok5hbWVkUHJvcGVydHlHZXR0ZXJDdXN0b20oJHtibGlua19wcm9wZXJ0eV9uYW1lfSwgJHtpbmZvfSk7CmlmICghJHtpbmZvfS5HZXRSZXR1cm5WYWx1ZSgpLkdldCgpLT5Jc1VuZGVmaW5lZCgpKQogIHJldHVybjsK+h8ke3Y4X3Byb3BlcnR5X25hbWV9LT5Jc1N0cmluZygpctEAAABhLAEAAC8vIDcuMi4zLjIgQ3Jvc3NPcmlnaW5Qcm9wZXJ0eUZhbGxiYWNrICggUCApCi8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvQy8jY3Jvc3NvcmlnaW5wcm9wZXJ0eWZhbGxiYWNrLSgtcC0pCmlmIChiaW5kaW5nczo6SXNTdXBwb3J0ZWRJbkNyb3NzT3JpZ2luUHJvcGVydHlGYWxsYmFjaygKICAgICAgICAke2luZm99LkdldElzb2xhdGUoKSwgJHt2OF9wcm9wZXJ0eV9uYW1lfSkpIHsKICByZXR1cm4gJHtpbmZvfS5HZXRSZXR1cm5WYWx1ZSgpLlNldFVuZGVmaW5lZCgpOwp9CiR7dGhyb3dfc2VjdXJpdHlfZXJyb3J9CqkMci8AAAByHAAAAHIwAAAAcv8BAABy0wAAAHKdAAAAcg8AAABy0gEAAHI/AAAAcpoAAAByFgAAAHIJAAAAqQdyTgAAAHK+AQAAcrcBAAByvwEAAHLAAQAActMAAABaEHN0cmluZ19jYXNlX2JvZHlyMgAAAHIyAAAAcjMAAADaJ21ha2VfY3Jvc3Nfb3JpZ2luX25hbWVkX2dldHRlcl9jYWxsYmFjaykOAABzNgAAAAABDgEOAwIBAv4EBAgCAgEKAQL+BAMGAgQBBAEG/wQZDAEEAQb/BAsEAQIBBP8EAgQBBvwGD3JWAgAAYwIAAAAAAAAAAAAAAAcAAAAHAAAAQwAAAHN4AAAA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dHJpYnV0ZS5nZXRfY2FsbGJhY2ssIDAsCiAgICAgICAgICAgJHtjbGFzc19uYW1lfTo6R2V0V3JhcHBlclR5cGVJbmZvKCkpCiAgICAgICAgICAgLlRvTG9jYWwoJmdldCkgfHwKICAgICAgIWJpbmRpbmdzOjpHZXRDcm9zc09yaWdpbkZ1bmN0aW9uT3JVbmRlZmluZWQoCiAgICAgICAgICAgJHtpbmZvfS5HZXRJc29sYXRlKCksIGF0dHJpYnV0ZS5zZXRfY2FsbGJhY2ssIDEsCiAgICAgICAgICAgJHtjbGFzc19uYW1lfTo6R2V0V3JhcHBlclR5cGVJbmZvKCkpCiAgICAgICAgICAgLlRvTG9jYWwoJnNldCkpIHsKICAgIHJldHVybjsKICB9CiAgdjg6OlByb3BlcnR5RGVzY3JpcHRvciBkZXNjKGdldCwgc2V0KTsKICBkZXNjLnNldF9lbnVtZXJhYmxlKGZhbHNlKTsKICBkZXNjLnNldF9jb25maWd1cmFibGUodHJ1ZSk7CiAgYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgZGVzYyk7CiAgcmV0dXJuOwp9CmZvciAoY29uc3QgYXV0byYgb3BlcmF0aW9uIDoga0Nyb3NzT3JpZ2luT3BlcmF0aW9uVGFibGUpIHsKICBpZiAoJHtibGlua19wcm9wZXJ0eV9uYW1lfSAhPSBvcGVyYXRpb24ubmFtZSkKICAgIGNvbnRpbnVlOwogIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uOwogIGlmICghYmluZGluZ3M6OkdldENyb3NzT3JpZ2luRnVuY3Rpb24oCiAgICAgICAgICAgJHtpbmZvfS5HZXRJc29sYXRlKCksIG9wZXJhdGlvbi5jYWxsYmFjaywgb3BlcmF0aW9uLmZ1bmNfbGVuZ3RoLAogICAgICAgICAgICR7Y2xhc3NfbmFtZX06OkdldFdyYXBwZXJUeXBlSW5mbygpKQogICAgICAgICAgIC5Ub0xvY2FsKCZmdW5jdGlvbikpIHsKICAgIHJldHVybjsKICB9CiAgdjg6OlByb3BlcnR5RGVzY3JpcHRvciBkZXNjKGZ1bmN0aW9uLCAvKndyaXRhYmxlPSovZmFsc2UpOwogIGRlc2Muc2V0X2VudW1lcmFibGUoZmFsc2UpOwogIGRlc2Muc2V0X2NvbmZpZ3VyYWJsZSh0cnVlKTsKICBiaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgke2luZm99LCBkZXNjKTsKICByZXR1cm47Cn0KcpgAAABhBAIAAC8vIFdpbmRvdyBvYmplY3QncyBkb2N1bWVudC10cmVlIGNoaWxkIGJyb3dzaW5nIGNvbnRleHQgbmFtZSBwcm9wZXJ0eSBzZXQKLy8KLy8gVE9ETyh5dWtpc2hpaW5vKTogVXBkYXRlIHRoZSBmb2xsb3dpbmcgaGFyZC1jb2RlZCBjYWxsIHRvIGFuIGFwcHJvcHJpYXRlCi8vIG9uZS4KVjhXaW5kb3c6Ok5hbWVkUHJvcGVydHlHZXR0ZXJDdXN0b20oJHtibGlua19wcm9wZXJ0eV9uYW1lfSwgJHtpbmZvfSk7CmlmICghJHtpbmZvfS5HZXRSZXR1cm5WYWx1ZSgpLkdldCgpLT5Jc1VuZGVmaW5lZCgpKSB7CiAgdjg6OlByb3BlcnR5RGVzY3JpcHRvciBkZXNjKCR7aW5mb30uR2V0UmV0dXJuVmFsdWUoKS5HZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp3cml0YWJsZT0qL2ZhbHNlKTsKICBkZXNjLnNldF9lbnVtZXJhYmxlKGZhbHNlKTsKICBkZXNjLnNldF9jb25maWd1cmFibGUodHJ1ZSk7CiAgYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgZGVzYyk7CiAgcmV0dXJuOwp9CnJTAgAActEAAABh5AEAAC8vIDcuMi4zLjIgQ3Jvc3NPcmlnaW5Qcm9wZXJ0eUZhbGxiYWNrICggUCApCi8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvQy8jY3Jvc3NvcmlnaW5wcm9wZXJ0eWZhbGxiYWNrLSgtcC0pCmlmIChiaW5kaW5nczo6SXNTdXBwb3J0ZWRJbkNyb3NzT3JpZ2luUHJvcGVydHlGYWxsYmFjaygKICAgICAgICAke2luZm99LkdldElzb2xhdGUoKSwgJHt2OF9wcm9wZXJ0eV9uYW1lfSkpIHsKICB2ODo6UHJvcGVydHlEZXNjcmlwdG9yIGRlc2Modjg6OlVuZGVmaW5lZCgke2luZm99LkdldElzb2xhdGUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qd3JpdGFibGU9Ki9mYWxzZSk7CiAgZGVzYy5zZXRfZW51bWVyYWJsZShmYWxzZSk7CiAgZGVzYy5zZXRfY29uZmlndXJhYmxlKHRydWUpOwogIGJpbmRpbmdzOjpWOFNldFJldHVyblZhbHVlKCR7aW5mb30sIGRlc2MpOwogIHJldHVybjsKfQoke3Rocm93X3NlY3VyaXR5X2Vycm9yfQpyVAIAAHJVAgAAcjIAAAByMgAAAHIzAAAA2ittYWtlX2Nyb3NzX29yaWdpbl9uYW1lZF9kZXNjcmlwdG9yX2NhbGxiYWNrvg4AAHM2AAAAAAEOAQ4DAgEC/gQECAICAQoBAv4EAwYCBAEEAQb/BCoMAQQBBv8EEQQBAgEE/wQCBAEG/AYUclsCAABjAgAAAAAAAAAAAAAABwAAAAcAAABDAAAAc3gAAAB0AHwAdAGDAnMOSgCCAXQAfAF0AoMCcxxKAIIBZAFkAmcCfQJkA2QEZwJ9A3QDfAB8AXwCfANkAGQFgwZ9BHwEagR9BWcAfQZ8BqAFdAZkBoMBoQEBAHwFoAd0CGQHfAZkCI0CdAmDAHQGZAmDAWcDoQEBAHwEUwApCk5yrwEAAHI1AgAAcrEBAAByrgEAAFomQ3Jvc3NPcmlnaW5Qcm9wZXJ0eV9OYW1lZFByb3BlcnR5UXVlcnlhvwIAAC8vIDcuMi4zLjQgQ3Jvc3NPcmlnaW5HZXRPd25Qcm9wZXJ0eUhlbHBlciAoIE8sIFAgKQovLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL0MvI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHloZWxwZXItKC1vLC1wLSkKZm9yIChjb25zdCBhdXRvJiBhdHRyaWJ1dGUgOiBrQ3Jvc3NPcmlnaW5BdHRyaWJ1dGVUYWJsZSkgewogIGlmICgke2JsaW5rX3Byb3BlcnR5X25hbWV9ICE9IGF0dHJpYnV0ZS5uYW1lKQogICAgY29udGludWU7CiAgaW50MzJfdCB2OF9wcm9wZXJ0eV9hdHRyaWJ1dGUgPSB2ODo6RG9udEVudW07CiAgaWYgKCFhdHRyaWJ1dGUuc2V0X2NhbGxiYWNrKQogICAgdjhfcHJvcGVydHlfYXR0cmlidXRlIHw9IHY4OjpSZWFkT25seTsKICBiaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgke2luZm99LCB2OF9wcm9wZXJ0eV9hdHRyaWJ1dGUpOwogIHJldHVybjsKfQpmb3IgKGNvbnN0IGF1dG8mIG9wZXJhdGlvbiA6IGtDcm9zc09yaWdpbk9wZXJhdGlvblRhYmxlKSB7CiAgaWYgKCR7YmxpbmtfcHJvcGVydHlfbmFtZX0gIT0gb3BlcmF0aW9uLm5hbWUpCiAgICBjb250aW51ZTsKICBpbnQzMl90IHY4X3Byb3BlcnR5X2F0dHJpYnV0ZSA9IHY4OjpEb250RW51bSB8IHY4OjpSZWFkT25seTsKICBiaW5kaW5nczo6VjhTZXRSZXR1cm5WYWx1ZSgke2luZm99LCB2OF9wcm9wZXJ0eV9hdHRyaWJ1dGUpOwogIHJldHVybjsKfQpyUwIAAHLRAAAAYWkBAAAvLyA3LjIuMy4yIENyb3NzT3JpZ2luUHJvcGVydHlGYWxsYmFjayAoIFAgKQovLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL0MvI2Nyb3Nzb3JpZ2lucHJvcGVydHlmYWxsYmFjay0oLXAtKQppZiAoYmluZGluZ3M6OklzU3VwcG9ydGVkSW5Dcm9zc09yaWdpblByb3BlcnR5RmFsbGJhY2soCiAgICAgICAgJHtpbmZvfS5HZXRJc29sYXRlKCksICR7djhfcHJvcGVydHlfbmFtZX0pKSB7CiAgaW50MzJfdCB2OF9wcm9wZXJ0eV9hdHRyaWJ1dGUgPSB2ODo6RG9udEVudW0gfCB2ODo6UmVhZE9ubHk7CiAgYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgdjhfcHJvcGVydHlfYXR0cmlidXRlKTsKICByZXR1cm47Cn0KclcCAAByVQIAAHIyAAAAcjIAAAByMwAAANombWFrZV9jcm9zc19vcmlnaW5fbmFtZWRfcXVlcnlfY2FsbGJhY2shDwAAcy4AAAAAAQ4BDgMCAQL+BAQIAgIBCgEC/gQDBgIEAQQBBv8EFgQBAgEE/wQCBAEG/AYQclwC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ZWxldGUKY29uc3QgYm9vbCBpc19zdXBwb3J0ZWQgPSAke2luZGV4fSA8ICR7YmxpbmtfcmVjZWl2ZXJ9LT5sZW5ndGgoKTsKYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgIWlzX3N1cHBvcnRlZCk7CmlmIChpc19zdXBwb3J0ZWQgYW5kICR7aW5mb30uU2hvdWxkVGhyb3dPbkVycm9yKCkpIHsKICBFeGNlcHRpb25TdGF0ZSBleGNlcHRpb25fc3RhdGUoJHtpbmZvfS5HZXRJc29sYXRlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlOjprSW5kZXhlZERlbGV0aW9uQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiR7aW50ZXJmYWNlLmlkZW50aWZpZXJ9Iik7CiAgZXhjZXB0aW9uX3N0YXRlLlRocm93VHlwZUVycm9yKCJJbmRleCBwcm9wZXJ0eSBkZWxldGVyIGlzIG5vdCBzdXBwb3J0ZWQuIik7Cn0Kcj4CAAByPwIAAHIyAAAAcjIAAAByMwAAANopbWFrZV9zYW1lX29yaWdpbl9pbmRleGVkX2RlbGV0ZXJfY2FsbGJhY2u0DwAAcx4AAAAAAQ4BDgMCAQL+BAQIAgIBCgEC/gQDBgIEAQb/BA5yYAIAAGMCAAAAAAAAAAAAAAAGAAAABwAAAEMAAABzVgAAAHQAfAB0AYMCcw5KAIIBdAB8AXQCgwJzHEoAggFnAGQBogF9AmcAZAKiAX0DdAN8AHwBfAJ8A2QAZAODBn0EfARqBH0FfAWgBXQGZASDAaEBAQB8BFMAKQVOchUCAAByFwIAAFopU2FtZU9yaWdpblByb3BlcnR5X0luZGV4ZWRQcm9wZXJ0eURlZmluZXJhyQEAAC8vIDcuNC42IFtbRGVmaW5lT3duUHJvcGVydHldXSAoIFAsIERlc2MgKQovLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL0MvI3dpbmRvd3Byb3h5LWRlZmluZW93bnByb3BlcnR5CmJpbmRpbmdzOjpWOFNldFJldHVyblZhbHVlKCR7aW5mb30sIG51bGxwdHIpOwppZiAoJHtpbmZvfS5TaG91bGRUaHJvd09uRXJyb3IoKSkgewogIEV4Y2VwdGlvblN0YXRlIGV4Y2VwdGlvbl9zdGF0ZSgke2luZm99LkdldElzb2xhdGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uU3RhdGU6OmtJbmRleGVkU2V0dGVyQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiR7aW50ZXJmYWNlLmlkZW50aWZpZXJ9Iik7CiAgZXhjZXB0aW9uX3N0YXRlLlRocm93VHlwZUVycm9yKCJJbmRleCBwcm9wZXJ0eSBzZXR0ZXIgaXMgbm90IHN1cHBvcnRlZC4iKTsKfQpyPgIAAHI/AgAAcjIAAAByMgAAAHIzAAAA2iltYWtlX3NhbWVfb3JpZ2luX2luZGV4ZWRfZGVmaW5lcl9jYWxsYmFja9QPAABzGgAAAAABDgEOAggFCAICAQoBAv4EAwYCBAEG/wQNcmECAABjAgAAAAAAAAAAAAAABgAAAAcAAABDAAAAc1YAAAB0AHwAdAGDAnMOSgCCAXQAfAF0AoMCcxxKAIIBZAFkAmcCfQJkA2QEZwJ9A3QDfAB8AXwCfANkAGQFgwZ9BHwEagR9BXwFoAV0BmQGgwGhAQEAfARTACkHTnIEAgAAcrABAAByhQAAAHKuAQAAWixTYW1lT3JpZ2luUHJvcGVydHlfSW5kZXhlZFByb3BlcnR5RGVzY3JpcHRvcmG0AQAALy8gNy40LjUgW1tHZXRPd25Qcm9wZXJ0eV1dICggUCApCi8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvQy8jd2luZG93cHJveHktZ2V0b3ducHJvcGVydHkKU2FtZU9yaWdpbkluZGV4ZWRHZXR0ZXJDYWxsYmFjaygke2luZGV4fSwgJHtpbmZvfSk7CnY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4X3ZhbHVlID0gJHtpbmZvfS5HZXRSZXR1cm5WYWx1ZSgpLkdldCgpOwppZiAodjhfdmFsdWUtPklzVW5kZWZpbmVkKCkpIHsKICByZXR1cm47ICAvLyBEbyBub3QgaW50ZXJjZXB0Lgp9Cgp2ODo6UHJvcGVydHlEZXNjcmlwdG9yIGRlc2ModjhfdmFsdWUsIC8qd3JpdGFibGU9Ki9mYWxzZSk7CmRlc2Muc2V0X2VudW1lcmFibGUodHJ1ZSk7CmRlc2Muc2V0X2NvbmZpZ3VyYWJsZSh0cnVlKTsKYmluZGluZ3M6OlY4U2V0UmV0dXJuVmFsdWUoJHtpbmZvfSwgZGVzYyk7CnI+AgAAcj8CAAByMgAAAHIyAAAAcjMAAADaLG1ha2Vfc2FtZV9vcmlnaW5faW5kZXhlZF9kZXNjcmlwdG9yX2NhbGxiYWNr9A8AAHMeAAAAAAEOAQ4DAgEC/gQECAICAQoBAv4EAwYCBAEG/wQQcmICAABjAgAAAAAAAAAAAAAABgAAAAcAAABDAAAAc1IAAAB0AHwAdAGDAnMOSgCCAXQAfAF0AoMCcxxKAIIBZAFnAX0CZAJnAX0DdAN8AHwBfAJ8A2QAZAODBn0EfARqBH0FfAWgBXQGZASDAaEBAQB8BFMAKQVOciECAAByrgEAAFosU2FtZU9yaWdpblByb3BlcnR5X0luZGV4ZWRQcm9wZXJ0eUVudW1lcmF0b3JyUQIAAHI+AgAAcj8CAAByMgAAAHIyAAAAcjMAAADaLG1ha2Vfc2FtZV9vcmlnaW5faW5kZXhlZF9lbnVtZXJhdG9yX2NhbGxiYWNrFhAAAHMaAAAAAAEOAQ4CBgEGAgIBCgEC/gQDBgIEAQb/BAhyYwIAAFoYSW5zdGFsbEludGVyZmFjZVRlbXBsYXRlWh5JbnN0YWxsVW5jb25kaXRpb25hbFByb3BlcnRpZXNaI0luc3RhbGxDb250ZXh0SW5kZXBlbmRlbnRQcm9wZXJ0aWVzWiFJbnN0YWxsQ29udGV4dERlcGVuZGVudFByb3BlcnRpZXPaH2luc3RhbGxfaW50ZXJmYWNlX3RlbXBsYXRlX2Z1bmNaIGluc3RhbGxfdW5jb25kaXRpb25hbF9wcm9wc19mdW5jWiZpbnN0YWxsX2NvbnRleHRfaW5kZXBlbmRlbnRfcHJvcHNfZnVuY1okaW5zdGFsbF9jb250ZXh0X2RlcGVuZGVudF9wcm9wc19mdW5jYwIAAAAAAAAAAAAAAAsAAAAKAAAAQwAAAHP4AQAAdAB8AHQBgwJzDkoAggF0AHwBdAKDAnMcSgCCAXQDfQJnAH0DfAOgBHwCZAFkAoMCfAJkA2QEgwJ8AmQFZAaDAnwCZAdkCIMCZwShAQEAfAFqBXKQfAOgBHwCZAlkCoMCfAJkC2QMgwJ8AmQNZA6DAnwCZA9kEIMCfAJkEWQSgwJ8AmQTZBSDAmcGoQEBAG5ifAFqBnLCfAOgBHwCZBVkFoMCfAJkDWQXgwJ8AmQRZBiDAnwCZBNkGYMCZwShAQEAbjB8AWoHcvJ8A6AEfAJkCWQKgwJ8AmQNZBeDAnwCZBFkGIMCfAJkE2QZgwJnBKEBAQB8AmQaZBuDAn0EfASgCHQJoApkHGcBoQGhAQEAfAOgC3wEoQEBAHwCZB1kHoMCfQR8BKAIdAmgCmQfZwGhAaEBAQB8A6ALfAShAQEAZCB9BXwBagV9BnwGkAFzVGQhfQduPHwGkAFyfmQifAZqDHYAkAFyfnwGag2QAXJ+fAZqDWoOkAFyfmQjfQduEnwGag+QAXKMZCR9B24EZCF9B3wDoAt8AmQldBB8BXwHZCaNAoMCoQEBAGQnfQh8A6ALfAJkKHwIgwKhAQEAfAOgC3wCZClkKoMCoQEBAHwAahF9CXwDRABdHH0KfApqEnwJdgGQAXLWfACgE3wKoQEBAJABcdZkAFMAKStOWhRpc19pbl9zZWN1cmVfY29udGV4dHpNY29uc3QgYm9vbCAke2lzX2luX3NlY3VyZV9jb250ZXh0fSA9ICR7ZXhlY3V0aW9uX2NvbnRleHR9LT5Jc1NlY3VyZUNvbnRleHQoKTtyjQAAAHo2djg6Oklzb2xhdGUqICR7aXNvbGF0ZX0gPSAke3Y4X2NvbnRleHR9LT5HZXRJc29sYXRlKCk7cpAAAAB6QFNjcmlwdFN0YXRlKiAke3NjcmlwdF9zdGF0ZX0gPSBTY3JpcHRTdGF0ZTo6RnJvbSgke3Y4X2NvbnRleHR9KTtaEXdyYXBwZXJfdHlwZV9pbmZvelhjb25zdCBXcmFwcGVyVHlwZUluZm8qIGNvbnN0ICR7d3JhcHBlcl90eXBlX2luZm99ID0gJHtjbGFzc19uYW1lfTo6R2V0V3JhcHBlclR5cGVJbmZvKCk7WhtpbnRlcmZhY2VfZnVuY3Rpb25fdGVtcGxhdGV6cnY4OjpMb2NhbDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtpbnRlcmZhY2VfZnVuY3Rpb25fdGVtcGxhdGV9ID0gJHtpbnRlcmZhY2VfdGVtcGxhdGV9LkFzPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpO1oYaW5zdGFuY2Vfb2JqZWN0X3RlbXBsYXRlem92ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiAke2luc3RhbmNlX29iamVjdF90ZW1wbGF0ZX0gPSAke2ludGVyZmFjZV9mdW5jdGlvbl90ZW1wbGF0ZX0tPkluc3RhbmNlVGVtcGxhdGUoKTvaEWluc3RhbmNlX3RlbXBsYXRlekt2ODo6TG9jYWw8djg6OlRlbXBsYXRlPiAke2luc3RhbmNlX3RlbXBsYXRlfSA9ICR7aW5zdGFuY2Vfb2JqZWN0X3RlbXBsYXRlfTtaGXByb3RvdHlwZV9vYmplY3RfdGVtcGxhdGV6cXY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+ICR7cHJvdG90eXBlX29iamVjdF90ZW1wbGF0ZX0gPSAke2ludGVyZmFjZV9mdW5jdGlvbl90ZW1wbGF0ZX0tPlByb3RvdHlwZVRlbXBsYXRlKCk72hJwcm90b3R5cGVfdGVtcGxhdGV6TXY4OjpMb2NhbDx2ODo6VGVtcGxhdGU+ICR7cHJvdG90eXBlX3RlbXBsYXRlfSA9ICR7cHJvdG90eXBlX29iamVjdF90ZW1wbGF0ZX072glzaWduYXR1cmV6Z3Y4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiAke3NpZ25hdHVyZX0gPSB2ODo6U2lnbmF0dXJlOjpOZXcoJHtpc29sYXRlfSwgJHtpbnRlcmZhY2VfZnVuY3Rpb25fdGVtcGxhdGV9KTtaGW5hbWVzcGFjZV9vYmplY3RfdGVtcGxhdGV6bHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+ICR7bmFtZXNwYWNlX29iamVjdF90ZW1wbGF0ZX0gPSAke2ludGVyZmFjZV90ZW1wbGF0ZX0uQXM8djg6Ok9iamVjdFRlbXBsYXRlPigpO3otdjg6OkxvY2FsPHY4OjpUZW1wbGF0ZT4gJHtpbnN0YW5jZV90ZW1wbGF0ZX07ei52ODo6TG9jYWw8djg6OlRlbXBsYXRlPiAke3Byb3RvdHlwZV90ZW1wbGF0ZX07eiZ2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gJHtzaWduYXR1cmV9O1oYY29udGV4dF9mZWF0dXJlX3NldHRpbmdzeq1jb25zdCBDb250ZXh0RmVhdHVyZVNldHRpbmdzKiAke2NvbnRleHRfZmVhdHVyZV9zZXR0aW5nc30gPSBDb250ZXh0RmVhdHVyZVNldHRpbmdzOjpGcm9tKCR7ZXhlY3V0aW9uX2NvbnRleHR9LCBDb250ZXh0RmVhdHVyZVNldHRpbmdzOjpDcmVhdGlvbk1vZGU6OmtEb250Q3JlYXRlSWZOb3RFeGlzdHMpO3pLdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9jb250ZXh0X2ZlYXR1cmVzL2NvbnRleHRfZmVhdHVyZV9zZXR0aW5ncy5ocpEAAAB6UUV4ZWN1dGlvbkNvbnRleHQqICR7ZXhlY3V0aW9uX2NvbnRleHR9ID0gRXhlY3V0aW9uQ29udGV4dDo6RnJvbSgke3NjcmlwdF9zdGF0ZX0pO3KSAAAAekF2ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7cGFyZW50X2ludGVyZmFjZV90ZW1wbGF0ZX17XzF9O3I7AAAA2gZHbG9iYWx6HCA9ICR7bnBvX2ludGVyZmFjZV90ZW1wbGF0ZX16aiA9ICR7d3JhcHBlcl90eXBlX2luZm99LT5wYXJlbnRfY2xhc3MtPkdldFY4Q2xhc3NUZW1wbGF0ZSgke2lzb2xhdGV9LCAke3dvcmxkfSkuQXM8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KClaGXBhcmVudF9pbnRlcmZhY2VfdGVtcGxhdGVyjgAAAGFhBAAALy8gTmFtZWQgcHJvcGVydGllcyBvYmplY3QKdjg6OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke25wb19pbnRlcmZhY2VfdGVtcGxhdGV9ID0KICAgIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoJHtpc29sYXRlfSk7CnY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+ICR7bnBvX3Byb3RvdHlwZV90ZW1wbGF0ZX0gPQogICAgJHtucG9faW50ZXJmYWNlX3RlbXBsYXRlfS0+UHJvdG90eXBlVGVtcGxhdGUoKTsKJHtucG9faW50ZXJmYWNlX3RlbXBsYXRlfS0+SW5oZXJpdCgKICAgICR7d3JhcHBlcl90eXBlX2luZm99LT5wYXJlbnRfY2xhc3MKICAgIC0+R2V0VjhDbGFzc1RlbXBsYXRlKCR7aXNvbGF0ZX0sICR7d29ybGR9KS5Bczx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSk7CiR7bnBvX3Byb3RvdHlwZV90ZW1wbGF0ZX0tPlNldEltbXV0YWJsZVByb3RvKCk7CiR7bnBvX3Byb3RvdHlwZV90ZW1wbGF0ZX0tPlNldCgKICAgIHY4OjpTeW1ib2w6OkdldFRvU3RyaW5nVGFnKCR7aXNvbGF0ZX0pLAogICAgVjhBdG9taWNTdHJpbmcoJHtpc29sYXRlfSwgIiR7aW50ZXJmYWNlLmlkZW50aWZpZXJ9UHJvcGVydGllcyIpLAogICAgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6UmVhZE9ubHkgfCB2ODo6RG9udEVudW0pKTsKLy8gTWFrZSB0aGUgbmFtZWQgcHJvcGVydGllcyBvYmplY3QgbG9vayBsaWtlIHRoZSBnbG9iYWwgb2JqZWN0LiAgTm90ZSB0aGF0Ci8vIHRoZSBuYW1lZCBwcm9wZXJ0aWVzIG9iamVjdCBpcyBfbm90XyBhIHByb3RvdHlwZSBvYmplY3QsIHBsdXMsIHdlJ2QgbGlrZQovLyB0aGUgbmFtZWQgcHJvcGVydGllcyBvYmplY3QgdG8gYmVoYXZlIGp1c3QgbGlrZSB0aGUgZ2xvYmFsIG9iamVjdCAoPSB0aGUKLy8gd3JhcHBlciBvYmplY3Qgb2YgdGhlIGdsb2JhbCBvYmplY3QpIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgbmFtZWQKLy8gcHJvcGVydGllcy4KLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbmFtZWQtcHJvcGVydGllcy1vYmplY3QKJHtucG9fcHJvdG90eXBlX3RlbXBsYXRlfS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KAogICAga1Y4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQpOwpaFm5wb19pbnRlcmZhY2VfdGVtcGxhdGVaFm5wb19wcm90b3R5cGVfdGVtcGxhdGV6ODwlIG5wb19pbnRl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bWV9Iiwge2F0dHJpYnV0ZV9nZXRfY2FsbGJhY2t9LCB7YXR0cmlidXRlX3NldF9jYWxsYmFja30sIHt2OF9wcm9wZXJ0eV9hdHRyaWJ1dGV9LCB7bG9jYXRpb259LCB7d29ybGR9LCB7cmVjZWl2ZXJfY2hlY2t9LCB7Y3Jvc3Nfb3JpZ2luX2NoZWNrX2Zvcl9nZXR9LCB7Y3Jvc3Nfb3JpZ2luX2NoZWNrX2Zvcl9zZXR9LCB7djhfc2lkZV9lZmZlY3R9LCB7djhfY2FjaGVkX2FjY2Vzc29yfX19LNoHbnVsbHB0clQpAXJtAgAAKQFybgIAACkLcm4AAABaFmF0dHJpYnV0ZV9nZXRfY2FsbGJhY2taFmF0dHJpYnV0ZV9zZXRfY2FsbGJhY2vaFXY4X3Byb3BlcnR5X2F0dHJpYnV0ZdoIbG9jYXRpb25yfgIAANoOcmVjZWl2ZXJfY2hlY2taGmNyb3NzX29yaWdpbl9jaGVja19mb3JfZ2V0Whpjcm9zc19vcmlnaW5fY2hlY2tfZm9yX3NldNoOdjhfc2lkZV9lZmZlY3RaEnY4X2NhY2hlZF9hY2Nlc3Nvcnoxc3RhdGljIGNvbnN0IElETE1lbWJlckluc3RhbGxlcjo6QXR0cmlidXRlQ29uZmlnIPoGW10gPSB7+gJ9OykVci8AAAByMAAAAHLrAAAAcuwAAABy7QAAAHIPAAAAcn8AAAByQAAAAHI/AAAA2hZhdHRyX2dldF9jYWxsYmFja19uYW1l2hZhdHRyX3NldF9jYWxsYmFja19uYW1lcnsCAABydAIAAHJ/AgAAcn4CAABydgIAAHJwAgAAcn0CAAByegIAAHKdAAAAcgoAAAApB9oKdGFibGVfbmFtZdoRYXR0cmlidXRlX2VudHJpZXNyqAAAANoLZW50cnlfbm9kZXNyeAIAAHKJAAAAcooAAAByMgAAAHIyAAAAcjMAAADaIl9tYWtlX2F0dHJpYnV0ZV9yZWdpc3RyYXRpb25fdGFibGUuEQAAc1YAAAAAAQ4BEgEIAQL/DAMEAgQBCAEEDQIBAgEGAQQBCAECAQT/AgIIAQgBAgEE/wIDBgEC/wQDBgEC/wQCAgEE/wICAgEE/wLtBhUQAgIBCAEC/wQCBgEG/HKPAgAAYwIAAAAAAAAAAAAAAAcAAAAGAAAAQwAAAHOQ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b25fcmVnaXN0cmF0aW9uX3RhYmxlLjxsb2NhbHM+LjxnZW5leHByPnIBAAAAcgIAAAB6qHt7Intwcm9wZXJ0eV9uYW1lfSIsIHtvcGVyYXRpb25fY2FsbGJhY2t9LCB7ZnVuY3Rpb25fbGVuZ3RofSwge3Y4X3Byb3BlcnR5X2F0dHJpYnV0ZX0sIHtsb2NhdGlvbn0sIHt3b3JsZH0sIHtyZWNlaXZlcl9jaGVja30sIHtjcm9zc19vcmlnaW5fY2hlY2t9LCB7djhfc2lkZV9lZmZlY3R9fX0sIHoCe3t6E3t2OF9jX2Z1bmN0aW9ufX19LCApCnJuAAAAWhJvcGVyYXRpb25fY2FsbGJhY2taD2Z1bmN0aW9uX2xlbmd0aHKEAgAAcoUCAAByfgIAAHKGAgAAWhJjcm9zc19vcmlnaW5fY2hlY2tyhwIAAFoNdjhfY19mdW5jdGlvbnowc3RhdGljIGNvbnN0IElETE1lbWJlckluc3RhbGxlcjo6T3BlcmF0aW9uQ29uZmlnekFzdGF0aWMgY29uc3QgSURMTWVtYmVySW5zdGFsbGVyOjpOb0FsbG9jRGlyZWN0Q2FsbE9wZXJhdGlvbkNvbmZpZ/oBIHKIAgAAcokCAAApF3IvAAAAcjAAAABy6wAAAHLsAAAAcu0AAAByDwAAAHL4AQAAcgUBAAByfwAAAHJAAAAAcj8AAADaEG9wX2NhbGxiYWNrX25hbWXaDm9wX2Z1bmNfbGVuZ3RocnsCAABydAIAAHJ/AgAAcn4CAABydgIAAHJwAgAAcn0CAAByeQIAAHKdAAAAcgoAAAApCnKMAgAA2hFvcGVyYXRpb25fZW50cmllc3KoAAAAWhpub19hbGxvY19kaXJlY3RfY2FsbF9jb3VudHJ4AgAAWhxub19hbGxvY19kaXJlY3RfY2FsbF9lbmFibGVkco4CAAByiQAAAHKKAAAAWhZ0YWJsZV9kZWNsX2JlZm9yZV9uYW1lcjIAAAByMgAAAHIzAAAA2iJfbWFrZV9vcGVyYXRpb25fcmVnaXN0cmF0aW9uX3RhYmxluBEAAHNmAAAAAAEOARIBCAIC/gwEBAIEAQgBBgEKAQgBCv8GAggCBAEIAQQLBAEMAQIBAgEGAQQBBAECAQT/AgIIAQgBAgEE/wICAgEE/wICAgEE/wICBvEGEBADAv8C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fSIsICkDcg8AAAByZQAAAHI/AAAAcskCAAByMgAAAHIyAAAAcjMAAAByNAEAAHMTAABzBAAAAAYCAv96Ml9tYWtlX2luc3RhbGxfcHJvdG90eXBlX29iamVjdC48bG9jYWxzPi48bGlzdGNvbXA+cokCAAB6eWJpbmRpbmdzOjpJbnN0YWxsVW5zY29wYWJsZVByb3BlcnR5TmFtZXMoCiAgICAke2lzb2xhdGV9LCAke3Y4X2NvbnRleHR9LCAke3Byb3RvdHlwZV9vYmplY3R9LCBrVW5zY29wYWJsZVByb3BlcnR5TmFtZXMpOwpyugIAAGGgAQAALy8gW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0XQovLyAzLjcuMy4gSW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QKLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaW50ZXJmYWNlLXByb3RvdHlwZS1vYmplY3QKLy8gc3RlcCAxMy4gSWYgdGhlIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlIHdhcyBub3QKLy8gICBzcGVjaWZpZWQgb24gaW50ZXJmYWNlLCB0aGVuOgovLwovLyBWOCBkZWZpbmVzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgb24gdGhlIHByb3RvdHlwZSBvYmplY3QgYnkgZGVmYXVsdC4KJHtwcm90b3R5cGVfb2JqZWN0fS0+RGVsZXRlKAogICAgJHt2OF9jb250ZXh0fSwgVjhBdG9taWNTdHJpbmcoJHtpc29sYXRlfSwgImNvbnN0cnVjdG9yIikpLlRvQ2hlY2tlZCgpOwpyAQAAAGFRAQAALy8gQEBpdGVyYXRvciA9PSAie3Byb3BlcnR5X25hbWV9Igp7ewogIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4X3ZhbHVlID0gJHtwcm90b3R5cGVfb2JqZWN0fS0+R2V0KAogICAgICAke3Y4X2NvbnRleHR9LCBWOEF0b21pY1N0cmluZygke2lzb2xhdGV9LCAie3Byb3BlcnR5X25hbWV9IikpCiAgICAgIC5Ub0xvY2FsQ2hlY2tlZCgpOwogICR7cHJvdG90eXBlX29iamVjdH0tPkRlZmluZU93blByb3BlcnR5KAogICAgICAke3Y4X2NvbnRleHR9LCB2ODo6U3ltYm9sOjpHZXRJdGVyYXRvcigke2lzb2xhdGV9KSwgdjhfdmFsdWUsCiAgICAgIHY4OjpEb250RW51bSkuVG9DaGVja2VkKCk7Cn19CikBcm4AAABaGUZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVh6AEAAC8vIFRlbXBvcmFyeSBAQGFzeW5jSXRlcmF0b3Igc3VwcG9ydCBmb3IgRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZQovLyBUT0RPKGh0dHBzOi8vY3JidWcuY29tLzEwODcxNTcpOiBSZXBsYWNlIHdpdGggcHJvcGVyIGJpbmRpbmdzIHN1cHBvcnQuCi8vIEBAYXN5bmNJdGVyYXRvciA9PSAie3Byb3BlcnR5X25hbWV9Igp7ewogIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4X3ZhbHVlID0gJHtwcm90b3R5cGVfb2JqZWN0fS0+R2V0KAogICAgICAke3Y4X2NvbnRleHR9LCBWOEF0b21pY1N0cmluZygke2lzb2xhdGV9LCAie3Byb3BlcnR5X25hbWV9IikpCiAgICAgIC5Ub0xvY2FsQ2hlY2tlZCgpOwogICR7cHJvdG90eXBlX29iamVjdH0tPkRlZmluZU93blByb3BlcnR5KAogICAgICAke3Y4X2NvbnRleHR9LCB2ODo6U3ltYm9sOjpHZXRBc3luY0l0ZXJhdG9yKCR7aXNvbGF0ZX0pLCB2OF92YWx1ZSwKICAgICAgdjg6OkRvbnRFbnVtKS5Ub0NoZWNrZWQoKTsKfX0K2gdlbnRyaWVzcmgCAABhmQEAAC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI25hbWVkLXByb3BlcnRpZXMtb2JqZWN0Ci8vIFY4IGRlZmluZXMgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSBvbiB0aGUgcHJvdG90eXBlIG9iamVjdCBieSBkZWZhdWx0LgovLyBOYW1lZCBwcm9wZXJ0aWVzIG9iamVjdCBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgYXMgYSBwcm90b3R5cGUgb2JqZWN0Ci8vIChpbXBsZW1lbnRlZCB3aXRoIHY4OjpGdW5jdGlvblRl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aGUgQVBJIGNsYXNzIHRvIHRoZQogICAgICAgICAgaW1wbGVtZW50YXRpb24gY2xhc3MpLCB3aGljaCBpcyBzdXBwb3NlZCB0byBiZSBkZWZpbmVkIGlubGluZQogICAgYwEAAAAAAAAAAAAAAAIAAAAEAAAAcwAAAHMYAAAAfABdEH0BdAB8AXQBgwJWAAEAcQJkAFMAci0AAAApAnIvAAAAcqwCAAByggIAAHIyAAAAcjIAAAByMwAAAHLkAAAA1hMAAHMEAAAABAIC/3oybWFrZV9pbnN0YWxsX2ludGVyZmFjZV90ZW1wbGF0ZS48bG9jYWxzPi48Z2VuZXhwcj4pA/oUdjg6Oklzb2xhdGUqIGlzb2xhdGX6HGNvbnN0IERPTVdyYXBwZXJXb3JsZCYgd29ybGT6KnY4OjpMb2NhbDx2ODo6VGVtcGxhdGU+IGludGVyZmFjZV90ZW1wbGF0ZXK1AQAATlRy/QEAAHoucmV0dXJuIHt9KGlzb2xhdGUsIHdvcmxkLCBpbnRlcmZhY2VfdGVtcGxhdGUpO3IDAgAAco0AAAByfgIAANoSaW50ZXJmYWNlX3RlbXBsYXRlKQNyjQAAAHJ+AgAAcuQCAAB6v2JpbmRpbmdzOjpTZXR1cElETEludGVyZmFjZVRlbXBsYXRlKCR7aXNvbGF0ZX0sICR7d3JhcHBlcl90eXBlX2luZm99LCAke2luc3RhbmNlX29iamVjdF90ZW1wbGF0ZX0sICR7cHJvdG90eXBlX29iamVjdF90ZW1wbGF0ZX0sICR7aW50ZXJmYWNlX2Z1bmN0aW9uX3RlbXBsYXRlfSwgJHtwYXJlbnRfaW50ZXJmYWNlX3RlbXBsYXRlfSk7emRiaW5kaW5nczo6U2V0dXBJRExOYW1lc3BhY2VUZW1wbGF0ZSgke2lzb2xhdGV9LCAke3dyYXBwZXJfdHlwZV9pbmZvfSwgJHtuYW1lc3BhY2Vfb2JqZWN0X3RlbXBsYXRlfSk7em5iaW5kaW5nczo6U2V0dXBJRExDYWxsYmFja0ludGVyZmFjZVRlbXBsYXRlKCR7aXNvbGF0ZX0sICR7d3JhcHBlcl90eXBlX2luZm99LCAke2ludGVyZmFjZV9mdW5jdGlvbl90ZW1wbGF0ZX0pO0Z6MyR7aW50ZXJmYWNlX2Z1bmN0aW9uX3RlbXBsYXRlfS0+U2V0Q2FsbEhhbmRsZXIoe30pO3ouJHtpbnRlcmZhY2VfZnVuY3Rpb25fdGVtcGxhdGV9LT5TZXRMZW5ndGgoe30pO3oWJHt3b3JsZH0uSXNNYWluV29ybGQoKXLRAAAAehchJHt3b3JsZH0uSXNNYWluV29ybGQoKXIvAgAAYwEAAAAAAAAAAAAAAAEAAAACAAAAUwAAAHMKAAAAZAF8AGoAdgBTACkCTnK0AgAActoCAACpAXKzAAAAcjIAAAByMgAAAHIzAAAAcsgAAABDFAAAcskAAAB6MW1ha2VfaW5zdGFsbF9pbnRlcmZhY2VfdGVtcGxhdGUuPGxvY2Fscz4uPGxhbWJkYT5yOwAAAGMBAAAAAAAAAAAAAAABAAAAAwAAAFMAAABzDAAAAGQBoAB8AGoBoQFTACkCTnLbAgAAKQJyZQAAAHI/AAAAcuUCAAByMgAAAHIyAAAAcjMAAAByyAAAAEcUAAByyQAAAHpwLy8gQ1NTU3R5bGVEZWNsYXJhdGlvbi1zcGVjaWZpYyBzZXR0aW5ncwovLyBbQ1NTUHJvcGVydHldCnsKICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIGtDc3NQcm9wZXJ0aWVzW10gPSB7Cnq9CiAgfTsKICBiaW5kaW5nczo6SW5zdGFsbENTU1Byb3BlcnR5QXR0cmlidXRlcygKICAgICAgJHtpc29sYXRlfSwgJHt3b3JsZH0sCiAgICAgICR7aW5zdGFuY2VfdGVtcGxhdGV9LCAke3Byb3RvdHlwZV90ZW1wbGF0ZX0sICR7aW50ZXJmYWNlX3RlbXBsYXRlfSwKICAgICAgJHtzaWduYXR1cmV9LCBrQ3NzUHJvcGVydGllcyk7Cn0KWgxET01FeGNlcHRpb25hdAIAAC8vIERPTUV4Y2VwdGlvbi1zcGVjaWZpYyBzZXR0aW5ncwovLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1ET01FeGNlcHRpb24tc3BlY2lhbG5lc3MKewogIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gaW50cmluc2ljX2Vycm9yX3Byb3RvdHlwZV9pbnRlcmZhY2VfdGVtcGxhdGUgPQogICAgICB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCR7aXNvbGF0ZX0sIG51bGxwdHIsIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCksIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkNvbnN0cnVjdG9yQmVoYXZpb3I6OmtUaHJvdyk7CiAgaW50cmluc2ljX2Vycm9yX3Byb3RvdHlwZV9pbnRlcmZhY2VfdGVtcGxhdGUtPlNldEludHJpbnNpY0RhdGFQcm9wZXJ0eSgKICAgICAgVjhBdG9taWNTdHJpbmcoJHtpc29sYXRlfSwgInByb3RvdHlwZSIpLCB2ODo6a0Vycm9yUHJvdG90eXBlKTsKICAke2ludGVyZmFjZV9mdW5jdGlvbl90ZW1wbGF0ZX0tPkluaGVyaXQoCiAgICAgIGludHJpbnNpY19lcnJvcl9wcm90b3R5cGVfaW50ZXJmYWNlX3RlbXBsYXRlKTsKfQpaG0ZpbGVTeXN0ZW1EaXJlY3RvcnlJdGVyYXRvcmG2AgAALy8gVGVtcG9yYXJ5IEBAYXN5bmNJdGVyYXRvciBzdXBwb3J0IGZvciBGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlCi8vIFRPRE8oaHR0cHM6Ly9jcmJ1Zy5jb20vMTA4NzE1Nyk6IFJlcGxhY2Ugd2l0aCBwcm9wZXIgYmluZGluZ3Mgc3VwcG9ydC4KewogIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4KICAgICAgaW50cmluc2ljX2l0ZXJhdG9yX3Byb3RvdHlwZV9pbnRlcmZhY2VfdGVtcGxhdGUgPQogICAgICB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCR7aXNvbGF0ZX0sIG51bGxwdHIsIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCksIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkNvbnN0cnVjdG9yQmVoYXZpb3I6OmtUaHJvdyk7CiAgaW50cmluc2ljX2l0ZXJhdG9yX3Byb3RvdHlwZV9pbnRlcmZhY2VfdGVtcGxhdGUtPlNldEludHJpbnNpY0RhdGFQcm9wZXJ0eSgKICAgICAgVjhBdG9taWNTdHJpbmcoJHtpc29sYXRlfSwgInByb3RvdHlwZSIpLCB2ODo6a0FzeW5jSXRlcmF0b3JQcm90b3R5cGUpOwogICR7aW50ZXJmYWNlX2Z1bmN0aW9uX3RlbXBsYXRlfS0+SW5oZXJpdCgKICAgICAgaW50cmluc2ljX2l0ZXJhdG9yX3Byb3RvdHlwZV9pbnRlcmZhY2VfdGVtcGxhdGUpOwp9CtoRSFRNTEFsbENvbGxlY3Rpb256+i8vIEhUTUxBbGxDb2xsZWN0aW9uLXNwZWNpZmljIHNldHRpbmdzCi8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvQy8jdGhlLWh0bWxhbGxjb2xsZWN0aW9uLWludGVyZmFjZQoke2luc3RhbmNlX29iamVjdF90ZW1wbGF0ZX0tPlNldENhbGxBc0Z1bmN0aW9uSGFuZGxlcigKICAgICR7Y2xhc3NfbmFtZX06OkxlZ2FjeUNhbGxDdXN0b20pOwoke2luc3RhbmNlX29iamVjdF90ZW1wbGF0ZX0tPk1hcmtBc1VuZGV0ZWN0YWJsZSgpOwraCEl0ZXJhdG9yYYMCAAAvLyBJdGVyYXRvci1zcGVjaWZpYyBzZXR0aW5ncwovLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1pdGVyYXRvci1wcm90b3R5cGUtb2JqZWN0CnsKICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+CiAgICAgIGludHJpbnNpY19pdGVyYXRvcl9wcm90b3R5cGVfaW50ZXJmYWNlX3RlbXBsYXRlID0KICAgICAgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygke2lzb2xhdGV9LCBudWxscHRyLCB2ODo6TG9jYWw8djg6OlZhbHVlPigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpDb25zdHJ1Y3RvckJlaGF2aW9yOjprVGhyb3cpOwogIGludHJpbnNpY19pdGVyYXRvcl9wcm90b3R5cGVfaW50ZXJmYWNlX3RlbXBsYXRlLT5TZXRJbnRyaW5zaWNEYXRhUHJvcGVydHkoCiAgICAgIFY4QXRvbWljU3RyaW5nKCR7aXNvbGF0ZX0sICJwcm90b3R5cGUiKSwgdjg6OmtJdGVyYXRvclByb3RvdHlwZSk7CiAgJHtpbnRlcmZhY2VfZnVuY3Rpb25fdGVtcGxhdGV9LT5Jbmhlcml0KAogICAgICBpbnRyaW5zaWNfaXRlcmF0b3JfcHJvdG90eXBlX2ludGVyZmFjZV90ZW1wbGF0ZSk7Cn0K2ghMb2NhdGlvbmGhBAAALy8gTG9jYXRpb24tc3BlY2lmaWMgc2V0dGluZ3MKLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9DLyN0aGUtbG9jYXRpb24taW50ZXJmYWNlCi8vIFRvIGNyZWF0ZSBhIExvY2F0aW9uIG9iamVjdCwgcnVuIHRoZXNlIHN0ZXBzOgovLyBzdGVwIDMuIExldCB2YWx1ZU9mIGJlIGxvY2F0aW9uJ3MgcmVsZXZhbnQKLy8gICBSZWFsbS5bW0ludHJpbnNpY3NdXS5bWyVPYmpQcm90b192YWx1ZU9mJV1dLgovLyBzdGVwIDMuIFBlcmZvcm0gISBsb2NhdGlvbi5bW0RlZmluZU93blByb3BlcnR5XV0oInZhbHVlT2YiLAovLyAgIHsgW1tWYWx1ZV1dOiB2YWx1ZU9mLCBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsCi8vICAgICBbW0NvbmZpZ3VyYWJsZV1dOiBmYWxzZSB9KS4KJHtpbnN0YW5jZV90ZW1wbGF0ZX0tPlNldEludHJpbnNpY0RhdGFQcm9wZXJ0eSgKICAgIFY4QXRvbWljU3RyaW5nKCR7aXNvbGF0ZX0sICJ2YWx1ZU9mIiksCiAgICB2ODo6a09ialByb3RvX3ZhbHVlT2YsCiAgICBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KAogICAgICAgIHY4OjpSZWFkT25seSB8IHY4OjpEb250RW51bSB8IHY4OjpEb250RGVsZXRlKSk7Ci8vIHN0ZXAgNC4gUGVyZm9ybSAhIGxvY2F0aW9uLltbRGVmaW5lT3duUHJvcGVydHldXShAQHRvUHJpbWl0aXZlLAovLyAgIHsgW1tWYWx1ZV1dOiB1bmRlZmluZWQsIFtbV3JpdGFibGVdXTogZmFsc2UsIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwKLy8gICAgIFtbQ29uZmlndXJhYmxlXV06IGZhbHNlIH0pLgoke2luc3RhbmNlX3RlbXBsYXRlfS0+U2V0KAogICAgdjg6OlN5bWJvbDo6R2V0VG9QcmltaXRpdmUoJHtpc29sYXRlfSksCiAgICB2ODo6VW5kZWZpbmVkKCR7aXNvbGF0ZX0pLAogICAgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigKICAgICAgICB2ODo6UmVhZE9ubHkgfCB2ODo6RG9udEVudW0gfCB2ODo6RG9udERlbGV0ZSkpOwovLyA3LjcuNC4yIFtbU2V0UHJvdG90eXBlT2ZdXSAoIFYgKQovLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL0MvI2xvY2F0aW9uLXNldHByb3RvdHlwZW9mCiR7aW5zdGFuY2Vfb2JqZWN0X3RlbXBsYXRlfS0+U2V0SW1tdXRhYmxlUHJvdG8oKTsKJHtwcm90b3R5cGVfb2JqZWN0X3RlbXBsYXRlfS0+U2V0SW1tdXRhYmxlUHJvdG8oKTsKcmgCAAB65y8vIEBAaXRlcmF0b3IgZm9yIGluZGV4ZWQgcHJvcGVydGllcwovLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZWZpbmUtdGhlLWl0ZXJhdGlvbi1tZXRob2RzCiR7cHJvdG90eXBlX3RlbXBsYXRlfS0+U2V0SW50cmluc2ljRGF0YVByb3BlcnR5KAogICAgdjg6OlN5bWJvbDo6R2V0SXRlcmF0b3IoJHtpc29sYXRlfSksIHY4OjprQXJyYXlQcm90b192YWx1ZXMsIHY4OjpEb250RW51bSk7CmFYAgAALy8gVmFsdWUgaXRlcmF0b3IncyBwcm9wZXJ0aWVzCi8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2RlZmluZS10aGUtaXRlcmF0aW9uLW1ldGhvZHMKJHtwcm90b3R5cGVfdGVtcGxhdGV9LT5TZXRJbnRyaW5zaWNEYXRhUHJvcGVydHkoCiAgICBWOEF0b21pY1N0cmluZygke2lzb2xhdGV9LCAiZW50cmllcyIpLCB2ODo6a0FycmF5UHJvdG9fZW50cmllcywgdjg6Ok5vbmUpOwoke3Byb3RvdHlwZV90ZW1wbGF0ZX0tPlNldEludHJpbnNpY0RhdGFQcm9wZXJ0eSgKICAgIFY4QXRvbWljU3RyaW5nKCR7aXNvbGF0ZX0sICJrZXlzIiksIHY4OjprQXJyYXlQcm90b19rZXlzLCB2ODo6Tm9uZSk7CiR7cHJvdG90eXBlX3RlbXBsYXRlfS0+U2V0SW50cmluc2ljRGF0YVByb3BlcnR5KAogICAgVjhBdG9taWNTdHJpbmcoJHtpc29sYXRlfSwgInZhbHVlcyIpLCB2ODo6a0FycmF5UHJvdG9fdmFsdWVzLCB2ODo6Tm9uZSk7CiR7cHJvdG90eXBlX3RlbXBsYXRlfS0+U2V0SW50cmluc2ljRGF0YVByb3BlcnR5KAogICAgVjhBdG9taWNTdHJpbmcoJHtpc29sYXRlfSwgImZvckVhY2giKSwgdjg6OmtBcnJheVByb3RvX2ZvckVhY2gsIHY4OjpOb25lKTsKWgpJc0NvZGVMaWtlejhSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpUcnVzdGVkVHlwZXNVc2VDb2RlTGlrZUVuYWJsZWQoKXoPLy8gW0lzQ29kZUxpa2Vdeiske2luc3RhbmNlX29iamVjdF90ZW1wbGF0ZX0tPlNldENvZGVMaWtlKCk7etEvLyBbR2xvYmFsXQovLyAzLjcuMS4gW1tTZXRQcm90b3R5cGVPZl1dCi8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI3BsYXRmb3JtLW9iamVjdC1zZXRwcm90b3R5cGVvZgoke2luc3RhbmNlX29iamVjdF90ZW1wbGF0ZX0tPlNldEltbXV0YWJsZVByb3RvKCk7CiR7cHJvdG90eXBlX29iamVjdF90ZW1wbGF0ZX0tPlNldEltbXV0YWJsZVByb3RvKCk7CmMBAAAAAAAAAAAAAAACAAAAAwAAAHMAAABzGAAA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gwJzHEoAggF0A3wCgwFzKEoAggF0AHwDdARqBYMCczhKAIIBdAN8BIMBc0RKAIIBdAB8BXQGdAdmAoMCc1ZKAIIBdAhkAWQChAB8BUQAgwGDAXNsSgCCAXQAfAZ0BnQHZgKDAnN+SgCCAXQIZANkAoQAfAZEAIMBgwFzlEoAggF0AHwHdAZ0B2YCgwJzpkoAggF0CGQEZAKEAHwHRACDAYMBc7xKAIIBdAB8CHQGdAdmAoMCc85KAIIBdAhkBWQChAB8CEQAgwGDAXPkSgCCAXwDdARqCWsCcvh0CnwAgwF9CW4EZAZ9CXwFkAFzKnwGkAFzKnwHkAFzKnwIkAFzKnwJkAFzKnwDdARqC2sDkAFyKmQHUwB8A3QEagx0BGoNZgJ2AJABck5nAGQIogF9CmcAZAmiAX0Lbjp8A3QEaglrApABcmxnAGQKogF9CmcAZAuiAX0Lbhx8A3QEagtrApABcohnAGQMogF9CmcAZA2iAX0LZA59DHwDdARqCXQEagtmAnYAfQ18BGQGdQCQAXKsZAZ9Dm40dA58AXwKfAxkD2QQjQR9DnQPZBF8BGQSoBB8C6EBZBONA30PfA5qEaASdBN8D4MBoQEBAHQUfAF8CnwMdBV8AoMBZBCNBH0QdA58AXwKfAx8AmQUjQR9EXwRoBZ8AKAXoQChAQEAfBFqEYkAfAtEAF0qfRJ8EmQVawKQAnI4iACgGGQWZBWhAgEAbgyIAKAYfBJ8EqECAQCQAnEcdBmIAHwAgwIBAIgAoBp0E2QXgwF0G4MAZwKhAQEAfA2QAnKYZBh8AGocah12AJACcpiIAKAadB5kGXQTZBqDAWcBZBuNAnQbgwBnAqEBAQB8CZACcriIAKAadB5kHHwJZwFkG40CdBuDAGcCoQEBAGQdZB6EAIkBhwCHAWYCZB9kIIQIfRN8DZACctpkIX0UbgRkIn0UZCN9FXQPfBRkJHwVZCWNA30WfBN8FXwFdB98FoMEAQBkJn0VdA98FGQnfBVkJY0DfRZ0BnQgZChkKYQAfAaDAoMBfRd8E3wVfBd0IXwWgwQBAGQqfRV0D3wUZCd8FWQljQN9FnQGdCBkK2QphAB8BoMCgwF9GHwTfBV8GHQifBaDBAEAZCx9FXQPfBRkLXwVZCWNA30WfBN8FXwHdCN8FoMEAQBkLn0VdA98FGQvfBVkJY0DfRZ0BnQg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dHJpZXNaD21ha2VfdGFibGVfZnVuY9oTaW5zdGFsbGVyX2NhbGxfdGV4dHIEAwAAcgUDAABySAEAAHLcAgAAqQJy0wAAAHIGAwAAcjIAAAByMwAAANoSaW5zdGFsbF9wcm9wZXJ0aWVzqxUAAHMqAAAAAAICAQL/CAIEAQQBAgEIAQb+BP8EBQwBEAEEAQIBAgIIAQb+Av4E/wYHejNtYWtlX2luc3RhbGxfcHJvcGVydGllcy48bG9jYWxzPi5pbnN0YWxsX3Byb3BlcnRpZXN6f3tpbnN0YWxsX2Z1bmN9KCR7aXNvbGF0ZX0sICR7d29ybGR9LCAke2luc3RhbmNlX29iamVjdH0sICR7cHJvdG90eXBlX29iamVjdH0sICR7aW50ZXJmYWNlX29iamVjdH0sICR7c2lnbmF0dXJlfSwge3RhYmxlX25hbWV9KTt6hXtpbnN0YWxsX2Z1bmN9KCR7aXNvbGF0ZX0sICR7d29ybGR9LCAke2luc3RhbmNlX3RlbXBsYXRlfSwgJHtwcm90b3R5cGVfdGVtcGxhdGV9LCAke2ludGVyZmFjZV90ZW1wbGF0ZX0sICR7c2lnbmF0dXJlfSwge3RhYmxlX25hbWV9KTtaD2tBdHRyaWJ1dGVUYWJsZXolSURMTWVtYmVySW5zdGFsbGVyOjpJbnN0YWxsQXR0cmlidXRlcykCWgxpbnN0YWxsX2Z1bmNyjAIAAFoWa0NvbnN0YW50Q2FsbGJhY2tUYWJsZXokSURMTWVtYmVySW5zdGFsbGVyOjpJbnN0YWxsQ29uc3RhbnRzYwEAAAAAAAAAAAAAAAEAAAABAAAAUwAAAHMGAAAAfABqAFMAci0AAACpAXKRAgAAcncCAAByMgAAAHIyAAAAcjMAAAByyAAAAN0VAAByyQAAAHopbWFrZV9pbnN0YWxsX3Byb3BlcnRpZXMuPGxvY2Fscz4uPGxhbWJkYT5aE2tDb25zdGFudFZhbHVlVGFibGVjAQAAAAAAAAAAAAAAAQAAAAEAAABTAAAAcwgAAAB8AGoADABTAHItAAAAcgoDAABydwIAAHIyAAAAcjIAAAByMwAAAHLIAAAA6BUAAHLJAAAAWhZrRXhwb3NlZENvbnN0cnVjdFRhYmxleixJRExNZW1iZXJJbnN0YWxsZXI6Okluc3RhbGxFeHBvc2Vk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JaAmZClnAaEBoQEBAIgAiAF8AmYDUwApKmFjAQAACiAgICBJbXBsZW1lbnRzIG5vbi1vcmRpbmFyeSBpbnRlcm5hbCBtZXRob2RzIG9mIGxlZ2FjeSBwbGF0Zm9ybSBvYmplY3RzLgogICAgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZXMtbGVnYWN5LXBsYXRmb3JtLW9iamVjdHMKCiAgICBBbHNvIGltcGxlbWVudHMgdGhlIHNhbWUgb3JpZ2luIGNhc2Ugb2YgaW5kZXhlZCBhY2Nlc3MgdG8gV2luZG93UHJveHkKICAgIG9iamVjdHMganVzdCBzYW1lIGFzIGluZGV4ZWQgcHJvcGVydGllcyBvZiBsZWdhY3kgcGxhdGZvcm0gb2JqZWN0cy4KICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvQy8jdGhlLXdpbmRvd3Byb3h5LWV4b3RpYy1vYmplY3QKICAgIGMAAAAAAAAAAAAAAAACAAAABQAAAF8AAABzEgAAAHQAdAF8AGkAfAGkAY4BgwFTAHItAAAAqQJyDwAAAHJ/AAAAcsQAAAByMgAAAHIyAAAAcjMAAAByyAAAABUWAAByyQAAAHpMbWFrZV9pbmRleGVkX2FuZF9uYW1lZF9wcm9wZXJ0eV9jYWxsYmFja3NfYW5kX2luc3RhbGxfbm9kZS48bG9jYWxzPi48bGFtYmRhPnJoAgAAYwIAAAAAAAAAAAAAAAIAAAADAAAAEwAAAHMoAAAAiACgAHwAoQEBAHwBciSIAaAAfAGhAQEAiAGgAHQBgwChAQEAZABTAHItAAAAKQJynQAAAHIJAAAAqQJyAQIAAHLAAQAAqQJaCmZ1bmNfZGVjbHPaCWZ1bmNfZGVmc3IyAAAAcjMAAADaDGFkZF9jYWxsYmFjayEWAABzCAAAAAABCgEEAQoBelBtYWtlX2luZGV4ZWRfYW5kX25hbWVkX3Byb3BlcnR5X2NhbGxiYWNrc19hbmRfaW5zdGFsbF9ub2RlLjxsb2NhbHM+LmFkZF9jYWxsYmFja2MAAAAAAAAAAAAAAAACAAAABAAAAFcAAABzHgAAAGQBZAKEAH0BdAB0AWQAfACDAnwBZAONAmQEGQBTACkFTmMBAAAAAAAAAAAAAAABAAAAAgAAAFMAAABzCgAAAHQAfABqAYMBUwByLQAAACkCcgUBAAByTAEAAHLPAgAAcjIAAAByMgAAAHIzAAAAcsgAAAAoFgAAcskAAAB6bG1ha2VfaW5kZXhlZF9hbmRfbmFtZWRfcHJvcGVydHlfY2FsbGJhY2tzX2FuZF9pbnN0YWxsX25vZGUuPGxvY2Fscz4ubW9zdF9kZXJpdmVkX2ludGVyZmFjZS48bG9jYWxzPi48bGFtYmRhPnJwAQAAcpIBAAApAnJsAQAActcCAAApAtoKaW50ZXJmYWNlc3L4AAAAcjIAAAByMgAAAHIzAAAA2hZtb3N0X2Rlcml2ZWRfaW50ZXJmYWNlJxYAAHMEAAAAAAEIAXpabWFrZV9pbmRleGVkX2FuZF9uYW1lZF9wcm9wZXJ0eV9jYWxsYmFja3NfYW5kX2luc3RhbGxfbm9kZS48bG9jYWxzPi5tb3N0X2Rlcml2ZWRfaW50ZXJmYWNlqQFyowAAACkBcksAAABaG05hbWVkUHJvcGVydHlHZXR0ZXJDYWxsYmFjaykBckwAAABaG05hbWVkUHJvcGVydHlTZXR0ZXJDYWxsYmFjaykBck0AAABaHE5hbWVkUHJvcGVydHlEZWxldGVyQ2FsbGJhY2taHE5hbWVkUHJvcGVydHlEZWZpbmVyQ2FsbGJhY2taH05hbWVkUHJvcGVydHlEZXNjcmlwdG9yQ2FsbGJhY2taGk5hbWVkUHJvcGVydHlRdWVyeUNhbGxiYWNrWh9OYW1lZFByb3BlcnR5RW51bWVyYXRvckNhbGxiYWNrei92ODo6UHJvcGVydHlIYW5kbGVyRmxhZ3M6OmtPbmx5SW50ZXJjZXB0U3RyaW5nc3InAgAAeiV2ODo6UHJvcGVydHlIYW5kbGVyRmxhZ3M6OmtOb25NYXNraW5ncskBAAByfAIAAHoqdjg6OlByb3BlcnR5SGFuZGxlckZsYWdzOjprSGFzTm9TaWRlRWZmZWN0eilzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlIYW5kbGVyRmxhZ3M+KHt9KXI5AgAAYwEAAAAAAAAAAAAAAAEAAAADAAAAUwAAAHMKAAAAZAGgAHwAoQFTACkCTnoLaW50MzJfdCh7fSly1QAAACkB2gRmbGFncjIAAAByMgAAAHIzAAAAcsgAAABPFgAAcskAAABhRwMAAC8vIE5hbWVkIGludGVyY2VwdG9ycwoke2luc3RhbmNlX29iamVjdF90ZW1wbGF0ZX0tPlNldEhhbmRsZXIoCiAgICB2ODo6TmFtZWRQcm9wZXJ0eUhhbmRsZXJDb25maWd1cmF0aW9uKAogICAgICAgIHtpbXBsX2JyaWRnZX06Ok5hbWVkUHJvcGVydHlHZXR0ZXJDYWxsYmFjaywKICAgICAgICB7aW1wbF9icmlkZ2V9OjpOYW1lZFByb3BlcnR5U2V0dGVyQ2FsbGJhY2ssCiUgaWYgIk5vdEVudW1lcmFibGUiIG5vdCBpbiBpbnRlcmZhY2UuaW5kZXhlZF9hbmRfbmFtZWRfcHJvcGVydGllcy5uYW1lZF9nZXR0ZXIuZXh0ZW5kZWRfYXR0cmlidXRlczoKICAgICAgICB7aW1wbF9icmlkZ2V9OjpOYW1lZFByb3BlcnR5UXVlcnlDYWxsYmFjaywKJSBlbHNlOgogICAgICAgIG51bGxwdHIsICAvLyBxdWVyeQolIGVuZGlmCiAgICAgICAge2ltcGxfYnJpZGdlfTo6TmFtZWRQcm9wZXJ0eURlbGV0ZXJDYWxsYmFjaywKJSBpZiAiTm90RW51bWVyYWJsZSIgbm90IGluIGludGVyZmFjZS5pbmRleGVkX2FuZF9uYW1lZF9wcm9wZXJ0aWVzLm5hbWVkX2dldHRlci5leHRlbmRlZF9hdHRyaWJ1dGVzOgogICAgICAgIHtpbXBsX2JyaWRnZX06Ok5hbWVkUHJvcGVydHlFbnVtZXJhdG9yQ2FsbGJhY2ssCiUgZWxzZToKICAgICAgICBudWxscHRyLCAgLy8gZW51bWVyYXRvcgolIGVuZGlmCiAgICAgICAge2ltcGxfYnJpZGdlfTo6TmFtZWRQcm9wZXJ0eURlZmluZXJDYWxsYmFjaywKICAgICAgICB7aW1wbF9icmlkZ2V9OjpOYW1lZFByb3BlcnR5RGVzY3JpcHRvckNhbGxiYWNrLAogICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCksCiAgICAgICAge3Byb3BlcnR5X2hhbmRsZXJfZmxhZ3N9KSk7KQLaC2ltcGxfYnJpZGdl2hZwcm9wZXJ0eV9oYW5kbGVyX2ZsYWdzqQFySQAAAFodSW5kZXhlZFByb3BlcnR5R2V0dGVyQ2FsbGJhY2spAXJKAAAAWh1JbmRleGVkUHJvcGVydHlTZXR0ZXJDYWxsYmFja1oeSW5kZXhlZFByb3BlcnR5RGVsZXRlckNhbGxiYWNrWh5JbmRleGVkUHJvcGVydHlEZWZpbmVyQ2FsbGJhY2taIUluZGV4ZWRQcm9wZXJ0eURlc2NyaXB0b3JDYWxsYmFja1ohSW5kZXhlZFByb3BlcnR5RW51bWVyYXRvckNhbGxiYWNreh92ODo6UHJvcGVydHlIYW5kbGVyRmxhZ3M6OmtOb25lcgEAAABhhgIAAC8vIEluZGV4ZWQgaW50ZXJjZXB0b3JzCiR7aW5zdGFuY2Vfb2JqZWN0X3RlbXBsYXRlfS0+U2V0SGFuZGxlcigKICAgIHY4OjpJbmRleGVkUHJvcGVydHlIYW5kbGVyQ29uZmlndXJhdGlvbigKICAgICAgICB7aW1wbF9icmlkZ2V9OjpJbmRleGVkUHJvcGVydHlHZXR0ZXJDYWxsYmFjaywKICAgICAgICB7aW1wbF9icmlkZ2V9OjpJbmRleGVkUHJvcGVydHlTZXR0ZXJDYWxsYmFjaywKICAgICAgICBudWxscHRyLCAgLy8gcXVlcnkKICAgICAgICB7aW1wbF9icmlkZ2V9OjpJbmRleGVkUHJvcGVydHlEZWxldGVyQ2FsbGJhY2ssCiUgaWYgaW50ZXJmYWNlLmluZGV4ZWRfYW5kX25hbWVkX3Byb3BlcnRpZXMuaW5kZXhlZF9nZXR0ZXI6CiAgICAgICAge2ltcGxfYnJpZGdlfTo6SW5kZXhlZFByb3BlcnR5RW51bWVyYXRvckNhbGxiYWNrLAolIGVsc2U6CiAgICAgICAgbnVsbHB0ciwgIC8vIGVudW1lcmF0b3IKJSBlbmRpZgogICAgICAgIHtpbXBsX2JyaWRnZX06OkluZGV4ZWRQcm9wZXJ0eURlZmluZXJDYWxsYmFjaywKICAgICAgICB7aW1wbF9icmlkZ2V9OjpJbmRleGVkUHJvcGVydHlEZXNjcmlwdG9yQ2FsbGJhY2ssCiAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKSwKICAgICAgICB7cHJvcGVydHlfaGFuZGxlcl9mbGFnc30pKTv6SnRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvdjhfc2V0X3JldHVybl92YWx1ZV9mb3JfY29yZS5oKSdyLwAAAHIcAAAAcgoAAAByCwAAAHLSAQAAcgYCAAByogAAAHLjAQAA2hFWOF9PVEhFUl9DQUxMQkFDS9oQb3duX25hbWVkX2dldHRlcnImAgAAcioCAAByKAIAAHIwAgAAciwCAADaDW5hbWVkX2RlbGV0ZXJyMQIAAHI0AgAAcjwCAAByPQIAAHIIAAAAcusBAABynQAAAHK0AAAAcmUAAABySAAAAHLaAAAA2hJvd25faW5kZXhlZF9nZXR0ZXJyCQIAAHIHAgAAchICAAByGQIAAHIUAgAAchoCAAByHwIAAHIjAgAAcp4AAAByGwAAAHKfAAAAKQtyTgAAAHLbAAAA2gxpbnN0YWxsX25vZGVy0gEAAHIrAgAAchEDAAByEwMAAHIWAwAAcjsCAAByFwMAAHKJAAAAcjIAAAByDwMAAHIzAAAA2jptYWtlX2luZGV4ZWRfYW5kX25hbWVkX3Byb3BlcnR5X2NhbGxiYWNrc19hbmRfaW5zdGFsbF9ub2RlCRYAAHPwAAAAAAoOAggCBgEGAQYCBgEKAQj/AgIKAQYCDgYIBAQBBP8GAwYBBAEMAQL+BgMEAQwBAv4GAwQBDAEC/gYDBAEE/wYCBAEE/wYCBAEE/wYCBAEE/wYDCAECAQIBDgEOAQb9Av8EBQYBDAEKAQwBAv8GAgoCCAEM/wT/AgMEFwQBBAECAQL+BP8EBRABBAEMAQL+BgMEAQwBAv4GAwQBBP8GAgQBBP8GAgQBBP8GAgQBBP8GAxABAgECAQ4BDgEOAQ4BDvsC/wQHBAEQAQL/AgEC/wYCDAIKAQgBBBEEAQQBAgEC/gT/BAUEAQQBAv8E/wQFch8DAABjAQAAAAAAAAAAAAAABwAAAAoAAABDAAAAc84AAAB0AHwAdAGDAnMOSgCCAWcAfQF0AoMAfQJ8AGoDfQN8A3I6fANqBHI6fANqBGoFcjpkAXwDagZ2AHNCfAF8AmYCUwB8AGoHdAFqCGQCjQF9AHQJfABkA4MCdAp8AGQEgwJ0C3wAZAWDAnQMfABkBoMCdA18AGQHgwJ0DnwAZAiDAnQPfABkCYMCdBB8AGQKgwJnCH0EfAREAF0afQV8AaARfAWhAQEAfAGgEXQSgwChAQEAcZhkC30GfAKgEXQTfAaDAaEBAQB8AXwCZgJTACkMeowKICAgIEltcGxlbWVudHMgbm9uLW9yZGluYXJ5IGludGVybmFsIG1ldGhvZHMgb2YgbmFtZWQgcHJvcGVydGllcyBvYmplY3RzLgogICAgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jbmFtZWQtcHJvcGVydGllcy1vYmplY3QKICAgIHJoAgAAchQDAABaIE5hbWVkUHJvcHNPYmpOYW1lZEdldHRlckNhbGxiYWNrWiFOYW1lZFByb3BzT2JqTmFtZWREZWxldGVyQ2FsbGJhY2taIU5hbWVkUHJvcHNPYmpOYW1lZERlZmluZXJDYWxsYmFja1okTmFtZWRQcm9wc09iak5hbWVkRGVzY3JpcHRvckNhbGxiYWNrWiJOYW1lZFByb3BzT2JqSW5kZXhlZEdldHRlckNhbGxiYWNrWiNOYW1lZFByb3BzT2JqSW5kZXhlZERlbGV0ZXJDYWxsYmFja1ojTmFtZWRQcm9wc09iakluZGV4ZWREZWZpbmVyQ2FsbGJhY2taJk5hbWVkUHJvcHNPYmpJbmRleGVkRGVzY3JpcHRvckNhbGxiYWNrYQUEAAAvLyBOYW1lZCBpbnRlcmNlcHRvcnMKJHtucG9fcHJvdG90eXBlX3RlbXBsYXRlfS0+U2V0SGFuZGxlcigKICAgIHY4OjpOYW1lZFByb3BlcnR5SGFuZGxlckNvbmZpZ3VyYXRpb24oCiAgICAgICAgTmFtZWRQcm9wc09iak5hbWVkR2V0dGVyQ2FsbGJhY2ssCiAgICAgICAgbnVsbHB0ciwgIC8vIHNldHRlcgogICAgICAgIG51bGxwdHIsICAvLyBxdWVyeQogICAgICAgIE5hbWVkUHJvcHNPYmpOYW1lZERlbGV0ZXJDYWxsYmFjaywKICAgICAgICBudWxscHRyLCAgLy8gZW51bWVyYXRvcgogICAgICAgIE5hbWVkUHJvcHNPYmpOYW1lZERlZmluZXJDYWxsYmFjaywKICAgICAgICBOYW1lZFByb3BzT2JqTmFtZWREZXNjcmlwdG9yQ2FsbGJhY2ssCiAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKSwKICAgICAgICBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlIYW5kbGVyRmxhZ3M+KAogICAgICAgICAgICBpbnQzMl90KHY4OjpQcm9wZXJ0eUhhbmRsZXJGbGFnczo6a05vbk1hc2tpbmcpIHwKICAgICAgICAgICAgaW50MzJfdCh2ODo6UHJvcGVydHlIYW5kbGVyRmxhZ3M6OmtPbmx5SW50ZXJjZXB0U3RyaW5ncykpKSk7Ci8vIEluZGV4ZWQgaW50ZXJjZXB0b3JzCiR7bnBvX3Byb3RvdHlwZV90ZW1wbGF0ZX0tPlNldEhhbmRsZXIoCiAgICB2ODo6SW5kZXhlZFByb3BlcnR5SGFuZGxlckNvbmZpZ3VyYXRpb24oCiAgICAgICAgTmFtZWRQcm9wc09iakluZGV4ZWRHZXR0ZXJDYWxsYmFjaywKICAgICAgICBudWxscHRyLCAgLy8gc2V0dGVyCiAgICAgICAgbnVsbHB0ciwgIC8vIHF1ZXJ5CiAgICAgICAgTmFtZWRQcm9wc09iakluZGV4ZWREZWxldGVyQ2FsbGJhY2ssCiAgICAgICAgbnVsbHB0ciwgIC8vIGVudW1lcmF0b3IKICAgICAgICBOYW1lZFByb3BzT2JqSW5kZXhlZERlZmluZXJDYWxsYmFjaywKICAgICAgICBOYW1lZFByb3BzT2JqSW5kZXhlZERlc2NyaXB0b3JDYWxsYmFjaywKICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPigpLAogICAgICAgIHY4OjpQcm9wZXJ0eUhhbmRsZXJGbGFnczo6a05vbmUpKTspFHIvAAAAchwAAAByCwAAAHLSAQAAcgYCAAByKgIAAHKiAAAAcuMBAAByGgMAAHJEAgAAckUCAAByRgIAAHJHAgAAckACAAByQQIAAHJCAgAAckMCAABynQAAAHIJAAAAcg8AAAApB3JOAAAA2g1jYWxsYmFja19kZWZzch4DAABy0gEAAHIQAwAAcsABAAByigAAAHIyAAAAcjIAAAByMwAAANo3bWFrZV9uYW1lZF9wcm9wZXJ0aWVzX29iamVjdF9jYWxsYmFja3NfYW5kX2luc3RhbGxfbm9kZakWAABzWAAAAAAGDgIEAQYCBgEKAQb/AgII/gIDCAIEAQT/BgQCAQT/AgICAQT/AgICAQT/AgICAQT/AgICAQT/AgICAQT/AgICAQT/AgICAQT/AvEEEggBCgEOAgQbDgJyIQMAAGMDAAAAAAAAAAAAAAAVAAAAEAAAAEMAAABzUAMAAHQAfAB0AYMCcw5KAIIBZwB9A3QCgwB9BGQBfQV8AGoDagR8BXYBcjB8A3wEZgJTAHwAagVqBn0GZwB9B3wBRABd/n0IfAhqB30JZAJ8CWoIdgFyVnFAfAhqCXQBagprAnNmSgCCAXwJagigC2QCoQF9CmQDfQtkA30MZAN9DWQDfQ58CnKOZAR8CnYAcsx8CGoMfQt8AGoNfAlkBXQBag5kBo0DfQ90D3wPZAVkB40CfQ10EHwPfA2DAn0QfAOgEXwQdBKDAGcCoQEBAHwKkAFyGmQIfAp2AJABchp8CGoTfQx8AGoNfAlkBXQBahRkCY0DfQ90D3wPZAVkB40CfQ50FXwPfA6DAn0QfAOgEXwQdBKDAGcCoQEBAGQKfRF8B6AWdBd0GHwRfAlqBHwLfAx8DXwOZAuNBoMBoQEBAHFAfAOgFnQZdBdkDIMBdBl8B4MBdBdkDYMBdBKDAGcEgwGhAQEAZwB9B3wCRABdTn0IfAhqB30SZAJ8EmoIdgGQAXKGkAFxbHwIagl0AWoKawKQAXOYSgCCAXwHoBZ0F3QYZA58EmoEfAhqGnwIahtkD40EgwGhAQEAkAFxbHwDoBZ0GXQXZBCDAXQZfAeDAXQXZA2DAXQSgwBnBIMBoQEBAHwAag10AWocZBGNAX0AdB18AGQSgwJ0HnwAZBODAnQffABkFIMCdCB8AGQVgwJ0IXwAZBaDAnQifABkF4MCdCN8AGQYgwJ0JHwAZBmDAnQlfABqDXwGkAJvPnwGaiZkGo0BZBuDAnQnfABkHIMCdCh8AGQdgwJ0KXwAZB6DAnQqfABkH4MCdCt8AGQggwJnDn0TfBNEAF0cfRB8A6AWfBChAQEAfAOgFnQSgwChAQEAkAJxdmQhfRR8BKAWdBd8FIMBoQEBAHwEoCx0LaAuZCJkI2cCoQGhAQEAfABqBWoEZCRrA5ACctB8A3wEZgJTAHQvfABqDXwGkAJv4HwGaiZkGo0BZCWDAnQwfABkJoMCdDF8AGQngwJ0MnwAZCiDAnQzfABkKYMCdDR8AGQqgwJnBn0TfBNEAF0cfRB8A6AWfBChAQEAfAOgFnQSgwChAQEAkANxGGQrfRR8BKAWdBd8FIMBoQEBAHwDfARmAlMAKSx62AogICAgSW1wbGVtZW50cyBub24tb3JkaW5hcnkgaW50ZXJuYWwgbWV0aG9kcyBvZiBXaW5kb3dQcm94eSBhbmQgTG9jYXRpb24KICAgIG9iamVjdHMuCiAgICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL0MvI3RoZS13aW5kb3dwcm94eS1leG90aWMtb2JqZWN0CiAgICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL0MvI3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UKICAgICkCcpgAAABy6AIAAHJcAAAAcoMCAABydwEAAFQpA3J7AAAAckEAAAByowAAACkBcmwAAAByeAEAACkDcnsAAAByQgAAAHKjAAAAekh7eyJ7cHJvcGVydHlfbmFtZX0iLCB7Z2V0X2Z1bmN9LCB7c2V0X2Z1bmN9LCB7Z2V0X3ZhbHVlfSwge3NldF92YWx1ZX19fSwpBXJuAAAA2ghnZXRfZnVuY9oIc2V0X2Z1bmPaCWdldF92YWx1ZdoJc2V0X3ZhbHVlelNjb25zdGV4cHIgYmluZGluZ3M6OkNyb3NzT3JpZ2luQXR0cmlidXRlVGFibGVFbnRyeSBrQ3Jvc3NPcmlnaW5BdHRyaWJ1dGVUYWJsZVtdID0ge3KJAgAAejd7eyJ7cHJvcGVydHlfbmFtZX0iLCB7b3BfY2FsbGJhY2t9LCB7b3BfZnVuY19sZW5ndGh9fX0sKQNybgAAAFoLb3BfY2FsbGJhY2tyoAIAAHpTY29uc3RleHByIGJpbmRpbmdzOjpDcm9zc09yaWdpbk9wZXJhdGlvblRhYmxlRW50cnkga0Nyb3NzT3JpZ2luT3BlcmF0aW9uVGFibGVbXSA9IHtyFAMAAFoeQ3Jvc3NPcmlnaW5BY2Nlc3NDaGVja0NhbGxiYWNrWh5Dcm9zc09yaWdpbk5hbWVkR2V0dGVyQ2FsbGJhY2taHkNyb3NzT3JpZ2luTmFtZWRTZXR0ZXJDYWxsYmFja1ofQ3Jvc3NPcmlnaW5OYW1lZERlbGV0ZXJDYWxsYmFja1ofQ3Jvc3NPcmlnaW5OYW1lZERlZmluZXJDYWxsYmFja1oiQ3Jvc3NPcmlnaW5OYW1lZERlc2NyaXB0b3JDYWxsYmFja1odQ3Jvc3NPcmlnaW5OYW1lZFF1ZXJ5Q2FsbGJhY2taIkNyb3NzT3JpZ2luTmFtZWRFbnVtZXJhdG9yQ2FsbGJhY2tyGAMAAFogQ3Jvc3NPcmlnaW5JbmRleGVkR2V0dGVyQ2FsbGJhY2taIENyb3NzT3JpZ2luSW5kZXhlZFNldHRlckNhbGxiYWNrWiFDcm9zc09yaWdpbkluZGV4ZWREZWxldGVyQ2FsbGJhY2taIUNyb3NzT3JpZ2luSW5kZXhlZERlZmluZXJDYWxsYmFja1okQ3Jvc3NPcmlnaW5JbmRleGVkRGVzY3JpcHRvckNhbGxiYWNrWiRDcm9zc09yaWdpbkluZGV4ZWRFbnVtZXJhdG9yQ2FsbGJhY2thJAQAAC8vIENyb3NzIG9yaWdpbiBwcm9wZXJ0aWVzCiR7aW5zdGFuY2Vfb2JqZWN0X3RlbXBsYXRlfS0+U2V0QWNjZXNzQ2hlY2tDYWxsYmFja0FuZEhhbmRsZXIoCiAgICBDcm9zc09yaWdpbkFjY2Vzc0NoZWNrQ2FsbGJhY2ssCiAgICB2ODo6TmFtZWRQcm9wZXJ0eUhhbmRsZXJDb25maWd1cmF0aW9uKAogICAgICAgIENyb3NzT3JpZ2luTmFtZWRHZXR0ZXJDYWxsYmFjaywKICAgICAgICBDcm9zc09yaWdpbk5hbWVkU2V0dGVyQ2FsbGJhY2ssCiAgICAgICAgQ3Jvc3NPcmlnaW5OYW1lZFF1ZXJ5Q2FsbGJhY2ssCiAgICAgICAgQ3Jvc3NPcmlnaW5OYW1lZERlbGV0ZXJDYWxsYmFjaywKICAgICAgICBDcm9zc09yaWdpbk5hbWVkRW51bWVyYXRvckNhbGxiYWNrLAogICAgICAgIENyb3NzT3JpZ2luTmFtZWREZWZpbmVyQ2FsbGJhY2ssCiAgICAgICAgQ3Jvc3NPcmlnaW5OYW1lZERlc2NyaXB0b3JDYWxsYmFjaywKICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPigpLAogICAgICAgIHY4OjpQcm9wZXJ0eUhhbmRsZXJGbGFnczo6a05vbmUpLAogICAgdjg6OkluZGV4ZWRQcm9wZXJ0eUhhbmRsZXJDb25maWd1cmF0aW9uKAogICAgICAgIENyb3NzT3JpZ2luSW5kZXhlZEdldHRlckNhbGxiYWNrLAogICAgICAgIENyb3NzT3JpZ2luSW5kZXhlZFNldHRlckNhbGxiYWNrLAogICAgICAgIG51bGxwdHIsICAvLyBxdWVyeQogICAgICAgIENyb3NzT3JpZ2luSW5kZXhlZERlbGV0ZXJDYWxsYmFjaywKICAgICAgICBDcm9zc09yaWdpbkluZGV4ZWRFbnVtZXJhdG9yQ2FsbGJhY2ssCiAgICAgICAgQ3Jvc3NPcmlnaW5JbmRleGVkRGVmaW5lckNhbGxiYWNrLAogICAgICAgIENyb3NzT3JpZ2luSW5kZXhlZERlc2NyaXB0b3JDYWxsYmFjaywKICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPigpLAogICAgICAgIHY4OjpQcm9wZXJ0eUhhbmRsZXJGbGFnczo6a05vbmUpLAogICAgdjg6OkV4dGVybmFsOjpOZXcoCiAgICAgICAgJHtpc29sYXRlfSwKICAgICAgICBjb25zdF9jYXN0PFdyYXBwZXJUeXBlSW5mbyo+KCR7Y2xhc3NfbmFtZX06OkdldFdyYXBwZXJUeXBlSW5mbygpKSkpOwpyHwEAAHpPdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vYmluZGluZ3MvdjhfY3Jvc3Nfb3JpZ2luX3Byb3BlcnR5X3N1cHBvcnQuaHKYAAAAWh9TYW1lT3JpZ2luSW5kZXhlZEdldHRlckNhbGxiYWNrWh9TYW1lT3JpZ2luSW5kZXhlZFNldHRlckNhbGxiYWNrWiBTYW1lT3JpZ2luSW5kZXhlZERlbGV0ZXJDYWxsYmFja1ogU2FtZU9yaWdpbkluZGV4ZWREZWZpbmVyQ2FsbGJhY2taI1NhbWVPcmlnaW5JbmRleGVkRGVzY3JpcHRvckNhbGxiYWNrWiNTYW1lT3JpZ2luSW5kZXhlZEVudW1lcmF0b3JDYWxsYmFja2HYAQAALy8gU2FtZSBvcmlnaW4gaW50ZXJjZXB0b3JzCiR7aW5zdGFuY2Vfb2JqZWN0X3RlbXBsYXRlfS0+U2V0SGFuZGxlcigKICAgIHY4OjpJbmRleGVkUHJvcGVydHlIYW5kbGVyQ29uZmlndXJhdGlvbigKICAgICAgICBTYW1lT3JpZ2luSW5kZXhlZEdldHRlckNhbGxiYWNr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bHM+LjxsYW1iZGE+YwEAAAAAAAAAAAAAAAIAAAAEAAAAEwAAAHMwAAAAdAB8AIMBZAFrAnMQSgCCAWQCiAKIAYgAZgR9AWQDZASEAHQBfAB8AYMCRACDAVMAKQVO6QQAAABUYwEAAAAAAAAAAAAAAAMAAAAEAAAAUwAAAHMYAAAAZwB8AF0QXAJ9AX0CfAJyBHwBkQJxBFMAcjIAAAByMgAAACkDcuMAAAByqwAAAHIVAwAAcjIAAAByMgAAAHIzAAAAcjQBAADbFwAAcskAAAB6Tm1ha2VfY3Jvc3NfY29tcG9uZW50X2luaXQuPGxvY2Fscz4uZmlsdGVyX2ZvdXJfdHJhbXBvbGluZXMuPGxvY2Fscz4uPGxpc3Rjb21wPikCcgUBAADaA3ppcCkCct8AAAByOwIAACkD2htoYXNfY29udGV4dF9kZXBlbmRlbnRfcHJvcHPaHWhhc19jb250ZXh0X2luZGVwZW5kZW50X3Byb3Bz2hdoYXNfdW5jb25kaXRpb25hbF9wcm9wc3IyAAAAcjMAAADaF2ZpbHRlcl9mb3VyX3RyYW1wb2xpbmVz1xcAAHMKAAAAAAEQAQYBAv8EAno6bWFrZV9jcm9zc19jb21wb25lbnRfaW5pdC48bG9jYWxzPi5maWx0ZXJfZm91cl90cmFtcG9saW5lc3orc3RhdGljIEluc3RhbGxJbnRlcmZhY2VUZW1wbGF0ZUZ1bmNUeXBlIHt9O3oxc3RhdGljIEluc3RhbGxVbmNvbmRpdGlvbmFsUHJvcGVydGllc0Z1bmNUeXBlIHt9O3o2c3RhdGljIEluc3RhbGxDb250ZXh0SW5kZXBlbmRlbnRQcm9wZXJ0aWVzRnVuY1R5cGUge307ejRzdGF0aWMgSW5zdGFsbENvbnRleHREZXBlbmRlbnRQcm9wZXJ0aWVzRnVuY1R5cGUge307ekwke2NsYXNzX25hbWV9OjpJbnN0YWxsSW50ZXJmYWNlVGVtcGxhdGVGdW5jVHlwZSAke2NsYXNzX25hbWV9Ojp7fSA9IG51bGxwdHI7elIke2NsYXNzX25hbWV9OjpJbnN0YWxsVW5jb25kaXRpb25hbFByb3BlcnRpZXNGdW5jVHlwZSAke2NsYXNzX25hbWV9Ojp7fSA9IG51bGxwdHI7elcke2NsYXNzX25hbWV9OjpJbnN0YWxsQ29udGV4dEluZGVwZW5kZW50UHJvcGVydGllc0Z1bmNUeXBlICR7Y2xhc3NfbmFtZX06Ont9ID0gbnVsbHB0cjt6VSR7Y2xhc3NfbmFtZX06Okluc3RhbGxDb250ZXh0RGVwZW5kZW50UHJvcGVydGllc0Z1bmNUeXBlICR7Y2xhc3NfbmFtZX06Ont9ID0gbnVsbHB0cjtytQEAAFRy/QEAAHIDAgAAehcke2NsYXNzX25hbWV9Ojp7fSA9IHt9OykUci8AAAByHAAAAHIwAAAAcpsBAAByDwAAAHIKAAAA2h1UUF9JTlNUQUxMX0lOVEVSRkFDRV9URU1QTEFURdoeVFBfSU5TVEFMTF9VTkNPTkRJVElPTkFMX1BST1BT2iRUUF9JTlNUQUxMX0NPTlRFWFRfSU5ERVBFTkRFTlRfUFJPUFPaIlRQX0lOU1RBTExfQ09OVEVYVF9ERVBFTkRFTlRfUFJPUFNyuwEAAHK8AQAAchQAAAByFQAAAHLTAAAAcpoAAADaHUZOX0lOU1RBTExfSU5URVJGQUNFX1RFTVBMQVRF2h5GTl9JTlNUQUxMX1VOQ09ORElUSU9OQUxfUFJPUFPaJEZOX0lOU1RBTExfQ09OVEVYVF9JTkRFUEVOREVOVF9QUk9QU9oiRk5fSU5TVEFMTF9DT05URVhUX0RFUEVOREVOVF9QUk9QUykNck4AAAByvgEAAHL6AAAAcisDAAByKgMAAHIpAwAActsAAAByLAMAANoUdHJhbXBvbGluZV92YXJfZGVjbHPaE3RyYW1wb2xpbmVfdmFyX2RlZnNyAQIAAHLAAQAActMAAAByMgAAACkEcqgAAAByKQMAAHIqAwAAcisDAAByMwAAANoZbWFrZV9jcm9zc19jb21wb25lbnRfaW5pdMMXAABzjAAAAAAKDgEOAQ4BDgEOAQ4CBAEMAhAGAgECAQQBAv8CAgQBAv8CAgQBAv8CAgQBAv8C+QT/BAwCAQIBBAEC/wICBAIC/gIDBAIC/gIDBAIC/gL3BP8EDg4CAgEI/wYDAgECAQIBAgEC/AYFDgIGAQQBAgEGAQL/AgIGAQL/AgIGAQL/AgIGAQL/AvkE/wQMcjcDAABjAwAAAAAAAAAAAAAAEAAAAAwAAABDAAAAc5oBAAB0AHwAdAGDAnMOSgCCAXwBZAFrAnMaSgCCAXQAfAJ0AoMCcyhKAIIBZAJkA4QAfQN0A3wBZwBkBGQFZAaNBH0EfASgBHwAoAWhAKEBAQB8BGoGoAd0CGQHgwGhAQEAdAhkCIMBfQV0CYMAfQZ8BqAEfACgBaEAoQEBAGQJfQd8AGoKfQh8AnKUdAtkCnQMgwJ9CW4EZAt9CXwIag1ytnwIag5ytmQMoA90EHwIag6DAaEBfQpuBGQLfQp8CGoNcsZkDX0LbgRkDn0LfAhqDXLgfAigEWQPoQFy4GQQfQxuBGQRfQx8CGoSahNy8mQSfQ1uBGQTfQ18CGoNkAFyBGQUfQ5uGnwIahSQAXISZBV9Dm4MfAhqFZABch5kFn0OfAagB3wDfAd0FnwJfAp8C3wMfA18DmQXjQihAQEAfAhqDZABcmJ0F3wIgwF9D2QYfQd8BqAHfAN8B3wPZBmNAqEBAQB8CGoSahOQAXJyZBp9B24EZBt9B3wIag2QAXKQfAagB3wDfAd8D2QZjQKhAQEAfAR8BXwGZgNTACkcTtoSR2V0V3JhcHBlclR5cGVJbmZvYwAAAAAAAAAAAAAAAAIAAAAFAAAAXwAAAHMSAAAAdAB0AXwAaQB8AaQBjgGDAVMAci0AAAByDQMAAHLEAAAAcjIAAAByMgAAAHIzAAAAcsgAAAAeGAAAcskAAAB6KG1ha2Vfd3JhcHBlcl90eXBlX2luZm8uPGxvY2Fscz4uPGxhbWJkYT56IGNvbnN0ZXhwciBjb25zdCBXcmFwcGVyVHlwZUluZm8qVHL9AQAAehtyZXR1cm4gJndyYXBwZXJfdHlwZV9pbmZvXzt6MHN0YXRpYyBjb25zdCBXcmFwcGVyVHlwZUluZm8gd3JhcHBlcl90eXBlX2luZm9fO2HzAwAALy8gQ29uc3RydWN0aW9uIG9mIFdyYXBwZXJUeXBlSW5mbyBtYXkgcmVxdWlyZSBub24tdHJpdmlhbCBpbml0aWFsaXphdGlvbiBkdWUKLy8gdG8gY3Jvc3MtY29tcG9uZW50IGFkZHJlc3MgcmVzb2x1dGlvbiBpbiBvcmRlciB0byBsb2FkIHRoZSBwb2ludGVyIHRvIHRoZQovLyBwYXJlbnQgaW50ZXJmYWNlJ3MgV3JhcHBlclR5cGVJbmZvLiAgV2UgaWdub3JlIHRoaXMgaXNzdWUgYmVjYXVzZSB0aGUgaXNzdWUKLy8gaGFwcGVucyBvbmx5IG9uIGNvbXBvbmVudCBidWlsZHMgYW5kIHRoZSBvZmZpY2lhbCByZWxlYXNlIGJ1aWxkcwovLyAoc3RhdGljYWxseS1saW5rZWQgYnVpbGRzKSBhcmUgbmV2ZXIgYWZmZWN0ZWQgYnkgdGhpcyBpc3N1ZS4KI2lmIGRlZmluZWQoQ09NUE9ORU5UX0JVSUxEKSAmJiBkZWZpbmVkKFdJTjMyKSAmJiBkZWZpbmVkKF9fY2xhbmdfXykKI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZ2xvYmFsLWNvbnN0cnVjdG9ycyIKI2VuZGlmCgpjb25zdCBXcmFwcGVyVHlwZUluZm8gJHtjbGFzc19uYW1lfTo6d3JhcHBlcl90eXBlX2luZm9fe3sKICAgIGdpbjo6a0VtYmVkZGVyQmxpbmssCiAgICAke2NsYXNzX25hbWV9Ojp7aW5zdGFsbF9pbnRlcmZhY2VfdGVtcGxhdGVfZnVuY30sCiAgICB7aW5zdGFsbF9jb250ZXh0X2RlcGVuZGVudF9mdW5jfSwKICAgICIke3tjbGFzc19saWtlLmlkZW50aWZpZXJ9fSIsCiAgICB7d3JhcHBlcl90eXBlX2luZm9fb2ZfaW5oZXJpdGVkfSwKICAgIHt3cmFwcGVyX3R5cGVfcHJvdG90eXBlfSwKICAgIHt3cmFwcGVyX2NsYXNzX2lkfSwKICAgIHthY3RpdmVfc2NyaXB0X3dyYXBwYWJsZV9pbmhlcml0YW5jZX0sCiAgICB7aWRsX2RlZmluaXRpb25fa2luZH0sCn19OwoKI2lmIGRlZmluZWQoQ09NUE9ORU5UX0JVSUxEKSAmJiBkZWZpbmVkKFdJTjMyKSAmJiBkZWZpbmVkKF9fY2xhbmdfXykKI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAojZW5kaWYKehEke2NsYXNzX25hbWV9Ojp7fXKDAgAAehh7fTo6R2V0V3JhcHBlclR5cGVJbmZvKCl6LFdyYXBwZXJUeXBlSW5mbzo6a1dyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBleihXcmFwcGVyVHlwZUluZm86OmtXcmFwcGVyVHlwZU5vUHJvdG90eXBl2gROb2Rleh1XcmFwcGVyVHlwZUluZm86OmtOb2RlQ2xhc3NJZHofV3JhcHBlclR5cGVJbmZvOjprT2JqZWN0Q2xhc3NJZHoyV3JhcHBlclR5cGVJbmZvOjprSW5oZXJpdEZyb21BY3RpdmVTY3JpcHRXcmFwcGFibGV6NVdyYXBwZXJUeXBlSW5mbzo6a05vdEluaGVyaXRGcm9tQWN0aXZlU2NyaXB0V3JhcHBhYmxleh5XcmFwcGVyVHlwZUluZm86OmtJZGxJbnRlcmZhY2V6HldyYXBwZXJUeXBlSW5mbzo6a0lkbE5hbWVzcGFjZXomV3JhcHBlclR5cGVJbmZvOjprSWRsQ2FsbGJhY2tJbnRlcmZhY2UpB3JkAgAA2h5pbnN0YWxsX2NvbnRleHRfZGVwZW5kZW50X2Z1bmPaHndyYXBwZXJfdHlwZV9pbmZvX29mX2luaGVyaXRlZNoWd3JhcHBlcl90eXBlX3Byb3RvdHlwZdoQd3JhcHBlcl9jbGFzc19pZNojYWN0aXZlX3NjcmlwdF93cmFwcGFibGVfaW5oZXJpdGFuY2XaE2lkbF9kZWZpbml0aW9uX2tpbmR6YmNvbnN0IFdyYXBwZXJUeXBlSW5mbyYge2JsaW5rX2NsYXNzfTo6d3JhcHBlcl90eXBlX2luZm9fID0KICAgICR7Y2xhc3NfbmFtZX06OndyYXBwZXJfdHlwZV9pbmZvXzsKckgCAABhFwIAAC8vIFtBY3RpdmVTY3JpcHRXcmFwcGFibGVdCnN0YXRpY19hc3NlcnQoCiAgICBzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlU2NyaXB0V3JhcHBhYmxlQmFzZSwge2JsaW5rX2NsYXNzfT46OnZhbHVlLAogICAgIntibGlua19jbGFzc30gZG9lcyBub3QgaW5oZXJpdCBmcm9tIEFjdGl2ZVNjcmlwdFdyYXBwYWJsZTw+IGRlc3BpdGUgIgogICAgInRoZSBJREwgaGFzIFtBY3RpdmVTY3JpcHRXcmFwcGFibGVdIGV4dGVuZGVkIGF0dHJpYnV0ZS4iKTsKc3RhdGljX2Fzc2VydCgKICAgICFzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoJntibGlua19jbGFzc306Okhhc1BlbmRpbmdBY3Rpdml0eSksCiAgICAgICAgICAgICAgICAgIGRlY2x0eXBlKCZTY3JpcHRXcmFwcGFibGU6Okhhc1BlbmRpbmdBY3Rpdml0eSk+Ojp2YWx1ZSwKICAgICJ7YmxpbmtfY2xhc3N9IGlzIG5vdCBvdmVycmlkaW5nIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGRlc3BpdGUgIgogICAgInRoZSBJREwgaGFzIFtBY3RpdmVTY3JpcHRXcmFwcGFibGVdIGV4dGVuZGVkIGF0dHJpYnV0ZS4iKTth9gEAAC8vIG5vbi1bQWN0aXZlU2NyaXB0V3JhcHBhYmxlXQpzdGF0aWNfYXNzZXJ0KAogICAgIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVTY3JpcHRXcmFwcGFibGVCYXNlLCB7YmxpbmtfY2xhc3N9Pjo6dmFsdWUsCiAgICAie2JsaW5rX2NsYXNzfSBpbmhlcml0cyBmcm9tIEFjdGl2ZVNjcmlwdFdyYXBwYWJsZTw+IHdpdGhvdXQgIgogICAgIltBY3RpdmVTY3JpcHRXcmFwcGFibGVdIGV4dGVuZGVkIGF0dHJpYnV0ZS4iKTsKc3RhdGljX2Fzc2VydCgKICAgIHN0ZDo6aXNfc2FtZTxkZWNsdHlwZSgme2JsaW5rX2NsYXNzfTo6SGFzUGVuZGluZ0FjdGl2aXR5KSwKICAgICAgICAgICAgICAgICBkZWNsdHlwZSgmU2NyaXB0V3JhcHBhYmxlOjpIYXNQZW5kaW5nQWN0aXZpdHkpPjo6dmFsdWUsCiAgICAie2JsaW5rX2NsYXNzfSBpcyBvdmVycmlkaW5nIGhhc1BlbmRpbmdBY3Rpdml0eSgpIHdpdGhvdXQgIgogICAgIltBY3RpdmVTY3JpcHRXcmFwcGFibGVdIGV4dGVuZGVkIGF0dHJpYnV0ZS4iKTspGHIvAAAAchwAAABymwEAAHIVAAAAcrsBAAByvAEAAHLTAAAAcp0AAAByDwAAAHIKAAAAcqEAAAByfwAAAHI0AwAAcr8AAAByawIAAHJlAAAAcggAAABywAAAAHI9AAAA2hppc19hY3RpdmVfc2NyaXB0X3dyYXBwYWJsZXLnAQAAcmIBAAByMQMAAHIEAAAAKRByTgAAAHK+AQAAcikDAABy2wAAAHLAAQAAWg5tZW1i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IGQbfCBqLnYAkANyenwbfCBkGWcBZCSNAgEAkANxenwIkARyKHwIajGQBHIofAhqMX0hfCFqMn0ifCKQA3LYZBt8ImoudgCQA3LYfBt8ImQlZB9nAmQmjQIBAHwhajN9InwikARyAGQbfCJqLnYAkARyAHwbfCJnAGQnogFkKI0CAQB8IWo0fSJ8IpAEcihkG3wiai52AJAEcih8G3wiZCVkH2cCZCmNAgEAfASQBHJAdDV9I3Q2fSR0N30ldDh9Jm4QZAB9I2QAfSRkAH0lZAB9JmcAfSdnAH0oZwB9KWcAfSpnAH0rdDmIAHwnfCh8KXwqfCtkKo0GfSx0OoMAfS10O30ufC6IAIMBXAN9L30wfTF8LaAhfDGhAQEAfC2gIXQlgwChAQEAdDyIAIMBXAJ9Mn0zfCygJHwyoQEBAHwtoCF8M6EBAQB8LaAhdCWDAKEBAQB0PYgAfCd8K4MDXAJ9NH01fCygJHw0oQEBAHwtoCF8NaEBAQB8LaAhdCWDAKEBAQBkK2QshACJA2QtZCyEAIkChwKHA2YCZC5kLIQIfTZ0PogAdD98B3RAakF8JHRCdEOIA3wngwKDAXRCdEOIA3wogwKDAXRCdEOIA3wqgwKDAXRCdEOIA3wrgwKDAWQvjQlcA303fTh9OXQ+iAB0RHwHdEBqRXwldEJ0Q3w2fCeDAoMBdEJ0Q3w2fCiDAoMBdEJ0Q3w2fCqDAoMBdEJ0Q3w2fCuDAoMBZC+NCVwDfTp9O308dD6IAHRGfAd0QGpHfCZ0QnRDiAJ8J4MCgwF0QnRDiAJ8KIMCgwF0QnRDiAJ8KoMCgwF0QnRDiAJ8K4MCgwFkL40JXAN9PX0+fT90SIgAdEl8B3wjfCl8LXw4kAZvFHQ/fDuQBm8cdERkMI0IXAN9QH1BfUJ0EXxAfDd8Onw9ZwSDAX1DdBF8QXQlgwB8OHQlgwB8O3QlgwB8PmcHgwF9RHQRfEJ8OXw8fD9nBIMBfUV0SogAZDF0S3w9gwFkMo0DXAN9Rn1HfUh8BJAGcqp0TIgAZDN8B3RLfDeDAXRLfDqDAXRLfD2DAWQ0jQZcBH1JfUp9S31MdE2IAHwDfCd8KHwpfCp8K3wyfDR8O5AGb8Z0RIMKXAJ9TX1OfA6gJHROgwB0JYMAdE90EXRQfA5qUYMBdCWDAHwSZwODAXQXoFJ8CqEBgwJnA6EBAQB8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YW1lctIBAABytgAAAFoPYXBpX2hlYWRlcl9wYXRoWg9hcGlfc291cmNlX3BhdGhaEGltcGxfaGVhZGVyX3BhdGhaEGltcGxfc291cmNlX3BhdGhaD2FwaV9oZWFkZXJfbm9kZVoPYXBpX3NvdXJjZV9ub2RlWhBpbXBsX2hlYWRlcl9ub2RlWhBpbXBsX3NvdXJjZV9ub2RlWhNhcGlfaGVhZGVyX2JsaW5rX25zWhNhcGlfc291cmNlX2JsaW5rX25zWhRpbXBsX2hlYWRlcl9ibGlua19uc1oUaW1wbF9zb3VyY2VfYmxpbmtfbnNaDWFwaV9jbGFzc19kZWZaDmltcGxfY2xhc3NfZGVm2g1jb25zdGFudHNfZGVmcl4AAABy5AEAAHJ0AwAAcnsAAABaDWN1c3RvbV92YWx1ZXNaD2lzX2Nyb3NzX29yaWdpbloTY3Jvc3Nfb3JpZ2luX3ZhbHVlc3JjAAAAcisCAAByfgEAAFoddHBfaW5zdGFsbF9pbnRlcmZhY2VfdGVtcGxhdGVaHnRwX2luc3RhbGxfdW5jb25kaXRpb25hbF9wcm9wc1okdHBfaW5zdGFsbF9jb250ZXh0X2luZGVwZW5kZW50X3Byb3BzWiJ0cF9pbnN0YWxsX2NvbnRleHRfZGVwZW5kZW50X3Byb3Bzco0CAABykwIAAHK4AgAAcpoCAAByoQIAAHIgAwAAcuwCAADaAWZaIGluZGV4ZWRfYW5kX25hbWVkX3Byb3BlcnR5X2RlY2xzWh9pbmRleGVkX2FuZF9uYW1lZF9wcm9wZXJ0eV9kZWZzWidpbmRleGVkX2FuZF9uYW1lZF9wcm9wZXJ0eV9pbnN0YWxsX25vZGVySQMAAFokbmFtZWRfcHJvcGVydGllc19vYmplY3RfaW5zdGFsbF9ub2RlckoDAABaImNyb3NzX29yaWdpbl9wcm9wZXJ0eV9pbnN0YWxsX25vZGVaFmlzX2NvbnRleHRfaW5kZXBlbmRlbnTaIGluc3RhbGxfdW5jb25kaXRpb25hbF9wcm9wc19kZWNs2h9pbnN0YWxsX3VuY29uZGl0aW9uYWxfcHJvcHNfZGVm2iZpbnN0YWxsX3VuY29uZGl0aW9uYWxfcHJvcHNfdHJhbXBvbGluZVomaW5zdGFsbF9jb250ZXh0X2luZGVwZW5kZW50X3Byb3BzX2RlY2xaJWluc3RhbGxfY29udGV4dF9pbmRlcGVuZGVudF9wcm9wc19kZWZaLGluc3RhbGxfY29udGV4dF9pbmRlcGVuZGVudF9wcm9wc190cmFtcG9saW5lWiRpbnN0YWxsX2NvbnRleHRfZGVwZW5kZW50X3Byb3BzX2RlY2xaI2luc3RhbGxfY29udGV4dF9kZXBlbmRlbnRfcHJvcHNfZGVmWippbnN0YWxsX2NvbnRleHRfZGVwZW5kZW50X3Byb3BzX3RyYW1wb2xpbmXaH2luc3RhbGxfaW50ZXJmYWNlX3RlbXBsYXRlX2RlY2zaHmluc3RhbGxfaW50ZXJmYWNlX3RlbXBsYXRlX2RlZtolaW5zdGFsbF9pbnRlcmZhY2VfdGVtcGxhdGVfdHJhbXBvbGluZdoYaW5zdGFsbGVyX2Z1bmN0aW9uX2RlY2xz2hdpbnN0YWxsZXJfZnVuY3Rpb25fZGVmc1oeaW5zdGFsbGVyX2Z1bmN0aW9uX3RyYW1wb2xpbmVz2hlnZXRfd3JhcHBlcl90eXBlX2luZm9fZGVm2hl3cmFwcGVyX3R5cGVfaW5mb192YXJfZGVm2hZ3cmFwcGVyX3R5cGVfaW5mb19pbml0Whljcm9zc19jb21wb25lbnRfaW5pdF9kZWNsWhhjcm9zc19jb21wb25lbnRfaW5pdF9kZWZyNQMAAHI2AwAAWh1oZWFkZXJfdjhfY29udGV4dF9zbmFwc2hvdF9uc1odc291cmNlX3Y4X2NvbnRleHRfc25hcHNob3RfbnNyMgAAACkEck4AAABycwMAAHKkAgAAcngDAAByMwAAANoTZ2VuZXJhdGVfY2xhc3NfbGlrZZYZAABz8gMAAAABFgIIAQYBBgEGAQgDCAEEAQwCBAIEAQQBBgEEAQQBAv8IAgYBBAEEAQL/BgQMAQwBBAEMAQwDCgEMAQwBCgEMAQwBBgEKAQwBDAEKAQwBDgIEAQQDDgEOAQYBDgEQAgQBBAMCAQQCBAEG/wL/AgQCAQj5BggOAQYBEP8EAgYBBAECAQIBBP8C/gYEDgEGAQYBBgEE/QgGBAMEAQgBDAEQAQoBDAEGAQz/CAQGAg4MDAECAQgBBP4GAwoBDAEKAQYBAv8EAgoBAgECAQIBBP0GBAwBBv8EAgIBAgECAQT9BgQKAQIBAgECAgIBAv4C/QYHDAEG/wQCAgECAQICAgEC/gL9CgcKAQwBAgECAQT+CgMOAQYBBgESAQIBAgICAQL+Av4GBgYBEgECAQIBBv4GBwYBEgECAQICAgEC/gL+BggGAgQBBAIC/wICBgIEAQQBBAEEAwQBBAEEAQQBBAECAQIBAgECAQIBAgEC+gYHBgQEAgb/BgECAQoBDAUG/gQBAgIKAQoBDAUCAQb/Av4EAQIDCgEKAQwDCAEIAgz/AgMCAQIBAgECAQQBAgEMAQwBAgEI/wICDPYE/wYBAg0CAQIBAgECAQQBAgECAQj/AgIGAQL/BAICAQj/AgICAQj/AvQE/gQBAgECDwIBAgECAQIBBAECAQYBAv8EAgwBAgEI/wICBgEC/wT1BP8GAQIOAgECAQIBAgECAQIBAgEGAQICBgEC9QT/BgECDAIBAgECAQIBAvwGBgIBAgEEAQIBBAECAQQBAvkGCQIBAgECAQIBAvwGCQIBAgECAQIBAv8C/QT/BgECBwYDAgECAQIBAgEGAQIBAv8CAgIBAv8C+QT+BgECAQIMAgEIAQYBAgECAQYBAvoC/wQBAgkEAQQBBAECAQIBCAEEAQL9BAQI+wL9BgoGAQgBBP4GBAQBBAEEAQwBBAEIAQQBAvkGCQYBCAEE/gYEBgEEAQQBBAECAQIBAgEE/wICBAEC/AQFCPoC/QYLBgEIAQT+BgQEAQQBBAEMAQQBCAEEAQL5BgkGAQgBBP4GBAYBCgEIAQL9BgUOAQYBEv8EAgYBBgECAQj+BgQQCQYBBv8EBAYBAgEE/gYEBgEGAQIBBP4GBQYBBgEGAQIBBP0GBgwBDgEMAQ4BBgECAQT+BgUGAQwBDgEGAQYBAgEE/QYFBgEGAQIBBP0GBQwBDAEGAQIBBP4IBQwBDgIGAQYBBgECAQT9BgYGAQYBBgECAQT9BgUGAQIBBP4GBQYBCgEEAQIBBPwGBwYBBgEKAQL/BAIE/QYFBgEKAQL/BAIE/QYHBAEI/wQCBAEI/wQCCAEEAQj/BAIEAQj/cpgDAABjAQAAAAAAAAAAAAAAAwAAAAMAAABDAAAAczAAAAB0AHwAdAFqAoMCcxBKAIIBdAODAKAEoQB9AXwBoAV8AKEBfQJ0BnwCgwEBAGQAUwByLQAAACkHci8AAAByEwEAANoKSWRlbnRpZmllcnIqAAAA2hB3ZWJf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ZXJUeXBlSW5mbygpLCApA3IPAAAAcmUAAAByCAAAACkCcuMAAAByoQAAAHIyAAAAcjIAAAByMwAAAHI0AQAANRwAAHMIAAAABgMC/gYBBv96O2dlbmVyYXRlX2luc3RhbGxfcHJvcGVydGllc19wZXJfZmVhdHVyZS48bG9jYWxzPi48bGlzdGNvbXA+YwEAAAAAAAAAAAAAAAEAAAABAAAAUwAAAHMGAAAAfABqAFMAci0AAAByyAIAACkB2gF4cjIAAAByMgAAAHIzAAAAcsgAAAA4HAAAcskAAAB6OWdlbmVyYXRlX2luc3RhbGxfcHJvcGVydGllc19wZXJfZmVhdHVyZS48bG9jYWxzPi48bGFtYmRhPnJwAQAAejJzdGF0aWMgY29uc3QgV3JhcHBlclR5cGVJbmZvKiBjb25zdCB3dGlfbGlzdFtdID0ge3KJAgAAehdPcmlnaW5UcmlhbEZlYXR1cmU6Omt7fXodc2VsZWN0ZWRfd3RpX2xpc3QgPSB3dGlfbGlzdDspAnKjAwAActMAAAB6O2Jhc2U6OnNwYW48Y29uc3QgV3JhcHBlclR5cGVJbmZvKiBjb25zdD4gc2VsZWN0ZWRfd3RpX2xpc3Q7elRJbnN0YWxsUHJvcGVydGllc1BlckZlYXR1cmVJbnRlcm5hbCgke3NjcmlwdF9zdGF0ZX0sICR7ZmVhdHVyZX0sIHNlbGVjdGVkX3d0aV9saXN0KTtyVgMAAHJXAwAAYZgEAABWOFBlckNvbnRleHREYXRhKiBwZXJfY29udGV4dF9kYXRhID0gc2NyaXB0X3N0YXRlLT5QZXJDb250ZXh0RGF0YSgpOwp2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IHNjcmlwdF9zdGF0ZS0+R2V0SXNvbGF0ZSgpOwp2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBzY3JpcHRfc3RhdGUtPkdldENvbnRleHQoKTsKY29uc3QgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9IHNjcmlwdF9zdGF0ZS0+V29ybGQoKTsKVjhJbnRlcmZhY2VCcmlkZ2VCYXNlOjpGZWF0dXJlU2VsZWN0b3IgZmVhdHVyZV9zZWxlY3RvcihmZWF0dXJlKTsKCmZvciAoY29uc3QgYXV0byogd3JhcHBlcl90eXBlX2luZm8gOiB3cmFwcGVyX3R5cGVfaW5mb19saXN0KSB7CiAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluc3RhbmNlX29iamVjdDsKICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gcHJvdG90eXBlX29iamVjdDsKICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBpbnRlcmZhY2Vfb2JqZWN0OwogIHY4OjpMb2NhbDx2ODo6VGVtcGxhdGU+IGludGVyZmFjZV90ZW1wbGF0ZSA9CiAgICAgIHdyYXBwZXJfdHlwZV9pbmZvLT5HZXRWOENsYXNzVGVtcGxhdGUoaXNvbGF0ZSwgd29ybGQpOwoKICBzd2l0Y2ggKHdyYXBwZXJfdHlwZV9pbmZvLT5pZGxfZGVmaW5pdGlvbl9raW5kKSB7CiAgICBjYXNlIFdyYXBwZXJUeXBlSW5mbzo6a0lkbEludGVyZmFjZToKICAgICAgaWYgKCFwZXJfY29udGV4dF9kYXRhLT5HZXRFeGlzdGluZ0NvbnN0cnVjdG9yQW5kUHJvdG90eXBlRm9yVHlwZSgKICAgICAgICAgICAgICB3cmFwcGVyX3R5cGVfaW5mbywgJnByb3RvdHlwZV9vYmplY3QsICZpbnRlcmZhY2Vfb2JqZWN0KSkgewogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGJyZWFrOwogICAgY2FzZSBXcmFwcGVyVHlwZUluZm86OmtJZGxOYW1lc3BhY2U6CiAgICAgIE5PVElNUExFTUVOVEVEKCk7CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgTk9UUkVBQ0hFRCgpOwogIH0KCiAgd3JhcHBlcl90eXBlX2luZm8tPmluc3RhbGxfY29udGV4dF9kZXBlbmRlbnRfcHJvcHNfZnVuYygKICAgICAgY29udGV4dCwgd29ybGQsIGluc3RhbmNlX29iamVjdCwgcHJvdG90eXBlX29iamVjdCwgIGludGVyZmFjZV9vYmplY3QsCiAgICAgIGludGVyZmFjZV90ZW1wbGF0ZSwgZmVhdHVyZV9zZWxlY3Rvcik7Cn0pOXIvAAAAcjAAAABymwEAAHIqAAAAcpoDAAByKwAAANoOY29tcG9uZW50X3BhdGhyZQAA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