3. REPORTING BY PROGRAM AREA

 

MALARIA

  Le domaine de la Malaria comprend 6 indicateurs dont voici quelques uns

  - 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]

 

 

Mois palu cible percent
2.Nove 34212 22052 155
3.Déce 39061 22052 177
4.Janv 35299 22052 160
Total 108572 66156 164

 

on note une diminution d’environ 17% du nombre de cas de malaria traité par rapport au mois de décembre, les ZS plus touchées sont Kayamba, Mukanga,Lwamba, Kinkondja et Bukama. les ZS qui ont rapporte moins de cas sont Kinda, Kaniama à cause de leur faible complétude puis Songa,Butumba et Kabongo. Parmi les ZS qui ont rapportées plus de cas, Bukama et Mulongo font faces actuellement aux inondations, tandis que Kayamba a un taux d’attaque exceptionnellement élevé du paludisme.

 

Realisation: PROSANI USAID a appuyé la formation des prestataires dans la prise en charge du paludisme dans les ZS de Mulongo et Songa au mois de février 2020 .

 

  • Percent of pregnant women who received doses of sulfadoxine/ pyrimethamine (S/P) for Intermittent Preventive Treatment (IPT) during ANC visits [2.4]

 

Mois SP cible percent
2.Nove 29263 38592 76
3.Déce 31352 46986 67
4.Janv 29893 39309 76
Total 90508 124887 72

 
 

on note une augmentation de de 9% par rapport à la réalisation de Décembre 2019,Les ZS de Kinda, Songa,Baka,Butumba et Kabondo Dianda etaient egalement parmis les plus faibles au dernier trimestre 2019. Les ZS qui ont ete plus performantes sont: Bukama,Kamina,Kitenge,Kayamba et Lwamba

Realisations: il y a eu briefing des prestataires sur la prevention intermittente du paludisme dans la ZS de BAKA.

   

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]

Mois Pneumonie cible percent
2.Nove 6891 7055 98
3.Déce 8136 7055 115
4.Janv 7825 7055 111
Total 22852 21165 108

 
 

Par rapport au mois de Décembre 2019, ces résultats montrent une légère diminution de 4%. Les ZS de Kinda,Kabongo,Kaniama sont très faibles. Le no,bre de cas rapporté a été élevé dans les ZS suivantes: Kitenge, Malemba, Bukama, Kinkondja, Kayamba.

Realisations: il y a eu formation des formateurs provinciaux et également formation de quelques prestataires en PCIME et en ordinogrammes en février 2020. La ZS de Kabongo connait un sous rapportage de cet indicateur, elle sera visitée au mois de mars dans le cadre du contrôle de la qualité des données. .

   

Mois Mild cible percent
2.Nove 15382 8682 177
3.Déce 8897 8682 102
4.Janv 3933 8682 45
Total 28212 26046 108

   

Ces résultats montrent que la distribution des Milds a été très faible en janvier,elle n’a pu realiser que 45% des objectifs mensuels. Les ZS de Kayamba et Baka ont été relativement performantes tandis que Bukama,Kabondo Dianda,Kinda et Malemba n’ont pas distribue des Milds

 

Mois Diarrhee cible percent
2.Nove 9526 8331 114
3.Déce 10204 8331 122
4.Janv 9210 8331 111
Total 28940 24993 116

 

on remarque qu’il y a une diminution de 11% du nombre de cas de diarrhée traité par rapport au mois de Décembre avec des ZS qui ont rapporté plus de cas:Kayamba,Mulongo, Kinkondja,Malemba,Kitenge et Bukama. La ZS de Kayamba est la plus atteinte si on rapporte ses données à la population(46/10000 cas de Diarrhée alors que Mulongo n’a que 36/10000)

Les ZS qui ont rapporté moins de cas sont Kinda,Baka,Lwamba,Butumba et Mukanga.

 

Realisations: il y a eu formation des formateurs provinciaux et également formation de quelques prestataires en PCIME et en ordinogrammes.

   

Mois Penta cible percent
2.Nove 7185 10249 70
3.Déce 7712 10249 75
4.Janv 7372 10249 72
Total 22269 30747 72

 
 
on note une regression de 3% par rapport a la proportion du mois de Décembre, les ZS de Kinda et Kaniama ont une faible complétude dans le DHIS2.
Les ZS qui ont beaucoup vacciné sont Kamina,Kayamba,Lwamba, Malemba et Kinkondja
Les ZS qui ont moins vacciné sont: Kinda,Kaniama, Baka et Kitenge.

 

 

Mois VAR cible percent
2.Nove 10925 10267 106
3.Déce 10945 10267 107
4.Janv 11171 10267 109
Total 33041 30801 107

 

Les résultats de janvier depassent ceux de Décembre de 2%.
Les ZS qui ont eu une bonne couverture sont:Songa,Bukama,Mulongo,Malemba et Kayamba.

Les ZS moins performantes sont:Kinda,Baka,Lwamba et Kaniama.

   

 

 
 

 

Mois CPN_4 cible percent
2.Nove 7076 5850 121
3.Déce 7862 5850 134
4.Janv 7645 5850 131
Total 22583 17550 129

 

il y a une diminution de 3% par rapport au mois de Décembre, les ZS ayant un fort taux de couverture en CPN sont:Lwamba,Bukama,Kitenge, Kayamba et Kamina.
Les ZS moins performantes sont:Kinda,Baka,Lwamba et Songa

 

 

 

Mois Gatpa cible percent
2.Nove 519 726 71
3.Déce 683 726 94
4.Janv 681 726 94
Total 1883 2178 86

 

 

on note que le nombre des femmes qui ont reçu la Gatpa augmente en Décembre et en janvier, les ZS qui ont rapporté le plus de cas sont: Kitenge,Bukama,Kaniama, Kabongo. Kabongo et Bukama ont un important poid demographique tandis que pour Kitenge et Kaniama, d’autres facteurs favorisants doivent être recherchés.

Mois NaissViv SoinsEss Cible %
2.Nove 10434 9568 100 92
3.Déce 11641 10487 100 90
4.Janv 11140 10240 100 92
Total 33215 30295 100 91

 

il y a une augmentation de 2% par rapport à Décembre 2019, parmi les ZS qui ont rapporté plus de cas il y a: Lwamba,Malemba,Kitenge,Kinkondja,Kayamba.
Les ZS moins performantes sont:Kinda,Kabondo Dianda,Butumba,Kaniama

   

Mois CPON_1 cible percent
2.Nove 10073 7853 128
3.Déce 11191 7853 143
4.Janv 10769 7853 137
Total 32033 23559 136

 

  il y a une regression de 6% par rapport au mois précedent, avec des ZS plus performantes (Lwamba,Kayamba,Kitenge,Baka) et les ZS qui ont un faible taux(Kabondo, Butumba,Kaniama)

 

 

 

     

NUTRITION

 

Mois Nutrition cible percent
2.Nove 55110 117697 47
3.Déce 56389 117697 48
4.Janv 61311 117697 52
Total 172810 353091 49

 

une légère augmentation des enfants vus a la DPS a été observée en janvier par rapport à Décembre, ce phénomène peut être correlé positivement avec l’augmentation de cas de paludisme dans cette tranche.

     

REPRODUCTIVE HEALTH/FAMILY PLANNING

 

Mois Accept cible percent
2.Nove 12158 6670 182
3.Déce 12247 6670 184
4.Janv 13828 6670 207
Total 38233 20010 191

 

On note une augementation de nouvelles acceptantes de 2"% par rapport en Décembre, les ZS plus performantes sont: Kabongo, Kitenge, Mulongo et Malemba. cependant certaines ZS ont été moins performantes tel que: Baka,KabondoD,Butumba et Kinda.

 

TUBERCULOSIS

WATER, SANITATION, AND HYGIENE

4.REPORTING BY PROGRAM ACTIVITIES

OBJECTIVE 1: STRENGTHEN HEALTH SYSTEMS, GOVERNANCE, AND LEADERSHIP AT PROVINCIAL, HEALTH ZONE, AND FACILITY LEVELS IN TARGET HEALTH ZONES

L’objectif I a 8 resultats intermediaires(IR),le tableau suivant reprend le nombre d’activites realisees ainsi que le taux de realisation rapporte a chaque IR:

IR WP Activites Rate
1.1 7 4 57
1.2 1 2 200
1.3 2 0 0
1.4 0 0 NaN
1.5 4 4 100
1.6 1 0 0
1.7 4 1 25
1.8 2 1 50

En generale, activites ont ete realisee sur prevues dans le WP. aucune activites de 1.3 n’avait ete planifiee parce que BA n’a pas encore forme.aux de realisation de 31%.

parmi les IR ou aucune activite n’a ete faite notons le 1.3 et le 1.6. la realisation des activites dans l’IR 1.6

RI I.1: Capacité accrue de planifier, d’offrir les services et d’en faire le suivi et l’évaluation au niveau des provinces, des zones de santé et des formations sanitaires dans les zones de santé ciblées

Dans cet IR, 5 activites ont ete realisees dont voici la synthese

  1. Conduire les analyses institutionnelles dans quelques ZS

Au cours de la période, PROSANI USAID a appuyé techniquement et financièrement l’organisation de l’analyse institutionnelle de la ZS Kamina avec l’outil PICAL adapté aux ZS. Du 4 au 15 février, cette activité a débuté par la formation de 6 EPP de la DPS Haut-Lomami sur l’outil PICAL adapté aux ZS pendant quatre jours pour la conduite des analyses institutionnelles dans les ZS de la province. Ensuite du 8 au 15 Février, la première analyse institutionnelle des ZS a été réalisée dans la ZS Kamina.

   

  1. Former les cadres de la DPS et de l’IPS sur les techniques de coaching y compris les aspects genre  

Du 17 au 21 Février, PROSANI USAID a appuyé techniquement et financièrement la formation des équipes cadres de la DPS et de l’IPS ainsi que 5 staffs de PROSANI USAID sur les techniques de coaching. Au total 32 personnes ont été formées pendant 5 jours sur des approches jugées innovantes par tous les participants pour le leadership dans leur vie professionnelle.

   

  1. Contribuer aux frais de fonctionnement de la DPS

   

  1. Contribuer aux frais de fonctionnement de quelques ZS

   

RI I.2: Amélioration de la transparence et du contrôle du financement et de l’administration des services de santé au niveau des provinces, des zones de santé et des formations sanitaires

Deux activites ont ete fait dans cet IR:

  1. Contribuer aux frais de fonctionnement de l’IPS

   

  1. Appuyer les missions trimestrielles des IPS en audit et contrôle de ZS/DPS.

   

RI 1.5: Amélioration de la surveillance des maladies et de la collecte et de l’utilisation d’informations stratégiques

  1. Assurer la connexion internet de la DPS et des ZS (Achat mégabytes pour 3G et 4G ou connexion V-Sat)

La connexion internet a été fournie aux 16 ZS ainsi qu’à la DPS, le processus d’activation de Vsat est aussi en voie d’être étudié pour sa mise en œuvre.
   

  1. Appuyer techniquement et financièrement les réunions de surveillance MAPEPI particulierement la MVE

Les reunions MAPEPI ont ete tenues a la 6eme et 8 eme semaine au mois de fevrier avec l’appui de PROSANI USAID. ce mois a ete caracterise par une epidemie de rougeole a Songa et une augmentation du nombre de cas de paludisme dans la ZS de Bukama.

   

  1. Appuyer financièrement les réunions mensuelles de monitorage au niveau des ZS

   

  1. Reproduire les outils de gestion des FoSa (les registres, fiches, canevas rapports, et autres)

   

