MALARIA
- Number of children under 5 years of age with confirmed malaria who received treatment for malaria from an appropriate provider in USG-supported areas [15 fee proxy]


Depuis le Q4 2019, la province du Haut Lomami traite plus de 100000 cas de paludisme chez les enfants de moins de 5 ans. Les ZS les plus touchees sont:Kinkondja,Bukama, Kabongo, Malemba Nkulu et Mulongo. Comparativement les ZS qui ont rapporte moins sont:Baka,Kinda,Songa,Kayamba. - Percent of pregnant women who received doses of sulfadoxine/ pyrimethamine (S/P) for Intermittent Preventive Treatment (IPT) during ANC visits [2.4]


on note une diminution de 4% par raport au trimestre precedent. Le pourcentage des femmes enceintes qui ont recu la SP est en croissance avec le plus grand pic(82%) observe au Q2 2020,quelques ZS ont atteint la cible de 80%, il s’agit de: Mukanga, Malemba Nkulu, Baka,Kayamba. Les ZS qui ont ete moins performantes sont:Butumba,Lwamba,Kinkondja,Kinda et Kabondo Dianda
MATERNAL, NEONATAL, AND CHILD HEALTH
- Number of children under five years of age that received treatment for an acute respiratory infection from an appropriate provider [5 fee proxy]


A partir du troisieme trimestre 2019, le nombre d’enfants de moins de 5 ans pris en charge pour la pneumonie a connu un accroissement considerable jusqu’au premier trimestre 2020,de la le nombre de cas s’est stabilise autour de 24000 cas. Les ZS qui ont rapporte le plus sont:Malemba, Bukama, Kinkondja, Kitenge. comparativement les ZS qui ont rapporte moins de cas sont:Baka,Kabongo,Butumba, Kinda et Mukanga.
- Number of insecticide-treated nets (ITN) distributed during antenatal and/or child immunization visits


Par rapport au trimestre precedent, il y a une diminution de 31%. la tendance annuelle montre des irregularite au cours de l’annee, le 3 eme trimestre 2019 et le deuxieme trimestre 2020 sont ceux ou les pics ont ete plus eleve. Les ZS qui ont distribue plus de Milds sont:Kamina, Kinkondja, Mulongo,Kabondo Dianda et Kabongo. Les ZS ou la distribution a ete faible sont:Lwamba,Kinda,Baka,Kayamba et Butumba
- Number of cases of child diarrhea treated in USG-supported programs [7 fee proxy]


Le nombre de cas de diarrhee a une evolution cyclique d’une periode de 6 mois avec un rebond d’environ 13% par rapport au semestre precedent. les trimestres les plus concernes par le rebond sont le deuxieme et le quatrieme. Les ZS qui ont rapporte plus de cas sont:Mulongo,Malemba,Kinkondja, Kabongo et Bukama. comparatiement les ZS qui ont rapporte moins de cas sont:Baka,Kinda,Lwamba,Mukanga et Kamina.
- Number of children less than 12 months of age who received three doses of pentavalent vaccine [9 fee proxy]


Environ 800 enfants n’ont pas recu de vaccin pentavalent au cours du dernier trimestre comparativement a celui qui precede. A partir du troisieme trimestre 2019, la vaccination au pentavalent a connu un rebound, la moyenne au cours de 5 derniers trimestres serait de 35407. les ZS qui ont rapporte le plus de cas sont: Mulongo, Malemba, Kabongo, Bukama et Kamina. Les ZS qui ont rapporte moins de cas sont:Baka,Kayamba,Kinda,Lwamba et Butumba. - Percent of children less than 12 months of age who received measles vaccine from USG-supported programs [10]


Au dernier trimestre, il ya eu environ 700 enfants non vaccines par rapport au trimestre precedent.cependant ce sont ces deux derniers trimestres pendant lesquels les performances ont ete les meilleurs de l’annee. Les ZS les plus performantes sont:Kamina, Mukanga,Songa,Mulongo et Butumba.Comparativement les ZS moins performantes sont:Kaniama,Kinda,Kitenge,Kabondo et Bukama.
- Percentage of pregnant women attending at least one antenatal care (ANC) visit with a skilled provider from USG- supported health facilities


Il y a une augmentation de 1% par rapport au trimestre anterieur, cependant la tendance annuelle montre un leger accroissement du % de femmes qui frequentent la CPN1 surtout dans les ZS suivntes:Mulongo,Lwamba,Kinkondja,Bukama, Butumba qui sont au dela de 100% de la cible attendue de 100%. Les ZS a faibles performances sont Baka, Kinda, Kabongo,Kabondo Dianda.
- Percentage of pregnant women attending at least one and at least 4 antenatal care (ANC) with a skilled provider from USG-supported health facilities [12 fee]


- Percentage of deliveries with an SBA in USG-supported facilities


nb&p; on note une augmentation de 1% par rapport au trimestre anterieure. la tendance annuelle montre un leger accroissement de cet indicateur par rapport a son niveau de 2019. Les qui sont plus performantes sont:Baka,Kitenge,Mulongo,Kaniama et Kayamba. Les ZS moins performantes sont:Butumba,Kabondo,Songa,Kabongo et Kamina.
- Number of women giving birth who received uterotonics in the third stage of labor (OR immediately after birth) through USG-supported programs [2.1.4]


Il ya eu 100 femmes de plus qui ont recu la GATPA par rapport au trimestre precedent. l’evolution annuelle montre que cet indicateur a connu une croissance d’environ 23% a partir du troisieme trimestre 2019. Les ZS qui ont rapporte plus de cas sont:Kitenge,Bukama,Kabongo,Kaniama et Mulongo.Les ZS qui ont rapporte moins sont:Bukama, Mukanga, Kayamba,Baka,Songa.
- Number and percentage of newborns receiving essential newborn care through USG-supported programs


l’evolution de la proportion des enfants qui ont recu des soins essetiels au cours de leur naissance a une evolution en plateau,les deux derniers trimestres sont celles ou les performances globales sont les meilleures. Les ZS qui ont rapporte beaucoup de cas sont:Kayamba,Malemba, Kinkondja,Mulongo,Kabongo. Les ZS qui ont eu des performances moindres comparativement sont:Kitenge,Kamina,Kabondo Dianda,Baka et Kinda
- Number of postpartum/newborn visits within three days of birth in USG-supported programs [2.1.6]


