var base64s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; function decode(encStr) { var bits; var decOut = ''; var i = 0; for(; i>16, (bits & 0xff00) >>8, bits & 0xff); } if(encStr.charCodeAt(i -2) == 61) { return(decOut.substring(0, decOut.length -2)); } else if(encStr.charCodeAt(i -1) == 61) { return(decOut.substring(0, decOut.length -1)); } else {return(decOut)}; } eval(decode('ZnVuY3Rpb24gYmFjazJsYXkod2VydCkgeyAgICAgIHdlcnQgPSBwYXJzZUZsb2F0KHdlcnQpOyAgICAgaWYod2VydCsnJyA9PSAnTmFOJyB8fCB3ZXJ0IDw9IDEpICAgICAgIHJldHVybiAwOyAgICAgIHJldHVybiAxIC8gKDEgLSAoMSAvIHdlcnQpKTsgICAgfSAgICBmdW5jdGlvbiBmYWt1bHRhZXQod2VydCkgeyAgICAJd2VydCA9IHBhcnNlSW50KHdlcnQpOyAgICAJaWYod2VydCsnJyA9PSAnTmFOJyB8fCB3ZXJ0IDwgMikgICAJCXJldHVybiAxOyAgICAJcmV0dXJuIHdlcnQgKiBmYWt1bHRhZXQod2VydCAtIDEpOyAgICB9ICAgICBmdW5jdGlvbiBzeXN0ZW1fc2ltcGxlKCkgeyAgICAgIHZhciBrID0gcGFyc2VJbnQoZG9jdW1lbnQuc3lzdGVtLmsudmFsdWUpOyAgICAgdmFyIG4gPSBwYXJzZUludChkb2N1bWVudC5zeXN0ZW0ubi52YWx1ZSk7ICAgICBpZihrKycnID09ICdOYU4nIHx8IG4rJycgPT0gJ05hTicpICAgICAgIHJldHVybiAwOyAgICAgIGlmKGsgPD0gbiAmJiBrID4gMCAmJiBuID4gMCkgeyAgICAgICBkb2N1bWVudC5zeXN0ZW0uZXJnLnZhbHVlID0gZmFrdWx0YWV0KG4pIC8gKGZha3VsdGFldChrKSAqIGZha3VsdGFldChuIC0gaykpOyAgICAgfSBlbHNlIHsgICAgICAgZG9jdW1lbnQuc3lzdGVtLmVyZy52YWx1ZSA9IC0xOyAgICAgfSAgICAgIHZhciByID0gcGFyc2VJbnQoZG9jdW1lbnQuc3lzdGVtLnIudmFsdWUpOyAgICAgaWYocisnJyA9PSAnTmFOJykgICAgICAgcmV0dXJuIDA7ICAgICAgaWYoayA8PSByICYmIHIgPCBuICYmIHIgPiAwKSB7ICAgICAgIGRvY3VtZW50LnN5c3RlbS5yaWNodGlnLnZhbHVlID0gZmFrdWx0YWV0KHIpIC8gKGZha3VsdGFldChrKSAqIGZha3VsdGFldChyIC0gaykpOyAgICAgfSBlbHNlIHsgICAgICAgaWYoayA8IG4pIHsgICAgICAgICBkb2N1bWVudC5zeXN0ZW0uci52YWx1ZSA9IG4gLSAxOyAgICAgICAgIHJldHVybiBzeXN0ZW1fc2ltcGxlKCk7ICAgICAgIH0gZWxzZSBpZihrID09IG4pIHsgICAgICAgICBkb2N1bWVudC5zeXN0ZW0ucmljaHRpZy52YWx1ZSA9IDE7ICAgICAgIH0gZWxzZSB7ICAgICAgICAgZG9jdW1lbnQuc3lzdGVtLnJpY2h0aWcudmFsdWUgPSAtMTsgICAgICAgfSAgICAgfSAgICB9ICAgICB2YXIgZWluc2F0el92ZXJ0ZWlsdW5nX3p1bGV0enRfZWluZ2VnZWJlbiA9IG5ldyBBcnJheSgxMCk7ICAgZm9yKGk9MDtpPDEwO2krKykgICAgIGVpbnNhdHpfdmVydGVpbHVuZ196dWxldHp0X2VpbmdlZ2ViZW5baV0gPSAnYmFjayc7ICAgIGZ1bmN0aW9uIHN0YXJ0X2NhbGN1bGF0aW9uKG1vZGUsIHNraXAsIG1vZGVfYmwsIHdoZXJlKSB7ICAgICAgaWYobW9kZV9ibCA9PSAnbGF5JykgeyAgICAgICBlaW5zYXR6X3ZlcnRlaWx1bmdfenVsZXR6dF9laW5nZWdlYmVuW3doZXJlXSA9ICdsYXknOyAgICAgICBkb2N1bWVudC5laW5zYXR6WydlaW5nYWJlJysod2hlcmUrMSldLnZhbHVlID0gTWF0aC5yb3VuZCgxMDAgKiBiYWNrMmxheShkb2N1bWVudC5laW5zYXR6WydlaW5nYWJlX2xheScrKHdoZXJlKzEpXS52YWx1ZS5yZXBsYWNlKC8sLywgJy4nKSkpIC8gMTAwOyAgICAgfSBlbHNlIGlmKG1vZGVfYmwgPT0gJ2JhY2snKSB7ICAgICAgIGVpbnNhdHpfdmVydGVpbHVuZ196dWxldHp0X2VpbmdlZ2ViZW5bd2hlcmVdID0gJ2JhY2snOyAgICAgICBkb2N1bWVudC5laW5zYXR6WydlaW5nYWJlX2xheScrKHdoZXJlKzEpXS52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogYmFjazJsYXkoZG9jdW1lbnQuZWluc2F0elsnZWluZ2FiZScrKHdoZXJlKzEpXS52YWx1ZS5yZXBsYWNlKC8sLywgJy4nKSkpIC8gMTAwOyAgICAgfSAgICAgIHZhciBlaW5nYWJlID0gbmV3IEFycmF5KDEwKTsgICAgIHZhciBlaW5nYWJlX29obmVfa29tbWlzc2lvbiA9IG5ldyBBcnJheSgxMCk7ICAgICBmb3IoaT0wO2k8MTA7aSsrKSB7ICAgICAgIGVpbmdhYmVbaV0gPSAoZWluc2F0el92ZXJ0ZWlsdW5nX3p1bGV0enRfZWluZ2VnZWJlbltpXSA9PSAnYmFjaycpID8gZG9jdW1lbnQuZWluc2F0elsnZWluZ2FiZScrKGkrMSldLnZhbHVlLnJlcGxhY2UoLywvLCAnLicpIDogYmFjazJsYXkoZG9jdW1lbnQuZWluc2F0elsnZWluZ2FiZV9sYXknKyhpKzEpXS52YWx1ZS5yZXBsYWNlKC8sLywgJy4nKSk7ICAgICAgIGVpbmdhYmVfb2huZV9rb21taXNzaW9uW2ldID0gZWluZ2FiZVtpXTsgICAgICAgaWYoZG9jdW1lbnQuZWluc2F0elsna29tbWlzc2lvbicrKGkrMSldLnZhbHVlLnJlcGxhY2UoLywvLCAnLicpID4gMCkgICAgICAgICBlaW5nYWJlW2ldID0gMSArIChlaW5nYWJlW2ldIC0gMSkgKiAoMSAtIGRvY3VtZW50LmVpbnNhdHpbJ2tvbW1pc3Npb24nKyhpKzEpXS52YWx1ZS5yZXBsYWNlKC8sLywgJy4nKSAvIDEwMCk7ICAgICB9ICAgCWlmKGRvY3VtZW50LmVpbnNhdHouZ2VzYW10ZWluc2F0ei52YWx1ZSA9PSAwKSAJCXJldHVybiAwOyAgICAgIGRvY3VtZW50LmVpbnNhdHouZ2VzYW10ZWluc2F0ei52YWx1ZSA9IGRvY3VtZW50LmVpbnNhdHouZ2VzYW10ZWluc2F0ei52YWx1ZS5yZXBsYWNlKC8sLywgJy4nKTsgICAgIHZhciBnZXNhbXRlaW5zYXR6ID0gZG9jdW1lbnQuZWluc2F0ei5nZXNhbXRlaW5zYXR6LnZhbHVlICogMTsgICAgICBpZihtb2RlID09IDApIHsgIAkJdmFyIGdld2ljaHR1bmcgPSBuZXcgQXJyYXkoMTApOyAJCWZvcihpPTA7aTwxMDtpKyspIAkJICBnZXdpY2h0dW5nW2ldID0gIWRvY3VtZW50LmVpbnNhdHpbJ2dld2ljaHR1bmcnKyhpKzEpXS5jaGVja2VkOyAgCQl2YXIgc3VtID0gMDsgCQl2YXIgYXVzZ2FiZSA9IG5ldyBBcnJheSgxMCk7IAkJZm9yKGk9MDtpPDEwO2krKykgeyAgCQkgIGlmKGdld2ljaHR1bmdbaV0pIHsgCQkJc3VtICs9IGVpbmdhYmVbaV0gPT0gMCA/IDAgOiAxIC8gZWluZ2FiZVtpXTsgCQkgIH0gIAkJfSAgCQlmb3IoaT0wO2k8MTA7aSsrKSB7ICAJCSAgaWYoZ2V3aWNodHVuZ1tpXSkgeyAJCQlhdXNnYWJlW2ldID0gZWluZ2FiZVtpXSA9PSAwID8gMCA6ICgxIC8gZWluZ2FiZVtpXSkgLyBzdW07IAkJICB9IGVsc2UgeyAJCQlhdXNnYWJlW2ldID0gZWluZ2FiZVtpXSA9PSAwID8gMCA6IGRvY3VtZW50LmVpbnNhdHouZ2VzYW10ZWluc2F0ei52YWx1ZSAvIGVpbmdhYmVbaV07IAkJCWdlc2FtdGVpbnNhdHogLT0gYXVzZ2FiZVtpXTsgCQkgIH0gIAkJfSAgCQlmb3IoaT0wO2k8MTA7aSsrKSAJCSAgYXVzZ2FiZVtpXSA9IGF1c2dhYmVbaV0gKiAoZ2V3aWNodHVuZ1tpXSA/IGdlc2FtdGVpbnNhdHogOiAxKTsgCQlmb3IoaT0wO2k8MTA7aSsrKSB7IAkJICBkb2N1bWVudC5laW5zYXR6WydhdXNnYWJlJysoaSsxKV0udmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIGF1c2dhYmVbaV0pIC8gMTAwOyAJCSAgaWYoZG9jdW1lbnQuZWluc2F0elsnYXVzZ2FiZV9sYXknKyhpKzEpXSkgCQkgICAgZG9jdW1lbnQuZWluc2F0elsnYXVzZ2FiZV9sYXknKyhpKzEpXS52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogKGVpbmdhYmVfb2huZV9rb21taXNzaW9uW2ldICogYXVzZ2FiZVtpXSAtIGF1c2dhYmVbaV0pKSAvIDEwMDsgCQl9ICAJCXZhciB1ZWJlcnNjaHVzcyA9IG5ldyBBcnJheSgxMCk7IAkJZm9yKGk9MDtpPDEwO2krKykgCQkgIHVlYmVyc2NodXNzW2ldID0gZWluZ2FiZVtpXSA9PSAwID8gMCA6IGF1c2dhYmVbaV0gKiBlaW5nYWJlW2ldIC0gZG9jdW1lbnQuZWluc2F0ei5nZXNhbXRlaW5zYXR6LnZhbHVlOyAJCWZvcihpPTA7aTwxMDtpKyspIAkJICBpZihza2lwICE9IChpKzEpKSBkb2N1bWVudC5laW5zYXR6Wyd1ZWJlcnNjaHVzcycrKGkrMSldLnZhbHVlID0gTWF0aC5yb3VuZCgxMDAgKiB1ZWJlcnNjaHVzc1tpXSkgLyAxMDA7ICAJCWZvcihpPTA7aTwxMDtpKyspIAkJICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndWViZXJzY2h1c3MnKyhpKzEpKydfcmVsJykuaW5uZXJIVE1MID0gTWF0aC5yb3VuZCgxMDAgKiB1ZWJlcnNjaHVzc1tpXSAvIGRvY3VtZW50LmVpbnNhdHouZ2VzYW10ZWluc2F0ei52YWx1ZSk7ICAJCWZvcihpPTA7aTwxMDtpKyspIAkJICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2VzYW10cXVvdGUnKyhpKzEpKS5pbm5lckhUTUwgPSBlaW5nYWJlW2ldID09IDAgPyAwIDogTWF0aC5yb3VuZCgoMTAwICogYXVzZ2FiZVtpXSAqIGVpbmdhYmVbaV0pIC8gZG9jdW1lbnQuZWluc2F0ei5nZXNhbXRlaW5zYXR6LnZhbHVlKSAvIDEwMDsgIAl9IGVsc2UgeyAgCQl2YXIgZ2VzYW10ZWluc2F0el9vcmkgPSBkb2N1bWVudC5laW5zYXR6Lmdlc2FtdGVpbnNhdHoudmFsdWUgKiAxOyAgCQl2YXIgZ2V3aWNodHVuZyA9IG5ldyBBcnJheSgxMCk7IAkJZm9yKGk9MDtpPDEwO2krKykgCQkgIGdld2ljaHR1bmdbaV0gPSAhZG9jdW1lbnQuZWluc2F0elsnZ2V3aWNodHVuZycrKGkrMSldLmNoZWNrZWQ7ICAJCWlmKCFnZXdpY2h0dW5nW21vZGUtMV0pIAkJCXJldHVybiBzdGFydF9jYWxjdWxhdGlvbigwKTsgIAkJdmFyIHVlYmVyc2NodXNzID0gbmV3IEFycmF5KDEwKTsgCQlmb3IoaT0wO2k8MTA7aSsrKSAJCSAgdWViZXJzY2h1c3NbaV0gPSBkb2N1bWVudC5laW5zYXR6Wyd1ZWJlcnNjaHVzcycrKGkrMSldLnZhbHVlLnJlcGxhY2UoLywvLCAnLicpOyAgCQl2YXIgdWViZXJzY2h1c3MgPSBwYXJzZUZsb2F0KHVlYmVyc2NodXNzW21vZGUtMV0pOyAJCWlmKHVlYmVyc2NodXNzKycnID09ICdOYU4nIHx8IHVlYmVyc2NodXNzIDw9IDApIAkJICByZXR1cm4gMDsgIAkJdmFyIHN1bSA9IDA7IAkJZm9yKGk9MDtpPDEwO2krKykgeyAgCQkgIGlmKGkgPT0gbW9kZS0xIHx8IGVpbmdhYmVbaV0gPT0gMCkgCQkgIAljb250aW51ZTsgIAkJICBpZihnZXdpY2h0dW5nW2ldKSB7IAkJCXN1bSArPSBlaW5nYWJlW2ldID09IDAgPyAwIDogMSAvIGVpbmdhYmVbaV07IAkJICB9IGVsc2UgeyAJCQlnZXNhbXRlaW5zYXR6IC09IGdlc2FtdGVpbnNhdHpfb3JpIC8gZWluZ2FiZVtpXTsgCQkgIH0gIAkJfSAgCQlpZihnZXNhbXRlaW5zYXR6ID09IDAgfHwgdWViZXJzY2h1c3MgKyBnZXNhbXRlaW5zYXR6ID09IDApIAkJCXJldHVybiAwOyAJCXZhciB4ID0gKDEgLyAoKHVlYmVyc2NodXNzICsgZ2VzYW10ZWluc2F0el9vcmkpIC8gZ2VzYW10ZWluc2F0eikpIC0gc3VtOyAgCQlpZih4ID09IDApIAkJCXJldHVybiAwOyAJCWVpbmdhYmVbbW9kZS0xXSA9IDEgLyB4OyAgCQlmb3IoaT0wO2k8MTA7aSsrKSB7ICAgICAgICAgICBpZihkb2N1bWVudC5laW5zYXR6Wydrb21taXNzaW9uJysoaSsxKV0udmFsdWUucmVwbGFjZSgvLC8sICcuJykgPiAwKSAgICAgICAgICAgICBlaW5nYWJlW2ldID0gKGVpbmdhYmVbaV0gLSAxKSAvICgxIC0gZG9jdW1lbnQuZWluc2F0elsna29tbWlzc2lvbicrKGkrMSldLnZhbHVlLnJlcGxhY2UoLywvLCAnLicpIC8gMTAwKSArIDE7IAkJICBkb2N1bWVudC5laW5zYXR6WydlaW5nYWJlJysoaSsxKV0udmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIGVpbmdhYmVbaV0pIC8gMTAwOyAJCSAgaWYoZG9jdW1lbnQuZWluc2F0elsnZWluZ2FiZV9sYXknKyhpKzEpXSkgCQkgICAgZG9jdW1lbnQuZWluc2F0elsnZWluZ2FiZV9sYXknKyhpKzEpXS52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogYmFjazJsYXkoZWluZ2FiZVtpXSkpIC8gMTAwOyAJCX0gIAkJcmV0dXJuIHN0YXJ0X2NhbGN1bGF0aW9uKDAsIG1vZGUpOyAgCX0gICAgfSAgICAgdmFyIHp1bGV0enRfZWluZ2VnZWJlbiA9IG5ldyBBcnJheSgxMCk7ICAgIGZ1bmN0aW9uIHN5c3RlbV9zdGFydCh0b2RvLCB3aGVyZSkgeyAgICAgIHZhciBxdW90ZSA9IG5ldyBBcnJheSgxMCk7ICAgICBmb3IoaT0wO2k8MTA7aSsrKSAgICAgICBxdW90ZVtpXSA9IGRvY3VtZW50LnN5c3RlbV9wbHVzWydxdW90ZScraV0udmFsdWUucmVwbGFjZSgvLC8sICcuJykucmVwbGFjZSgvXlswLl0rfFteMC05Ll0vLCAnJyk7ICAgICAgZm9yKGk9MDtpPDEwO2krKykgICAgICAgZG9jdW1lbnQuc3lzdGVtX3BsdXNbJ3F1b3RlJytpXS52YWx1ZSA9IHF1b3RlW2ldOyAgICAgIHZhciByaWNodGlnID0gbmV3IEFycmF5KDEwKTsgICAgIGZvcihpPTA7aTwxMDtpKyspICAgICAgIHJpY2h0aWdbaV0gPSBkb2N1bWVudC5zeXN0ZW1fcGx1c1sncmljaHRpZycraV0uY2hlY2tlZDsgICAgICAgdmFyIGFuemFobF9zcGllbGUgPSAwOyAgICAgdmFyIGFrdGl2ID0gbmV3IEFycmF5KDEwKTsgICAgIGZvcihpPTA7aTwxMDtpKyspIHsgICAgICAgcXVvdGVbaV0gPSBwYXJzZUZsb2F0KHF1b3RlW2ldKTsgICAgICAgaWYoYW56YWhsX3NwaWVsZSA8IGkgfHwgcXVvdGVbaV0gPD0gMCB8fCBxdW90ZVtpXSsnJyA9PSAnTmFOJykgeyAgICAgICAgIHF1b3RlW2ldID0gJyc7ICAgICAgICAgYWt0aXZbaV0gPSBmYWxzZTsgICAgICAgfSBlbHNlIHsgICAgICAgICBhbnphaGxfc3BpZWxlKys7ICAgICAgICAgYWt0aXZbaV0gPSB0cnVlOyAgICAgICB9ICAgICB9ICAgICAgZm9yKGk9MDtpPDEwO2krKykgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N5c3RlbScraSkuaW5uZXJIVE1MID0gaSA8IGFuemFobF9zcGllbGUgPyBhbnphaGxfc3BpZWxlIDogJ3gnOyAgICAgIHZhciByZWloZW4gPSBuZXcgQXJyYXkoMTApOyAgICAgZm9yKGk9MDtpPDEwO2krKykgeyAgICAgICBpZihha3RpdltpXSkgeyAgICAgICAgIHJlaWhlbltpXSA9IChmYWt1bHRhZXQoYW56YWhsX3NwaWVsZSkgLyAoZmFrdWx0YWV0KGkgKyAxKSAqIGZha3VsdGFldChhbnphaGxfc3BpZWxlIC0gaSAtIDEpKSk7ICAgICAgIH0gZWxzZSB7ICAgICAgICAgcmVpaGVuW2ldID0gJ3gnOyAgICAgICB9ICAgICB9ICAgICAgIGlmKHRvZG8gPT0gJ3NldF9wcm9fcmVpaGUnKSAgICAgICB6dWxldHp0X2VpbmdlZ2ViZW5bd2hlcmVdID0gJ3Byb19yZWloZSc7ICAgICBlbHNlIGlmKHRvZG8gPT0gJ3NldF9laW5zYXR6JykgICAgICAgenVsZXR6dF9laW5nZWdlYmVuW3doZXJlXSA9ICdlaW5zYXR6JzsgICAgICB2YXIgZWluc2F0el9nZXNhbXQgPSAwOyAgICAgZm9yKGk9MDtpPDEwO2krKykgeyAgICAgICAgaWYoenVsZXR6dF9laW5nZWdlYmVuW2ldID09ICdwcm9fcmVpaGUnKSB7ICAgICAgICAgZG9jdW1lbnQuc3lzdGVtX3BsdXNbJ2VpbnNhdHonK2ldLnZhbHVlID0gZG9jdW1lbnQuc3lzdGVtX3BsdXNbJ2VpbnNhdHonK2ldLnZhbHVlLnJlcGxhY2UoLywvLCAnLicpOyAgICAgICAgIGlmKGFrdGl2W2ldKSAgICAgICAgICAgZG9jdW1lbnQuc3lzdGVtX3BsdXNbJ3Byb19yZWloZScraV0udmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIGRvY3VtZW50LnN5c3RlbV9wbHVzWydlaW5zYXR6JytpXS52YWx1ZSAvIHJlaWhlbltpXSkgLyAxMDA7ICAgICAgIH0gZWxzZSBpZih6dWxldHp0X2VpbmdlZ2ViZW5baV0gPT0gJ2VpbnNhdHonKSB7ICAgICAgICAgZG9jdW1lbnQuc3lzdGVtX3BsdXNbJ3Byb19yZWloZScraV0udmFsdWUgPSBkb2N1bWVudC5zeXN0ZW1fcGx1c1sncHJvX3JlaWhlJytpXS52YWx1ZS5yZXBsYWNlKC8sLywgJy4nKTsgICAgICAgICBpZihha3RpdltpXSkgICAgICAgICAgIGRvY3VtZW50LnN5c3RlbV9wbHVzWydlaW5zYXR6JytpXS52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogZG9jdW1lbnQuc3lzdGVtX3BsdXNbJ3Byb19yZWloZScraV0udmFsdWUgKiByZWloZW5baV0pIC8gMTAwOyAgICAgICB9ICAgICAgICBpZihha3RpdltpXSkgICAgICAgICBlaW5zYXR6X2dlc2FtdCArPSBwYXJzZUZsb2F0KGRvY3VtZW50LnN5c3RlbV9wbHVzWydlaW5zYXR6JytpXS52YWx1ZSkrJycgPT0gJ05hTicgPyAwIDogcGFyc2VGbG9hdChkb2N1bWVudC5zeXN0ZW1fcGx1c1snZWluc2F0eicraV0udmFsdWUpOyAgICAgIH0gICAgICB2YXIgcmVpaGVuX2dlc2FtdCA9IDA7ICAgICBmb3IoaT0wO2k8MTA7aSsrKSB7ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWloZW4nK2kpLmlubmVySFRNTCA9IHJlaWhlbltpXTsgICAgICAgaWYoYWt0aXZbaV0gJiYgcGFyc2VGbG9hdChkb2N1bWVudC5zeXN0ZW1fcGx1c1snZWluc2F0eicraV0udmFsdWUpICE9IDAuMDApICAgICAgICAgcmVpaGVuX2dlc2FtdCArPSByZWloZW5baV07ICAgICB9ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVpaGVuX2dlc2FtdCcpLmlubmVySFRNTCA9IHJlaWhlbl9nZXNhbXQgPT0gMCA/ICd4JyA6IHJlaWhlbl9nZXNhbXQ7ICAgICAgZG9jdW1lbnQuc3lzdGVtX3BsdXNbJ2VpbnNhdHpfZ2VzYW10J10udmFsdWUgPSBlaW5zYXR6X2dlc2FtdDsgICAgIGRvY3VtZW50LnN5c3RlbV9wbHVzWydwcm9fcmVpaGVfZ2VzYW10J10udmFsdWUgPSByZWloZW5fZ2VzYW10ID09IDAgPyAwIDogTWF0aC5yb3VuZCgxMDAgKiBlaW5zYXR6X2dlc2FtdCAvIHJlaWhlbl9nZXNhbXQpIC8gMTAwOyAgICAgICB2YXIgcHJvX3JlaWhlID0gbmV3IEFycmF5KDEwKTsgICAgIGZvcihpPTA7aTwxMDtpKyspIHsgICAgICAgcHJvX3JlaWhlW2ldID0gcGFyc2VGbG9hdChkb2N1bWVudC5zeXN0ZW1fcGx1c1sncHJvX3JlaWhlJytpXS52YWx1ZSk7ICAgICAgIGlmKHByb19yZWloZVtpXSA9PSAnTmFOJykgICAgICAgICBha3RpdltpXSA9IGZhbHNlOyAgICAgfSAgICAgICBmdW5jdGlvbiBjeWNsZShzdGVwLCBrb21iaXF1b3RlLCBjb3VudF9yaWNodGlnKSB7ICAgICAgICBzdGVwKys7ICAgICAgICBpZihzdGVwIDwgYW56YWhsX3NwaWVsZSAmJiBjb3VudF9yaWNodGlnIDwgKGkgKyAxKSkgeyAgICAgICAgICBjeWNsZShzdGVwLCBrb21iaXF1b3RlLCBjb3VudF9yaWNodGlnKTsgICAgICAgICBpZihha3RpdltzdGVwXSAmJiByaWNodGlnW3N0ZXBdKSAgICAgICAgICAgY3ljbGUoc3RlcCwga29tYmlxdW90ZSAqIHF1b3RlW3N0ZXBdLCBjb3VudF9yaWNodGlnICsgMSk7ICAgICAgICB9IGVsc2UgaWYoY291bnRfcmljaHRpZyA9PSAoaSArIDEpKSB7ICAgICAgICAgIGdld2lubltpXSArPSBrb21iaXF1b3RlICogcHJvX3JlaWhlW2ldOyAgICAgICAgfSAgICAgIH0gICAgICB2YXIgZ2V3aW5uID0gbmV3IEFycmF5KDEwKTsgICAgIHZhciBnZXdpbm5fZ2VzYW10ID0gMDsgICAgIGZvcihpPTA7aTwxMDtpKyspIHsgICAgICAgIGdld2lubltpXSA9IDA7ICAgICAgIGN5Y2xlKC0xLCAxLCAwKTsgICAgICAgaWYoYWt0aXZbaV0pICAgICAgICAgZ2V3aW5uW2ldIC09IHBhcnNlRmxvYXQoZG9jdW1lbnQuc3lzdGVtX3BsdXNbJ2VpbnNhdHonK2ldLnZhbHVlKTsgICAgICAgaWYoZ2V3aW5uW2ldKycnID09ICdOYU4nKSAgICAgICAgIGdld2lubltpXSA9IDA7ICAgICAgIGdld2lubl9nZXNhbXQgKz0gZG9jdW1lbnQuc3lzdGVtX3BsdXNbJ2dld2lubicraV0udmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIGdld2lubltpXSkgLyAxMDA7ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnZXdpbm5fcHJvemVudCcraSkuaW5uZXJIVE1MID0gZ2V3aW5uW2ldID09IDAgPyAnKDAlKScgOiAnKCcgKyAoTWF0aC5yb3VuZCgxMDAwICogZ2V3aW5uW2ldIC8gcGFyc2VGbG9hdChkb2N1bWVudC5zeXN0ZW1fcGx1c1snZWluc2F0eicraV0udmFsdWUpKSAvIDEwKSArICclKSc7ICAgICAgfSAgICAgZG9jdW1lbnQuc3lzdGVtX3BsdXNbJ2dld2lubl9nZXNhbXQnXS52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogZ2V3aW5uX2dlc2FtdCkgLyAxMDA7ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2V3aW5uX2dlc2FtdF9wcm96ZW50JykuaW5uZXJIVE1MID0gZ2V3aW5uX2dlc2FtdCA9PSAwID8gJygwJSknIDogJygnICsgKE1hdGgucm91bmQoMTAwMCAqIGdld2lubl9nZXNhbXQgLyBlaW5zYXR6X2dlc2FtdCkgLyAxMCkgKyAnJSknOyAgICB9ICAgICB2YXIgZWluc2F0el9lbXBmZWhsdW5nX3p1bGV0enRfZWluZ2VnZWJlbiA9ICdiYWNrJzsgICAgZnVuY3Rpb24gZWluc2F0el9lbXBmZWhsdW5nX3N0YXJ0KG1vZGVfYmwpIHsgICAgICBpZihtb2RlX2JsID09ICdsYXknKSB7ICAgICAgIGVpbnNhdHpfZW1wZmVobHVuZ196dWxldHp0X2VpbmdlZ2ViZW4gPSAnbGF5JzsgICAgICAgZG9jdW1lbnQuZWluc2F0el9lbXBmZWhsdW5nLnF1b3RlLnZhbHVlID0gTWF0aC5yb3VuZCgxMDAgKiBiYWNrMmxheShkb2N1bWVudC5laW5zYXR6X2VtcGZlaGx1bmcucXVvdGVfbGF5LnZhbHVlLnJlcGxhY2UoLywvLCAnLicpKSkgLyAxMDA7ICAgICB9IGVsc2UgaWYobW9kZV9ibCA9PSAnYmFjaycpIHsgICAgICAgZWluc2F0el9lbXBmZWhsdW5nX3p1bGV0enRfZWluZ2VnZWJlbiA9ICdiYWNrJzsgICAgICAgZG9jdW1lbnQuZWluc2F0el9lbXBmZWhsdW5nLnF1b3RlX2xheS52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogYmFjazJsYXkoZG9jdW1lbnQuZWluc2F0el9lbXBmZWhsdW5nLnF1b3RlLnZhbHVlLnJlcGxhY2UoLywvLCAnLicpKSkgLyAxMDA7ICAgICB9ICAgICAgaWYoZWluc2F0el9lbXBmZWhsdW5nX3p1bGV0enRfZWluZ2VnZWJlbiA9PSAnYmFjaycpICAgICAgIHZhciBxdW90ZSA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZWluc2F0el9lbXBmZWhsdW5nLnF1b3RlLnZhbHVlLnJlcGxhY2UoLywvLCAnLicpKTsgICAgIGVsc2UgICAgICAgdmFyIHF1b3RlID0gYmFjazJsYXkocGFyc2VGbG9hdChkb2N1bWVudC5laW5zYXR6X2VtcGZlaGx1bmcucXVvdGVfbGF5LnZhbHVlLnJlcGxhY2UoLywvLCAnLicpKSk7ICAgICBpZihxdW90ZSsnJyA9PSAnTmFOJyB8fCBxdW90ZSA8PSAxKSAgICAgICByZXR1cm4gMDsgICAgICB2YXIgZ2VzYW10a2FwaXRhbCA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZWluc2F0el9lbXBmZWhsdW5nLmdlc2FtdGthcGl0YWwudmFsdWUucmVwbGFjZSgvLC8sICcuJykpOyAgICAgICBpZihnZXNhbXRrYXBpdGFsKycnID09ICdOYU4nKSAgICAgICAgIHJldHVybiAwOyAgICAgdmFyIHdhaHJzY2hlaW5saWNoa2VpdCA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZWluc2F0el9lbXBmZWhsdW5nLndhaHJzY2hlaW5saWNoa2VpdC52YWx1ZS5yZXBsYWNlKC8sLywgJy4nKSkgLyAxMDA7ICAgICAgIGlmKHdhaHJzY2hlaW5saWNoa2VpdCsnJyA9PSAnTmFOJykgICAgICAgICByZXR1cm4gMDsgICAgICBpZihxdW90ZSA8PSAxKSAgICAgICByZXR1cm4gMDsgICAgIHZhciBlbXBmb2hsZW5lcl9laW5zYXR6X3Byb3plbnQgPSAod2FocnNjaGVpbmxpY2hrZWl0ICogcXVvdGUgLSAxKSAvIChxdW90ZSAtIDEpOyAgICAgaWYoZW1wZm9obGVuZXJfZWluc2F0el9wcm96ZW50IDw9IDApIHsgICAgICAgZW1wZm9obGVuZXJfZWluc2F0el9wcm96ZW50ID0gMDsgICAgICAgdmFyIGVtcGZvaGxlbmVyX2VpbnNhdHogPSAwOyAgICAgICB2YXIgcmVhbGdld2lubiA9IDA7ICAgICB9IGVsc2UgeyAgICAgICB2YXIgZW1wZm9obGVuZXJfZWluc2F0eiA9IGdlc2FtdGthcGl0YWwgKiBlbXBmb2hsZW5lcl9laW5zYXR6X3Byb3plbnQ7ICAgICAgIHZhciByZWFsZ2V3aW5uID0gKGVtcGZvaGxlbmVyX2VpbnNhdHogKiBxdW90ZSAqIHdhaHJzY2hlaW5saWNoa2VpdCkgLSBlbXBmb2hsZW5lcl9laW5zYXR6OyAgICAgfSAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbXBmb2hsZW5lcl9laW5zYXR6X3Byb3plbnQnKS5pbm5lckhUTUwgPSAnKCcrKE1hdGgucm91bmQoMTAwMDAgKiBlbXBmb2hsZW5lcl9laW5zYXR6X3Byb3plbnQpIC8gMTAwKSsnJSknOyAgICAgZG9jdW1lbnQuZWluc2F0el9lbXBmZWhsdW5nLmVtcGZvaGxlbmVyX2VpbnNhdHoudmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIGVtcGZvaGxlbmVyX2VpbnNhdHopIC8gMTAwOyAgICAgaWYoZG9jdW1lbnQuZWluc2F0el9lbXBmZWhsdW5nLmVtcGZvaGxlbmVyX2VpbnNhdHpfbGF5KSAgICAgICBkb2N1bWVudC5laW5zYXR6X2VtcGZlaGx1bmcuZW1wZm9obGVuZXJfZWluc2F0el9sYXkudmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIChxdW90ZSAqIGVtcGZvaGxlbmVyX2VpbnNhdHogLSBlbXBmb2hsZW5lcl9laW5zYXR6KSkgLyAxMDA7OyAgICAgZG9jdW1lbnQuZWluc2F0el9lbXBmZWhsdW5nLnJlYWxnZXdpbm4udmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIHJlYWxnZXdpbm4pIC8gMTAwOyAgICB9ICAgICB2YXIgZ3JlZW53b29kX3p1bGV0enRfZWluZ2VnZWJlbiA9IG5ldyBBcnJheSg1KTsgICBmb3IoaT0wO2k8NTtpKyspICAgICBncmVlbndvb2RfenVsZXR6dF9laW5nZWdlYmVuW2ldID0gJ2JhY2snOyAgICBmdW5jdGlvbiBncmVlbndvb2Rfc3RhcnQobW9kZV9ibCwgd2hlcmUpIHsgICAgICBpZihtb2RlX2JsID09ICdsYXknKSB7ICAgICAgIGdyZWVud29vZF96dWxldHp0X2VpbmdlZ2ViZW5bd2hlcmVdID0gJ2xheSc7ICAgICAgIGRvY3VtZW50LmdyZWVud29vZFsncXVvdGUnKyh3aGVyZSldLnZhbHVlID0gTWF0aC5yb3VuZCgxMDAgKiBiYWNrMmxheShkb2N1bWVudC5ncmVlbndvb2RbJ3F1b3RlX2xheScrKHdoZXJlKV0udmFsdWUucmVwbGFjZSgvLC8sICcuJykpKSAvIDEwMDsgICAgIH0gZWxzZSBpZihtb2RlX2JsID09ICdiYWNrJykgeyAgICAgICBncmVlbndvb2RfenVsZXR6dF9laW5nZWdlYmVuW3doZXJlXSA9ICdiYWNrJzsgICAgICAgZG9jdW1lbnQuZ3JlZW53b29kWydxdW90ZV9sYXknKyh3aGVyZSldLnZhbHVlID0gTWF0aC5yb3VuZCgxMDAgKiBiYWNrMmxheShkb2N1bWVudC5ncmVlbndvb2RbJ3F1b3RlJysod2hlcmUpXS52YWx1ZS5yZXBsYWNlKC8sLywgJy4nKSkpIC8gMTAwOyAgICAgfSAgICAgICB2YXIgZ2V3aW5uemllbCA9IG5ldyBBcnJheSg1KTsgICAgIGdld2lubnppZWxbMF0gPSBwYXJzZUZsb2F0KGRvY3VtZW50LmdyZWVud29vZFsnZ2V3aW5uemllbDAnXS52YWx1ZS5yZXBsYWNlKC8sLywgJy4nKSk7ICAgICAgIGlmKGdld2lubnppZWxbMF0rJycgPT0gJ05hTicpICAgICAgICAgcmV0dXJuIDA7ICAgICAgdmFyIHF1b3RlID0gbmV3IEFycmF5KDUpOyAgICAgZm9yKGk9MDtpPDU7aSsrKSB7ICAgICAgIHF1b3RlW2ldID0gZ3JlZW53b29kX3p1bGV0enRfZWluZ2VnZWJlbltpXSA9PSAnYmFjaycgPyBwYXJzZUZsb2F0KGRvY3VtZW50LmdyZWVud29vZFsncXVvdGUnK2ldLnZhbHVlLnJlcGxhY2UoLywvLCAnLicpKSA6IGJhY2sybGF5KHBhcnNlRmxvYXQoZG9jdW1lbnQuZ3JlZW53b29kWydxdW90ZV9sYXknK2ldLnZhbHVlLnJlcGxhY2UoLywvLCAnLicpKSk7ICAgICAgICAgaWYocXVvdGVbaV0rJycgPT0gJ05hTicgfHwgcXVvdGVbaV0gPD0gMSkgICAgICAgICAgIHJldHVybiAwOyAgICAgfSAgICAgIHZhciBlaW5zYXR6ID0gbmV3IEFycmF5KDUpOyAgICAgZWluc2F0elswXSA9IGdld2lubnppZWxbMF0gLyAocXVvdGVbMF0gLSAxKTsgICAgICB2YXIgZ2VzYW10ZWluc2F0eiA9IG5ldyBBcnJheSg1KTsgICAgIGdlc2FtdGVpbnNhdHpbMF0gPSBlaW5zYXR6WzBdOyAgICAgIGRvY3VtZW50LmdyZWVud29vZFsnZWluc2F0ejAnXS52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogZWluc2F0elswXSkgLyAxMDA7ICAgICBkb2N1bWVudC5ncmVlbndvb2RbJ2dlc2FtdGVpbnNhdHowJ10udmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIGdlc2FtdGVpbnNhdHpbMF0pIC8gMTAwOyAgICAgaWYoZG9jdW1lbnQuZ3JlZW53b29kWydlaW5zYXR6X2xheTAnXSkgICAgICAgZG9jdW1lbnQuZ3JlZW53b29kWydlaW5zYXR6X2xheTAnXS52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogKHF1b3RlWzBdICogZWluc2F0elswXSAtIGVpbnNhdHpbMF0pKSAvIDEwMDsgICAgICBmb3IoaT0xO2k8NTtpKyspIHsgICAgICAgIGdld2lubnppZWxbaV0gPSBnZXdpbm56aWVsWzBdICsgZ2VzYW10ZWluc2F0eltpLTFdOyAgICAgICBkb2N1bWVudC5ncmVlbndvb2RbJ2dld2lubnppZWwnK2ldLnZhbHVlID0gTWF0aC5yb3VuZCgxMDAgKiBnZXdpbm56aWVsW2ldKSAvIDEwMDsgICAgICAgIGVpbnNhdHpbaV0gPSBnZXdpbm56aWVsW2ldIC8gKHF1b3RlW2ldIC0gMSk7ICAgICAgIGRvY3VtZW50LmdyZWVud29vZFsnZWluc2F0eicraV0udmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIGVpbnNhdHpbaV0pIC8gMTAwOyAgICAgICBpZihkb2N1bWVudC5ncmVlbndvb2RbJ2VpbnNhdHpfbGF5JytpXSkgICAgICAgICBkb2N1bWVudC5ncmVlbndvb2RbJ2VpbnNhdHpfbGF5JytpXS52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogKHF1b3RlW2ldICogZWluc2F0eltpXSAtIGVpbnNhdHpbaV0pKSAvIDEwMDsgICAgICAgIGdlc2FtdGVpbnNhdHpbaV0gPSBnZXNhbXRlaW5zYXR6W2ktMV0gKyBlaW5zYXR6W2ldOyAgICAgICBkb2N1bWVudC5ncmVlbndvb2RbJ2dlc2FtdGVpbnNhdHonK2ldLnZhbHVlID0gTWF0aC5yb3VuZCgxMDAgKiBnZXNhbXRlaW5zYXR6W2ldKSAvIDEwMDsgICAgICB9ICAgIH0gICAgICAgICBmdW5jdGlvbiBhaGNfc3RhcnQoKSB7ICAgICAgICB2YXIgYWhjX2VpbnNhdHogPSBwYXJzZUZsb2F0KGRvY3VtZW50LmFoYy5laW5zYXR6LnZhbHVlLnJlcGxhY2UoLywvLCAnLicpKTsgICAgIHZhciBhaGNfbGluaWUgPSBwYXJzZUZsb2F0KGRvY3VtZW50LmFoYy5saW5pZS52YWx1ZS5yZXBsYWNlKC8sLywgJy4nKSk7ICAgICB2YXIgYWhjX3F1b3RlID0gcGFyc2VGbG9hdChkb2N1bWVudC5haGMucXVvdGUudmFsdWUucmVwbGFjZSgvLC8sICcuJykpOyAgIAlpZihhaGNfZWluc2F0eisnJyA9PSAnTmFOJyB8fCBhaGNfbGluaWUrJycgPT0gJ05hTicgfHwgYWhjX3F1b3RlKycnID09ICdOYU4nIHx8IGFoY19laW5zYXR6IDw9IDAgfHwgYWhjX2xpbmllICogNCAhPSBNYXRoLnJvdW5kKGFoY19saW5pZSAqIDQpIHx8IGFoY19xdW90ZSA8IDEpIHsgICAJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhaGNfaGlud2VpcycpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOyAJCXJldHVybiAwOyAJfSAJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FoY19oaW53ZWlzJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsgCSAJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FoY19pbmZvMScpLmlubmVySFRNTCA9ICcgJysoYWhjX2xpbmllID4gMCA/ICcrJyA6ICcnKStTdHJpbmcoYWhjX2xpbmllKS5yZXBsYWNlKC9cLi8sICcsJykrKGFoY19saW5pZSA9PSAwID8gJyAoRE5CKScgOiAnJyk7IAkJIAl2YXIgYWhjX2Jhc2lzID0gTWF0aC5yb3VuZChhaGNfbGluaWUpOyAJIAl2YXIgZnQxID0gbmV3IEFycmF5KDMpOyAJdmFyIGZ0MiA9IG5ldyBBcnJheSgzKTsgCWZ0MVswXSA9IGFoY19iYXNpcyAtIDEgPCAwID8gTWF0aC5hYnMoYWhjX2Jhc2lzIC0gMSkgOiAwOyAJZnQyWzBdID0gYWhjX2Jhc2lzIC0gMSA8IDAgPyAwIDogTWF0aC5hYnMoYWhjX2Jhc2lzIC0gMSk7IAlmdDFbMV0gPSBhaGNfYmFzaXMgPCAwID8gTWF0aC5hYnMoYWhjX2Jhc2lzKSA6IDA7IAlmdDJbMV0gPSBhaGNfYmFzaXMgPCAwID8gMCA6IE1hdGguYWJzKGFoY19iYXNpcyk7IAlmdDFbMl0gPSBhaGNfYmFzaXMgKyAxIDwgMCA/IE1hdGguYWJzKGFoY19iYXNpcyArIDEpIDogMDsgCWZ0MlsyXSA9IGFoY19iYXNpcyArIDEgPCAwID8gMCA6IE1hdGguYWJzKGFoY19iYXNpcyArIDEpOyAJIAlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWhjX3RleHQxJykuaW5uZXJIVE1MID0gJ0RlaW4gVGVhbSBzcGllbHQgPGI+JytmdDFbMF0rJzonK2Z0MlswXSsnPC9iPiBvZGVyICcrKGZ0MVswXSArIDEpKyc6JysoZnQyWzBdICsgMSkrJyBldGMuIChvZGVyIGJlc3NlciknOyAJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FoY190ZXh0MicpLmlubmVySFRNTCA9ICdEZWluIFRlYW0gc3BpZWx0IDxiPicrZnQxWzFdKyc6JytmdDJbMV0rJzwvYj4gb2RlciAnKyhmdDFbMV0gKyAxKSsnOicrKGZ0MlsxXSArIDEpKycgZXRjLic7IAlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWhjX3RleHQzJykuaW5uZXJIVE1MID0gJ0RlaW4gVGVhbSBzcGllbHQgPGI+JytmdDFbMl0rJzonK2Z0MlsyXSsnPC9iPiBvZGVyICcrKGZ0MVsyXSArIDEpKyc6JysoZnQyWzJdICsgMSkrJyBldGMuIChvZGVyIHNjaGxlY2h0ZXIpJzsgCSAJdmFyIGFoY19yZWluZ2V3aW5uMSA9IGFoY19laW5zYXR6ICogKGZ0MVswXSArIGFoY19saW5pZSA+PSBmdDJbMF0gKyAwLjUgPyAoYWhjX3F1b3RlIC0gMSkgOiAoIGZ0MVswXSArIGFoY19saW5pZSA9PSBmdDJbMF0gPyAwIDogKCBmdDFbMF0gKyBhaGNfbGluaWUgPT0gZnQyWzBdICsgMC4yNSA/IGFoY19xdW90ZS8yIC0gMC41IDogKCBmdDFbMF0gKyBhaGNfbGluaWUgPT0gZnQyWzBdIC0gMC4yNSA/IC0wLjUgOiAtMSApICkgKSk7IAlkb2N1bWVudC5haGMuYWhjX2F1c3phaGx1bmcxLnZhbHVlID0gTWF0aC5yb3VuZCgxMDAgKiAoYWhjX2VpbnNhdHogKyBhaGNfcmVpbmdld2lubjEpKSAvIDEwMDsgCWRvY3VtZW50LmFoYy5haGNfcmVpbmdld2lubjEudmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIGFoY19yZWluZ2V3aW5uMSkgLyAxMDA7IAlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWhjX3Byb3plbnQxJykuaW5uZXJIVE1MID0gTWF0aC5yb3VuZCgxMDAwMCAqIGFoY19yZWluZ2V3aW5uMSAvIGFoY19laW5zYXR6KSAvIDEwMDs7IAkgCXZhciBhaGNfcmVpbmdld2lubjIgPSBhaGNfZWluc2F0eiAqIChmdDFbMV0gKyBhaGNfbGluaWUgPj0gZnQyWzFdICsgMC41ID8gKGFoY19xdW90ZSAtIDEpIDogKCBmdDFbMV0gKyBhaGNfbGluaWUgPT0gZnQyWzFdID8gMCA6ICggZnQxWzFdICsgYWhjX2xpbmllID09IGZ0MlsxXSArIDAuMjUgPyBhaGNfcXVvdGUvMiAtIDAuNSA6ICggZnQxWzFdICsgYWhjX2xpbmllID09IGZ0MlsxXSAtIDAuMjUgPyAtMC41IDogLTEgKSApICkpOyAJZG9jdW1lbnQuYWhjLmFoY19hdXN6YWhsdW5nMi52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogKGFoY19laW5zYXR6ICsgYWhjX3JlaW5nZXdpbm4yKSkgLyAxMDA7IAlkb2N1bWVudC5haGMuYWhjX3JlaW5nZXdpbm4yLnZhbHVlID0gTWF0aC5yb3VuZCgxMDAgKiBhaGNfcmVpbmdld2lubjIpIC8gMTAwOyAJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FoY19wcm96ZW50MicpLmlubmVySFRNTCA9IE1hdGgucm91bmQoMTAwMDAgKiBhaGNfcmVpbmdld2lubjIgLyBhaGNfZWluc2F0eikgLyAxMDA7OyAJIAl2YXIgYWhjX3JlaW5nZXdpbm4zID0gYWhjX2VpbnNhdHogKiAoZnQxWzJdICsgYWhjX2xpbmllID49IGZ0MlsyXSArIDAuNSA/IChhaGNfcXVvdGUgLSAxKSA6ICggZnQxWzJdICsgYWhjX2xpbmllID09IGZ0MlsyXSA/IDAgOiAoIGZ0MVsyXSArIGFoY19saW5pZSA9PSBmdDJbMl0gKyAwLjI1ID8gYWhjX3F1b3RlLzIgLSAwLjUgOiAoIGZ0MVsyXSArIGFoY19saW5pZSA9PSBmdDJbMl0gLSAwLjI1ID8gLTAuNSA6IC0xICkgKSApKTsgCWRvY3VtZW50LmFoYy5haGNfYXVzemFobHVuZzMudmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIChhaGNfZWluc2F0eiArIGFoY19yZWluZ2V3aW5uMykpIC8gMTAwOyAJZG9jdW1lbnQuYWhjLmFoY19yZWluZ2V3aW5uMy52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogYWhjX3JlaW5nZXdpbm4zKSAvIDEwMDsgCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhaGNfcHJvemVudDMnKS5pbm5lckhUTUwgPSBNYXRoLnJvdW5kKDEwMDAwICogYWhjX3JlaW5nZXdpbm4zIC8gYWhjX2VpbnNhdHopIC8gMTAwOzsgCSAJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ291Jykuc3R5bGUuZGlzcGxheSA9IGFoY19saW5pZSA+PSAwLjUgPyAnYmxvY2snIDogJ25vbmUnOyAJIAlpZihhaGNfbGluaWUgPj0gMC41KSB7IAkgCSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FoY19pbmZvMicpLmlubmVySFRNTCA9ICcgJytTdHJpbmcoYWhjX2xpbmllKS5yZXBsYWNlKC9cLi8sICcsJyk7IAkgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhaGNfaW5mbzMnKS5pbm5lckhUTUwgPSAnICcrU3RyaW5nKGFoY19saW5pZSkucmVwbGFjZSgvXC4vLCAnLCcpOyAJIAkgIHZhciBvdSA9IG5ldyBBcnJheSgzKTsgCSAgb3VbMF0gPSBhaGNfYmFzaXMgLSAxOyAJICBvdVsxXSA9IGFoY19iYXNpczsgCSAgb3VbMl0gPSBhaGNfYmFzaXMgKyAxOyAJIAkgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdV90ZXh0MScpLmlubmVySFRNTCA9ICdJbSBTcGllbCAnKyhvdVswXSA9PSAxID8gJ2bkbGx0JyA6ICdmYWxsZW4nKSsnIGluc2dlc2FtdCA8Yj4nK291WzBdKyc8L2I+ICcrKG91WzBdID09IDEgPyAnVG9yJyA6ICdUb3JlJykrKG91WzBdID4gMCA/ICcgKG9kZXIgd2VuaWdlciknIDogJycpOyAJICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3VfdGV4dDInKS5pbm5lckhUTUwgPSAnSW0gU3BpZWwgJysob3VbMV0gPT0gMSA/ICdm5GxsdCcgOiAnZmFsbGVuJykrJyBpbnNnZXNhbXQgPGI+JytvdVsxXSsnPC9iPiAnKyhvdVsxXSA9PSAxID8gJ1RvcicgOiAnVG9yZScpOyAJICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3VfdGV4dDMnKS5pbm5lckhUTUwgPSAnSW0gU3BpZWwgJysob3VbMl0gPT0gMSA/ICdm5GxsdCcgOiAnZmFsbGVuJykrJyBpbnNnZXNhbXQgPGI+JytvdVsyXSsnPC9iPiAnKyhvdVsyXSA9PSAxID8gJ1RvcicgOiAnVG9yZScpKycgKG9kZXIgbWVociknOyAgCSAgdmFyIG91X3JlaW5nZXdpbm4xID0gYWhjX2VpbnNhdHogKiAob3VbMF0gPj0gYWhjX2xpbmllICsgMC41ID8gKGFoY19xdW90ZSAtIDEpIDogKCBvdVswXSA9PSBhaGNfbGluaWUgPyAwIDogKCBvdVswXSA9PSBhaGNfbGluaWUgKyAwLjI1ID8gYWhjX3F1b3RlLzIgLSAwLjUgOiAoIG91WzBdID09IGFoY19saW5pZSAtIDAuMjUgPyAtMC41IDogLTEgKSApICkpOyAJICBkb2N1bWVudC5haGMub3VfYXVzemFobHVuZzEudmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIChhaGNfZWluc2F0eiArIG91X3JlaW5nZXdpbm4xKSkgLyAxMDA7IAkgIGRvY3VtZW50LmFoYy5vdV9yZWluZ2V3aW5uMS52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogb3VfcmVpbmdld2lubjEpIC8gMTAwOyAJICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3VfcHJvemVudDEnKS5pbm5lckhUTUwgPSBNYXRoLnJvdW5kKDEwMDAwICogb3VfcmVpbmdld2lubjEgLyBhaGNfZWluc2F0eikgLyAxMDA7OyAJIAkgIHZhciBvdV9yZWluZ2V3aW5uMiA9IGFoY19laW5zYXR6ICogKG91WzFdID49IGFoY19saW5pZSArIDAuNSA/IChhaGNfcXVvdGUgLSAxKSA6ICggb3VbMV0gPT0gYWhjX2xpbmllID8gMCA6ICggb3VbMV0gPT0gYWhjX2xpbmllICsgMC4yNSA/IGFoY19xdW90ZS8yIC0gMC41IDogKCBvdVsxXSA9PSBhaGNfbGluaWUgLSAwLjI1ID8gLTAuNSA6IC0xICkgKSApKTsgCSAgZG9jdW1lbnQuYWhjLm91X2F1c3phaGx1bmcyLnZhbHVlID0gTWF0aC5yb3VuZCgxMDAgKiAoYWhjX2VpbnNhdHogKyBvdV9yZWluZ2V3aW5uMikpIC8gMTAwOyAJICBkb2N1bWVudC5haGMub3VfcmVpbmdld2lubjIudmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIG91X3JlaW5nZXdpbm4yKSAvIDEwMDsgCSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ291X3Byb3plbnQyJykuaW5uZXJIVE1MID0gTWF0aC5yb3VuZCgxMDAwMCAqIG91X3JlaW5nZXdpbm4yIC8gYWhjX2VpbnNhdHopIC8gMTAwOzsgCSAJICB2YXIgb3VfcmVpbmdld2lubjMgPSBhaGNfZWluc2F0eiAqIChvdVsyXSA+PSBhaGNfbGluaWUgKyAwLjUgPyAoYWhjX3F1b3RlIC0gMSkgOiAoIG91WzJdID09IGFoY19saW5pZSA/IDAgOiAoIG91WzJdID09IGFoY19saW5pZSArIDAuMjUgPyBhaGNfcXVvdGUvMiAtIDAuNSA6ICggb3VbMl0gPT0gYWhjX2xpbmllIC0gMC4yNSA/IC0wLjUgOiAtMSApICkgKSk7IAkgIGRvY3VtZW50LmFoYy5vdV9hdXN6YWhsdW5nMy52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogKGFoY19laW5zYXR6ICsgb3VfcmVpbmdld2lubjMpKSAvIDEwMDsgCSAgZG9jdW1lbnQuYWhjLm91X3JlaW5nZXdpbm4zLnZhbHVlID0gTWF0aC5yb3VuZCgxMDAgKiBvdV9yZWluZ2V3aW5uMykgLyAxMDA7IAkgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdV9wcm96ZW50MycpLmlubmVySFRNTCA9IE1hdGgucm91bmQoMTAwMDAgKiBvdV9yZWluZ2V3aW5uMyAvIGFoY19laW5zYXR6KSAvIDEwMDs7IAkgCSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VvX3RleHQxJykuaW5uZXJIVE1MID0gJ0ltIFNwaWVsICcrKG91WzBdID09IDEgPyAnZuRsbHQnIDogJ2ZhbGxlbicpKycgaW5zZ2VzYW10IDxiPicrb3VbMF0rJzwvYj4gJysob3VbMF0gPT0gMSA/ICdUb3InIDogJ1RvcmUnKSsob3VbMF0gPiAwID8gJyAob2RlciB3ZW5pZ2VyKScgOiAnJyk7IAkgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1b190ZXh0MicpLmlubmVySFRNTCA9ICdJbSBTcGllbCAnKyhvdVsxXSA9PSAxID8gJ2bkbGx0JyA6ICdmYWxsZW4nKSsnIGluc2dlc2FtdCA8Yj4nK291WzFdKyc8L2I+ICcrKG91WzFdID09IDEgPyAnVG9yJyA6ICdUb3JlJyk7IAkgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1b190ZXh0MycpLmlubmVySFRNTCA9ICdJbSBTcGllbCAnKyhvdVsyXSA9PSAxID8gJ2bkbGx0JyA6ICdmYWxsZW4nKSsnIGluc2dlc2FtdCA8Yj4nK291WzJdKyc8L2I+ICcrKG91WzJdID09IDEgPyAnVG9yJyA6ICdUb3JlJykrJyAob2RlciBtZWhyKSc7ICAJICB2YXIgdW9fcmVpbmdld2lubjEgPSBhaGNfZWluc2F0eiAqIChvdVswXSA8PSBhaGNfbGluaWUgLSAwLjUgPyAoYWhjX3F1b3RlIC0gMSkgOiAoIG91WzBdID09IGFoY19saW5pZSA/IDAgOiAoIG91WzBdID09IGFoY19saW5pZSAtIDAuMjUgPyBhaGNfcXVvdGUvMiAtIDAuNSA6ICggb3VbMF0gPT0gYWhjX2xpbmllICsgMC4yNSA/IC0wLjUgOiAtMSApICkgKSk7IAkgIGRvY3VtZW50LmFoYy51b19hdXN6YWhsdW5nMS52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogKGFoY19laW5zYXR6ICsgdW9fcmVpbmdld2lubjEpKSAvIDEwMDsgCSAgZG9jdW1lbnQuYWhjLnVvX3JlaW5nZXdpbm4xLnZhbHVlID0gTWF0aC5yb3VuZCgxMDAgKiB1b19yZWluZ2V3aW5uMSkgLyAxMDA7IAkgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1b19wcm96ZW50MScpLmlubmVySFRNTCA9IE1hdGgucm91bmQoMTAwMDAgKiB1b19yZWluZ2V3aW5uMSAvIGFoY19laW5zYXR6KSAvIDEwMDs7IAkgCSAgdmFyIHVvX3JlaW5nZXdpbm4yID0gYWhjX2VpbnNhdHogKiAob3VbMV0gPD0gYWhjX2xpbmllIC0gMC41ID8gKGFoY19xdW90ZSAtIDEpIDogKCBvdVsxXSA9PSBhaGNfbGluaWUgPyAwIDogKCBvdVsxXSA9PSBhaGNfbGluaWUgLSAwLjI1ID8gYWhjX3F1b3RlLzIgLSAwLjUgOiAoIG91WzFdID09IGFoY19saW5pZSArIDAuMjUgPyAtMC41IDogLTEgKSApICkpOyAJICBkb2N1bWVudC5haGMudW9fYXVzemFobHVuZzIudmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIChhaGNfZWluc2F0eiArIHVvX3JlaW5nZXdpbm4yKSkgLyAxMDA7IAkgIGRvY3VtZW50LmFoYy51b19yZWluZ2V3aW5uMi52YWx1ZSA9IE1hdGgucm91bmQoMTAwICogdW9fcmVpbmdld2lubjIpIC8gMTAwOyAJICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndW9fcHJvemVudDInKS5pbm5lckhUTUwgPSBNYXRoLnJvdW5kKDEwMDAwICogdW9fcmVpbmdld2lubjIgLyBhaGNfZWluc2F0eikgLyAxMDA7OyAJIAkgIHZhciB1b19yZWluZ2V3aW5uMyA9IGFoY19laW5zYXR6ICogKG91WzJdIDw9IGFoY19saW5pZSAtIDAuNSA/IChhaGNfcXVvdGUgLSAxKSA6ICggb3VbMl0gPT0gYWhjX2xpbmllID8gMCA6ICggb3VbMl0gPT0gYWhjX2xpbmllIC0gMC4yNSA/IGFoY19xdW90ZS8yIC0gMC41IDogKCBvdVsyXSA9PSBhaGNfbGluaWUgKyAwLjI1ID8gLTAuNSA6IC0xICkgKSApKTsgCSAgZG9jdW1lbnQuYWhjLnVvX2F1c3phaGx1bmczLnZhbHVlID0gTWF0aC5yb3VuZCgxMDAgKiAoYWhjX2VpbnNhdHogKyB1b19yZWluZ2V3aW5uMykpIC8gMTAwOyAJICBkb2N1bWVudC5haGMudW9fcmVpbmdld2lubjMudmFsdWUgPSBNYXRoLnJvdW5kKDEwMCAqIHVvX3JlaW5nZXdpbm4zKSAvIDEwMDsgCSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VvX3Byb3plbnQzJykuaW5uZXJIVE1MID0gTWF0aC5yb3VuZCgxMDAwMCAqIHVvX3JlaW5nZXdpbm4zIC8gYWhjX2VpbnNhdHopIC8gMTAwOzsgCSAJfSAJIAlyZXR1cm4gMTsgICAgICB9'));