1.7: Disponibilité accrue des médicaments essentiels au niveau des provinces, des zones de santé et des formations sanitaires

    Participer aux réunions de Coordination Supply Chain avec GHSC-TA

   

1.8: Collaboration renforcée

    Financer l’organisation et la tenue régulière des réunions de COGE dans quelques ZS

   

Objectif 2: Accroître l’accès à des services de santé intégrés et de qualité dans les zones de santé ciblées

   

IR WP Activites Rate
2.1 5 6 120
2.2 4 0 0
2.3 1 0 0
2.4 0 0 NaN
2.5 0 0 NaN
2.6 2 1 50
2.7 0 2 Inf

Au cours de cette periode,.

RI 2.1: Disponibilité accrue des services de santé essentiels et de qualité dans les formations sanitaires

   

Appuyer le recyclage des prestataires sur la prévention et la PEC du paludisme chez les femmes enceintes
Le 14.02.2020 : PROSANI USAID a appuye le Recyclage en TPI dans la zone de santé de BAKA avec 12 Participants dont 1 sexe Féminin.

   

Former les prestataires sur le diagnostic des cas de suspects de paludisme avec les TDR, et traitement de cas confirmés de paludisme simple et grave

Du 03 au 07 fevrier 2020: PROSANI USAID a appuye la formation des Prestataires sur le diagnostic et traitement de Paludisme dans les Zones de sante de SONGA et MULONGO.il y a eu 68 Participants qui ont été formés dont 57 Hommes et 11 Femmes.

   

Renforcer les capacités des formateurs en PCIMNE et ordinogramme     Former les prestataires des CS en PCIMNE et ordinogramme    

Appuyer l’organisation de la validation trimestrielle des données TB au niveau provincial

   

Fournir un appui nutritionnel aux malades MDR et XDR

   

RI 2.6: Amélioration de l’infrastructure et de l’équipement de base pour assurer des services de qualité

   

Doter les formations sanitaires des materiels de base de PCI (Prevention et controle des Infections)

   

RI 2.7: Collaboration renforcée

   

Appuyer techniquement et financièrement le fonctionnement et les activités du CTMP PF

   

Appuyer techniquement et financièrement les réunions trimestrielles de la task force TB/VIH

   

Objectif 3: Accroître l’adoption de comportements sains, y compris l’utilisation des services de santé, dans les zones de santé ciblées

   

IR WP Activites Rate
3.1 3 0 0
3.2 0 1 Inf
3.3 0 1 Inf
3.4 0 0 NaN

RI 3.2: Utilisation accrue des services de santé au niveau des formations sanitaires et au niveau des communautés

   

Appuyer techniquement les ECZS pour cartographier les principaux influenceurs et élaborer un plan d’engagement

   

RI 3.3: Réduction des barrières socioculturelles à l’utilisation des services de santé et au changement des comportements

   

Organiser des focus group

   