Au dernier trimestre, environ 600 femmes n’ont pas amene leurs enfants pour la visite medicale en deans 3 jours. La tendance au long cours montre que depuis le deuxieme trimestre 2019, cet indicateur connait une croissance d’environ 8% chaque trimestre. l’allure de la courbe est similaire a celle du nombre de femmes qui recoivent des uterotoniques a la troisieme phase de leur accouchement. Les ZS qui ont rapporte plus de cas sont:Mulongo,Malemba,Kabongo,Bukama et Kinkondja. Les ZS qui ont rapporte moins de cas sont:Baka,Kinda,Kayamba,Butumba,Songa.
- Drop-out rate in DTP-HepB-Hib3 among children less than 12 months of age [2.1.9]
LS0tDQp0aXRsZTogIkFuYWx5c2VfRG9ubmVlc19Bbm51YWxfcXVhcnRlcl9ITCINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFLGVjaG89RixmaWcuYWxpZ249ImNlbnRlciJ9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFKQ0KYGBgDQoNCiZuYnNwOw0KDQoNCiMjIDMuIFJFUE9SVElORyBCWSBQUk9HUkFNIEFSRUENCiZuYnNwOw0KDQpgYGB7cixlY2hvPUYsbWVzc2FnZT1GfQ0KZGF0YWI8LXJlYWQuY3N2KCJEYXRhYl9hbm51YWxfcXVhcnRlci5jc3YiKQ0KI2RhdGFjPC1yZWFkLmNzdigiREFUQUMuY3N2IikNCiNkYXRhYjwtZGF0YWMNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShSQ29sb3JCcmV3ZXIpDQogDQpuYW1lcyhkYXRhYilbNjo4XTwtcGFzdGUwKCJTUCIsMTozKQ0KbmFtZXMoZGF0YWIpWzI1OjI2XTwtcGFzdGUwKCJwYWx1IixjKCJzIiwiZyIpLHNlcD0iXyIpDQpuYW1lcyhkYXRhYilbMjA6MjFdPC1wYXN0ZTAoIkRpYXJyX3NldiIsMToyKQ0KDQojZGF0YWIkcGVyaW9kbmFtZTwtcGFzdGUwKG1hdGNoKGRhdGFiJHBlcmlvZG5hbWUsYygiQXZyaWwiLCJNYWkiLCJKdWluIiwiSnVpbGxldCIsIkFvw7t0IiwiU2VwdGVtYnJlIikpLCIuIixkYXRhYiRwZXJpb2RuYW1lKQ0KZGF0YWc8LWRhdGFiDQojW2RhdGFiJHBlcmlvZG5hbWUgJWluJSAjYygiNC5KdWlsbGV0IiwiNS5Bb8O7dCIsIjYuU2VwdGVtYnJlIiksXQ0KDQpuYW1lcyhkYXRhYilbMzE6MzVdPC1wYXN0ZTAoIk1pbGRDcHMiLDE6NSkNCg0KDQpkYXRhZzwtYWdncmVnYXRlKGRhdGFnWyw0Om5jb2woZGF0YWcpXSxsaXN0KGRhdGFnJHpzLGRhdGFnJHBlcmlvZG5hbWUpLHN1bSxuYS5ybT1UKQ0KbmFtZXMoZGF0YWcpWzE6Ml08LWMoInpzIiwicGVyaW9kbmFtZSIpDQpuYW1lcyhkYXRhZylbM108LSJDUE4iDQpuYW1lcyhkYXRhYilbNF08LSJDUE4iDQpuYW1lcyhkYXRhZylbNF08LSJDUE40Ig0KbmFtZXMoZGF0YWIpWzVdPC0iQ1BONCINCg0KdG90MiA8LSBmdW5jdGlvbih4ZCl7DQogIHA8LWMoYXMuY2hhcmFjdGVyKHhkWywxXSksJ1RvdGFsJykNCiAgYTwtYXBwbHkoeGRbLDI6bmNvbCh4ZCldLDIsc3VtLG5hLnJtPVQpDQogIGE8LXJiaW5kKHhkWywyOm5jb2woeGQpXSxhKQ0KICB1PC1kYXRhLmZyYW1lKHAsYSkNCiAgbmFtZXModSlbMV08LSJNb2lzIg0KICBhc3NpZ24oInRvdGFsIix1LGVudmlyPS5HbG9iYWxFbnYpDQp9DQoNCmNpYmxlczwtcmVhZC5jc3YoIkM6L1VzZXJzL011eXVuZ2FQL0RvY3VtZW50cy9QUk9TQU5JIFVTQUlEL1FVQVJURVIgUkVQT1JUL1kyIFJFUE9SVC9DSUJMRVMyLmNzdiIpDQpjaWJsZWE8LXJlYWQuY3N2MigiQzovVXNlcnMvTXV5dW5nYVAvRG9jdW1lbnRzL1BST1NBTkkgVVNBSUQvQU5BTFlTSVMvWTIvY2libGVzLmNzdiIpDQoNCmNsdXM8LWRhdGEuZnJhbWUoenM9dW5pcXVlKGRhdGFiJHpzKSkNCmNsdXMkcG9wPC1pZmVsc2UoY2x1cyR6cyVpbiVjKCJCYWthIiwiS2F5YW1iYSIsIktpbmRhIiwiTHdhbWJhIiksIjFMb3ciLGlmZWxzZShjbHVzJHpzJWluJWMoIkJ1dHVtYmEiLCJLYWJvbmRvRCIsIkthbWluYSIsIktpbmtvbmRqYSIsIk11a2FuZ2EiLCJTb25nYSIpLCIyTWlkZGxlIiwiM0hpZ2giKSkNCmNsdXM8LWNsdXNbb3JkZXIoY2x1cyR6cyksXQ0KDQoNCmBgYA0KICAgIA0KDQojIyBNQUxBUklBDQoNCiZuYnNwOw0KDQoNCiZuYnNwOw0KLSAqKk51bWJlciBvZiBjaGlsZHJlbiB1bmRlciA1IHllYXJzIG9mIGFnZSB3aXRoIGNvbmZpcm1lZCBtYWxhcmlhIHdobyByZWNlaXZlZCB0cmVhdG1lbnQgZm9yIG1hbGFyaWEgZnJvbSBhbiBhcHByb3ByaWF0ZSBwcm92aWRlciBpbiBVU0ctc3VwcG9ydGVkIGFyZWFzIFsxNSBmZWUgcHJveHldKiogIA0KDQombmJzcDsNCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiOTQwNyIpLGMoIjc0NDMwIiksYygiMTI2LjQiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUiKSkNCg0KYGBgDQoNCiZuYnNwOw0KDQpgYGB7cixyZXN1bHRzPSJoaWRlIn0NCmE8LWRhdGFnDQphJHBhbHU8LXJvd1N1bXMoYVssMjQ6MjVdKQ0KYTwtYWdncmVnYXRlKGFbLGMoMjAsNjYpXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtcm91bmQoY2libGVzJFBhbHVkaXNtZVszXS8xMikNCnRvdDIoYSkNCnRvdGFsWywyXTwtTlVMTA0KI3RvdGFsJHBlcmNlbnQ8LXJvdW5kKHRvdGFsJHBhbHUqMTAwL3RvdGFsJGNpYmxlLDApDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NyJykNCmI8LWRhdGFiDQpiJHBhbHU8LXJvd1N1bXMoYlssMjU6MjZdLG5hLnJtPVQpDQojZGF0YWckUGFsdTwtcm93U3VtcyhkYXRhZ1ssMjA6MjFdLG5hLnJtPVQpDQpkYXRhZyU+JWdyb3VwX2J5KHpzKSU+JXN1bW1hcmlzZShQYWx1PXN1bShwYWx1c18rcGFsdWdfKSktPnANCg0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PVBhbHUsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1QYWx1KSxjZXg9Myx2anVzdD0yKStzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJZbE9yQnIiKQ0KDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoUGFsdT1zdW0ocGFsdSkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1QYWx1KSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKFBhbHUsMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg2NTAwMCwxMzAwMDApKQ0KICANCiAgI2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5JyxmaWxsPSJsaWdodGJsdWUiLGNvbD0idG9tYXRvIixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1QYWx1KSxjZXg9Myx2anVzdD0yKQ0KDQpgYGANCiZuYnNwOw0KJm5ic3A7DQpEZXB1aXMgbGUgUTQgMjAxOSwgbGEgcHJvdmluY2UgZHUgSGF1dCBMb21hbWkgdHJhaXRlIHBsdXMgZGUgMTAwMDAwIGNhcyBkZSBwYWx1ZGlzbWUgY2hleiBsZXMgZW5mYW50cyBkZSBtb2lucyBkZSA1IGFucy4gTGVzIFpTIGxlcyBwbHVzIHRvdWNoZWVzIHNvbnQ6S2lua29uZGphLEJ1a2FtYSwgS2Fib25nbywgTWFsZW1iYSBOa3VsdSBldCBNdWxvbmdvLiBDb21wYXJhdGl2ZW1lbnQgbGVzIFpTIHF1aSBvbnQgcmFwcG9ydGUgbW9pbnMgc29udDpCYWthLEtpbmRhLFNvbmdhLEtheWFtYmEuDQotCSoqUGVyY2VudCBvZiBwcmVnbmFudCB3b21lbiB3aG8gcmVjZWl2ZWQgZG9zZXMgb2Ygc3VsZmFkb3hpbmUvIHB5cmltZXRoYW1pbmUgKFMvUCkgZm9yIEludGVybWl0dGVudCBQcmV2ZW50aXZlIFRyZWF0bWVudCAoSVBUKSBkdXJpbmcgQU5DIHZpc2l0cyBbMi40XSoqDQoNCiZuYnNwOw0KJm5ic3A7DQoNCmBgYHtyLHJlc3VsdHM9ImhpZGUifQ0KYTwtZGF0YWcNCmEkU1A8LXJvd1N1bXMoYVssNTo3XSkNCmE8LWFnZ3JlZ2F0ZShhWyxjKDMsNTApXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtYVssMl0qMw0KdG90MihhKQ0KdG90YWxbLDJdPC1OVUxMDQojdG90YWwkcGVyY2VudDwtcm91bmQodG90YWwkU1AqMTAwL3RvdGFsJGNpYmxlLDApDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NyJykNCg0KYjwtZGF0YWINCmIkU1A8LXJvd1N1bXMoYlssNjo4XSxuYS5ybT1UKQ0KDQpkYXRhZyU+JWdyb3VwX2J5KHpzKSU+JXN1bW1hcmlzZShzcGE9c3VtKFNQMStTUDIrU1AzLG5hLnJtPVQpLGNwbmE9c3VtKENQTixuYS5ybT1UKSklPiUgbXV0YXRlKFNQPXJvdW5kKHNwYSoxMDAvKGNwbmEqMykpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PVNQLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9U1ApLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCmIlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShzcGE9c3VtKFNQMStTUDIrU1AzLG5hLnJtPVQpLGNwbmE9c3VtKENQTixuYS5ybT1UKSklPiUgbXV0YXRlKFNQPXJvdW5kKHNwYSoxMDAvKGNwbmEqMykpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9U1ApKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoU1AsMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIix5PSIlIFNQIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg1MCw5MCkpDQoNCmBgYA0KDQombmJzcDsgDQpvbiBub3RlIHVuZSBkaW1pbnV0aW9uIGRlIDQlIHBhciByYXBvcnQgYXUgdHJpbWVzdHJlIHByZWNlZGVudC4gTGUgcG91cmNlbnRhZ2UgZGVzIGZlbW1lcyBlbmNlaW50ZXMgcXVpIG9udCByZWN1IGxhIFNQIGVzdCBlbiBjcm9pc3NhbmNlIGF2ZWMgbGUgcGx1cyBncmFuZCBwaWMoODIlKSBvYnNlcnZlIGF1IFEyIDIwMjAscXVlbHF1ZXMgWlMgb250IGF0dGVpbnQgbGEgY2libGUgZGUgODAlLCBpbCBzJ2FnaXQgZGU6IE11a2FuZ2EsIE1hbGVtYmEgTmt1bHUsIEJha2EsS2F5YW1iYS4gTGVzIFpTIHF1aSBvbnQgZXRlIG1vaW5zIHBlcmZvcm1hbnRlcyBzb250OkJ1dHVtYmEsTHdhbWJhLEtpbmtvbmRqYSxLaW5kYSBldCBLYWJvbmRvIERpYW5kYQ0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiOTEuMCIpLGMoIjM3NTE4IiksYygiNDEyNDUiKSxjKCIxMDAiKSxjKCc5MS4wJykpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCdOdW1lcmF0b3InLCdEZW5vbWluYXRvcicsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpgYGANCg0KJm5ic3A7ICANCiZuYnNwOyAgDQoNCg0KIyMgTUFURVJOQUwsIE5FT05BVEFMLCBBTkQgQ0hJTEQgSEVBTFRIDQombmJzcDsNCiZuYnNwOw0KLQkqKk51bWJlciBvZiBjaGlsZHJlbiB1bmRlciBmaXZlIHllYXJzIG9mIGFnZSB0aGF0IHJlY2VpdmVkIHRyZWF0bWVudCBmb3IgYW4gYWN1dGUgcmVzcGlyYXRvcnkgaW5mZWN0aW9uIGZyb20gYW4gYXBwcm9wcmlhdGUgcHJvdmlkZXIgWzUgZmVlIHByb3h5XSoqIA0KYGBge3IsZmlnLmFsaWduPSJjZW50ZXIifQ0KYTwtZGF0YWcNCmEkUG5ldW1vbmllPC1yb3dTdW1zKGFbLDIyOjIzXSkNCmE8LWFnZ3JlZ2F0ZShhWyxjKDE4LDY2KV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCmEkY2libGU8LXJvdW5kKGNpYmxlcyRQbmV1bW9uaWVbM10vMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCiN0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCRQbmV1bW9uaWUqMTAwL3RvdGFsJGNpYmxlLDApDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NyJykNCg0KYjwtZGF0YWINCmIkcG5ldW08LXJvd1N1bXMoYlssMjM6MjRdLG5hLnJtPVQpDQoNCm5hbWVzKGRhdGFnKVsyMjoyM108LWMoIlBuZXVtb25pcyIsIlBuZXVtb25pZyIpDQpkYXRhZyU+JWdyb3VwX2J5KHpzKSU+JXN1bW1hcmlzZShwbmV1bT1zdW0oUG5ldW1vbmlzK1BuZXVtb25pZyxuYS5ybT1UKSktPnANCnAkcG9wPC1jbHVzJHBvcA0KZ2dwbG90KHAsYWVzKHg9enMseT1wbmV1bSxmaWxsPXBvcCkpK2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5Jyxjb2w9ImdyZXkiLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPXBuZXVtKSxjZXg9Myx2anVzdD0yKStzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJZbE9yQnIiKQ0KDQpuYW1lcyhiKVsyMzoyNF08LWMoIlBuZXVtb25pcyIsIlBuZXVtb25pZyIpDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UocG5ldW09c3VtKHBuZXVtLG5hLnJtPVQpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9cG5ldW0pKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQocG5ldW0sMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIix5PSJQbmV1bW9uaWUgPCA1IikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9YygxNTAwMCwzMDAwMCkpDQogIA0KICAjZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGZpbGw9ImxpZ2h0Ymx1ZSIsY29sPSJ0b21hdG8iLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPXBuZXVtKSxjZXg9Myx2anVzdD0yKQ0KYGBgDQoNCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMTk4NzIiKSxjKCIyMTU4MSIpLGMoIjkyLjEiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUoJSkiKSkNCg0KYGBgDQoNCiZuYnNwOyAgDQombmJzcDsgIA0KQSBwYXJ0aXIgZHUgdHJvaXNpZW1lIHRyaW1lc3RyZSAyMDE5LCBsZSBub21icmUgZCdlbmZhbnRzIGRlIG1vaW5zIGRlIDUgYW5zIHByaXMgZW4gY2hhcmdlIHBvdXIgbGEgcG5ldW1vbmllIGEgY29ubnUgdW4gYWNjcm9pc3NlbWVudCBjb25zaWRlcmFibGUganVzcXUnYXUgcHJlbWllciB0cmltZXN0cmUgMjAyMCxkZSBsYSBsZSBub21icmUgZGUgY2FzIHMnZXN0IHN0YWJpbGlzZSBhdXRvdXIgZGUgMjQwMDAgY2FzLiBMZXMgWlMgcXVpIG9udCByYXBwb3J0ZSBsZSBwbHVzIHNvbnQ6TWFsZW1iYSwgQnVrYW1hLCBLaW5rb25kamEsIEtpdGVuZ2UuIGNvbXBhcmF0aXZlbWVudCBsZXMgWlMgcXVpIG9udCByYXBwb3J0ZSBtb2lucyBkZSBjYXMgc29udDpCYWthLEthYm9uZ28sQnV0dW1iYSwgS2luZGEgZXQgTXVrYW5nYS4NCg0KDQoNCiZuYnNwOw0KJm5ic3A7DQoNCi0gKipOdW1iZXIgb2YgaW5zZWN0aWNpZGUtdHJlYXRlZCBuZXRzIChJVE4pIGRpc3RyaWJ1dGVkIGR1cmluZyBhbnRlbmF0YWwgYW5kL29yIGNoaWxkIGltbXVuaXphdGlvbiB2aXNpdHMqKg0KDQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjIyOTU4IiksYygiMjYwNDUiKSxjKCI4OC4xIikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlKCUpIikpDQoNCmI8LWRhdGFiDQpiJE1pbGQ8LXJvd1N1bXMoYlssMzA6MzZdLG5hLnJtPVQpDQpuYW1lcyhkYXRhZylbMjk6MzVdPC1wYXN0ZTAoIm1pbGQiLDE6NykNCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKE1pbGQ9c3VtKG1pbGQxK21pbGQyK21pbGQzK21pbGQ0K21pbGQ1K21pbGQ2K21pbGQ3KSktPnANCnAkcG9wPC1jbHVzJHBvcA0KZ2dwbG90KHAsYWVzKHg9enMseT1NaWxkLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9TWlsZCksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKE1pbGQ9c3VtKE1pbGQpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9TWlsZCkpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChNaWxkLDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIsdGl0bGU9Ik1JSUxEIiwgeT0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9YygyMDAwMCw3MDAwMCkpDQoNCmBgYA0KDQombmJzcDsNCiZuYnNwOw0KUGFyIHJhcHBvcnQgYXUgdHJpbWVzdHJlIHByZWNlZGVudCwgaWwgeSBhIHVuZSBkaW1pbnV0aW9uIGRlIDMxJS4gbGEgdGVuZGFuY2UgYW5udWVsbGUgbW9udHJlIGRlcyBpcnJlZ3VsYXJpdGUgYXUgY291cnMgZGUgbCdhbm5lZSwgbGUgMyBlbWUgdHJpbWVzdHJlIDIwMTkgZXQgbGUgZGV1eGllbWUgdHJpbWVzdHJlIDIwMjAgc29udCBjZXV4IG91IGxlcyBwaWNzIG9udCBldGUgcGx1cyBlbGV2ZS4gTGVzIFpTIHF1aSBvbnQgZGlzdHJpYnVlIHBsdXMgZGUgTWlsZHMgc29udDpLYW1pbmEsIEtpbmtvbmRqYSwgTXVsb25nbyxLYWJvbmRvIERpYW5kYSBldCBLYWJvbmdvLiBMZXMgWlMgb3UgbGEgZGlzdHJpYnV0aW9uIGEgZXRlIGZhaWJsZSBzb250Okx3YW1iYSxLaW5kYSxCYWthLEtheWFtYmEgZXQgQnV0dW1iYQ0KDQombmJzcDsNCg0KLQkqKk51bWJlciBvZiBjYXNlcyBvZiBjaGlsZCBkaWFycmhlYSB0cmVhdGVkIGluIFVTRy1zdXBwb3J0ZWQgcHJvZ3JhbXMgWzcgZmVlIHByb3h5XSoqDQombmJzcDsNCmBgYHtyfQ0KYTwtZGF0YWcNCmEkRGlhcnJoZWU8LXJvd1N1bXMoYVssMjE6MjNdKQ0KYTwtYWdncmVnYXRlKGFbLGMoMTUsNjYpXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtcm91bmQoY2libGVzJERpYXJyaGVlWzNdLzEyKQ0KdG90MihhKQ0KdG90YWxbLDJdPC1OVUxMDQojdG90YWwkcGVyY2VudDwtcm91bmQodG90YWwkRGlhcnJoZWUqMTAwL3RvdGFsJGNpYmxlLDApDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NyJykNCg0KYjwtZGF0YWINCmIkRGlhcnJoPC1yb3dTdW1zKGJbLDIwOjIyXSxuYS5ybT1UKQ0KbmFtZXMoYilbMjJdPC0iZGlhcyINCm5hbWVzKGRhdGFnKVsyMV08LSJkaWFzIg0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoRGlhcnJoPXN1bShEaWFycl9zZXYxK0RpYXJyX3NldjIrZGlhcyxuYS5ybT1UKSktPnANCnAkcG9wPC1jbHVzJHBvcA0KZ2dwbG90KHAsYWVzKHg9enMseT1EaWFycmgsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1EaWFycmgpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCmIlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShEaWFycmg9c3VtKERpYXJyaCkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1EaWFycmgpKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoRGlhcnJoLDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIseT0iIix0aXRsZT0iRGlhcnJoZWUgPCA1IGFucyIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2Nvb3JkX2NhcnRlc2lhbih5PWMoMjAwMDAsNDAwMDApKQ0KDQoNCmBgYA0KDQpMZSBub21icmUgZGUgY2FzIGRlIGRpYXJyaGVlIGEgdW5lIGV2b2x1dGlvbiBjeWNsaXF1ZSBkJ3VuZSBwZXJpb2RlIGRlIDYgbW9pcyBhdmVjIHVuIHJlYm9uZCBkJ2Vudmlyb24gMTMlIHBhciByYXBwb3J0IGF1IHNlbWVzdHJlIHByZWNlZGVudC4gbGVzIHRyaW1lc3RyZXMgbGVzIHBsdXMgY29uY2VybmVzIHBhciBsZSByZWJvbmQgc29udCBsZSBkZXV4aWVtZSBldCBsZSBxdWF0cmllbWUuIExlcyBaUyBxdWkgb250IHJhcHBvcnRlIHBsdXMgZGUgY2FzIHNvbnQ6TXVsb25nbyxNYWxlbWJhLEtpbmtvbmRqYSwgS2Fib25nbyBldCBCdWthbWEuIGNvbXBhcmF0aWVtZW50IGxlcyBaUyBxdWkgb250IHJhcHBvcnRlIG1vaW5zIGRlIGNhcyBzb250OkJha2EsS2luZGEsTHdhbWJhLE11a2FuZ2EgZXQgS2FtaW5hLg0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCIyNTU0MyIpLGMoIjI1NDg2IiksYygiMTAwLjIiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUiKSkNCg0KYGBgDQoNCg0KJm5ic3A7DQoNCg0KJm5ic3A7DQombmJzcDsNCg0KDQotCSoqTnVtYmVyIG9mIGNoaWxkcmVuIGxlc3MgdGhhbiAxMiBtb250aHMgb2YgYWdlIHdobyByZWNlaXZlZCB0aHJlZSBkb3NlcyBvZiBwZW50YXZhbGVudCB2YWNjaW5lIFs5IGZlZSBwcm94eV0qKg0KJm5ic3A7DQpgYGB7cixmaWcuYWxpZ249ImNlbnRlciJ9DQphPC1kYXRhZw0KYSRQZW50YTwtcm93U3VtcyhhWyw0MTo0M10pDQphPC1hZ2dyZWdhdGUoYVssYyg0MSw2NildLGxpc3QoYSRwZXJpb2RuYW1lKSxzdW0sbmEucm09VCkNCmEkY2libGU8LXJvdW5kKGNpYmxlcyRQZW50YVszXS8xMikNCnRvdDIoYSkNCnRvdGFsWywyXTwtTlVMTA0KI3RvdGFsJHBlcmNlbnQ8LXJvdW5kKHRvdGFsJFBlbnRhKjEwMC90b3RhbCRjaWJsZSwwKQ0KI2tuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQoNCmI8LWRhdGFiDQpiJFBlbnRhPC1yb3dTdW1zKGJbLDI3OjI5XSxuYS5ybT1UKQ0KbmFtZXMoZGF0YWcpWzI2OjI4XTwtcGFzdGUwKCJQZW50YSIsMTozKQ0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoUGVudGE9c3VtKFBlbnRhMStQZW50YTIrUGVudGEzKSktPnANCnAkcG9wPC1jbHVzJHBvcA0KZ2dwbG90KHAsYWVzKHg9enMseT1QZW50YSxmaWxsPXBvcCkpK2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5Jyxjb2w9ImdyZXkiLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPVBlbnRhKSxjZXg9Myx2anVzdD0yKStzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJZbE9yQnIiKQ0KDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoUGVudGE9c3VtKFBlbnRhKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PVBlbnRhKSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKFBlbnRhLDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIseT0iIix0aXRsZT0iVkFDQ0lOIFBFTlRBVkFMRU5UIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9YygzMDAwMCw0MDAwMCkpDQogIA0KYGBgDQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjMwNjUyIiksYygiMzEzNTMiKSxjKCI5Ny44IikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlIikpDQoNCmBgYA0KDQombmJzcDsgIA0KJm5ic3A7ICANCg0KRW52aXJvbiA4MDAgZW5mYW50cyBuJ29udCBwYXMgcmVjdSBkZSB2YWNjaW4gcGVudGF2YWxlbnQgYXUgY291cnMgZHUgZGVybmllciB0cmltZXN0cmUgY29tcGFyYXRpdmVtZW50IGEgY2VsdWkgcXVpIHByZWNlZGUuIEEgcGFydGlyIGR1IHRyb2lzaWVtZSB0cmltZXN0cmUgMjAxOSwgbGEgdmFjY2luYXRpb24gYXUgcGVudGF2YWxlbnQgYSBjb25udSB1biByZWJvdW5kLCBsYSBtb3llbm5lIGF1IGNvdXJzIGRlIDUgZGVybmllcnMgdHJpbWVzdHJlcyBzZXJhaXQgZGUgMzU0MDcuIGxlcyBaUyBxdWkgb250IHJhcHBvcnRlIGxlIHBsdXMgZGUgY2FzIHNvbnQ6IE11bG9uZ28sIE1hbGVtYmEsIEthYm9uZ28sIEJ1a2FtYSBldCBLYW1pbmEuIExlcyBaUyBxdWkgb250IHJhcHBvcnRlIG1vaW5zIGRlIGNhcyBzb250OkJha2EsS2F5YW1iYSxLaW5kYSxMd2FtYmEgZXQgQnV0dW1iYS4NCi0JKipQZXJjZW50IG9mIGNoaWxkcmVuIGxlc3MgdGhhbiAxMiBtb250aHMgb2YgYWdlIHdobyByZWNlaXZlZCBtZWFzbGVzIHZhY2NpbmUgZnJvbSBVU0ctc3VwcG9ydGVkIHByb2dyYW1zIFsxMF0qKg0KJm5ic3A7DQpgYGB7cixmaWcuYWxpZ249ImNlbnRlciJ9DQphPC1kYXRhZw0KYSRWQVI8LXJvd1N1bXMoYVssMzE6MzNdKQ0KYTwtYWdncmVnYXRlKGFbLGMoMzEsNTApXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtcm91bmQoY2libGVzJFZBUlszXS8xMikNCnRvdDIoYSkNCnRvdGFsWywyXTwtTlVMTA0KI3RvdGFsJHBlcmNlbnQ8LXJvdW5kKHRvdGFsJFZBUioxMDAvdG90YWwkY2libGUsMCkNCiNrbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY3InKQ0KDQpiPC1kYXRhYg0KYiRWYXI8LXJvd1N1bXMoYlssNDI6NDRdLG5hLnJtPVQpDQpuYW1lcyhkYXRhZylbNDE6NDNdPC1wYXN0ZTAoIlZhciIsMTozKQ0KbmFtZXMoZGF0YWcpWzQ3XTwtInBvcCINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKFZhcmE9c3VtKFZhcjErVmFyMitWYXIzLG5hLnJtPVQpLHBvcGE9c3VtKHBvcCxuYS5ybT1UKSklPiUgbXV0YXRlKFZhcj1yb3VuZChWYXJhKjEyMDAwMC8ocG9wYSoxMikpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PVZhcixmaWxsPXBvcCkpK2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5Jyxjb2w9ImdyZXkiLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPVZhciksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KbmFtZXMoYilbNDI6NDRdPC1wYXN0ZTAoIlZhciIsMTozKQ0KbmFtZXMoYilbNDhdPC0icG9wIg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKFZhcmE9c3VtKFZhcixuYS5ybT1UKSxwb3BhPXN1bShwb3AsbmEucm09VCkpJT4lIG11dGF0ZShWYXI9cm91bmQoVmFyYSkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1WYXIpKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoVmFyLDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIseT0iIix0aXRsZT0iJSBWQVIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDMwMDAwLDQwMDAwKSkNCg0KYGBgDQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjMxNDA4IiksYygiMzAxNjgiKSxjKCI5Ni4xIikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlIikpDQoNCmBgYA0KDQombmJzcDsgIA0KIEF1IGRlcm5pZXIgdHJpbWVzdHJlLCBpbCB5YSBldSBlbnZpcm9uIDcwMCBlbmZhbnRzIG5vbiB2YWNjaW5lcyBwYXIgcmFwcG9ydCBhdSB0cmltZXN0cmUgcHJlY2VkZW50LmNlcGVuZGFudCBjZSBzb250IGNlcyBkZXV4IGRlcm5pZXJzIHRyaW1lc3RyZXMgcGVuZGFudCBsZXNxdWVscyBsZXMgcGVyZm9ybWFuY2VzIG9udCBldGUgbGVzIG1laWxsZXVycyBkZSBsJ2FubmVlLiBMZXMgWlMgbGVzIHBsdXMgcGVyZm9ybWFudGVzIHNvbnQ6S2FtaW5hLCBNdWthbmdhLFNvbmdhLE11bG9uZ28gZXQgQnV0dW1iYS5Db21wYXJhdGl2ZW1lbnQgbGVzIFpTIG1vaW5zIHBlcmZvcm1hbnRlcyBzb250OkthbmlhbWEsS2luZGEsS2l0ZW5nZSxLYWJvbmRvIGV0IEJ1a2FtYS4NCiZuYnNwOw0KJm5ic3A7DQoNCi0gKipQZXJjZW50YWdlIG9mIHByZWduYW50IHdvbWVuIGF0dGVuZGluZyBhdCBsZWFzdCBvbmUgYW50ZW5hdGFsIGNhcmUgKEFOQykgdmlzaXQgd2l0aCBhIHNraWxsZWQgIHByb3ZpZGVyIGZyb20gVVNHLSBzdXBwb3J0ZWQgaGVhbHRoIGZhY2lsaXRpZXMqKg0KJm5ic3A7DQpgYGB7cixmaWcuYWxpZ249ImNlbnRlciJ9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiOTEiKSxjKCIzNzUxOCIpLGMoIjQxMjQ1IiksYygiMTAwIiksYygiOTEiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIk51bWVyYXRvciIsIkRlbm9taW5hdG9yIiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlKCUpIikpDQoNCmI8LWRhdGFiDQojYiRWYXI8LXJvd1N1bXMoYlssNDI6NDRdLG5hLnJtPVQpDQojbmFtZXMoZGF0YWcpWzQxOjQzXTwtcGFzdGUwKCJWYXIiLDE6MykNCiNuYW1lcyhkYXRhZylbNDddPC0icG9wIg0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoY3BuYT1zdW0oQ1BOLG5hLnJtPVQpLHBvcGE9c3VtKHBvcCxuYS5ybT1UKSklPiUgbXV0YXRlKENQTj1yb3VuZChjcG5hKjEyMDAwMC8ocG9wYSo0KSkpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9Q1BOLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9Q1BOKSxjZXg9Myx2anVzdD0yKStzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJZbE9yQnIiKQ0KDQojbmFtZXMoYilbNDI6NDRdPC1wYXN0ZTAoIlZhciIsMTozKQ0KbmFtZXMoYilbNDhdPC0icG9wIg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKGNwbmE9c3VtKENQTixuYS5ybT1UKSxwb3BhPXN1bShwb3AsbmEucm09VCkpJT4lIG11dGF0ZShDUE49cm91bmQoY3BuYSoxMjAwMDAvKHBvcGEqMTIpKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PUNQTikpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChDUE4sMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIix5PSIiLHRpdGxlPSIlIENQTjEiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDgwLDE0MCkpDQoNCmBgYA0KDQombmJzcDsgIA0KJm5ic3A7ICANCklsIHkgYSB1bmUgYXVnbWVudGF0aW9uIGRlIDElIHBhciByYXBwb3J0IGF1IHRyaW1lc3RyZSBhbnRlcmlldXIsIGNlcGVuZGFudCBsYSB0ZW5kYW5jZSBhbm51ZWxsZSBtb250cmUgdW4gbGVnZXIgYWNjcm9pc3NlbWVudCBkdSAlIGRlIGZlbW1lcyBxdWkgZnJlcXVlbnRlbnQgbGEgQ1BOMSBzdXJ0b3V0IGRhbnMgbGVzIFpTIHN1aXZudGVzOk11bG9uZ28sTHdhbWJhLEtpbmtvbmRqYSxCdWthbWEsIEJ1dHVtYmEgcXVpIHNvbnQgYXUgZGVsYSBkZSAxMDAlIGRlIGxhIGNpYmxlIGF0dGVuZHVlIGRlIDEwMCUuIExlcyBaUyBhIGZhaWJsZXMgcGVyZm9ybWFuY2VzIHNvbnQgQmFrYSwgS2luZGEsIEthYm9uZ28sS2Fib25kbyBEaWFuZGEuIA0KJm5ic3A7DQoNCi0JKipQZXJjZW50YWdlIG9mIHByZWduYW50IHdvbWVuIGF0dGVuZGluZyBhdCBsZWFzdCBvbmUgYW5kIGF0IGxlYXN0IDQgYW50ZW5hdGFsIGNhcmUgKEFOQykgd2l0aCBhIHNraWxsZWQgcHJvdmlkZXIgZnJvbSBVU0ctc3VwcG9ydGVkIGhlYWx0aCBmYWNpbGl0aWVzIFsxMiBmZWVdKioNCiZuYnNwOw0KYGBge3J9DQphPC1kYXRhZw0KYSRDUE5fNDwtYVssNF0NCmE8LWFnZ3JlZ2F0ZShhWyxjKDQsNTApXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtcm91bmQoY2libGVzJENQTjRbM10vMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCiN0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCRDUE5fNCoxMDAvdG90YWwkY2libGUsMCkNCiNrbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY3InKQ0KDQpiPC1kYXRhYg0KI2IkVmFyPC1yb3dTdW1zKGJbLDQyOjQ0XSxuYS5ybT1UKQ0KI25hbWVzKGRhdGFnKVs0MTo0M108LXBhc3RlMCgiVmFyIiwxOjMpDQojbmFtZXMoZGF0YWcpWzQ3XTwtInBvcCINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKGNwbmE9c3VtKENQTjQsbmEucm09VCkscG9wYT1zdW0ocG9wLG5hLnJtPVQpKSU+JSBtdXRhdGUoQ1BOND1yb3VuZChjcG5hKjEyMDAwMC8ocG9wYSoxMikpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PUNQTjQsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1DUE40KSxjZXg9Myx2anVzdD0yKStzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJZbE9yQnIiKQ0KDQojbmFtZXMoYilbNDI6NDRdPC1wYXN0ZTAoIlZhciIsMTozKQ0KbmFtZXMoYilbNDhdPC0icG9wIg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKGNwbmE9c3VtKENQTjQsbmEucm09VCkscG9wYT1zdW0ocG9wLG5hLnJtPVQpKSU+JSBtdXRhdGUoQ1BOND1yb3VuZChjcG5hKjEyMDAwMC8ocG9wYSoxMikpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9Q1BONCkpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChDUE40LDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIseT0iIix0aXRsZT0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg0MCwxMDApKQ0KDQpgYGANCg0KJm5ic3A7DQombmJzcDsNCg0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCIxOTg2MCIpLGMoIjE3ODk3IiksYygiMTExIikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlIikpDQoNCmBgYA0KDQombmJzcDsNCg0KLQkqKlBlcmNlbnRhZ2Ugb2YgZGVsaXZlcmllcyB3aXRoIGFuIFNCQSBpbiBVU0ctc3VwcG9ydGVkIGZhY2lsaXRpZXMqKiAgDQoNCmBgYHtyfQ0KYTwtZGF0YWcNCmEkQWNjPC1hWyw4XQ0KYTwtYWdncmVnYXRlKGFbLGMoOCwzNyw1MCldLGxpc3QoYSRwZXJpb2RuYW1lKSxzdW0pDQp0b3QyKGEpDQojdG90YWwkQWNjX1A8LXJvdW5kKHRvdGFsJEFjYyoxMjAwLyh0b3RhbFssM10qLjA0KSwwKQ0KdG90YWwkY2libGU0PC1yb3VuZCh0b3RhbFssM10qLjA0LzEyKQ0KdG90YWxbLDI6M108LU5VTEwNCnRvdGFsJGNpYmxlPTkwDQojdG90YWw8LXRvdGFsWyxjKDEsMiw0LDUsMyldDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIk1vaXMiLCJBY2NBc3Npc3QiLCJDaWJsZTQiLCJDaWJsZTkwIiwiJSIpKQ0KDQpiPC1kYXRhYg0KI2IkVmFyPC1yb3dTdW1zKGJbLDQyOjQ0XSxuYS5ybT1UKQ0KbmFtZXMoZGF0YWcpWzhdPC0iQWNjb3VjaF9hc3MiDQpuYW1lcyhkYXRhZylbNjJdPC0iQWNjb3VjaCINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKEFjY291Y2hhPXN1bShBY2NvdWNoX2FzcyxuYS5ybT1UKSxhY2NhPXN1bShBY2NvdWNoLG5hLnJtPVQpKSU+JSBtdXRhdGUoQWNjb3VjaF9hc3M9cm91bmQoQWNjb3VjaGEqMTAwL2FjY2EpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PUFjY291Y2hfYXNzLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9QWNjb3VjaF9hc3MpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCm5hbWVzKGIpWzldPC0iQWNjb3VjaF9hc3MiDQpuYW1lcyhiKVs2M108LSJBY2NvdWNoIg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKEFjY291Y2hhPXN1bShBY2NvdWNoX2FzcyxuYS5ybT1UKSxhY2NhPXN1bShBY2NvdWNoLG5hLnJtPVQpKSU+JSBtdXRhdGUoQWNjb3VjaF9hc3M9cm91bmQoQWNjb3VjaGEqMTAwL2FjY2EpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9QWNjb3VjaF9hc3MpKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoQWNjb3VjaF9hc3MsMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIix5PSIiLHRpdGxlPSIlIEFjY291Y2hlbWVudHMgYXNzaXN0w6lzIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg0MCwxNDApKQ0KDQpgYGANCm5iJnA7DQpvbiBub3RlIHVuZSBhdWdtZW50YXRpb24gZGUgMSUgcGFyIHJhcHBvcnQgYXUgdHJpbWVzdHJlIGFudGVyaWV1cmUuIGxhIHRlbmRhbmNlIGFubnVlbGxlIG1vbnRyZSB1biBsZWdlciBhY2Nyb2lzc2VtZW50IGRlIGNldCBpbmRpY2F0ZXVyIHBhciByYXBwb3J0IGEgc29uIG5pdmVhdSBkZSAyMDE5LiBMZXMgcXVpIHNvbnQgcGx1cyBwZXJmb3JtYW50ZXMgc29udDpCYWthLEtpdGVuZ2UsTXVsb25nbyxLYW5pYW1hIGV0IEtheWFtYmEuIExlcyBaUyBtb2lucyBwZXJmb3JtYW50ZXMgc29udDpCdXR1bWJhLEthYm9uZG8sU29uZ2EsS2Fib25nbyBldCBLYW1pbmEuDQoNCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiNzYiKSxjKCIzMTM2NCIpLGMoIjQxMjQ1IiksYygiOTAiKSxjKCI4NC41IikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiUTEgQWNoaWV2ZW1lbnQiLCJOdW1lcmF0b3IiLCJEZW5vbWluYXRvciIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpgYGANCg0KJm5ic3A7DQoNCiZuYnNwOw0KDQotCSoqTnVtYmVyIG9mIHdvbWVuIGdpdmluZyBiaXJ0aCB3aG8gcmVjZWl2ZWQgdXRlcm90b25pY3MgaW4gdGhlIHRoaXJkIHN0YWdlIG9mIGxhYm9yIChPUiBpbW1lZGlhdGVseSBhZnRlciBiaXJ0aCkgdGhyb3VnaCBVU0ctc3VwcG9ydGVkIHByb2dyYW1zIFsyLjEuNF0qKg0KJm5ic3A7DQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjE1ODQiKSxjKCIyMTc4IiksYygiNzIuNyIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpiPC1kYXRhYg0KbmFtZXMoYilbMTBdPC0iR0FUUEEiDQpuYW1lcyhkYXRhZylbOV08LSJHQVRQQSINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKEdBVFBBPXN1bShHQVRQQSkpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9R0FUUEEsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1HQVRQQSksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKEdBVFBBPXN1bShHQVRQQSxuYS5ybT1UKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PUdBVFBBKSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKEdBVFBBLDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIsIHk9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2Nvb3JkX2NhcnRlc2lhbih5PWMoMTAwMCw0MDAwKSkNCmBgYA0KDQombmJzcDsNCiZuYnNwOw0KSWwgeWEgZXUgMTAwIGZlbW1lcyBkZSBwbHVzIHF1aSBvbnQgcmVjdSBsYSBHQVRQQSBwYXIgcmFwcG9ydCBhdSB0cmltZXN0cmUgcHJlY2VkZW50LiBsJ2V2b2x1dGlvbiBhbm51ZWxsZSBtb250cmUgcXVlIGNldCBpbmRpY2F0ZXVyIGEgY29ubnUgdW5lIGNyb2lzc2FuY2UgZCdlbnZpcm9uIDIzJSBhIHBhcnRpciBkdSB0cm9pc2llbWUgdHJpbWVzdHJlIDIwMTkuIExlcyBaUyBxdWkgb250IHJhcHBvcnRlIHBsdXMgZGUgY2FzIHNvbnQ6S2l0ZW5nZSxCdWthbWEsS2Fib25nbyxLYW5pYW1hIGV0IE11bG9uZ28uTGVzIFpTIHF1aSBvbnQgcmFwcG9ydGUgbW9pbnMgc29udDpCdWthbWEsIE11a2FuZ2EsIEtheWFtYmEsQmFrYSxTb25nYS4NCg0KLQkqKk51bWJlciBhbmQgcGVyY2VudGFnZSBvZiBuZXdib3JucyByZWNlaXZpbmcgZXNzZW50aWFsIG5ld2Jvcm4gY2FyZSB0aHJvdWdoIFVTRy1zdXBwb3J0ZWQgcHJvZ3JhbXMqKg0KDQpgYGB7cn0NCmE8LWRhdGFnDQphJFNvaW5zX2VzczwtYVssMjldDQphPC1hZ2dyZWdhdGUoYVssYyg5LDI5LDUwKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCnRvdDIoYSkNCnRvdGFsJGNpYmxlPC0xMDANCiN0b3RhbCRTb2Vzc19QPC1yb3VuZCh0b3RhbCRTb2luc19lc3MqMTAwL3RvdGFsWywyXSkNCnRvdGFsWywzXTwtTlVMTA0KdG90YWwkY2libGU9MTAwDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIk1vaXMiLCJOYWlzc1ZpdiIsIlNvaW5zRXNzIiwiQ2libGUiLCIlIikpDQoNCmI8LWRhdGFiDQojYiRWYXI8LXJvd1N1bXMoYlssNDI6NDRdLG5hLnJtPVQpDQpuYW1lcyhkYXRhZylbMzhdPC0iU29lc3MiDQpuYW1lcyhkYXRhZylbMTFdPC0iTmFpc3N2Ig0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoU29lc3NhPXN1bShTb2VzcyxuYS5ybT1UKSxuYWlzc3ZhPXN1bShOYWlzc3YsbmEucm09VCkpJT4lIG11dGF0ZShTb2Vzcz1yb3VuZChTb2Vzc2EqMTAwL25haXNzdmEpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PVNvZXNzLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9U29lc3MpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCm5hbWVzKGIpWzM5XTwtIlNvZXNzIg0KbmFtZXMoYilbMTJdPC0iTmFpc3N2Ig0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKFNvZXNzYT1zdW0oU29lc3MsbmEucm09VCksbmFpc3N2YT1zdW0oTmFpc3N2LG5hLnJtPVQpKSU+JSBtdXRhdGUoU29lc3M9cm91bmQoU29lc3NhKjEwMC9uYWlzc3ZhKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PVNvZXNzKSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKFNvZXNzLDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIseT0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg0MCwxNTApKQ0KDQpgYGANCg0KJm5ic3A7DQpsJ2V2b2x1dGlvbiBkZSBsYSBwcm9wb3J0aW9uIGRlcyBlbmZhbnRzIHF1aSBvbnQgcmVjdSBkZXMgc29pbnMgZXNzZXRpZWxzIGF1IGNvdXJzIGRlIGxldXIgbmFpc3NhbmNlIGEgdW5lIGV2b2x1dGlvbiBlbiBwbGF0ZWF1LGxlcyBkZXV4IGRlcm5pZXJzIHRyaW1lc3RyZXMgc29udCBjZWxsZXMgb3UgbGVzIHBlcmZvcm1hbmNlcyBnbG9iYWxlcyBzb250IGxlcyBtZWlsbGV1cmVzLiBMZXMgWlMgcXVpIG9udCByYXBwb3J0ZSBiZWF1Y291cCBkZSBjYXMgc29udDpLYXlhbWJhLE1hbGVtYmEsIEtpbmtvbmRqYSxNdWxvbmdvLEthYm9uZ28uIExlcyBaUyBxdWkgb250IGV1IGRlcyBwZXJmb3JtYW5jZXMgbW9pbmRyZXMgY29tcGFyYXRpdmVtZW50IHNvbnQ6S2l0ZW5nZSxLYW1pbmEsS2Fib25kbyBEaWFuZGEsQmFrYSBldCBLaW5kYQ0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCI5MCIpLGMoIjEwMCIpLGMoIjg5LjkiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUiKSkNCg0KYGBgDQoNCiZuYnNwOw0KDQoNCiZuYnNwOw0KJm5ic3A7DQoNCg0KLQkqKk51bWJlciBvZiBwb3N0cGFydHVtL25ld2Jvcm4gdmlzaXRzIHdpdGhpbiB0aHJlZSBkYXlzIG9mIGJpcnRoIGluIFVTRy1zdXBwb3J0ZWQgcHJvZ3JhbXMgWzIuMS42XSoqDQoNCmBgYHtyfQ0KYTwtZGF0YWcNCmEkQ1BPTl8xPC1hWywyOF0NCmE8LWFnZ3JlZ2F0ZShhWyxjKDI4LDUwKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCmEkY2libGU8LXJvdW5kKGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKGNpYmxlcyRDUG9OMVszXSkpLzEyKQ0KdG90MihhKQ0KdG90YWxbLDJdPC1OVUxMDQojdG90YWwkcGVyY2VudDwtcm91bmQodG90YWwkQ1BPTl8xKjEwMC90b3RhbCRjaWJsZSwwKQ0KI2tuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQoNCmI8LWRhdGFiDQpuYW1lcyhkYXRhZylbMzddPC0iQ3BvbjEiDQpkYXRhZyU+JWdyb3VwX2J5KHpzKSU+JXN1bW1hcmlzZShDcG9uMT1zdW0oQ3BvbjEpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PUNwb24xLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9Q3BvbjEpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCm5hbWVzKGIpWzM4XTwtIkNwb24xIg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKENwb24xPXN1bShDcG9uMSxuYS5ybT1UKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PUNwb24xKSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKENwb24xLDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIsIHk9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2Nvb3JkX2NhcnRlc2lhbih5PWMoMjAwMDAsNDIwMDApKQ0KDQpgYGANCg0KJm5ic3A7DQpBdSBkZXJuaWVyIHRyaW1lc3RyZSwgZW52aXJvbiA2MDAgZmVtbWVzIG4nb250IHBhcyBhbWVuZSBsZXVycyBlbmZhbnRzIHBvdXIgbGEgdmlzaXRlIG1lZGljYWxlIGVuIGRlYW5zIDMgam91cnMuIExhIHRlbmRhbmNlIGF1IGxvbmcgY291cnMgbW9udHJlIHF1ZSBkZXB1aXMgbGUgZGV1eGllbWUgdHJpbWVzdHJlIDIwMTksIGNldCBpbmRpY2F0ZXVyIGNvbm5haXQgdW5lIGNyb2lzc2FuY2UgZCdlbnZpcm9uIDglIGNoYXF1ZSB0cmltZXN0cmUuIGwnYWxsdXJlIGRlIGxhIGNvdXJiZSBlc3Qgc2ltaWxhaXJlIGEgY2VsbGUgZHUgbm9tYnJlIGRlIGZlbW1lcyBxdWkgcmVjb2l2ZW50IGRlcyB1dGVyb3RvbmlxdWVzIGEgbGEgdHJvaXNpZW1lIHBoYXNlIGRlIGxldXIgYWNjb3VjaGVtZW50LiBMZXMgWlMgcXVpIG9udCByYXBwb3J0ZSBwbHVzIGRlIGNhcyBzb250Ok11bG9uZ28sTWFsZW1iYSxLYWJvbmdvLEJ1a2FtYSBldCBLaW5rb25kamEuIExlcyBaUyBxdWkgb250IHJhcHBvcnRlIG1vaW5zIGRlIGNhcyBzb250OkJha2EsS2luZGEsS2F5YW1iYSxCdXR1bWJhLFNvbmdhLg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMjgwMjgiKSxjKCIyMzU1OSIpLGMoIjExOSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSglKSIpKQ0KDQpgYGANCg0KJm5ic3A7DQogICANCiZuYnNwOw0KDQotCSoqRHJvcC1vdXQgcmF0ZSBpbiBEVFAtSGVwQi1IaWIzIGFtb25nIGNoaWxkcmVuIGxlc3MgdGhhbiAxMiBtb250aHMgb2YgYWdlIFsyLjEuOV0qKg0KDQombmJzcDsNCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMi4zIiksYygiNCIpLGMoIjE0Mi44IikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlKCUpIikpDQoNCmI8LWRhdGFiDQojYiRWYXI8LXJvd1N1bXMoYlssNDI6NDRdLG5hLnJtPVQpDQpuYW1lcyhkYXRhZylbNzU6NzddPC1wYXN0ZTAoIlBlbnRhXzEiLDE6MykNCm5hbWVzKGRhdGFnKVsyNjoyOF08LXBhc3RlMCgiUGVudGFfMyIsMTozKQ0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoUGVudGExPXN1bShQZW50YV8xMStQZW50YV8xMitQZW50YV8xMyxuYS5ybT1UKSxQZW50YTM9c3VtKFBlbnRhXzMxK1BlbnRhXzMyK1BlbnRhXzMzLG5hLnJtPVQpKSU+JSBtdXRhdGUoRHJvcD1yb3VuZCgoUGVudGExLVBlbnRhMykvUGVudGExLDIpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQojZ2dwbG90KHAsYWVzKHg9enMseT1Ecm9wLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9RHJvcCksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KbmFtZXMoYilbNzY6NzhdPC1wYXN0ZTAoIlBlbnRhXzEiLDE6MykNCm5hbWVzKGIpWzI3OjI5XTwtcGFzdGUwKCJQZW50YV8zIiwxOjMpDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoUGVudGExPXN1bShQZW50YV8xMStQZW50YV8xMitQZW50YV8xMyxuYS5ybT1UKSxQZW50YTM9c3VtKFBlbnRhXzMxK1BlbnRhXzMyK1BlbnRhXzMzLG5hLnJtPVQpKSU+JSBtdXRhdGUoRHJvcD1yb3VuZCgoUGVudGExLVBlbnRhMykvUGVudGExLDIpKS0+cA0KDQojZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PURyb3ApKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoRHJvcCwyKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLHk9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2Nvb3JkX2NhcnRlc2lhbih5PWMoMCwxLjUpKQ0KDQpgYGANCg0KJm5ic3A7ICANCg0KDQombmJzcDsNCiZuYnNwOw0KJm5ic3A7DQoNCiMjIE5VVFJJVElPTg0KDQotCU51bWJlciBvZiBpbmRpdmlkdWFscyByZWNlaXZpbmcgbnV0cml0aW9uLXJlbGF0ZWQgcHJvZmVzc2lvbmFsIHRyYWluaW5nIHRocm91Z2ggVVNHIHN1cHBvcnRlZCBudXRyaW9uIHByb2dyYW1zIFsyLjEuMTBdDQoNCi0JTnVtYmVyIG9mIGNoaWxkcmVuIHVuZGVyLWZpdmUgKDAtNTkgbW9udGhzKSByZWFjaGVkIGJ5IFVTRy1zdXBwb3J0ZWQgbnV0cml0aW9uIHByb2dyYW1zIFsyLjEuMTFdDQoNCiZuYnNwOw0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMzUzMDkxIiksYygiMTU4NDU2IiksYygiNDQuOSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSglKSIpKQ0KDQpiPC1kYXRhYg0KbmFtZXMoZGF0YWcpWzQwXTwtIkNQUyINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKENQUz1zdW0oQ1BTKSktPnANCnAkcG9wPC1jbHVzJHBvcA0KZ2dwbG90KHAsYWVzKHg9enMseT1DUFMsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1DUFMpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCm5hbWVzKGIpWzQxXTwtIkNQUyINCmIlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShDUFM9c3VtKENQUyxuYS5ybT1UKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PUNQUykpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChDUFMsMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIiwgeT0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9YygxMjAwMDAsMjUwMDAwKSkNCg0KYGBgDQoNCiZuYnNwOw0KRGVwdWlzIGxlIHF1YXRyaWVtZSB0cmltZXN0cmUgMjAxOSwgbGUgbm9tYnJlIGRlcyBlbmZhbnRzIHZ1IGEgbGEgQ1BTIGNvbm5haXQgdW5lIGNyb2lzc2FuY2UgZXN0aW1lIGEgNSUgY2hhcXVlIHRyaW1lc3RyZS4gTGVzIFpTIHF1aSByYXBwb3J0ZW50IHBsdXMgZGUgY2FzIHNvbnQ6TWFsZW1iYSxLaW5rb25kamEsS2FtaW5hIGV0IE11bG9uZ28uIGNvbXBhcmF0aXZlbWVudCwgQmFrYSxLYW5pYW1hLCBLaW5kYSwgTHdhbWJhIGV0IFNvbmdhIG9udCByYXBwb3J0ZSBtb2lucy4NCiZuYnNwOw0KJm5ic3A7DQombmJzcDsNCg0KIyMgUkVQUk9EVUNUSVZFIEhFQUxUSC9GQU1JTFkgUExBTk5JTkcNCiZuYnNwOw0KLQkqKk51bWJlciBvZiBuZXcgYWNjZXB0b3JzIHVzaW5nIG1vZGVybiBjb250cmFjZXB0aXZlIG1ldGhvZHMgaW4gVVNHLXN1cHBvcnRlZCBmYWNpbGl0aWVzIFszIGZlZSBwcm94eV0qKg0KDQpgYGB7cn0NCmE8LWRhdGFnDQphJEFjY2VwdDwtKGFbLDEwXSkNCmE8LWFnZ3JlZ2F0ZShhWyxjKDEwLDUwKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCmEkY2libGU8LXJvdW5kKGNpYmxlcyROb3V2ZWxsZS5hY2NlcHRhbnRlWzNdLzEyKQ0KdG90MihhKQ0KdG90YWxbLDJdPC1OVUxMDQojdG90YWwkcGVyY2VudDwtcm91bmQodG90YWwkQWNjZXB0KjEwMC90b3RhbCRjaWJsZSwwKQ0KI2tuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQoNCmI8LWRhdGFiDQpuYW1lcyhkYXRhZylbMTJdPC0iQWNjZXB0Ig0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoQWNjZXB0PXN1bShBY2NlcHQpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PUFjY2VwdCxmaWxsPXBvcCkpK2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5Jyxjb2w9ImdyZXkiLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPUFjY2VwdCksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KbmFtZXMoYilbMTNdPC0iQWNjZXB0Ig0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKEFjY2VwdD1zdW0oQWNjZXB0LG5hLnJtPVQpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9QWNjZXB0KSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKEFjY2VwdCwwKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLCB5PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDIzMDAwLDYwMDAwKSkNCg0KYGBgDQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjMzMzcyIiksYygiMjA0MDUiKSxjKCIxNjMuNSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSglKSIpKQ0KDQpgYGANCg0KJm5ic3A7DQpFbnRyZSBsZSBxdWF0cmllbWUgdHJpbWVzdHJlIDIwMTkgZXQgbGUgcHJlbWllciB0cmltZXN0cmUgMjAyMCwgbGUgbm9tYnJlIGRlIG5vdXZlbGxlcyBhY2NlcHRhbnRlcyBkZXMgbWV0aG9kZXMgY29udHJhY2VwdGl2ZXMgYSBjb25udSB1biBib25kIGRlIDI4JSBwb3VyIHNlIG1haW50ZW5pciBhIHBsdXMgZGUgNTAwMDAgbm91dmVsbGVzIGFjY2VwdGFudGVzIGNoYXF1ZSB0cmltZXN0cmUuIExhIGNyb2lzc2FuY2UgcGVyc2lzdGUgYmllbiBxdWUgbGVnZXJlLCBhdSBjb3VycyBkdSBkZXJuaWVyIHRyaW1lc3RyZSBlbGxlIGVzdCBkZSAyJS5MZXMgWlMgcXVpIG9udCByYXBwb3J0ZSBwbHVzIGRlIGNhcyBzb250OkthYm9uZ28sIE11bG9uZ28sIE1hbGVtYmEsQnVrYW1hIGV0IEtpdGVuZ2UuIGNvbXBhcmF0aXZlbWVudCwgQmFrYSwgQnV0dW1iYSwgS2Fib25kbyxLaW5kYSBldCBLYW1pbmEgb250IHJhcHBvcnRlIG1vaW5zIGRlIGNhcy4NCiZuYnNwOw0KDQotCSoqTnVtYmVyIG9mIGNvdW5zZWxpbmcgdmlzaXRzIGZvciBGUC8gUkggYXMgcmVzdWx0IG9mIFVTRyBzdXBwb3J0IFsyLjNdKioNCg0KDQoNCg0KIyMgVFVCRVJDVUxPU0lTDQoNCi0JVEIgbm90aWZpY2F0aW9uIHJhdGUgdGhyb3VnaCBVU0ctIHN1cHBvcnRlZCBwcm9ncmFtcyBbMi4xLjE3XQ0KDQotCU51bWJlciBvZiBtdWx0aS1kcnVnIHJlc2lzdGFudCBUQiAoTURSLVRCKSBjYXNlcyBkZXRlY3RlZCBbMi4xLjIwXQ0KDQojIyBXQVRFUiwgU0FOSVRBVElPTiwgQU5EIEhZR0lFTkUNCg0KLQlOdW1iZXIgb2YgcGVvcGxlIGdhaW5pbmcgYWNjZXNzIHRvIGJhc2ljIGRyaW5raW5nIHdhdGVyIHNlcnZpY2VzIGFzIGEgcmVzdWx0IG9mIFVTRyBhc3Npc3RhbmNlIFsyLjYuMl0NCg0KLQlOdW1iZXIgb2YgcGVvcGxlIGdhaW5pbmcgYWNjZXNzIHRvIGEgYmFzaWMgc2FuaXRhdGlvbiBzZXJ2aWNlIGFzIGEgcmVzdWx0IG9mIFVTRyBhc3Npc3RhbmNlIFsyLjYuM10NCg0KIyA0LlJFUE9SVElORyBCWSBQUk9HUkFNIEFDVElWSVRJRVMNCg0KIyMgY2ZyIHJhcHBvcnQgcHJvZ3JhbW1hdGlxdWUNCg0K