3. REPORTING BY PROGRAM AREA

 

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]

 

 

   

 
 

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]

 
 

   

   

 

 

   

 
 

 

   

 
 

 

 

 

 

   

 

   

 

 

 

 

 

     

NUTRITION

 

 

     

REPRODUCTIVE HEALTH/FAMILY PLANNING

  - Number of new acceptors using modern contraceptive methods in USG-supported facilities [3 fee proxy]

 

 

TUBERCULOSIS

WATER, SANITATION, AND HYGIENE

4.REPORTING BY PROGRAM ACTIVITIES

cfr rapport programmatique

LS0tDQp0aXRsZTogIkFuYWx5c2VfRG9ubmVlc19NYWlfSEwiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRSxlY2hvPUYsZmlnLmFsaWduPSJjZW50ZXIifQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSkNCmBgYA0KDQombmJzcDsNCg0KDQojIyAzLiBSRVBPUlRJTkcgQlkgUFJPR1JBTSBBUkVBDQombmJzcDsNCg0KYGBge3IsZWNobz1GLG1lc3NhZ2U9Rn0NCmRhdGFiPC1yZWFkLmNzdigiREFUQUIuY3N2IikNCiNkYXRhYzwtcmVhZC5jc3YoIkRBVEFDLmNzdiIpDQojZGF0YWI8LWRhdGFjDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoUkNvbG9yQnJld2VyKQ0KDQojYjwtbmFtZXMoZGF0YWIpDQojYjwtZ3N1YigiXFwuKyIsIlxcLiIsYikNCiNkPC0nc29tZXRoaW5nJw0KI2ZvciAoaSBpbiAxOjUpe2RbaV08LWJbaV19DQojZm9yIChpIGluIDY6bGVuZ3RoKGIpKXsNCiAjZjwtc3Ryc3BsaXQoYltpXSwiXFwuIikNCiAgI2Y8LXVubGlzdChmKQ0KICAjZFtpXTwtcGFzdGUoZls0XSxmWzVdLGZbbGVuZ3RoKGYpXSxzZXA9Ii4iKX0NCiAjZFs0OjVdPC1nc3ViKCJbQVxcLjJcXC4xXFwuXSIsJycsZFs0OjVdKQ0KIA0KbmFtZXMoZGF0YWIpWzY6OF08LXBhc3RlMCgiU1AiLDE6MykNCm5hbWVzKGRhdGFiKVsyNToyNl08LXBhc3RlMCgicGFsdSIsYygicyIsImciKSxzZXA9Il8iKQ0KDQpuYW1lcyhkYXRhYilbMjA6MjFdPC1wYXN0ZTAoIkRpYXJyX3NldiIsMToyKQ0KDQojZGF0YWckcGVyaW9kbmFtZTwtYXMuY2hhcmFjdGVyKGRhdGFnJHBlcmlvZG5hbWUpDQojZGF0YWckcGVyaW9kbmFtZVtkYXRhZyRwZXJpb2RuYW1lPT0iSmFudmllciJdPC0iMS5KYW52Ig0KZGF0YWIkcGVyaW9kbmFtZTwtcGFzdGUwKG1hdGNoKGRhdGFiJHBlcmlvZG5hbWUsYygiRMOpY2VtYnJlIiwiSmFudmllciIsIkbDqXZyaWVyIiwiTWFycyIsIkF2cmlsIiwiTWFpIiwiSnVpbiIpKSwiLiIsZGF0YWIkcGVyaW9kbmFtZSkNCmRhdGFnPC1kYXRhYltkYXRhYiRwZXJpb2RuYW1lICVpbiUgYygiNS5BdnJpbCIsIjYuTWFpIiksXQ0KDQpuYW1lcyhkYXRhYilbMzE6MzVdPC1wYXN0ZTAoIk1pbGRDcHMiLDE6NSkNCiNzaW5rKCJOYW1lc2IudHh0IikNCiNuYW1lcyhkYXRhYikNCiNzaW5rKCkNCg0KZGF0YWc8LWFnZ3JlZ2F0ZShkYXRhZ1ssNDpuY29sKGRhdGFnKV0sbGlzdChkYXRhZyR6cyxkYXRhZyRwZXJpb2RuYW1lKSxzdW0sbmEucm09VCkNCm5hbWVzKGRhdGFnKVsxOjJdPC1jKCJ6cyIsInBlcmlvZG5hbWUiKQ0KbmFtZXMoZGF0YWcpWzNdPC0iQ1BOIg0KbmFtZXMoZGF0YWIpWzRdPC0iQ1BOIg0KbmFtZXMoZGF0YWcpWzRdPC0iQ1BONCINCm5hbWVzKGRhdGFiKVs1XTwtIkNQTjQiDQojc2luaygiTmFtZXNnLnR4dCIpDQojbmFtZXMoZGF0YWcpDQojc2luaygpDQoNCnRvdDIgPC0gZnVuY3Rpb24oeGQpew0KICBwPC1jKGFzLmNoYXJhY3Rlcih4ZFssMV0pLCdUb3RhbCcpDQogIGE8LWFwcGx5KHhkWywyOm5jb2woeGQpXSwyLHN1bSxuYS5ybT1UKQ0KICBhPC1yYmluZCh4ZFssMjpuY29sKHhkKV0sYSkNCiAgdTwtZGF0YS5mcmFtZShwLGEpDQogIG5hbWVzKHUpWzFdPC0iTW9pcyINCiAgYXNzaWduKCJ0b3RhbCIsdSxlbnZpcj0uR2xvYmFsRW52KQ0KfQ0KDQpjaWJsZXM8LXJlYWQuY3N2KCJDOi9Vc2Vycy9NdXl1bmdhUC9Eb2N1bWVudHMvUFJPU0FOSSBVU0FJRC9RVUFSVEVSIFJFUE9SVC9ZMiBSRVBPUlQvQ0lCTEVTMi5jc3YiKQ0KY2libGVhPC1yZWFkLmNzdjIoIkM6L1VzZXJzL011eXVuZ2FQL0RvY3VtZW50cy9QUk9TQU5JIFVTQUlEL0FOQUxZU0lTL1kyL2NpYmxlcy5jc3YiKQ0KDQpjbHVzPC1kYXRhLmZyYW1lKHpzPXVuaXF1ZShkYXRhYiR6cykpDQpjbHVzJHBvcDwtaWZlbHNlKGNsdXMkenMlaW4lYygiQmFrYSIsIktheWFtYmEiLCJLaW5kYSIsIkx3YW1iYSIpLCIxTG93IixpZmVsc2UoY2x1cyR6cyVpbiVjKCJCdXR1bWJhIiwiS2Fib25kb0QiLCJLYW1pbmEiLCJLaW5rb25kamEiLCJNdWthbmdhIiwiU29uZ2EiKSwiMk1pZGRsZSIsIjNIaWdoIikpDQpjbHVzPC1jbHVzW29yZGVyKGNsdXMkenMpLF0NCg0KDQpgYGANCiAgICANCg0KIyMgTUFMQVJJQQ0KDQombmJzcDsNCg0KDQombmJzcDsNCi0gKipOdW1iZXIgb2YgY2hpbGRyZW4gdW5kZXIgNSB5ZWFycyBvZiBhZ2Ugd2l0aCBjb25maXJtZWQgbWFsYXJpYSB3aG8gcmVjZWl2ZWQgdHJlYXRtZW50IGZvciBtYWxhcmlhIGZyb20gYW4gYXBwcm9wcmlhdGUgcHJvdmlkZXIgaW4gVVNHLXN1cHBvcnRlZCBhcmVhcyBbMTUgZmVlIHByb3h5XSoqICANCg0KJm5ic3A7DQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjk0MDciKSxjKCI3NDQzMCIpLGMoIjEyNi40IikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlIikpDQoNCmBgYA0KDQombmJzcDsNCg0KYGBge3IscmVzdWx0cz0iaGlkZSJ9DQphPC1kYXRhZw0KYSRwYWx1PC1yb3dTdW1zKGFbLDI0OjI1XSkNCmE8LWFnZ3JlZ2F0ZShhWyxjKDIwLDY2KV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCmEkY2libGU8LXJvdW5kKGNpYmxlcyRQYWx1ZGlzbWVbM10vMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCiN0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCRwYWx1KjEwMC90b3RhbCRjaWJsZSwwKQ0KI2tuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQpiPC1kYXRhYg0KYiRwYWx1PC1yb3dTdW1zKGJbLDI1OjI2XSxuYS5ybT1UKQ0KI2RhdGFnJFBhbHU8LXJvd1N1bXMoZGF0YWdbLDIwOjIxXSxuYS5ybT1UKQ0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoUGFsdT1zdW0ocGFsdXNfK3BhbHVnXykpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9UGFsdSxmaWxsPXBvcCkpK2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5Jyxjb2w9ImdyZXkiLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPVBhbHUpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCmIlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShQYWx1PXN1bShwYWx1KSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PVBhbHUpKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoUGFsdSwwKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDIwMDAwLDQwMDAwKSkNCiAgDQogICNnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsZmlsbD0ibGlnaHRibHVlIixjb2w9InRvbWF0byIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9UGFsdSksY2V4PTMsdmp1c3Q9MikNCg0KYGBgDQoNCi0JKipQZXJjZW50IG9mIHByZWduYW50IHdvbWVuIHdobyByZWNlaXZlZCBkb3NlcyBvZiBzdWxmYWRveGluZS8gcHlyaW1ldGhhbWluZSAoUy9QKSBmb3IgSW50ZXJtaXR0ZW50IFByZXZlbnRpdmUgVHJlYXRtZW50IChJUFQpIGR1cmluZyBBTkMgdmlzaXRzIFsyLjRdKioNCg0KJm5ic3A7DQombmJzcDsNCg0KYGBge3IscmVzdWx0cz0iaGlkZSJ9DQphPC1kYXRhZw0KYSRTUDwtcm93U3VtcyhhWyw1OjddKQ0KYTwtYWdncmVnYXRlKGFbLGMoMyw1MCldLGxpc3QoYSRwZXJpb2RuYW1lKSxzdW0pDQphJGNpYmxlPC1hWywyXSozDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCiN0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCRTUCoxMDAvdG90YWwkY2libGUsMCkNCiNrbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY3InKQ0KDQpiPC1kYXRhYg0KYiRTUDwtcm93U3VtcyhiWyw2OjhdLG5hLnJtPVQpDQoNCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKHNwYT1zdW0oU1AxK1NQMitTUDMsbmEucm09VCksY3BuYT1zdW0oQ1BOLG5hLnJtPVQpKSU+JSBtdXRhdGUoU1A9cm91bmQoc3BhKjEwMC8oY3BuYSozKSkpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9U1AsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1TUCksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKHNwYT1zdW0oU1AxK1NQMitTUDMsbmEucm09VCksY3BuYT1zdW0oQ1BOLG5hLnJtPVQpKSU+JSBtdXRhdGUoU1A9cm91bmQoc3BhKjEwMC8oY3BuYSozKSkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1TUCkpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChTUCwwKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLHk9IiUgU1AiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDUwLDkwKSkNCg0KYGBgDQoNCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiOTEuMCIpLGMoIjM3NTE4IiksYygiNDEyNDUiKSxjKCIxMDAiKSxjKCc5MS4wJykpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCdOdW1lcmF0b3InLCdEZW5vbWluYXRvcicsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpgYGANCg0KJm5ic3A7ICANCiZuYnNwOyAgDQoNCg0KIyMgTUFURVJOQUwsIE5FT05BVEFMLCBBTkQgQ0hJTEQgSEVBTFRIDQombmJzcDsNCiZuYnNwOw0KLQkqKk51bWJlciBvZiBjaGlsZHJlbiB1bmRlciBmaXZlIHllYXJzIG9mIGFnZSB0aGF0IHJlY2VpdmVkIHRyZWF0bWVudCBmb3IgYW4gYWN1dGUgcmVzcGlyYXRvcnkgaW5mZWN0aW9uIGZyb20gYW4gYXBwcm9wcmlhdGUgcHJvdmlkZXIgWzUgZmVlIHByb3h5XSoqIA0KYGBge3IsZmlnLmFsaWduPSJjZW50ZXIifQ0KYTwtZGF0YWcNCmEkUG5ldW1vbmllPC1yb3dTdW1zKGFbLDIyOjIzXSkNCmE8LWFnZ3JlZ2F0ZShhWyxjKDE4LDY2KV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCmEkY2libGU8LXJvdW5kKGNpYmxlcyRQbmV1bW9uaWVbM10vMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCiN0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCRQbmV1bW9uaWUqMTAwL3RvdGFsJGNpYmxlLDApDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NyJykNCg0KYjwtZGF0YWINCmIkcG5ldW08LXJvd1N1bXMoYlssMjM6MjRdLG5hLnJtPVQpDQoNCm5hbWVzKGRhdGFnKVsyMjoyM108LWMoIlBuZXVtb25pcyIsIlBuZXVtb25pZyIpDQpkYXRhZyU+JWdyb3VwX2J5KHpzKSU+JXN1bW1hcmlzZShwbmV1bT1zdW0oUG5ldW1vbmlzK1BuZXVtb25pZyxuYS5ybT1UKSktPnANCnAkcG9wPC1jbHVzJHBvcA0KZ2dwbG90KHAsYWVzKHg9enMseT1wbmV1bSxmaWxsPXBvcCkpK2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5Jyxjb2w9ImdyZXkiLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPXBuZXVtKSxjZXg9Myx2anVzdD0yKStzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJZbE9yQnIiKQ0KDQpuYW1lcyhiKVsyMzoyNF08LWMoIlBuZXVtb25pcyIsIlBuZXVtb25pZyIpDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UocG5ldW09c3VtKHBuZXVtLG5hLnJtPVQpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9cG5ldW0pKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQocG5ldW0sMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIix5PSJQbmV1bW9uaWUgPCA1IikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg1MDAwLDg1MDApKQ0KICANCiAgI2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5JyxmaWxsPSJsaWdodGJsdWUiLGNvbD0idG9tYXRvIixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1wbmV1bSksY2V4PTMsdmp1c3Q9MikNCmBgYA0KDQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjE5ODcyIiksYygiMjE1ODEiKSxjKCI5Mi4xIikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlKCUpIikpDQoNCmBgYA0KDQombmJzcDsgIA0KJm5ic3A7ICANCg0KDQoNCg0KJm5ic3A7DQombmJzcDsNCg0KLSAqKk51bWJlciBvZiBpbnNlY3RpY2lkZS10cmVhdGVkIG5ldHMgKElUTikgZGlzdHJpYnV0ZWQgZHVyaW5nIGFudGVuYXRhbCBhbmQvb3IgY2hpbGQgaW1tdW5pemF0aW9uIHZpc2l0cyoqDQoNCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMjI5NTgiKSxjKCIyNjA0NSIpLGMoIjg4LjEiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUoJSkiKSkNCg0KYjwtZGF0YWINCmIkTWlsZDwtcm93U3VtcyhiWywzMDozNl0sbmEucm09VCkNCm5hbWVzKGRhdGFnKVsyOTozNV08LXBhc3RlMCgibWlsZCIsMTo3KQ0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoTWlsZD1zdW0obWlsZDErbWlsZDIrbWlsZDMrbWlsZDQrbWlsZDUrbWlsZDYrbWlsZDcpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PU1pbGQsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1NaWxkKSxjZXg9Myx2anVzdD0yKStzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJZbE9yQnIiKQ0KDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoTWlsZD1zdW0oTWlsZCkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1NaWxkKSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKE1pbGQsMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIix0aXRsZT0iTUlJTEQiLCB5PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDAsMTgwMDApKQ0KDQpgYGANCg0KJm5ic3A7DQombmJzcDsNCg0KDQombmJzcDsNCg0KLQkqKk51bWJlciBvZiBjYXNlcyBvZiBjaGlsZCBkaWFycmhlYSB0cmVhdGVkIGluIFVTRy1zdXBwb3J0ZWQgcHJvZ3JhbXMgWzcgZmVlIHByb3h5XSoqDQombmJzcDsNCmBgYHtyfQ0KYTwtZGF0YWcNCmEkRGlhcnJoZWU8LXJvd1N1bXMoYVssMjE6MjNdKQ0KYTwtYWdncmVnYXRlKGFbLGMoMTUsNjYpXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtcm91bmQoY2libGVzJERpYXJyaGVlWzNdLzEyKQ0KdG90MihhKQ0KdG90YWxbLDJdPC1OVUxMDQojdG90YWwkcGVyY2VudDwtcm91bmQodG90YWwkRGlhcnJoZWUqMTAwL3RvdGFsJGNpYmxlLDApDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NyJykNCg0KYjwtZGF0YWINCmIkRGlhcnJoPC1yb3dTdW1zKGJbLDIwOjIyXSxuYS5ybT1UKQ0KbmFtZXMoYilbMjJdPC0iZGlhcyINCm5hbWVzKGRhdGFnKVsyMV08LSJkaWFzIg0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoRGlhcnJoPXN1bShEaWFycl9zZXYxK0RpYXJyX3NldjIrZGlhcyxuYS5ybT1UKSktPnANCnAkcG9wPC1jbHVzJHBvcA0KZ2dwbG90KHAsYWVzKHg9enMseT1EaWFycmgsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1EaWFycmgpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCmIlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShEaWFycmg9c3VtKERpYXJyaCkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1EaWFycmgpKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoRGlhcnJoLDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIseT0iIix0aXRsZT0iRGlhcnJoZWUgPCA1IGFucyIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2Nvb3JkX2NhcnRlc2lhbih5PWMoNjAwMCwxMjAwMCkpDQoNCg0KYGBgDQoNCg0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCIyNTU0MyIpLGMoIjI1NDg2IiksYygiMTAwLjIiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUiKSkNCg0KYGBgDQoNCg0KJm5ic3A7DQoNCg0KJm5ic3A7DQombmJzcDsNCg0KDQotCSoqTnVtYmVyIG9mIGNoaWxkcmVuIGxlc3MgdGhhbiAxMiBtb250aHMgb2YgYWdlIHdobyByZWNlaXZlZCB0aHJlZSBkb3NlcyBvZiBwZW50YXZhbGVudCB2YWNjaW5lIFs5IGZlZSBwcm94eV0qKg0KJm5ic3A7DQpgYGB7cixmaWcuYWxpZ249ImNlbnRlciJ9DQphPC1kYXRhZw0KYSRQZW50YTwtcm93U3VtcyhhWyw0MTo0M10pDQphPC1hZ2dyZWdhdGUoYVssYyg0MSw2NildLGxpc3QoYSRwZXJpb2RuYW1lKSxzdW0sbmEucm09VCkNCmEkY2libGU8LXJvdW5kKGNpYmxlcyRQZW50YVszXS8xMikNCnRvdDIoYSkNCnRvdGFsWywyXTwtTlVMTA0KI3RvdGFsJHBlcmNlbnQ8LXJvdW5kKHRvdGFsJFBlbnRhKjEwMC90b3RhbCRjaWJsZSwwKQ0KI2tuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQoNCmI8LWRhdGFiDQpiJFBlbnRhPC1yb3dTdW1zKGJbLDI3OjI5XSxuYS5ybT1UKQ0KbmFtZXMoZGF0YWcpWzI2OjI4XTwtcGFzdGUwKCJQZW50YSIsMTozKQ0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoUGVudGE9c3VtKFBlbnRhMStQZW50YTIrUGVudGEzKSktPnANCnAkcG9wPC1jbHVzJHBvcA0KZ2dwbG90KHAsYWVzKHg9enMseT1QZW50YSxmaWxsPXBvcCkpK2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5Jyxjb2w9ImdyZXkiLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPVBlbnRhKSxjZXg9Myx2anVzdD0yKStzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJZbE9yQnIiKQ0KDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoUGVudGE9c3VtKFBlbnRhKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PVBlbnRhKSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKFBlbnRhLDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIseT0iIix0aXRsZT0iVkFDQ0lOIFBFTlRBVkFMRU5UIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9YygxMDAwMCwxNDAwMCkpDQogIA0KYGBgDQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjMwNjUyIiksYygiMzEzNTMiKSxjKCI5Ny44IikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlIikpDQoNCmBgYA0KDQombmJzcDsgIA0KJm5ic3A7ICANCg0KDQotCSoqUGVyY2VudCBvZiBjaGlsZHJlbiBsZXNzIHRoYW4gMTIgbW9udGhzIG9mIGFnZSB3aG8gcmVjZWl2ZWQgbWVhc2xlcyB2YWNjaW5lIGZyb20gVVNHLXN1cHBvcnRlZCBwcm9ncmFtcyBbMTBdKioNCiZuYnNwOw0KYGBge3IsZmlnLmFsaWduPSJjZW50ZXIifQ0KYTwtZGF0YWcNCmEkVkFSPC1yb3dTdW1zKGFbLDMxOjMzXSkNCmE8LWFnZ3JlZ2F0ZShhWyxjKDMxLDUwKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCmEkY2libGU8LXJvdW5kKGNpYmxlcyRWQVJbM10vMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCiN0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCRWQVIqMTAwL3RvdGFsJGNpYmxlLDApDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NyJykNCg0KYjwtZGF0YWINCmIkVmFyPC1yb3dTdW1zKGJbLDQyOjQ0XSxuYS5ybT1UKQ0KbmFtZXMoZGF0YWcpWzQxOjQzXTwtcGFzdGUwKCJWYXIiLDE6MykNCm5hbWVzKGRhdGFnKVs0N108LSJwb3AiDQpkYXRhZyU+JWdyb3VwX2J5KHpzKSU+JXN1bW1hcmlzZShWYXJhPXN1bShWYXIxK1ZhcjIrVmFyMyxuYS5ybT1UKSxwb3BhPXN1bShwb3AsbmEucm09VCkpJT4lIG11dGF0ZShWYXI9cm91bmQoVmFyYSoxMjAwMDAvKHBvcGEqNCkpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PVZhcixmaWxsPXBvcCkpK2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5Jyxjb2w9ImdyZXkiLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPVZhciksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KbmFtZXMoYilbNDI6NDRdPC1wYXN0ZTAoIlZhciIsMTozKQ0KbmFtZXMoYilbNDhdPC0icG9wIg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKFZhcmE9c3VtKFZhcixuYS5ybT1UKSxwb3BhPXN1bShwb3AsbmEucm09VCkpJT4lIG11dGF0ZShWYXI9cm91bmQoVmFyYSoxMjAwMDAvKHBvcGEqNCkpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9VmFyKSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKFZhciwwKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLHk9IiIsdGl0bGU9IiUgVkFSIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg0MCw5MCkpDQoNCmBgYA0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCIzMTQwOCIpLGMoIjMwMTY4IiksYygiOTYuMSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpgYGANCg0KJm5ic3A7ICANCiANCiZuYnNwOw0KJm5ic3A7DQoNCi0gKipQZXJjZW50YWdlIG9mIHByZWduYW50IHdvbWVuIGF0dGVuZGluZyBhdCBsZWFzdCBvbmUgYW50ZW5hdGFsIGNhcmUgKEFOQykgdmlzaXQgd2l0aCBhIHNraWxsZWQgIHByb3ZpZGVyIGZyb20gVVNHLSBzdXBwb3J0ZWQgaGVhbHRoIGZhY2lsaXRpZXMqKg0KJm5ic3A7DQpgYGB7cixmaWcuYWxpZ249ImNlbnRlciJ9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiOTEiKSxjKCIzNzUxOCIpLGMoIjQxMjQ1IiksYygiMTAwIiksYygiOTEiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIk51bWVyYXRvciIsIkRlbm9taW5hdG9yIiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlKCUpIikpDQoNCmI8LWRhdGFiDQojYiRWYXI8LXJvd1N1bXMoYlssNDI6NDRdLG5hLnJtPVQpDQojbmFtZXMoZGF0YWcpWzQxOjQzXTwtcGFzdGUwKCJWYXIiLDE6MykNCiNuYW1lcyhkYXRhZylbNDddPC0icG9wIg0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoY3BuYT1zdW0oQ1BOLG5hLnJtPVQpLHBvcGE9c3VtKHBvcCxuYS5ybT1UKSklPiUgbXV0YXRlKENQTj1yb3VuZChjcG5hKjEyMDAwMC8ocG9wYSo0KSkpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9Q1BOLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9Q1BOKSxjZXg9Myx2anVzdD0yKStzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJZbE9yQnIiKQ0KDQojbmFtZXMoYilbNDI6NDRdPC1wYXN0ZTAoIlZhciIsMTozKQ0KbmFtZXMoYilbNDhdPC0icG9wIg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKGNwbmE9c3VtKENQTixuYS5ybT1UKSxwb3BhPXN1bShwb3AsbmEucm09VCkpJT4lIG11dGF0ZShDUE49cm91bmQoY3BuYSoxMjAwMDAvKHBvcGEqNCkpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9Q1BOKSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKENQTiwwKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLHk9IiIsdGl0bGU9IiUgQ1BOMSIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2Nvb3JkX2NhcnRlc2lhbih5PWMoODAsMTQwKSkNCg0KYGBgDQoNCiZuYnNwOyAgDQombmJzcDsgIA0KDQombmJzcDsNCg0KLQkqKlBlcmNlbnRhZ2Ugb2YgcHJlZ25hbnQgd29tZW4gYXR0ZW5kaW5nIGF0IGxlYXN0IG9uZSBhbmQgYXQgbGVhc3QgNCBhbnRlbmF0YWwgY2FyZSAoQU5DKSB3aXRoIGEgc2tpbGxlZCBwcm92aWRlciBmcm9tIFVTRy1zdXBwb3J0ZWQgaGVhbHRoIGZhY2lsaXRpZXMgWzEyIGZlZV0qKg0KJm5ic3A7DQpgYGB7cn0NCmE8LWRhdGFnDQphJENQTl80PC1hWyw0XQ0KYTwtYWdncmVnYXRlKGFbLGMoNCw1MCldLGxpc3QoYSRwZXJpb2RuYW1lKSxzdW0pDQphJGNpYmxlPC1yb3VuZChjaWJsZXMkQ1BONFszXS8xMikNCnRvdDIoYSkNCnRvdGFsWywyXTwtTlVMTA0KI3RvdGFsJHBlcmNlbnQ8LXJvdW5kKHRvdGFsJENQTl80KjEwMC90b3RhbCRjaWJsZSwwKQ0KI2tuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQoNCmI8LWRhdGFiDQojYiRWYXI8LXJvd1N1bXMoYlssNDI6NDRdLG5hLnJtPVQpDQojbmFtZXMoZGF0YWcpWzQxOjQzXTwtcGFzdGUwKCJWYXIiLDE6MykNCiNuYW1lcyhkYXRhZylbNDddPC0icG9wIg0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoY3BuYT1zdW0oQ1BONCxuYS5ybT1UKSxwb3BhPXN1bShwb3AsbmEucm09VCkpJT4lIG11dGF0ZShDUE40PXJvdW5kKGNwbmEqMTIwMDAwLyhwb3BhKjQpKSktPnANCnAkcG9wPC1jbHVzJHBvcA0KZ2dwbG90KHAsYWVzKHg9enMseT1DUE40LGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9Q1BONCksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KI25hbWVzKGIpWzQyOjQ0XTwtcGFzdGUwKCJWYXIiLDE6MykNCm5hbWVzKGIpWzQ4XTwtInBvcCINCmIlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShjcG5hPXN1bShDUE40LG5hLnJtPVQpLHBvcGE9c3VtKHBvcCxuYS5ybT1UKSklPiUgbXV0YXRlKENQTjQ9cm91bmQoY3BuYSoxMjAwMDAvKHBvcGEqNCkpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9Q1BONCkpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChDUE40LDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIseT0iIix0aXRsZT0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg0MCw2MCkpDQoNCmBgYA0KDQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjE5ODYwIiksYygiMTc4OTciKSxjKCIxMTEiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUiKSkNCg0KYGBgDQoNCiZuYnNwOw0KDQotCSoqUGVyY2VudGFnZSBvZiBkZWxpdmVyaWVzIHdpdGggYW4gU0JBIGluIFVTRy1zdXBwb3J0ZWQgZmFjaWxpdGllcyoqICANCg0KYGBge3J9DQphPC1kYXRhZw0KYSRBY2M8LWFbLDhdDQphPC1hZ2dyZWdhdGUoYVssYyg4LDM3LDUwKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCnRvdDIoYSkNCiN0b3RhbCRBY2NfUDwtcm91bmQodG90YWwkQWNjKjEyMDAvKHRvdGFsWywzXSouMDQpLDApDQp0b3RhbCRjaWJsZTQ8LXJvdW5kKHRvdGFsWywzXSouMDQvMTIpDQp0b3RhbFssMjozXTwtTlVMTA0KdG90YWwkY2libGU9OTANCiN0b3RhbDwtdG90YWxbLGMoMSwyLDQsNSwzKV0NCiNrbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiTW9pcyIsIkFjY0Fzc2lzdCIsIkNpYmxlNCIsIkNpYmxlOTAiLCIlIikpDQoNCmI8LWRhdGFiDQojYiRWYXI8LXJvd1N1bXMoYlssNDI6NDRdLG5hLnJtPVQpDQpuYW1lcyhkYXRhZylbOF08LSJBY2NvdWNoX2FzcyINCm5hbWVzKGRhdGFnKVs2Ml08LSJBY2NvdWNoIg0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoQWNjb3VjaGE9c3VtKEFjY291Y2hfYXNzLG5hLnJtPVQpLGFjY2E9c3VtKEFjY291Y2gsbmEucm09VCkpJT4lIG11dGF0ZShBY2NvdWNoX2Fzcz1yb3VuZChBY2NvdWNoYSoxMDAvYWNjYSkpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9QWNjb3VjaF9hc3MsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1BY2NvdWNoX2FzcyksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KbmFtZXMoYilbOV08LSJBY2NvdWNoX2FzcyINCm5hbWVzKGIpWzYzXTwtIkFjY291Y2giDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoQWNjb3VjaGE9c3VtKEFjY291Y2hfYXNzLG5hLnJtPVQpLGFjY2E9c3VtKEFjY291Y2gsbmEucm09VCkpJT4lIG11dGF0ZShBY2NvdWNoX2Fzcz1yb3VuZChBY2NvdWNoYSoxMDAvYWNjYSkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1BY2NvdWNoX2FzcykpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChBY2NvdWNoX2FzcywwKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLHk9IiIsdGl0bGU9IiUgQWNjb3VjaGVtZW50cyBhc3Npc3TDqXMiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStjb29yZF9jYXJ0ZXNpYW4oeT1jKDQwLDE0MCkpDQoNCmBgYA0KDQoNCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiNzYiKSxjKCIzMTM2NCIpLGMoIjQxMjQ1IiksYygiOTAiKSxjKCI4NC41IikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiUTEgQWNoaWV2ZW1lbnQiLCJOdW1lcmF0b3IiLCJEZW5vbWluYXRvciIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpgYGANCg0KJm5ic3A7DQoNCiZuYnNwOw0KDQotCSoqTnVtYmVyIG9mIHdvbWVuIGdpdmluZyBiaXJ0aCB3aG8gcmVjZWl2ZWQgdXRlcm90b25pY3MgaW4gdGhlIHRoaXJkIHN0YWdlIG9mIGxhYm9yIChPUiBpbW1lZGlhdGVseSBhZnRlciBiaXJ0aCkgdGhyb3VnaCBVU0ctc3VwcG9ydGVkIHByb2dyYW1zIFsyLjEuNF0qKg0KJm5ic3A7DQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjE1ODQiKSxjKCIyMTc4IiksYygiNzIuNyIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpiPC1kYXRhYg0KbmFtZXMoYilbMTBdPC0iR0FUUEEiDQpuYW1lcyhkYXRhZylbOV08LSJHQVRQQSINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKEdBVFBBPXN1bShHQVRQQSkpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9R0FUUEEsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1HQVRQQSksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKEdBVFBBPXN1bShHQVRQQSxuYS5ybT1UKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PUdBVFBBKSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKEdBVFBBLDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIsIHk9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2Nvb3JkX2NhcnRlc2lhbih5PWMoMTAwLDEwMDApKQ0KYGBgDQoNCiZuYnNwOw0KJm5ic3A7DQoNCg0KLQkqKk51bWJlciBhbmQgcGVyY2VudGFnZSBvZiBuZXdib3JucyByZWNlaXZpbmcgZXNzZW50aWFsIG5ld2Jvcm4gY2FyZSB0aHJvdWdoIFVTRy1zdXBwb3J0ZWQgcHJvZ3JhbXMqKg0KDQpgYGB7cn0NCmE8LWRhdGFnDQphJFNvaW5zX2VzczwtYVssMjldDQphPC1hZ2dyZWdhdGUoYVssYyg5LDI5LDUwKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCnRvdDIoYSkNCnRvdGFsJGNpYmxlPC0xMDANCiN0b3RhbCRTb2Vzc19QPC1yb3VuZCh0b3RhbCRTb2luc19lc3MqMTAwL3RvdGFsWywyXSkNCnRvdGFsWywzXTwtTlVMTA0KdG90YWwkY2libGU9MTAwDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIk1vaXMiLCJOYWlzc1ZpdiIsIlNvaW5zRXNzIiwiQ2libGUiLCIlIikpDQoNCmI8LWRhdGFiDQojYiRWYXI8LXJvd1N1bXMoYlssNDI6NDRdLG5hLnJtPVQpDQpuYW1lcyhkYXRhZylbMzhdPC0iU29lc3MiDQpuYW1lcyhkYXRhZylbMTFdPC0iTmFpc3N2Ig0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoU29lc3NhPXN1bShTb2VzcyxuYS5ybT1UKSxuYWlzc3ZhPXN1bShOYWlzc3YsbmEucm09VCkpJT4lIG11dGF0ZShTb2Vzcz1yb3VuZChTb2Vzc2EqMTAwL25haXNzdmEpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQpnZ3Bsb3QocCxhZXMoeD16cyx5PVNvZXNzLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9U29lc3MpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCm5hbWVzKGIpWzM5XTwtIlNvZXNzIg0KbmFtZXMoYilbMTJdPC0iTmFpc3N2Ig0KYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKFNvZXNzYT1zdW0oU29lc3MsbmEucm09VCksbmFpc3N2YT1zdW0oTmFpc3N2LG5hLnJtPVQpKSU+JSBtdXRhdGUoU29lc3M9cm91bmQoU29lc3NhKjEwMC9uYWlzc3ZhKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PVNvZXNzKSkrZ2VvbV9saW5lKGFlcyhncm91cD0xKSxzaXplPTIsY29sb3I9ImxpZ2h0Ymx1ZSIpK2dlb21fcG9pbnQoY29sb3I9InJlZCIpK3RoZW1lX2NsYXNzaWMoKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9MCxzaXplPTgpKStnZW9tX3RleHQoYWVzKGxhYmVsPXJvdW5kKFNvZXNzLDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIseT0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg0MCwxMDApKQ0KDQpgYGANCg0KDQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjkwIiksYygiMTAwIiksYygiODkuOSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpgYGANCg0KJm5ic3A7DQoNCg0KJm5ic3A7DQombmJzcDsNCg0KDQotCSoqTnVtYmVyIG9mIHBvc3RwYXJ0dW0vbmV3Ym9ybiB2aXNpdHMgd2l0aGluIHRocmVlIGRheXMgb2YgYmlydGggaW4gVVNHLXN1cHBvcnRlZCBwcm9ncmFtcyBbMi4xLjZdKioNCg0KYGBge3J9DQphPC1kYXRhZw0KYSRDUE9OXzE8LWFbLDI4XQ0KYTwtYWdncmVnYXRlKGFbLGMoMjgsNTApXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtcm91bmQoYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoY2libGVzJENQb04xWzNdKSkvMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCiN0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCRDUE9OXzEqMTAwL3RvdGFsJGNpYmxlLDApDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NyJykNCg0KYjwtZGF0YWINCm5hbWVzKGRhdGFnKVszN108LSJDcG9uMSINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKENwb24xPXN1bShDcG9uMSkpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9Q3BvbjEsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1DcG9uMSksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KbmFtZXMoYilbMzhdPC0iQ3BvbjEiDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoQ3BvbjE9c3VtKENwb24xLG5hLnJtPVQpKS0+cA0KDQpnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9Q3BvbjEpKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoQ3BvbjEsMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIiwgeT0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg4MDAwLDEzMDAwKSkNCg0KYGBgDQoNCiZuYnNwOw0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMjgwMjgiKSxjKCIyMzU1OSIpLGMoIjExOSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSglKSIpKQ0KDQpgYGANCg0KJm5ic3A7DQogICANCiZuYnNwOw0KDQotCSoqRHJvcC1vdXQgcmF0ZSBpbiBEVFAtSGVwQi1IaWIzIGFtb25nIGNoaWxkcmVuIGxlc3MgdGhhbiAxMiBtb250aHMgb2YgYWdlIFsyLjEuOV0qKg0KDQombmJzcDsNCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMi4zIiksYygiNCIpLGMoIjE0Mi44IikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlKCUpIikpDQoNCmI8LWRhdGFiDQojYiRWYXI8LXJvd1N1bXMoYlssNDI6NDRdLG5hLnJtPVQpDQpuYW1lcyhkYXRhZylbNzU6NzddPC1wYXN0ZTAoIlBlbnRhXzEiLDE6MykNCm5hbWVzKGRhdGFnKVsyNjoyOF08LXBhc3RlMCgiUGVudGFfMyIsMTozKQ0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoUGVudGExPXN1bShQZW50YV8xMStQZW50YV8xMitQZW50YV8xMyxuYS5ybT1UKSxQZW50YTM9c3VtKFBlbnRhXzMxK1BlbnRhXzMyK1BlbnRhXzMzLG5hLnJtPVQpKSU+JSBtdXRhdGUoRHJvcD1yb3VuZCgoUGVudGExLVBlbnRhMykvUGVudGExLDIpKS0+cA0KcCRwb3A8LWNsdXMkcG9wDQojZ2dwbG90KHAsYWVzKHg9enMseT1Ecm9wLGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9RHJvcCksY2V4PTMsdmp1c3Q9Mikrc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iWWxPckJyIikNCg0KbmFtZXMoYilbNzY6NzhdPC1wYXN0ZTAoIlBlbnRhXzEiLDE6MykNCm5hbWVzKGIpWzI3OjI5XTwtcGFzdGUwKCJQZW50YV8zIiwxOjMpDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoUGVudGExPXN1bShQZW50YV8xMStQZW50YV8xMitQZW50YV8xMyxuYS5ybT1UKSxQZW50YTM9c3VtKFBlbnRhXzMxK1BlbnRhXzMyK1BlbnRhXzMzLG5hLnJtPVQpKSU+JSBtdXRhdGUoRHJvcD1yb3VuZCgoUGVudGExLVBlbnRhMykvUGVudGExLDIpKS0+cA0KDQojZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PURyb3ApKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoRHJvcCwyKSksc2l6ZT0zLHZqdXN0PS0uNSkrbGFicyh4PSIiLHk9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2Nvb3JkX2NhcnRlc2lhbih5PWMoMCwxLjUpKQ0KDQpgYGANCg0KJm5ic3A7ICANCg0KDQombmJzcDsNCiZuYnNwOw0KJm5ic3A7DQoNCiMjIE5VVFJJVElPTg0KDQotCU51bWJlciBvZiBpbmRpdmlkdWFscyByZWNlaXZpbmcgbnV0cml0aW9uLXJlbGF0ZWQgcHJvZmVzc2lvbmFsIHRyYWluaW5nIHRocm91Z2ggVVNHIHN1cHBvcnRlZCBudXRyaW9uIHByb2dyYW1zIFsyLjEuMTBdDQoNCi0JTnVtYmVyIG9mIGNoaWxkcmVuIHVuZGVyLWZpdmUgKDAtNTkgbW9udGhzKSByZWFjaGVkIGJ5IFVTRy1zdXBwb3J0ZWQgbnV0cml0aW9uIHByb2dyYW1zIFsyLjEuMTFdDQoNCiZuYnNwOw0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMzUzMDkxIiksYygiMTU4NDU2IiksYygiNDQuOSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSglKSIpKQ0KDQpiPC1kYXRhYg0KbmFtZXMoZGF0YWcpWzQwXTwtIkNQUyINCmRhdGFnJT4lZ3JvdXBfYnkoenMpJT4lc3VtbWFyaXNlKENQUz1zdW0oQ1BTKSktPnANCnAkcG9wPC1jbHVzJHBvcA0KZ2dwbG90KHAsYWVzKHg9enMseT1DUFMsZmlsbD1wb3ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJncmV5IixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1DUFMpLGNleD0zLHZqdXN0PTIpK3NjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IllsT3JCciIpDQoNCm5hbWVzKGIpWzQxXTwtIkNQUyINCmIlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShDUFM9c3VtKENQUyxuYS5ybT1UKSktPnANCg0KZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PUNQUykpK2dlb21fbGluZShhZXMoZ3JvdXA9MSksc2l6ZT0yLGNvbG9yPSJsaWdodGJsdWUiKStnZW9tX3BvaW50KGNvbG9yPSJyZWQiKSt0aGVtZV9jbGFzc2ljKCkrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTAsc2l6ZT04KSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1yb3VuZChDUFMsMCkpLHNpemU9Myx2anVzdD0tLjUpK2xhYnMoeD0iIiwgeT0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrY29vcmRfY2FydGVzaWFuKHk9Yyg1MDAwMCw4MDAwMCkpDQoNCmBgYA0KDQombmJzcDsNCg0KJm5ic3A7DQombmJzcDsNCiZuYnNwOw0KDQojIyBSRVBST0RVQ1RJVkUgSEVBTFRIL0ZBTUlMWSBQTEFOTklORw0KJm5ic3A7DQotCSoqTnVtYmVyIG9mIG5ldyBhY2NlcHRvcnMgdXNpbmcgbW9kZXJuIGNvbnRyYWNlcHRpdmUgbWV0aG9kcyBpbiBVU0ctc3VwcG9ydGVkIGZhY2lsaXRpZXMgWzMgZmVlIHByb3h5XSoqDQoNCmBgYHtyfQ0KYTwtZGF0YWcNCmEkQWNjZXB0PC0oYVssMTBdKQ0KYTwtYWdncmVnYXRlKGFbLGMoMTAsNTApXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtcm91bmQoY2libGVzJE5vdXZlbGxlLmFjY2VwdGFudGVbM10vMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCiN0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCRBY2NlcHQqMTAwL3RvdGFsJGNpYmxlLDApDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NyJykNCg0KYjwtZGF0YWINCm5hbWVzKGRhdGFnKVsxMl08LSJBY2NlcHQiDQpkYXRhZyU+JWdyb3VwX2J5KHpzKSU+JXN1bW1hcmlzZShBY2NlcHQ9c3VtKEFjY2VwdCkpLT5wDQpwJHBvcDwtY2x1cyRwb3ANCmdncGxvdChwLGFlcyh4PXpzLHk9QWNjZXB0LGZpbGw9cG9wKSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0iZ3JleSIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9QWNjZXB0KSxjZXg9Myx2anVzdD0yKStzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJZbE9yQnIiKQ0KDQpuYW1lcyhiKVsxM108LSJBY2NlcHQiDQpiJT4lZ3JvdXBfYnkocGVyaW9kbmFtZSklPiVzdW1tYXJpc2UoQWNjZXB0PXN1bShBY2NlcHQsbmEucm09VCkpLT5wDQoNCmdncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1BY2NlcHQpKStnZW9tX2xpbmUoYWVzKGdyb3VwPTEpLHNpemU9Mixjb2xvcj0ibGlnaHRibHVlIikrZ2VvbV9wb2ludChjb2xvcj0icmVkIikrdGhlbWVfY2xhc3NpYygpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLHNpemU9OCkpK2dlb21fdGV4dChhZXMobGFiZWw9cm91bmQoQWNjZXB0LDApKSxzaXplPTMsdmp1c3Q9LS41KStsYWJzKHg9IiIsIHk9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2Nvb3JkX2NhcnRlc2lhbih5PWMoMTAwMDAsMjMwMDApKQ0KDQpgYGANCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMzMzNzIiKSxjKCIyMDQwNSIpLGMoIjE2My41IikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlKCUpIikpDQoNCmBgYA0KDQombmJzcDsNCg0KJm5ic3A7DQoNCi0JKipOdW1iZXIgb2YgY291bnNlbGluZyB2aXNpdHMgZm9yIEZQLyBSSCBhcyByZXN1bHQgb2YgVVNHIHN1cHBvcnQgWzIuM10qKg0KDQoNCg0KDQojIyBUVUJFUkNVTE9TSVMNCg0KLQlUQiBub3RpZmljYXRpb24gcmF0ZSB0aHJvdWdoIFVTRy0gc3VwcG9ydGVkIHByb2dyYW1zIFsyLjEuMTddDQoNCi0JTnVtYmVyIG9mIG11bHRpLWRydWcgcmVzaXN0YW50IFRCIChNRFItVEIpIGNhc2VzIGRldGVjdGVkIFsyLjEuMjBdDQoNCiMjIFdBVEVSLCBTQU5JVEFUSU9OLCBBTkQgSFlHSUVORQ0KDQotCU51bWJlciBvZiBwZW9wbGUgZ2FpbmluZyBhY2Nlc3MgdG8gYmFzaWMgZHJpbmtpbmcgd2F0ZXIgc2VydmljZXMgYXMgYSByZXN1bHQgb2YgVVNHIGFzc2lzdGFuY2UgWzIuNi4yXQ0KDQotCU51bWJlciBvZiBwZW9wbGUgZ2FpbmluZyBhY2Nlc3MgdG8gYSBiYXNpYyBzYW5pdGF0aW9uIHNlcnZpY2UgYXMgYSByZXN1bHQgb2YgVVNHIGFzc2lzdGFuY2UgWzIuNi4zXQ0KDQojIDQuUkVQT1JUSU5HIEJZIFBST0dSQU0gQUNUSVZJVElFUw0KDQojIyBjZnIgcmFwcG9ydCBwcm9ncmFtbWF0aXF1ZQ0KDQo=