LS0tDQp0aXRsZTogIlJBUFBPUlRfRkVWX0hMIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFKQ0KYGBgDQoNCg0KIyMgMy4gUkVQT1JUSU5HIEJZIFBST0dSQU0gQVJFQQ0KJm5ic3A7DQoNCmBgYHtyLG1lc3NhZ2U9Rn0NCmRhdGFiPC1yZWFkLmNzdigiREFUQUIuY3N2IikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KDQpiPC1uYW1lcyhkYXRhYikNCmI8LWdzdWIoIlxcLisiLCJcXC4iLGIpDQpkPC0nc29tZXRoaW5nJw0KZm9yIChpIGluIDE6NSl7ZFtpXTwtYltpXX0NCmZvciAoaSBpbiA2Omxlbmd0aChiKSl7DQogZjwtc3Ryc3BsaXQoYltpXSwiXFwuIikNCiAgZjwtdW5saXN0KGYpDQogIGRbaV08LXBhc3RlKGZbNF0sZls1XSxmW2xlbmd0aChmKV0sc2VwPSIuIil9DQogZFs0OjVdPC1nc3ViKCJbQVxcLjJcXC4xXFwuXSIsJycsZFs0OjVdKQ0KIA0KbmFtZXMoZGF0YWIpPC1kDQpuYW1lcyhkYXRhYilbNjo4XTwtcGFzdGUwKCJTUCIsMTozKQ0KbmFtZXMoZGF0YWIpWzI1OjI2XTwtcGFzdGUwKCJwYWx1IixjKCJzIiwiZyIpLHNlcD0iXyIpDQpuYW1lcyhkYXRhYilbMjA6MjFdPC1wYXN0ZTAoIkRpYXJyX3NldiIsMToyKQ0KDQpkYXRhYiRwZXJpb2RuYW1lPC1hcy5jaGFyYWN0ZXIoZGF0YWIkcGVyaW9kbmFtZSkNCm1vaXM8LWMoIk9jdG9icmUiLCJOb3ZlbWJyZSIsIkTDqWNlbWJyZSIsIkphbnZpZXIiLCJGw6l2cmllciIsIk1hcnMiLCJBdnJpbCIsIk1haSIsIkp1aW4iLCJKdWlsbGV0IiwiQW/Du3QiLCJTZXB0ZW1icmUiKQ0KZGF0YWIkbW9udGg8LXBhc3RlKG1hdGNoKGRhdGFiJHBlcmlvZG5hbWUsbW9pcyksZGF0YWIkcGVyaW9kbmFtZSxzZXA9Ii4iKQ0KZGF0YWIkbW9udGg8LXN1YnN0cihkYXRhYiRtb250aCwxLDYpDQpkYXRhYiRwZXJpb2RuYW1lPC1kYXRhYiRtb250aA0KZGF0YWIkbW9udGg8LU5VTEwNCmRhdGFnPC1kYXRhYltkYXRhYiRwZXJpb2RuYW1lICVpbiUgYygiNC5KYW52IiwiMy5Ew6ljZSIsIjIuTm92ZSIpLF0NCmRhdGFnPC1hZ2dyZWdhdGUoZGF0YWdbLDQ6bmNvbChkYXRhZyldLGxpc3QoZGF0YWckenMsZGF0YWckcGVyaW9kbmFtZSksc3VtLG5hLnJtPVQpDQpuYW1lcyhkYXRhZylbMToyXTwtYygienMiLCJwZXJpb2RuYW1lIikNCg0KdG90MiA8LSBmdW5jdGlvbih4ZCl7DQogIHA8LWMoYXMuY2hhcmFjdGVyKHhkWywxXSksJ1RvdGFsJykNCiAgYTwtYXBwbHkoeGRbLDI6bmNvbCh4ZCldLDIsc3VtLG5hLnJtPVQpDQogIGE8LXJiaW5kKHhkWywyOm5jb2woeGQpXSxhKQ0KICB1PC1kYXRhLmZyYW1lKHAsYSkNCiAgbmFtZXModSlbMV08LSJNb2lzIg0KICBhc3NpZ24oInRvdGFsIix1LGVudmlyPS5HbG9iYWxFbnYpDQp9DQoNCiNjaWJsZXM8LXJlYWQuY3N2KCJDSUJMRVMyLmNzdiIpDQojY2libGVhPC1yZWFkLmNzdjIoIkM6L1VzZXJzL011eXVuZ2FQL0RvY3VtZW50cy9QUk9TQU5JIFVTQUlEL0FOQUxZU0lTL1kyL2NpYmxlcy5jc3YiKQ0KI2NpYmxlZzwtYWdncmVnYXRlKGNpYmxlc1ssMzpuY29sKGNpYmxlcyldLGxpc3QoY2libGVzJEdyb3VwLjIpLHN1bSxuYS5ybT1UKQ0KI25hbWVzKGNpYmxlZylbMV08LSd6cycNCg0KY2libGU8LXJlYWQuY3N2KCJDOi9Vc2Vycy9NdXl1bmdhUC9Eb2N1bWVudHMvUFJPU0FOSSBVU0FJRC9BTkFMWVNJUy9ZMi9OT1ZFTUJSRS9RMS9DSUJMRVMyLmNzdiIpDQoNCmNpYmxlPC0gY2libGVbMyxdDQoNCiNzaW5rKCJuYW1lc19kYXRhLnR4dCIpDQojbmFtZXMoZGF0YWIpDQojbmFtZXMoY2libGUpDQojbmFtZXMoZGF0YWcpDQojc2luaygpDQoNCnJhcHBvcnQ8LWZ1bmN0aW9uKHhkLG4pew0KICB4eTwtc3Vic2V0KHhkLHhkJHBlcmlvZG5hbWU9PSI0LkphbnYiLHNlbGVjdD1jKDEsbiw0NykpDQogIHh5WywyXTwtcm91bmQoeHlbLDJdKjEwMDAwL3h5WywzXSkNCiAgbTwtbWF4KHh5WywyXSkNCiAgbTwtbSsuMiptDQogIHh5PC14eVtvcmRlcih4eVssMl0sZGVjcmVhc2luZz1GKSxdDQogIGY9YmFycGxvdCh4eVssMl0sbmFtZXM9eHkkenMsY29sPSJsaWdodGJsdWUiLA0KICBib3JkZXI9InJlZCIsbGFzPTIsbWFpbj1wYXN0ZTAobmFtZXMoeGQpW25dLCIvMTAwMDAiKSx5bGltPWMoMCxtKSkNCiAgeT14eVssMl0NCiAgdGV4dChmLHkrMSxsYWJlbHM9YXMuY2hhcmFjdGVyKHh5WywyXSksY2V4PS43KQ0KfQ0KDQpEaDwtZnVuY3Rpb24oeGQsbil7DQogIHh5PC1zdWJzZXQoeGQseGQkcGVyaW9kbmFtZT09IjQuSmFudiIsc2VsZWN0PWMoMSxuKSkNCiAgeHlbLDJdPC1yb3VuZCh4eVssMl0pDQogIG08LW1heCh4eVssMl0pDQogIG08LW0rLjIqbQ0KICB4eTwteHlbb3JkZXIoeHlbLDJdLGRlY3JlYXNpbmc9RiksXQ0KICBmPWJhcnBsb3QoeHlbLDJdLG5hbWVzPXh5JHpzLGNvbD0ibGlnaHRibHVlIiwNCiAgYm9yZGVyPSJyZWQiLGxhcz0yLG1haW49cGFzdGUwKG5hbWVzKHhkKVtuXSwiLzEwMDAwIikseWxpbT1jKDAsbSkpDQogIHk9eHlbLDJdDQogIHRleHQoZix5KzEsbGFiZWxzPWFzLmNoYXJhY3Rlcih4eVssMl0pLGNleD0uNykNCn0NCg0KYGBgDQogICAgDQoNCiMjIyBNQUxBUklBDQoNCiZuYnNwOw0KTGUgZG9tYWluZSBkZSBsYSBNYWxhcmlhIGNvbXByZW5kIDYgaW5kaWNhdGV1cnMgZG9udCB2b2ljaSBxdWVscXVlcyB1bnMNCg0KJm5ic3A7DQotICoqTnVtYmVyIG9mIGNoaWxkcmVuIHVuZGVyIDUgeWVhcnMgb2YgYWdlIHdpdGggY29uZmlybWVkIG1hbGFyaWEgd2hvIHJlY2VpdmVkIHRyZWF0bWVudCBmb3IgbWFsYXJpYSBmcm9tIGFuIGFwcHJvcHJpYXRlIHByb3ZpZGVyIGluIFVTRy1zdXBwb3J0ZWQgYXJlYXMgWzE1IGZlZSBwcm94eV0qKiAgDQoNCiZuYnNwOw0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCI5NDA3IiksYygiNzQ0MzAiKSxjKCIxMjYuNCIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpgYGANCg0KJm5ic3A7DQoNCg0KYGBge3J9DQphPC1kYXRhZw0KYSRwYWx1PC1yb3dTdW1zKGFbLDI0OjI1XSkNCmE8LWFnZ3JlZ2F0ZShhWyxjKDI0LG5jb2woYSkpXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtLG5hLnJtPVQpDQphJGNpYmxlPC1yb3VuZChjaWJsZSRQYWx1ZGlzbWUvMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCnRvdGFsJHBlcmNlbnQ8LXJvdW5kKHRvdGFsJHBhbHUqMTAwL3RvdGFsJGNpYmxlLDApDQprbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY3InKQ0KI2I8LWRhdGFjDQojYiRwYWx1PC1yb3dTdW1zKGJbLDIxOjIyXSxuYS5ybT1UKQ0KZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoUGFsdT1zdW0ocGFsdXNfK3BhbHVnXykpLT5wDQojcCRkZW5zaXR5PC1jbHVzJGRlbnNpdHkNCiNnZ3Bsb3QocCxhZXMoeD16cyx5PVBhbHUsZmlsbD1kZW5zaXR5KSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0idG9tYXRvIixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1QYWx1KSxjZXg9Myx2anVzdD0yKQ0KDQojYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKFBhbHU9c3VtKHBhbHUpKS0+cA0KDQojZ2dwbG90KHAsYWVzKHg9cGVyaW9kbmFtZSx5PVBhbHUpKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsZmlsbD0ibGlnaHRibHVlIixjb2w9InRvbWF0byIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9UGFsdSksY2V4PTMsdmp1c3Q9MikNCg0KYGBgDQoNCg0KJm5ic3A7DQoNCm9uIG5vdGUgdW5lIGRpbWludXRpb24gZCdlbnZpcm9uIDE3JSBkdSBub21icmUgZGUgY2FzIGRlIG1hbGFyaWEgdHJhaXTDqSBwYXIgcmFwcG9ydCBhdSBtb2lzIGRlIGTDqWNlbWJyZSwgbGVzIFpTIHBsdXMgdG91Y2jDqWVzIHNvbnQgS2F5YW1iYSwgTXVrYW5nYSxMd2FtYmEsIEtpbmtvbmRqYSBldCBCdWthbWEuIGxlcyBaUyBxdWkgb250IHJhcHBvcnRlIG1vaW5zIGRlIGNhcyBzb250IEtpbmRhLCBLYW5pYW1hIMOgIGNhdXNlIGRlIGxldXIgZmFpYmxlIGNvbXBsw6l0dWRlIHB1aXMgU29uZ2EsQnV0dW1iYSBldCBLYWJvbmdvLg0KUGFybWkgbGVzIFpTIHF1aSBvbnQgcmFwcG9ydMOpZXMgcGx1cyBkZSBjYXMsIEJ1a2FtYSBldCBNdWxvbmdvIGZvbnQgZmFjZXMgYWN0dWVsbGVtZW50IGF1eCBpbm9uZGF0aW9ucywgdGFuZGlzIHF1ZSBLYXlhbWJhIGEgdW4gdGF1eCBkJ2F0dGFxdWUgZXhjZXB0aW9ubmVsbGVtZW50IMOpbGV2w6kgZHUgcGFsdWRpc21lLiAgDQoNCiZuYnNwOw0KDQogKipSZWFsaXNhdGlvbjoqKiBQUk9TQU5JIFVTQUlEIGEgYXBwdXnDqSBsYSBmb3JtYXRpb24gZGVzIHByZXN0YXRhaXJlcyBkYW5zIGxhIHByaXNlIGVuIGNoYXJnZSBkdSBwYWx1ZGlzbWUgZGFucyBsZXMgWlMgZGUgTXVsb25nbyBldCBTb25nYSBhdSBtb2lzIGRlIGbDqXZyaWVyIDIwMjAgLg0KDQombmJzcDsNCg0KLQkqKlBlcmNlbnQgb2YgcHJlZ25hbnQgd29tZW4gd2hvIHJlY2VpdmVkIGRvc2VzIG9mIHN1bGZhZG94aW5lLyBweXJpbWV0aGFtaW5lIChTL1ApIGZvciBJbnRlcm1pdHRlbnQgUHJldmVudGl2ZSBUcmVhdG1lbnQgKElQVCkgZHVyaW5nIEFOQyB2aXNpdHMgWzIuNF0qKg0KDQombmJzcDsNCg0KYGBge3J9DQphPC1kYXRhZw0KYSRTUDwtcm93U3VtcyhhWyw1OjddKQ0KYTwtYWdncmVnYXRlKGFbLGMoMyxuY29sKGEpKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCmEkY2libGU8LWFbLDJdKjMNCnRvdDIoYSkNCnRvdGFsWywyXTwtTlVMTA0KdG90YWwkcGVyY2VudDwtcm91bmQodG90YWwkU1AqMTAwL3RvdGFsJGNpYmxlLDApDQprbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY3InKQ0KDQojYjwtZGF0YWMNCiNiJFNQPC1yb3dTdW1zKGJbLDY6OF0sbmEucm09VCkNCiNkYXRhZyU+JWdyb3VwX2J5KHpzKSU+JXN1bW1hcmlzZShTUD1zdW0oU1AxK1NQMitTUDMpKS0+cA0KI3AkZGVuc2l0eTwtY2x1cyRkZW5zaXR5DQojZ2dwbG90KHAsYWVzKHg9enMseT1TUCxmaWxsPWRlbnNpdHkpKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsY29sPSJ0b21hdG8iLGFscGhhPS43KSt0aGVtZV9jbGFzc2ljKCkrbGFicyh4PSIiKSt0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTApKStnZW9tX3RleHQoYWVzKGxhYmVsPVNQKSxjZXg9Myx2anVzdD0yKQ0KDQojYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKHNwYT1zdW0oU1AxK1NQMitTUDMsbmEucm09VCksY3BuYT1zdW0oQ1BOLG5hLnJtPVQpKSU+JSBtdXRhdGUoU1A9cm91bmQoc3BhKjEwMC8oY3BuYSozKSkpLT5wDQoNCiNnZ3Bsb3QocCxhZXMoeD1wZXJpb2RuYW1lLHk9U1ApKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsZmlsbD0ibGlnaHRibHVlIixjb2w9InRvbWF0byIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9U1ApLGNleD0zLHZqdXN0PTIpDQoNCg0KYGBgDQoNCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiOTEuMCIpLGMoIjM3NTE4IiksYygiNDEyNDUiKSxjKCIxMDAiKSxjKCc5MS4wJykpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCdOdW1lcmF0b3InLCdEZW5vbWluYXRvcicsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpgYGANCg0KJm5ic3A7ICANCiZuYnNwOyAgDQoNCm9uIG5vdGUgdW5lIGF1Z21lbnRhdGlvbiBkZSBkZSA5JSBwYXIgcmFwcG9ydCDDoCBsYSByw6lhbGlzYXRpb24gZGUgRMOpY2VtYnJlIDIwMTksTGVzIFpTIGRlIEtpbmRhLCBTb25nYSxCYWthLEJ1dHVtYmEgZXQgS2Fib25kbyBEaWFuZGEgZXRhaWVudCBlZ2FsZW1lbnQgcGFybWlzIGxlcyBwbHVzIGZhaWJsZXMgYXUgZGVybmllciB0cmltZXN0cmUgMjAxOS4NCkxlcyBaUyBxdWkgb250IGV0ZSBwbHVzIHBlcmZvcm1hbnRlcyBzb250OiBCdWthbWEsS2FtaW5hLEtpdGVuZ2UsS2F5YW1iYSBldCBMd2FtYmENCg0KKipSZWFsaXNhdGlvbnM6KiogaWwgeSBhIGV1IGJyaWVmaW5nIGRlcyBwcmVzdGF0YWlyZXMgc3VyIGxhIHByZXZlbnRpb24gaW50ZXJtaXR0ZW50ZSBkdSBwYWx1ZGlzbWUgZGFucyBsYSBaUyBkZSBCQUtBLg0KDQombmJzcDsNCiZuYnNwOw0KDQojIyBNQVRFUk5BTCwgTkVPTkFUQUwsIEFORCBDSElMRCBIRUFMVEgNCiZuYnNwOw0KJm5ic3A7DQotCSoqTnVtYmVyIG9mIGNoaWxkcmVuIHVuZGVyIGZpdmUgeWVhcnMgb2YgYWdlIHRoYXQgcmVjZWl2ZWQgdHJlYXRtZW50IGZvciBhbiBhY3V0ZSByZXNwaXJhdG9yeSBpbmZlY3Rpb24gZnJvbSBhbiBhcHByb3ByaWF0ZSBwcm92aWRlciBbNSBmZWUgcHJveHldKiogDQpgYGB7cn0NCmE8LWRhdGFnDQphJFBuZXVtb25pZTwtcm93U3VtcyhhWywyMjoyM10pDQphPC1hZ2dyZWdhdGUoYVssYygyMixuY29sKGEpKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCmEkY2libGU8LXJvdW5kKGNpYmxlJFBuZXVtb25pZS8xMikNCnRvdDIoYSkNCnRvdGFsWywyXTwtTlVMTA0KdG90YWwkcGVyY2VudDwtcm91bmQodG90YWwkUG5ldW1vbmllKjEwMC90b3RhbCRjaWJsZSwwKQ0Ka25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NyJykNCg0KI2I8LWRhdGFjDQojYiRwbmV1bTwtcm93U3VtcyhiWywxOToyMF0sbmEucm09VCkNCiNkYXRhZyU+JWdyb3VwX2J5KHpzKSU+JXN1bW1hcmlzZShwbmV1bT1zdW0oUG5ldW1vbmllLnNpbXBsZS5hbnMrUG5ldW1vbmllLmdyYXZlLmFucyxuYS5ybT1UKSktPnANCiNwJGRlbnNpdHk8LWNsdXMkZGVuc2l0eQ0KI2dncGxvdChwLGFlcyh4PXpzLHk9cG5ldW0sZmlsbD1kZW5zaXR5KSkrZ2VvbV9iYXIoc3RhdD0naWRlbnRpdHknLGNvbD0idG9tYXRvIixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1wbmV1bSksY2V4PTMsdmp1c3Q9MikNCg0KI2IlPiVncm91cF9ieShwZXJpb2RuYW1lKSU+JXN1bW1hcmlzZShwbmV1bT1zdW0oUG5ldW1vbmllLnNpbXBsZS5hbnMrUG5ldW1vbmllLmdyYXZlLmFucyxuYS5ybT1UKSktPnANCg0KI2dncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1wbmV1bSkpK2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5JyxmaWxsPSJsaWdodGJsdWUiLGNvbD0idG9tYXRvIixhbHBoYT0uNykrdGhlbWVfY2xhc3NpYygpK2xhYnMoeD0iIikrdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkrZ2VvbV90ZXh0KGFlcyhsYWJlbD1wbmV1bSksY2V4PTMsdmp1c3Q9MikNCmBgYA0KDQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjE5ODcyIiksYygiMjE1ODEiKSxjKCI5Mi4xIikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlKCUpIikpDQoNCmBgYA0KDQombmJzcDsgIA0KJm5ic3A7ICANCg0KUGFyIHJhcHBvcnQgYXUgbW9pcyBkZSBEw6ljZW1icmUgMjAxOSwgY2VzIHLDqXN1bHRhdHMgbW9udHJlbnQgdW5lIGzDqWfDqHJlIGRpbWludXRpb24gZGUgNCUuIExlcyBaUyBkZSBLaW5kYSxLYWJvbmdvLEthbmlhbWEgc29udCB0csOocyBmYWlibGVzLiBMZSBubyxicmUgZGUgY2FzIHJhcHBvcnTDqSBhIMOpdMOpIMOpbGV2w6kgZGFucyBsZXMgWlMgc3VpdmFudGVzOiBLaXRlbmdlLCBNYWxlbWJhLCBCdWthbWEsIEtpbmtvbmRqYSwgS2F5YW1iYS4gDQoNCioqUmVhbGlzYXRpb25zOioqDQppbCB5IGEgZXUgZm9ybWF0aW9uIGRlcyBmb3JtYXRldXJzIHByb3ZpbmNpYXV4IGV0IMOpZ2FsZW1lbnQgZm9ybWF0aW9uIGRlIHF1ZWxxdWVzIHByZXN0YXRhaXJlcyBlbiBQQ0lNRSBldCBlbiBvcmRpbm9ncmFtbWVzIGVuIGbDqXZyaWVyIDIwMjAuIExhIFpTIGRlIEthYm9uZ28gY29ubmFpdCB1biBzb3VzIHJhcHBvcnRhZ2UgZGUgY2V0IGluZGljYXRldXIsIGVsbGUgc2VyYSB2aXNpdMOpZSBhdSBtb2lzIGRlIG1hcnMgZGFucyBsZSBjYWRyZSBkdSBjb250csO0bGUgZGUgbGEgcXVhbGl0w6kgZGVzIGRvbm7DqWVzLg0KLg0KDQombmJzcDsNCiZuYnNwOw0KDQotICoqTnVtYmVyIG9mIGluc2VjdGljaWRlLXRyZWF0ZWQgbmV0cyAoSVROKSBkaXN0cmlidXRlZCBkdXJpbmcgYW50ZW5hdGFsIGFuZC9vciBjaGlsZCBpbW11bml6YXRpb24gdmlzaXRzKioNCg0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCIyMjk1OCIpLGMoIjI2MDQ1IiksYygiODguMSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSglKSIpKQ0KDQpgYGANCg0KYGBge3J9DQphPC1kYXRhZw0KYSRNaWxkPC1yb3dTdW1zKGFbLDI5OjM0XSkNCmE8LWFnZ3JlZ2F0ZShhWyxjKDI5LG5jb2woYSkpXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtcm91bmQoY2libGUkTUlMRC8xMikNCnRvdDIoYSkNCnRvdGFsWywyXTwtTlVMTA0KdG90YWwkcGVyY2VudDwtcm91bmQodG90YWwkTWlsZCoxMDAvdG90YWwkY2libGUsMCkNCmtuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQpgYGANCg0KJm5ic3A7DQombmJzcDsNCg0KQ2VzIHLDqXN1bHRhdHMgbW9udHJlbnQgcXVlIGxhIGRpc3RyaWJ1dGlvbiBkZXMgTWlsZHMgYSDDqXTDqSB0csOocyBmYWlibGUgZW4gamFudmllcixlbGxlIG4nYSBwdSByZWFsaXNlciBxdWUgNDUlIGRlcyBvYmplY3RpZnMgbWVuc3VlbHMuDQpMZXMgWlMgZGUgS2F5YW1iYSBldCBCYWthICBvbnQgw6l0w6kgcmVsYXRpdmVtZW50IHBlcmZvcm1hbnRlcyB0YW5kaXMgcXVlIEJ1a2FtYSxLYWJvbmRvIERpYW5kYSxLaW5kYSBldCBNYWxlbWJhIG4nb250IHBhcyBkaXN0cmlidWUgZGVzIE1pbGRzDQoNCiZuYnNwOw0KDQotCSoqTnVtYmVyIG9mIGNhc2VzIG9mIGNoaWxkIGRpYXJyaGVhIHRyZWF0ZWQgaW4gVVNHLXN1cHBvcnRlZCBwcm9ncmFtcyBbNyBmZWUgcHJveHldKioNCiZuYnNwOw0KYGBge3J9DQphPC1kYXRhZw0KYSREaWFycmhlZTwtcm93U3VtcyhhWywxOToyMV0pDQphPC1hZ2dyZWdhdGUoYVssYygxOSxuY29sKGEpKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCmEkY2libGU8LXJvdW5kKGNpYmxlJERpYXJyaGVlLzEyKQ0KdG90MihhKQ0KdG90YWxbLDJdPC1OVUxMDQp0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCREaWFycmhlZSoxMDAvdG90YWwkY2libGUsMCkNCmtuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQoNCiNiPC1kYXRhYw0KI2IkRGlhcnJoPC1yb3dTdW1zKGJbLDE2OjE4XSxuYS5ybT1UKQ0KI25hbWVzKGIpWzE4XTwtImRpYXMiDQojbmFtZXMoZGF0YWcpWzE3XTwtImRpYXMiDQojZGF0YWclPiVncm91cF9ieSh6cyklPiVzdW1tYXJpc2UoRGlhcnJoPXN1bShEaWFycl9zZXYxK0RpYXJyX3NldjIrZGlhcyxuYS5ybT1UKSktPnANCiNwJGRlbnNpdHk8LWNsdXMkZGVuc2l0eQ0KI2dncGxvdChwLGFlcyh4PXpzLHk9RGlhcnJoLGZpbGw9ZGVuc2l0eSkpK2dlb21fYmFyKHN0YXQ9J2lkZW50aXR5Jyxjb2w9InRvbWF0byIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9RGlhcnJoKSxjZXg9Myx2anVzdD0yKQ0KDQojYiU+JWdyb3VwX2J5KHBlcmlvZG5hbWUpJT4lc3VtbWFyaXNlKERpYXJyaD1zdW0oRGlhcnJfc2V2MStEaWFycl9zZXYyK0RpYXJyaCtkaWFzKSktPnANCg0KI2dncGxvdChwLGFlcyh4PXBlcmlvZG5hbWUseT1EaWFycmgpKStnZW9tX2JhcihzdGF0PSdpZGVudGl0eScsZmlsbD0ibGlnaHRibHVlIixjb2w9InRvbWF0byIsYWxwaGE9LjcpK3RoZW1lX2NsYXNzaWMoKStsYWJzKHg9IiIpK3RoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCkpK2dlb21fdGV4dChhZXMobGFiZWw9RGlhcnJoKSxjZXg9Myx2anVzdD0yKQ0KDQpgYGANCg0KDQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjI1NTQzIiksYygiMjU0ODYiKSxjKCIxMDAuMiIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpgYGANCg0KDQombmJzcDsNCg0Kb24gcmVtYXJxdWUgcXUnaWwgeSBhIHVuZSBkaW1pbnV0aW9uIGRlIDExJSBkdSBub21icmUgZGUgY2FzIGRlIGRpYXJyaMOpZSB0cmFpdMOpICBwYXIgcmFwcG9ydCBhdSBtb2lzIGRlIETDqWNlbWJyZSBhdmVjIGRlcyBaUyBxdWkgb250IHJhcHBvcnTDqSBwbHVzIGRlIGNhczpLYXlhbWJhLE11bG9uZ28sIEtpbmtvbmRqYSxNYWxlbWJhLEtpdGVuZ2UgZXQgQnVrYW1hLiBMYSBaUyBkZSBLYXlhbWJhIGVzdCBsYSBwbHVzIGF0dGVpbnRlIHNpIG9uIHJhcHBvcnRlIHNlcyBkb25uw6llcyDDoCBsYSBwb3B1bGF0aW9uKDQ2LzEwMDAwIGNhcyBkZSBEaWFycmjDqWUgYWxvcnMgcXVlIE11bG9uZ28gbidhIHF1ZSAzNi8xMDAwMCkgIA0KDQpMZXMgWlMgcXVpIG9udCByYXBwb3J0w6kgbW9pbnMgZGUgY2FzIHNvbnQgS2luZGEsQmFrYSxMd2FtYmEsQnV0dW1iYSBldCBNdWthbmdhLg0KDQombmJzcDsNCg0KKipSZWFsaXNhdGlvbnM6KioNCmlsIHkgYSBldSBmb3JtYXRpb24gZGVzIGZvcm1hdGV1cnMgcHJvdmluY2lhdXggZXQgw6lnYWxlbWVudCBmb3JtYXRpb24gZGUgcXVlbHF1ZXMgcHJlc3RhdGFpcmVzIGVuIFBDSU1FIGV0IGVuIG9yZGlub2dyYW1tZXMuIA0KDQombmJzcDsNCiZuYnNwOw0KDQoNCi0JKipOdW1iZXIgb2YgY2hpbGRyZW4gbGVzcyB0aGFuIDEyIG1vbnRocyBvZiBhZ2Ugd2hvIHJlY2VpdmVkIHRocmVlIGRvc2VzIG9mIHBlbnRhdmFsZW50IHZhY2NpbmUgWzkgZmVlIHByb3h5XSoqDQombmJzcDsNCmBgYHtyfQ0KYTwtZGF0YWcNCmEkUGVudGE8LXJvd1N1bXMoYVssMjY6MjhdKQ0KYTwtYWdncmVnYXRlKGFbLGMoMjYsbmNvbChhKSldLGxpc3QoYSRwZXJpb2RuYW1lKSxzdW0sbmEucm09VCkNCmEkY2libGU8LXJvdW5kKGNpYmxlJERUQ19IZXBCLzEyKQ0KdG90MihhKQ0KdG90YWxbLDJdPC1OVUxMDQp0b3RhbCRwZXJjZW50PC1yb3VuZCh0b3RhbCRQZW50YSoxMDAvdG90YWwkY2libGUsMCkNCmtuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQpgYGANCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMzA2NTIiKSxjKCIzMTM1MyIpLGMoIjk3LjgiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUiKSkNCg0KYGBgDQoNCiZuYnNwOyAgDQombmJzcDsgIA0Kb24gbm90ZSB1bmUgcmVncmVzc2lvbiBkZSAzJSBwYXIgcmFwcG9ydCBhIGxhIHByb3BvcnRpb24gZHUgbW9pcyBkZSBEw6ljZW1icmUsIGxlcyBaUyBkZSBLaW5kYSBldCBLYW5pYW1hIG9udCB1bmUgZmFpYmxlIGNvbXBsw6l0dWRlIGRhbnMgbGUgREhJUzIuICANCkxlcyBaUyBxdWkgb250IGJlYXVjb3VwIHZhY2NpbsOpIHNvbnQgS2FtaW5hLEtheWFtYmEsTHdhbWJhLCBNYWxlbWJhIGV0IEtpbmtvbmRqYSAgDQpMZXMgWlMgcXVpIG9udCBtb2lucyB2YWNjaW7DqSBzb250OiBLaW5kYSxLYW5pYW1hLCBCYWthIGV0IEtpdGVuZ2UuICANCg0KJm5ic3A7DQoNCi0JKipQZXJjZW50IG9mIGNoaWxkcmVuIGxlc3MgdGhhbiAxMiBtb250aHMgb2YgYWdlIHdobyByZWNlaXZlZCBtZWFzbGVzIHZhY2NpbmUgZnJvbSBVU0ctc3VwcG9ydGVkIHByb2dyYW1zIFsxMF0qKg0KDQombmJzcDsNCg0KYGBge3J9DQphPC1kYXRhZw0KYSRWQVI8LXJvd1N1bXMoYVssNDE6NDNdKQ0KYTwtYWdncmVnYXRlKGFbLGMoNDEsbmNvbChhKSldLGxpc3QoYSRwZXJpb2RuYW1lKSxzdW0pDQphJGNpYmxlPC1yb3VuZChjaWJsZSRWQVIvMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCnRvdGFsJHBlcmNlbnQ8LXJvdW5kKHRvdGFsJFZBUioxMDAvdG90YWwkY2libGUsMCkNCmtuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQpgYGANCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMzE0MDgiKSxjKCIzMDE2OCIpLGMoIjk2LjEiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUiKSkNCg0KYGBgDQoNCiZuYnNwOyAgDQoNCkxlcyByw6lzdWx0YXRzIGRlIGphbnZpZXIgZGVwYXNzZW50IGNldXggIGRlIETDqWNlbWJyZSBkZSAyJS4gIA0KTGVzIFpTIHF1aSBvbnQgZXUgdW5lIGJvbm5lIGNvdXZlcnR1cmUgc29udDpTb25nYSxCdWthbWEsTXVsb25nbyxNYWxlbWJhIGV0IEtheWFtYmEuICANCg0KTGVzIFpTIG1vaW5zIHBlcmZvcm1hbnRlcyBzb250OktpbmRhLEJha2EsTHdhbWJhIGV0IEthbmlhbWEuICANCg0KJm5ic3A7DQombmJzcDsNCg0KLSAqKlBlcmNlbnRhZ2Ugb2YgcHJlZ25hbnQgd29tZW4gYXR0ZW5kaW5nIGF0IGxlYXN0IG9uZSBhbnRlbmF0YWwgY2FyZSAoQU5DKSB2aXNpdCB3aXRoIGEgc2tpbGxlZCAgcHJvdmlkZXIgZnJvbSBVU0ctIHN1cHBvcnRlZCBoZWFsdGggZmFjaWxpdGllcyoqDQoNCiZuYnNwOw0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCI5MSIpLGMoIjM3NTE4IiksYygiNDEyNDUiKSxjKCIxMDAiKSxjKCI5MSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiTnVtZXJhdG9yIiwiRGVub21pbmF0b3IiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUoJSkiKSkNCg0KYGBgDQoNCiZuYnNwOyAgDQombmJzcDsgIA0KDQombmJzcDsNCg0KLQkqKlBlcmNlbnRhZ2Ugb2YgcHJlZ25hbnQgd29tZW4gYXR0ZW5kaW5nIGF0IGxlYXN0IG9uZSBhbmQgYXQgbGVhc3QgNCBhbnRlbmF0YWwgY2FyZSAoQU5DKSB3aXRoIGEgc2tpbGxlZCBwcm92aWRlciBmcm9tIFVTRy1zdXBwb3J0ZWQgaGVhbHRoIGZhY2lsaXRpZXMgWzEyIGZlZV0qKg0KJm5ic3A7DQpgYGB7cn0NCmE8LWRhdGFnDQphJENQTl80PC1hWyw0XQ0KYTwtYWdncmVnYXRlKGFbLGMoNCxuY29sKGEpKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCmEkY2libGU8LXJvdW5kKGNpYmxlJENQTjQvMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCnRvdGFsJHBlcmNlbnQ8LXJvdW5kKHRvdGFsJENQTl80KjEwMC90b3RhbCRjaWJsZSwwKQ0Ka25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NyJykNCg0KYGBgDQoNCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiMTk4NjAiKSxjKCIxNzg5NyIpLGMoIjExMSIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSIpKQ0KDQpgYGANCg0KJm5ic3A7DQoNCmlsIHkgYSB1bmUgZGltaW51dGlvbiBkZSAzJSBwYXIgcmFwcG9ydCBhdSBtb2lzIGRlIETDqWNlbWJyZSwgbGVzIFpTIGF5YW50IHVuIGZvcnQgdGF1eCBkZSBjb3V2ZXJ0dXJlIGVuIENQTiBzb250Okx3YW1iYSxCdWthbWEsS2l0ZW5nZSwgS2F5YW1iYSBldCBLYW1pbmEuICANCkxlcyBaUyBtb2lucyBwZXJmb3JtYW50ZXMgc29udDpLaW5kYSxCYWthLEx3YW1iYSBldCBTb25nYSAgDQoNCg0KLQkqKlBlcmNlbnRhZ2Ugb2YgZGVsaXZlcmllcyB3aXRoIGFuIFNCQSBpbiBVU0ctc3VwcG9ydGVkIGZhY2lsaXRpZXMqKiAgDQoNCmBgYHtyfQ0KYTwtZGF0YWcNCmEkQWNjPC1hWyw4XQ0KYTwtYWdncmVnYXRlKGFbLGMoOCwzNyxuY29sKGEpKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCnRvdDIoYSkNCnRvdGFsJEFjY19QPC1yb3VuZCh0b3RhbCRBY2MqMTIwMC8odG90YWxbLDNdKi4wNCksMCkNCnRvdGFsJGNpYmxlNDwtcm91bmQodG90YWxbLDNdKi4wNC8xMikNCnRvdGFsWywyOjNdPC1OVUxMDQp0b3RhbCRjaWJsZT05MA0KdG90YWw8LXRvdGFsWyxjKDEsMiw0LDUsMyldDQoja25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIk1vaXMiLCJBY2NBc3Npc3QiLCJDaWJsZTQiLCJDaWJsZTkwIiwiJSIpKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCI3NiIpLGMoIjMxMzY0IiksYygiNDEyNDUiKSxjKCI5MCIpLGMoIjg0LjUiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJRMSBBY2hpZXZlbWVudCIsIk51bWVyYXRvciIsIkRlbm9taW5hdG9yIiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlIikpDQoNCmBgYA0KDQombmJzcDsNCg0KJm5ic3A7DQoNCi0JKipOdW1iZXIgb2Ygd29tZW4gZ2l2aW5nIGJpcnRoIHdobyByZWNlaXZlZCB1dGVyb3RvbmljcyBpbiB0aGUgdGhpcmQgc3RhZ2Ugb2YgbGFib3IgKE9SIGltbWVkaWF0ZWx5IGFmdGVyIGJpcnRoKSB0aHJvdWdoIFVTRy1zdXBwb3J0ZWQgcHJvZ3JhbXMgWzIuMS40XSoqDQoNCiZuYnNwOw0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCIxNTg0IiksYygiMjE3OCIpLGMoIjcyLjciKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUiKSkNCg0KYGBgDQoNCg0KYGBge3J9DQphPC1kYXRhZw0KYSRHYXRwYTwtYVssOV0NCmE8LWFnZ3JlZ2F0ZShhWyxjKDksbmNvbChhKSldLGxpc3QoYSRwZXJpb2RuYW1lKSxzdW0pDQphJGNpYmxlPC1yb3VuZChjaWJsZSRHYXRwYS8xMikNCnRvdDIoYSkNCnRvdGFsWywyXTwtTlVMTA0KdG90YWwkcGVyY2VudDwtcm91bmQodG90YWwkR2F0cGEqMTAwL3RvdGFsJGNpYmxlLDApDQprbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY3InKQ0KYGBgDQoNCiZuYnNwOw0KDQombmJzcDsNCg0Kb24gbm90ZSBxdWUgbGUgbm9tYnJlIGRlcyBmZW1tZXMgcXVpIG9udCByZcOndSBsYSBHYXRwYSBhdWdtZW50ZSBlbiBEw6ljZW1icmUgIGV0IGVuIGphbnZpZXIsIGxlcyBaUyBxdWkgb250IHJhcHBvcnTDqSBsZSBwbHVzIGRlIGNhcyBzb250OiBLaXRlbmdlLEJ1a2FtYSxLYW5pYW1hLCBLYWJvbmdvLiBLYWJvbmdvIGV0IEJ1a2FtYSBvbnQgdW4gaW1wb3J0YW50IHBvaWQgZGVtb2dyYXBoaXF1ZSB0YW5kaXMgcXVlIHBvdXIgS2l0ZW5nZSBldCBLYW5pYW1hLCBkJ2F1dHJlcyBmYWN0ZXVycyBmYXZvcmlzYW50cyBkb2l2ZW50IMOqdHJlIHJlY2hlcmNow6lzLg0KDQoNCi0JKipOdW1iZXIgYW5kIHBlcmNlbnRhZ2Ugb2YgbmV3Ym9ybnMgcmVjZWl2aW5nIGVzc2VudGlhbCBuZXdib3JuIGNhcmUgdGhyb3VnaCBVU0ctc3VwcG9ydGVkIHByb2dyYW1zKioNCg0KYGBge3J9DQphPC1kYXRhZw0KYSRTb2luc19lc3M8LWFbLDM4XQ0KYTwtYWdncmVnYXRlKGFbLGMoMTEsMzgsbmNvbChhKSldLGxpc3QoYSRwZXJpb2RuYW1lKSxzdW0pDQp0b3QyKGEpDQp0b3RhbCRjaWJsZTwtMTAwDQp0b3RhbCRTb2Vzc19QPC1yb3VuZCh0b3RhbCRTb2luc19lc3MqMTAwL3RvdGFsWywyXSkNCnRvdGFsWywzXTwtTlVMTA0KdG90YWwkY2libGU9MTAwDQprbml0cjo6a2FibGUodG90YWwsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiTW9pcyIsIk5haXNzVml2IiwiU29pbnNFc3MiLCJDaWJsZSIsIiUiKSkNCmBgYA0KDQoNCg0KYGBge3J9DQphIDwtIGRhdGEuZnJhbWUoYygiS2F0YW5nYSIpLGMoIkhhdXQgTG9tYW1pIiksYygiOTAiKSxjKCIxMDAiKSxjKCI4OS45IikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlIikpDQoNCmBgYA0KDQombmJzcDsNCg0KaWwgeSBhIHVuZSBhdWdtZW50YXRpb24gZGUgMiUgcGFyIHJhcHBvcnQgw6AgRMOpY2VtYnJlIDIwMTksIHBhcm1pIGxlcyBaUyBxdWkgb250IHJhcHBvcnTDqSBwbHVzIGRlIGNhcyBpbCB5IGE6IEx3YW1iYSxNYWxlbWJhLEtpdGVuZ2UsS2lua29uZGphLEtheWFtYmEuICANCkxlcyBaUyBtb2lucyBwZXJmb3JtYW50ZXMgc29udDpLaW5kYSxLYWJvbmRvIERpYW5kYSxCdXR1bWJhLEthbmlhbWEgIA0KDQombmJzcDsNCiZuYnNwOw0KDQoNCi0JKipOdW1iZXIgb2YgcG9zdHBhcnR1bS9uZXdib3JuIHZpc2l0cyB3aXRoaW4gdGhyZWUgZGF5cyBvZiBiaXJ0aCBpbiBVU0ctc3VwcG9ydGVkIHByb2dyYW1zIFsyLjEuNl0qKg0KDQpgYGB7cn0NCmE8LWRhdGFnDQphJENQT05fMTwtYVssMzddDQphPC1hZ2dyZWdhdGUoYVssYygzNyxuY29sKGEpKV0sbGlzdChhJHBlcmlvZG5hbWUpLHN1bSkNCmEkY2libGU8LXJvdW5kKGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKGNpYmxlJENQb04xKSkvMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCnRvdGFsJHBlcmNlbnQ8LXJvdW5kKHRvdGFsJENQT05fMSoxMDAvdG90YWwkY2libGUsMCkNCmtuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQpgYGANCg0KJm5ic3A7DQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCIyODAyOCIpLGMoIjIzNTU5IiksYygiMTE5IikpDQoNCiNrbml0cjo6a2FibGUoYSwicGFuZG9jIixhbGlnbj0nbGNjY3InLGNvbC5uYW1lcz1jKCJSZWdpb24iLCJQcm92aW5jZSIsIkFjaGlldmVtZW50IiwiVGFyZ2V0IiwiQWNoaWV2bWVudCBSYXRlKCUpIikpDQoNCmBgYA0KDQombmJzcDsNCmlsIHkgYSB1bmUgcmVncmVzc2lvbiBkZSA2JSBwYXIgcmFwcG9ydCBhdSBtb2lzIHByw6ljZWRlbnQsIGF2ZWMgZGVzIFpTIHBsdXMgcGVyZm9ybWFudGVzIChMd2FtYmEsS2F5YW1iYSxLaXRlbmdlLEJha2EpIGV0IGxlcyBaUyBxdWkgb250IHVuIGZhaWJsZSB0YXV4KEthYm9uZG8sIEJ1dHVtYmEsS2FuaWFtYSkgIA0KDQombmJzcDsNCg0KLQkqKkRyb3Atb3V0IHJhdGUgaW4gRFRQLUhlcEItSGliMyBhbW9uZyBjaGlsZHJlbiBsZXNzIHRoYW4gMTIgbW9udGhzIG9mIGFnZSBbMi4xLjldKioNCg0KJm5ic3A7DQoNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjIuMyIpLGMoIjQiKSxjKCIxNDIuOCIpKQ0KDQoja25pdHI6OmthYmxlKGEsInBhbmRvYyIsYWxpZ249J2xjY2NyJyxjb2wubmFtZXM9YygiUmVnaW9uIiwiUHJvdmluY2UiLCJBY2hpZXZlbWVudCIsIlRhcmdldCIsIkFjaGlldm1lbnQgUmF0ZSglKSIpKQ0KDQpgYGANCg0KJm5ic3A7ICANCg0KJm5ic3A7DQombmJzcDsNCiZuYnNwOw0KDQojIyBOVVRSSVRJT04NCg0KLQlOdW1iZXIgb2YgaW5kaXZpZHVhbHMgcmVjZWl2aW5nIG51dHJpdGlvbi1yZWxhdGVkIHByb2Zlc3Npb25hbCB0cmFpbmluZyB0aHJvdWdoIFVTRyBzdXBwb3J0ZWQgbnV0cmlvbiBwcm9ncmFtcyBbMi4xLjEwXQ0KDQotCU51bWJlciBvZiBjaGlsZHJlbiB1bmRlci1maXZlICgwLTU5IG1vbnRocykgcmVhY2hlZCBieSBVU0ctc3VwcG9ydGVkIG51dHJpdGlvbiBwcm9ncmFtcyBbMi4xLjExXQ0KDQombmJzcDsNCmBgYHtyfQ0KYSA8LSBkYXRhLmZyYW1lKGMoIkthdGFuZ2EiKSxjKCJIYXV0IExvbWFtaSIpLGMoIjM1MzA5MSIpLGMoIjE1ODQ1NiIpLGMoIjQ0LjkiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUoJSkiKSkNCg0KYGBgDQoNCg0KYGBge3J9DQphPC1kYXRhZw0KYSROdXRyaXRpb248LWFbLDQwXQ0KYTwtYWdncmVnYXRlKGFbLGMoNDAsbmNvbChhKSldLGxpc3QoYSRwZXJpb2RuYW1lKSxzdW0pDQphJGNpYmxlPC1yb3VuZChjaWJsZSROdXRyX2Nwcy8xMikNCnRvdDIoYSkNCnRvdGFsWywyXTwtTlVMTA0KdG90YWwkcGVyY2VudDwtcm91bmQodG90YWwkTnV0cml0aW9uKjEwMC90b3RhbCRjaWJsZSwwKQ0Ka25pdHI6OmthYmxlKHRvdGFsLCJwYW5kb2MiLGFsaWduPSdsY2NyJykNCmBgYA0KDQombmJzcDsNCg0KdW5lIGzDqWfDqHJlIGF1Z21lbnRhdGlvbiBkZXMgZW5mYW50cyB2dXMgYSBsYSBEUFMgYSDDqXTDqSBvYnNlcnbDqWUgZW4gamFudmllciBwYXIgcmFwcG9ydCDDoCBEw6ljZW1icmUsIGNlIHBow6lub23DqG5lIHBldXQgw6p0cmUgY29ycmVsw6kgcG9zaXRpdmVtZW50IGF2ZWMgbCdhdWdtZW50YXRpb24gZGUgY2FzIGRlIHBhbHVkaXNtZSBkYW5zIGNldHRlIHRyYW5jaGUuDQoNCg0KJm5ic3A7DQombmJzcDsNCiZuYnNwOw0KDQojIyBSRVBST0RVQ1RJVkUgSEVBTFRIL0ZBTUlMWSBQTEFOTklORw0KDQombmJzcDsNCg0KLQkqKk51bWJlciBvZiBuZXcgYWNjZXB0b3JzIHVzaW5nIG1vZGVybiBjb250cmFjZXB0aXZlIG1ldGhvZHMgaW4gVVNHLXN1cHBvcnRlZCBmYWNpbGl0aWVzIFszIGZlZSBwcm94eV0qKg0KDQpgYGB7cn0NCmE8LWRhdGFnDQphJEFjY2VwdDwtKGFbLDEyXSkNCmE8LWFnZ3JlZ2F0ZShhWyxjKDEyLG5jb2woYSkpXSxsaXN0KGEkcGVyaW9kbmFtZSksc3VtKQ0KYSRjaWJsZTwtcm91bmQoY2libGUkTmxsZV9hY2NlcHQvMTIpDQp0b3QyKGEpDQp0b3RhbFssMl08LU5VTEwNCnRvdGFsJHBlcmNlbnQ8LXJvdW5kKHRvdGFsJEFjY2VwdCoxMDAvdG90YWwkY2libGUsMCkNCmtuaXRyOjprYWJsZSh0b3RhbCwicGFuZG9jIixhbGlnbj0nbGNjcicpDQoNCmBgYA0KDQpgYGB7cn0NCmEgPC0gZGF0YS5mcmFtZShjKCJLYXRhbmdhIiksYygiSGF1dCBMb21hbWkiKSxjKCIzMzM3MiIpLGMoIjIwNDA1IiksYygiMTYzLjUiKSkNCg0KI2tuaXRyOjprYWJsZShhLCJwYW5kb2MiLGFsaWduPSdsY2NjcicsY29sLm5hbWVzPWMoIlJlZ2lvbiIsIlByb3ZpbmNlIiwiQWNoaWV2ZW1lbnQiLCJUYXJnZXQiLCJBY2hpZXZtZW50IFJhdGUoJSkiKSkNCg0KYGBgDQoNCiZuYnNwOw0KDQpPbiBub3RlIHVuZSBhdWdlbWVudGF0aW9uIGRlIG5vdXZlbGxlcyBhY2NlcHRhbnRlcyBkZSAyIiUgcGFyIHJhcHBvcnQgZW4gRMOpY2VtYnJlLCBsZXMgWlMgcGx1cyBwZXJmb3JtYW50ZXMgc29udDogS2Fib25nbywgS2l0ZW5nZSwgTXVsb25nbyBldCBNYWxlbWJhLg0KY2VwZW5kYW50IGNlcnRhaW5lcyBaUyBvbnQgw6l0w6kgbW9pbnMgcGVyZm9ybWFudGVzIHRlbCBxdWU6IEJha2EsS2Fib25kb0QsQnV0dW1iYSBldCBLaW5kYS4gDQoNCg0KJm5ic3A7DQoNCi0JKipOdW1iZXIgb2YgY291bnNlbGluZyB2aXNpdHMgZm9yIEZQLyBSSCBhcyByZXN1bHQgb2YgVVNHIHN1cHBvcnQgWzIuM10qKg0KDQoNCiMjIFRVQkVSQ1VMT1NJUw0KDQotCVRCIG5vdGlmaWNhdGlvbiByYXRlIHRocm91Z2ggVVNHLSBzdXBwb3J0ZWQgcHJvZ3JhbXMgWzIuMS4xN10NCg0KLQlOdW1iZXIgb2YgbXVsdGktZHJ1ZyByZXNpc3RhbnQgVEIgKE1EUi1UQikgY2FzZXMgZGV0ZWN0ZWQgWzIuMS4yMF0NCg0KIyMgV0FURVIsIFNBTklUQVRJT04sIEFORCBIWUdJRU5FDQoNCi0JTnVtYmVyIG9mIHBlb3BsZSBnYWluaW5nIGFjY2VzcyB0byBiYXNpYyBkcmlua2luZyB3YXRlciBzZXJ2aWNlcyBhcyBhIHJlc3VsdCBvZiBVU0cgYXNzaXN0YW5jZSBbMi42LjJdDQoNCi0JTnVtYmVyIG9mIHBlb3BsZSBnYWluaW5nIGFjY2VzcyB0byBhIGJhc2ljIHNhbml0YXRpb24gc2VydmljZSBhcyBhIHJlc3VsdCBvZiBVU0cgYXNzaXN0YW5jZSBbMi42LjNdDQoNCiMgNC5SRVBPUlRJTkcgQlkgUFJPR1JBTSBBQ1RJVklUSUVTDQoNCg0KIA0KIyMgT0JKRUNUSVZFIDE6IFNUUkVOR1RIRU4gSEVBTFRIIFNZU1RFTVMsIEdPVkVSTkFOQ0UsIEFORCBMRUFERVJTSElQIEFUIFBST1ZJTkNJQUwsIEhFQUxUSCBaT05FLCBBTkQgRkFDSUxJVFkgTEVWRUxTIElOIFRBUkdFVCBIRUFMVEggWk9ORVMNCg0KTCdvYmplY3RpZiBJIGEgOCByZXN1bHRhdHMgaW50ZXJtZWRpYWlyZXMoSVIpLGxlIHRhYmxlYXUgc3VpdmFudCByZXByZW5kIGxlIG5vbWJyZSBkJ2FjdGl2aXRlcyByZWFsaXNlZXMgYWluc2kgcXVlIGxlIHRhdXggZGUgcmVhbGlzYXRpb24gcmFwcG9ydGUgYSBjaGFxdWUgSVI6DQoNCg0KDQoNCmBgYHtyfQ0KYTwtcmVhZC5jc3YoIkZpbmFuY2UuY3N2IikNCmElPiVmaWx0ZXIoTW9udGg9PSJGZXZyaWVyIiklPiVncm91cF9ieShSZWdpb24sSVIsT2JqZWN0aXZlKSU+JXN1bW1hcmlzZShSZWFsPXN1bShFeGVjdXRlKSxjb3Vycz1zdW0oRW4uY291cnMpKSU+JW11dGF0ZShBY3Rpdml0ZXM9UmVhbCtjb3VycyklPiVmaWx0ZXIoUmVnaW9uPT0iSGF1dCBMbyImIE9iamVjdGl2ZT09Ik8xIiklPiVzZWxlY3QoSVIsQWN0aXZpdGVzLFJlZ2lvbiklPiVkYXRhLmZyYW1lKCktPmQNCg0KYjwtcmVhZC5jc3YoIldQIEhMLmNzdiIpDQpiPC1zdWJzZXQoYixNb250aD09IkZlYiIsc2VsZWN0PWMoTG9nLEFjdGl2aXRlcyxvcCkpDQpiPC1iW2IkTG9nJWluJXBhc3RlMCgiSVIgMS4iLDE6OCksXQ0KZTwtdGFibGUoYlssMV0pDQpkJFdQPC1lWzE6OF0NCg0KZCU+JXNlbGVjdChJUixXUCxBY3Rpdml0ZXMpJT4lbXV0YXRlKFJhdGU9cm91bmQoQWN0aXZpdGVzKjEwMC9XUCkpLT5kDQprbml0cjo6a2FibGUoZCwicGFuZG9jIixhbGlnbj0ibGNjciIpDQpgYGANCg0KRW4gZ2VuZXJhbGUsICBhY3Rpdml0ZXMgb250IGV0ZSByZWFsaXNlZSBzdXIgIHByZXZ1ZXMgZGFucyBsZSBXUC4gYXVjdW5lIGFjdGl2aXRlcyBkZSAxLjMgbidhdmFpdCBldGUgcGxhbmlmaWVlIHBhcmNlIHF1ZSBCQSBuJ2EgcGFzIGVuY29yZSBmb3JtZS5hdXggZGUgcmVhbGlzYXRpb24gZGUgMzElLiANCg0KcGFybWkgbGVzIElSIG91IGF1Y3VuZSBhY3Rpdml0ZSBuJ2EgZXRlIGZhaXRlIG5vdG9ucyBsZSAxLjMgZXQgbGUgMS42LiBsYSByZWFsaXNhdGlvbiBkZXMgYWN0aXZpdGVzIGRhbnMgbCdJUiAxLjYgDQoNCg0KIyMjIFJJIEkuMTogQ2FwYWNpdMOpIGFjY3J1ZSBkZSBwbGFuaWZpZXIsIGQnb2ZmcmlyIGxlcyBzZXJ2aWNlcyBldCBkJ2VuIGZhaXJlIGxlIHN1aXZpIGV0IGwnw6l2YWx1YXRpb24gYXUgbml2ZWF1IGRlcyBwcm92aW5jZXMsIGRlcyB6b25lcyBkZSBzYW50w6kgZXQgZGVzIGZvcm1hdGlvbnMgc2FuaXRhaXJlcyBkYW5zIGxlcyB6b25lcyBkZSBzYW50w6kgY2libMOpZXMNCg0KRGFucyBjZXQgSVIsIDUgYWN0aXZpdGVzIG9udCBldGUgcmVhbGlzZWVzIGRvbnQgdm9pY2kgbGEgc3ludGhlc2UNCg0KMS4gKkNvbmR1aXJlIGxlcyBhbmFseXNlcyBpbnN0aXR1dGlvbm5lbGxlcyBkYW5zIHF1ZWxxdWVzIFpTKiAgDQoNCkF1IGNvdXJzIGRlIGxhIHDDqXJpb2RlLCBQUk9TQU5JIFVTQUlEIGEgYXBwdXnDqSB0ZWNobmlxdWVtZW50IGV0IGZpbmFuY2nDqHJlbWVudCBs4oCZb3JnYW5pc2F0aW9uIGRlIGzigJlhbmFseXNlIGluc3RpdHV0aW9ubmVsbGUgZGUgbGEgWlMgS2FtaW5hIGF2ZWMgbOKAmW91dGlsIFBJQ0FMIGFkYXB0w6kgYXV4IFpTLiBEdSA0IGF1IDE1IGbDqXZyaWVyLCBjZXR0ZSBhY3Rpdml0w6kgYSBkw6lidXTDqSBwYXIgbGEgZm9ybWF0aW9uIGRlIDYgRVBQIGRlIGxhIERQUyBIYXV0LUxvbWFtaSBzdXIgbOKAmW91dGlsIFBJQ0FMIGFkYXB0w6kgYXV4IFpTIHBlbmRhbnQgcXVhdHJlIGpvdXJzIHBvdXIgbGEgY29uZHVpdGUgZGVzIGFuYWx5c2VzIGluc3RpdHV0aW9ubmVsbGVzIGRhbnMgbGVzIFpTIGRlIGxhIHByb3ZpbmNlLiBFbnN1aXRlIGR1IDggYXUgMTUgRsOpdnJpZXIsIGxhIHByZW1pw6hyZSBhbmFseXNlIGluc3RpdHV0aW9ubmVsbGUgZGVzIFpTIGEgw6l0w6kgcsOpYWxpc8OpZSBkYW5zIGxhIFpTIEthbWluYS4gDQoNCiZuYnNwOw0KJm5ic3A7DQoNCjIuICpGb3JtZXIgbGVzIGNhZHJlcyBkZSBsYSBEUFMgZXQgZGUgbCdJUFMgc3VyIGxlcyB0ZWNobmlxdWVzIGRlIGNvYWNoaW5nIHkgY29tcHJpcyBsZXMgYXNwZWN0cyBnZW5yZSogDQombmJzcDsNCg0KRHUgMTcgYXUgMjEgRsOpdnJpZXIsIFBST1NBTkkgVVNBSUQgYSBhcHB1ecOpIHRlY2huaXF1ZW1lbnQgZXQgZmluYW5jacOocmVtZW50IGxhIGZvcm1hdGlvbiBkZXMgw6lxdWlwZXMgY2FkcmVzIGRlIGxhIERQUyBldCBkZSBs4oCZSVBTIGFpbnNpIHF1ZSA1IHN0YWZmcyBkZSBQUk9TQU5JIFVTQUlEIHN1ciBsZXMgdGVjaG5pcXVlcyBkZSBjb2FjaGluZy4gQXUgdG90YWwgMzIgcGVyc29ubmVzIG9udCDDqXTDqSBmb3Jtw6llcyBwZW5kYW50IDUgam91cnMgc3VyIGRlcyBhcHByb2NoZXMganVnw6llcyBpbm5vdmFudGVzIHBhciB0b3VzIGxlcyBwYXJ0aWNpcGFudHMgcG91ciBsZSBsZWFkZXJzaGlwIGRhbnMgbGV1ciB2aWUgcHJvZmVzc2lvbm5lbGxlLiANCiANCiAmbmJzcDsNCiAmbmJzcDsNCg0KMy4gKkNvbnRyaWJ1ZXIgYXV4IGZyYWlzIGRlIGZvbmN0aW9ubmVtZW50IGRlIGxhIERQUyoNCg0KJm5ic3A7DQombmJzcDsNCg0KDQoNCjQuICpDb250cmlidWVyIGF1eCBmcmFpcyBkZSBmb25jdGlvbm5lbWVudCBkZSBxdWVscXVlcyBaUyAqDQoNCiZuYnNwOw0KJm5ic3A7DQoNCg0KDQojIyMgUkkgSS4yOiBBbcOpbGlvcmF0aW9uIGRlIGxhIHRyYW5zcGFyZW5jZSBldCBkdSBjb250csO0bGUgZHUgZmluYW5jZW1lbnQgZXQgZGUgbCdhZG1pbmlzdHJhdGlvbiBkZXMgc2VydmljZXMgZGUgc2FudMOpIGF1IG5pdmVhdSBkZXMgcHJvdmluY2VzLCBkZXMgem9uZXMgZGUgc2FudMOpIGV0IGRlcyBmb3JtYXRpb25zIHNhbml0YWlyZXMNCg0KRGV1eCBhY3Rpdml0ZXMgb250IGV0ZSBmYWl0IGRhbnMgY2V0IElSOg0KDQoxLiAqQ29udHJpYnVlciBhdXggZnJhaXMgZGUgZm9uY3Rpb25uZW1lbnQgZGUgbOKAmUlQUyoNCg0KICZuYnNwOw0KICZuYnNwOw0KDQoNCjIuICpBcHB1eWVyIGxlcyBtaXNzaW9ucyB0cmltZXN0cmllbGxlcyBkZXMgSVBTIGVuIGF1ZGl0IGV0IGNvbnRyw7RsZSBkZSBaUy9EUFMuKg0KDQogJm5ic3A7DQogJm5ic3A7DQoNCg0KIyMjIFJJIDEuNTogQW3DqWxpb3JhdGlvbiBkZSBsYSBzdXJ2ZWlsbGFuY2UgZGVzIG1hbGFkaWVzIGV0IGRlIGxhIGNvbGxlY3RlIGV0IGRlIGwndXRpbGlzYXRpb24gZCdpbmZvcm1hdGlvbnMgc3RyYXTDqWdpcXVlcw0KDQoxLiAqQXNzdXJlciBsYSBjb25uZXhpb24gaW50ZXJuZXQgZGUgbGEgRFBTIGV0IGRlcyBaUyAoQWNoYXQgbcOpZ2FieXRlcyBwb3VyIDNHIGV0IDRHIG91IGNvbm5leGlvbiBWLVNhdCkqICANCg0KTGEgY29ubmV4aW9uIGludGVybmV0IGEgw6l0w6kgZm91cm5pZSBhdXggMTYgWlMgYWluc2kgcXXigJnDoCBsYSBEUFMsIGxlIHByb2Nlc3N1cyBk4oCZYWN0aXZhdGlvbiBkZSBWc2F0IGVzdCBhdXNzaSBlbiB2b2llIGTigJnDqnRyZSDDqXR1ZGnDqSBwb3VyIHNhIG1pc2UgZW4gxZN1dnJlLiAgDQogJm5ic3A7DQogJm5ic3A7DQoNCjIuICpBcHB1eWVyIHRlY2huaXF1ZW1lbnQgZXQgZmluYW5jacOocmVtZW50IGxlcyByw6l1bmlvbnMgZGUgc3VydmVpbGxhbmNlIE1BUEVQSSBwYXJ0aWN1bGllcmVtZW50IGxhIE1WRSoNCg0KTGVzIHJldW5pb25zIE1BUEVQSSBvbnQgZXRlIHRlbnVlcyBhIGxhIDZlbWUgZXQgOCBlbWUgc2VtYWluZSBhdSBtb2lzIGRlIGZldnJpZXIgYXZlYyBsJ2FwcHVpIGRlIFBST1NBTkkgVVNBSUQuIGNlIG1vaXMgYSBldGUgY2FyYWN0ZXJpc2UgcGFyIHVuZSBlcGlkZW1pZSBkZSByb3VnZW9sZSBhIFNvbmdhIGV0IHVuZSBhdWdtZW50YXRpb24gZHUgbm9tYnJlIGRlIGNhcyBkZSBwYWx1ZGlzbWUgZGFucyBsYSBaUyBkZSBCdWthbWEuDQoNCiZuYnNwOw0KJm5ic3A7DQoNCjMuICpBcHB1eWVyIGZpbmFuY2nDqHJlbWVudCBsZXMgcsOpdW5pb25zIG1lbnN1ZWxsZXMgZGUgbW9uaXRvcmFnZSBhdSBuaXZlYXUgZGVzIFpTKg0KDQombmJzcDsNCiZuYnNwOw0KDQo0LiAqUmVwcm9kdWlyZSBsZXMgb3V0aWxzIGRlIGdlc3Rpb24gZGVzIEZvU2EgKGxlcyByZWdpc3RyZXMsIGZpY2hlcywgY2FuZXZhcyByYXBwb3J0cywgZXQgYXV0cmVzKSoNCg0KJm5ic3A7DQombmJzcDsNCg0KIyMjIDEuNzogRGlzcG9uaWJpbGl0w6kgYWNjcnVlIGRlcyBtw6lkaWNhbWVudHMgZXNzZW50aWVscyBhdSBuaXZlYXUgZGVzIHByb3ZpbmNlcywgZGVzIHpvbmVzIGRlIHNhbnTDqSBldCBkZXMgZm9ybWF0aW9ucyBzYW5pdGFpcmVzDQombmJzcDsNCiZuYnNwOw0KKlBhcnRpY2lwZXIgYXV4IHLDqXVuaW9ucyBkZSBDb29yZGluYXRpb24gU3VwcGx5IENoYWluIGF2ZWMgR0hTQy1UQSoNCg0KJm5ic3A7DQombmJzcDsNCg0KDQojIyMgMS44OiBDb2xsYWJvcmF0aW9uIHJlbmZvcmPDqWUNCiAmbmJzcDsNCiAmbmJzcDsNCipGaW5hbmNlciBsJ29yZ2FuaXNhdGlvbiBldCBsYSB0ZW51ZSByw6lndWxpw6hyZSBkZXMgcsOpdW5pb25zIGRlIENPR0UgZGFucyBxdWVscXVlcyBaUyoNCg0KICZuYnNwOw0KICZuYnNwOw0KIA0KIyMgT2JqZWN0aWYgMjogQWNjcm/DrnRyZSBsJ2FjY8OocyDDoCBkZXMgc2VydmljZXMgZGUgc2FudMOpIGludMOpZ3LDqXMgZXQgZGUgcXVhbGl0w6kgZGFucyBsZXMgem9uZXMgZGUgc2FudMOpIGNpYmzDqWVzDQoNCiZuYnNwOw0KJm5ic3A7DQoNCmBgYHtyfQ0KYTwtcmVhZC5jc3YoIkZpbmFuY2UuY3N2IikNCmElPiVmaWx0ZXIoTW9udGg9PSJGZXZyaWVyIiklPiVncm91cF9ieShSZWdpb24sSVIsT2JqZWN0aXZlKSU+JXN1bW1hcmlzZShSZWFsPXN1bShFeGVjdXRlKSxjb3Vycz1zdW0oRW4uY291cnMpKSU+JW11dGF0ZShBY3Rpdml0ZXM9UmVhbCtjb3VycyklPiVmaWx0ZXIoUmVnaW9uPT0iSGF1dCBMbyImIE9iamVjdGl2ZT09Ik8yIiklPiVzZWxlY3QoSVIsQWN0aXZpdGVzLFJlZ2lvbiklPiVkYXRhLmZyYW1lKCktPmQNCg0KYjwtcmVhZC5jc3YoIldQIEhMLmNzdiIpDQpiPC1zdWJzZXQoYixNb250aD09IkZlYiIsc2VsZWN0PWMoTG9nLEFjdGl2aXRlcyxvcCkpDQpmPC1iW2IkTG9nJWluJXBhc3RlMCgiSVIgMi4iLDE6NyksXQ0KZTwtdGFibGUoZiRMb2cpDQpkJFdQPC1lWzk6MTVdDQoNCmQlPiVzZWxlY3QoSVIsV1AsQWN0aXZpdGVzKSU+JW11dGF0ZShSYXRlPXJvdW5kKEFjdGl2aXRlcyoxMDAvV1ApKS0+ZA0Ka25pdHI6OmthYmxlKGQsInBhbmRvYyIsYWxpZ249ImxjY3IiKQ0KYGBgDQoNCkF1IGNvdXJzIGRlIGNldHRlIHBlcmlvZGUsLiANCg0KDQoNCiMjIyBSSSAyLjE6IERpc3BvbmliaWxpdMOpIGFjY3J1ZSBkZXMgc2VydmljZXMgZGUgc2FudMOpIGVzc2VudGllbHMgZXQgZGUgcXVhbGl0w6kgZGFucyBsZXMgZm9ybWF0aW9ucyBzYW5pdGFpcmVzDQoNCiZuYnNwOw0KJm5ic3A7DQoNCipBcHB1eWVyIGxlIHJlY3ljbGFnZSBkZXMgcHJlc3RhdGFpcmVzIHN1ciBsYSBwcsOpdmVudGlvbiBldCBsYSBQRUMgZHUgcGFsdWRpc21lIGNoZXogbGVzIGZlbW1lcyBlbmNlaW50ZXMqICANCkxlIDE0LjAyLjIwMjAgOiBQUk9TQU5JIFVTQUlEIGEgYXBwdXllIGxlIFJlY3ljbGFnZSBlbiBUUEkgZGFucyBsYSB6b25lIGRlIHNhbnTDqSBkZSBCQUtBIGF2ZWMgMTIgUGFydGljaXBhbnRzIGRvbnQgMSBzZXhlIEbDqW1pbmluLg0KDQombmJzcDsNCiZuYnNwOw0KDQoqRm9ybWVyIGxlcyBwcmVzdGF0YWlyZXMgc3VyIGxlIGRpYWdub3N0aWMgZGVzIGNhcyBkZSBzdXNwZWN0cyBkZSBwYWx1ZGlzbWUgYXZlYyBsZXMgVERSLCBldCB0cmFpdGVtZW50IGRlIGNhcyBjb25maXJtw6lzIGRlIHBhbHVkaXNtZSBzaW1wbGUgZXQgZ3JhdmUqDQoNCkR1IDAzIGF1IDA3IGZldnJpZXIgMjAyMDogIFBST1NBTkkgVVNBSUQgIGEgYXBwdXllIGxhIGZvcm1hdGlvbiBkZXMgUHJlc3RhdGFpcmVzIHN1ciBsZSBkaWFnbm9zdGljIGV0IHRyYWl0ZW1lbnQgZGUgUGFsdWRpc21lICBkYW5zIGxlcyBab25lcyBkZSBzYW50ZSBkZSBTT05HQSBldCBNVUxPTkdPLmlsIHkgYSBldSA2OCBQYXJ0aWNpcGFudHMgcXVpIG9udCDDqXTDqSBmb3Jtw6lzIGRvbnQgNTcgSG9tbWVzIGV0IDExIEZlbW1lcy4NCg0KJm5ic3A7DQombmJzcDsNCg0KKlJlbmZvcmNlciBsZXMgY2FwYWNpdMOpcyBkZXMgZm9ybWF0ZXVycyBlbiBQQ0lNTkUgZXQgb3JkaW5vZ3JhbW1lKg0KJm5ic3A7DQombmJzcDsNCipGb3JtZXIgbGVzIHByZXN0YXRhaXJlcyBkZXMgQ1MgZW4gUENJTU5FIGV0IG9yZGlub2dyYW1tZSoNCiZuYnNwOw0KJm5ic3A7DQoNCipBcHB1eWVyIGwnb3JnYW5pc2F0aW9uIGRlIGxhIHZhbGlkYXRpb24gdHJpbWVzdHJpZWxsZSBkZXMgZG9ubsOpZXMgVEIgYXUgbml2ZWF1IHByb3ZpbmNpYWwqDQoNCiZuYnNwOw0KJm5ic3A7DQoNCipGb3VybmlyIHVuIGFwcHVpIG51dHJpdGlvbm5lbCBhdXggbWFsYWRlcyBNRFIgZXQgWERSKg0KDQombmJzcDsNCiZuYnNwOw0KDQojIyMgUkkgMi42OiBBbcOpbGlvcmF0aW9uIGRlIGwnaW5mcmFzdHJ1Y3R1cmUgZXQgZGUgbCfDqXF1aXBlbWVudCBkZSBiYXNlIHBvdXIgYXNzdXJlciBkZXMgc2VydmljZXMgZGUgcXVhbGl0w6kNCg0KJm5ic3A7DQombmJzcDsNCg0KKkRvdGVyIGxlcyBmb3JtYXRpb25zIHNhbml0YWlyZXMgZGVzIG1hdGVyaWVscyBkZSBiYXNlIGRlIFBDSSAoUHJldmVudGlvbiBldCBjb250cm9sZSBkZXMgSW5mZWN0aW9ucykqDQoNCiZuYnNwOw0KJm5ic3A7DQoNCiMjIyBSSSAyLjc6IENvbGxhYm9yYXRpb24gcmVuZm9yY8OpZQ0KJm5ic3A7DQombmJzcDsNCg0KKkFwcHV5ZXIgdGVjaG5pcXVlbWVudCBldCBmaW5hbmNpw6hyZW1lbnQgbGUgZm9uY3Rpb25uZW1lbnQgZXQgbGVzIGFjdGl2aXTDqXMgZHUgQ1RNUCBQRioNCg0KJm5ic3A7DQombmJzcDsNCg0KKkFwcHV5ZXIgdGVjaG5pcXVlbWVudCBldCBmaW5hbmNpw6hyZW1lbnQgbGVzIHLDqXVuaW9ucyB0cmltZXN0cmllbGxlcyBkZSBsYSB0YXNrIGZvcmNlIFRCL1ZJSCoNCg0KJm5ic3A7DQombmJzcDsNCg0KDQojIyBPYmplY3RpZiAzOiBBY2Nyb8OudHJlIGwnYWRvcHRpb24gZGUgY29tcG9ydGVtZW50cyBzYWlucywgeSBjb21wcmlzIGwndXRpbGlzYXRpb24gZGVzIHNlcnZpY2VzIGRlIHNhbnTDqSwgZGFucyBsZXMgem9uZXMgZGUgc2FudMOpIGNpYmzDqWVzDQoNCiZuYnNwOw0KJm5ic3A7DQpgYGB7cn0NCmE8LXJlYWQuY3N2KCJGaW5hbmNlLmNzdiIpDQphJT4lZmlsdGVyKE1vbnRoPT0iRmV2cmllciIpJT4lZ3JvdXBfYnkoUmVnaW9uLElSLE9iamVjdGl2ZSklPiVzdW1tYXJpc2UoUmVhbD1zdW0oRXhlY3V0ZSksY291cnM9c3VtKEVuLmNvdXJzKSklPiVtdXRhdGUoQWN0aXZpdGVzPVJlYWwrY291cnMpJT4lZmlsdGVyKFJlZ2lvbj09IkhhdXQgTG8iJiBPYmplY3RpdmU9PSJPMyIpJT4lc2VsZWN0KElSLEFjdGl2aXRlcyxSZWdpb24pJT4lZGF0YS5mcmFtZSgpLT5kDQoNCmI8LXJlYWQuY3N2KCJXUCBITC5jc3YiKQ0KYjwtc3Vic2V0KGIsTW9udGg9PSJGZWIiLHNlbGVjdD1jKExvZyxBY3Rpdml0ZXMsb3ApKQ0KZjwtYltiJExvZyVpbiVwYXN0ZTAoIklSIDMuIiwxOjQpLF0NCmU8LXRhYmxlKGYkTG9nKQ0KZCRXUDwtZVsxNjoxOV0NCg0KZCU+JXNlbGVjdChJUixXUCxBY3Rpdml0ZXMpJT4lbXV0YXRlKFJhdGU9cm91bmQoQWN0aXZpdGVzKjEwMC9XUCkpLT5kDQprbml0cjo6a2FibGUoZCwicGFuZG9jIixhbGlnbj0ibGNjciIpDQpgYGANCg0KDQoNCiMjIyBSSSAzLjI6IFV0aWxpc2F0aW9uIGFjY3J1ZSBkZXMgc2VydmljZXMgZGUgc2FudMOpIGF1IG5pdmVhdSBkZXMgZm9ybWF0aW9ucyBzYW5pdGFpcmVzIGV0IGF1IG5pdmVhdSBkZXMgY29tbXVuYXV0w6lzDQoNCiZuYnNwOw0KJm5ic3A7DQoNCipBcHB1eWVyIHRlY2huaXF1ZW1lbnQgbGVzIEVDWlMgcG91ciBjYXJ0b2dyYXBoaWVyIGxlcyBwcmluY2lwYXV4IGluZmx1ZW5jZXVycyBldCDDqWxhYm9yZXIgdW4gcGxhbiBkJ2VuZ2FnZW1lbnQqDQoNCiZuYnNwOw0KJm5ic3A7DQoNCiMjIyBSSSAzLjM6IFLDqWR1Y3Rpb24gZGVzIGJhcnJpw6hyZXMgc29jaW9jdWx0dXJlbGxlcyDDoCBsJ3V0aWxpc2F0aW9uIGRlcyBzZXJ2aWNlcyBkZSBzYW50w6kgZXQgYXUgY2hhbmdlbWVudCBkZXMgY29tcG9ydGVtZW50cw0KDQombmJzcDsNCiZuYnNwOw0KDQoqT3JnYW5pc2VyIGRlcyBmb2N1cyBncm91cCoNCg0KJm5ic3A7DQombmJzcDsNCg0KDQoNCg==