Iw0KIyBNYWtlZmlsZSBmb3IgRnJlZVR5cGUyIGxpbmsgbGlicmFyeSB1c2luZyBwcGMtbW9ycGhvcy1nY2MtMi45NS4zLWJpbi50Z3oNCiMgKGdjYyAyLjk1LjMgaG9zdGVkIG9uIDY4ay1BbWlnYSBwcm9kdWNpbmcgTW9ycGhPUy1QUEMtYmluYXJpZXMgZnJvbQ0KIyBodHRwOi8vd3d3Lm1vcnBob3MuZGUpDQojDQoNCg0KIyBDb3B5cmlnaHQgMjAwNS0yMDE1IGJ5DQojIFdlcm5lciBMZW1iZXJnIGFuZCBEZXRsZWYgV/xya25lci4NCiMNCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QsIGFuZCBtYXkgb25seSBiZSB1c2VkLCBtb2RpZmllZCwNCiMgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCBsaWNlbnNlLA0KIyBMSUNFTlNFLlRYVC4gIEJ5IGNvbnRpbnVpbmcgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHlvdQ0KIyBpbmRpY2F0ZSB0aGF0IHlvdSBoYXZlIHJlYWQgdGhlIGxpY2Vuc2UgYW5kIHVuZGVyc3RhbmQgYW5kIGFjY2VwdCBpdA0KIyBmdWxseS4NCg0KDQojDQojIHRvIGJ1aWxkIGZyb20gdGhlIGJ1aWxkcy9hbWlnYSBkaXJlY3RvcnkgY2FsbA0KIw0KIyAgbWFrZSBhc3NpZ24NCiMgIG1ha2UNCiMNCiMgWW91ciBwcm9ncmFtcyBzb3VyY2UgY29kZSBzaG91bGQgc3RhcnQgd2l0aCB0aGlzDQojICh1bmNvbW1lbnQgdGhlIHBhcnRzIHlvdSBkbyBub3QgbmVlZCB0byBrZWVwIHRoZSBwcm9ncmFtIHNtYWxsKToNCiMgLS0tODwtLS0NCiNkZWZpbmUgRlRfVVNFX0FVVE9GSVQgLy8gYXV0b2ZpdHRlcg0KI2RlZmluZSBGVF9VU0VfUkFTVEVSICAvLyBtb25vY2hyb21lIHJhc3Rlcml6ZXINCiNkZWZpbmUgRlRfVVNFX1NNT09USCAgLy8gYW50aS1hbGlhc2luZyByYXN0ZXJpemVyDQojZGVmaW5lIEZUX1VTRV9UVCAgICAgIC8vIHRydWV0eXBlIGZvbnQgZHJpdmVyDQojZGVmaW5lIEZUX1VTRV9UMSAgICAgIC8vIHR5cGUxIGZvbnQgZHJpdmVyDQojZGVmaW5lIEZUX1VTRV9UNDIgICAgIC8vIHR5cGU0MiBmb250IGRyaXZlcg0KI2RlZmluZSBGVF9VU0VfVDFDSUQgICAvLyBjaWQta2V5ZWQgdHlwZTEgZm9udCBkcml2ZXINCiNkZWZpbmUgRlRfVVNFX0NGRiAgICAgLy8gb3BlbnR5cGUgZm9udCBkcml2ZXINCiNkZWZpbmUgRlRfVVNFX0JERiAgICAgLy8gYmRmIGJpdG1hcCBmb250IGRyaXZlcg0KI2RlZmluZSBGVF9VU0VfUENGICAgICAvLyBwY2YgYml0bWFwIGZvbnQgZHJpdmVyDQojZGVmaW5lIEZUX1VTRV9QRlIgICAgIC8vIHBmciBmb250IGRyaXZlcg0KI2RlZmluZSBGVF9VU0VfV0lORk5UICAvLyB3aW5kb3dzIC5mbnR8LmZvbiBiaXRtYXAgZm9udCBkcml2ZXINCiNkZWZpbmUgRlRfVVNFX09UViAgICAgLy8gb3BlbnR5cGUgdmFsaWRhdG9yDQojZGVmaW5lIEZUX1VTRV9HWFYgICAgIC8vIHRydWV0eXBlIGd4IHZhbGlkYXRvcg0KI2luY2x1ZGUgIkZUOnNyYy9iYXNlL2Z0aW5pdC5jIg0KIyAtLS04PC0tLQ0KIw0KIyBsaW5rIHlvdXIgcHJvZ3JhbXMgd2l0aCBsaWJmdDJfcHBjLmEgYW5kIGVpdGhlciBmdHN5c3RlbS5wcGMubyBvciBmdHN5c3RlbXB1cmUucHBjLm8NCiMgKGFuZCBlaXRoZXIgZnRkZWJ1Zy5wcGMubyBvciBmdGRlYnVncHVyZS5wcGMubyBpZiB5b3UgZW5hYmxlZCBGVF9ERUJVR19MRVZFTF9FUlJPUiBvcg0KIyBGVF9ERUJVR19MRVZFTF9UUkFDRSBpbiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oKS4NCg0KYWxsOglsaWJmdDJfcHBjLmEgZnRzeXN0ZW0ucHBjLm8gZnRzeXN0ZW1wdXJlLnBwYy5vDQoNCmFzc2lnbjoNCglhc3NpZ24gRlQ6IC8vDQoNCkZUU1JDID0gL0ZUL3NyYw0KDQpDQyA9ICAgICBwcGMtbW9ycGhvcy1nY2MNCkFSID0gICAgIHBwYy1tb3JwaG9zLWFyIHJjDQpSQU5MSUIgPSBwcGMtbW9ycGhvcy1yYW5saWINCkxEID0gICAgIHBwYy1tb3JwaG9zLWxkDQpDRkxBR1MgPSAtREZUMl9CVUlMRF9MSUJSQVJZIC1PMiAtSS9lbXUvZW11bGluY2x1ZGUvaW5jbHVkZWdjYyAtSS9lbXUvaW5jbHVkZSAtSWluY2x1ZGUgLUkkKEZUU1JDKSAtSS9GVC9pbmNsdWRlDQoNCiMNCiMgRnJlZVR5cGUyIGxpYnJhcnkgYmFzZQ0KIw0KZnRiYXNlLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0YmFzZS5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCmZ0aW5pdC5wcGMubzogJChGVFNSQykvYmFzZS9mdGluaXQuYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQpmdHN5c3RlbS5wcGMubzogJChGVFNSQykvYmFzZS9mdHN5c3RlbS5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCiMgcHVyZSB2ZXJzaW9uIGZvciB1c2UgaW4gcnVuLXRpbWUgbGlicmFyeSBldGMNCmZ0c3lzdGVtcHVyZS5wcGMubzogc3JjL2Jhc2UvZnRzeXN0ZW0uYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQpmdGRlYnVnLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0ZGVidWcuYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQojIHB1cmUgdmVyc2lvbiBmb3IgdXNlIGluIHJ1bi10aW1lIGxpYnJhcnkgZXRjDQpmdGRlYnVncHVyZS5wcGMubzogc3JjL2Jhc2UvZnRkZWJ1Zy5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCiMNCiMgRnJlZVR5cGUyIGxpYnJhcnkgYmFzZSBleHRlbnNpb25zDQojDQpmdGJib3gucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRiYm94LmMNCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwNCg0KZnRiZGYucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRiZGYuYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQpmdGJpdG1hcC5wcGMubzogJChGVFNSQykvYmFzZS9mdGJpdG1hcC5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCmZ0Y2lkLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0Y2lkLmMNCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwNCg0KZnRmbnRmbXQucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRmbnRmbXQuYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQpmdGZzdHlwZS5wcGMubzogJChGVFNSQykvYmFzZS9mdGZzdHlwZS5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCmZ0Z2FzcC5wcGMubzogJChGVFNSQykvYmFzZS9mdGdhc3AuYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQpmdGdseXBoLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0Z2x5cGguYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQpmdGd4dmFsLnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0Z3h2YWwuYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQpmdGxjZGZpbC5wcGMubzogJChGVFNSQykvYmFzZS9mdGxjZGZpbC5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCmZ0bW0ucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRtbS5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCmZ0b3R2YWwucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRvdHZhbC5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCmZ0cGF0ZW50LnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0cGF0ZW50LmMNCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwNCg0KZnRwZnIucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRwZnIuYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQpmdHN0cm9rZS5wcGMubzogJChGVFNSQykvYmFzZS9mdHN0cm9rZS5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCmZ0c3ludGgucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnRzeW50aC5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCmZ0dHlwZTEucHBjLm86ICQoRlRTUkMpL2Jhc2UvZnR0eXBlMS5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCmZ0d2luZm50LnBwYy5vOiAkKEZUU1JDKS9iYXNlL2Z0d2luZm50LmMNCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwNCg0KIw0KIyBGcmVlVHlwZTIgbGlicmFyeSBhdXRvZml0dGluZyBtb2R1bGUNCiMNCmF1dG9maXQucHBjLm86ICQoRlRTUkMpL2F1dG9maXQvYXV0b2ZpdC5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCiMNCiMgRnJlZVR5cGUyIGxpYnJhcnkgcG9zdHNjcmlwdCBoaW50aW5nIG1vZHVsZQ0KIw0KcHNoaW50ZXIucHBjLm86ICQoRlRTUkMpL3BzaGludGVyL3BzaGludGVyLmMNCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwNCg0KIw0KIyBGcmVlVHlwZTIgbGlicmFyeSBQUyBzdXBwb3J0IG1vZHVsZQ0KIw0KcHNhdXgucHBjLm86ICQoRlRTUkMpL3BzYXV4L3BzYXV4LmMNCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwNCg0KIw0KIyBGcmVlVHlwZTIgbGlicmFyeSBQUyBnbHlwaCBuYW1lcyBtb2R1bGUNCiMNCnBzbmFtZXMucHBjLm86ICQoRlRTUkMpL3BzbmFtZXMvcHNuYW1lcy5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCiMNCiMgRnJlZVR5cGUyIGxpYnJhcnkgbW9ub2Nocm9tZSByYXN0ZXIgbW9kdWxlDQojDQpyYXN0ZXIucHBjLm86ICQoRlRTUkMpL3Jhc3Rlci9yYXN0ZXIuYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQojDQojIEZyZWVUeXBlMiBsaWJyYXJ5IGFudGktYWxpYXNpbmcgcmFzdGVyIG1vZHVsZQ0KIw0Kc21vb3RoLnBwYy5vOiAkKEZUU1JDKS9zbW9vdGgvc21vb3RoLmMNCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwNCg0KIw0KIyBGcmVlVHlwZTIgbGlicmFyeSAnc2ZudCcgbW9kdWxlDQojDQpzZm50LnBwYy5vOiAkKEZUU1JDKS9zZm50L3NmbnQuYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQojDQojIEZyZWVUeXBlMiBsaWJyYXJ5IGdseXBoIGFuZCBpbWFnZSBjYWNoaW5nIHN5c3RlbQ0KIw0KZnRjYWNoZS5wcGMubzogJChGVFNSQykvY2FjaGUvZnRjYWNoZS5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCiMNCiMgRnJlZVR5cGUyIGxpYnJhcnkgT3BlblR5cGUgZm9udCBkcml2ZXINCiMNCmNmZi5wcGMubzogJChGVFNSQykvY2ZmL2NmZi5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCiMNCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHJ1ZVR5cGUgZm9udCBkcml2ZXINCiMNCnRydWV0eXBlLnBwYy5vOiAkKEZUU1JDKS90cnVldHlwZS90cnVldHlwZS5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCiMNCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHlwZTEgZm9udCBkcml2ZXINCiMNCnR5cGUxLnBwYy5vOiAkKEZUU1JDKS90eXBlMS90eXBlMS5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCiMNCiMgRnJlZVR5cGUyIGxpYnJhcnkgVHlwZTQyIGZvbnQgZHJpdmVyDQojDQp0eXBlNDIucHBjLm86ICQoRlRTUkMpL3R5cGU0Mi90eXBlNDIuYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQojDQojIEZyZWVUeXBlMiBsaWJyYXJ5IENJRC1rZXllZCBUeXBlMSBmb250IGRyaXZlcg0KIw0KdHlwZTFjaWQucHBjLm86ICQoRlRTUkMpL2NpZC90eXBlMWNpZC5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCiMNCiMgRnJlZVR5cGUyIGxpYnJhcnkgQkRGIGJpdG1hcCBmb250IGRyaXZlcg0KIw0KYmRmLnBwYy5vOiAkKEZUU1JDKS9iZGYvYmRmLmMNCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwNCg0KIw0KIyBGcmVlVHlwZTIgbGlicmFyeSBQQ0YgYml0bWFwIGZvbnQgZHJpdmVyDQojDQpwY2YucHBjLm86ICQoRlRTUkMpL3BjZi9wY2YuYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQojDQojIEZyZWVUeXBlMiBsaWJyYXJ5IGd6aXAgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBQQ0YgYml0bWFwIGZvbnRzDQojDQpnemlwLnBwYy5vOiAkKEZUU1JDKS9nemlwL2Z0Z3ppcC5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCiMgRnJlZVR5cGUyIGxpYnJhcnkgYnppcDIgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBQQ0YgYml0bWFwIGZvbnRzDQojDQpiemlwMi5wcGMubzogJChGVFNSQykvYnppcDIvZnRiemlwMi5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCiMNCiMgRnJlZVR5cGUyIGxpYnJhcnkgY29tcHJlc3Mgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBQQ0YgYml0bWFwIGZvbnRzDQojDQpsencucHBjLm86ICQoRlRTUkMpL2x6dy9mdGx6dy5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCiMNCiMgRnJlZVR5cGUyIGxpYnJhcnkgUEZSIGZvbnQgZHJpdmVyDQojDQpwZnIucHBjLm86ICQoRlRTUkMpL3Bmci9wZnIuYw0KCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtbyAkQCAkPA0KDQojDQojIEZyZWVUeXBlMiBsaWJyYXJ5IFdpbmRvd3MgRk5UL0ZPTiBiaXRtYXAgZm9udCBkcml2ZXINCiMNCndpbmZudC5wcGMubzogJChGVFNSQykvd2luZm9udHMvd2luZm50LmMNCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwNCg0KIw0KIyBGcmVlVHlwZTIgbGlicmFyeSBUcnVlVHlwZUdYIFZhbGlkYXRvcg0KIw0KZ3h2YWxpZC5wcGMubzogJChGVFNSQykvZ3h2YWxpZC9neHZhbGlkLmMNCgkkKENDKSAtYyAkKENGTEFHUykgLW8gJEAgJDwNCg0KIw0KIyBGcmVlVHlwZTIgbGlicmFyeSBPcGVuVHlwZSB2YWxpZGF0b3INCiMNCm90dmFsaWQucHBjLm86ICQoRlRTUkMpL290dmFsaWQvb3R2YWxpZC5jDQoJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQ8DQoNCkJBU0VQUEMgPSBmdGJhc2UucHBjLm8gZnRiYm94LnBwYy5vIGZ0YmRmLnBwYy5vIGZ0Yml0bWFwLnBwYy5vIGZ0Y2lkLnBwYy5vIFwNCgkgIGZ0Zm50Zm10LnBwYy5vZnRmc3R5cGUucHBjLm8gZnRnYXNwLnBwYy5vIGZ0Z2x5cGgucHBjLm8gICAgICAgICAgXA0KCSAgZnRneHZhbC5wcGMubyBmdGxjZGZpbC5wcGMubyBmdG1tLnBwYy5vIGZ0b3R2YWwucHBjLm8gICAgICAgICAgICBcDQoJICBmdHBhdGVudC5wcGMubyBmdHBmci5wcGMubyBmdHN0cm9rZS5wcGMubyBmdHN5bnRoLnBwYy5vICAgICAgICAgIFwNCgkgIGZ0dHlwZTEucHBjLm8gZnR3aW5mbnQucHBjLm8NCg0KREVCVUdQUEMgPSBmdGRlYnVnLnBwYy5vIGZ0ZGVidWdwdXJlLnBwYy5vDQoNCkFGSVRQUEMgPSBhdXRvZml0LnBwYy5vDQoNCkdYVlBQQyA9IGd4dmFsaWQucHBjLm8NCg0KT1RWUFBDID0gb3R2YWxpZC5wcGMubw0KDQpQU1BQQyA9IHBzYXV4LnBwYy5vIHBzbmFtZXMucHBjLm8gcHNoaW50ZXIucHBjLm8NCg0KUkFTVEVSUFBDID0gcmFzdGVyLnBwYy5vIHNtb290aC5wcGMubw0KDQpGT05URFBQQyA9IGNmZi5wcGMubyB0eXBlMS5wcGMubyB0eXBlNDIucHBjLm8gdHlwZTFjaWQucHBjLm8gdHJ1ZXR5cGUucHBjLm9cDQoJICAgYmRmLnBwYy5vIHBjZi5wcGMubyBwZnIucHBjLm8gd2luZm50LnBwYy5vDQoNCmxpYmZ0Ml9wcGMuYTogICAgJChCQVNFUFBDKSAkKEFGSVRQUEMpICQoR1hWUFBDKSAkKE9UVlBQQykgJChQU1BQQykgJChSQVNURVJQUEMpIHNmbnQucHBjLm8gZnRjYWNoZS5wcGMubyAkKEZPTlREUFBDKSBnemlwLnBwYy5vIGJ6aXAyLnBwYy5vIGx6dy5wcGMubw0KCSQoQVIpICRAICQoQkFTRVBQQykgJChBRklUUFBDKSAkKEdYVlBQQykgJChPVFZQUEMpICQoUFNQUEMpICQoUkFTVEVSUFBDKSBzZm50LnBwYy5vIGZ0Y2FjaGUucHBjLm8gJChGT05URFBQQykgZ3ppcC5wcGMubyBiemlwMi5wcGMubyBsencucHBjLm8NCgktQCAoJChSQU5MSUIpICRAIHx8IHRydWUpID4vZGV2L251bGwgMj4mMQ0KDQojTG9jYWwgVmFyaWFibGVzOg0KI2NvZGluZzogbGF0aW4tMQ0KI0VuZDoNCg==