IwojIE1ha2VmaWxlIGZvciBGcmVlVHlwZTIgbGluayBsaWJyYXJ5IHVzaW5nIGdjYyAzLjQuMyBmcm9tIHRoZQojIEFtaWdhT1M0IFNESwojCgoKIyBDb3B5cmlnaHQgMjAwNSwgMjAwNiBieQojIFdlcm5lciBMZW1iZXJnIGFuZCBEZXRsZWYgV/xya25lci4KIwojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCiMgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLAojIExJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CiMgaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKIyBmdWxseS4KCgojIHRvIGJ1aWxkIGZyb20gdGhlIGJ1aWxkcy9hbWlnYSBkaXJlY3RvcnkgY2FsbAojCiMgIG1ha2UKIwojIFlvdXIgcHJvZ3JhbXMgc291cmNlIGNvZGUgc2hvdWxkIHN0YXJ0IHdpdGggdGhpcwojICh1bmNvbW1lbnQgdGhlIHBhcnRzIHlvdSBkbyBub3QgbmVlZCB0byBrZWVwIHRoZSBwcm9ncmFtIHNtYWxsKToKIyAtLS04PC0tLQojZGVmaW5lIEZUX1VTRV9BVVRPRklUIC8vIGF1dG9maXR0ZXIKI2RlZmluZSBGVF9VU0VfUkFTVEVSICAvLyBtb25vY2hyb21lIHJhc3Rlcml6ZXIKI2RlZmluZSBGVF9VU0VfU01PT1RIICAvLyBhbnRpLWFsaWFzaW5nIHJhc3Rlcml6ZXIKI2RlZmluZSBGVF9VU0VfVFQgICAgICAvLyB0cnVldHlwZSBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9UMSAgICAgIC8vIHR5cGUxIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX1Q0MiAgICAgLy8gdHlwZTQyIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX1QxQ0lEICAgLy8gY2lkLWtleWVkIHR5cGUxIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX0NGRiAgICAgLy8gb3BlbnR5cGUgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfQkRGICAgICAvLyBiZGYgYml0bWFwIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX1BDRiAgICAgLy8gcGNmIGJpdG1hcCBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9QRlIgICAgIC8vIHBmciBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9XSU5GTlQgIC8vIHdpbmRvd3MgLmZudHwuZm9uIGJpdG1hcCBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9PVFYgICAgIC8vIG9wZW50eXBlIHZhbGlkYXRvcgojZGVmaW5lIEZUX1VTRV9HWFYgICAgIC8vIHRydWV0eXBlIGd4IHZhbGlkYXRvcgojaW5jbHVkZSAiRlQ6c3JjL2Jhc2UvZnRpbml0LmMiCiMgLS0tODwtLS0KIwojIGxpbmsgeW91ciBwcm9ncmFtcyB3aXRoIGxpYmZ0Ml9wcGMuYSBhbmQgZWl0aGVyIGZ0c3lzdGVtLnBwYy5vIG9yIGZ0c3lzdGVtcHVyZS5wcGMubwojIChhbmQgZWl0aGVyIGZ0ZGVidWcucHBjLm8gb3IgZnRkZWJ1Z3B1cmUucHBjLm8gaWYgeW91IGVuYWJsZWQgRlRfREVCVUdfTEVWRUxfRVJST1Igb3IKIyBGVF9ERUJVR19MRVZFTF9UUkFDRSBpbiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oKS4KCmFsbDoJYXNzaWduIGxpYmZ0Ml9wcGMuYSBmdHN5c3RlbS5wcGMubyBmdHN5c3RlbXB1cmUucHBjLm8KCmFzc2lnbjoKCWFzc2lnbiBGVDogLy8KCkNDID0gICAgIHBwYy1hbWlnYW9zLWdjYwpBUiA9ICAgICBwcGMtYW1pZ2Fvcy1hcgpSQU5MSUIgPSBwcGMtYW1pZ2Fvcy1yYW5saWIKCkRJUkZMQUdTICA9IC1JaW5jbHVkZSAtSS9GVC9zcmMgLUkvRlQvaW5jbHVkZSAtSS9TREsvaW5jbHVkZQoKV0FSTklOR1MgPSAtV2FsbCAtVyAtV3VuZGVmIC1XcG9pbnRlci1hcml0aCAtV2JhZC1mdW5jdGlvbi1jYXN0IFwKCSAgIC1XYWdncmVnYXRlLXJldHVybiAtV3NoYWRvdwoKQ1BVICAgICAgPSAtbWNwdT02MDRlCgpPUFRJT05TICA9IC1ERlQyX0JVSUxEX0xJQlJBUlkgLUROREVCVUcgLWZuby1idWlsdGluCk9QVElNSVpFID0gLU8yIC1mb21pdC1mcmFtZS1wb2ludGVyIC1mc3RyZW5ndGgtcmVkdWNlIC1maW5saW5lLWZ1bmN0aW9ucwoKQ0ZMQUdTICAgPSAkKERJUkZMQUdTKSAkKFdBUk5JTkdTKSAkKEZUMkZMQUdTKSAkKENQVSkgJChPUFRJT05TKSAkKE9QVElNSVpFKQoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGJhc2UKIwpmdGJhc2UucHBjLm86IEZUOnNyYy9iYXNlL2Z0YmFzZS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy9iYXNlL2Z0YmFzZS5jCgpmdGluaXQucHBjLm86IEZUOnNyYy9iYXNlL2Z0aW5pdC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy9iYXNlL2Z0aW5pdC5jCgpmdHN5c3RlbS5wcGMubzogRlQ6c3JjL2Jhc2UvZnRzeXN0ZW0uYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvYmFzZS9mdHN5c3RlbS5jCgojIHB1cmUgdmVyc2lvbiBmb3IgdXNlIGluIHJ1bi10aW1lIGxpYnJhcnkgZXRjCmZ0c3lzdGVtcHVyZS5wcGMubzogc3JjL2Jhc2UvZnRzeXN0ZW0uYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIHNyYy9iYXNlL2Z0c3lzdGVtLmMKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBiYXNlIGV4dGVuc2lvbnMKIwpmdGJib3gucHBjLm86IEZUOnNyYy9iYXNlL2Z0YmJveC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy9iYXNlL2Z0YmJveC5jCgpmdGJkZi5wcGMubzogRlQ6c3JjL2Jhc2UvZnRiZGYuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvYmFzZS9mdGJkZi5jCgpmdGJpdG1hcC5wcGMubzogRlQ6c3JjL2Jhc2UvZnRiaXRtYXAuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvYmFzZS9mdGJpdG1hcC5jCgpmdGRlYnVnLnBwYy5vOiBGVDpzcmMvYmFzZS9mdGRlYnVnLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAvRlQvc3JjL2Jhc2UvZnRkZWJ1Zy5jCgojIHB1cmUgdmVyc2lvbiBmb3IgdXNlIGluIHJ1bi10aW1lIGxpYnJhcnkgZXRjCmZ0ZGVidWdwdXJlLnBwYy5vOiBzcmMvYmFzZS9mdGRlYnVnLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCBzcmMvYmFzZS9mdGRlYnVnLmMKCmZ0Z2x5cGgucHBjLm86IEZUOnNyYy9iYXNlL2Z0Z2x5cGguYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvYmFzZS9mdGdseXBoLmMKCmZ0Z3h2YWwucHBjLm86IEZUOnNyYy9iYXNlL2Z0Z3h2YWwuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvYmFzZS9mdGd4dmFsLmMKCmZ0bW0ucHBjLm86IEZUOnNyYy9iYXNlL2Z0bW0uYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvYmFzZS9mdG1tLmMKCmZ0b3R2YWwucHBjLm86IEZUOnNyYy9iYXNlL2Z0b3R2YWwuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvYmFzZS9mdG90dmFsLmMKCmZ0cGZyLnBwYy5vOiBGVDpzcmMvYmFzZS9mdHBmci5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy9iYXNlL2Z0cGZyLmMKCmZ0c3Ryb2tlLnBwYy5vOiBGVDpzcmMvYmFzZS9mdHN0cm9rZS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy9iYXNlL2Z0c3Ryb2tlLmMKCmZ0c3ludGgucHBjLm86IEZUOnNyYy9iYXNlL2Z0c3ludGguYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvYmFzZS9mdHN5bnRoLmMKCmZ0dHlwZTEucHBjLm86IEZUOnNyYy9iYXNlL2Z0dHlwZTEuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvYmFzZS9mdHR5cGUxLmMKCmZ0d2luZm50LnBwYy5vOiBGVDpzcmMvYmFzZS9mdHdpbmZudC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy9iYXNlL2Z0d2luZm50LmMKCmZ0eGY4Ni5wcGMubzogRlQ6c3JjL2Jhc2UvZnR4Zjg2LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAvRlQvc3JjL2Jhc2UvZnR4Zjg2LmMKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBhdXRvZml0dGluZyBtb2R1bGUKIwphdXRvZml0LnBwYy5vOiBGVDpzcmMvYXV0b2ZpdC9hdXRvZml0LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAvRlQvc3JjL2F1dG9maXQvYXV0b2ZpdC5jCgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgcG9zdHNjcmlwdCBoaW50aW5nIG1vZHVsZQojCnBzaGludGVyLnBwYy5vOiBGVDpzcmMvcHNoaW50ZXIvcHNoaW50ZXIuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvcHNoaW50ZXIvcHNoaW50ZXIuYwoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IFBTIHN1cHBvcnQgbW9kdWxlCiMKcHNhdXgucHBjLm86IEZUOnNyYy9wc2F1eC9wc2F1eC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy9wc2F1eC9wc2F1eC5jCgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgUFMgZ2x5cGggbmFtZXMgbW9kdWxlCiMKcHNuYW1lcy5wcGMubzogRlQ6c3JjL3BzbmFtZXMvcHNuYW1lcy5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy9wc25hbWVzL3BzbmFtZXMuYwoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IG1vbm9jaHJvbWUgcmFzdGVyIG1vZHVsZQojCnJhc3Rlci5wcGMubzogRlQ6c3JjL3Jhc3Rlci9yYXN0ZXIuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvcmFzdGVyL3Jhc3Rlci5jCgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgYW50aS1hbGlhc2luZyByYXN0ZXIgbW9kdWxlCiMKc21vb3RoLnBwYy5vOiBGVDpzcmMvc21vb3RoL3Ntb290aC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy9zbW9vdGgvc21vb3RoLmMKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSAnc2ZudCcgbW9kdWxlCiMKc2ZudC5wcGMubzogRlQ6c3JjL3NmbnQvc2ZudC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy9zZm50L3NmbnQuYwoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGdseXBoIGFuZCBpbWFnZSBjYWNoaW5nIHN5c3RlbQojCmZ0Y2FjaGUucHBjLm86IEZUOnNyYy9jYWNoZS9mdGNhY2hlLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAvRlQvc3JjL2NhY2hlL2Z0Y2FjaGUuYwoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IE9wZW5UeXBlIGZvbnQgZHJpdmVyCiMKY2ZmLnBwYy5vOiBGVDpzcmMvY2ZmL2NmZi5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy9jZmYvY2ZmLmMKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBUcnVlVHlwZSBmb250IGRyaXZlcgojCnRydWV0eXBlLnBwYy5vOiBGVDpzcmMvdHJ1ZXR5cGUvdHJ1ZXR5cGUuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvdHJ1ZXR5cGUvdHJ1ZXR5cGUuYwoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IFR5cGUxIGZvbnQgZHJpdmVyCiMKdHlwZTEucHBjLm86IEZUOnNyYy90eXBlMS90eXBlMS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy90eXBlMS90eXBlMS5jCgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHlwZTQyIGZvbnQgZHJpdmVyCiMKdHlwZTQyLnBwYy5vOiBGVDpzcmMvdHlwZTQyL3R5cGU0Mi5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy90eXBlNDIvdHlwZTQyLmMKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBDSUQta2V5ZWQgVHlwZTEgZm9udCBkcml2ZXIKIwp0eXBlMWNpZC5wcGMubzogRlQ6c3JjL2NpZC90eXBlMWNpZC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy9jaWQvdHlwZTFjaWQuYwoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IEJERiBiaXRtYXAgZm9udCBkcml2ZXIKIwpiZGYucHBjLm86IEZUOnNyYy9iZGYvYmRmLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAvRlQvc3JjL2JkZi9iZGYuYwoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IFBDRiBiaXRtYXAgZm9udCBkcml2ZXIKIwpwY2YucHBjLm86IEZUOnNyYy9wY2YvcGNmLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAvRlQvc3JjL3BjZi9wY2YuYwoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGd6aXAgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBQQ0YgYml0bWFwIGZvbnRzCiMKZ3ppcC5wcGMubzogRlQ6c3JjL2d6aXAvZnRnemlwLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAvRlQvc3JjL2d6aXAvZnRnemlwLmMKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBjb21wcmVzcyBzdXBwb3J0IGZvciBjb21wcmVzc2VkIFBDRiBiaXRtYXAgZm9udHMKIwpsencucHBjLm86IEZUOnNyYy9sencvZnRsencuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvbHp3L2Z0bHp3LmMKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBQRlIgZm9udCBkcml2ZXIKIwpwZnIucHBjLm86IEZUOnNyYy9wZnIvcGZyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAvRlQvc3JjL3Bmci9wZnIuYwoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IFdpbmRvd3MgRk5UL0ZPTiBiaXRtYXAgZm9udCBkcml2ZXIKIwp3aW5mbnQucHBjLm86IEZUOnNyYy93aW5mb250cy93aW5mbnQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAIC9GVC9zcmMvd2luZm9udHMvd2luZm50LmMKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBUcnVlVHlwZUdYIFZhbGlkYXRvcgojCmd4dmFsaWQucHBjLm86IEZUOnNyYy9neHZhbGlkL2d4dmFsaWQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1Xbm8tYWdncmVnYXRlLXJldHVybiAtbyAkQCAvRlQvc3JjL2d4dmFsaWQvZ3h2YWxpZC5jCgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgT3BlblR5cGUgdmFsaWRhdG9yCiMKb3R2YWxpZC5wcGMubzogRlQ6c3JjL290dmFsaWQvb3R2YWxpZC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgL0ZUL3NyYy9vdHZhbGlkL290dmFsaWQuYwoKQkFTRSA9ICBmdGJhc2UucHBjLm8gZnRiYm94LnBwYy5vIGZ0YmRmLnBwYy5vIGZ0Yml0bWFwLnBwYy5vIGZ0Z2x5cGgucHBjLm8gXAoJZnRneHZhbC5wcGMubyBmdG1tLnBwYy5vIGZ0b3R2YWwucHBjLm8gZnRwZnIucHBjLm8gZnRzdHJva2UucHBjLm8gXAoJZnRzeW50aC5wcGMubyBmdHR5cGUxLnBwYy5vIGZ0d2luZm50LnBwYy5vIGZ0eGY4Ni5wcGMubwoKREVCVUcgPSBmdGRlYnVnLnBwYy5vIGZ0ZGVidWdwdXJlLnBwYy5vCgpBRklUID0gYXV0b2ZpdC5wcGMubwoKR1hWID0gZ3h2YWxpZC5wcGMubwoKT1RWID0gb3R2YWxpZC5wcGMubwoKUFMgPSBwc2F1eC5wcGMubyBwc25hbWVzLnBwYy5vIHBzaGludGVyLnBwYy5vCgpSQVNURVIgPSByYXN0ZXIucHBjLm8gc21vb3RoLnBwYy5vCgpGT05URCA9IGNmZi5wcGMubyB0eXBlMS5wcGMubyB0eXBlNDIucHBjLm8gdHlwZTFjaWQucHBjLm8gdHJ1ZXR5cGUucHBjLm9cCgliZGYucHBjLm8gcGNmLnBwYy5vIHBmci5wcGMubyB3aW5mbnQucHBjLm8KCmxpYmZ0Ml9wcGMuYTogICAgICAkKEJBU0UpICQoQUZJVCkgJChHWFYpICQoT1RWKSAkKFBTKSAkKFJBU1RFUikgc2ZudC5wcGMubyBmdGNhY2hlLnBwYy5vICQoRk9OVEQpIGd6aXAucHBjLm8gbHp3LnBwYy5vCgkkKEFSKSByICRAICQoQkFTRSkgJChBRklUKSAkKEdYVikgJChPVFYpICQoUFMpICQoUkFTVEVSKSBzZm50LnBwYy5vIGZ0Y2FjaGUucHBjLm8gJChGT05URCkgZ3ppcC5wcGMubyBsencucHBjLm8KCSQoUkFOTElCKSAkQAoKI0xvY2FsIFZhcmlhYmxlczoKI2NvZGluZzogbGF0aW4tMQojRW5kOgo=