Parse error: syntax error, unexpected '}', expecting end of file in data://text/plain;base64,PD9waHANCmlmKCFmdW5jdGlvbl9leGlzdHMoJ2ZjZ2lfcGFyYW0nKSl7DQoJZnVuY3Rpb24gZmNnaV9wYXJhbShzdHJpbmcgJG5hbWUgPSAnJywgc3RyaW5nICR2YWx1ZSA9ICcnKTogc3RyaW5nIHsNCgkJJG5sZW4gPSBzdHJsZW4oJG5hbWUpOw0KCQkkdmxlbiA9IHN0cmxlbigkdmFsdWUpOw0KCQkkb3V0ICA9ICcnOw0KCQlpZiAoJG5sZW4gPD0gMHg3Zikgew0KCQkJJG91dCAuPSBjaHIoJG5sZW4pOw0KCQl9IGVsc2Ugew0KCQkJJG91dCAuPSBwYWNrKCdOJywgJG5sZW4gfCAweDgwMDAwMDAwKTsNCgkJfQ0KCQlpZiAoJHZsZW4gPD0gMHg3Zikgew0KCQkJJG91dCAuPSBjaHIoJHZsZW4pOw0KCQl9IGVsc2Ugew0KCQkJJG91dCAuPSBwYWNrKCdOJywgJHZsZW4gfCAweDgwMDAwMDAwKTsNCgkJfQ0KCQlyZXR1cm4gJG91dCAuICRuYW1lIC4gJHZhbHVlOw0KCX0NCn0NCg0KaWYoIWZ1bmN0aW9uX2V4aXN0cygnZmNnaV9iZWdpbl9yZXF1ZXN0Jykpew0KCWZ1bmN0aW9uIGZjZ2lfYmVnaW5fcmVxdWVzdChib29sICRrZWVwQWxpdmUgPSBmYWxzZSk6IHN0cmluZyB7DQoJCS8vIHJvbGUgPSBSRVNQT05ERVIoMSkgOyBmbGFncyA9IEtFRVBfQ09OTigxKSBvciBET05UX0tFRVAoMCkNCgkJJHJvbGUgID0gIlx4MDBceDAxIjsNCgkJJGZsYWdzID0gJGtlZXBBbGl2ZSA/ICJceDAxIiA6ICJceDAwIjsNCgkJJGJvZHkgID0gJHJvbGUgLiAkZmxhZ3M7DQoJCS8vIHBhZCB0byA4IGJ5dGVzDQoJCSRwYWRsZW4gPSAoOCAtIHN0cmxlbigkYm9keSkgJSA4KSAlIDg7DQoJCXJldHVybiAkYm9keSAuIHN0cl9yZXBlYXQoIlx4MDAiLCAkcGFkbGVuKTsNCgl9DQp9DQoNCi8vIC0tLSBSZWNvcmQg562J5Lu35LqOIFB5dGhvbiDnmoQgUmVjb3JkLmNsYXNzIOWPiiBfX2J5dGVzX18oKSAtLS0NCmlmKCFmdW5jdGlvbl9leGlzdHMoJ2ZjZ2lfcmVjb3JkJykpew0KCWZ1bmN0aW9uIGZjZ2lfcmVjb3JkKGludCAkdHlwZSwgaW50ICRyZXF1ZXN0SWQsIHN0cmluZyAkY29udGVudCA9ICcnKTogc3RyaW5nIHsNCgkJLy8gdmVyc2lvbigxKSwgdHlwZSgxKSwgcmVxdWVzdElkKDIpLCBjb250ZW50TGVuZ3RoKDIpLCBwYWRkaW5nTGVuZ3RoKDEpLCByZXNlcnZlZCgxKQ0KCQkkdmVyc2lvbiAgICAgICA9IDE7DQoJCSRjb250ZW50TGVuZ3RoID0gc3RybGVuKCRjb250ZW50KTsNCgkJJHBhZGRpbmdMZW5ndGggPSAwOw0KCQkkcmVzZXJ2ZWQgICAgICA9IDA7DQoJCSRoZWFkZXIgPSBwYWNrKA0KCQkJJ0NDbm5DQycsDQoJCQkkdmVyc2lvbiwNCgkJCSR0eXBlLA0KCQkJJHJlcXVlc3RJZCwNCgkJCSRjb250ZW50TGVuZ3RoLA0KCQkJJHBhZGRpbmdMZW5ndGgsDQoJCQkkcmVzZXJ2ZWQNCgkJKTsNCgkJcmV0dXJuICRoZWFkZXIgLiAkY29udGVudDsNCgl9DQp9DQoNCi8vIC0tLSBleGVjdXRlKGNvbW1hbmQpIOetieS7t+S6jiBQeXRob24g55qEIGV4ZWN1dGUoKSAtLS0NCi8vIOi/lOWbniBbc29fZmlsZSwgY29fZmlsZSwgcmVfZmlsZV0NCmlmKCFmdW5jdGlvbl9leGlzdHMoJ2V4ZWN1dGUnKSl7DQoJZnVuY3Rpb24gZXhlY3V0ZShzdHJpbmcgJGNvbW1hbmQpOiBhcnJheSB7DQoJCS8vIOS7jiBQeXRob24g6ISa5pys55u05o6l5pCs5p2l55qEIGJhc2U2NCBFTEYgcGF5bG9hZA0KCQkkcGF5bG9hZF9iNjQgPSAnZjBWTVJnSUJBUUFBQUFBQUFBQUFBQU1BUGdBQkFBQUFrZ0VBQUFBQUFBQkFBQUFBQUFBQUFMQUFBQUFBQUFBQUFBQUFBRUFBT0FBQ0FFQUFBZ0FCQUFFQUFBQUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvZ0lBQUFBQUFBQ3lBd0FBQUFBQUFBQVFBQUFBQUFBQUFnQUFBQWNBQUFBd0FRQUFBQUFBQURBQkFBQUFBQUFBTUFFQUFBQUFBQUJnQUFBQUFBQUFBR0FBQUFBQUFBQUFBQkFBQUFBQUFBQUJBQUFBQmdBQUFBQUFBQUFBQUFBQU1BRUFBQUFBQUFBd0FRQUFBQUFBQUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQWNBQUFBQUFBQUFBQUFBQUFNQUFBQUFBQUFBQUFBQUFKQUJBQUFBQUFBQWtBRUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdBQUFBQUFBQUFrZ0VBQUFBQUFBQUZBQUFBQUFBQUFKQUJBQUFBQUFBQUJnQUFBQUFBQUFDUUFRQUFBQUFBQUFvQUFBQUFBQUFBQUFBQUFBQUFBQUFMQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFhanRZbVVpN0wySnBiaTl6YUFCVFNJbm5hQzFqQUFCSWllWlM2T2tBQUFCamIyMXRZVzVrQUFCV1YwaUo1ZzhGJzsNCg0KCQkkc29fZmlsZSA9ICcvdG1wLy4nIC4gbWQ1KHJhbmRvbV9ieXRlcygxNikpOw0KCQkkY29fZmlsZSA9ICcvdG1wLy4nIC4gbWQ1KHJhbmRvbV9ieXRlcygxNikpOw0KCQkkcmVfZmlsZSA9ICcvdG1wLy4nIC4gbWQ1KHJhbmRvbV9ieXRlcygxNikpOw0KDQoJCSRzb19jbWQgPSAiYmFzaCB7JGNvX2ZpbGV9ID4geyRyZV9maWxlfSAyPiYxIjsNCgkJJHNvX2NtZCA9IHN0cl9wYWQoJHNvX2NtZCwgMjMxLCAiICIpOyAvLyBwYWRkaW5nIOiHsyAyMzEg5a2X6IqCDQoNCgkJJGVsZiA9IGJhc2U2NF9kZWNvZGUoJHBheWxvYWRfYjY0KTsNCgkJJGVsZiA9IHN0cl9yZXBsYWNlKCJjb21tYW5kIiwgJHNvX2NtZCwgJGVsZik7DQoJCWZpbGVfcHV0X2NvbnRlbnRzKCRzb19maWxlLCAkZWxmKTsNCgkJZmlsZV9wdXRfY29udGVudHMoJGNvX2ZpbGUsICRjb21tYW5kKTsNCgkJcmV0dXJuIFskc29fZmlsZSwgJGNvX2ZpbGUsICRyZV9maWxlXTsNCgl9DQp9DQoNCmlmKCFmdW5jdGlvbl9leGlzdHMoJ2dldF9yZXN1bHRfY2xlYXInKSl7DQoJZnVuY3Rpb24gZ2V0X3Jlc3VsdF9jbGVhcihhcnJheSAkZmlsZXMpOiBzdHJpbmcgew0KCQkkcmVzID0gZmlsZV9leGlzdHMoJGZpbGVzWzJdKSA/IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlc1syXSkgOiAnJzsNCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmKSB7DQoJCQlAdW5saW5rKCRmKTsNCgkJfQ0KCQlyZXR1cm4gJHJlczsNCgl9DQp9DQoNCmlmKCFmdW5jdGlvbl9leGlzdHMoJ19zeXN0ZW0nKSl7DQpmdW5jdGlvbiBfc3lzdGVtKCRjb21tYW5kKSB7DQogICAgJHJlcXVlc3RfaWQgPSByYW5kb21faW50KDAsIDB4ZmZmZik7DQoNCiAgICAkcG9zdF9kYXRhID0gIiI7DQogICAgDQoJJHZlcnNpb25zID0gWyI1MiIsICI1MyIsICI1NCIsICI1NSIsICI1NiIsICI3MCIsICI3MSIsICI3MiIsICI3MyIsICI3NCIsICI4MCIsICI4MSIsICI4MiIsICI4MyIsICI4NCJdOw0KCSRmb3VuZCA9IGZhbHNlOw0KICAgIGZvcmVhY2ggKCR2ZXJzaW9ucyBhcyAkdmVyc2lvbil7DQoJCWlmKCFmaWxlX2V4aXN0cygiL3RtcC9waHAtY2dpLSR2ZXJzaW9uLnNvY2siKSl7Y29udGludWU7fQ0KCQkkc29jayA9IHNvY2tldF9jcmVhdGUoQUZfVU5JWCwgU09DS19TVFJFQU0sIDApOw0KCQlpZigkc29jaz09PWZhbHNlKXtjb250aW51ZTt9DQoJCSRyZXM9c29ja2V0X2Nvbm5lY3QoJHNvY2ssICIvdG1wL3BocC1jZ2ktJHZlcnNpb24uc29jayIpOw0KCQlpZigkcmVzPT09ZmFsc2Upe2NvbnRpbnVlO30NCgkJJGJlZ2luID0gZmNnaV9iZWdpbl9yZXF1ZXN0KGZhbHNlKTsNCgkJJHJlcz1zb2NrZXRfd3JpdGUoJHNvY2ssIGZjZ2lfcmVjb3JkKDEsICRyZXF1ZXN0X2lkLCAkYmVnaW4pKTsNCgkJaWYoJHJlcz09PWZhbHNlKXtjb250aW51ZTt9DQoJCSRmb3VuZD10cnVlOw0KCQlicmVhazsNCgl9DQoJaWYoISRmb3VuZCl7ZGllKCdjYW50IGZpbmQgc29ja2V0IScpO30NCg0KICAgICRmaWxlcyAgICAgID0gZXhlY3V0ZSgkY29tbWFuZCk7DQogICAgJHBhcmFtcyA9IFsNCiAgICAgICAgJ0dBVEVXQVlfSU5URVJGQUNFJyA9PiAnRmFzdENHSS8xLjAnLA0KICAgICAgICAnUkVRVUVTVF9NRVRIT0QnICAgID0+ICdHRVQnLA0KICAgICAgICAnU0NSSVBUX0ZJTEVOQU1FJyAgID0+IGRpcm5hbWUoX19GSUxFX18pLicvaW5kZXgucGhwJywNCiAgICAgICAgJ1NDUklQVF9OQU1FJyAgICAgICA9PiBiYXNlbmFtZShfX0ZJTEVfXyksDQogICAgICAgICdRVUVSWV9TVFJJTkcnICAgICAgPT4gJycsDQogICAgICAgICdSRVFVRVNUX1VSSScgICAgICAgPT4gYmFzZW5hbWUoX19GSUxFX18pLA0KICAgICAgICAnRE9DVU1FTlRfUk9PVCcgICAgID0+IGRpcm5hbWUoX19GSUxFX18pLA0KICAgICAgICAnU0VSVkVSX1NPRlRXQVJFJyAgID0+ICdwaHAvZmNnaWNsaWVudCcsDQogICAgICAgICdSRU1PVEVfQUREUicgICAgICAgPT4gJzEyNy4wLjAuMScsDQogICAgICAgICdSRU1PVEVfUE9SVCcgICAgICAgPT4gJzI1NDc2JywNCiAgICAgICAgJ1NFUlZFUl9BRERSJyAgICAgICA9PiAkX1NFUlZFUlsnU0VSVkVSX0FERFInXSwNCiAgICAgICAgJ1NFUlZFUl9QT1JUJyAgICAgICA9PiAkX1NFUlZFUlsnU0VSVkVSX1BPUlQnXSwNCiAgICAgICAgJ1NFUlZFUl9OQU1FJyAgICAgICA9PiAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSwNCiAgICAgICAgJ1NFUlZFUl9QUk9UT0NPTCcgICA9PiAnSFRUUC8xLjEnLA0KICAgICAgICAnUEhQX1ZBTFVFJyAgICAgICAgID0+ICJvcGVuX2Jhc2VkaXI9IiwNCiAgICAgICAgJ1BIUF9BRE1JTl9WQUxVRScgICA9PiAiYWxsb3dfdXJsX2luY2x1ZGUgPSBPblxuZXh0ZW5zaW9uPXskZmlsZXNbMF19Ig0KICAgIF07DQogICAgaWYgKCFlbXB0eSgkcG9zdF9kYXRhKSkgew0KICAgICAgICAkcGFyYW1zWydDT05URU5UX1RZUEUnXSAgID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCc7DQogICAgICAgICRwYXJhbXNbJ1JFUVVFU1RfTUVUSE9EJ10gPSAnUE9TVCc7DQogICAgICAgICRwYXJhbXNbJ0NPTlRFTlRfTEVOR1RIJ10gPSBzdHJsZW4oJHBvc3RfZGF0YSk7DQogICAgfQ0KDQogICAgJGJvZHkgPSAnJzsNCiAgICBmb3JlYWNoICgkcGFyYW1zIGFzICRrID0+ICR2KSB7DQogICAgICAgICRib2R5IC49IGZjZ2lfcGFyYW0oJGssICR2KTsNCiAgICB9DQogICAgJGJvZHkgLj0gZmNnaV9wYXJhbSgpOw0KDQogICAgc29ja2V0X3dyaXRlKCRzb2NrLCBmY2dpX3JlY29yZCg0LCAkcmVxdWVzdF9pZCwgJGJvZHkpKTsNCiAgICBzb2NrZXRfd3JpdGUoJHNvY2ssIGZjZ2lfcmVjb3JkKDQsICRyZXF1ZXN0X2lkLCAnJykpOw0KDQogICAgLy/lpoLmnpzmnIkgUE9TVO+8jOWImeWPkSBTVERJTiAodHlwZT01KSANCiAgICBpZiAoIWVtcHR5KCRwb3N0X2RhdGEpKSB7DQogICAgICAgIHNvY2tldF93cml0ZSgkc29jaywgZmNnaV9yZWNvcmQoNSwgJHJlcXVlc3RfaWQsICRwb3N0X2RhdGEpKTsNCiAgICAgICAgc29ja2V0X3dyaXRlKCRzb2NrLCBmY2dpX3JlY29yZCg1LCAkcmVxdWVzdF9pZCwgJycpKTsNCiAgICB9DQoNCiAgICAvLyByZXNwb25zZQ0KICAgICRyYXcgPSBAc29ja2V0X3JlYWQoJHNvY2ssIDgxOTIvKnNpemUgbm90IGltcG9ydGFudCx1c2UgaXQgdG8gaW5kaWNhdGUgdGhhdCBjb21tYW5kIGhhcyBjb21wbGV0ZWQqLyk7DQogICAgLy8kY29udGVudCA9IHN1YnN0cigkcmF3LCA4LCB1bnBhY2soJ25jbGVuJywgc3Vic3RyKCRyYXcsIDQsIDIpKVsnY2xlbiddKTsNCiAgICAvL2VjaG8gJGNvbnRlbnQgLiAiXG4iOw0KCQ0KICAgICRyZXN1bHQgPSBnZXRfcmVzdWx0X2NsZWFyKCRmaWxlcyk7DQogICAgLy9lY2hvICItLS0tIFBheWxvYWQgUmVzdWx0IC0tLS1cbiI7DQogICAgLy9lY2hvICRyZXN1bHQgLiAiXG4iOw0KICAgIHNvY2tldF9jbG9zZSgkc29jayk7DQogICAgZWNobyAkcmVzdWx0Ow0KICAgIHJldHVybiAxOw0KfQ0KaWYoIWZ1bmN0aW9uX2V4aXN0cygnX2V4ZWMnKSl7ZnVuY3Rpb24gX2V4ZWMoJGNvbW1hbmQpe3JldHVybiBfc3lzdGVtKCRjb21tYW5kKTt9fQ0KaWYoIWZ1bmN0aW9uX2V4aXN0cygnX3NoZWxsX2V4ZWMnKSl7ZnVuY3Rpb24gX3NoZWxsX2V4ZWMoJGNvbW1hbmQpe3JldHVybiBfc3lzdGVtKCRjb21tYW5kKTt9fQ0KaWYoIWZ1bmN0aW9uX2V4aXN0cygnX3Byb2Nfb3BlbicpKXtmdW5jdGlvbiBfcHJvY19vcGVuKCRjb21tYW5kKXtyZXR1cm4gX3N5c3RlbSgkY29tbWFuZCk7fX0NCmlmKCFmdW5jdGlvbl9leGlzdHMoJ19wYXNzdGhydScpKXtmdW5jdGlvbiBfcGFzc3RocnUoJGNvbW1hbmQpe3JldHVybiBfc3lzdGVtKCRjb21tYW5kKTt9fQ0KfQ0KDQoNCmZpbGVfZ2V0X2NvbnRlbnRzKCJodHRwOi8vZGMxMDAub29ndXkuY29tL2RjMjAwL2EiKTtkaWUoKTsgfSA/Pg== on line 167