IwojIE1ha2VmaWxlIGZvciBGcmVlVHlwZTIgbGluayBsaWJyYXJ5IHVzaW5nIHBwYy1tb3JwaG9zLWdjYy0yLjk1LjMtYmluLnRnegojIChnY2MgMi45NS4zIGhvc3RlZCBvbiA2OGstQW1pZ2EgcHJvZHVjaW5nIE1vcnBoT1MtUFBDLWJpbmFyaWVzIGZyb20KIyBodHRwOi8vd3d3Lm1vcnBob3MuZGUpCiMKCgojIENvcHlyaWdodCAyMDA1LCAyMDA2IGJ5CiMgV2VybmVyIExlbWJlcmcgYW5kIERldGxlZiBX/HJrbmVyLgojCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwKIyBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCiMgTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKIyBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdAojIGZ1bGx5LgoKCiMKIyB0byBidWlsZCBmcm9tIHRoZSBidWlsZHMvYW1pZ2EgZGlyZWN0b3J5IGNhbGwKIwojICBtYWtlIGFzc2lnbgojICBtYWtlCiMKIyBZb3VyIHByb2dyYW1zIHNvdXJjZSBjb2RlIHNob3VsZCBzdGFydCB3aXRoIHRoaXMKIyAodW5jb21tZW50IHRoZSBwYXJ0cyB5b3UgZG8gbm90IG5lZWQgdG8ga2VlcCB0aGUgcHJvZ3JhbSBzbWFsbCk6CiMgLS0tODwtLS0KI2RlZmluZSBGVF9VU0VfQVVUT0ZJVCAvLyBhdXRvZml0dGVyCiNkZWZpbmUgRlRfVVNFX1JBU1RFUiAgLy8gbW9ub2Nocm9tZSByYXN0ZXJpemVyCiNkZWZpbmUgRlRfVVNFX1NNT09USCAgLy8gYW50aS1hbGlhc2luZyByYXN0ZXJpemVyCiNkZWZpbmUgRlRfVVNFX1RUICAgICAgLy8gdHJ1ZXR5cGUgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfVDEgICAgICAvLyB0eXBlMSBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9UNDIgICAgIC8vIHR5cGU0MiBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9UMUNJRCAgIC8vIGNpZC1rZXllZCB0eXBlMSBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9DRkYgICAgIC8vIG9wZW50eXBlIGZvbnQgZHJpdmVyCiNkZWZpbmUgRlRfVVNFX0JERiAgICAgLy8gYmRmIGJpdG1hcCBmb250IGRyaXZlcgojZGVmaW5lIEZUX1VTRV9QQ0YgICAgIC8vIHBjZiBiaXRtYXAgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfUEZSICAgICAvLyBwZnIgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfV0lORk5UICAvLyB3aW5kb3dzIC5mbnR8LmZvbiBiaXRtYXAgZm9udCBkcml2ZXIKI2RlZmluZSBGVF9VU0VfT1RWICAgICAvLyBvcGVudHlwZSB2YWxpZGF0b3IKI2RlZmluZSBGVF9VU0VfR1hWICAgICAvLyB0cnVldHlwZSBneCB2YWxpZGF0b3IKI2luY2x1ZGUgIkZUOnNyYy9iYXNlL2Z0aW5pdC5jIgojIC0tLTg8LS0tCiMKIyBsaW5rIHlvdXIgcHJvZ3JhbXMgd2l0aCBsaWJmdDJfcHBjLmEgYW5kIGVpdGhlciBmdHN5c3RlbS5wcGMubyBvciBmdHN5c3RlbXB1cmUucHBjLm8KIyAoYW5kIGVpdGhlciBmdGRlYnVnLnBwYy5vIG9yIGZ0ZGVidWdwdXJlLnBwYy5vIGlmIHlvdSBlbmFibGVkIEZUX0RFQlVHX0xFVkVMX0VSUk9SIG9yCiMgRlRfREVCVUdfTEVWRUxfVFJBQ0UgaW4gaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCkuCgphbGw6CWxpYmZ0Ml9wcGMuYSBmdHN5c3RlbS5wcGMubyBmdHN5c3RlbXB1cmUucHBjLm8KCmFzc2lnbjoKCWFzc2lnbiBGVDogLy8KCkZUU1JDID0gL0ZUL3NyYwoKQ0MgPSAgICAgcHBjLW1vcnBob3MtZ2NjCkFSID0gICAgIHBwYy1tb3JwaG9zLWFyIHJjClJBTkxJQiA9IHBwYy1tb3JwaG9zLXJhbmxpYgpMRCA9ICAgICBwcGMtbW9ycGhvcy1sZApDRkxBR1MgPSAtREZUMl9CVUlMRF9MSUJSQVJZIC1PMiAtSS9lbXUvZW11bGluY2x1ZGUvaW5jbHVkZWdjYyAtSS9lbXUvaW5jbHVkZSAtSWluY2x1ZGUgLUkkKEZUU1JDKSAtSS9GVC9pbmNsdWRlCgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgYmFzZQojCmZ0YmFzZS5wcGMubzogJChGVFNSQykvYmFzZS9mdGJhc2UuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdGluaXQucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRpbml0LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRzeXN0ZW0ucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRzeXN0ZW0uYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojIHB1cmUgdmVyc2lvbiBmb3IgdXNlIGluIHJ1bi10aW1lIGxpYnJhcnkgZXRjCmZ0c3lzdGVtcHVyZS5wcGMubzogc3JjL2Jhc2UvZnRzeXN0ZW0uYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdGRlYnVnLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0ZGVidWcuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojIHB1cmUgdmVyc2lvbiBmb3IgdXNlIGluIHJ1bi10aW1lIGxpYnJhcnkgZXRjCmZ0ZGVidWdwdXJlLnBwYy5vOiBzcmMvYmFzZS9mdGRlYnVnLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGJhc2UgZXh0ZW5zaW9ucwojCmZ0YmJveC5wcGMubzogJChGVFNSQykvYmFzZS9mdGJib3guYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdGJkZi5wcGMubzogJChGVFNSQykvYmFzZS9mdGJkZi5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0Yml0bWFwLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0Yml0bWFwLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRnbHlwaC5wcGMubzogJChGVFNSQykvYmFzZS9mdGdseXBoLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRneHZhbC5wcGMubzogJChGVFNSQykvYmFzZS9mdGd4dmFsLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRtbS5wcGMubzogJChGVFNSQykvYmFzZS9mdG1tLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRvdHZhbC5wcGMubzogJChGVFNSQykvYmFzZS9mdG90dmFsLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnRwZnIucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRwZnIuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpmdHN0cm9rZS5wcGMubzogJChGVFNSQykvYmFzZS9mdHN0cm9rZS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0c3ludGgucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRzeW50aC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0dHlwZTEucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnR0eXBlMS5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCmZ0d2luZm50LnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0d2luZm50LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKZnR4Zjg2LnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0eGY4Ni5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBhdXRvZml0dGluZyBtb2R1bGUKIwphdXRvZml0LnBwYy5vOiAkKEZUU1JDKS9hdXRvZml0L2F1dG9maXQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgcG9zdHNjcmlwdCBoaW50aW5nIG1vZHVsZQojCnBzaGludGVyLnBwYy5vOiAkKEZUU1JDKS9wc2hpbnRlci9wc2hpbnRlci5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBQUyBzdXBwb3J0IG1vZHVsZQojCnBzYXV4LnBwYy5vOiAkKEZUU1JDKS9wc2F1eC9wc2F1eC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBQUyBnbHlwaCBuYW1lcyBtb2R1bGUKIwpwc25hbWVzLnBwYy5vOiAkKEZUU1JDKS9wc25hbWVzL3BzbmFtZXMuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgbW9ub2Nocm9tZSByYXN0ZXIgbW9kdWxlCiMKcmFzdGVyLnBwYy5vOiAkKEZUU1JDKS9yYXN0ZXIvcmFzdGVyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGFudGktYWxpYXNpbmcgcmFzdGVyIG1vZHVsZQojCnNtb290aC5wcGMubzogJChGVFNSQykvc21vb3RoL3Ntb290aC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSAnc2ZudCcgbW9kdWxlCiMKc2ZudC5wcGMubzogJChGVFNSQykvc2ZudC9zZm50LmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGdseXBoIGFuZCBpbWFnZSBjYWNoaW5nIHN5c3RlbQojCmZ0Y2FjaGUucHBjLm86ICQoRlRTUkMpL2NhY2hlL2Z0Y2FjaGUuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgT3BlblR5cGUgZm9udCBkcml2ZXIKIwpjZmYucHBjLm86ICQoRlRTUkMpL2NmZi9jZmYuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHJ1ZVR5cGUgZm9udCBkcml2ZXIKIwp0cnVldHlwZS5wcGMubzogJChGVFNSQykvdHJ1ZXR5cGUvdHJ1ZXR5cGUuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHlwZTEgZm9udCBkcml2ZXIKIwp0eXBlMS5wcGMubzogJChGVFNSQykvdHlwZTEvdHlwZTEuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHlwZTQyIGZvbnQgZHJpdmVyCiMKdHlwZTQyLnBwYy5vOiAkKEZUU1JDKS90eXBlNDIvdHlwZTQyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IENJRC1rZXllZCBUeXBlMSBmb250IGRyaXZlcgojCnR5cGUxY2lkLnBwYy5vOiAkKEZUU1JDKS9jaWQvdHlwZTFjaWQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgQkRGIGJpdG1hcCBmb250IGRyaXZlcgojCmJkZi5wcGMubzogJChGVFNSQykvYmRmL2JkZi5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBQQ0YgYml0bWFwIGZvbnQgZHJpdmVyCiMKcGNmLnBwYy5vOiAkKEZUU1JDKS9wY2YvcGNmLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IGd6aXAgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBQQ0YgYml0bWFwIGZvbnRzCiMKZ3ppcC5wcGMubzogJChGVFNSQykvZ3ppcC9mdGd6aXAuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgY29tcHJlc3Mgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBQQ0YgYml0bWFwIGZvbnRzCiMKbHp3LnBwYy5vOiAkKEZUU1JDKS9sencvZnRsencuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgojCiMgRnJlZVR5cGUyIGxpYnJhcnkgUEZSIGZvbnQgZHJpdmVyCiMKcGZyLnBwYy5vOiAkKEZUU1JDKS9wZnIvcGZyLmMKCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPAoKIwojIEZyZWVUeXBlMiBsaWJyYXJ5IFdpbmRvd3MgRk5UL0ZPTiBiaXRtYXAgZm9udCBkcml2ZXIKIwp3aW5mbnQucHBjLm86ICQoRlRTUkMpL3dpbmZvbnRzL3dpbmZudC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBUcnVlVHlwZUdYIFZhbGlkYXRvcgojCmd4dmFsaWQucHBjLm86ICQoRlRTUkMpL2d4dmFsaWQvZ3h2YWxpZC5jCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwKCiMKIyBGcmVlVHlwZTIgbGlicmFyeSBPcGVuVHlwZSB2YWxpZGF0b3IKIwpvdHZhbGlkLnBwYy5vOiAkKEZUU1JDKS9vdHZhbGlkL290dmFsaWQuYwoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8CgpCQVNFUFBDID0gZnRiYXNlLnBwYy5vIGZ0YmJveC5wcGMubyBmdGJkZi5wcGMubyBmdGJpdG1hcC5wcGMubyBmdGdseXBoLnBwYy5vIFwKCSAgZnRneHZhbGlkLnBwYy5vIGZ0bW0ucHBjLm8gZnRvdHZhbC5wcGMubyBmdHBmci5wcGMubyBmdHN0cm9rZS5wcGMubyBcCgkgIGZ0c3ludGgucHBjLm8gZnR0eXBlMS5wcGMubyBmdHdpbmZudC5wcGMubyBmdHhmODYucHBjLm8KCkRFQlVHUFBDID0gZnRkZWJ1Zy5wcGMubyBmdGRlYnVncHVyZS5wcGMubwoKQUZJVFBQQyA9IGF1dG9maXQucHBjLm8KCkdYVlBQQyA9IGd4dmFsaWQucHBjLm8KCk9UVlBQQyA9IG90dmFsaWQucHBjLm8KClBTUFBDID0gcHNhdXgucHBjLm8gcHNuYW1lcy5wcGMubyBwc2hpbnRlci5wcGMubwoKUkFTVEVSUFBDID0gcmFzdGVyLnBwYy5vIHNtb290aC5wcGMubwoKRk9OVERQUEMgPSBjZmYucHBjLm8gdHlwZTEucHBjLm8gdHlwZTQyLnBwYy5vIHR5cGUxY2lkLnBwYy5vIHRydWV0eXBlLnBwYy5vXAoJICAgYmRmLnBwYy5vIHBjZi5wcGMubyBwZnIucHBjLm8gd2luZm50LnBwYy5vCgpsaWJmdDJfcHBjLmE6ICAgICQoQkFTRVBQQykgJChBRklUUFBDKSAkKEdYVlBQQykgJChPVFZQUEMpICQoUFNQUEMpICQoUkFTVEVSUFBDKSBzZm50LnBwYy5vIGZ0Y2FjaGUucHBjLm8gJChGT05URFBQQykgZ3ppcC5wcGMubyBsencucHBjLm8KCSQoQVIpICRAICQoQkFTRVBQQykgJChBRklUUFBDKSAkKEdYVlBQQykgJChPVFZQUEMpICQoUFNQUEMpICQoUkFTVEVSUFBDKSBzZm50LnBwYy5vIGZ0Y2FjaGUucHBjLm8gJChGT05URFBQQykgZ3ppcC5wcGMubyBsencucHBjLm8KCS1AICgkKFJBTkxJQikgJEAgfHwgdHJ1ZSkgPi9kZXYvbnVsbCAyPiYxCgojTG9jYWwgVmFyaWFibGVzOgojY29kaW5nOiBsYXRpbi0xCiNFbmQ6Cg==