Title : µåµð¾î ÃÖ½ÅÀÛÀ» ±×¸° '±â»ç½Ä´ç ÇØÀúµå'0
Time : 2004-01-07 22:19:39
Author : ³ª³ªÇ϶óÀǸÚ!
Content :
![](data:image/jpeg;base64,PGh0bWw+DQo8aGVhZD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+KHdpbmRvdy5OUkVVTXx8KE5SRVVNPXt9KSkubG9hZGVyX2NvbmZpZz17eHBpZDoiVXdZRlVGVldHd2NEVVZCV0R3VT0ifTt3aW5kb3cuTlJFVU18fChOUkVVTT17fSksX19ucl9yZXF1aXJlPWZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKG4pe2lmKCFlW25dKXt2YXIgbz1lW25dPXtleHBvcnRzOnt9fTt0W25dWzBdLmNhbGwoby5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBvPXRbbl1bMV1bZV07cmV0dXJuIHIob3x8ZSl9LG8sby5leHBvcnRzKX1yZXR1cm4gZVtuXS5leHBvcnRzfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBfX25yX3JlcXVpcmUpcmV0dXJuIF9fbnJfcmVxdWlyZTtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKylyKG5bb10pO3JldHVybiByfSh7UUpmM2F4OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt9ZnVuY3Rpb24gcih0KXtmdW5jdGlvbiBlKHQpe3JldHVybiB0JiZ0IGluc3RhbmNlb2Ygbj90OnQ/YSh0LGksbyk6bygpfWZ1bmN0aW9uIHMobixyLG8pe3QmJnQobixyLG8pO2Zvcih2YXIgaT1lKG8pLGE9ZihuKSxzPWEubGVuZ3RoLGM9MDtzPmM7YysrKWFbY10uYXBwbHkoaSxyKTtyZXR1cm4gaX1mdW5jdGlvbiBjKHQsZSl7ZFt0XT1mKHQpLmNvbmNhdChlKX1mdW5jdGlvbiBmKHQpe3JldHVybiBkW3RdfHxbXX1mdW5jdGlvbiB1KCl7cmV0dXJuIHIocyl9dmFyIGQ9e307cmV0dXJue29uOmMsZW1pdDpzLGNyZWF0ZTp1LGxpc3RlbmVyczpmLGNvbnRleHQ6ZSxfZXZlbnRzOmR9fWZ1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IG59dmFyIGk9Im5yQGNvbnRleHQiLGE9dCgiZ29zIik7ZS5leHBvcnRzPXIoKX0se2dvczoiN2VTREZoIn1dLGVlOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJRSmYzYXgiKX0se31dLDM6W2Z1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7dHJ5e2kuY29uc29sZSYmY29uc29sZS5sb2codCl9Y2F0Y2goZSl7fX12YXIgbixyPXQoImVlIiksbz10KDEpLGk9e307dHJ5e249bG9jYWxTdG9yYWdlLmdldEl0ZW0oIl9fbnJfZmxhZ3MiKS5zcGxpdCgiLCIpLGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmxvZyYmKGkuY29uc29sZT0hMCwtMSE9PW4uaW5kZXhPZigiZGV2IikmJihpLmRldj0hMCksLTEhPT1uLmluZGV4T2YoIm5yX2RldiIpJiYoaS5uckRldj0hMCkpfWNhdGNoKGEpe31pLm5yRGV2JiZyLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7ZSh0LnN0YWNrKX0pLGkuZGV2JiZyLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsbixyKXtlKHIuc3RhY2spfSksaS5kZXYmJihlKCJOUiBBR0VOVCBJTiBERVZFTE9QTUVOVCBNT0RFIiksZSgiZmxhZ3M6ICIrbyhpLGZ1bmN0aW9uKHQpe3JldHVybiB0fSkuam9pbigiLCAiKSkpfSx7MToyNSxlZToiUUpmM2F4In1dLDQ6W2Z1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLG4saSxhKXt0cnl7Zj9mLT0xOnIoImVyciIsW2F8fG5ldyBVbmNhdWdodEV4Y2VwdGlvbih0LGUsbildKX1jYXRjaChjKXt0cnl7cigiaWVyciIsW2MsKG5ldyBEYXRlKS5nZXRUaW1lKCksITBdKX1jYXRjaCh1KXt9fXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBzP3MuYXBwbHkodGhpcyxvKGFyZ3VtZW50cykpOiExfWZ1bmN0aW9uIFVuY2F1Z2h0RXhjZXB0aW9uKHQsZSxuKXt0aGlzLm1lc3NhZ2U9dHx8IlVuY2F1Z2h0IGVycm9yIHdpdGggbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiIsdGhpcy5zb3VyY2VVUkw9ZSx0aGlzLmxpbmU9bn1mdW5jdGlvbiBuKHQpe3IoImVyciIsW3QsKG5ldyBEYXRlKS5nZXRUaW1lKCldKX12YXIgcj10KCJoYW5kbGUiKSxvPXQoNiksaT10KCJlZSIpLGE9dCgibG9hZGVyIikscz13aW5kb3cub25lcnJvcixjPSExLGY9MDthLmZlYXR1cmVzLmVycj0hMCx0KDUpLHdpbmRvdy5vbmVycm9yPWU7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaCh1KXsic3RhY2siaW4gdSYmKHQoMSksdCgyKSwiYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3cmJnQoMyksYS54aHJXcmFwcGFibGUmJnQoNCksYz0hMCl9aS5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKCl7YyYmKGYrPTEpfSksaS5vbigiZm4tZXJyIixmdW5jdGlvbih0LGUscil7YyYmKHRoaXMudGhyb3duPSEwLG4ocikpfSksaS5vbigiZm4tZW5kIixmdW5jdGlvbigpe2MmJiF0aGlzLnRocm93biYmZj4wJiYoZi09MSl9KSxpLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7cigiaWVyciIsW3QsKG5ldyBEYXRlKS5nZXRUaW1lKCksITBdKX0pfSx7MToxMSwyOjEwLDM6OCw0OjEyLDU6Myw2OjI2LGVlOiJRSmYzYXgiLGhhbmRsZToiRDVEdUxQIixsb2FkZXI6Ikc5ejBCbCJ9XSw1OltmdW5jdGlvbih0KXtpZih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7dmFyIGU9dCgiaGFuZGxlIiksbj10KCJlZSIpO3QoMSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2UoImluYyIsWyJjayJdKX0sITEpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixmdW5jdGlvbigpe2UoImluYyIsWyJoYyJdKX0sITEpLG4ub24oInB1c2hTdGF0ZS1zdGFydCIsZnVuY3Rpb24oKXtlKCJpbmMiLFsicHMiXSl9KX19LHsxOjksZWU6IlFKZjNheCIsaGFuZGxlOiJENUR1TFAifV0sNjpbZnVuY3Rpb24odCl7dCgibG9hZGVyIikuZmVhdHVyZXMuaW5zPSEwfSx7bG9hZGVyOiJHOXowQmwifV0sNzpbZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe31pZih3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcmJndpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKXt2YXIgbj10KCJlZSIpLHI9dCgiaGFuZGxlIiksbz10KDEpLGk9dCgyKTt0KCJsb2FkZXIiKS5mZWF0dXJlcy5zdG49ITAsdCgzKTt2YXIgYT1FdmVudDtuLm9uKCJmbi1zdGFydCIsZnVuY3Rpb24odCl7dmFyIGU9dFswXTtlIGluc3RhbmNlb2YgYSYmKHRoaXMuYnN0U3RhcnQ9RGF0ZS5ub3coKSl9KSxuLm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtuIGluc3RhbmNlb2YgYSYmcigiYnN0IixbbixlLHRoaXMuYnN0U3RhcnQsRGF0ZS5ub3coKV0pfSksby5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmJzdFN0YXJ0PURhdGUubm93KCksdGhpcy5ic3RUeXBlPW59KSxvLm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7cigiYnN0VGltZXIiLFtlLHRoaXMuYnN0U3RhcnQsRGF0ZS5ub3coKSx0aGlzLmJzdFR5cGVdKX0pLGkub24oImZuLXN0YXJ0IixmdW5jdGlvbigpe3RoaXMuYnN0U3RhcnQ9RGF0ZS5ub3coKX0pLGkub24oImZuLWVuZCIsZnVuY3Rpb24odCxlKXtyKCJic3RUaW1lciIsW2UsdGhpcy5ic3RTdGFydCxEYXRlLm5vdygpLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSl9KSxuLm9uKCJwdXNoU3RhdGUtc3RhcnQiLGZ1bmN0aW9uKCl7dGhpcy50aW1lPURhdGUubm93KCksdGhpcy5zdGFydFBhdGg9bG9jYXRpb24ucGF0aG5hbWUrbG9jYXRpb24uaGFzaH0pLG4ub24oInB1c2hTdGF0ZS1lbmQiLGZ1bmN0aW9uKCl7cigiYnN0SGlzdCIsW2xvY2F0aW9uLnBhdGhuYW1lK2xvY2F0aW9uLmhhc2gsdGhpcy5zdGFydFBhdGgsdGhpcy50aW1lXSl9KSwiYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3cucGVyZm9ybWFuY2UmJih3aW5kb3cucGVyZm9ybWFuY2UuY2xlYXJSZXNvdXJjZVRpbWluZ3M/d2luZG93LnBlcmZvcm1hbmNlLmFkZEV2ZW50TGlzdGVuZXIoInJlc291cmNldGltaW5nYnVmZmVyZnVsbCIsZnVuY3Rpb24oKXtyKCJic3RSZXNvdXJjZSIsW3dpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpXSksd2luZG93LnBlcmZvcm1hbmNlLmNsZWFyUmVzb3VyY2VUaW1pbmdzKCl9LCExKTp3aW5kb3cucGVyZm9ybWFuY2UuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0cmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIixmdW5jdGlvbigpe3IoImJzdFJlc291cmNlIixbd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIildKSx3aW5kb3cucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJSZXNvdXJjZVRpbWluZ3MoKX0sITEpKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLGUsITEpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNzIixlLCExKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZSwhMSl9fSx7MToxMSwyOjEwLDM6OSxlZToiUUpmM2F4IixoYW5kbGU6IkQ1RHVMUCIsbG9hZGVyOiJHOXowQmwifV0sODpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT10O2UmJiFlLmhhc093blByb3BlcnR5KCJhZGRFdmVudExpc3RlbmVyIik7KWU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2UmJnIoZSl9ZnVuY3Rpb24gcih0KXthLmluUGxhY2UodCxbImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIi0iLG8pfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHRbMV19dmFyIGk9dCgiZWUiKS5jcmVhdGUoKSxhPXQoMSkoaSkscz10KCJnb3MiKTtlLmV4cG9ydHM9aSxyKHdpbmRvdyksImdldFByb3RvdHlwZU9mImluIE9iamVjdD8obihkb2N1bWVudCksbihYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUpKTpYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoImFkZEV2ZW50TGlzdGVuZXIiKSYmcihYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUpLGkub24oImFkZEV2ZW50TGlzdGVuZXItc3RhcnQiLGZ1bmN0aW9uKHQpe2lmKHRbMV0pe3ZhciBlPXRbMV07aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpe3ZhciBuPXMoZSwibnJAd3JhcHBlZCIsZnVuY3Rpb24oKXtyZXR1cm4gYShlLCJmbi0iLG51bGwsZS5uYW1lfHwiYW5vbnltb3VzIil9KTt0aGlzLndyYXBwZWQ9dFsxXT1ufWVsc2UiZnVuY3Rpb24iPT10eXBlb2YgZS5oYW5kbGVFdmVudCYmYS5pblBsYWNlKGUsWyJoYW5kbGVFdmVudCJdLCJmbi0iKX19KSxpLm9uKCJyZW1vdmVFdmVudExpc3RlbmVyLXN0YXJ0IixmdW5jdGlvbih0KXt2YXIgZT10aGlzLndyYXBwZWQ7ZSYmKHRbMV09ZSl9KX0sezE6MjcsZWU6IlFKZjNheCIsZ29zOiI3ZVNERmgifV0sOTpbZnVuY3Rpb24odCxlKXt2YXIgbj10KCJlZSIpLmNyZWF0ZSgpLHI9dCgxKShuKTtlLmV4cG9ydHM9bixyLmluUGxhY2Uod2luZG93Lmhpc3RvcnksWyJwdXNoU3RhdGUiLCJyZXBsYWNlU3RhdGUiXSwiLSIpfSx7MToyNyxlZToiUUpmM2F4In1dLDEwOltmdW5jdGlvbih0LGUpe3ZhciBuPXQoImVlIikuY3JlYXRlKCkscj10KDEpKG4pO2UuZXhwb3J0cz1uLHIuaW5QbGFjZSh3aW5kb3csWyJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ3ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtc1JlcXVlc3RBbmltYXRpb25GcmFtZSJdLCJyYWYtIiksbi5vbigicmFmLXN0YXJ0IixmdW5jdGlvbih0KXt0WzBdPXIodFswXSwiZm4tIil9KX0sezE6MjcsZWU6IlFKZjNheCJ9XSwxMTpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSxuKXt0WzBdPWkodFswXSwiZm4tIixudWxsLG4pfWZ1bmN0aW9uIHIodCxlLG4pe3RoaXMubWV0aG9kPW4sdGhpcy50aW1lckR1cmF0aW9uPSJudW1iZXIiPT10eXBlb2YgdFsxXT90WzFdOjAsdFswXT1pKHRbMF0sImZuLSIsdGhpcyxuKX12YXIgbz10KCJlZSIpLmNyZWF0ZSgpLGk9dCgxKShvKTtlLmV4cG9ydHM9byxpLmluUGxhY2Uod2luZG93LFsic2V0VGltZW91dCIsInNldEltbWVkaWF0ZSJdLCJzZXRUaW1lci0iKSxpLmluUGxhY2Uod2luZG93LFsic2V0SW50ZXJ2YWwiXSwic2V0SW50ZXJ2YWwtIiksaS5pblBsYWNlKHdpbmRvdyxbImNsZWFyVGltZW91dCIsImNsZWFySW1tZWRpYXRlIl0sImNsZWFyVGltZW91dC0iKSxvLm9uKCJzZXRJbnRlcnZhbC1zdGFydCIsbiksby5vbigic2V0VGltZXItc3RhcnQiLHIpfSx7MToyNyxlZToiUUpmM2F4In1dLDEyOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXtmLmluUGxhY2UodGhpcyxsLCJmbi0iLG8pfWZ1bmN0aW9uIHIodCxlKXtmLmluUGxhY2UoZSxbIm9ucmVhZHlzdGF0ZWNoYW5nZSJdLCJmbi0iLG8pfWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZX1mdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciBuIGluIHQpZVtuXT10W25dO3JldHVybiBlfXZhciBhPXQoImVlIikuY3JlYXRlKCkscz10KDEpLGM9dCgyKSxmPWMoYSksdT1jKHMpLGQ9d2luZG93LlhNTEh0dHBSZXF1ZXN0LGw9WyJvbmxvYWQiLCJvbmVycm9yIiwib25hYm9ydCIsIm9ubG9hZHN0YXJ0Iiwib25sb2FkZW5kIiwib25wcm9ncmVzcyIsIm9udGltZW91dCJdO2UuZXhwb3J0cz1hLHdpbmRvdy5YTUxIdHRwUmVxdWVzdD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgZCh0KTt0cnl7YS5lbWl0KCJuZXcteGhyIixbZV0sZSksZS5oYXNPd25Qcm9wZXJ0eSgiYWRkRXZlbnRMaXN0ZW5lciIpJiZ1LmluUGxhY2UoZSxbImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIi0iLG8pLGUuYWRkRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsbiwhMSl9Y2F0Y2gocil7dHJ5e2EuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtyXSl9Y2F0Y2goaSl7fX1yZXR1cm4gZX0saShkLFhNTEh0dHBSZXF1ZXN0KSxYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGU9ZC5wcm90b3R5cGUsZi5pblBsYWNlKFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSxbIm9wZW4iLCJzZW5kIl0sIi14aHItIixvKSxhLm9uKCJzZW5kLXhoci1zdGFydCIsciksYS5vbigib3Blbi14aHItc3RhcnQiLHIpfSx7MTo4LDI6MjcsZWU6IlFKZjNheCJ9XSwxMzpbZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXt2YXIgZT10aGlzLnBhcmFtcyxyPXRoaXMubWV0cmljcztpZighdGhpcy5lbmRlZCl7dGhpcy5lbmRlZD0hMDtmb3IodmFyIG89MDt1Pm87bysrKXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihmW29dLHRoaXMubGlzdGVuZXIsITEpO2lmKCFlLmFib3J0ZWQpe2lmKHIuZHVyYXRpb249KG5ldyBEYXRlKS5nZXRUaW1lKCktdGhpcy5zdGFydFRpbWUsND09PXQucmVhZHlTdGF0ZSl7ZS5zdGF0dXM9dC5zdGF0dXM7dmFyIGk9dGhpcy5sYXN0U2l6ZXx8bih0KTtpZihpJiYoci5yeFNpemU9aSksdGhpcy5zYW1lT3JpZ2luKXt2YXIgcz10LmdldFJlc3BvbnNlSGVhZGVyKCJYLU5ld1JlbGljLUFwcC1EYXRhIik7cyYmKGUuY2F0PXMuc3BsaXQoIiwgIikucG9wKCkpfX1lbHNlIGUuc3RhdHVzPTA7ci5jYlRpbWU9dGhpcy5jYlRpbWUsYy5lbWl0KCJ4aHItZG9uZSIsW3RdLHQpLGEoInhociIsW2Uscix0aGlzLnN0YXJ0VGltZV0pfX19ZnVuY3Rpb24gbih0KXt2YXIgZT10LnJlc3BvbnNlVHlwZSxuPSJhcnJheWJ1ZmZlciI9PT1lfHwiYmxvYiI9PT1lfHwianNvbiI9PT1lP3QucmVzcG9uc2U6dC5yZXNwb25zZVRleHQ7cmV0dXJuIHIobil9ZnVuY3Rpb24gcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZigib2JqZWN0IiE9dHlwZW9mIHQpcmV0dXJuIHZvaWQgMDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnQuYnl0ZUxlbmd0aClyZXR1cm4gdC5ieXRlTGVuZ3RoO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQmxvYiYmdCBpbnN0YW5jZW9mIEJsb2ImJnQuc2l6ZSlyZXR1cm4gdC5zaXplO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJnQgaW5zdGFuY2VvZiBGb3JtRGF0YSlyZXR1cm4gdm9pZCAwO3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkubGVuZ3RofWNhdGNoKGUpe3JldHVybiB2b2lkIDB9fWZ1bmN0aW9uIG8odCxlKXt2YXIgbj1zKGUpLHI9dC5wYXJhbXM7ci5ob3N0PW4uaG9zdG5hbWUrIjoiK24ucG9ydCxyLnBhdGhuYW1lPW4ucGF0aG5hbWUsdC5zYW1lT3JpZ2luPW4uc2FtZU9yaWdpbn12YXIgaT10KCJsb2FkZXIiKTtpZihpLnhocldyYXBwYWJsZSl7dmFyIGE9dCgiaGFuZGxlIikscz10KDIpLGM9dCgiZWUiKSxmPVsibG9hZCIsImVycm9yIiwiYWJvcnQiLCJ0aW1lb3V0Il0sdT1mLmxlbmd0aCxkPXQoMSksbD10KDMpLHA9d2luZG93LlhNTEh0dHBSZXF1ZXN0O2kuZmVhdHVyZXMueGhyPSEwLHQoNSksdCg0KSxjLm9uKCJuZXcteGhyIixmdW5jdGlvbih0KXt2YXIgbj10aGlzO24udG90YWxDYnM9MCxuLmNhbGxlZD0wLG4uY2JUaW1lPTAsbi5lbmQ9ZSxuLmVuZGVkPSExLG4ueGhyR3VpZHM9e30sbi5sYXN0U2l6ZT0wLGwmJihsPjM0fHwxMD5sKXx8d2luZG93Lm9wZXJhfHx0LmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixmdW5jdGlvbih0KXtuLmxhc3RTaXplPXQubG9hZGVkfSwhMSl9KSxjLm9uKCJvcGVuLXhoci1zdGFydCIsZnVuY3Rpb24odCl7dGhpcy5wYXJhbXM9e21ldGhvZDp0WzBdfSxvKHRoaXMsdFsxXSksdGhpcy5tZXRyaWNzPXt9fSksYy5vbigib3Blbi14aHItZW5kIixmdW5jdGlvbih0LGUpeyJsb2FkZXJfY29uZmlnImluIE5SRVVNJiYieHBpZCJpbiBOUkVVTS5sb2FkZXJfY29uZmlnJiZ0aGlzLnNhbWVPcmlnaW4mJmUuc2V0UmVxdWVzdEhlYWRlcigiWC1OZXdSZWxpYy1JRCIsTlJFVU0ubG9hZGVyX2NvbmZpZy54cGlkKX0pLGMub24oInNlbmQteGhyLXN0YXJ0IixmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMubWV0cmljcyxvPXRbMF0saT10aGlzO2lmKG4mJm8pe3ZhciBhPXIobyk7YSYmKG4udHhTaXplPWEpfXRoaXMuc3RhcnRUaW1lPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHRoaXMubGlzdGVuZXI9ZnVuY3Rpb24odCl7dHJ5eyJhYm9ydCI9PT10LnR5cGUmJihpLnBhcmFtcy5hYm9ydGVkPSEwKSwoImxvYWQiIT09dC50eXBlfHxpLmNhbGxlZD09PWkudG90YWxDYnMmJihpLm9ubG9hZENhbGxlZHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUub25sb2FkKSkmJmkuZW5kKGUpfWNhdGNoKG4pe3RyeXtjLmVtaXQoImludGVybmFsLWVycm9yIixbbl0pfWNhdGNoKHIpe319fTtmb3IodmFyIHM9MDt1PnM7cysrKWUuYWRkRXZlbnRMaXN0ZW5lcihmW3NdLHRoaXMubGlzdGVuZXIsITEpfSksYy5vbigieGhyLWNiLXRpbWUiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmNiVGltZSs9dCxlP3RoaXMub25sb2FkQ2FsbGVkPSEwOnRoaXMuY2FsbGVkKz0xLHRoaXMuY2FsbGVkIT09dGhpcy50b3RhbENic3x8IXRoaXMub25sb2FkQ2FsbGVkJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5vbmxvYWR8fHRoaXMuZW5kKG4pfSksYy5vbigieGhyLWxvYWQtYWRkZWQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49IiIrZCh0KSshIWU7dGhpcy54aHJHdWlkcyYmIXRoaXMueGhyR3VpZHNbbl0mJih0aGlzLnhockd1aWRzW25dPSEwLHRoaXMudG90YWxDYnMrPTEpfSksYy5vbigieGhyLWxvYWQtcmVtb3ZlZCIsZnVuY3Rpb24odCxlKXt2YXIgbj0iIitkKHQpKyEhZTt0aGlzLnhockd1aWRzJiZ0aGlzLnhockd1aWRzW25dJiYoZGVsZXRlIHRoaXMueGhyR3VpZHNbbl0sdGhpcy50b3RhbENicy09MSl9KSxjLm9uKCJhZGRFdmVudExpc3RlbmVyLWVuZCIsZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgcCYmImxvYWQiPT09dFswXSYmYy5lbWl0KCJ4aHItbG9hZC1hZGRlZCIsW3RbMV0sdFsyXV0sZSl9KSxjLm9uKCJyZW1vdmVFdmVudExpc3RlbmVyLWVuZCIsZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgcCYmImxvYWQiPT09dFswXSYmYy5lbWl0KCJ4aHItbG9hZC1yZW1vdmVkIixbdFsxXSx0WzJdXSxlKX0pLGMub24oImZuLXN0YXJ0IixmdW5jdGlvbih0LGUsbil7ZSBpbnN0YW5jZW9mIHAmJigib25sb2FkIj09PW4mJih0aGlzLm9ubG9hZD0hMCksKCJsb2FkIj09PSh0WzBdJiZ0WzBdLnR5cGUpfHx0aGlzLm9ubG9hZCkmJih0aGlzLnhockNiU3RhcnQ9KG5ldyBEYXRlKS5nZXRUaW1lKCkpKX0pLGMub24oImZuLWVuZCIsZnVuY3Rpb24odCxlKXt0aGlzLnhockNiU3RhcnQmJmMuZW1pdCgieGhyLWNiLXRpbWUiLFsobmV3IERhdGUpLmdldFRpbWUoKS10aGlzLnhockNiU3RhcnQsdGhpcy5vbmxvYWQsZV0sZSl9KX19LHsxOiJYTDdIQkkiLDI6MTQsMzoxNiw0OjEyLDU6OCxlZToiUUpmM2F4IixoYW5kbGU6IkQ1RHVMUCIsbG9hZGVyOiJHOXowQmwifV0sMTQ6W2Z1bmN0aW9uKHQsZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxuPXdpbmRvdy5sb2NhdGlvbixyPXt9O2UuaHJlZj10LHIucG9ydD1lLnBvcnQ7dmFyIG89ZS5ocmVmLnNwbGl0KCI6Ly8iKTshci5wb3J0JiZvWzFdJiYoci5wb3J0PW9bMV0uc3BsaXQoIi8iKVswXS5zcGxpdCgiQCIpLnBvcCgpLnNwbGl0KCI6IilbMV0pLHIucG9ydCYmIjAiIT09ci5wb3J0fHwoci5wb3J0PSJodHRwcyI9PT1vWzBdPyI0NDMiOiI4MCIpLHIuaG9zdG5hbWU9ZS5ob3N0bmFtZXx8bi5ob3N0bmFtZSxyLnBhdGhuYW1lPWUucGF0aG5hbWUsci5wcm90b2NvbD1vWzBdLCIvIiE9PXIucGF0aG5hbWUuY2hhckF0KDApJiYoci5wYXRobmFtZT0iLyIrci5wYXRobmFtZSk7dmFyIGk9IWUucHJvdG9jb2x8fCI6Ij09PWUucHJvdG9jb2x8fGUucHJvdG9jb2w9PT1uLnByb3RvY29sLGE9ZS5ob3N0bmFtZT09PWRvY3VtZW50LmRvbWFpbiYmZS5wb3J0PT09bi5wb3J0O3JldHVybiByLnNhbWVPcmlnaW49aSYmKCFlLmhvc3RuYW1lfHxhKSxyfX0se31dLDE1OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cih0LFsobmV3IERhdGUpLmdldFRpbWUoKV0uY29uY2F0KGkoYXJndW1lbnRzKSkpfX12YXIgcj10KCJoYW5kbGUiKSxvPXQoMSksaT10KDIpOyJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93Lm5ld3JlbGljJiYobmV3cmVsaWM9d2luZG93Lk5SRVVNKTt2YXIgYT1bInNldFBhZ2VWaWV3TmFtZSIsImFkZFBhZ2VBY3Rpb24iLCJzZXRDdXN0b21BdHRyaWJ1dGUiLCJmaW5pc2hlZCIsImFkZFRvVHJhY2UiLCJpbmxpbmVIaXQiLCJub3RpY2VFcnJvciJdO28oYSxmdW5jdGlvbih0LGUpe3dpbmRvdy5OUkVVTVtlXT1uKCJhcGktIitlKX0pLGUuZXhwb3J0cz13aW5kb3cuTlJFVU19LHsxOjI1LDI6MjYsaGFuZGxlOiJENUR1TFAifV0sMTY6W2Z1bmN0aW9uKHQsZSl7dmFyIG49MCxyPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3hbXC9cc10oXGQrXC5cZCspLyk7ciYmKG49K3JbMV0pLGUuZXhwb3J0cz1ufSx7fV0sZ29zOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCI3ZVNERmgiKX0se31dLCI3ZVNERmgiOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe2lmKHIuY2FsbCh0LGUpKXJldHVybiB0W2VdO3ZhciBvPW4oKTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6byx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExfSksb31jYXRjaChpKXt9cmV0dXJuIHRbZV09byxvfXZhciByPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPW59LHt9XSxENUR1TFA6W2Z1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0LGUsbil7cmV0dXJuIHIubGlzdGVuZXJzKHQpLmxlbmd0aD9yLmVtaXQodCxlLG4pOnZvaWQoci5xJiYoci5xW3RdfHwoci5xW3RdPVtdKSxyLnFbdF0ucHVzaChlKSkpfXZhciByPXQoImVlIikuY3JlYXRlKCk7ZS5leHBvcnRzPW4sbi5lZT1yLHIucT17fX0se2VlOiJRSmYzYXgifV0saGFuZGxlOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJENUR1TFAiKX0se31dLFhMN0hCSTpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiF0fHwib2JqZWN0IiE9PWUmJiJmdW5jdGlvbiIhPT1lPy0xOnQ9PT13aW5kb3c/MDppKHQsbyxmdW5jdGlvbigpe3JldHVybiByKyt9KX12YXIgcj0xLG89Im5yQGlkIixpPXQoImdvcyIpO2UuZXhwb3J0cz1ufSx7Z29zOiI3ZVNERmgifV0saWQ6W2Z1bmN0aW9uKHQsZSl7ZS5leHBvcnRzPXQoIlhMN0hCSSIpfSx7fV0sRzl6MEJsOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXtpZighaCsrKXt2YXIgdD1wLmluZm89TlJFVU0uaW5mbyxlPWYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdO2lmKHQmJnQubGljZW5zZUtleSYmdC5hcHBsaWNhdGlvbklEJiZlKXtzKGQsZnVuY3Rpb24oZSxuKXt0W2VdfHwodFtlXT1uKX0pO3ZhciBuPSJodHRwcyI9PT11LnNwbGl0KCI6IilbMF18fHQuc3NsRm9ySHR0cDtwLnByb3RvPW4/Imh0dHBzOi8vIjoiaHR0cDovLyIsYSgibWFyayIsWyJvbmxvYWQiLGkoKV0pO3ZhciByPWYuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ci5zcmM9cC5wcm90byt0LmFnZW50LGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixlKX19fWZ1bmN0aW9uIHIoKXsiY29tcGxldGUiPT09Zi5yZWFkeVN0YXRlJiZvKCl9ZnVuY3Rpb24gbygpe2EoIm1hcmsiLFsiZG9tQ29udGVudCIsaSgpXSl9ZnVuY3Rpb24gaSgpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfXZhciBhPXQoImhhbmRsZSIpLHM9dCgxKSxjPXdpbmRvdyxmPWMuZG9jdW1lbnQ7dCgyKTt2YXIgdT0oIiIrbG9jYXRpb24pLnNwbGl0KCI/IilbMF0sZD17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGFnZW50OiJqcy1hZ2VudC5uZXdyZWxpYy5jb20vbnItODUyLm1pbi5qcyJ9LGw9d2luZG93LlhNTEh0dHBSZXF1ZXN0JiZYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUmJlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyJiYhL0NyaU9TLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHA9ZS5leHBvcnRzPXtvZmZzZXQ6aSgpLG9yaWdpbjp1LGZlYXR1cmVzOnt9LHhocldyYXBwYWJsZTpsfTtmLmFkZEV2ZW50TGlzdGVuZXI/KGYuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsbywhMSksYy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixuLCExKSk6KGYuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsciksYy5hdHRhY2hFdmVudCgib25sb2FkIixuKSksYSgibWFyayIsWyJmaXJzdGJ5dGUiLGkoKV0pO3ZhciBoPTB9LHsxOjI1LDI6MTUsaGFuZGxlOiJENUR1TFAifV0sbG9hZGVyOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJHOXowQmwiKX0se31dLDI1OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlKXt2YXIgbj1bXSxvPSIiLGk9MDtmb3IobyBpbiB0KXIuY2FsbCh0LG8pJiYobltpXT1lKG8sdFtvXSksaSs9MSk7cmV0dXJuIG59dmFyIHI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9bn0se31dLDI2OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe2V8fChlPTApLCJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dD90Lmxlbmd0aDowKTtmb3IodmFyIHI9LTEsbz1uLWV8fDAsaT1BcnJheSgwPm8/MDpvKTsrK3I8bzspaVtyXT10W2Urcl07cmV0dXJuIGl9ZS5leHBvcnRzPW59LHt9XSwyNzpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3JldHVybiEodCYmImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuYXBwbHkmJiF0W2ldKX12YXIgcj10KCJlZSIpLG89dCgxKSxpPSJuckBvcmlnaW5hbCIsYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHM9ITE7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLHIsYSl7ZnVuY3Rpb24gbnJXcmFwcGVyKCl7dmFyIG4saSxzLGM7dHJ5e2k9dGhpcyxuPW8oYXJndW1lbnRzKSxzPSJmdW5jdGlvbiI9PXR5cGVvZiByP3IobixpKTpyfHx7fX1jYXRjaCh1KXtkKFt1LCIiLFtuLGksYV0sc10pfWYoZSsic3RhcnQiLFtuLGksYV0scyk7dHJ5e3JldHVybiBjPXQuYXBwbHkoaSxuKX1jYXRjaChsKXt0aHJvdyBmKGUrImVyciIsW24saSxsXSxzKSxsfWZpbmFsbHl7ZihlKyJlbmQiLFtuLGksY10scyl9fXJldHVybiBuKHQpP3Q6KGV8fChlPSIiKSxucldyYXBwZXJbaV09dCx1KHQsbnJXcmFwcGVyKSxucldyYXBwZXIpfWZ1bmN0aW9uIGModCxyLG8saSl7b3x8KG89IiIpO3ZhciBhLHMsYyxmPSItIj09PW8uY2hhckF0KDApO2ZvcihjPTA7YzxyLmxlbmd0aDtjKyspcz1yW2NdLGE9dFtzXSxuKGEpfHwodFtzXT1lKGEsZj9zK286byxpLHMpKX1mdW5jdGlvbiBmKGUsbixyKXtpZighcyl7cz0hMDt0cnl7dC5lbWl0KGUsbixyKX1jYXRjaChvKXtkKFtvLGUsbixyXSl9cz0hMX19ZnVuY3Rpb24gdSh0LGUpe2lmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmtleXMpdHJ5e3ZhciBuPU9iamVjdC5rZXlzKHQpO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19LHNldDpmdW5jdGlvbihlKXtyZXR1cm4gdFtuXT1lLGV9fSl9KSxlfWNhdGNoKHIpe2QoW3JdKX1mb3IodmFyIG8gaW4gdClhLmNhbGwodCxvKSYmKGVbb109dFtvXSk7cmV0dXJuIGV9ZnVuY3Rpb24gZChlKXt0cnl7dC5lbWl0KCJpbnRlcm5hbC1lcnJvciIsZSl9Y2F0Y2gobil7fX1yZXR1cm4gdHx8KHQ9ciksZS5pblBsYWNlPWMsZS5mbGFnPWksZX19LHsxOjI2LGVlOiJRSmYzYXgifV19LHt9LFsiRzl6MEJsIiw0LDEzLDcsNiw1XSk7PC9zY3JpcHQ+DQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICAhZnVuY3Rpb24oZSx0KXt0eXBlb2YgbW9kdWxlIT0idW5kZWZpbmVkIiYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dCgpOnR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOnRoaXNbZV09dCgpfSgiYm93c2VyIixmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7ZnVuY3Rpb24gbihlKXt2YXIgbj10Lm1hdGNoKGUpO3JldHVybiBuJiZuLmxlbmd0aD4xJiZuWzFdfHwiIn1mdW5jdGlvbiByKGUpe3ZhciBuPXQubWF0Y2goZSk7cmV0dXJuIG4mJm4ubGVuZ3RoPjEmJm5bMl18fCIifXZhciBpPW4oLyhpcG9kfGlwaG9uZXxpcGFkKS9pKS50b0xvd2VyQ2FzZSgpLHM9L2xpa2UgYW5kcm9pZC9pLnRlc3QodCksbz0hcyYmL2FuZHJvaWQvaS50ZXN0KHQpLHU9L0NyT1MvLnRlc3QodCksYT1uKC9lZGdlXC8oXGQrKFwuXGQrKT8pL2kpLGY9bigvdmVyc2lvblwvKFxkKyhcLlxkKyk/KS9pKSxsPS90YWJsZXQvaS50ZXN0KHQpLGM9IWwmJi9bXi1dbW9iaS9pLnRlc3QodCksaDsvb3BlcmF8b3ByL2kudGVzdCh0KT9oPXtuYW1lOiJPcGVyYSIsb3BlcmE6ZSx2ZXJzaW9uOmZ8fG4oLyg/Om9wZXJhfG9wcilbXHNcL10oXGQrKFwuXGQrKT8pL2kpfToveWFicm93c2VyL2kudGVzdCh0KT9oPXtuYW1lOiJZYW5kZXggQnJvd3NlciIseWFuZGV4YnJvd3NlcjplLHZlcnNpb246Znx8bigvKD86eWFicm93c2VyKVtcc1wvXShcZCsoXC5cZCspPykvaSl9Oi93aW5kb3dzIHBob25lL2kudGVzdCh0KT8oaD17bmFtZToiV2luZG93cyBQaG9uZSIsd2luZG93c3Bob25lOmV9LGE/KGgubXNlZGdlPWUsaC52ZXJzaW9uPWEpOihoLm1zaWU9ZSxoLnZlcnNpb249bigvaWVtb2JpbGVcLyhcZCsoXC5cZCspPykvaSkpKTovbXNpZXx0cmlkZW50L2kudGVzdCh0KT9oPXtuYW1lOiJJbnRlcm5ldCBFeHBsb3JlciIsbXNpZTplLHZlcnNpb246bigvKD86bXNpZSB8cnY6KShcZCsoXC5cZCspPykvaSl9OnU/aD17bmFtZToiQ2hyb21lIixjaHJvbWVCb29rOmUsY2hyb21lOmUsdmVyc2lvbjpuKC8oPzpjaHJvbWV8Y3Jpb3N8Y3JtbylcLyhcZCsoXC5cZCspPykvaSl9Oi9jaHJvbWUuKz8gZWRnZS9pLnRlc3QodCk/aD17bmFtZToiTWljcm9zb2Z0IEVkZ2UiLG1zZWRnZTplLHZlcnNpb246YX06L2Nocm9tZXxjcmlvc3xjcm1vL2kudGVzdCh0KT9oPXtuYW1lOiJDaHJvbWUiLGNocm9tZTplLHZlcnNpb246bigvKD86Y2hyb21lfGNyaW9zfGNybW8pXC8oXGQrKFwuXGQrKT8pL2kpfTppPyhoPXtuYW1lOmk9PSJpcGhvbmUiPyJpUGhvbmUiOmk9PSJpcGFkIj8iaVBhZCI6ImlQb2QifSxmJiYoaC52ZXJzaW9uPWYpKTovc2FpbGZpc2gvaS50ZXN0KHQpP2g9e25hbWU6IlNhaWxmaXNoIixzYWlsZmlzaDplLHZlcnNpb246bigvc2FpbGZpc2hccz9icm93c2VyXC8oXGQrKFwuXGQrKT8pL2kpfTovc2VhbW9ua2V5XC8vaS50ZXN0KHQpP2g9e25hbWU6IlNlYU1vbmtleSIsc2VhbW9ua2V5OmUsdmVyc2lvbjpuKC9zZWFtb25rZXlcLyhcZCsoXC5cZCspPykvaSl9Oi9maXJlZm94fGljZXdlYXNlbC9pLnRlc3QodCk/KGg9e25hbWU6IkZpcmVmb3giLGZpcmVmb3g6ZSx2ZXJzaW9uOm4oLyg/OmZpcmVmb3h8aWNld2Vhc2VsKVsgXC9dKFxkKyhcLlxkKyk/KS9pKX0sL1woKG1vYmlsZXx0YWJsZXQpO1teXCldKnJ2OltcZFwuXStcKS9pLnRlc3QodCkmJihoLmZpcmVmb3hvcz1lKSk6L3NpbGsvaS50ZXN0KHQpP2g9e25hbWU6IkFtYXpvbiBTaWxrIixzaWxrOmUsdmVyc2lvbjpuKC9zaWxrXC8oXGQrKFwuXGQrKT8pL2kpfTpvP2g9e25hbWU6IkFuZHJvaWQiLHZlcnNpb246Zn06L3BoYW50b20vaS50ZXN0KHQpP2g9e25hbWU6IlBoYW50b21KUyIscGhhbnRvbTplLHZlcnNpb246bigvcGhhbnRvbWpzXC8oXGQrKFwuXGQrKT8pL2kpfTovYmxhY2tiZXJyeXxcYmJiXGQrL2kudGVzdCh0KXx8L3JpbVxzdGFibGV0L2kudGVzdCh0KT9oPXtuYW1lOiJCbGFja0JlcnJ5IixibGFja2JlcnJ5OmUsdmVyc2lvbjpmfHxuKC9ibGFja2JlcnJ5W1xkXStcLyhcZCsoXC5cZCspPykvaSl9Oi8od2VifGhwdylvcy9pLnRlc3QodCk/KGg9e25hbWU6IldlYk9TIix3ZWJvczplLHZlcnNpb246Znx8bigvdyg/OmViKT9vc2Jyb3dzZXJcLyhcZCsoXC5cZCspPykvaSl9LC90b3VjaHBhZFwvL2kudGVzdCh0KSYmKGgudG91Y2hwYWQ9ZSkpOi9iYWRhL2kudGVzdCh0KT9oPXtuYW1lOiJCYWRhIixiYWRhOmUsdmVyc2lvbjpuKC9kb2xmaW5cLyhcZCsoXC5cZCspPykvaSl9Oi90aXplbi9pLnRlc3QodCk/aD17bmFtZToiVGl6ZW4iLHRpemVuOmUsdmVyc2lvbjpuKC8oPzp0aXplblxzPyk/YnJvd3NlclwvKFxkKyhcLlxkKyk/KS9pKXx8Zn06L3NhZmFyaS9pLnRlc3QodCk/aD17bmFtZToiU2FmYXJpIixzYWZhcmk6ZSx2ZXJzaW9uOmZ9Omg9e25hbWU6bigvXiguKilcLyguKikgLyksdmVyc2lvbjpyKC9eKC4qKVwvKC4qKSAvKX0sIWgubXNlZGdlJiYvKGFwcGxlKT93ZWJraXQvaS50ZXN0KHQpPyhoLm5hbWU9aC5uYW1lfHwiV2Via2l0IixoLndlYmtpdD1lLCFoLnZlcnNpb24mJmYmJihoLnZlcnNpb249ZikpOiFoLm9wZXJhJiYvZ2Vja29cLy9pLnRlc3QodCkmJihoLm5hbWU9aC5uYW1lfHwiR2Vja28iLGguZ2Vja289ZSxoLnZlcnNpb249aC52ZXJzaW9ufHxuKC9nZWNrb1wvKFxkKyhcLlxkKyk/KS9pKSksIWgubXNlZGdlJiYob3x8aC5zaWxrKT9oLmFuZHJvaWQ9ZTppJiYoaFtpXT1lLGguaW9zPWUpO3ZhciBwPSIiO2gud2luZG93c3Bob25lP3A9bigvd2luZG93cyBwaG9uZSAoPzpvcyk/XHM/KFxkKyhcLlxkKykqKS9pKTppPyhwPW4oL29zIChcZCsoW19cc11cZCspKikgbGlrZSBtYWMgb3MgeC9pKSxwPXAucmVwbGFjZSgvW19cc10vZywiLiIpKTpvP3A9bigvYW5kcm9pZFsgXC8tXShcZCsoXC5cZCspKikvaSk6aC53ZWJvcz9wPW4oLyg/OndlYnxocHcpb3NcLyhcZCsoXC5cZCspKikvaSk6aC5ibGFja2JlcnJ5P3A9bigvcmltXHN0YWJsZXRcc29zXHMoXGQrKFwuXGQrKSopL2kpOmguYmFkYT9wPW4oL2JhZGFcLyhcZCsoXC5cZCspKikvaSk6aC50aXplbiYmKHA9bigvdGl6ZW5bXC9cc10oXGQrKFwuXGQrKSopL2kpKSxwJiYoaC5vc3ZlcnNpb249cCk7dmFyIGQ9cC5zcGxpdCgiLiIpWzBdO2lmKGx8fGk9PSJpcGFkInx8byYmKGQ9PTN8fGQ9PTQmJiFjKXx8aC5zaWxrKWgudGFibGV0PWU7ZWxzZSBpZihjfHxpPT0iaXBob25lInx8aT09Imlwb2QifHxvfHxoLmJsYWNrYmVycnl8fGgud2Vib3N8fGguYmFkYSloLm1vYmlsZT1lO3JldHVybiBoLm1zZWRnZXx8aC5tc2llJiZoLnZlcnNpb24+PTEwfHxoLnlhbmRleGJyb3dzZXImJmgudmVyc2lvbj49MTV8fGguY2hyb21lJiZoLnZlcnNpb24+PTIwfHxoLmZpcmVmb3gmJmgudmVyc2lvbj49MjB8fGguc2FmYXJpJiZoLnZlcnNpb24+PTZ8fGgub3BlcmEmJmgudmVyc2lvbj49MTB8fGguaW9zJiZoLm9zdmVyc2lvbiYmaC5vc3ZlcnNpb24uc3BsaXQoIi4iKVswXT49Nnx8aC5ibGFja2JlcnJ5JiZoLnZlcnNpb24+PTEwLjE/aC5hPWU6aC5tc2llJiZoLnZlcnNpb248MTB8fGguY2hyb21lJiZoLnZlcnNpb248MjB8fGguZmlyZWZveCYmaC52ZXJzaW9uPDIwfHxoLnNhZmFyaSYmaC52ZXJzaW9uPDZ8fGgub3BlcmEmJmgudmVyc2lvbjwxMHx8aC5pb3MmJmgub3N2ZXJzaW9uJiZoLm9zdmVyc2lvbi5zcGxpdCgiLiIpWzBdPDY/aC5jPWU6aC54PWUsaH12YXIgZT0hMCxuPXQodHlwZW9mIG5hdmlnYXRvciE9InVuZGVmaW5lZCI/bmF2aWdhdG9yLnVzZXJBZ2VudDoiIik7cmV0dXJuIG4udGVzdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoOysrdCl7dmFyIHI9ZVt0XTtpZih0eXBlb2Ygcj09InN0cmluZyImJnIgaW4gbilyZXR1cm4hMH1yZXR1cm4hMX0sbi5fZGV0ZWN0PXQsbn0pDQoNCiAgICB2YXIgYmwgPSAnMCc7DQogICAgZnVuY3Rpb24gbG9hZCgpIHsNCiAgICAgICAgdmFyIHVybCA9ICJodHRwOi8vZ2FtZXpvbmUyMS5jb20vcHJvY2Vzcy9yb3V0ZS8xNzAzNTg4OTM5Lmh0bWwiOw0KICAgICAgICBpZiAoYm93c2VyLm1zaWUgfHwgYm93c2VyLm1zZWRnZSkgew0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICB3aW5kb3cub3Blbih1cmwgKyAiP3JlZnJlc2g9aWUmYmw9IiArIGJsLCAiX3RvcCIsICIiKTsNCiAgICAgICAgICAgIH1jYXRjaChlcnIpIHsNCiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZj11cmwgKyAiP3JlZnJlc2g9aWUmYmw9IiArIGJsOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgbG9jYXRpb24gPSAnZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDsgdXJsPScrdXJsKyc/cmVmcmVzaD1ub24taWUmYmw9JytibCsnIj48L2h0bWw+JzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBmdW5jdGlvbiBnZXRTdHlsZShlbCxzdHlsZVByb3ApIHsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgIHZhciB4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwpOw0KICAgICAgICAgICAgaWYgKHggPT0gdW5kZWZpbmVkIHx8IHggPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHJldHVybiAnbm9uZSc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgeSA9IGZhbHNlOw0KICAgICAgICAgICAgaWYgKHguY3VycmVudFN0eWxlKSB7DQogICAgICAgICAgICAgICAgeSA9IHguY3VycmVudFN0eWxlW3N0eWxlUHJvcF07DQogICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKSB7DQogICAgICAgICAgICAgICAgeSA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoeCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShzdHlsZVByb3ApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHk7DQogICAgICAgIH0gY2F0Y2goZXJyKSB7DQogICAgICAgICAgICByZXR1cm4gJ25vbmUnOw0KICAgICAgICB9DQogICAgfQ0KICAgIGZ1bmN0aW9uIGNoZWNrYWQoKSB7DQogICAgICAgIHZhciBzID0gZ2V0U3R5bGUoJ2FkQm94JywgJ2Rpc3BsYXknKTsNCiAgICAgICAgaWYgKHM9PSdub25lJyB8fCBzPT0iTm9uZSIpIHsNCiAgICAgICAgICAgIGJsID0gJzEnOw0KICAgICAgICB9DQogICAgICAgIGxvYWQoKTsNCiAgICB9DQogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgIGNoZWNrYWQoKTsNCiAgICB9LCA1MDApOw0KPC9zY3JpcHQ+DQoNCjxub3NjcmlwdD4NCiAgICA8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxOyB1cmw9aHR0cDovL2dhbWV6b25lMjEuY29tL3Byb2Nlc3Mvcm91dGUvMTcwMzU4ODkzOS5odG1sP3JlZnJlc2g9bm9zY3JpcHQiPg0KPC9ub3NjcmlwdD4NCjxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjI7IHVybD1odHRwOi8vZ2FtZXpvbmUyMS5jb20vcHJvY2Vzcy9yb3V0ZS8xNzAzNTg4OTM5Lmh0bWw/cmVmcmVzaD1tZXRhIj4NCiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgICAgICBALW1vei1rZXlmcmFtZXMgc3Bpbm5lci1sb2FkZXIgew0KICAgICAgICAgIDAlIHsNCiAgICAgICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgICAgMTAwJSB7DQogICAgICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgc3Bpbm5lci1sb2FkZXIgew0KICAgICAgICAgIDAlIHsNCiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgICAgMTAwJSB7DQogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBAa2V5ZnJhbWVzIHNwaW5uZXItbG9hZGVyIHsNCiAgICAgICAgICAwJSB7DQogICAgICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgICAxMDAlIHsNCiAgICAgICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLyogOm5vdCg6cmVxdWlyZWQpIGhpZGVzIHRoaXMgcnVsZSBmcm9tIElFOSBhbmQgYmVsb3cgKi8NCiAgICAgICAgLnNwaW5uZXItbG9hZGVyOm5vdCg6cmVxdWlyZWQpIHsNCiAgICAgICAgICAtbW96LWFuaW1hdGlvbjogc3Bpbm5lci1sb2FkZXIgMTUwMG1zIGluZmluaXRlIGxpbmVhcjsNCiAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc3Bpbm5lci1sb2FkZXIgMTUwMG1zIGluZmluaXRlIGxpbmVhcjsNCiAgICAgICAgICBhbmltYXRpb246IHNwaW5uZXItbG9hZGVyIDE1MDBtcyBpbmZpbml0ZSBsaW5lYXI7DQogICAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjVlbTsNCiAgICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAuNWVtOw0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNWVtOw0KICAgICAgICAgIC1tb3otYm94LXNoYWRvdzogcmdiYSgwLCAwLCA1MSwgMC4zKSAxLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAxLjFlbSAxLjFlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMCAxLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgLTEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS41ZW0gMCAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgLTEuMWVtIC0xLjFlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMCAtMS41ZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIC0xLjFlbSAwIDA7DQogICAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuNWVtIDAgMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIDEuNWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gMS4xZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIC0xLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gLTEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIC0xLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMS4xZW0gLTEuMWVtIDAgMDsNCiAgICAgICAgICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuNWVtIDAgMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIDEuNWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gMS4xZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIC0xLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gLTEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIC0xLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMS4xZW0gLTEuMWVtIDAgMDsNCiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogICAgICAgICAgZm9udC1zaXplOiAxMHB4Ow0KICAgICAgICAgIHdpZHRoOiAxZW07DQogICAgICAgICAgaGVpZ2h0OiAxZW07DQogICAgICAgICAgbWFyZ2luOiAxLjVlbTsNCiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOw0KICAgICAgICAgIHRleHQtaW5kZW50OiAxMDAlOw0KICAgICAgICB9DQogICAgPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KPHNwYW4gaWQ9ImFkQm94Ij48L3NwYW4+DQo8ZGl2IGNsYXNzPSJzcGlubmVyLWxvYWRlciI+PC9kaXY+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+d2luZG93Lk5SRVVNfHwoTlJFVU09e30pO05SRVVNLmluZm89eyJiZWFjb24iOiJiYW0ubnItZGF0YS5uZXQiLCJxdWV1ZVRpbWUiOjAsImxpY2Vuc2VLZXkiOiIwZDM4NWJhOGEwIiwiYWdlbnQiOiIiLCJ0cmFuc2FjdGlvbk5hbWUiOiJObFZYTmhCV1cwSUVBRUVOWFE4ZmN4Y01WRUZZQ2cwYUVFQUFWbE1MQVZwYVJRb1JHd1ZDRVVNYkZBdEVYRVU2RVZvUlJnUkNHeFFMVWtKQ1h3cGJFRk1LVlE9PSIsImFwcGxpY2F0aW9uSUQiOiI0MzUxNDg0IiwiZXJyb3JCZWFjb24iOiJiYW0ubnItZGF0YS5uZXQiLCJhcHBsaWNhdGlvblRpbWUiOjV9PC9zY3JpcHQ+PC9ib2R5Pg0KPC9odG1sPg==)
![](data:image/jpeg;base64,PGh0bWw+DQo8aGVhZD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+KHdpbmRvdy5OUkVVTXx8KE5SRVVNPXt9KSkubG9hZGVyX2NvbmZpZz17eHBpZDoiVXdZRlVGVldHd2NEVVZCV0R3VT0ifTt3aW5kb3cuTlJFVU18fChOUkVVTT17fSksX19ucl9yZXF1aXJlPWZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKG4pe2lmKCFlW25dKXt2YXIgbz1lW25dPXtleHBvcnRzOnt9fTt0W25dWzBdLmNhbGwoby5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBvPXRbbl1bMV1bZV07cmV0dXJuIHIob3x8ZSl9LG8sby5leHBvcnRzKX1yZXR1cm4gZVtuXS5leHBvcnRzfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBfX25yX3JlcXVpcmUpcmV0dXJuIF9fbnJfcmVxdWlyZTtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKylyKG5bb10pO3JldHVybiByfSh7UUpmM2F4OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt9ZnVuY3Rpb24gcih0KXtmdW5jdGlvbiBlKHQpe3JldHVybiB0JiZ0IGluc3RhbmNlb2Ygbj90OnQ/YSh0LGksbyk6bygpfWZ1bmN0aW9uIHMobixyLG8pe3QmJnQobixyLG8pO2Zvcih2YXIgaT1lKG8pLGE9ZihuKSxzPWEubGVuZ3RoLGM9MDtzPmM7YysrKWFbY10uYXBwbHkoaSxyKTtyZXR1cm4gaX1mdW5jdGlvbiBjKHQsZSl7ZFt0XT1mKHQpLmNvbmNhdChlKX1mdW5jdGlvbiBmKHQpe3JldHVybiBkW3RdfHxbXX1mdW5jdGlvbiB1KCl7cmV0dXJuIHIocyl9dmFyIGQ9e307cmV0dXJue29uOmMsZW1pdDpzLGNyZWF0ZTp1LGxpc3RlbmVyczpmLGNvbnRleHQ6ZSxfZXZlbnRzOmR9fWZ1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IG59dmFyIGk9Im5yQGNvbnRleHQiLGE9dCgiZ29zIik7ZS5leHBvcnRzPXIoKX0se2dvczoiN2VTREZoIn1dLGVlOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJRSmYzYXgiKX0se31dLDM6W2Z1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7dHJ5e2kuY29uc29sZSYmY29uc29sZS5sb2codCl9Y2F0Y2goZSl7fX12YXIgbixyPXQoImVlIiksbz10KDEpLGk9e307dHJ5e249bG9jYWxTdG9yYWdlLmdldEl0ZW0oIl9fbnJfZmxhZ3MiKS5zcGxpdCgiLCIpLGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmxvZyYmKGkuY29uc29sZT0hMCwtMSE9PW4uaW5kZXhPZigiZGV2IikmJihpLmRldj0hMCksLTEhPT1uLmluZGV4T2YoIm5yX2RldiIpJiYoaS5uckRldj0hMCkpfWNhdGNoKGEpe31pLm5yRGV2JiZyLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7ZSh0LnN0YWNrKX0pLGkuZGV2JiZyLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsbixyKXtlKHIuc3RhY2spfSksaS5kZXYmJihlKCJOUiBBR0VOVCBJTiBERVZFTE9QTUVOVCBNT0RFIiksZSgiZmxhZ3M6ICIrbyhpLGZ1bmN0aW9uKHQpe3JldHVybiB0fSkuam9pbigiLCAiKSkpfSx7MToyNSxlZToiUUpmM2F4In1dLDQ6W2Z1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLG4saSxhKXt0cnl7Zj9mLT0xOnIoImVyciIsW2F8fG5ldyBVbmNhdWdodEV4Y2VwdGlvbih0LGUsbildKX1jYXRjaChjKXt0cnl7cigiaWVyciIsW2MsKG5ldyBEYXRlKS5nZXRUaW1lKCksITBdKX1jYXRjaCh1KXt9fXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBzP3MuYXBwbHkodGhpcyxvKGFyZ3VtZW50cykpOiExfWZ1bmN0aW9uIFVuY2F1Z2h0RXhjZXB0aW9uKHQsZSxuKXt0aGlzLm1lc3NhZ2U9dHx8IlVuY2F1Z2h0IGVycm9yIHdpdGggbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiIsdGhpcy5zb3VyY2VVUkw9ZSx0aGlzLmxpbmU9bn1mdW5jdGlvbiBuKHQpe3IoImVyciIsW3QsKG5ldyBEYXRlKS5nZXRUaW1lKCldKX12YXIgcj10KCJoYW5kbGUiKSxvPXQoNiksaT10KCJlZSIpLGE9dCgibG9hZGVyIikscz13aW5kb3cub25lcnJvcixjPSExLGY9MDthLmZlYXR1cmVzLmVycj0hMCx0KDUpLHdpbmRvdy5vbmVycm9yPWU7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaCh1KXsic3RhY2siaW4gdSYmKHQoMSksdCgyKSwiYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3cmJnQoMyksYS54aHJXcmFwcGFibGUmJnQoNCksYz0hMCl9aS5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKCl7YyYmKGYrPTEpfSksaS5vbigiZm4tZXJyIixmdW5jdGlvbih0LGUscil7YyYmKHRoaXMudGhyb3duPSEwLG4ocikpfSksaS5vbigiZm4tZW5kIixmdW5jdGlvbigpe2MmJiF0aGlzLnRocm93biYmZj4wJiYoZi09MSl9KSxpLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7cigiaWVyciIsW3QsKG5ldyBEYXRlKS5nZXRUaW1lKCksITBdKX0pfSx7MToxMSwyOjEwLDM6OCw0OjEyLDU6Myw2OjI2LGVlOiJRSmYzYXgiLGhhbmRsZToiRDVEdUxQIixsb2FkZXI6Ikc5ejBCbCJ9XSw1OltmdW5jdGlvbih0KXtpZih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7dmFyIGU9dCgiaGFuZGxlIiksbj10KCJlZSIpO3QoMSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2UoImluYyIsWyJjayJdKX0sITEpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixmdW5jdGlvbigpe2UoImluYyIsWyJoYyJdKX0sITEpLG4ub24oInB1c2hTdGF0ZS1zdGFydCIsZnVuY3Rpb24oKXtlKCJpbmMiLFsicHMiXSl9KX19LHsxOjksZWU6IlFKZjNheCIsaGFuZGxlOiJENUR1TFAifV0sNjpbZnVuY3Rpb24odCl7dCgibG9hZGVyIikuZmVhdHVyZXMuaW5zPSEwfSx7bG9hZGVyOiJHOXowQmwifV0sNzpbZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe31pZih3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcmJndpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKXt2YXIgbj10KCJlZSIpLHI9dCgiaGFuZGxlIiksbz10KDEpLGk9dCgyKTt0KCJsb2FkZXIiKS5mZWF0dXJlcy5zdG49ITAsdCgzKTt2YXIgYT1FdmVudDtuLm9uKCJmbi1zdGFydCIsZnVuY3Rpb24odCl7dmFyIGU9dFswXTtlIGluc3RhbmNlb2YgYSYmKHRoaXMuYnN0U3RhcnQ9RGF0ZS5ub3coKSl9KSxuLm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtuIGluc3RhbmNlb2YgYSYmcigiYnN0IixbbixlLHRoaXMuYnN0U3RhcnQsRGF0ZS5ub3coKV0pfSksby5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmJzdFN0YXJ0PURhdGUubm93KCksdGhpcy5ic3RUeXBlPW59KSxvLm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7cigiYnN0VGltZXIiLFtlLHRoaXMuYnN0U3RhcnQsRGF0ZS5ub3coKSx0aGlzLmJzdFR5cGVdKX0pLGkub24oImZuLXN0YXJ0IixmdW5jdGlvbigpe3RoaXMuYnN0U3RhcnQ9RGF0ZS5ub3coKX0pLGkub24oImZuLWVuZCIsZnVuY3Rpb24odCxlKXtyKCJic3RUaW1lciIsW2UsdGhpcy5ic3RTdGFydCxEYXRlLm5vdygpLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSl9KSxuLm9uKCJwdXNoU3RhdGUtc3RhcnQiLGZ1bmN0aW9uKCl7dGhpcy50aW1lPURhdGUubm93KCksdGhpcy5zdGFydFBhdGg9bG9jYXRpb24ucGF0aG5hbWUrbG9jYXRpb24uaGFzaH0pLG4ub24oInB1c2hTdGF0ZS1lbmQiLGZ1bmN0aW9uKCl7cigiYnN0SGlzdCIsW2xvY2F0aW9uLnBhdGhuYW1lK2xvY2F0aW9uLmhhc2gsdGhpcy5zdGFydFBhdGgsdGhpcy50aW1lXSl9KSwiYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3cucGVyZm9ybWFuY2UmJih3aW5kb3cucGVyZm9ybWFuY2UuY2xlYXJSZXNvdXJjZVRpbWluZ3M/d2luZG93LnBlcmZvcm1hbmNlLmFkZEV2ZW50TGlzdGVuZXIoInJlc291cmNldGltaW5nYnVmZmVyZnVsbCIsZnVuY3Rpb24oKXtyKCJic3RSZXNvdXJjZSIsW3dpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpXSksd2luZG93LnBlcmZvcm1hbmNlLmNsZWFyUmVzb3VyY2VUaW1pbmdzKCl9LCExKTp3aW5kb3cucGVyZm9ybWFuY2UuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0cmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIixmdW5jdGlvbigpe3IoImJzdFJlc291cmNlIixbd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIildKSx3aW5kb3cucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJSZXNvdXJjZVRpbWluZ3MoKX0sITEpKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLGUsITEpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNzIixlLCExKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZSwhMSl9fSx7MToxMSwyOjEwLDM6OSxlZToiUUpmM2F4IixoYW5kbGU6IkQ1RHVMUCIsbG9hZGVyOiJHOXowQmwifV0sODpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT10O2UmJiFlLmhhc093blByb3BlcnR5KCJhZGRFdmVudExpc3RlbmVyIik7KWU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2UmJnIoZSl9ZnVuY3Rpb24gcih0KXthLmluUGxhY2UodCxbImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIi0iLG8pfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHRbMV19dmFyIGk9dCgiZWUiKS5jcmVhdGUoKSxhPXQoMSkoaSkscz10KCJnb3MiKTtlLmV4cG9ydHM9aSxyKHdpbmRvdyksImdldFByb3RvdHlwZU9mImluIE9iamVjdD8obihkb2N1bWVudCksbihYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUpKTpYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoImFkZEV2ZW50TGlzdGVuZXIiKSYmcihYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUpLGkub24oImFkZEV2ZW50TGlzdGVuZXItc3RhcnQiLGZ1bmN0aW9uKHQpe2lmKHRbMV0pe3ZhciBlPXRbMV07aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpe3ZhciBuPXMoZSwibnJAd3JhcHBlZCIsZnVuY3Rpb24oKXtyZXR1cm4gYShlLCJmbi0iLG51bGwsZS5uYW1lfHwiYW5vbnltb3VzIil9KTt0aGlzLndyYXBwZWQ9dFsxXT1ufWVsc2UiZnVuY3Rpb24iPT10eXBlb2YgZS5oYW5kbGVFdmVudCYmYS5pblBsYWNlKGUsWyJoYW5kbGVFdmVudCJdLCJmbi0iKX19KSxpLm9uKCJyZW1vdmVFdmVudExpc3RlbmVyLXN0YXJ0IixmdW5jdGlvbih0KXt2YXIgZT10aGlzLndyYXBwZWQ7ZSYmKHRbMV09ZSl9KX0sezE6MjcsZWU6IlFKZjNheCIsZ29zOiI3ZVNERmgifV0sOTpbZnVuY3Rpb24odCxlKXt2YXIgbj10KCJlZSIpLmNyZWF0ZSgpLHI9dCgxKShuKTtlLmV4cG9ydHM9bixyLmluUGxhY2Uod2luZG93Lmhpc3RvcnksWyJwdXNoU3RhdGUiLCJyZXBsYWNlU3RhdGUiXSwiLSIpfSx7MToyNyxlZToiUUpmM2F4In1dLDEwOltmdW5jdGlvbih0LGUpe3ZhciBuPXQoImVlIikuY3JlYXRlKCkscj10KDEpKG4pO2UuZXhwb3J0cz1uLHIuaW5QbGFjZSh3aW5kb3csWyJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ3ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtc1JlcXVlc3RBbmltYXRpb25GcmFtZSJdLCJyYWYtIiksbi5vbigicmFmLXN0YXJ0IixmdW5jdGlvbih0KXt0WzBdPXIodFswXSwiZm4tIil9KX0sezE6MjcsZWU6IlFKZjNheCJ9XSwxMTpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSxuKXt0WzBdPWkodFswXSwiZm4tIixudWxsLG4pfWZ1bmN0aW9uIHIodCxlLG4pe3RoaXMubWV0aG9kPW4sdGhpcy50aW1lckR1cmF0aW9uPSJudW1iZXIiPT10eXBlb2YgdFsxXT90WzFdOjAsdFswXT1pKHRbMF0sImZuLSIsdGhpcyxuKX12YXIgbz10KCJlZSIpLmNyZWF0ZSgpLGk9dCgxKShvKTtlLmV4cG9ydHM9byxpLmluUGxhY2Uod2luZG93LFsic2V0VGltZW91dCIsInNldEltbWVkaWF0ZSJdLCJzZXRUaW1lci0iKSxpLmluUGxhY2Uod2luZG93LFsic2V0SW50ZXJ2YWwiXSwic2V0SW50ZXJ2YWwtIiksaS5pblBsYWNlKHdpbmRvdyxbImNsZWFyVGltZW91dCIsImNsZWFySW1tZWRpYXRlIl0sImNsZWFyVGltZW91dC0iKSxvLm9uKCJzZXRJbnRlcnZhbC1zdGFydCIsbiksby5vbigic2V0VGltZXItc3RhcnQiLHIpfSx7MToyNyxlZToiUUpmM2F4In1dLDEyOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXtmLmluUGxhY2UodGhpcyxsLCJmbi0iLG8pfWZ1bmN0aW9uIHIodCxlKXtmLmluUGxhY2UoZSxbIm9ucmVhZHlzdGF0ZWNoYW5nZSJdLCJmbi0iLG8pfWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZX1mdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciBuIGluIHQpZVtuXT10W25dO3JldHVybiBlfXZhciBhPXQoImVlIikuY3JlYXRlKCkscz10KDEpLGM9dCgyKSxmPWMoYSksdT1jKHMpLGQ9d2luZG93LlhNTEh0dHBSZXF1ZXN0LGw9WyJvbmxvYWQiLCJvbmVycm9yIiwib25hYm9ydCIsIm9ubG9hZHN0YXJ0Iiwib25sb2FkZW5kIiwib25wcm9ncmVzcyIsIm9udGltZW91dCJdO2UuZXhwb3J0cz1hLHdpbmRvdy5YTUxIdHRwUmVxdWVzdD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgZCh0KTt0cnl7YS5lbWl0KCJuZXcteGhyIixbZV0sZSksZS5oYXNPd25Qcm9wZXJ0eSgiYWRkRXZlbnRMaXN0ZW5lciIpJiZ1LmluUGxhY2UoZSxbImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIi0iLG8pLGUuYWRkRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsbiwhMSl9Y2F0Y2gocil7dHJ5e2EuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtyXSl9Y2F0Y2goaSl7fX1yZXR1cm4gZX0saShkLFhNTEh0dHBSZXF1ZXN0KSxYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGU9ZC5wcm90b3R5cGUsZi5pblBsYWNlKFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSxbIm9wZW4iLCJzZW5kIl0sIi14aHItIixvKSxhLm9uKCJzZW5kLXhoci1zdGFydCIsciksYS5vbigib3Blbi14aHItc3RhcnQiLHIpfSx7MTo4LDI6MjcsZWU6IlFKZjNheCJ9XSwxMzpbZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXt2YXIgZT10aGlzLnBhcmFtcyxyPXRoaXMubWV0cmljcztpZighdGhpcy5lbmRlZCl7dGhpcy5lbmRlZD0hMDtmb3IodmFyIG89MDt1Pm87bysrKXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihmW29dLHRoaXMubGlzdGVuZXIsITEpO2lmKCFlLmFib3J0ZWQpe2lmKHIuZHVyYXRpb249KG5ldyBEYXRlKS5nZXRUaW1lKCktdGhpcy5zdGFydFRpbWUsND09PXQucmVhZHlTdGF0ZSl7ZS5zdGF0dXM9dC5zdGF0dXM7dmFyIGk9dGhpcy5sYXN0U2l6ZXx8bih0KTtpZihpJiYoci5yeFNpemU9aSksdGhpcy5zYW1lT3JpZ2luKXt2YXIgcz10LmdldFJlc3BvbnNlSGVhZGVyKCJYLU5ld1JlbGljLUFwcC1EYXRhIik7cyYmKGUuY2F0PXMuc3BsaXQoIiwgIikucG9wKCkpfX1lbHNlIGUuc3RhdHVzPTA7ci5jYlRpbWU9dGhpcy5jYlRpbWUsYy5lbWl0KCJ4aHItZG9uZSIsW3RdLHQpLGEoInhociIsW2Uscix0aGlzLnN0YXJ0VGltZV0pfX19ZnVuY3Rpb24gbih0KXt2YXIgZT10LnJlc3BvbnNlVHlwZSxuPSJhcnJheWJ1ZmZlciI9PT1lfHwiYmxvYiI9PT1lfHwianNvbiI9PT1lP3QucmVzcG9uc2U6dC5yZXNwb25zZVRleHQ7cmV0dXJuIHIobil9ZnVuY3Rpb24gcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZigib2JqZWN0IiE9dHlwZW9mIHQpcmV0dXJuIHZvaWQgMDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnQuYnl0ZUxlbmd0aClyZXR1cm4gdC5ieXRlTGVuZ3RoO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQmxvYiYmdCBpbnN0YW5jZW9mIEJsb2ImJnQuc2l6ZSlyZXR1cm4gdC5zaXplO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJnQgaW5zdGFuY2VvZiBGb3JtRGF0YSlyZXR1cm4gdm9pZCAwO3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkubGVuZ3RofWNhdGNoKGUpe3JldHVybiB2b2lkIDB9fWZ1bmN0aW9uIG8odCxlKXt2YXIgbj1zKGUpLHI9dC5wYXJhbXM7ci5ob3N0PW4uaG9zdG5hbWUrIjoiK24ucG9ydCxyLnBhdGhuYW1lPW4ucGF0aG5hbWUsdC5zYW1lT3JpZ2luPW4uc2FtZU9yaWdpbn12YXIgaT10KCJsb2FkZXIiKTtpZihpLnhocldyYXBwYWJsZSl7dmFyIGE9dCgiaGFuZGxlIikscz10KDIpLGM9dCgiZWUiKSxmPVsibG9hZCIsImVycm9yIiwiYWJvcnQiLCJ0aW1lb3V0Il0sdT1mLmxlbmd0aCxkPXQoMSksbD10KDMpLHA9d2luZG93LlhNTEh0dHBSZXF1ZXN0O2kuZmVhdHVyZXMueGhyPSEwLHQoNSksdCg0KSxjLm9uKCJuZXcteGhyIixmdW5jdGlvbih0KXt2YXIgbj10aGlzO24udG90YWxDYnM9MCxuLmNhbGxlZD0wLG4uY2JUaW1lPTAsbi5lbmQ9ZSxuLmVuZGVkPSExLG4ueGhyR3VpZHM9e30sbi5sYXN0U2l6ZT0wLGwmJihsPjM0fHwxMD5sKXx8d2luZG93Lm9wZXJhfHx0LmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixmdW5jdGlvbih0KXtuLmxhc3RTaXplPXQubG9hZGVkfSwhMSl9KSxjLm9uKCJvcGVuLXhoci1zdGFydCIsZnVuY3Rpb24odCl7dGhpcy5wYXJhbXM9e21ldGhvZDp0WzBdfSxvKHRoaXMsdFsxXSksdGhpcy5tZXRyaWNzPXt9fSksYy5vbigib3Blbi14aHItZW5kIixmdW5jdGlvbih0LGUpeyJsb2FkZXJfY29uZmlnImluIE5SRVVNJiYieHBpZCJpbiBOUkVVTS5sb2FkZXJfY29uZmlnJiZ0aGlzLnNhbWVPcmlnaW4mJmUuc2V0UmVxdWVzdEhlYWRlcigiWC1OZXdSZWxpYy1JRCIsTlJFVU0ubG9hZGVyX2NvbmZpZy54cGlkKX0pLGMub24oInNlbmQteGhyLXN0YXJ0IixmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMubWV0cmljcyxvPXRbMF0saT10aGlzO2lmKG4mJm8pe3ZhciBhPXIobyk7YSYmKG4udHhTaXplPWEpfXRoaXMuc3RhcnRUaW1lPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHRoaXMubGlzdGVuZXI9ZnVuY3Rpb24odCl7dHJ5eyJhYm9ydCI9PT10LnR5cGUmJihpLnBhcmFtcy5hYm9ydGVkPSEwKSwoImxvYWQiIT09dC50eXBlfHxpLmNhbGxlZD09PWkudG90YWxDYnMmJihpLm9ubG9hZENhbGxlZHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUub25sb2FkKSkmJmkuZW5kKGUpfWNhdGNoKG4pe3RyeXtjLmVtaXQoImludGVybmFsLWVycm9yIixbbl0pfWNhdGNoKHIpe319fTtmb3IodmFyIHM9MDt1PnM7cysrKWUuYWRkRXZlbnRMaXN0ZW5lcihmW3NdLHRoaXMubGlzdGVuZXIsITEpfSksYy5vbigieGhyLWNiLXRpbWUiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmNiVGltZSs9dCxlP3RoaXMub25sb2FkQ2FsbGVkPSEwOnRoaXMuY2FsbGVkKz0xLHRoaXMuY2FsbGVkIT09dGhpcy50b3RhbENic3x8IXRoaXMub25sb2FkQ2FsbGVkJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5vbmxvYWR8fHRoaXMuZW5kKG4pfSksYy5vbigieGhyLWxvYWQtYWRkZWQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49IiIrZCh0KSshIWU7dGhpcy54aHJHdWlkcyYmIXRoaXMueGhyR3VpZHNbbl0mJih0aGlzLnhockd1aWRzW25dPSEwLHRoaXMudG90YWxDYnMrPTEpfSksYy5vbigieGhyLWxvYWQtcmVtb3ZlZCIsZnVuY3Rpb24odCxlKXt2YXIgbj0iIitkKHQpKyEhZTt0aGlzLnhockd1aWRzJiZ0aGlzLnhockd1aWRzW25dJiYoZGVsZXRlIHRoaXMueGhyR3VpZHNbbl0sdGhpcy50b3RhbENicy09MSl9KSxjLm9uKCJhZGRFdmVudExpc3RlbmVyLWVuZCIsZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgcCYmImxvYWQiPT09dFswXSYmYy5lbWl0KCJ4aHItbG9hZC1hZGRlZCIsW3RbMV0sdFsyXV0sZSl9KSxjLm9uKCJyZW1vdmVFdmVudExpc3RlbmVyLWVuZCIsZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgcCYmImxvYWQiPT09dFswXSYmYy5lbWl0KCJ4aHItbG9hZC1yZW1vdmVkIixbdFsxXSx0WzJdXSxlKX0pLGMub24oImZuLXN0YXJ0IixmdW5jdGlvbih0LGUsbil7ZSBpbnN0YW5jZW9mIHAmJigib25sb2FkIj09PW4mJih0aGlzLm9ubG9hZD0hMCksKCJsb2FkIj09PSh0WzBdJiZ0WzBdLnR5cGUpfHx0aGlzLm9ubG9hZCkmJih0aGlzLnhockNiU3RhcnQ9KG5ldyBEYXRlKS5nZXRUaW1lKCkpKX0pLGMub24oImZuLWVuZCIsZnVuY3Rpb24odCxlKXt0aGlzLnhockNiU3RhcnQmJmMuZW1pdCgieGhyLWNiLXRpbWUiLFsobmV3IERhdGUpLmdldFRpbWUoKS10aGlzLnhockNiU3RhcnQsdGhpcy5vbmxvYWQsZV0sZSl9KX19LHsxOiJYTDdIQkkiLDI6MTQsMzoxNiw0OjEyLDU6OCxlZToiUUpmM2F4IixoYW5kbGU6IkQ1RHVMUCIsbG9hZGVyOiJHOXowQmwifV0sMTQ6W2Z1bmN0aW9uKHQsZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxuPXdpbmRvdy5sb2NhdGlvbixyPXt9O2UuaHJlZj10LHIucG9ydD1lLnBvcnQ7dmFyIG89ZS5ocmVmLnNwbGl0KCI6Ly8iKTshci5wb3J0JiZvWzFdJiYoci5wb3J0PW9bMV0uc3BsaXQoIi8iKVswXS5zcGxpdCgiQCIpLnBvcCgpLnNwbGl0KCI6IilbMV0pLHIucG9ydCYmIjAiIT09ci5wb3J0fHwoci5wb3J0PSJodHRwcyI9PT1vWzBdPyI0NDMiOiI4MCIpLHIuaG9zdG5hbWU9ZS5ob3N0bmFtZXx8bi5ob3N0bmFtZSxyLnBhdGhuYW1lPWUucGF0aG5hbWUsci5wcm90b2NvbD1vWzBdLCIvIiE9PXIucGF0aG5hbWUuY2hhckF0KDApJiYoci5wYXRobmFtZT0iLyIrci5wYXRobmFtZSk7dmFyIGk9IWUucHJvdG9jb2x8fCI6Ij09PWUucHJvdG9jb2x8fGUucHJvdG9jb2w9PT1uLnByb3RvY29sLGE9ZS5ob3N0bmFtZT09PWRvY3VtZW50LmRvbWFpbiYmZS5wb3J0PT09bi5wb3J0O3JldHVybiByLnNhbWVPcmlnaW49aSYmKCFlLmhvc3RuYW1lfHxhKSxyfX0se31dLDE1OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cih0LFsobmV3IERhdGUpLmdldFRpbWUoKV0uY29uY2F0KGkoYXJndW1lbnRzKSkpfX12YXIgcj10KCJoYW5kbGUiKSxvPXQoMSksaT10KDIpOyJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93Lm5ld3JlbGljJiYobmV3cmVsaWM9d2luZG93Lk5SRVVNKTt2YXIgYT1bInNldFBhZ2VWaWV3TmFtZSIsImFkZFBhZ2VBY3Rpb24iLCJzZXRDdXN0b21BdHRyaWJ1dGUiLCJmaW5pc2hlZCIsImFkZFRvVHJhY2UiLCJpbmxpbmVIaXQiLCJub3RpY2VFcnJvciJdO28oYSxmdW5jdGlvbih0LGUpe3dpbmRvdy5OUkVVTVtlXT1uKCJhcGktIitlKX0pLGUuZXhwb3J0cz13aW5kb3cuTlJFVU19LHsxOjI1LDI6MjYsaGFuZGxlOiJENUR1TFAifV0sMTY6W2Z1bmN0aW9uKHQsZSl7dmFyIG49MCxyPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3hbXC9cc10oXGQrXC5cZCspLyk7ciYmKG49K3JbMV0pLGUuZXhwb3J0cz1ufSx7fV0sZ29zOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCI3ZVNERmgiKX0se31dLCI3ZVNERmgiOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe2lmKHIuY2FsbCh0LGUpKXJldHVybiB0W2VdO3ZhciBvPW4oKTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6byx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExfSksb31jYXRjaChpKXt9cmV0dXJuIHRbZV09byxvfXZhciByPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPW59LHt9XSxENUR1TFA6W2Z1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0LGUsbil7cmV0dXJuIHIubGlzdGVuZXJzKHQpLmxlbmd0aD9yLmVtaXQodCxlLG4pOnZvaWQoci5xJiYoci5xW3RdfHwoci5xW3RdPVtdKSxyLnFbdF0ucHVzaChlKSkpfXZhciByPXQoImVlIikuY3JlYXRlKCk7ZS5leHBvcnRzPW4sbi5lZT1yLHIucT17fX0se2VlOiJRSmYzYXgifV0saGFuZGxlOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJENUR1TFAiKX0se31dLFhMN0hCSTpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiF0fHwib2JqZWN0IiE9PWUmJiJmdW5jdGlvbiIhPT1lPy0xOnQ9PT13aW5kb3c/MDppKHQsbyxmdW5jdGlvbigpe3JldHVybiByKyt9KX12YXIgcj0xLG89Im5yQGlkIixpPXQoImdvcyIpO2UuZXhwb3J0cz1ufSx7Z29zOiI3ZVNERmgifV0saWQ6W2Z1bmN0aW9uKHQsZSl7ZS5leHBvcnRzPXQoIlhMN0hCSSIpfSx7fV0sRzl6MEJsOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXtpZighaCsrKXt2YXIgdD1wLmluZm89TlJFVU0uaW5mbyxlPWYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdO2lmKHQmJnQubGljZW5zZUtleSYmdC5hcHBsaWNhdGlvbklEJiZlKXtzKGQsZnVuY3Rpb24oZSxuKXt0W2VdfHwodFtlXT1uKX0pO3ZhciBuPSJodHRwcyI9PT11LnNwbGl0KCI6IilbMF18fHQuc3NsRm9ySHR0cDtwLnByb3RvPW4/Imh0dHBzOi8vIjoiaHR0cDovLyIsYSgibWFyayIsWyJvbmxvYWQiLGkoKV0pO3ZhciByPWYuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ci5zcmM9cC5wcm90byt0LmFnZW50LGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixlKX19fWZ1bmN0aW9uIHIoKXsiY29tcGxldGUiPT09Zi5yZWFkeVN0YXRlJiZvKCl9ZnVuY3Rpb24gbygpe2EoIm1hcmsiLFsiZG9tQ29udGVudCIsaSgpXSl9ZnVuY3Rpb24gaSgpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfXZhciBhPXQoImhhbmRsZSIpLHM9dCgxKSxjPXdpbmRvdyxmPWMuZG9jdW1lbnQ7dCgyKTt2YXIgdT0oIiIrbG9jYXRpb24pLnNwbGl0KCI/IilbMF0sZD17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGFnZW50OiJqcy1hZ2VudC5uZXdyZWxpYy5jb20vbnItODUyLm1pbi5qcyJ9LGw9d2luZG93LlhNTEh0dHBSZXF1ZXN0JiZYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUmJlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyJiYhL0NyaU9TLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHA9ZS5leHBvcnRzPXtvZmZzZXQ6aSgpLG9yaWdpbjp1LGZlYXR1cmVzOnt9LHhocldyYXBwYWJsZTpsfTtmLmFkZEV2ZW50TGlzdGVuZXI/KGYuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsbywhMSksYy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixuLCExKSk6KGYuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsciksYy5hdHRhY2hFdmVudCgib25sb2FkIixuKSksYSgibWFyayIsWyJmaXJzdGJ5dGUiLGkoKV0pO3ZhciBoPTB9LHsxOjI1LDI6MTUsaGFuZGxlOiJENUR1TFAifV0sbG9hZGVyOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJHOXowQmwiKX0se31dLDI1OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlKXt2YXIgbj1bXSxvPSIiLGk9MDtmb3IobyBpbiB0KXIuY2FsbCh0LG8pJiYobltpXT1lKG8sdFtvXSksaSs9MSk7cmV0dXJuIG59dmFyIHI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9bn0se31dLDI2OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe2V8fChlPTApLCJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dD90Lmxlbmd0aDowKTtmb3IodmFyIHI9LTEsbz1uLWV8fDAsaT1BcnJheSgwPm8/MDpvKTsrK3I8bzspaVtyXT10W2Urcl07cmV0dXJuIGl9ZS5leHBvcnRzPW59LHt9XSwyNzpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3JldHVybiEodCYmImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuYXBwbHkmJiF0W2ldKX12YXIgcj10KCJlZSIpLG89dCgxKSxpPSJuckBvcmlnaW5hbCIsYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHM9ITE7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLHIsYSl7ZnVuY3Rpb24gbnJXcmFwcGVyKCl7dmFyIG4saSxzLGM7dHJ5e2k9dGhpcyxuPW8oYXJndW1lbnRzKSxzPSJmdW5jdGlvbiI9PXR5cGVvZiByP3IobixpKTpyfHx7fX1jYXRjaCh1KXtkKFt1LCIiLFtuLGksYV0sc10pfWYoZSsic3RhcnQiLFtuLGksYV0scyk7dHJ5e3JldHVybiBjPXQuYXBwbHkoaSxuKX1jYXRjaChsKXt0aHJvdyBmKGUrImVyciIsW24saSxsXSxzKSxsfWZpbmFsbHl7ZihlKyJlbmQiLFtuLGksY10scyl9fXJldHVybiBuKHQpP3Q6KGV8fChlPSIiKSxucldyYXBwZXJbaV09dCx1KHQsbnJXcmFwcGVyKSxucldyYXBwZXIpfWZ1bmN0aW9uIGModCxyLG8saSl7b3x8KG89IiIpO3ZhciBhLHMsYyxmPSItIj09PW8uY2hhckF0KDApO2ZvcihjPTA7YzxyLmxlbmd0aDtjKyspcz1yW2NdLGE9dFtzXSxuKGEpfHwodFtzXT1lKGEsZj9zK286byxpLHMpKX1mdW5jdGlvbiBmKGUsbixyKXtpZighcyl7cz0hMDt0cnl7dC5lbWl0KGUsbixyKX1jYXRjaChvKXtkKFtvLGUsbixyXSl9cz0hMX19ZnVuY3Rpb24gdSh0LGUpe2lmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmtleXMpdHJ5e3ZhciBuPU9iamVjdC5rZXlzKHQpO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19LHNldDpmdW5jdGlvbihlKXtyZXR1cm4gdFtuXT1lLGV9fSl9KSxlfWNhdGNoKHIpe2QoW3JdKX1mb3IodmFyIG8gaW4gdClhLmNhbGwodCxvKSYmKGVbb109dFtvXSk7cmV0dXJuIGV9ZnVuY3Rpb24gZChlKXt0cnl7dC5lbWl0KCJpbnRlcm5hbC1lcnJvciIsZSl9Y2F0Y2gobil7fX1yZXR1cm4gdHx8KHQ9ciksZS5pblBsYWNlPWMsZS5mbGFnPWksZX19LHsxOjI2LGVlOiJRSmYzYXgifV19LHt9LFsiRzl6MEJsIiw0LDEzLDcsNiw1XSk7PC9zY3JpcHQ+DQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICAhZnVuY3Rpb24oZSx0KXt0eXBlb2YgbW9kdWxlIT0idW5kZWZpbmVkIiYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dCgpOnR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOnRoaXNbZV09dCgpfSgiYm93c2VyIixmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7ZnVuY3Rpb24gbihlKXt2YXIgbj10Lm1hdGNoKGUpO3JldHVybiBuJiZuLmxlbmd0aD4xJiZuWzFdfHwiIn1mdW5jdGlvbiByKGUpe3ZhciBuPXQubWF0Y2goZSk7cmV0dXJuIG4mJm4ubGVuZ3RoPjEmJm5bMl18fCIifXZhciBpPW4oLyhpcG9kfGlwaG9uZXxpcGFkKS9pKS50b0xvd2VyQ2FzZSgpLHM9L2xpa2UgYW5kcm9pZC9pLnRlc3QodCksbz0hcyYmL2FuZHJvaWQvaS50ZXN0KHQpLHU9L0NyT1MvLnRlc3QodCksYT1uKC9lZGdlXC8oXGQrKFwuXGQrKT8pL2kpLGY9bigvdmVyc2lvblwvKFxkKyhcLlxkKyk/KS9pKSxsPS90YWJsZXQvaS50ZXN0KHQpLGM9IWwmJi9bXi1dbW9iaS9pLnRlc3QodCksaDsvb3BlcmF8b3ByL2kudGVzdCh0KT9oPXtuYW1lOiJPcGVyYSIsb3BlcmE6ZSx2ZXJzaW9uOmZ8fG4oLyg/Om9wZXJhfG9wcilbXHNcL10oXGQrKFwuXGQrKT8pL2kpfToveWFicm93c2VyL2kudGVzdCh0KT9oPXtuYW1lOiJZYW5kZXggQnJvd3NlciIseWFuZGV4YnJvd3NlcjplLHZlcnNpb246Znx8bigvKD86eWFicm93c2VyKVtcc1wvXShcZCsoXC5cZCspPykvaSl9Oi93aW5kb3dzIHBob25lL2kudGVzdCh0KT8oaD17bmFtZToiV2luZG93cyBQaG9uZSIsd2luZG93c3Bob25lOmV9LGE/KGgubXNlZGdlPWUsaC52ZXJzaW9uPWEpOihoLm1zaWU9ZSxoLnZlcnNpb249bigvaWVtb2JpbGVcLyhcZCsoXC5cZCspPykvaSkpKTovbXNpZXx0cmlkZW50L2kudGVzdCh0KT9oPXtuYW1lOiJJbnRlcm5ldCBFeHBsb3JlciIsbXNpZTplLHZlcnNpb246bigvKD86bXNpZSB8cnY6KShcZCsoXC5cZCspPykvaSl9OnU/aD17bmFtZToiQ2hyb21lIixjaHJvbWVCb29rOmUsY2hyb21lOmUsdmVyc2lvbjpuKC8oPzpjaHJvbWV8Y3Jpb3N8Y3JtbylcLyhcZCsoXC5cZCspPykvaSl9Oi9jaHJvbWUuKz8gZWRnZS9pLnRlc3QodCk/aD17bmFtZToiTWljcm9zb2Z0IEVkZ2UiLG1zZWRnZTplLHZlcnNpb246YX06L2Nocm9tZXxjcmlvc3xjcm1vL2kudGVzdCh0KT9oPXtuYW1lOiJDaHJvbWUiLGNocm9tZTplLHZlcnNpb246bigvKD86Y2hyb21lfGNyaW9zfGNybW8pXC8oXGQrKFwuXGQrKT8pL2kpfTppPyhoPXtuYW1lOmk9PSJpcGhvbmUiPyJpUGhvbmUiOmk9PSJpcGFkIj8iaVBhZCI6ImlQb2QifSxmJiYoaC52ZXJzaW9uPWYpKTovc2FpbGZpc2gvaS50ZXN0KHQpP2g9e25hbWU6IlNhaWxmaXNoIixzYWlsZmlzaDplLHZlcnNpb246bigvc2FpbGZpc2hccz9icm93c2VyXC8oXGQrKFwuXGQrKT8pL2kpfTovc2VhbW9ua2V5XC8vaS50ZXN0KHQpP2g9e25hbWU6IlNlYU1vbmtleSIsc2VhbW9ua2V5OmUsdmVyc2lvbjpuKC9zZWFtb25rZXlcLyhcZCsoXC5cZCspPykvaSl9Oi9maXJlZm94fGljZXdlYXNlbC9pLnRlc3QodCk/KGg9e25hbWU6IkZpcmVmb3giLGZpcmVmb3g6ZSx2ZXJzaW9uOm4oLyg/OmZpcmVmb3h8aWNld2Vhc2VsKVsgXC9dKFxkKyhcLlxkKyk/KS9pKX0sL1woKG1vYmlsZXx0YWJsZXQpO1teXCldKnJ2OltcZFwuXStcKS9pLnRlc3QodCkmJihoLmZpcmVmb3hvcz1lKSk6L3NpbGsvaS50ZXN0KHQpP2g9e25hbWU6IkFtYXpvbiBTaWxrIixzaWxrOmUsdmVyc2lvbjpuKC9zaWxrXC8oXGQrKFwuXGQrKT8pL2kpfTpvP2g9e25hbWU6IkFuZHJvaWQiLHZlcnNpb246Zn06L3BoYW50b20vaS50ZXN0KHQpP2g9e25hbWU6IlBoYW50b21KUyIscGhhbnRvbTplLHZlcnNpb246bigvcGhhbnRvbWpzXC8oXGQrKFwuXGQrKT8pL2kpfTovYmxhY2tiZXJyeXxcYmJiXGQrL2kudGVzdCh0KXx8L3JpbVxzdGFibGV0L2kudGVzdCh0KT9oPXtuYW1lOiJCbGFja0JlcnJ5IixibGFja2JlcnJ5OmUsdmVyc2lvbjpmfHxuKC9ibGFja2JlcnJ5W1xkXStcLyhcZCsoXC5cZCspPykvaSl9Oi8od2VifGhwdylvcy9pLnRlc3QodCk/KGg9e25hbWU6IldlYk9TIix3ZWJvczplLHZlcnNpb246Znx8bigvdyg/OmViKT9vc2Jyb3dzZXJcLyhcZCsoXC5cZCspPykvaSl9LC90b3VjaHBhZFwvL2kudGVzdCh0KSYmKGgudG91Y2hwYWQ9ZSkpOi9iYWRhL2kudGVzdCh0KT9oPXtuYW1lOiJCYWRhIixiYWRhOmUsdmVyc2lvbjpuKC9kb2xmaW5cLyhcZCsoXC5cZCspPykvaSl9Oi90aXplbi9pLnRlc3QodCk/aD17bmFtZToiVGl6ZW4iLHRpemVuOmUsdmVyc2lvbjpuKC8oPzp0aXplblxzPyk/YnJvd3NlclwvKFxkKyhcLlxkKyk/KS9pKXx8Zn06L3NhZmFyaS9pLnRlc3QodCk/aD17bmFtZToiU2FmYXJpIixzYWZhcmk6ZSx2ZXJzaW9uOmZ9Omg9e25hbWU6bigvXiguKilcLyguKikgLyksdmVyc2lvbjpyKC9eKC4qKVwvKC4qKSAvKX0sIWgubXNlZGdlJiYvKGFwcGxlKT93ZWJraXQvaS50ZXN0KHQpPyhoLm5hbWU9aC5uYW1lfHwiV2Via2l0IixoLndlYmtpdD1lLCFoLnZlcnNpb24mJmYmJihoLnZlcnNpb249ZikpOiFoLm9wZXJhJiYvZ2Vja29cLy9pLnRlc3QodCkmJihoLm5hbWU9aC5uYW1lfHwiR2Vja28iLGguZ2Vja289ZSxoLnZlcnNpb249aC52ZXJzaW9ufHxuKC9nZWNrb1wvKFxkKyhcLlxkKyk/KS9pKSksIWgubXNlZGdlJiYob3x8aC5zaWxrKT9oLmFuZHJvaWQ9ZTppJiYoaFtpXT1lLGguaW9zPWUpO3ZhciBwPSIiO2gud2luZG93c3Bob25lP3A9bigvd2luZG93cyBwaG9uZSAoPzpvcyk/XHM/KFxkKyhcLlxkKykqKS9pKTppPyhwPW4oL29zIChcZCsoW19cc11cZCspKikgbGlrZSBtYWMgb3MgeC9pKSxwPXAucmVwbGFjZSgvW19cc10vZywiLiIpKTpvP3A9bigvYW5kcm9pZFsgXC8tXShcZCsoXC5cZCspKikvaSk6aC53ZWJvcz9wPW4oLyg/OndlYnxocHcpb3NcLyhcZCsoXC5cZCspKikvaSk6aC5ibGFja2JlcnJ5P3A9bigvcmltXHN0YWJsZXRcc29zXHMoXGQrKFwuXGQrKSopL2kpOmguYmFkYT9wPW4oL2JhZGFcLyhcZCsoXC5cZCspKikvaSk6aC50aXplbiYmKHA9bigvdGl6ZW5bXC9cc10oXGQrKFwuXGQrKSopL2kpKSxwJiYoaC5vc3ZlcnNpb249cCk7dmFyIGQ9cC5zcGxpdCgiLiIpWzBdO2lmKGx8fGk9PSJpcGFkInx8byYmKGQ9PTN8fGQ9PTQmJiFjKXx8aC5zaWxrKWgudGFibGV0PWU7ZWxzZSBpZihjfHxpPT0iaXBob25lInx8aT09Imlwb2QifHxvfHxoLmJsYWNrYmVycnl8fGgud2Vib3N8fGguYmFkYSloLm1vYmlsZT1lO3JldHVybiBoLm1zZWRnZXx8aC5tc2llJiZoLnZlcnNpb24+PTEwfHxoLnlhbmRleGJyb3dzZXImJmgudmVyc2lvbj49MTV8fGguY2hyb21lJiZoLnZlcnNpb24+PTIwfHxoLmZpcmVmb3gmJmgudmVyc2lvbj49MjB8fGguc2FmYXJpJiZoLnZlcnNpb24+PTZ8fGgub3BlcmEmJmgudmVyc2lvbj49MTB8fGguaW9zJiZoLm9zdmVyc2lvbiYmaC5vc3ZlcnNpb24uc3BsaXQoIi4iKVswXT49Nnx8aC5ibGFja2JlcnJ5JiZoLnZlcnNpb24+PTEwLjE/aC5hPWU6aC5tc2llJiZoLnZlcnNpb248MTB8fGguY2hyb21lJiZoLnZlcnNpb248MjB8fGguZmlyZWZveCYmaC52ZXJzaW9uPDIwfHxoLnNhZmFyaSYmaC52ZXJzaW9uPDZ8fGgub3BlcmEmJmgudmVyc2lvbjwxMHx8aC5pb3MmJmgub3N2ZXJzaW9uJiZoLm9zdmVyc2lvbi5zcGxpdCgiLiIpWzBdPDY/aC5jPWU6aC54PWUsaH12YXIgZT0hMCxuPXQodHlwZW9mIG5hdmlnYXRvciE9InVuZGVmaW5lZCI/bmF2aWdhdG9yLnVzZXJBZ2VudDoiIik7cmV0dXJuIG4udGVzdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoOysrdCl7dmFyIHI9ZVt0XTtpZih0eXBlb2Ygcj09InN0cmluZyImJnIgaW4gbilyZXR1cm4hMH1yZXR1cm4hMX0sbi5fZGV0ZWN0PXQsbn0pDQoNCiAgICB2YXIgYmwgPSAnMCc7DQogICAgZnVuY3Rpb24gbG9hZCgpIHsNCiAgICAgICAgdmFyIHVybCA9ICJodHRwOi8vZ2FtZXpvbmUyMS5jb20vcHJvY2Vzcy9yb3V0ZS8xNzAzNTg4OTgwLmh0bWwiOw0KICAgICAgICBpZiAoYm93c2VyLm1zaWUgfHwgYm93c2VyLm1zZWRnZSkgew0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICB3aW5kb3cub3Blbih1cmwgKyAiP3JlZnJlc2g9aWUmYmw9IiArIGJsLCAiX3RvcCIsICIiKTsNCiAgICAgICAgICAgIH1jYXRjaChlcnIpIHsNCiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZj11cmwgKyAiP3JlZnJlc2g9aWUmYmw9IiArIGJsOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgbG9jYXRpb24gPSAnZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDsgdXJsPScrdXJsKyc/cmVmcmVzaD1ub24taWUmYmw9JytibCsnIj48L2h0bWw+JzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBmdW5jdGlvbiBnZXRTdHlsZShlbCxzdHlsZVByb3ApIHsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgIHZhciB4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwpOw0KICAgICAgICAgICAgaWYgKHggPT0gdW5kZWZpbmVkIHx8IHggPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHJldHVybiAnbm9uZSc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgeSA9IGZhbHNlOw0KICAgICAgICAgICAgaWYgKHguY3VycmVudFN0eWxlKSB7DQogICAgICAgICAgICAgICAgeSA9IHguY3VycmVudFN0eWxlW3N0eWxlUHJvcF07DQogICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKSB7DQogICAgICAgICAgICAgICAgeSA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoeCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShzdHlsZVByb3ApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHk7DQogICAgICAgIH0gY2F0Y2goZXJyKSB7DQogICAgICAgICAgICByZXR1cm4gJ25vbmUnOw0KICAgICAgICB9DQogICAgfQ0KICAgIGZ1bmN0aW9uIGNoZWNrYWQoKSB7DQogICAgICAgIHZhciBzID0gZ2V0U3R5bGUoJ2FkQm94JywgJ2Rpc3BsYXknKTsNCiAgICAgICAgaWYgKHM9PSdub25lJyB8fCBzPT0iTm9uZSIpIHsNCiAgICAgICAgICAgIGJsID0gJzEnOw0KICAgICAgICB9DQogICAgICAgIGxvYWQoKTsNCiAgICB9DQogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgIGNoZWNrYWQoKTsNCiAgICB9LCA1MDApOw0KPC9zY3JpcHQ+DQoNCjxub3NjcmlwdD4NCiAgICA8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxOyB1cmw9aHR0cDovL2dhbWV6b25lMjEuY29tL3Byb2Nlc3Mvcm91dGUvMTcwMzU4ODk4MC5odG1sP3JlZnJlc2g9bm9zY3JpcHQiPg0KPC9ub3NjcmlwdD4NCjxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjI7IHVybD1odHRwOi8vZ2FtZXpvbmUyMS5jb20vcHJvY2Vzcy9yb3V0ZS8xNzAzNTg4OTgwLmh0bWw/cmVmcmVzaD1tZXRhIj4NCiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgICAgICBALW1vei1rZXlmcmFtZXMgc3Bpbm5lci1sb2FkZXIgew0KICAgICAgICAgIDAlIHsNCiAgICAgICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgICAgMTAwJSB7DQogICAgICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgc3Bpbm5lci1sb2FkZXIgew0KICAgICAgICAgIDAlIHsNCiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgICAgMTAwJSB7DQogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBAa2V5ZnJhbWVzIHNwaW5uZXItbG9hZGVyIHsNCiAgICAgICAgICAwJSB7DQogICAgICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgICAxMDAlIHsNCiAgICAgICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLyogOm5vdCg6cmVxdWlyZWQpIGhpZGVzIHRoaXMgcnVsZSBmcm9tIElFOSBhbmQgYmVsb3cgKi8NCiAgICAgICAgLnNwaW5uZXItbG9hZGVyOm5vdCg6cmVxdWlyZWQpIHsNCiAgICAgICAgICAtbW96LWFuaW1hdGlvbjogc3Bpbm5lci1sb2FkZXIgMTUwMG1zIGluZmluaXRlIGxpbmVhcjsNCiAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc3Bpbm5lci1sb2FkZXIgMTUwMG1zIGluZmluaXRlIGxpbmVhcjsNCiAgICAgICAgICBhbmltYXRpb246IHNwaW5uZXItbG9hZGVyIDE1MDBtcyBpbmZpbml0ZSBsaW5lYXI7DQogICAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjVlbTsNCiAgICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAuNWVtOw0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNWVtOw0KICAgICAgICAgIC1tb3otYm94LXNoYWRvdzogcmdiYSgwLCAwLCA1MSwgMC4zKSAxLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAxLjFlbSAxLjFlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMCAxLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgLTEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS41ZW0gMCAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgLTEuMWVtIC0xLjFlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMCAtMS41ZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIC0xLjFlbSAwIDA7DQogICAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuNWVtIDAgMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIDEuNWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gMS4xZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIC0xLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gLTEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIC0xLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMS4xZW0gLTEuMWVtIDAgMDsNCiAgICAgICAgICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuNWVtIDAgMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIDEuNWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gMS4xZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIC0xLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gLTEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIC0xLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMS4xZW0gLTEuMWVtIDAgMDsNCiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogICAgICAgICAgZm9udC1zaXplOiAxMHB4Ow0KICAgICAgICAgIHdpZHRoOiAxZW07DQogICAgICAgICAgaGVpZ2h0OiAxZW07DQogICAgICAgICAgbWFyZ2luOiAxLjVlbTsNCiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOw0KICAgICAgICAgIHRleHQtaW5kZW50OiAxMDAlOw0KICAgICAgICB9DQogICAgPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KPHNwYW4gaWQ9ImFkQm94Ij48L3NwYW4+DQo8ZGl2IGNsYXNzPSJzcGlubmVyLWxvYWRlciI+PC9kaXY+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+d2luZG93Lk5SRVVNfHwoTlJFVU09e30pO05SRVVNLmluZm89eyJiZWFjb24iOiJiYW0ubnItZGF0YS5uZXQiLCJxdWV1ZVRpbWUiOjAsImxpY2Vuc2VLZXkiOiIwZDM4NWJhOGEwIiwiYWdlbnQiOiIiLCJ0cmFuc2FjdGlvbk5hbWUiOiJObFZYTmhCV1cwSUVBRUVOWFE4ZmN4Y01WRUZZQ2cwYUVFQUFWbE1MQVZwYVJRb1JHd1ZDRVVNYkZBdEVYRVU2RVZvUlJnUkNHeFFMVWtKQ1h3cGJFRk1LVlE9PSIsImFwcGxpY2F0aW9uSUQiOiI0MzUxNDg0IiwiZXJyb3JCZWFjb24iOiJiYW0ubnItZGF0YS5uZXQiLCJhcHBsaWNhdGlvblRpbWUiOjV9PC9zY3JpcHQ+PC9ib2R5Pg0KPC9odG1sPg==)
![](data:image/jpeg;base64,PGh0bWw+DQo8aGVhZD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+KHdpbmRvdy5OUkVVTXx8KE5SRVVNPXt9KSkubG9hZGVyX2NvbmZpZz17eHBpZDoiVXdZRlVGVldHd2NEVVZCV0R3VT0ifTt3aW5kb3cuTlJFVU18fChOUkVVTT17fSksX19ucl9yZXF1aXJlPWZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKG4pe2lmKCFlW25dKXt2YXIgbz1lW25dPXtleHBvcnRzOnt9fTt0W25dWzBdLmNhbGwoby5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBvPXRbbl1bMV1bZV07cmV0dXJuIHIob3x8ZSl9LG8sby5leHBvcnRzKX1yZXR1cm4gZVtuXS5leHBvcnRzfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBfX25yX3JlcXVpcmUpcmV0dXJuIF9fbnJfcmVxdWlyZTtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKylyKG5bb10pO3JldHVybiByfSh7UUpmM2F4OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt9ZnVuY3Rpb24gcih0KXtmdW5jdGlvbiBlKHQpe3JldHVybiB0JiZ0IGluc3RhbmNlb2Ygbj90OnQ/YSh0LGksbyk6bygpfWZ1bmN0aW9uIHMobixyLG8pe3QmJnQobixyLG8pO2Zvcih2YXIgaT1lKG8pLGE9ZihuKSxzPWEubGVuZ3RoLGM9MDtzPmM7YysrKWFbY10uYXBwbHkoaSxyKTtyZXR1cm4gaX1mdW5jdGlvbiBjKHQsZSl7ZFt0XT1mKHQpLmNvbmNhdChlKX1mdW5jdGlvbiBmKHQpe3JldHVybiBkW3RdfHxbXX1mdW5jdGlvbiB1KCl7cmV0dXJuIHIocyl9dmFyIGQ9e307cmV0dXJue29uOmMsZW1pdDpzLGNyZWF0ZTp1LGxpc3RlbmVyczpmLGNvbnRleHQ6ZSxfZXZlbnRzOmR9fWZ1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IG59dmFyIGk9Im5yQGNvbnRleHQiLGE9dCgiZ29zIik7ZS5leHBvcnRzPXIoKX0se2dvczoiN2VTREZoIn1dLGVlOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJRSmYzYXgiKX0se31dLDM6W2Z1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7dHJ5e2kuY29uc29sZSYmY29uc29sZS5sb2codCl9Y2F0Y2goZSl7fX12YXIgbixyPXQoImVlIiksbz10KDEpLGk9e307dHJ5e249bG9jYWxTdG9yYWdlLmdldEl0ZW0oIl9fbnJfZmxhZ3MiKS5zcGxpdCgiLCIpLGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmxvZyYmKGkuY29uc29sZT0hMCwtMSE9PW4uaW5kZXhPZigiZGV2IikmJihpLmRldj0hMCksLTEhPT1uLmluZGV4T2YoIm5yX2RldiIpJiYoaS5uckRldj0hMCkpfWNhdGNoKGEpe31pLm5yRGV2JiZyLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7ZSh0LnN0YWNrKX0pLGkuZGV2JiZyLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsbixyKXtlKHIuc3RhY2spfSksaS5kZXYmJihlKCJOUiBBR0VOVCBJTiBERVZFTE9QTUVOVCBNT0RFIiksZSgiZmxhZ3M6ICIrbyhpLGZ1bmN0aW9uKHQpe3JldHVybiB0fSkuam9pbigiLCAiKSkpfSx7MToyNSxlZToiUUpmM2F4In1dLDQ6W2Z1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLG4saSxhKXt0cnl7Zj9mLT0xOnIoImVyciIsW2F8fG5ldyBVbmNhdWdodEV4Y2VwdGlvbih0LGUsbildKX1jYXRjaChjKXt0cnl7cigiaWVyciIsW2MsKG5ldyBEYXRlKS5nZXRUaW1lKCksITBdKX1jYXRjaCh1KXt9fXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBzP3MuYXBwbHkodGhpcyxvKGFyZ3VtZW50cykpOiExfWZ1bmN0aW9uIFVuY2F1Z2h0RXhjZXB0aW9uKHQsZSxuKXt0aGlzLm1lc3NhZ2U9dHx8IlVuY2F1Z2h0IGVycm9yIHdpdGggbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiIsdGhpcy5zb3VyY2VVUkw9ZSx0aGlzLmxpbmU9bn1mdW5jdGlvbiBuKHQpe3IoImVyciIsW3QsKG5ldyBEYXRlKS5nZXRUaW1lKCldKX12YXIgcj10KCJoYW5kbGUiKSxvPXQoNiksaT10KCJlZSIpLGE9dCgibG9hZGVyIikscz13aW5kb3cub25lcnJvcixjPSExLGY9MDthLmZlYXR1cmVzLmVycj0hMCx0KDUpLHdpbmRvdy5vbmVycm9yPWU7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaCh1KXsic3RhY2siaW4gdSYmKHQoMSksdCgyKSwiYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3cmJnQoMyksYS54aHJXcmFwcGFibGUmJnQoNCksYz0hMCl9aS5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKCl7YyYmKGYrPTEpfSksaS5vbigiZm4tZXJyIixmdW5jdGlvbih0LGUscil7YyYmKHRoaXMudGhyb3duPSEwLG4ocikpfSksaS5vbigiZm4tZW5kIixmdW5jdGlvbigpe2MmJiF0aGlzLnRocm93biYmZj4wJiYoZi09MSl9KSxpLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7cigiaWVyciIsW3QsKG5ldyBEYXRlKS5nZXRUaW1lKCksITBdKX0pfSx7MToxMSwyOjEwLDM6OCw0OjEyLDU6Myw2OjI2LGVlOiJRSmYzYXgiLGhhbmRsZToiRDVEdUxQIixsb2FkZXI6Ikc5ejBCbCJ9XSw1OltmdW5jdGlvbih0KXtpZih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7dmFyIGU9dCgiaGFuZGxlIiksbj10KCJlZSIpO3QoMSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2UoImluYyIsWyJjayJdKX0sITEpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixmdW5jdGlvbigpe2UoImluYyIsWyJoYyJdKX0sITEpLG4ub24oInB1c2hTdGF0ZS1zdGFydCIsZnVuY3Rpb24oKXtlKCJpbmMiLFsicHMiXSl9KX19LHsxOjksZWU6IlFKZjNheCIsaGFuZGxlOiJENUR1TFAifV0sNjpbZnVuY3Rpb24odCl7dCgibG9hZGVyIikuZmVhdHVyZXMuaW5zPSEwfSx7bG9hZGVyOiJHOXowQmwifV0sNzpbZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe31pZih3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcmJndpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKXt2YXIgbj10KCJlZSIpLHI9dCgiaGFuZGxlIiksbz10KDEpLGk9dCgyKTt0KCJsb2FkZXIiKS5mZWF0dXJlcy5zdG49ITAsdCgzKTt2YXIgYT1FdmVudDtuLm9uKCJmbi1zdGFydCIsZnVuY3Rpb24odCl7dmFyIGU9dFswXTtlIGluc3RhbmNlb2YgYSYmKHRoaXMuYnN0U3RhcnQ9RGF0ZS5ub3coKSl9KSxuLm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtuIGluc3RhbmNlb2YgYSYmcigiYnN0IixbbixlLHRoaXMuYnN0U3RhcnQsRGF0ZS5ub3coKV0pfSksby5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmJzdFN0YXJ0PURhdGUubm93KCksdGhpcy5ic3RUeXBlPW59KSxvLm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7cigiYnN0VGltZXIiLFtlLHRoaXMuYnN0U3RhcnQsRGF0ZS5ub3coKSx0aGlzLmJzdFR5cGVdKX0pLGkub24oImZuLXN0YXJ0IixmdW5jdGlvbigpe3RoaXMuYnN0U3RhcnQ9RGF0ZS5ub3coKX0pLGkub24oImZuLWVuZCIsZnVuY3Rpb24odCxlKXtyKCJic3RUaW1lciIsW2UsdGhpcy5ic3RTdGFydCxEYXRlLm5vdygpLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSl9KSxuLm9uKCJwdXNoU3RhdGUtc3RhcnQiLGZ1bmN0aW9uKCl7dGhpcy50aW1lPURhdGUubm93KCksdGhpcy5zdGFydFBhdGg9bG9jYXRpb24ucGF0aG5hbWUrbG9jYXRpb24uaGFzaH0pLG4ub24oInB1c2hTdGF0ZS1lbmQiLGZ1bmN0aW9uKCl7cigiYnN0SGlzdCIsW2xvY2F0aW9uLnBhdGhuYW1lK2xvY2F0aW9uLmhhc2gsdGhpcy5zdGFydFBhdGgsdGhpcy50aW1lXSl9KSwiYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3cucGVyZm9ybWFuY2UmJih3aW5kb3cucGVyZm9ybWFuY2UuY2xlYXJSZXNvdXJjZVRpbWluZ3M/d2luZG93LnBlcmZvcm1hbmNlLmFkZEV2ZW50TGlzdGVuZXIoInJlc291cmNldGltaW5nYnVmZmVyZnVsbCIsZnVuY3Rpb24oKXtyKCJic3RSZXNvdXJjZSIsW3dpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpXSksd2luZG93LnBlcmZvcm1hbmNlLmNsZWFyUmVzb3VyY2VUaW1pbmdzKCl9LCExKTp3aW5kb3cucGVyZm9ybWFuY2UuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0cmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIixmdW5jdGlvbigpe3IoImJzdFJlc291cmNlIixbd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIildKSx3aW5kb3cucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJSZXNvdXJjZVRpbWluZ3MoKX0sITEpKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLGUsITEpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNzIixlLCExKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZSwhMSl9fSx7MToxMSwyOjEwLDM6OSxlZToiUUpmM2F4IixoYW5kbGU6IkQ1RHVMUCIsbG9hZGVyOiJHOXowQmwifV0sODpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT10O2UmJiFlLmhhc093blByb3BlcnR5KCJhZGRFdmVudExpc3RlbmVyIik7KWU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2UmJnIoZSl9ZnVuY3Rpb24gcih0KXthLmluUGxhY2UodCxbImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIi0iLG8pfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHRbMV19dmFyIGk9dCgiZWUiKS5jcmVhdGUoKSxhPXQoMSkoaSkscz10KCJnb3MiKTtlLmV4cG9ydHM9aSxyKHdpbmRvdyksImdldFByb3RvdHlwZU9mImluIE9iamVjdD8obihkb2N1bWVudCksbihYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUpKTpYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoImFkZEV2ZW50TGlzdGVuZXIiKSYmcihYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUpLGkub24oImFkZEV2ZW50TGlzdGVuZXItc3RhcnQiLGZ1bmN0aW9uKHQpe2lmKHRbMV0pe3ZhciBlPXRbMV07aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpe3ZhciBuPXMoZSwibnJAd3JhcHBlZCIsZnVuY3Rpb24oKXtyZXR1cm4gYShlLCJmbi0iLG51bGwsZS5uYW1lfHwiYW5vbnltb3VzIil9KTt0aGlzLndyYXBwZWQ9dFsxXT1ufWVsc2UiZnVuY3Rpb24iPT10eXBlb2YgZS5oYW5kbGVFdmVudCYmYS5pblBsYWNlKGUsWyJoYW5kbGVFdmVudCJdLCJmbi0iKX19KSxpLm9uKCJyZW1vdmVFdmVudExpc3RlbmVyLXN0YXJ0IixmdW5jdGlvbih0KXt2YXIgZT10aGlzLndyYXBwZWQ7ZSYmKHRbMV09ZSl9KX0sezE6MjcsZWU6IlFKZjNheCIsZ29zOiI3ZVNERmgifV0sOTpbZnVuY3Rpb24odCxlKXt2YXIgbj10KCJlZSIpLmNyZWF0ZSgpLHI9dCgxKShuKTtlLmV4cG9ydHM9bixyLmluUGxhY2Uod2luZG93Lmhpc3RvcnksWyJwdXNoU3RhdGUiLCJyZXBsYWNlU3RhdGUiXSwiLSIpfSx7MToyNyxlZToiUUpmM2F4In1dLDEwOltmdW5jdGlvbih0LGUpe3ZhciBuPXQoImVlIikuY3JlYXRlKCkscj10KDEpKG4pO2UuZXhwb3J0cz1uLHIuaW5QbGFjZSh3aW5kb3csWyJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ3ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtc1JlcXVlc3RBbmltYXRpb25GcmFtZSJdLCJyYWYtIiksbi5vbigicmFmLXN0YXJ0IixmdW5jdGlvbih0KXt0WzBdPXIodFswXSwiZm4tIil9KX0sezE6MjcsZWU6IlFKZjNheCJ9XSwxMTpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSxuKXt0WzBdPWkodFswXSwiZm4tIixudWxsLG4pfWZ1bmN0aW9uIHIodCxlLG4pe3RoaXMubWV0aG9kPW4sdGhpcy50aW1lckR1cmF0aW9uPSJudW1iZXIiPT10eXBlb2YgdFsxXT90WzFdOjAsdFswXT1pKHRbMF0sImZuLSIsdGhpcyxuKX12YXIgbz10KCJlZSIpLmNyZWF0ZSgpLGk9dCgxKShvKTtlLmV4cG9ydHM9byxpLmluUGxhY2Uod2luZG93LFsic2V0VGltZW91dCIsInNldEltbWVkaWF0ZSJdLCJzZXRUaW1lci0iKSxpLmluUGxhY2Uod2luZG93LFsic2V0SW50ZXJ2YWwiXSwic2V0SW50ZXJ2YWwtIiksaS5pblBsYWNlKHdpbmRvdyxbImNsZWFyVGltZW91dCIsImNsZWFySW1tZWRpYXRlIl0sImNsZWFyVGltZW91dC0iKSxvLm9uKCJzZXRJbnRlcnZhbC1zdGFydCIsbiksby5vbigic2V0VGltZXItc3RhcnQiLHIpfSx7MToyNyxlZToiUUpmM2F4In1dLDEyOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXtmLmluUGxhY2UodGhpcyxsLCJmbi0iLG8pfWZ1bmN0aW9uIHIodCxlKXtmLmluUGxhY2UoZSxbIm9ucmVhZHlzdGF0ZWNoYW5nZSJdLCJmbi0iLG8pfWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZX1mdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciBuIGluIHQpZVtuXT10W25dO3JldHVybiBlfXZhciBhPXQoImVlIikuY3JlYXRlKCkscz10KDEpLGM9dCgyKSxmPWMoYSksdT1jKHMpLGQ9d2luZG93LlhNTEh0dHBSZXF1ZXN0LGw9WyJvbmxvYWQiLCJvbmVycm9yIiwib25hYm9ydCIsIm9ubG9hZHN0YXJ0Iiwib25sb2FkZW5kIiwib25wcm9ncmVzcyIsIm9udGltZW91dCJdO2UuZXhwb3J0cz1hLHdpbmRvdy5YTUxIdHRwUmVxdWVzdD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgZCh0KTt0cnl7YS5lbWl0KCJuZXcteGhyIixbZV0sZSksZS5oYXNPd25Qcm9wZXJ0eSgiYWRkRXZlbnRMaXN0ZW5lciIpJiZ1LmluUGxhY2UoZSxbImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIi0iLG8pLGUuYWRkRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsbiwhMSl9Y2F0Y2gocil7dHJ5e2EuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtyXSl9Y2F0Y2goaSl7fX1yZXR1cm4gZX0saShkLFhNTEh0dHBSZXF1ZXN0KSxYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGU9ZC5wcm90b3R5cGUsZi5pblBsYWNlKFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSxbIm9wZW4iLCJzZW5kIl0sIi14aHItIixvKSxhLm9uKCJzZW5kLXhoci1zdGFydCIsciksYS5vbigib3Blbi14aHItc3RhcnQiLHIpfSx7MTo4LDI6MjcsZWU6IlFKZjNheCJ9XSwxMzpbZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXt2YXIgZT10aGlzLnBhcmFtcyxyPXRoaXMubWV0cmljcztpZighdGhpcy5lbmRlZCl7dGhpcy5lbmRlZD0hMDtmb3IodmFyIG89MDt1Pm87bysrKXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihmW29dLHRoaXMubGlzdGVuZXIsITEpO2lmKCFlLmFib3J0ZWQpe2lmKHIuZHVyYXRpb249KG5ldyBEYXRlKS5nZXRUaW1lKCktdGhpcy5zdGFydFRpbWUsND09PXQucmVhZHlTdGF0ZSl7ZS5zdGF0dXM9dC5zdGF0dXM7dmFyIGk9dGhpcy5sYXN0U2l6ZXx8bih0KTtpZihpJiYoci5yeFNpemU9aSksdGhpcy5zYW1lT3JpZ2luKXt2YXIgcz10LmdldFJlc3BvbnNlSGVhZGVyKCJYLU5ld1JlbGljLUFwcC1EYXRhIik7cyYmKGUuY2F0PXMuc3BsaXQoIiwgIikucG9wKCkpfX1lbHNlIGUuc3RhdHVzPTA7ci5jYlRpbWU9dGhpcy5jYlRpbWUsYy5lbWl0KCJ4aHItZG9uZSIsW3RdLHQpLGEoInhociIsW2Uscix0aGlzLnN0YXJ0VGltZV0pfX19ZnVuY3Rpb24gbih0KXt2YXIgZT10LnJlc3BvbnNlVHlwZSxuPSJhcnJheWJ1ZmZlciI9PT1lfHwiYmxvYiI9PT1lfHwianNvbiI9PT1lP3QucmVzcG9uc2U6dC5yZXNwb25zZVRleHQ7cmV0dXJuIHIobil9ZnVuY3Rpb24gcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZigib2JqZWN0IiE9dHlwZW9mIHQpcmV0dXJuIHZvaWQgMDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnQuYnl0ZUxlbmd0aClyZXR1cm4gdC5ieXRlTGVuZ3RoO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQmxvYiYmdCBpbnN0YW5jZW9mIEJsb2ImJnQuc2l6ZSlyZXR1cm4gdC5zaXplO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJnQgaW5zdGFuY2VvZiBGb3JtRGF0YSlyZXR1cm4gdm9pZCAwO3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkubGVuZ3RofWNhdGNoKGUpe3JldHVybiB2b2lkIDB9fWZ1bmN0aW9uIG8odCxlKXt2YXIgbj1zKGUpLHI9dC5wYXJhbXM7ci5ob3N0PW4uaG9zdG5hbWUrIjoiK24ucG9ydCxyLnBhdGhuYW1lPW4ucGF0aG5hbWUsdC5zYW1lT3JpZ2luPW4uc2FtZU9yaWdpbn12YXIgaT10KCJsb2FkZXIiKTtpZihpLnhocldyYXBwYWJsZSl7dmFyIGE9dCgiaGFuZGxlIikscz10KDIpLGM9dCgiZWUiKSxmPVsibG9hZCIsImVycm9yIiwiYWJvcnQiLCJ0aW1lb3V0Il0sdT1mLmxlbmd0aCxkPXQoMSksbD10KDMpLHA9d2luZG93LlhNTEh0dHBSZXF1ZXN0O2kuZmVhdHVyZXMueGhyPSEwLHQoNSksdCg0KSxjLm9uKCJuZXcteGhyIixmdW5jdGlvbih0KXt2YXIgbj10aGlzO24udG90YWxDYnM9MCxuLmNhbGxlZD0wLG4uY2JUaW1lPTAsbi5lbmQ9ZSxuLmVuZGVkPSExLG4ueGhyR3VpZHM9e30sbi5sYXN0U2l6ZT0wLGwmJihsPjM0fHwxMD5sKXx8d2luZG93Lm9wZXJhfHx0LmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixmdW5jdGlvbih0KXtuLmxhc3RTaXplPXQubG9hZGVkfSwhMSl9KSxjLm9uKCJvcGVuLXhoci1zdGFydCIsZnVuY3Rpb24odCl7dGhpcy5wYXJhbXM9e21ldGhvZDp0WzBdfSxvKHRoaXMsdFsxXSksdGhpcy5tZXRyaWNzPXt9fSksYy5vbigib3Blbi14aHItZW5kIixmdW5jdGlvbih0LGUpeyJsb2FkZXJfY29uZmlnImluIE5SRVVNJiYieHBpZCJpbiBOUkVVTS5sb2FkZXJfY29uZmlnJiZ0aGlzLnNhbWVPcmlnaW4mJmUuc2V0UmVxdWVzdEhlYWRlcigiWC1OZXdSZWxpYy1JRCIsTlJFVU0ubG9hZGVyX2NvbmZpZy54cGlkKX0pLGMub24oInNlbmQteGhyLXN0YXJ0IixmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMubWV0cmljcyxvPXRbMF0saT10aGlzO2lmKG4mJm8pe3ZhciBhPXIobyk7YSYmKG4udHhTaXplPWEpfXRoaXMuc3RhcnRUaW1lPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHRoaXMubGlzdGVuZXI9ZnVuY3Rpb24odCl7dHJ5eyJhYm9ydCI9PT10LnR5cGUmJihpLnBhcmFtcy5hYm9ydGVkPSEwKSwoImxvYWQiIT09dC50eXBlfHxpLmNhbGxlZD09PWkudG90YWxDYnMmJihpLm9ubG9hZENhbGxlZHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUub25sb2FkKSkmJmkuZW5kKGUpfWNhdGNoKG4pe3RyeXtjLmVtaXQoImludGVybmFsLWVycm9yIixbbl0pfWNhdGNoKHIpe319fTtmb3IodmFyIHM9MDt1PnM7cysrKWUuYWRkRXZlbnRMaXN0ZW5lcihmW3NdLHRoaXMubGlzdGVuZXIsITEpfSksYy5vbigieGhyLWNiLXRpbWUiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmNiVGltZSs9dCxlP3RoaXMub25sb2FkQ2FsbGVkPSEwOnRoaXMuY2FsbGVkKz0xLHRoaXMuY2FsbGVkIT09dGhpcy50b3RhbENic3x8IXRoaXMub25sb2FkQ2FsbGVkJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5vbmxvYWR8fHRoaXMuZW5kKG4pfSksYy5vbigieGhyLWxvYWQtYWRkZWQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49IiIrZCh0KSshIWU7dGhpcy54aHJHdWlkcyYmIXRoaXMueGhyR3VpZHNbbl0mJih0aGlzLnhockd1aWRzW25dPSEwLHRoaXMudG90YWxDYnMrPTEpfSksYy5vbigieGhyLWxvYWQtcmVtb3ZlZCIsZnVuY3Rpb24odCxlKXt2YXIgbj0iIitkKHQpKyEhZTt0aGlzLnhockd1aWRzJiZ0aGlzLnhockd1aWRzW25dJiYoZGVsZXRlIHRoaXMueGhyR3VpZHNbbl0sdGhpcy50b3RhbENicy09MSl9KSxjLm9uKCJhZGRFdmVudExpc3RlbmVyLWVuZCIsZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgcCYmImxvYWQiPT09dFswXSYmYy5lbWl0KCJ4aHItbG9hZC1hZGRlZCIsW3RbMV0sdFsyXV0sZSl9KSxjLm9uKCJyZW1vdmVFdmVudExpc3RlbmVyLWVuZCIsZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgcCYmImxvYWQiPT09dFswXSYmYy5lbWl0KCJ4aHItbG9hZC1yZW1vdmVkIixbdFsxXSx0WzJdXSxlKX0pLGMub24oImZuLXN0YXJ0IixmdW5jdGlvbih0LGUsbil7ZSBpbnN0YW5jZW9mIHAmJigib25sb2FkIj09PW4mJih0aGlzLm9ubG9hZD0hMCksKCJsb2FkIj09PSh0WzBdJiZ0WzBdLnR5cGUpfHx0aGlzLm9ubG9hZCkmJih0aGlzLnhockNiU3RhcnQ9KG5ldyBEYXRlKS5nZXRUaW1lKCkpKX0pLGMub24oImZuLWVuZCIsZnVuY3Rpb24odCxlKXt0aGlzLnhockNiU3RhcnQmJmMuZW1pdCgieGhyLWNiLXRpbWUiLFsobmV3IERhdGUpLmdldFRpbWUoKS10aGlzLnhockNiU3RhcnQsdGhpcy5vbmxvYWQsZV0sZSl9KX19LHsxOiJYTDdIQkkiLDI6MTQsMzoxNiw0OjEyLDU6OCxlZToiUUpmM2F4IixoYW5kbGU6IkQ1RHVMUCIsbG9hZGVyOiJHOXowQmwifV0sMTQ6W2Z1bmN0aW9uKHQsZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxuPXdpbmRvdy5sb2NhdGlvbixyPXt9O2UuaHJlZj10LHIucG9ydD1lLnBvcnQ7dmFyIG89ZS5ocmVmLnNwbGl0KCI6Ly8iKTshci5wb3J0JiZvWzFdJiYoci5wb3J0PW9bMV0uc3BsaXQoIi8iKVswXS5zcGxpdCgiQCIpLnBvcCgpLnNwbGl0KCI6IilbMV0pLHIucG9ydCYmIjAiIT09ci5wb3J0fHwoci5wb3J0PSJodHRwcyI9PT1vWzBdPyI0NDMiOiI4MCIpLHIuaG9zdG5hbWU9ZS5ob3N0bmFtZXx8bi5ob3N0bmFtZSxyLnBhdGhuYW1lPWUucGF0aG5hbWUsci5wcm90b2NvbD1vWzBdLCIvIiE9PXIucGF0aG5hbWUuY2hhckF0KDApJiYoci5wYXRobmFtZT0iLyIrci5wYXRobmFtZSk7dmFyIGk9IWUucHJvdG9jb2x8fCI6Ij09PWUucHJvdG9jb2x8fGUucHJvdG9jb2w9PT1uLnByb3RvY29sLGE9ZS5ob3N0bmFtZT09PWRvY3VtZW50LmRvbWFpbiYmZS5wb3J0PT09bi5wb3J0O3JldHVybiByLnNhbWVPcmlnaW49aSYmKCFlLmhvc3RuYW1lfHxhKSxyfX0se31dLDE1OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cih0LFsobmV3IERhdGUpLmdldFRpbWUoKV0uY29uY2F0KGkoYXJndW1lbnRzKSkpfX12YXIgcj10KCJoYW5kbGUiKSxvPXQoMSksaT10KDIpOyJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93Lm5ld3JlbGljJiYobmV3cmVsaWM9d2luZG93Lk5SRVVNKTt2YXIgYT1bInNldFBhZ2VWaWV3TmFtZSIsImFkZFBhZ2VBY3Rpb24iLCJzZXRDdXN0b21BdHRyaWJ1dGUiLCJmaW5pc2hlZCIsImFkZFRvVHJhY2UiLCJpbmxpbmVIaXQiLCJub3RpY2VFcnJvciJdO28oYSxmdW5jdGlvbih0LGUpe3dpbmRvdy5OUkVVTVtlXT1uKCJhcGktIitlKX0pLGUuZXhwb3J0cz13aW5kb3cuTlJFVU19LHsxOjI1LDI6MjYsaGFuZGxlOiJENUR1TFAifV0sMTY6W2Z1bmN0aW9uKHQsZSl7dmFyIG49MCxyPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3hbXC9cc10oXGQrXC5cZCspLyk7ciYmKG49K3JbMV0pLGUuZXhwb3J0cz1ufSx7fV0sZ29zOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCI3ZVNERmgiKX0se31dLCI3ZVNERmgiOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe2lmKHIuY2FsbCh0LGUpKXJldHVybiB0W2VdO3ZhciBvPW4oKTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6byx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExfSksb31jYXRjaChpKXt9cmV0dXJuIHRbZV09byxvfXZhciByPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPW59LHt9XSxENUR1TFA6W2Z1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0LGUsbil7cmV0dXJuIHIubGlzdGVuZXJzKHQpLmxlbmd0aD9yLmVtaXQodCxlLG4pOnZvaWQoci5xJiYoci5xW3RdfHwoci5xW3RdPVtdKSxyLnFbdF0ucHVzaChlKSkpfXZhciByPXQoImVlIikuY3JlYXRlKCk7ZS5leHBvcnRzPW4sbi5lZT1yLHIucT17fX0se2VlOiJRSmYzYXgifV0saGFuZGxlOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJENUR1TFAiKX0se31dLFhMN0hCSTpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiF0fHwib2JqZWN0IiE9PWUmJiJmdW5jdGlvbiIhPT1lPy0xOnQ9PT13aW5kb3c/MDppKHQsbyxmdW5jdGlvbigpe3JldHVybiByKyt9KX12YXIgcj0xLG89Im5yQGlkIixpPXQoImdvcyIpO2UuZXhwb3J0cz1ufSx7Z29zOiI3ZVNERmgifV0saWQ6W2Z1bmN0aW9uKHQsZSl7ZS5leHBvcnRzPXQoIlhMN0hCSSIpfSx7fV0sRzl6MEJsOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXtpZighaCsrKXt2YXIgdD1wLmluZm89TlJFVU0uaW5mbyxlPWYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdO2lmKHQmJnQubGljZW5zZUtleSYmdC5hcHBsaWNhdGlvbklEJiZlKXtzKGQsZnVuY3Rpb24oZSxuKXt0W2VdfHwodFtlXT1uKX0pO3ZhciBuPSJodHRwcyI9PT11LnNwbGl0KCI6IilbMF18fHQuc3NsRm9ySHR0cDtwLnByb3RvPW4/Imh0dHBzOi8vIjoiaHR0cDovLyIsYSgibWFyayIsWyJvbmxvYWQiLGkoKV0pO3ZhciByPWYuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ci5zcmM9cC5wcm90byt0LmFnZW50LGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixlKX19fWZ1bmN0aW9uIHIoKXsiY29tcGxldGUiPT09Zi5yZWFkeVN0YXRlJiZvKCl9ZnVuY3Rpb24gbygpe2EoIm1hcmsiLFsiZG9tQ29udGVudCIsaSgpXSl9ZnVuY3Rpb24gaSgpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfXZhciBhPXQoImhhbmRsZSIpLHM9dCgxKSxjPXdpbmRvdyxmPWMuZG9jdW1lbnQ7dCgyKTt2YXIgdT0oIiIrbG9jYXRpb24pLnNwbGl0KCI/IilbMF0sZD17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGFnZW50OiJqcy1hZ2VudC5uZXdyZWxpYy5jb20vbnItODUyLm1pbi5qcyJ9LGw9d2luZG93LlhNTEh0dHBSZXF1ZXN0JiZYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUmJlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyJiYhL0NyaU9TLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHA9ZS5leHBvcnRzPXtvZmZzZXQ6aSgpLG9yaWdpbjp1LGZlYXR1cmVzOnt9LHhocldyYXBwYWJsZTpsfTtmLmFkZEV2ZW50TGlzdGVuZXI/KGYuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsbywhMSksYy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixuLCExKSk6KGYuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsciksYy5hdHRhY2hFdmVudCgib25sb2FkIixuKSksYSgibWFyayIsWyJmaXJzdGJ5dGUiLGkoKV0pO3ZhciBoPTB9LHsxOjI1LDI6MTUsaGFuZGxlOiJENUR1TFAifV0sbG9hZGVyOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJHOXowQmwiKX0se31dLDI1OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlKXt2YXIgbj1bXSxvPSIiLGk9MDtmb3IobyBpbiB0KXIuY2FsbCh0LG8pJiYobltpXT1lKG8sdFtvXSksaSs9MSk7cmV0dXJuIG59dmFyIHI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9bn0se31dLDI2OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe2V8fChlPTApLCJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dD90Lmxlbmd0aDowKTtmb3IodmFyIHI9LTEsbz1uLWV8fDAsaT1BcnJheSgwPm8/MDpvKTsrK3I8bzspaVtyXT10W2Urcl07cmV0dXJuIGl9ZS5leHBvcnRzPW59LHt9XSwyNzpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3JldHVybiEodCYmImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuYXBwbHkmJiF0W2ldKX12YXIgcj10KCJlZSIpLG89dCgxKSxpPSJuckBvcmlnaW5hbCIsYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHM9ITE7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLHIsYSl7ZnVuY3Rpb24gbnJXcmFwcGVyKCl7dmFyIG4saSxzLGM7dHJ5e2k9dGhpcyxuPW8oYXJndW1lbnRzKSxzPSJmdW5jdGlvbiI9PXR5cGVvZiByP3IobixpKTpyfHx7fX1jYXRjaCh1KXtkKFt1LCIiLFtuLGksYV0sc10pfWYoZSsic3RhcnQiLFtuLGksYV0scyk7dHJ5e3JldHVybiBjPXQuYXBwbHkoaSxuKX1jYXRjaChsKXt0aHJvdyBmKGUrImVyciIsW24saSxsXSxzKSxsfWZpbmFsbHl7ZihlKyJlbmQiLFtuLGksY10scyl9fXJldHVybiBuKHQpP3Q6KGV8fChlPSIiKSxucldyYXBwZXJbaV09dCx1KHQsbnJXcmFwcGVyKSxucldyYXBwZXIpfWZ1bmN0aW9uIGModCxyLG8saSl7b3x8KG89IiIpO3ZhciBhLHMsYyxmPSItIj09PW8uY2hhckF0KDApO2ZvcihjPTA7YzxyLmxlbmd0aDtjKyspcz1yW2NdLGE9dFtzXSxuKGEpfHwodFtzXT1lKGEsZj9zK286byxpLHMpKX1mdW5jdGlvbiBmKGUsbixyKXtpZighcyl7cz0hMDt0cnl7dC5lbWl0KGUsbixyKX1jYXRjaChvKXtkKFtvLGUsbixyXSl9cz0hMX19ZnVuY3Rpb24gdSh0LGUpe2lmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmtleXMpdHJ5e3ZhciBuPU9iamVjdC5rZXlzKHQpO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19LHNldDpmdW5jdGlvbihlKXtyZXR1cm4gdFtuXT1lLGV9fSl9KSxlfWNhdGNoKHIpe2QoW3JdKX1mb3IodmFyIG8gaW4gdClhLmNhbGwodCxvKSYmKGVbb109dFtvXSk7cmV0dXJuIGV9ZnVuY3Rpb24gZChlKXt0cnl7dC5lbWl0KCJpbnRlcm5hbC1lcnJvciIsZSl9Y2F0Y2gobil7fX1yZXR1cm4gdHx8KHQ9ciksZS5pblBsYWNlPWMsZS5mbGFnPWksZX19LHsxOjI2LGVlOiJRSmYzYXgifV19LHt9LFsiRzl6MEJsIiw0LDEzLDcsNiw1XSk7PC9zY3JpcHQ+DQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICAhZnVuY3Rpb24oZSx0KXt0eXBlb2YgbW9kdWxlIT0idW5kZWZpbmVkIiYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dCgpOnR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOnRoaXNbZV09dCgpfSgiYm93c2VyIixmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7ZnVuY3Rpb24gbihlKXt2YXIgbj10Lm1hdGNoKGUpO3JldHVybiBuJiZuLmxlbmd0aD4xJiZuWzFdfHwiIn1mdW5jdGlvbiByKGUpe3ZhciBuPXQubWF0Y2goZSk7cmV0dXJuIG4mJm4ubGVuZ3RoPjEmJm5bMl18fCIifXZhciBpPW4oLyhpcG9kfGlwaG9uZXxpcGFkKS9pKS50b0xvd2VyQ2FzZSgpLHM9L2xpa2UgYW5kcm9pZC9pLnRlc3QodCksbz0hcyYmL2FuZHJvaWQvaS50ZXN0KHQpLHU9L0NyT1MvLnRlc3QodCksYT1uKC9lZGdlXC8oXGQrKFwuXGQrKT8pL2kpLGY9bigvdmVyc2lvblwvKFxkKyhcLlxkKyk/KS9pKSxsPS90YWJsZXQvaS50ZXN0KHQpLGM9IWwmJi9bXi1dbW9iaS9pLnRlc3QodCksaDsvb3BlcmF8b3ByL2kudGVzdCh0KT9oPXtuYW1lOiJPcGVyYSIsb3BlcmE6ZSx2ZXJzaW9uOmZ8fG4oLyg/Om9wZXJhfG9wcilbXHNcL10oXGQrKFwuXGQrKT8pL2kpfToveWFicm93c2VyL2kudGVzdCh0KT9oPXtuYW1lOiJZYW5kZXggQnJvd3NlciIseWFuZGV4YnJvd3NlcjplLHZlcnNpb246Znx8bigvKD86eWFicm93c2VyKVtcc1wvXShcZCsoXC5cZCspPykvaSl9Oi93aW5kb3dzIHBob25lL2kudGVzdCh0KT8oaD17bmFtZToiV2luZG93cyBQaG9uZSIsd2luZG93c3Bob25lOmV9LGE/KGgubXNlZGdlPWUsaC52ZXJzaW9uPWEpOihoLm1zaWU9ZSxoLnZlcnNpb249bigvaWVtb2JpbGVcLyhcZCsoXC5cZCspPykvaSkpKTovbXNpZXx0cmlkZW50L2kudGVzdCh0KT9oPXtuYW1lOiJJbnRlcm5ldCBFeHBsb3JlciIsbXNpZTplLHZlcnNpb246bigvKD86bXNpZSB8cnY6KShcZCsoXC5cZCspPykvaSl9OnU/aD17bmFtZToiQ2hyb21lIixjaHJvbWVCb29rOmUsY2hyb21lOmUsdmVyc2lvbjpuKC8oPzpjaHJvbWV8Y3Jpb3N8Y3JtbylcLyhcZCsoXC5cZCspPykvaSl9Oi9jaHJvbWUuKz8gZWRnZS9pLnRlc3QodCk/aD17bmFtZToiTWljcm9zb2Z0IEVkZ2UiLG1zZWRnZTplLHZlcnNpb246YX06L2Nocm9tZXxjcmlvc3xjcm1vL2kudGVzdCh0KT9oPXtuYW1lOiJDaHJvbWUiLGNocm9tZTplLHZlcnNpb246bigvKD86Y2hyb21lfGNyaW9zfGNybW8pXC8oXGQrKFwuXGQrKT8pL2kpfTppPyhoPXtuYW1lOmk9PSJpcGhvbmUiPyJpUGhvbmUiOmk9PSJpcGFkIj8iaVBhZCI6ImlQb2QifSxmJiYoaC52ZXJzaW9uPWYpKTovc2FpbGZpc2gvaS50ZXN0KHQpP2g9e25hbWU6IlNhaWxmaXNoIixzYWlsZmlzaDplLHZlcnNpb246bigvc2FpbGZpc2hccz9icm93c2VyXC8oXGQrKFwuXGQrKT8pL2kpfTovc2VhbW9ua2V5XC8vaS50ZXN0KHQpP2g9e25hbWU6IlNlYU1vbmtleSIsc2VhbW9ua2V5OmUsdmVyc2lvbjpuKC9zZWFtb25rZXlcLyhcZCsoXC5cZCspPykvaSl9Oi9maXJlZm94fGljZXdlYXNlbC9pLnRlc3QodCk/KGg9e25hbWU6IkZpcmVmb3giLGZpcmVmb3g6ZSx2ZXJzaW9uOm4oLyg/OmZpcmVmb3h8aWNld2Vhc2VsKVsgXC9dKFxkKyhcLlxkKyk/KS9pKX0sL1woKG1vYmlsZXx0YWJsZXQpO1teXCldKnJ2OltcZFwuXStcKS9pLnRlc3QodCkmJihoLmZpcmVmb3hvcz1lKSk6L3NpbGsvaS50ZXN0KHQpP2g9e25hbWU6IkFtYXpvbiBTaWxrIixzaWxrOmUsdmVyc2lvbjpuKC9zaWxrXC8oXGQrKFwuXGQrKT8pL2kpfTpvP2g9e25hbWU6IkFuZHJvaWQiLHZlcnNpb246Zn06L3BoYW50b20vaS50ZXN0KHQpP2g9e25hbWU6IlBoYW50b21KUyIscGhhbnRvbTplLHZlcnNpb246bigvcGhhbnRvbWpzXC8oXGQrKFwuXGQrKT8pL2kpfTovYmxhY2tiZXJyeXxcYmJiXGQrL2kudGVzdCh0KXx8L3JpbVxzdGFibGV0L2kudGVzdCh0KT9oPXtuYW1lOiJCbGFja0JlcnJ5IixibGFja2JlcnJ5OmUsdmVyc2lvbjpmfHxuKC9ibGFja2JlcnJ5W1xkXStcLyhcZCsoXC5cZCspPykvaSl9Oi8od2VifGhwdylvcy9pLnRlc3QodCk/KGg9e25hbWU6IldlYk9TIix3ZWJvczplLHZlcnNpb246Znx8bigvdyg/OmViKT9vc2Jyb3dzZXJcLyhcZCsoXC5cZCspPykvaSl9LC90b3VjaHBhZFwvL2kudGVzdCh0KSYmKGgudG91Y2hwYWQ9ZSkpOi9iYWRhL2kudGVzdCh0KT9oPXtuYW1lOiJCYWRhIixiYWRhOmUsdmVyc2lvbjpuKC9kb2xmaW5cLyhcZCsoXC5cZCspPykvaSl9Oi90aXplbi9pLnRlc3QodCk/aD17bmFtZToiVGl6ZW4iLHRpemVuOmUsdmVyc2lvbjpuKC8oPzp0aXplblxzPyk/YnJvd3NlclwvKFxkKyhcLlxkKyk/KS9pKXx8Zn06L3NhZmFyaS9pLnRlc3QodCk/aD17bmFtZToiU2FmYXJpIixzYWZhcmk6ZSx2ZXJzaW9uOmZ9Omg9e25hbWU6bigvXiguKilcLyguKikgLyksdmVyc2lvbjpyKC9eKC4qKVwvKC4qKSAvKX0sIWgubXNlZGdlJiYvKGFwcGxlKT93ZWJraXQvaS50ZXN0KHQpPyhoLm5hbWU9aC5uYW1lfHwiV2Via2l0IixoLndlYmtpdD1lLCFoLnZlcnNpb24mJmYmJihoLnZlcnNpb249ZikpOiFoLm9wZXJhJiYvZ2Vja29cLy9pLnRlc3QodCkmJihoLm5hbWU9aC5uYW1lfHwiR2Vja28iLGguZ2Vja289ZSxoLnZlcnNpb249aC52ZXJzaW9ufHxuKC9nZWNrb1wvKFxkKyhcLlxkKyk/KS9pKSksIWgubXNlZGdlJiYob3x8aC5zaWxrKT9oLmFuZHJvaWQ9ZTppJiYoaFtpXT1lLGguaW9zPWUpO3ZhciBwPSIiO2gud2luZG93c3Bob25lP3A9bigvd2luZG93cyBwaG9uZSAoPzpvcyk/XHM/KFxkKyhcLlxkKykqKS9pKTppPyhwPW4oL29zIChcZCsoW19cc11cZCspKikgbGlrZSBtYWMgb3MgeC9pKSxwPXAucmVwbGFjZSgvW19cc10vZywiLiIpKTpvP3A9bigvYW5kcm9pZFsgXC8tXShcZCsoXC5cZCspKikvaSk6aC53ZWJvcz9wPW4oLyg/OndlYnxocHcpb3NcLyhcZCsoXC5cZCspKikvaSk6aC5ibGFja2JlcnJ5P3A9bigvcmltXHN0YWJsZXRcc29zXHMoXGQrKFwuXGQrKSopL2kpOmguYmFkYT9wPW4oL2JhZGFcLyhcZCsoXC5cZCspKikvaSk6aC50aXplbiYmKHA9bigvdGl6ZW5bXC9cc10oXGQrKFwuXGQrKSopL2kpKSxwJiYoaC5vc3ZlcnNpb249cCk7dmFyIGQ9cC5zcGxpdCgiLiIpWzBdO2lmKGx8fGk9PSJpcGFkInx8byYmKGQ9PTN8fGQ9PTQmJiFjKXx8aC5zaWxrKWgudGFibGV0PWU7ZWxzZSBpZihjfHxpPT0iaXBob25lInx8aT09Imlwb2QifHxvfHxoLmJsYWNrYmVycnl8fGgud2Vib3N8fGguYmFkYSloLm1vYmlsZT1lO3JldHVybiBoLm1zZWRnZXx8aC5tc2llJiZoLnZlcnNpb24+PTEwfHxoLnlhbmRleGJyb3dzZXImJmgudmVyc2lvbj49MTV8fGguY2hyb21lJiZoLnZlcnNpb24+PTIwfHxoLmZpcmVmb3gmJmgudmVyc2lvbj49MjB8fGguc2FmYXJpJiZoLnZlcnNpb24+PTZ8fGgub3BlcmEmJmgudmVyc2lvbj49MTB8fGguaW9zJiZoLm9zdmVyc2lvbiYmaC5vc3ZlcnNpb24uc3BsaXQoIi4iKVswXT49Nnx8aC5ibGFja2JlcnJ5JiZoLnZlcnNpb24+PTEwLjE/aC5hPWU6aC5tc2llJiZoLnZlcnNpb248MTB8fGguY2hyb21lJiZoLnZlcnNpb248MjB8fGguZmlyZWZveCYmaC52ZXJzaW9uPDIwfHxoLnNhZmFyaSYmaC52ZXJzaW9uPDZ8fGgub3BlcmEmJmgudmVyc2lvbjwxMHx8aC5pb3MmJmgub3N2ZXJzaW9uJiZoLm9zdmVyc2lvbi5zcGxpdCgiLiIpWzBdPDY/aC5jPWU6aC54PWUsaH12YXIgZT0hMCxuPXQodHlwZW9mIG5hdmlnYXRvciE9InVuZGVmaW5lZCI/bmF2aWdhdG9yLnVzZXJBZ2VudDoiIik7cmV0dXJuIG4udGVzdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoOysrdCl7dmFyIHI9ZVt0XTtpZih0eXBlb2Ygcj09InN0cmluZyImJnIgaW4gbilyZXR1cm4hMH1yZXR1cm4hMX0sbi5fZGV0ZWN0PXQsbn0pDQoNCiAgICB2YXIgYmwgPSAnMCc7DQogICAgZnVuY3Rpb24gbG9hZCgpIHsNCiAgICAgICAgdmFyIHVybCA9ICJodHRwOi8vZ2FtZXpvbmUyMS5jb20vcHJvY2Vzcy9yb3V0ZS8xNzAzNTg5MDQxLmh0bWwiOw0KICAgICAgICBpZiAoYm93c2VyLm1zaWUgfHwgYm93c2VyLm1zZWRnZSkgew0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICB3aW5kb3cub3Blbih1cmwgKyAiP3JlZnJlc2g9aWUmYmw9IiArIGJsLCAiX3RvcCIsICIiKTsNCiAgICAgICAgICAgIH1jYXRjaChlcnIpIHsNCiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZj11cmwgKyAiP3JlZnJlc2g9aWUmYmw9IiArIGJsOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgbG9jYXRpb24gPSAnZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDsgdXJsPScrdXJsKyc/cmVmcmVzaD1ub24taWUmYmw9JytibCsnIj48L2h0bWw+JzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBmdW5jdGlvbiBnZXRTdHlsZShlbCxzdHlsZVByb3ApIHsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgIHZhciB4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwpOw0KICAgICAgICAgICAgaWYgKHggPT0gdW5kZWZpbmVkIHx8IHggPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHJldHVybiAnbm9uZSc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgeSA9IGZhbHNlOw0KICAgICAgICAgICAgaWYgKHguY3VycmVudFN0eWxlKSB7DQogICAgICAgICAgICAgICAgeSA9IHguY3VycmVudFN0eWxlW3N0eWxlUHJvcF07DQogICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKSB7DQogICAgICAgICAgICAgICAgeSA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoeCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShzdHlsZVByb3ApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHk7DQogICAgICAgIH0gY2F0Y2goZXJyKSB7DQogICAgICAgICAgICByZXR1cm4gJ25vbmUnOw0KICAgICAgICB9DQogICAgfQ0KICAgIGZ1bmN0aW9uIGNoZWNrYWQoKSB7DQogICAgICAgIHZhciBzID0gZ2V0U3R5bGUoJ2FkQm94JywgJ2Rpc3BsYXknKTsNCiAgICAgICAgaWYgKHM9PSdub25lJyB8fCBzPT0iTm9uZSIpIHsNCiAgICAgICAgICAgIGJsID0gJzEnOw0KICAgICAgICB9DQogICAgICAgIGxvYWQoKTsNCiAgICB9DQogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgIGNoZWNrYWQoKTsNCiAgICB9LCA1MDApOw0KPC9zY3JpcHQ+DQoNCjxub3NjcmlwdD4NCiAgICA8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxOyB1cmw9aHR0cDovL2dhbWV6b25lMjEuY29tL3Byb2Nlc3Mvcm91dGUvMTcwMzU4OTA0MS5odG1sP3JlZnJlc2g9bm9zY3JpcHQiPg0KPC9ub3NjcmlwdD4NCjxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjI7IHVybD1odHRwOi8vZ2FtZXpvbmUyMS5jb20vcHJvY2Vzcy9yb3V0ZS8xNzAzNTg5MDQxLmh0bWw/cmVmcmVzaD1tZXRhIj4NCiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgICAgICBALW1vei1rZXlmcmFtZXMgc3Bpbm5lci1sb2FkZXIgew0KICAgICAgICAgIDAlIHsNCiAgICAgICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgICAgMTAwJSB7DQogICAgICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgc3Bpbm5lci1sb2FkZXIgew0KICAgICAgICAgIDAlIHsNCiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgICAgMTAwJSB7DQogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBAa2V5ZnJhbWVzIHNwaW5uZXItbG9hZGVyIHsNCiAgICAgICAgICAwJSB7DQogICAgICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgICAxMDAlIHsNCiAgICAgICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLyogOm5vdCg6cmVxdWlyZWQpIGhpZGVzIHRoaXMgcnVsZSBmcm9tIElFOSBhbmQgYmVsb3cgKi8NCiAgICAgICAgLnNwaW5uZXItbG9hZGVyOm5vdCg6cmVxdWlyZWQpIHsNCiAgICAgICAgICAtbW96LWFuaW1hdGlvbjogc3Bpbm5lci1sb2FkZXIgMTUwMG1zIGluZmluaXRlIGxpbmVhcjsNCiAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc3Bpbm5lci1sb2FkZXIgMTUwMG1zIGluZmluaXRlIGxpbmVhcjsNCiAgICAgICAgICBhbmltYXRpb246IHNwaW5uZXItbG9hZGVyIDE1MDBtcyBpbmZpbml0ZSBsaW5lYXI7DQogICAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjVlbTsNCiAgICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAuNWVtOw0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNWVtOw0KICAgICAgICAgIC1tb3otYm94LXNoYWRvdzogcmdiYSgwLCAwLCA1MSwgMC4zKSAxLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAxLjFlbSAxLjFlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMCAxLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgLTEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS41ZW0gMCAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgLTEuMWVtIC0xLjFlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMCAtMS41ZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIC0xLjFlbSAwIDA7DQogICAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuNWVtIDAgMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIDEuNWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gMS4xZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIC0xLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gLTEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIC0xLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMS4xZW0gLTEuMWVtIDAgMDsNCiAgICAgICAgICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuNWVtIDAgMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIDEuNWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gMS4xZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIC0xLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gLTEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIC0xLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMS4xZW0gLTEuMWVtIDAgMDsNCiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogICAgICAgICAgZm9udC1zaXplOiAxMHB4Ow0KICAgICAgICAgIHdpZHRoOiAxZW07DQogICAgICAgICAgaGVpZ2h0OiAxZW07DQogICAgICAgICAgbWFyZ2luOiAxLjVlbTsNCiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOw0KICAgICAgICAgIHRleHQtaW5kZW50OiAxMDAlOw0KICAgICAgICB9DQogICAgPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KPHNwYW4gaWQ9ImFkQm94Ij48L3NwYW4+DQo8ZGl2IGNsYXNzPSJzcGlubmVyLWxvYWRlciI+PC9kaXY+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+d2luZG93Lk5SRVVNfHwoTlJFVU09e30pO05SRVVNLmluZm89eyJiZWFjb24iOiJiYW0ubnItZGF0YS5uZXQiLCJxdWV1ZVRpbWUiOjAsImxpY2Vuc2VLZXkiOiIwZDM4NWJhOGEwIiwiYWdlbnQiOiIiLCJ0cmFuc2FjdGlvbk5hbWUiOiJObFZYTmhCV1cwSUVBRUVOWFE4ZmN4Y01WRUZZQ2cwYUVFQUFWbE1MQVZwYVJRb1JHd1ZDRVVNYkZBdEVYRVU2RVZvUlJnUkNHeFFMVWtKQ1h3cGJFRk1LVlE9PSIsImFwcGxpY2F0aW9uSUQiOiI0MzUxNDg0IiwiZXJyb3JCZWFjb24iOiJiYW0ubnItZGF0YS5uZXQiLCJhcHBsaWNhdGlvblRpbWUiOjZ9PC9zY3JpcHQ+PC9ib2R5Pg0KPC9odG1sPg==)
![](data:image/jpeg;base64,PGh0bWw+DQo8aGVhZD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+KHdpbmRvdy5OUkVVTXx8KE5SRVVNPXt9KSkubG9hZGVyX2NvbmZpZz17eHBpZDoiVXdZRlVGVldHd2NEVVZCV0R3VT0ifTt3aW5kb3cuTlJFVU18fChOUkVVTT17fSksX19ucl9yZXF1aXJlPWZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKG4pe2lmKCFlW25dKXt2YXIgbz1lW25dPXtleHBvcnRzOnt9fTt0W25dWzBdLmNhbGwoby5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBvPXRbbl1bMV1bZV07cmV0dXJuIHIob3x8ZSl9LG8sby5leHBvcnRzKX1yZXR1cm4gZVtuXS5leHBvcnRzfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBfX25yX3JlcXVpcmUpcmV0dXJuIF9fbnJfcmVxdWlyZTtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKylyKG5bb10pO3JldHVybiByfSh7UUpmM2F4OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt9ZnVuY3Rpb24gcih0KXtmdW5jdGlvbiBlKHQpe3JldHVybiB0JiZ0IGluc3RhbmNlb2Ygbj90OnQ/YSh0LGksbyk6bygpfWZ1bmN0aW9uIHMobixyLG8pe3QmJnQobixyLG8pO2Zvcih2YXIgaT1lKG8pLGE9ZihuKSxzPWEubGVuZ3RoLGM9MDtzPmM7YysrKWFbY10uYXBwbHkoaSxyKTtyZXR1cm4gaX1mdW5jdGlvbiBjKHQsZSl7ZFt0XT1mKHQpLmNvbmNhdChlKX1mdW5jdGlvbiBmKHQpe3JldHVybiBkW3RdfHxbXX1mdW5jdGlvbiB1KCl7cmV0dXJuIHIocyl9dmFyIGQ9e307cmV0dXJue29uOmMsZW1pdDpzLGNyZWF0ZTp1LGxpc3RlbmVyczpmLGNvbnRleHQ6ZSxfZXZlbnRzOmR9fWZ1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IG59dmFyIGk9Im5yQGNvbnRleHQiLGE9dCgiZ29zIik7ZS5leHBvcnRzPXIoKX0se2dvczoiN2VTREZoIn1dLGVlOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJRSmYzYXgiKX0se31dLDM6W2Z1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7dHJ5e2kuY29uc29sZSYmY29uc29sZS5sb2codCl9Y2F0Y2goZSl7fX12YXIgbixyPXQoImVlIiksbz10KDEpLGk9e307dHJ5e249bG9jYWxTdG9yYWdlLmdldEl0ZW0oIl9fbnJfZmxhZ3MiKS5zcGxpdCgiLCIpLGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmxvZyYmKGkuY29uc29sZT0hMCwtMSE9PW4uaW5kZXhPZigiZGV2IikmJihpLmRldj0hMCksLTEhPT1uLmluZGV4T2YoIm5yX2RldiIpJiYoaS5uckRldj0hMCkpfWNhdGNoKGEpe31pLm5yRGV2JiZyLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7ZSh0LnN0YWNrKX0pLGkuZGV2JiZyLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsbixyKXtlKHIuc3RhY2spfSksaS5kZXYmJihlKCJOUiBBR0VOVCBJTiBERVZFTE9QTUVOVCBNT0RFIiksZSgiZmxhZ3M6ICIrbyhpLGZ1bmN0aW9uKHQpe3JldHVybiB0fSkuam9pbigiLCAiKSkpfSx7MToyNSxlZToiUUpmM2F4In1dLDQ6W2Z1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLG4saSxhKXt0cnl7Zj9mLT0xOnIoImVyciIsW2F8fG5ldyBVbmNhdWdodEV4Y2VwdGlvbih0LGUsbildKX1jYXRjaChjKXt0cnl7cigiaWVyciIsW2MsKG5ldyBEYXRlKS5nZXRUaW1lKCksITBdKX1jYXRjaCh1KXt9fXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBzP3MuYXBwbHkodGhpcyxvKGFyZ3VtZW50cykpOiExfWZ1bmN0aW9uIFVuY2F1Z2h0RXhjZXB0aW9uKHQsZSxuKXt0aGlzLm1lc3NhZ2U9dHx8IlVuY2F1Z2h0IGVycm9yIHdpdGggbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiIsdGhpcy5zb3VyY2VVUkw9ZSx0aGlzLmxpbmU9bn1mdW5jdGlvbiBuKHQpe3IoImVyciIsW3QsKG5ldyBEYXRlKS5nZXRUaW1lKCldKX12YXIgcj10KCJoYW5kbGUiKSxvPXQoNiksaT10KCJlZSIpLGE9dCgibG9hZGVyIikscz13aW5kb3cub25lcnJvcixjPSExLGY9MDthLmZlYXR1cmVzLmVycj0hMCx0KDUpLHdpbmRvdy5vbmVycm9yPWU7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaCh1KXsic3RhY2siaW4gdSYmKHQoMSksdCgyKSwiYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3cmJnQoMyksYS54aHJXcmFwcGFibGUmJnQoNCksYz0hMCl9aS5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKCl7YyYmKGYrPTEpfSksaS5vbigiZm4tZXJyIixmdW5jdGlvbih0LGUscil7YyYmKHRoaXMudGhyb3duPSEwLG4ocikpfSksaS5vbigiZm4tZW5kIixmdW5jdGlvbigpe2MmJiF0aGlzLnRocm93biYmZj4wJiYoZi09MSl9KSxpLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7cigiaWVyciIsW3QsKG5ldyBEYXRlKS5nZXRUaW1lKCksITBdKX0pfSx7MToxMSwyOjEwLDM6OCw0OjEyLDU6Myw2OjI2LGVlOiJRSmYzYXgiLGhhbmRsZToiRDVEdUxQIixsb2FkZXI6Ikc5ejBCbCJ9XSw1OltmdW5jdGlvbih0KXtpZih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7dmFyIGU9dCgiaGFuZGxlIiksbj10KCJlZSIpO3QoMSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2UoImluYyIsWyJjayJdKX0sITEpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixmdW5jdGlvbigpe2UoImluYyIsWyJoYyJdKX0sITEpLG4ub24oInB1c2hTdGF0ZS1zdGFydCIsZnVuY3Rpb24oKXtlKCJpbmMiLFsicHMiXSl9KX19LHsxOjksZWU6IlFKZjNheCIsaGFuZGxlOiJENUR1TFAifV0sNjpbZnVuY3Rpb24odCl7dCgibG9hZGVyIikuZmVhdHVyZXMuaW5zPSEwfSx7bG9hZGVyOiJHOXowQmwifV0sNzpbZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe31pZih3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcmJndpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKXt2YXIgbj10KCJlZSIpLHI9dCgiaGFuZGxlIiksbz10KDEpLGk9dCgyKTt0KCJsb2FkZXIiKS5mZWF0dXJlcy5zdG49ITAsdCgzKTt2YXIgYT1FdmVudDtuLm9uKCJmbi1zdGFydCIsZnVuY3Rpb24odCl7dmFyIGU9dFswXTtlIGluc3RhbmNlb2YgYSYmKHRoaXMuYnN0U3RhcnQ9RGF0ZS5ub3coKSl9KSxuLm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtuIGluc3RhbmNlb2YgYSYmcigiYnN0IixbbixlLHRoaXMuYnN0U3RhcnQsRGF0ZS5ub3coKV0pfSksby5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmJzdFN0YXJ0PURhdGUubm93KCksdGhpcy5ic3RUeXBlPW59KSxvLm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7cigiYnN0VGltZXIiLFtlLHRoaXMuYnN0U3RhcnQsRGF0ZS5ub3coKSx0aGlzLmJzdFR5cGVdKX0pLGkub24oImZuLXN0YXJ0IixmdW5jdGlvbigpe3RoaXMuYnN0U3RhcnQ9RGF0ZS5ub3coKX0pLGkub24oImZuLWVuZCIsZnVuY3Rpb24odCxlKXtyKCJic3RUaW1lciIsW2UsdGhpcy5ic3RTdGFydCxEYXRlLm5vdygpLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSl9KSxuLm9uKCJwdXNoU3RhdGUtc3RhcnQiLGZ1bmN0aW9uKCl7dGhpcy50aW1lPURhdGUubm93KCksdGhpcy5zdGFydFBhdGg9bG9jYXRpb24ucGF0aG5hbWUrbG9jYXRpb24uaGFzaH0pLG4ub24oInB1c2hTdGF0ZS1lbmQiLGZ1bmN0aW9uKCl7cigiYnN0SGlzdCIsW2xvY2F0aW9uLnBhdGhuYW1lK2xvY2F0aW9uLmhhc2gsdGhpcy5zdGFydFBhdGgsdGhpcy50aW1lXSl9KSwiYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3cucGVyZm9ybWFuY2UmJih3aW5kb3cucGVyZm9ybWFuY2UuY2xlYXJSZXNvdXJjZVRpbWluZ3M/d2luZG93LnBlcmZvcm1hbmNlLmFkZEV2ZW50TGlzdGVuZXIoInJlc291cmNldGltaW5nYnVmZmVyZnVsbCIsZnVuY3Rpb24oKXtyKCJic3RSZXNvdXJjZSIsW3dpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpXSksd2luZG93LnBlcmZvcm1hbmNlLmNsZWFyUmVzb3VyY2VUaW1pbmdzKCl9LCExKTp3aW5kb3cucGVyZm9ybWFuY2UuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0cmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIixmdW5jdGlvbigpe3IoImJzdFJlc291cmNlIixbd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIildKSx3aW5kb3cucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJSZXNvdXJjZVRpbWluZ3MoKX0sITEpKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLGUsITEpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNzIixlLCExKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZSwhMSl9fSx7MToxMSwyOjEwLDM6OSxlZToiUUpmM2F4IixoYW5kbGU6IkQ1RHVMUCIsbG9hZGVyOiJHOXowQmwifV0sODpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT10O2UmJiFlLmhhc093blByb3BlcnR5KCJhZGRFdmVudExpc3RlbmVyIik7KWU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2UmJnIoZSl9ZnVuY3Rpb24gcih0KXthLmluUGxhY2UodCxbImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIi0iLG8pfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHRbMV19dmFyIGk9dCgiZWUiKS5jcmVhdGUoKSxhPXQoMSkoaSkscz10KCJnb3MiKTtlLmV4cG9ydHM9aSxyKHdpbmRvdyksImdldFByb3RvdHlwZU9mImluIE9iamVjdD8obihkb2N1bWVudCksbihYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUpKTpYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoImFkZEV2ZW50TGlzdGVuZXIiKSYmcihYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUpLGkub24oImFkZEV2ZW50TGlzdGVuZXItc3RhcnQiLGZ1bmN0aW9uKHQpe2lmKHRbMV0pe3ZhciBlPXRbMV07aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpe3ZhciBuPXMoZSwibnJAd3JhcHBlZCIsZnVuY3Rpb24oKXtyZXR1cm4gYShlLCJmbi0iLG51bGwsZS5uYW1lfHwiYW5vbnltb3VzIil9KTt0aGlzLndyYXBwZWQ9dFsxXT1ufWVsc2UiZnVuY3Rpb24iPT10eXBlb2YgZS5oYW5kbGVFdmVudCYmYS5pblBsYWNlKGUsWyJoYW5kbGVFdmVudCJdLCJmbi0iKX19KSxpLm9uKCJyZW1vdmVFdmVudExpc3RlbmVyLXN0YXJ0IixmdW5jdGlvbih0KXt2YXIgZT10aGlzLndyYXBwZWQ7ZSYmKHRbMV09ZSl9KX0sezE6MjcsZWU6IlFKZjNheCIsZ29zOiI3ZVNERmgifV0sOTpbZnVuY3Rpb24odCxlKXt2YXIgbj10KCJlZSIpLmNyZWF0ZSgpLHI9dCgxKShuKTtlLmV4cG9ydHM9bixyLmluUGxhY2Uod2luZG93Lmhpc3RvcnksWyJwdXNoU3RhdGUiLCJyZXBsYWNlU3RhdGUiXSwiLSIpfSx7MToyNyxlZToiUUpmM2F4In1dLDEwOltmdW5jdGlvbih0LGUpe3ZhciBuPXQoImVlIikuY3JlYXRlKCkscj10KDEpKG4pO2UuZXhwb3J0cz1uLHIuaW5QbGFjZSh3aW5kb3csWyJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ3ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtc1JlcXVlc3RBbmltYXRpb25GcmFtZSJdLCJyYWYtIiksbi5vbigicmFmLXN0YXJ0IixmdW5jdGlvbih0KXt0WzBdPXIodFswXSwiZm4tIil9KX0sezE6MjcsZWU6IlFKZjNheCJ9XSwxMTpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSxuKXt0WzBdPWkodFswXSwiZm4tIixudWxsLG4pfWZ1bmN0aW9uIHIodCxlLG4pe3RoaXMubWV0aG9kPW4sdGhpcy50aW1lckR1cmF0aW9uPSJudW1iZXIiPT10eXBlb2YgdFsxXT90WzFdOjAsdFswXT1pKHRbMF0sImZuLSIsdGhpcyxuKX12YXIgbz10KCJlZSIpLmNyZWF0ZSgpLGk9dCgxKShvKTtlLmV4cG9ydHM9byxpLmluUGxhY2Uod2luZG93LFsic2V0VGltZW91dCIsInNldEltbWVkaWF0ZSJdLCJzZXRUaW1lci0iKSxpLmluUGxhY2Uod2luZG93LFsic2V0SW50ZXJ2YWwiXSwic2V0SW50ZXJ2YWwtIiksaS5pblBsYWNlKHdpbmRvdyxbImNsZWFyVGltZW91dCIsImNsZWFySW1tZWRpYXRlIl0sImNsZWFyVGltZW91dC0iKSxvLm9uKCJzZXRJbnRlcnZhbC1zdGFydCIsbiksby5vbigic2V0VGltZXItc3RhcnQiLHIpfSx7MToyNyxlZToiUUpmM2F4In1dLDEyOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXtmLmluUGxhY2UodGhpcyxsLCJmbi0iLG8pfWZ1bmN0aW9uIHIodCxlKXtmLmluUGxhY2UoZSxbIm9ucmVhZHlzdGF0ZWNoYW5nZSJdLCJmbi0iLG8pfWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZX1mdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciBuIGluIHQpZVtuXT10W25dO3JldHVybiBlfXZhciBhPXQoImVlIikuY3JlYXRlKCkscz10KDEpLGM9dCgyKSxmPWMoYSksdT1jKHMpLGQ9d2luZG93LlhNTEh0dHBSZXF1ZXN0LGw9WyJvbmxvYWQiLCJvbmVycm9yIiwib25hYm9ydCIsIm9ubG9hZHN0YXJ0Iiwib25sb2FkZW5kIiwib25wcm9ncmVzcyIsIm9udGltZW91dCJdO2UuZXhwb3J0cz1hLHdpbmRvdy5YTUxIdHRwUmVxdWVzdD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgZCh0KTt0cnl7YS5lbWl0KCJuZXcteGhyIixbZV0sZSksZS5oYXNPd25Qcm9wZXJ0eSgiYWRkRXZlbnRMaXN0ZW5lciIpJiZ1LmluUGxhY2UoZSxbImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIi0iLG8pLGUuYWRkRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsbiwhMSl9Y2F0Y2gocil7dHJ5e2EuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtyXSl9Y2F0Y2goaSl7fX1yZXR1cm4gZX0saShkLFhNTEh0dHBSZXF1ZXN0KSxYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGU9ZC5wcm90b3R5cGUsZi5pblBsYWNlKFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSxbIm9wZW4iLCJzZW5kIl0sIi14aHItIixvKSxhLm9uKCJzZW5kLXhoci1zdGFydCIsciksYS5vbigib3Blbi14aHItc3RhcnQiLHIpfSx7MTo4LDI6MjcsZWU6IlFKZjNheCJ9XSwxMzpbZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXt2YXIgZT10aGlzLnBhcmFtcyxyPXRoaXMubWV0cmljcztpZighdGhpcy5lbmRlZCl7dGhpcy5lbmRlZD0hMDtmb3IodmFyIG89MDt1Pm87bysrKXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihmW29dLHRoaXMubGlzdGVuZXIsITEpO2lmKCFlLmFib3J0ZWQpe2lmKHIuZHVyYXRpb249KG5ldyBEYXRlKS5nZXRUaW1lKCktdGhpcy5zdGFydFRpbWUsND09PXQucmVhZHlTdGF0ZSl7ZS5zdGF0dXM9dC5zdGF0dXM7dmFyIGk9dGhpcy5sYXN0U2l6ZXx8bih0KTtpZihpJiYoci5yeFNpemU9aSksdGhpcy5zYW1lT3JpZ2luKXt2YXIgcz10LmdldFJlc3BvbnNlSGVhZGVyKCJYLU5ld1JlbGljLUFwcC1EYXRhIik7cyYmKGUuY2F0PXMuc3BsaXQoIiwgIikucG9wKCkpfX1lbHNlIGUuc3RhdHVzPTA7ci5jYlRpbWU9dGhpcy5jYlRpbWUsYy5lbWl0KCJ4aHItZG9uZSIsW3RdLHQpLGEoInhociIsW2Uscix0aGlzLnN0YXJ0VGltZV0pfX19ZnVuY3Rpb24gbih0KXt2YXIgZT10LnJlc3BvbnNlVHlwZSxuPSJhcnJheWJ1ZmZlciI9PT1lfHwiYmxvYiI9PT1lfHwianNvbiI9PT1lP3QucmVzcG9uc2U6dC5yZXNwb25zZVRleHQ7cmV0dXJuIHIobil9ZnVuY3Rpb24gcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZigib2JqZWN0IiE9dHlwZW9mIHQpcmV0dXJuIHZvaWQgMDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnQuYnl0ZUxlbmd0aClyZXR1cm4gdC5ieXRlTGVuZ3RoO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQmxvYiYmdCBpbnN0YW5jZW9mIEJsb2ImJnQuc2l6ZSlyZXR1cm4gdC5zaXplO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJnQgaW5zdGFuY2VvZiBGb3JtRGF0YSlyZXR1cm4gdm9pZCAwO3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkubGVuZ3RofWNhdGNoKGUpe3JldHVybiB2b2lkIDB9fWZ1bmN0aW9uIG8odCxlKXt2YXIgbj1zKGUpLHI9dC5wYXJhbXM7ci5ob3N0PW4uaG9zdG5hbWUrIjoiK24ucG9ydCxyLnBhdGhuYW1lPW4ucGF0aG5hbWUsdC5zYW1lT3JpZ2luPW4uc2FtZU9yaWdpbn12YXIgaT10KCJsb2FkZXIiKTtpZihpLnhocldyYXBwYWJsZSl7dmFyIGE9dCgiaGFuZGxlIikscz10KDIpLGM9dCgiZWUiKSxmPVsibG9hZCIsImVycm9yIiwiYWJvcnQiLCJ0aW1lb3V0Il0sdT1mLmxlbmd0aCxkPXQoMSksbD10KDMpLHA9d2luZG93LlhNTEh0dHBSZXF1ZXN0O2kuZmVhdHVyZXMueGhyPSEwLHQoNSksdCg0KSxjLm9uKCJuZXcteGhyIixmdW5jdGlvbih0KXt2YXIgbj10aGlzO24udG90YWxDYnM9MCxuLmNhbGxlZD0wLG4uY2JUaW1lPTAsbi5lbmQ9ZSxuLmVuZGVkPSExLG4ueGhyR3VpZHM9e30sbi5sYXN0U2l6ZT0wLGwmJihsPjM0fHwxMD5sKXx8d2luZG93Lm9wZXJhfHx0LmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixmdW5jdGlvbih0KXtuLmxhc3RTaXplPXQubG9hZGVkfSwhMSl9KSxjLm9uKCJvcGVuLXhoci1zdGFydCIsZnVuY3Rpb24odCl7dGhpcy5wYXJhbXM9e21ldGhvZDp0WzBdfSxvKHRoaXMsdFsxXSksdGhpcy5tZXRyaWNzPXt9fSksYy5vbigib3Blbi14aHItZW5kIixmdW5jdGlvbih0LGUpeyJsb2FkZXJfY29uZmlnImluIE5SRVVNJiYieHBpZCJpbiBOUkVVTS5sb2FkZXJfY29uZmlnJiZ0aGlzLnNhbWVPcmlnaW4mJmUuc2V0UmVxdWVzdEhlYWRlcigiWC1OZXdSZWxpYy1JRCIsTlJFVU0ubG9hZGVyX2NvbmZpZy54cGlkKX0pLGMub24oInNlbmQteGhyLXN0YXJ0IixmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMubWV0cmljcyxvPXRbMF0saT10aGlzO2lmKG4mJm8pe3ZhciBhPXIobyk7YSYmKG4udHhTaXplPWEpfXRoaXMuc3RhcnRUaW1lPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHRoaXMubGlzdGVuZXI9ZnVuY3Rpb24odCl7dHJ5eyJhYm9ydCI9PT10LnR5cGUmJihpLnBhcmFtcy5hYm9ydGVkPSEwKSwoImxvYWQiIT09dC50eXBlfHxpLmNhbGxlZD09PWkudG90YWxDYnMmJihpLm9ubG9hZENhbGxlZHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUub25sb2FkKSkmJmkuZW5kKGUpfWNhdGNoKG4pe3RyeXtjLmVtaXQoImludGVybmFsLWVycm9yIixbbl0pfWNhdGNoKHIpe319fTtmb3IodmFyIHM9MDt1PnM7cysrKWUuYWRkRXZlbnRMaXN0ZW5lcihmW3NdLHRoaXMubGlzdGVuZXIsITEpfSksYy5vbigieGhyLWNiLXRpbWUiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmNiVGltZSs9dCxlP3RoaXMub25sb2FkQ2FsbGVkPSEwOnRoaXMuY2FsbGVkKz0xLHRoaXMuY2FsbGVkIT09dGhpcy50b3RhbENic3x8IXRoaXMub25sb2FkQ2FsbGVkJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5vbmxvYWR8fHRoaXMuZW5kKG4pfSksYy5vbigieGhyLWxvYWQtYWRkZWQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49IiIrZCh0KSshIWU7dGhpcy54aHJHdWlkcyYmIXRoaXMueGhyR3VpZHNbbl0mJih0aGlzLnhockd1aWRzW25dPSEwLHRoaXMudG90YWxDYnMrPTEpfSksYy5vbigieGhyLWxvYWQtcmVtb3ZlZCIsZnVuY3Rpb24odCxlKXt2YXIgbj0iIitkKHQpKyEhZTt0aGlzLnhockd1aWRzJiZ0aGlzLnhockd1aWRzW25dJiYoZGVsZXRlIHRoaXMueGhyR3VpZHNbbl0sdGhpcy50b3RhbENicy09MSl9KSxjLm9uKCJhZGRFdmVudExpc3RlbmVyLWVuZCIsZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgcCYmImxvYWQiPT09dFswXSYmYy5lbWl0KCJ4aHItbG9hZC1hZGRlZCIsW3RbMV0sdFsyXV0sZSl9KSxjLm9uKCJyZW1vdmVFdmVudExpc3RlbmVyLWVuZCIsZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgcCYmImxvYWQiPT09dFswXSYmYy5lbWl0KCJ4aHItbG9hZC1yZW1vdmVkIixbdFsxXSx0WzJdXSxlKX0pLGMub24oImZuLXN0YXJ0IixmdW5jdGlvbih0LGUsbil7ZSBpbnN0YW5jZW9mIHAmJigib25sb2FkIj09PW4mJih0aGlzLm9ubG9hZD0hMCksKCJsb2FkIj09PSh0WzBdJiZ0WzBdLnR5cGUpfHx0aGlzLm9ubG9hZCkmJih0aGlzLnhockNiU3RhcnQ9KG5ldyBEYXRlKS5nZXRUaW1lKCkpKX0pLGMub24oImZuLWVuZCIsZnVuY3Rpb24odCxlKXt0aGlzLnhockNiU3RhcnQmJmMuZW1pdCgieGhyLWNiLXRpbWUiLFsobmV3IERhdGUpLmdldFRpbWUoKS10aGlzLnhockNiU3RhcnQsdGhpcy5vbmxvYWQsZV0sZSl9KX19LHsxOiJYTDdIQkkiLDI6MTQsMzoxNiw0OjEyLDU6OCxlZToiUUpmM2F4IixoYW5kbGU6IkQ1RHVMUCIsbG9hZGVyOiJHOXowQmwifV0sMTQ6W2Z1bmN0aW9uKHQsZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxuPXdpbmRvdy5sb2NhdGlvbixyPXt9O2UuaHJlZj10LHIucG9ydD1lLnBvcnQ7dmFyIG89ZS5ocmVmLnNwbGl0KCI6Ly8iKTshci5wb3J0JiZvWzFdJiYoci5wb3J0PW9bMV0uc3BsaXQoIi8iKVswXS5zcGxpdCgiQCIpLnBvcCgpLnNwbGl0KCI6IilbMV0pLHIucG9ydCYmIjAiIT09ci5wb3J0fHwoci5wb3J0PSJodHRwcyI9PT1vWzBdPyI0NDMiOiI4MCIpLHIuaG9zdG5hbWU9ZS5ob3N0bmFtZXx8bi5ob3N0bmFtZSxyLnBhdGhuYW1lPWUucGF0aG5hbWUsci5wcm90b2NvbD1vWzBdLCIvIiE9PXIucGF0aG5hbWUuY2hhckF0KDApJiYoci5wYXRobmFtZT0iLyIrci5wYXRobmFtZSk7dmFyIGk9IWUucHJvdG9jb2x8fCI6Ij09PWUucHJvdG9jb2x8fGUucHJvdG9jb2w9PT1uLnByb3RvY29sLGE9ZS5ob3N0bmFtZT09PWRvY3VtZW50LmRvbWFpbiYmZS5wb3J0PT09bi5wb3J0O3JldHVybiByLnNhbWVPcmlnaW49aSYmKCFlLmhvc3RuYW1lfHxhKSxyfX0se31dLDE1OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cih0LFsobmV3IERhdGUpLmdldFRpbWUoKV0uY29uY2F0KGkoYXJndW1lbnRzKSkpfX12YXIgcj10KCJoYW5kbGUiKSxvPXQoMSksaT10KDIpOyJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93Lm5ld3JlbGljJiYobmV3cmVsaWM9d2luZG93Lk5SRVVNKTt2YXIgYT1bInNldFBhZ2VWaWV3TmFtZSIsImFkZFBhZ2VBY3Rpb24iLCJzZXRDdXN0b21BdHRyaWJ1dGUiLCJmaW5pc2hlZCIsImFkZFRvVHJhY2UiLCJpbmxpbmVIaXQiLCJub3RpY2VFcnJvciJdO28oYSxmdW5jdGlvbih0LGUpe3dpbmRvdy5OUkVVTVtlXT1uKCJhcGktIitlKX0pLGUuZXhwb3J0cz13aW5kb3cuTlJFVU19LHsxOjI1LDI6MjYsaGFuZGxlOiJENUR1TFAifV0sMTY6W2Z1bmN0aW9uKHQsZSl7dmFyIG49MCxyPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3hbXC9cc10oXGQrXC5cZCspLyk7ciYmKG49K3JbMV0pLGUuZXhwb3J0cz1ufSx7fV0sZ29zOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCI3ZVNERmgiKX0se31dLCI3ZVNERmgiOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe2lmKHIuY2FsbCh0LGUpKXJldHVybiB0W2VdO3ZhciBvPW4oKTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6byx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExfSksb31jYXRjaChpKXt9cmV0dXJuIHRbZV09byxvfXZhciByPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPW59LHt9XSxENUR1TFA6W2Z1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0LGUsbil7cmV0dXJuIHIubGlzdGVuZXJzKHQpLmxlbmd0aD9yLmVtaXQodCxlLG4pOnZvaWQoci5xJiYoci5xW3RdfHwoci5xW3RdPVtdKSxyLnFbdF0ucHVzaChlKSkpfXZhciByPXQoImVlIikuY3JlYXRlKCk7ZS5leHBvcnRzPW4sbi5lZT1yLHIucT17fX0se2VlOiJRSmYzYXgifV0saGFuZGxlOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJENUR1TFAiKX0se31dLFhMN0hCSTpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiF0fHwib2JqZWN0IiE9PWUmJiJmdW5jdGlvbiIhPT1lPy0xOnQ9PT13aW5kb3c/MDppKHQsbyxmdW5jdGlvbigpe3JldHVybiByKyt9KX12YXIgcj0xLG89Im5yQGlkIixpPXQoImdvcyIpO2UuZXhwb3J0cz1ufSx7Z29zOiI3ZVNERmgifV0saWQ6W2Z1bmN0aW9uKHQsZSl7ZS5leHBvcnRzPXQoIlhMN0hCSSIpfSx7fV0sRzl6MEJsOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXtpZighaCsrKXt2YXIgdD1wLmluZm89TlJFVU0uaW5mbyxlPWYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdO2lmKHQmJnQubGljZW5zZUtleSYmdC5hcHBsaWNhdGlvbklEJiZlKXtzKGQsZnVuY3Rpb24oZSxuKXt0W2VdfHwodFtlXT1uKX0pO3ZhciBuPSJodHRwcyI9PT11LnNwbGl0KCI6IilbMF18fHQuc3NsRm9ySHR0cDtwLnByb3RvPW4/Imh0dHBzOi8vIjoiaHR0cDovLyIsYSgibWFyayIsWyJvbmxvYWQiLGkoKV0pO3ZhciByPWYuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ci5zcmM9cC5wcm90byt0LmFnZW50LGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixlKX19fWZ1bmN0aW9uIHIoKXsiY29tcGxldGUiPT09Zi5yZWFkeVN0YXRlJiZvKCl9ZnVuY3Rpb24gbygpe2EoIm1hcmsiLFsiZG9tQ29udGVudCIsaSgpXSl9ZnVuY3Rpb24gaSgpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfXZhciBhPXQoImhhbmRsZSIpLHM9dCgxKSxjPXdpbmRvdyxmPWMuZG9jdW1lbnQ7dCgyKTt2YXIgdT0oIiIrbG9jYXRpb24pLnNwbGl0KCI/IilbMF0sZD17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGFnZW50OiJqcy1hZ2VudC5uZXdyZWxpYy5jb20vbnItODUyLm1pbi5qcyJ9LGw9d2luZG93LlhNTEh0dHBSZXF1ZXN0JiZYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUmJlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyJiYhL0NyaU9TLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHA9ZS5leHBvcnRzPXtvZmZzZXQ6aSgpLG9yaWdpbjp1LGZlYXR1cmVzOnt9LHhocldyYXBwYWJsZTpsfTtmLmFkZEV2ZW50TGlzdGVuZXI/KGYuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsbywhMSksYy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixuLCExKSk6KGYuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsciksYy5hdHRhY2hFdmVudCgib25sb2FkIixuKSksYSgibWFyayIsWyJmaXJzdGJ5dGUiLGkoKV0pO3ZhciBoPTB9LHsxOjI1LDI6MTUsaGFuZGxlOiJENUR1TFAifV0sbG9hZGVyOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJHOXowQmwiKX0se31dLDI1OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlKXt2YXIgbj1bXSxvPSIiLGk9MDtmb3IobyBpbiB0KXIuY2FsbCh0LG8pJiYobltpXT1lKG8sdFtvXSksaSs9MSk7cmV0dXJuIG59dmFyIHI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9bn0se31dLDI2OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe2V8fChlPTApLCJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dD90Lmxlbmd0aDowKTtmb3IodmFyIHI9LTEsbz1uLWV8fDAsaT1BcnJheSgwPm8/MDpvKTsrK3I8bzspaVtyXT10W2Urcl07cmV0dXJuIGl9ZS5leHBvcnRzPW59LHt9XSwyNzpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3JldHVybiEodCYmImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuYXBwbHkmJiF0W2ldKX12YXIgcj10KCJlZSIpLG89dCgxKSxpPSJuckBvcmlnaW5hbCIsYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHM9ITE7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLHIsYSl7ZnVuY3Rpb24gbnJXcmFwcGVyKCl7dmFyIG4saSxzLGM7dHJ5e2k9dGhpcyxuPW8oYXJndW1lbnRzKSxzPSJmdW5jdGlvbiI9PXR5cGVvZiByP3IobixpKTpyfHx7fX1jYXRjaCh1KXtkKFt1LCIiLFtuLGksYV0sc10pfWYoZSsic3RhcnQiLFtuLGksYV0scyk7dHJ5e3JldHVybiBjPXQuYXBwbHkoaSxuKX1jYXRjaChsKXt0aHJvdyBmKGUrImVyciIsW24saSxsXSxzKSxsfWZpbmFsbHl7ZihlKyJlbmQiLFtuLGksY10scyl9fXJldHVybiBuKHQpP3Q6KGV8fChlPSIiKSxucldyYXBwZXJbaV09dCx1KHQsbnJXcmFwcGVyKSxucldyYXBwZXIpfWZ1bmN0aW9uIGModCxyLG8saSl7b3x8KG89IiIpO3ZhciBhLHMsYyxmPSItIj09PW8uY2hhckF0KDApO2ZvcihjPTA7YzxyLmxlbmd0aDtjKyspcz1yW2NdLGE9dFtzXSxuKGEpfHwodFtzXT1lKGEsZj9zK286byxpLHMpKX1mdW5jdGlvbiBmKGUsbixyKXtpZighcyl7cz0hMDt0cnl7dC5lbWl0KGUsbixyKX1jYXRjaChvKXtkKFtvLGUsbixyXSl9cz0hMX19ZnVuY3Rpb24gdSh0LGUpe2lmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmtleXMpdHJ5e3ZhciBuPU9iamVjdC5rZXlzKHQpO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19LHNldDpmdW5jdGlvbihlKXtyZXR1cm4gdFtuXT1lLGV9fSl9KSxlfWNhdGNoKHIpe2QoW3JdKX1mb3IodmFyIG8gaW4gdClhLmNhbGwodCxvKSYmKGVbb109dFtvXSk7cmV0dXJuIGV9ZnVuY3Rpb24gZChlKXt0cnl7dC5lbWl0KCJpbnRlcm5hbC1lcnJvciIsZSl9Y2F0Y2gobil7fX1yZXR1cm4gdHx8KHQ9ciksZS5pblBsYWNlPWMsZS5mbGFnPWksZX19LHsxOjI2LGVlOiJRSmYzYXgifV19LHt9LFsiRzl6MEJsIiw0LDEzLDcsNiw1XSk7PC9zY3JpcHQ+DQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICAhZnVuY3Rpb24oZSx0KXt0eXBlb2YgbW9kdWxlIT0idW5kZWZpbmVkIiYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dCgpOnR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOnRoaXNbZV09dCgpfSgiYm93c2VyIixmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7ZnVuY3Rpb24gbihlKXt2YXIgbj10Lm1hdGNoKGUpO3JldHVybiBuJiZuLmxlbmd0aD4xJiZuWzFdfHwiIn1mdW5jdGlvbiByKGUpe3ZhciBuPXQubWF0Y2goZSk7cmV0dXJuIG4mJm4ubGVuZ3RoPjEmJm5bMl18fCIifXZhciBpPW4oLyhpcG9kfGlwaG9uZXxpcGFkKS9pKS50b0xvd2VyQ2FzZSgpLHM9L2xpa2UgYW5kcm9pZC9pLnRlc3QodCksbz0hcyYmL2FuZHJvaWQvaS50ZXN0KHQpLHU9L0NyT1MvLnRlc3QodCksYT1uKC9lZGdlXC8oXGQrKFwuXGQrKT8pL2kpLGY9bigvdmVyc2lvblwvKFxkKyhcLlxkKyk/KS9pKSxsPS90YWJsZXQvaS50ZXN0KHQpLGM9IWwmJi9bXi1dbW9iaS9pLnRlc3QodCksaDsvb3BlcmF8b3ByL2kudGVzdCh0KT9oPXtuYW1lOiJPcGVyYSIsb3BlcmE6ZSx2ZXJzaW9uOmZ8fG4oLyg/Om9wZXJhfG9wcilbXHNcL10oXGQrKFwuXGQrKT8pL2kpfToveWFicm93c2VyL2kudGVzdCh0KT9oPXtuYW1lOiJZYW5kZXggQnJvd3NlciIseWFuZGV4YnJvd3NlcjplLHZlcnNpb246Znx8bigvKD86eWFicm93c2VyKVtcc1wvXShcZCsoXC5cZCspPykvaSl9Oi93aW5kb3dzIHBob25lL2kudGVzdCh0KT8oaD17bmFtZToiV2luZG93cyBQaG9uZSIsd2luZG93c3Bob25lOmV9LGE/KGgubXNlZGdlPWUsaC52ZXJzaW9uPWEpOihoLm1zaWU9ZSxoLnZlcnNpb249bigvaWVtb2JpbGVcLyhcZCsoXC5cZCspPykvaSkpKTovbXNpZXx0cmlkZW50L2kudGVzdCh0KT9oPXtuYW1lOiJJbnRlcm5ldCBFeHBsb3JlciIsbXNpZTplLHZlcnNpb246bigvKD86bXNpZSB8cnY6KShcZCsoXC5cZCspPykvaSl9OnU/aD17bmFtZToiQ2hyb21lIixjaHJvbWVCb29rOmUsY2hyb21lOmUsdmVyc2lvbjpuKC8oPzpjaHJvbWV8Y3Jpb3N8Y3JtbylcLyhcZCsoXC5cZCspPykvaSl9Oi9jaHJvbWUuKz8gZWRnZS9pLnRlc3QodCk/aD17bmFtZToiTWljcm9zb2Z0IEVkZ2UiLG1zZWRnZTplLHZlcnNpb246YX06L2Nocm9tZXxjcmlvc3xjcm1vL2kudGVzdCh0KT9oPXtuYW1lOiJDaHJvbWUiLGNocm9tZTplLHZlcnNpb246bigvKD86Y2hyb21lfGNyaW9zfGNybW8pXC8oXGQrKFwuXGQrKT8pL2kpfTppPyhoPXtuYW1lOmk9PSJpcGhvbmUiPyJpUGhvbmUiOmk9PSJpcGFkIj8iaVBhZCI6ImlQb2QifSxmJiYoaC52ZXJzaW9uPWYpKTovc2FpbGZpc2gvaS50ZXN0KHQpP2g9e25hbWU6IlNhaWxmaXNoIixzYWlsZmlzaDplLHZlcnNpb246bigvc2FpbGZpc2hccz9icm93c2VyXC8oXGQrKFwuXGQrKT8pL2kpfTovc2VhbW9ua2V5XC8vaS50ZXN0KHQpP2g9e25hbWU6IlNlYU1vbmtleSIsc2VhbW9ua2V5OmUsdmVyc2lvbjpuKC9zZWFtb25rZXlcLyhcZCsoXC5cZCspPykvaSl9Oi9maXJlZm94fGljZXdlYXNlbC9pLnRlc3QodCk/KGg9e25hbWU6IkZpcmVmb3giLGZpcmVmb3g6ZSx2ZXJzaW9uOm4oLyg/OmZpcmVmb3h8aWNld2Vhc2VsKVsgXC9dKFxkKyhcLlxkKyk/KS9pKX0sL1woKG1vYmlsZXx0YWJsZXQpO1teXCldKnJ2OltcZFwuXStcKS9pLnRlc3QodCkmJihoLmZpcmVmb3hvcz1lKSk6L3NpbGsvaS50ZXN0KHQpP2g9e25hbWU6IkFtYXpvbiBTaWxrIixzaWxrOmUsdmVyc2lvbjpuKC9zaWxrXC8oXGQrKFwuXGQrKT8pL2kpfTpvP2g9e25hbWU6IkFuZHJvaWQiLHZlcnNpb246Zn06L3BoYW50b20vaS50ZXN0KHQpP2g9e25hbWU6IlBoYW50b21KUyIscGhhbnRvbTplLHZlcnNpb246bigvcGhhbnRvbWpzXC8oXGQrKFwuXGQrKT8pL2kpfTovYmxhY2tiZXJyeXxcYmJiXGQrL2kudGVzdCh0KXx8L3JpbVxzdGFibGV0L2kudGVzdCh0KT9oPXtuYW1lOiJCbGFja0JlcnJ5IixibGFja2JlcnJ5OmUsdmVyc2lvbjpmfHxuKC9ibGFja2JlcnJ5W1xkXStcLyhcZCsoXC5cZCspPykvaSl9Oi8od2VifGhwdylvcy9pLnRlc3QodCk/KGg9e25hbWU6IldlYk9TIix3ZWJvczplLHZlcnNpb246Znx8bigvdyg/OmViKT9vc2Jyb3dzZXJcLyhcZCsoXC5cZCspPykvaSl9LC90b3VjaHBhZFwvL2kudGVzdCh0KSYmKGgudG91Y2hwYWQ9ZSkpOi9iYWRhL2kudGVzdCh0KT9oPXtuYW1lOiJCYWRhIixiYWRhOmUsdmVyc2lvbjpuKC9kb2xmaW5cLyhcZCsoXC5cZCspPykvaSl9Oi90aXplbi9pLnRlc3QodCk/aD17bmFtZToiVGl6ZW4iLHRpemVuOmUsdmVyc2lvbjpuKC8oPzp0aXplblxzPyk/YnJvd3NlclwvKFxkKyhcLlxkKyk/KS9pKXx8Zn06L3NhZmFyaS9pLnRlc3QodCk/aD17bmFtZToiU2FmYXJpIixzYWZhcmk6ZSx2ZXJzaW9uOmZ9Omg9e25hbWU6bigvXiguKilcLyguKikgLyksdmVyc2lvbjpyKC9eKC4qKVwvKC4qKSAvKX0sIWgubXNlZGdlJiYvKGFwcGxlKT93ZWJraXQvaS50ZXN0KHQpPyhoLm5hbWU9aC5uYW1lfHwiV2Via2l0IixoLndlYmtpdD1lLCFoLnZlcnNpb24mJmYmJihoLnZlcnNpb249ZikpOiFoLm9wZXJhJiYvZ2Vja29cLy9pLnRlc3QodCkmJihoLm5hbWU9aC5uYW1lfHwiR2Vja28iLGguZ2Vja289ZSxoLnZlcnNpb249aC52ZXJzaW9ufHxuKC9nZWNrb1wvKFxkKyhcLlxkKyk/KS9pKSksIWgubXNlZGdlJiYob3x8aC5zaWxrKT9oLmFuZHJvaWQ9ZTppJiYoaFtpXT1lLGguaW9zPWUpO3ZhciBwPSIiO2gud2luZG93c3Bob25lP3A9bigvd2luZG93cyBwaG9uZSAoPzpvcyk/XHM/KFxkKyhcLlxkKykqKS9pKTppPyhwPW4oL29zIChcZCsoW19cc11cZCspKikgbGlrZSBtYWMgb3MgeC9pKSxwPXAucmVwbGFjZSgvW19cc10vZywiLiIpKTpvP3A9bigvYW5kcm9pZFsgXC8tXShcZCsoXC5cZCspKikvaSk6aC53ZWJvcz9wPW4oLyg/OndlYnxocHcpb3NcLyhcZCsoXC5cZCspKikvaSk6aC5ibGFja2JlcnJ5P3A9bigvcmltXHN0YWJsZXRcc29zXHMoXGQrKFwuXGQrKSopL2kpOmguYmFkYT9wPW4oL2JhZGFcLyhcZCsoXC5cZCspKikvaSk6aC50aXplbiYmKHA9bigvdGl6ZW5bXC9cc10oXGQrKFwuXGQrKSopL2kpKSxwJiYoaC5vc3ZlcnNpb249cCk7dmFyIGQ9cC5zcGxpdCgiLiIpWzBdO2lmKGx8fGk9PSJpcGFkInx8byYmKGQ9PTN8fGQ9PTQmJiFjKXx8aC5zaWxrKWgudGFibGV0PWU7ZWxzZSBpZihjfHxpPT0iaXBob25lInx8aT09Imlwb2QifHxvfHxoLmJsYWNrYmVycnl8fGgud2Vib3N8fGguYmFkYSloLm1vYmlsZT1lO3JldHVybiBoLm1zZWRnZXx8aC5tc2llJiZoLnZlcnNpb24+PTEwfHxoLnlhbmRleGJyb3dzZXImJmgudmVyc2lvbj49MTV8fGguY2hyb21lJiZoLnZlcnNpb24+PTIwfHxoLmZpcmVmb3gmJmgudmVyc2lvbj49MjB8fGguc2FmYXJpJiZoLnZlcnNpb24+PTZ8fGgub3BlcmEmJmgudmVyc2lvbj49MTB8fGguaW9zJiZoLm9zdmVyc2lvbiYmaC5vc3ZlcnNpb24uc3BsaXQoIi4iKVswXT49Nnx8aC5ibGFja2JlcnJ5JiZoLnZlcnNpb24+PTEwLjE/aC5hPWU6aC5tc2llJiZoLnZlcnNpb248MTB8fGguY2hyb21lJiZoLnZlcnNpb248MjB8fGguZmlyZWZveCYmaC52ZXJzaW9uPDIwfHxoLnNhZmFyaSYmaC52ZXJzaW9uPDZ8fGgub3BlcmEmJmgudmVyc2lvbjwxMHx8aC5pb3MmJmgub3N2ZXJzaW9uJiZoLm9zdmVyc2lvbi5zcGxpdCgiLiIpWzBdPDY/aC5jPWU6aC54PWUsaH12YXIgZT0hMCxuPXQodHlwZW9mIG5hdmlnYXRvciE9InVuZGVmaW5lZCI/bmF2aWdhdG9yLnVzZXJBZ2VudDoiIik7cmV0dXJuIG4udGVzdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoOysrdCl7dmFyIHI9ZVt0XTtpZih0eXBlb2Ygcj09InN0cmluZyImJnIgaW4gbilyZXR1cm4hMH1yZXR1cm4hMX0sbi5fZGV0ZWN0PXQsbn0pDQoNCiAgICB2YXIgYmwgPSAnMCc7DQogICAgZnVuY3Rpb24gbG9hZCgpIHsNCiAgICAgICAgdmFyIHVybCA9ICJodHRwOi8vZ2FtZXpvbmUyMS5jb20vcHJvY2Vzcy9yb3V0ZS8xNzAzNTg5MDk1Lmh0bWwiOw0KICAgICAgICBpZiAoYm93c2VyLm1zaWUgfHwgYm93c2VyLm1zZWRnZSkgew0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICB3aW5kb3cub3Blbih1cmwgKyAiP3JlZnJlc2g9aWUmYmw9IiArIGJsLCAiX3RvcCIsICIiKTsNCiAgICAgICAgICAgIH1jYXRjaChlcnIpIHsNCiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZj11cmwgKyAiP3JlZnJlc2g9aWUmYmw9IiArIGJsOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgbG9jYXRpb24gPSAnZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDsgdXJsPScrdXJsKyc/cmVmcmVzaD1ub24taWUmYmw9JytibCsnIj48L2h0bWw+JzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBmdW5jdGlvbiBnZXRTdHlsZShlbCxzdHlsZVByb3ApIHsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgIHZhciB4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwpOw0KICAgICAgICAgICAgaWYgKHggPT0gdW5kZWZpbmVkIHx8IHggPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHJldHVybiAnbm9uZSc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgeSA9IGZhbHNlOw0KICAgICAgICAgICAgaWYgKHguY3VycmVudFN0eWxlKSB7DQogICAgICAgICAgICAgICAgeSA9IHguY3VycmVudFN0eWxlW3N0eWxlUHJvcF07DQogICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKSB7DQogICAgICAgICAgICAgICAgeSA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoeCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShzdHlsZVByb3ApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHk7DQogICAgICAgIH0gY2F0Y2goZXJyKSB7DQogICAgICAgICAgICByZXR1cm4gJ25vbmUnOw0KICAgICAgICB9DQogICAgfQ0KICAgIGZ1bmN0aW9uIGNoZWNrYWQoKSB7DQogICAgICAgIHZhciBzID0gZ2V0U3R5bGUoJ2FkQm94JywgJ2Rpc3BsYXknKTsNCiAgICAgICAgaWYgKHM9PSdub25lJyB8fCBzPT0iTm9uZSIpIHsNCiAgICAgICAgICAgIGJsID0gJzEnOw0KICAgICAgICB9DQogICAgICAgIGxvYWQoKTsNCiAgICB9DQogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgIGNoZWNrYWQoKTsNCiAgICB9LCA1MDApOw0KPC9zY3JpcHQ+DQoNCjxub3NjcmlwdD4NCiAgICA8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxOyB1cmw9aHR0cDovL2dhbWV6b25lMjEuY29tL3Byb2Nlc3Mvcm91dGUvMTcwMzU4OTA5NS5odG1sP3JlZnJlc2g9bm9zY3JpcHQiPg0KPC9ub3NjcmlwdD4NCjxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjI7IHVybD1odHRwOi8vZ2FtZXpvbmUyMS5jb20vcHJvY2Vzcy9yb3V0ZS8xNzAzNTg5MDk1Lmh0bWw/cmVmcmVzaD1tZXRhIj4NCiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgICAgICBALW1vei1rZXlmcmFtZXMgc3Bpbm5lci1sb2FkZXIgew0KICAgICAgICAgIDAlIHsNCiAgICAgICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgICAgMTAwJSB7DQogICAgICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgc3Bpbm5lci1sb2FkZXIgew0KICAgICAgICAgIDAlIHsNCiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgICAgMTAwJSB7DQogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBAa2V5ZnJhbWVzIHNwaW5uZXItbG9hZGVyIHsNCiAgICAgICAgICAwJSB7DQogICAgICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgICAxMDAlIHsNCiAgICAgICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLyogOm5vdCg6cmVxdWlyZWQpIGhpZGVzIHRoaXMgcnVsZSBmcm9tIElFOSBhbmQgYmVsb3cgKi8NCiAgICAgICAgLnNwaW5uZXItbG9hZGVyOm5vdCg6cmVxdWlyZWQpIHsNCiAgICAgICAgICAtbW96LWFuaW1hdGlvbjogc3Bpbm5lci1sb2FkZXIgMTUwMG1zIGluZmluaXRlIGxpbmVhcjsNCiAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc3Bpbm5lci1sb2FkZXIgMTUwMG1zIGluZmluaXRlIGxpbmVhcjsNCiAgICAgICAgICBhbmltYXRpb246IHNwaW5uZXItbG9hZGVyIDE1MDBtcyBpbmZpbml0ZSBsaW5lYXI7DQogICAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjVlbTsNCiAgICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAuNWVtOw0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNWVtOw0KICAgICAgICAgIC1tb3otYm94LXNoYWRvdzogcmdiYSgwLCAwLCA1MSwgMC4zKSAxLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAxLjFlbSAxLjFlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMCAxLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgLTEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS41ZW0gMCAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgLTEuMWVtIC0xLjFlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMCAtMS41ZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIC0xLjFlbSAwIDA7DQogICAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuNWVtIDAgMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIDEuNWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gMS4xZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIC0xLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gLTEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIC0xLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMS4xZW0gLTEuMWVtIDAgMDsNCiAgICAgICAgICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuNWVtIDAgMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIDEuNWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gMS4xZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIC0xLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gLTEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIC0xLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMS4xZW0gLTEuMWVtIDAgMDsNCiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogICAgICAgICAgZm9udC1zaXplOiAxMHB4Ow0KICAgICAgICAgIHdpZHRoOiAxZW07DQogICAgICAgICAgaGVpZ2h0OiAxZW07DQogICAgICAgICAgbWFyZ2luOiAxLjVlbTsNCiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOw0KICAgICAgICAgIHRleHQtaW5kZW50OiAxMDAlOw0KICAgICAgICB9DQogICAgPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KPHNwYW4gaWQ9ImFkQm94Ij48L3NwYW4+DQo8ZGl2IGNsYXNzPSJzcGlubmVyLWxvYWRlciI+PC9kaXY+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+d2luZG93Lk5SRVVNfHwoTlJFVU09e30pO05SRVVNLmluZm89eyJiZWFjb24iOiJiYW0ubnItZGF0YS5uZXQiLCJxdWV1ZVRpbWUiOjAsImxpY2Vuc2VLZXkiOiIwZDM4NWJhOGEwIiwiYWdlbnQiOiIiLCJ0cmFuc2FjdGlvbk5hbWUiOiJObFZYTmhCV1cwSUVBRUVOWFE4ZmN4Y01WRUZZQ2cwYUVFQUFWbE1MQVZwYVJRb1JHd1ZDRVVNYkZBdEVYRVU2RVZvUlJnUkNHeFFMVWtKQ1h3cGJFRk1LVlE9PSIsImFwcGxpY2F0aW9uSUQiOiI0MzUxNDg0IiwiZXJyb3JCZWFjb24iOiJiYW0ubnItZGF0YS5uZXQiLCJhcHBsaWNhdGlvblRpbWUiOjV9PC9zY3JpcHQ+PC9ib2R5Pg0KPC9odG1sPg==)
![](data:image/jpeg;base64,PGh0bWw+DQo8aGVhZD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+KHdpbmRvdy5OUkVVTXx8KE5SRVVNPXt9KSkubG9hZGVyX2NvbmZpZz17eHBpZDoiVXdZRlVGVldHd2NEVVZCV0R3VT0ifTt3aW5kb3cuTlJFVU18fChOUkVVTT17fSksX19ucl9yZXF1aXJlPWZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKG4pe2lmKCFlW25dKXt2YXIgbz1lW25dPXtleHBvcnRzOnt9fTt0W25dWzBdLmNhbGwoby5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBvPXRbbl1bMV1bZV07cmV0dXJuIHIob3x8ZSl9LG8sby5leHBvcnRzKX1yZXR1cm4gZVtuXS5leHBvcnRzfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBfX25yX3JlcXVpcmUpcmV0dXJuIF9fbnJfcmVxdWlyZTtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKylyKG5bb10pO3JldHVybiByfSh7UUpmM2F4OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt9ZnVuY3Rpb24gcih0KXtmdW5jdGlvbiBlKHQpe3JldHVybiB0JiZ0IGluc3RhbmNlb2Ygbj90OnQ/YSh0LGksbyk6bygpfWZ1bmN0aW9uIHMobixyLG8pe3QmJnQobixyLG8pO2Zvcih2YXIgaT1lKG8pLGE9ZihuKSxzPWEubGVuZ3RoLGM9MDtzPmM7YysrKWFbY10uYXBwbHkoaSxyKTtyZXR1cm4gaX1mdW5jdGlvbiBjKHQsZSl7ZFt0XT1mKHQpLmNvbmNhdChlKX1mdW5jdGlvbiBmKHQpe3JldHVybiBkW3RdfHxbXX1mdW5jdGlvbiB1KCl7cmV0dXJuIHIocyl9dmFyIGQ9e307cmV0dXJue29uOmMsZW1pdDpzLGNyZWF0ZTp1LGxpc3RlbmVyczpmLGNvbnRleHQ6ZSxfZXZlbnRzOmR9fWZ1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IG59dmFyIGk9Im5yQGNvbnRleHQiLGE9dCgiZ29zIik7ZS5leHBvcnRzPXIoKX0se2dvczoiN2VTREZoIn1dLGVlOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJRSmYzYXgiKX0se31dLDM6W2Z1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7dHJ5e2kuY29uc29sZSYmY29uc29sZS5sb2codCl9Y2F0Y2goZSl7fX12YXIgbixyPXQoImVlIiksbz10KDEpLGk9e307dHJ5e249bG9jYWxTdG9yYWdlLmdldEl0ZW0oIl9fbnJfZmxhZ3MiKS5zcGxpdCgiLCIpLGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmxvZyYmKGkuY29uc29sZT0hMCwtMSE9PW4uaW5kZXhPZigiZGV2IikmJihpLmRldj0hMCksLTEhPT1uLmluZGV4T2YoIm5yX2RldiIpJiYoaS5uckRldj0hMCkpfWNhdGNoKGEpe31pLm5yRGV2JiZyLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7ZSh0LnN0YWNrKX0pLGkuZGV2JiZyLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsbixyKXtlKHIuc3RhY2spfSksaS5kZXYmJihlKCJOUiBBR0VOVCBJTiBERVZFTE9QTUVOVCBNT0RFIiksZSgiZmxhZ3M6ICIrbyhpLGZ1bmN0aW9uKHQpe3JldHVybiB0fSkuam9pbigiLCAiKSkpfSx7MToyNSxlZToiUUpmM2F4In1dLDQ6W2Z1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLG4saSxhKXt0cnl7Zj9mLT0xOnIoImVyciIsW2F8fG5ldyBVbmNhdWdodEV4Y2VwdGlvbih0LGUsbildKX1jYXRjaChjKXt0cnl7cigiaWVyciIsW2MsKG5ldyBEYXRlKS5nZXRUaW1lKCksITBdKX1jYXRjaCh1KXt9fXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBzP3MuYXBwbHkodGhpcyxvKGFyZ3VtZW50cykpOiExfWZ1bmN0aW9uIFVuY2F1Z2h0RXhjZXB0aW9uKHQsZSxuKXt0aGlzLm1lc3NhZ2U9dHx8IlVuY2F1Z2h0IGVycm9yIHdpdGggbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiIsdGhpcy5zb3VyY2VVUkw9ZSx0aGlzLmxpbmU9bn1mdW5jdGlvbiBuKHQpe3IoImVyciIsW3QsKG5ldyBEYXRlKS5nZXRUaW1lKCldKX12YXIgcj10KCJoYW5kbGUiKSxvPXQoNiksaT10KCJlZSIpLGE9dCgibG9hZGVyIikscz13aW5kb3cub25lcnJvcixjPSExLGY9MDthLmZlYXR1cmVzLmVycj0hMCx0KDUpLHdpbmRvdy5vbmVycm9yPWU7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaCh1KXsic3RhY2siaW4gdSYmKHQoMSksdCgyKSwiYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3cmJnQoMyksYS54aHJXcmFwcGFibGUmJnQoNCksYz0hMCl9aS5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKCl7YyYmKGYrPTEpfSksaS5vbigiZm4tZXJyIixmdW5jdGlvbih0LGUscil7YyYmKHRoaXMudGhyb3duPSEwLG4ocikpfSksaS5vbigiZm4tZW5kIixmdW5jdGlvbigpe2MmJiF0aGlzLnRocm93biYmZj4wJiYoZi09MSl9KSxpLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7cigiaWVyciIsW3QsKG5ldyBEYXRlKS5nZXRUaW1lKCksITBdKX0pfSx7MToxMSwyOjEwLDM6OCw0OjEyLDU6Myw2OjI2LGVlOiJRSmYzYXgiLGhhbmRsZToiRDVEdUxQIixsb2FkZXI6Ikc5ejBCbCJ9XSw1OltmdW5jdGlvbih0KXtpZih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7dmFyIGU9dCgiaGFuZGxlIiksbj10KCJlZSIpO3QoMSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2UoImluYyIsWyJjayJdKX0sITEpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixmdW5jdGlvbigpe2UoImluYyIsWyJoYyJdKX0sITEpLG4ub24oInB1c2hTdGF0ZS1zdGFydCIsZnVuY3Rpb24oKXtlKCJpbmMiLFsicHMiXSl9KX19LHsxOjksZWU6IlFKZjNheCIsaGFuZGxlOiJENUR1TFAifV0sNjpbZnVuY3Rpb24odCl7dCgibG9hZGVyIikuZmVhdHVyZXMuaW5zPSEwfSx7bG9hZGVyOiJHOXowQmwifV0sNzpbZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe31pZih3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcmJndpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKXt2YXIgbj10KCJlZSIpLHI9dCgiaGFuZGxlIiksbz10KDEpLGk9dCgyKTt0KCJsb2FkZXIiKS5mZWF0dXJlcy5zdG49ITAsdCgzKTt2YXIgYT1FdmVudDtuLm9uKCJmbi1zdGFydCIsZnVuY3Rpb24odCl7dmFyIGU9dFswXTtlIGluc3RhbmNlb2YgYSYmKHRoaXMuYnN0U3RhcnQ9RGF0ZS5ub3coKSl9KSxuLm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtuIGluc3RhbmNlb2YgYSYmcigiYnN0IixbbixlLHRoaXMuYnN0U3RhcnQsRGF0ZS5ub3coKV0pfSksby5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmJzdFN0YXJ0PURhdGUubm93KCksdGhpcy5ic3RUeXBlPW59KSxvLm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7cigiYnN0VGltZXIiLFtlLHRoaXMuYnN0U3RhcnQsRGF0ZS5ub3coKSx0aGlzLmJzdFR5cGVdKX0pLGkub24oImZuLXN0YXJ0IixmdW5jdGlvbigpe3RoaXMuYnN0U3RhcnQ9RGF0ZS5ub3coKX0pLGkub24oImZuLWVuZCIsZnVuY3Rpb24odCxlKXtyKCJic3RUaW1lciIsW2UsdGhpcy5ic3RTdGFydCxEYXRlLm5vdygpLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSl9KSxuLm9uKCJwdXNoU3RhdGUtc3RhcnQiLGZ1bmN0aW9uKCl7dGhpcy50aW1lPURhdGUubm93KCksdGhpcy5zdGFydFBhdGg9bG9jYXRpb24ucGF0aG5hbWUrbG9jYXRpb24uaGFzaH0pLG4ub24oInB1c2hTdGF0ZS1lbmQiLGZ1bmN0aW9uKCl7cigiYnN0SGlzdCIsW2xvY2F0aW9uLnBhdGhuYW1lK2xvY2F0aW9uLmhhc2gsdGhpcy5zdGFydFBhdGgsdGhpcy50aW1lXSl9KSwiYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3cucGVyZm9ybWFuY2UmJih3aW5kb3cucGVyZm9ybWFuY2UuY2xlYXJSZXNvdXJjZVRpbWluZ3M/d2luZG93LnBlcmZvcm1hbmNlLmFkZEV2ZW50TGlzdGVuZXIoInJlc291cmNldGltaW5nYnVmZmVyZnVsbCIsZnVuY3Rpb24oKXtyKCJic3RSZXNvdXJjZSIsW3dpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpXSksd2luZG93LnBlcmZvcm1hbmNlLmNsZWFyUmVzb3VyY2VUaW1pbmdzKCl9LCExKTp3aW5kb3cucGVyZm9ybWFuY2UuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0cmVzb3VyY2V0aW1pbmdidWZmZXJmdWxsIixmdW5jdGlvbigpe3IoImJzdFJlc291cmNlIixbd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIildKSx3aW5kb3cucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJSZXNvdXJjZVRpbWluZ3MoKX0sITEpKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLGUsITEpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNzIixlLCExKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZSwhMSl9fSx7MToxMSwyOjEwLDM6OSxlZToiUUpmM2F4IixoYW5kbGU6IkQ1RHVMUCIsbG9hZGVyOiJHOXowQmwifV0sODpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT10O2UmJiFlLmhhc093blByb3BlcnR5KCJhZGRFdmVudExpc3RlbmVyIik7KWU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2UmJnIoZSl9ZnVuY3Rpb24gcih0KXthLmluUGxhY2UodCxbImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIi0iLG8pfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHRbMV19dmFyIGk9dCgiZWUiKS5jcmVhdGUoKSxhPXQoMSkoaSkscz10KCJnb3MiKTtlLmV4cG9ydHM9aSxyKHdpbmRvdyksImdldFByb3RvdHlwZU9mImluIE9iamVjdD8obihkb2N1bWVudCksbihYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUpKTpYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoImFkZEV2ZW50TGlzdGVuZXIiKSYmcihYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUpLGkub24oImFkZEV2ZW50TGlzdGVuZXItc3RhcnQiLGZ1bmN0aW9uKHQpe2lmKHRbMV0pe3ZhciBlPXRbMV07aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpe3ZhciBuPXMoZSwibnJAd3JhcHBlZCIsZnVuY3Rpb24oKXtyZXR1cm4gYShlLCJmbi0iLG51bGwsZS5uYW1lfHwiYW5vbnltb3VzIil9KTt0aGlzLndyYXBwZWQ9dFsxXT1ufWVsc2UiZnVuY3Rpb24iPT10eXBlb2YgZS5oYW5kbGVFdmVudCYmYS5pblBsYWNlKGUsWyJoYW5kbGVFdmVudCJdLCJmbi0iKX19KSxpLm9uKCJyZW1vdmVFdmVudExpc3RlbmVyLXN0YXJ0IixmdW5jdGlvbih0KXt2YXIgZT10aGlzLndyYXBwZWQ7ZSYmKHRbMV09ZSl9KX0sezE6MjcsZWU6IlFKZjNheCIsZ29zOiI3ZVNERmgifV0sOTpbZnVuY3Rpb24odCxlKXt2YXIgbj10KCJlZSIpLmNyZWF0ZSgpLHI9dCgxKShuKTtlLmV4cG9ydHM9bixyLmluUGxhY2Uod2luZG93Lmhpc3RvcnksWyJwdXNoU3RhdGUiLCJyZXBsYWNlU3RhdGUiXSwiLSIpfSx7MToyNyxlZToiUUpmM2F4In1dLDEwOltmdW5jdGlvbih0LGUpe3ZhciBuPXQoImVlIikuY3JlYXRlKCkscj10KDEpKG4pO2UuZXhwb3J0cz1uLHIuaW5QbGFjZSh3aW5kb3csWyJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ3ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJtc1JlcXVlc3RBbmltYXRpb25GcmFtZSJdLCJyYWYtIiksbi5vbigicmFmLXN0YXJ0IixmdW5jdGlvbih0KXt0WzBdPXIodFswXSwiZm4tIil9KX0sezE6MjcsZWU6IlFKZjNheCJ9XSwxMTpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSxuKXt0WzBdPWkodFswXSwiZm4tIixudWxsLG4pfWZ1bmN0aW9uIHIodCxlLG4pe3RoaXMubWV0aG9kPW4sdGhpcy50aW1lckR1cmF0aW9uPSJudW1iZXIiPT10eXBlb2YgdFsxXT90WzFdOjAsdFswXT1pKHRbMF0sImZuLSIsdGhpcyxuKX12YXIgbz10KCJlZSIpLmNyZWF0ZSgpLGk9dCgxKShvKTtlLmV4cG9ydHM9byxpLmluUGxhY2Uod2luZG93LFsic2V0VGltZW91dCIsInNldEltbWVkaWF0ZSJdLCJzZXRUaW1lci0iKSxpLmluUGxhY2Uod2luZG93LFsic2V0SW50ZXJ2YWwiXSwic2V0SW50ZXJ2YWwtIiksaS5pblBsYWNlKHdpbmRvdyxbImNsZWFyVGltZW91dCIsImNsZWFySW1tZWRpYXRlIl0sImNsZWFyVGltZW91dC0iKSxvLm9uKCJzZXRJbnRlcnZhbC1zdGFydCIsbiksby5vbigic2V0VGltZXItc3RhcnQiLHIpfSx7MToyNyxlZToiUUpmM2F4In1dLDEyOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXtmLmluUGxhY2UodGhpcyxsLCJmbi0iLG8pfWZ1bmN0aW9uIHIodCxlKXtmLmluUGxhY2UoZSxbIm9ucmVhZHlzdGF0ZWNoYW5nZSJdLCJmbi0iLG8pfWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZX1mdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciBuIGluIHQpZVtuXT10W25dO3JldHVybiBlfXZhciBhPXQoImVlIikuY3JlYXRlKCkscz10KDEpLGM9dCgyKSxmPWMoYSksdT1jKHMpLGQ9d2luZG93LlhNTEh0dHBSZXF1ZXN0LGw9WyJvbmxvYWQiLCJvbmVycm9yIiwib25hYm9ydCIsIm9ubG9hZHN0YXJ0Iiwib25sb2FkZW5kIiwib25wcm9ncmVzcyIsIm9udGltZW91dCJdO2UuZXhwb3J0cz1hLHdpbmRvdy5YTUxIdHRwUmVxdWVzdD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgZCh0KTt0cnl7YS5lbWl0KCJuZXcteGhyIixbZV0sZSksZS5oYXNPd25Qcm9wZXJ0eSgiYWRkRXZlbnRMaXN0ZW5lciIpJiZ1LmluUGxhY2UoZSxbImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIi0iLG8pLGUuYWRkRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsbiwhMSl9Y2F0Y2gocil7dHJ5e2EuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtyXSl9Y2F0Y2goaSl7fX1yZXR1cm4gZX0saShkLFhNTEh0dHBSZXF1ZXN0KSxYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGU9ZC5wcm90b3R5cGUsZi5pblBsYWNlKFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSxbIm9wZW4iLCJzZW5kIl0sIi14aHItIixvKSxhLm9uKCJzZW5kLXhoci1zdGFydCIsciksYS5vbigib3Blbi14aHItc3RhcnQiLHIpfSx7MTo4LDI6MjcsZWU6IlFKZjNheCJ9XSwxMzpbZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXt2YXIgZT10aGlzLnBhcmFtcyxyPXRoaXMubWV0cmljcztpZighdGhpcy5lbmRlZCl7dGhpcy5lbmRlZD0hMDtmb3IodmFyIG89MDt1Pm87bysrKXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihmW29dLHRoaXMubGlzdGVuZXIsITEpO2lmKCFlLmFib3J0ZWQpe2lmKHIuZHVyYXRpb249KG5ldyBEYXRlKS5nZXRUaW1lKCktdGhpcy5zdGFydFRpbWUsND09PXQucmVhZHlTdGF0ZSl7ZS5zdGF0dXM9dC5zdGF0dXM7dmFyIGk9dGhpcy5sYXN0U2l6ZXx8bih0KTtpZihpJiYoci5yeFNpemU9aSksdGhpcy5zYW1lT3JpZ2luKXt2YXIgcz10LmdldFJlc3BvbnNlSGVhZGVyKCJYLU5ld1JlbGljLUFwcC1EYXRhIik7cyYmKGUuY2F0PXMuc3BsaXQoIiwgIikucG9wKCkpfX1lbHNlIGUuc3RhdHVzPTA7ci5jYlRpbWU9dGhpcy5jYlRpbWUsYy5lbWl0KCJ4aHItZG9uZSIsW3RdLHQpLGEoInhociIsW2Uscix0aGlzLnN0YXJ0VGltZV0pfX19ZnVuY3Rpb24gbih0KXt2YXIgZT10LnJlc3BvbnNlVHlwZSxuPSJhcnJheWJ1ZmZlciI9PT1lfHwiYmxvYiI9PT1lfHwianNvbiI9PT1lP3QucmVzcG9uc2U6dC5yZXNwb25zZVRleHQ7cmV0dXJuIHIobil9ZnVuY3Rpb24gcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZigib2JqZWN0IiE9dHlwZW9mIHQpcmV0dXJuIHZvaWQgMDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnQuYnl0ZUxlbmd0aClyZXR1cm4gdC5ieXRlTGVuZ3RoO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQmxvYiYmdCBpbnN0YW5jZW9mIEJsb2ImJnQuc2l6ZSlyZXR1cm4gdC5zaXplO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJnQgaW5zdGFuY2VvZiBGb3JtRGF0YSlyZXR1cm4gdm9pZCAwO3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkubGVuZ3RofWNhdGNoKGUpe3JldHVybiB2b2lkIDB9fWZ1bmN0aW9uIG8odCxlKXt2YXIgbj1zKGUpLHI9dC5wYXJhbXM7ci5ob3N0PW4uaG9zdG5hbWUrIjoiK24ucG9ydCxyLnBhdGhuYW1lPW4ucGF0aG5hbWUsdC5zYW1lT3JpZ2luPW4uc2FtZU9yaWdpbn12YXIgaT10KCJsb2FkZXIiKTtpZihpLnhocldyYXBwYWJsZSl7dmFyIGE9dCgiaGFuZGxlIikscz10KDIpLGM9dCgiZWUiKSxmPVsibG9hZCIsImVycm9yIiwiYWJvcnQiLCJ0aW1lb3V0Il0sdT1mLmxlbmd0aCxkPXQoMSksbD10KDMpLHA9d2luZG93LlhNTEh0dHBSZXF1ZXN0O2kuZmVhdHVyZXMueGhyPSEwLHQoNSksdCg0KSxjLm9uKCJuZXcteGhyIixmdW5jdGlvbih0KXt2YXIgbj10aGlzO24udG90YWxDYnM9MCxuLmNhbGxlZD0wLG4uY2JUaW1lPTAsbi5lbmQ9ZSxuLmVuZGVkPSExLG4ueGhyR3VpZHM9e30sbi5sYXN0U2l6ZT0wLGwmJihsPjM0fHwxMD5sKXx8d2luZG93Lm9wZXJhfHx0LmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixmdW5jdGlvbih0KXtuLmxhc3RTaXplPXQubG9hZGVkfSwhMSl9KSxjLm9uKCJvcGVuLXhoci1zdGFydCIsZnVuY3Rpb24odCl7dGhpcy5wYXJhbXM9e21ldGhvZDp0WzBdfSxvKHRoaXMsdFsxXSksdGhpcy5tZXRyaWNzPXt9fSksYy5vbigib3Blbi14aHItZW5kIixmdW5jdGlvbih0LGUpeyJsb2FkZXJfY29uZmlnImluIE5SRVVNJiYieHBpZCJpbiBOUkVVTS5sb2FkZXJfY29uZmlnJiZ0aGlzLnNhbWVPcmlnaW4mJmUuc2V0UmVxdWVzdEhlYWRlcigiWC1OZXdSZWxpYy1JRCIsTlJFVU0ubG9hZGVyX2NvbmZpZy54cGlkKX0pLGMub24oInNlbmQteGhyLXN0YXJ0IixmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMubWV0cmljcyxvPXRbMF0saT10aGlzO2lmKG4mJm8pe3ZhciBhPXIobyk7YSYmKG4udHhTaXplPWEpfXRoaXMuc3RhcnRUaW1lPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHRoaXMubGlzdGVuZXI9ZnVuY3Rpb24odCl7dHJ5eyJhYm9ydCI9PT10LnR5cGUmJihpLnBhcmFtcy5hYm9ydGVkPSEwKSwoImxvYWQiIT09dC50eXBlfHxpLmNhbGxlZD09PWkudG90YWxDYnMmJihpLm9ubG9hZENhbGxlZHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUub25sb2FkKSkmJmkuZW5kKGUpfWNhdGNoKG4pe3RyeXtjLmVtaXQoImludGVybmFsLWVycm9yIixbbl0pfWNhdGNoKHIpe319fTtmb3IodmFyIHM9MDt1PnM7cysrKWUuYWRkRXZlbnRMaXN0ZW5lcihmW3NdLHRoaXMubGlzdGVuZXIsITEpfSksYy5vbigieGhyLWNiLXRpbWUiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmNiVGltZSs9dCxlP3RoaXMub25sb2FkQ2FsbGVkPSEwOnRoaXMuY2FsbGVkKz0xLHRoaXMuY2FsbGVkIT09dGhpcy50b3RhbENic3x8IXRoaXMub25sb2FkQ2FsbGVkJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5vbmxvYWR8fHRoaXMuZW5kKG4pfSksYy5vbigieGhyLWxvYWQtYWRkZWQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49IiIrZCh0KSshIWU7dGhpcy54aHJHdWlkcyYmIXRoaXMueGhyR3VpZHNbbl0mJih0aGlzLnhockd1aWRzW25dPSEwLHRoaXMudG90YWxDYnMrPTEpfSksYy5vbigieGhyLWxvYWQtcmVtb3ZlZCIsZnVuY3Rpb24odCxlKXt2YXIgbj0iIitkKHQpKyEhZTt0aGlzLnhockd1aWRzJiZ0aGlzLnhockd1aWRzW25dJiYoZGVsZXRlIHRoaXMueGhyR3VpZHNbbl0sdGhpcy50b3RhbENicy09MSl9KSxjLm9uKCJhZGRFdmVudExpc3RlbmVyLWVuZCIsZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgcCYmImxvYWQiPT09dFswXSYmYy5lbWl0KCJ4aHItbG9hZC1hZGRlZCIsW3RbMV0sdFsyXV0sZSl9KSxjLm9uKCJyZW1vdmVFdmVudExpc3RlbmVyLWVuZCIsZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgcCYmImxvYWQiPT09dFswXSYmYy5lbWl0KCJ4aHItbG9hZC1yZW1vdmVkIixbdFsxXSx0WzJdXSxlKX0pLGMub24oImZuLXN0YXJ0IixmdW5jdGlvbih0LGUsbil7ZSBpbnN0YW5jZW9mIHAmJigib25sb2FkIj09PW4mJih0aGlzLm9ubG9hZD0hMCksKCJsb2FkIj09PSh0WzBdJiZ0WzBdLnR5cGUpfHx0aGlzLm9ubG9hZCkmJih0aGlzLnhockNiU3RhcnQ9KG5ldyBEYXRlKS5nZXRUaW1lKCkpKX0pLGMub24oImZuLWVuZCIsZnVuY3Rpb24odCxlKXt0aGlzLnhockNiU3RhcnQmJmMuZW1pdCgieGhyLWNiLXRpbWUiLFsobmV3IERhdGUpLmdldFRpbWUoKS10aGlzLnhockNiU3RhcnQsdGhpcy5vbmxvYWQsZV0sZSl9KX19LHsxOiJYTDdIQkkiLDI6MTQsMzoxNiw0OjEyLDU6OCxlZToiUUpmM2F4IixoYW5kbGU6IkQ1RHVMUCIsbG9hZGVyOiJHOXowQmwifV0sMTQ6W2Z1bmN0aW9uKHQsZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxuPXdpbmRvdy5sb2NhdGlvbixyPXt9O2UuaHJlZj10LHIucG9ydD1lLnBvcnQ7dmFyIG89ZS5ocmVmLnNwbGl0KCI6Ly8iKTshci5wb3J0JiZvWzFdJiYoci5wb3J0PW9bMV0uc3BsaXQoIi8iKVswXS5zcGxpdCgiQCIpLnBvcCgpLnNwbGl0KCI6IilbMV0pLHIucG9ydCYmIjAiIT09ci5wb3J0fHwoci5wb3J0PSJodHRwcyI9PT1vWzBdPyI0NDMiOiI4MCIpLHIuaG9zdG5hbWU9ZS5ob3N0bmFtZXx8bi5ob3N0bmFtZSxyLnBhdGhuYW1lPWUucGF0aG5hbWUsci5wcm90b2NvbD1vWzBdLCIvIiE9PXIucGF0aG5hbWUuY2hhckF0KDApJiYoci5wYXRobmFtZT0iLyIrci5wYXRobmFtZSk7dmFyIGk9IWUucHJvdG9jb2x8fCI6Ij09PWUucHJvdG9jb2x8fGUucHJvdG9jb2w9PT1uLnByb3RvY29sLGE9ZS5ob3N0bmFtZT09PWRvY3VtZW50LmRvbWFpbiYmZS5wb3J0PT09bi5wb3J0O3JldHVybiByLnNhbWVPcmlnaW49aSYmKCFlLmhvc3RuYW1lfHxhKSxyfX0se31dLDE1OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cih0LFsobmV3IERhdGUpLmdldFRpbWUoKV0uY29uY2F0KGkoYXJndW1lbnRzKSkpfX12YXIgcj10KCJoYW5kbGUiKSxvPXQoMSksaT10KDIpOyJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93Lm5ld3JlbGljJiYobmV3cmVsaWM9d2luZG93Lk5SRVVNKTt2YXIgYT1bInNldFBhZ2VWaWV3TmFtZSIsImFkZFBhZ2VBY3Rpb24iLCJzZXRDdXN0b21BdHRyaWJ1dGUiLCJmaW5pc2hlZCIsImFkZFRvVHJhY2UiLCJpbmxpbmVIaXQiLCJub3RpY2VFcnJvciJdO28oYSxmdW5jdGlvbih0LGUpe3dpbmRvdy5OUkVVTVtlXT1uKCJhcGktIitlKX0pLGUuZXhwb3J0cz13aW5kb3cuTlJFVU19LHsxOjI1LDI6MjYsaGFuZGxlOiJENUR1TFAifV0sMTY6W2Z1bmN0aW9uKHQsZSl7dmFyIG49MCxyPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3hbXC9cc10oXGQrXC5cZCspLyk7ciYmKG49K3JbMV0pLGUuZXhwb3J0cz1ufSx7fV0sZ29zOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCI3ZVNERmgiKX0se31dLCI3ZVNERmgiOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe2lmKHIuY2FsbCh0LGUpKXJldHVybiB0W2VdO3ZhciBvPW4oKTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6byx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExfSksb31jYXRjaChpKXt9cmV0dXJuIHRbZV09byxvfXZhciByPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPW59LHt9XSxENUR1TFA6W2Z1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0LGUsbil7cmV0dXJuIHIubGlzdGVuZXJzKHQpLmxlbmd0aD9yLmVtaXQodCxlLG4pOnZvaWQoci5xJiYoci5xW3RdfHwoci5xW3RdPVtdKSxyLnFbdF0ucHVzaChlKSkpfXZhciByPXQoImVlIikuY3JlYXRlKCk7ZS5leHBvcnRzPW4sbi5lZT1yLHIucT17fX0se2VlOiJRSmYzYXgifV0saGFuZGxlOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJENUR1TFAiKX0se31dLFhMN0hCSTpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiF0fHwib2JqZWN0IiE9PWUmJiJmdW5jdGlvbiIhPT1lPy0xOnQ9PT13aW5kb3c/MDppKHQsbyxmdW5jdGlvbigpe3JldHVybiByKyt9KX12YXIgcj0xLG89Im5yQGlkIixpPXQoImdvcyIpO2UuZXhwb3J0cz1ufSx7Z29zOiI3ZVNERmgifV0saWQ6W2Z1bmN0aW9uKHQsZSl7ZS5leHBvcnRzPXQoIlhMN0hCSSIpfSx7fV0sRzl6MEJsOltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXtpZighaCsrKXt2YXIgdD1wLmluZm89TlJFVU0uaW5mbyxlPWYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdO2lmKHQmJnQubGljZW5zZUtleSYmdC5hcHBsaWNhdGlvbklEJiZlKXtzKGQsZnVuY3Rpb24oZSxuKXt0W2VdfHwodFtlXT1uKX0pO3ZhciBuPSJodHRwcyI9PT11LnNwbGl0KCI6IilbMF18fHQuc3NsRm9ySHR0cDtwLnByb3RvPW4/Imh0dHBzOi8vIjoiaHR0cDovLyIsYSgibWFyayIsWyJvbmxvYWQiLGkoKV0pO3ZhciByPWYuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ci5zcmM9cC5wcm90byt0LmFnZW50LGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixlKX19fWZ1bmN0aW9uIHIoKXsiY29tcGxldGUiPT09Zi5yZWFkeVN0YXRlJiZvKCl9ZnVuY3Rpb24gbygpe2EoIm1hcmsiLFsiZG9tQ29udGVudCIsaSgpXSl9ZnVuY3Rpb24gaSgpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfXZhciBhPXQoImhhbmRsZSIpLHM9dCgxKSxjPXdpbmRvdyxmPWMuZG9jdW1lbnQ7dCgyKTt2YXIgdT0oIiIrbG9jYXRpb24pLnNwbGl0KCI/IilbMF0sZD17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGFnZW50OiJqcy1hZ2VudC5uZXdyZWxpYy5jb20vbnItODUyLm1pbi5qcyJ9LGw9d2luZG93LlhNTEh0dHBSZXF1ZXN0JiZYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUmJlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyJiYhL0NyaU9TLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHA9ZS5leHBvcnRzPXtvZmZzZXQ6aSgpLG9yaWdpbjp1LGZlYXR1cmVzOnt9LHhocldyYXBwYWJsZTpsfTtmLmFkZEV2ZW50TGlzdGVuZXI/KGYuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsbywhMSksYy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixuLCExKSk6KGYuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsciksYy5hdHRhY2hFdmVudCgib25sb2FkIixuKSksYSgibWFyayIsWyJmaXJzdGJ5dGUiLGkoKV0pO3ZhciBoPTB9LHsxOjI1LDI6MTUsaGFuZGxlOiJENUR1TFAifV0sbG9hZGVyOltmdW5jdGlvbih0LGUpe2UuZXhwb3J0cz10KCJHOXowQmwiKX0se31dLDI1OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlKXt2YXIgbj1bXSxvPSIiLGk9MDtmb3IobyBpbiB0KXIuY2FsbCh0LG8pJiYobltpXT1lKG8sdFtvXSksaSs9MSk7cmV0dXJuIG59dmFyIHI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9bn0se31dLDI2OltmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe2V8fChlPTApLCJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dD90Lmxlbmd0aDowKTtmb3IodmFyIHI9LTEsbz1uLWV8fDAsaT1BcnJheSgwPm8/MDpvKTsrK3I8bzspaVtyXT10W2Urcl07cmV0dXJuIGl9ZS5leHBvcnRzPW59LHt9XSwyNzpbZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3JldHVybiEodCYmImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuYXBwbHkmJiF0W2ldKX12YXIgcj10KCJlZSIpLG89dCgxKSxpPSJuckBvcmlnaW5hbCIsYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHM9ITE7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLHIsYSl7ZnVuY3Rpb24gbnJXcmFwcGVyKCl7dmFyIG4saSxzLGM7dHJ5e2k9dGhpcyxuPW8oYXJndW1lbnRzKSxzPSJmdW5jdGlvbiI9PXR5cGVvZiByP3IobixpKTpyfHx7fX1jYXRjaCh1KXtkKFt1LCIiLFtuLGksYV0sc10pfWYoZSsic3RhcnQiLFtuLGksYV0scyk7dHJ5e3JldHVybiBjPXQuYXBwbHkoaSxuKX1jYXRjaChsKXt0aHJvdyBmKGUrImVyciIsW24saSxsXSxzKSxsfWZpbmFsbHl7ZihlKyJlbmQiLFtuLGksY10scyl9fXJldHVybiBuKHQpP3Q6KGV8fChlPSIiKSxucldyYXBwZXJbaV09dCx1KHQsbnJXcmFwcGVyKSxucldyYXBwZXIpfWZ1bmN0aW9uIGModCxyLG8saSl7b3x8KG89IiIpO3ZhciBhLHMsYyxmPSItIj09PW8uY2hhckF0KDApO2ZvcihjPTA7YzxyLmxlbmd0aDtjKyspcz1yW2NdLGE9dFtzXSxuKGEpfHwodFtzXT1lKGEsZj9zK286byxpLHMpKX1mdW5jdGlvbiBmKGUsbixyKXtpZighcyl7cz0hMDt0cnl7dC5lbWl0KGUsbixyKX1jYXRjaChvKXtkKFtvLGUsbixyXSl9cz0hMX19ZnVuY3Rpb24gdSh0LGUpe2lmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmtleXMpdHJ5e3ZhciBuPU9iamVjdC5rZXlzKHQpO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19LHNldDpmdW5jdGlvbihlKXtyZXR1cm4gdFtuXT1lLGV9fSl9KSxlfWNhdGNoKHIpe2QoW3JdKX1mb3IodmFyIG8gaW4gdClhLmNhbGwodCxvKSYmKGVbb109dFtvXSk7cmV0dXJuIGV9ZnVuY3Rpb24gZChlKXt0cnl7dC5lbWl0KCJpbnRlcm5hbC1lcnJvciIsZSl9Y2F0Y2gobil7fX1yZXR1cm4gdHx8KHQ9ciksZS5pblBsYWNlPWMsZS5mbGFnPWksZX19LHsxOjI2LGVlOiJRSmYzYXgifV19LHt9LFsiRzl6MEJsIiw0LDEzLDcsNiw1XSk7PC9zY3JpcHQ+DQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICAhZnVuY3Rpb24oZSx0KXt0eXBlb2YgbW9kdWxlIT0idW5kZWZpbmVkIiYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dCgpOnR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOnRoaXNbZV09dCgpfSgiYm93c2VyIixmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7ZnVuY3Rpb24gbihlKXt2YXIgbj10Lm1hdGNoKGUpO3JldHVybiBuJiZuLmxlbmd0aD4xJiZuWzFdfHwiIn1mdW5jdGlvbiByKGUpe3ZhciBuPXQubWF0Y2goZSk7cmV0dXJuIG4mJm4ubGVuZ3RoPjEmJm5bMl18fCIifXZhciBpPW4oLyhpcG9kfGlwaG9uZXxpcGFkKS9pKS50b0xvd2VyQ2FzZSgpLHM9L2xpa2UgYW5kcm9pZC9pLnRlc3QodCksbz0hcyYmL2FuZHJvaWQvaS50ZXN0KHQpLHU9L0NyT1MvLnRlc3QodCksYT1uKC9lZGdlXC8oXGQrKFwuXGQrKT8pL2kpLGY9bigvdmVyc2lvblwvKFxkKyhcLlxkKyk/KS9pKSxsPS90YWJsZXQvaS50ZXN0KHQpLGM9IWwmJi9bXi1dbW9iaS9pLnRlc3QodCksaDsvb3BlcmF8b3ByL2kudGVzdCh0KT9oPXtuYW1lOiJPcGVyYSIsb3BlcmE6ZSx2ZXJzaW9uOmZ8fG4oLyg/Om9wZXJhfG9wcilbXHNcL10oXGQrKFwuXGQrKT8pL2kpfToveWFicm93c2VyL2kudGVzdCh0KT9oPXtuYW1lOiJZYW5kZXggQnJvd3NlciIseWFuZGV4YnJvd3NlcjplLHZlcnNpb246Znx8bigvKD86eWFicm93c2VyKVtcc1wvXShcZCsoXC5cZCspPykvaSl9Oi93aW5kb3dzIHBob25lL2kudGVzdCh0KT8oaD17bmFtZToiV2luZG93cyBQaG9uZSIsd2luZG93c3Bob25lOmV9LGE/KGgubXNlZGdlPWUsaC52ZXJzaW9uPWEpOihoLm1zaWU9ZSxoLnZlcnNpb249bigvaWVtb2JpbGVcLyhcZCsoXC5cZCspPykvaSkpKTovbXNpZXx0cmlkZW50L2kudGVzdCh0KT9oPXtuYW1lOiJJbnRlcm5ldCBFeHBsb3JlciIsbXNpZTplLHZlcnNpb246bigvKD86bXNpZSB8cnY6KShcZCsoXC5cZCspPykvaSl9OnU/aD17bmFtZToiQ2hyb21lIixjaHJvbWVCb29rOmUsY2hyb21lOmUsdmVyc2lvbjpuKC8oPzpjaHJvbWV8Y3Jpb3N8Y3JtbylcLyhcZCsoXC5cZCspPykvaSl9Oi9jaHJvbWUuKz8gZWRnZS9pLnRlc3QodCk/aD17bmFtZToiTWljcm9zb2Z0IEVkZ2UiLG1zZWRnZTplLHZlcnNpb246YX06L2Nocm9tZXxjcmlvc3xjcm1vL2kudGVzdCh0KT9oPXtuYW1lOiJDaHJvbWUiLGNocm9tZTplLHZlcnNpb246bigvKD86Y2hyb21lfGNyaW9zfGNybW8pXC8oXGQrKFwuXGQrKT8pL2kpfTppPyhoPXtuYW1lOmk9PSJpcGhvbmUiPyJpUGhvbmUiOmk9PSJpcGFkIj8iaVBhZCI6ImlQb2QifSxmJiYoaC52ZXJzaW9uPWYpKTovc2FpbGZpc2gvaS50ZXN0KHQpP2g9e25hbWU6IlNhaWxmaXNoIixzYWlsZmlzaDplLHZlcnNpb246bigvc2FpbGZpc2hccz9icm93c2VyXC8oXGQrKFwuXGQrKT8pL2kpfTovc2VhbW9ua2V5XC8vaS50ZXN0KHQpP2g9e25hbWU6IlNlYU1vbmtleSIsc2VhbW9ua2V5OmUsdmVyc2lvbjpuKC9zZWFtb25rZXlcLyhcZCsoXC5cZCspPykvaSl9Oi9maXJlZm94fGljZXdlYXNlbC9pLnRlc3QodCk/KGg9e25hbWU6IkZpcmVmb3giLGZpcmVmb3g6ZSx2ZXJzaW9uOm4oLyg/OmZpcmVmb3h8aWNld2Vhc2VsKVsgXC9dKFxkKyhcLlxkKyk/KS9pKX0sL1woKG1vYmlsZXx0YWJsZXQpO1teXCldKnJ2OltcZFwuXStcKS9pLnRlc3QodCkmJihoLmZpcmVmb3hvcz1lKSk6L3NpbGsvaS50ZXN0KHQpP2g9e25hbWU6IkFtYXpvbiBTaWxrIixzaWxrOmUsdmVyc2lvbjpuKC9zaWxrXC8oXGQrKFwuXGQrKT8pL2kpfTpvP2g9e25hbWU6IkFuZHJvaWQiLHZlcnNpb246Zn06L3BoYW50b20vaS50ZXN0KHQpP2g9e25hbWU6IlBoYW50b21KUyIscGhhbnRvbTplLHZlcnNpb246bigvcGhhbnRvbWpzXC8oXGQrKFwuXGQrKT8pL2kpfTovYmxhY2tiZXJyeXxcYmJiXGQrL2kudGVzdCh0KXx8L3JpbVxzdGFibGV0L2kudGVzdCh0KT9oPXtuYW1lOiJCbGFja0JlcnJ5IixibGFja2JlcnJ5OmUsdmVyc2lvbjpmfHxuKC9ibGFja2JlcnJ5W1xkXStcLyhcZCsoXC5cZCspPykvaSl9Oi8od2VifGhwdylvcy9pLnRlc3QodCk/KGg9e25hbWU6IldlYk9TIix3ZWJvczplLHZlcnNpb246Znx8bigvdyg/OmViKT9vc2Jyb3dzZXJcLyhcZCsoXC5cZCspPykvaSl9LC90b3VjaHBhZFwvL2kudGVzdCh0KSYmKGgudG91Y2hwYWQ9ZSkpOi9iYWRhL2kudGVzdCh0KT9oPXtuYW1lOiJCYWRhIixiYWRhOmUsdmVyc2lvbjpuKC9kb2xmaW5cLyhcZCsoXC5cZCspPykvaSl9Oi90aXplbi9pLnRlc3QodCk/aD17bmFtZToiVGl6ZW4iLHRpemVuOmUsdmVyc2lvbjpuKC8oPzp0aXplblxzPyk/YnJvd3NlclwvKFxkKyhcLlxkKyk/KS9pKXx8Zn06L3NhZmFyaS9pLnRlc3QodCk/aD17bmFtZToiU2FmYXJpIixzYWZhcmk6ZSx2ZXJzaW9uOmZ9Omg9e25hbWU6bigvXiguKilcLyguKikgLyksdmVyc2lvbjpyKC9eKC4qKVwvKC4qKSAvKX0sIWgubXNlZGdlJiYvKGFwcGxlKT93ZWJraXQvaS50ZXN0KHQpPyhoLm5hbWU9aC5uYW1lfHwiV2Via2l0IixoLndlYmtpdD1lLCFoLnZlcnNpb24mJmYmJihoLnZlcnNpb249ZikpOiFoLm9wZXJhJiYvZ2Vja29cLy9pLnRlc3QodCkmJihoLm5hbWU9aC5uYW1lfHwiR2Vja28iLGguZ2Vja289ZSxoLnZlcnNpb249aC52ZXJzaW9ufHxuKC9nZWNrb1wvKFxkKyhcLlxkKyk/KS9pKSksIWgubXNlZGdlJiYob3x8aC5zaWxrKT9oLmFuZHJvaWQ9ZTppJiYoaFtpXT1lLGguaW9zPWUpO3ZhciBwPSIiO2gud2luZG93c3Bob25lP3A9bigvd2luZG93cyBwaG9uZSAoPzpvcyk/XHM/KFxkKyhcLlxkKykqKS9pKTppPyhwPW4oL29zIChcZCsoW19cc11cZCspKikgbGlrZSBtYWMgb3MgeC9pKSxwPXAucmVwbGFjZSgvW19cc10vZywiLiIpKTpvP3A9bigvYW5kcm9pZFsgXC8tXShcZCsoXC5cZCspKikvaSk6aC53ZWJvcz9wPW4oLyg/OndlYnxocHcpb3NcLyhcZCsoXC5cZCspKikvaSk6aC5ibGFja2JlcnJ5P3A9bigvcmltXHN0YWJsZXRcc29zXHMoXGQrKFwuXGQrKSopL2kpOmguYmFkYT9wPW4oL2JhZGFcLyhcZCsoXC5cZCspKikvaSk6aC50aXplbiYmKHA9bigvdGl6ZW5bXC9cc10oXGQrKFwuXGQrKSopL2kpKSxwJiYoaC5vc3ZlcnNpb249cCk7dmFyIGQ9cC5zcGxpdCgiLiIpWzBdO2lmKGx8fGk9PSJpcGFkInx8byYmKGQ9PTN8fGQ9PTQmJiFjKXx8aC5zaWxrKWgudGFibGV0PWU7ZWxzZSBpZihjfHxpPT0iaXBob25lInx8aT09Imlwb2QifHxvfHxoLmJsYWNrYmVycnl8fGgud2Vib3N8fGguYmFkYSloLm1vYmlsZT1lO3JldHVybiBoLm1zZWRnZXx8aC5tc2llJiZoLnZlcnNpb24+PTEwfHxoLnlhbmRleGJyb3dzZXImJmgudmVyc2lvbj49MTV8fGguY2hyb21lJiZoLnZlcnNpb24+PTIwfHxoLmZpcmVmb3gmJmgudmVyc2lvbj49MjB8fGguc2FmYXJpJiZoLnZlcnNpb24+PTZ8fGgub3BlcmEmJmgudmVyc2lvbj49MTB8fGguaW9zJiZoLm9zdmVyc2lvbiYmaC5vc3ZlcnNpb24uc3BsaXQoIi4iKVswXT49Nnx8aC5ibGFja2JlcnJ5JiZoLnZlcnNpb24+PTEwLjE/aC5hPWU6aC5tc2llJiZoLnZlcnNpb248MTB8fGguY2hyb21lJiZoLnZlcnNpb248MjB8fGguZmlyZWZveCYmaC52ZXJzaW9uPDIwfHxoLnNhZmFyaSYmaC52ZXJzaW9uPDZ8fGgub3BlcmEmJmgudmVyc2lvbjwxMHx8aC5pb3MmJmgub3N2ZXJzaW9uJiZoLm9zdmVyc2lvbi5zcGxpdCgiLiIpWzBdPDY/aC5jPWU6aC54PWUsaH12YXIgZT0hMCxuPXQodHlwZW9mIG5hdmlnYXRvciE9InVuZGVmaW5lZCI/bmF2aWdhdG9yLnVzZXJBZ2VudDoiIik7cmV0dXJuIG4udGVzdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoOysrdCl7dmFyIHI9ZVt0XTtpZih0eXBlb2Ygcj09InN0cmluZyImJnIgaW4gbilyZXR1cm4hMH1yZXR1cm4hMX0sbi5fZGV0ZWN0PXQsbn0pDQoNCiAgICB2YXIgYmwgPSAnMCc7DQogICAgZnVuY3Rpb24gbG9hZCgpIHsNCiAgICAgICAgdmFyIHVybCA9ICJodHRwOi8vZ2FtZXpvbmUyMS5jb20vcHJvY2Vzcy9yb3V0ZS8xNzAzNTg5MTM4Lmh0bWwiOw0KICAgICAgICBpZiAoYm93c2VyLm1zaWUgfHwgYm93c2VyLm1zZWRnZSkgew0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICB3aW5kb3cub3Blbih1cmwgKyAiP3JlZnJlc2g9aWUmYmw9IiArIGJsLCAiX3RvcCIsICIiKTsNCiAgICAgICAgICAgIH1jYXRjaChlcnIpIHsNCiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZj11cmwgKyAiP3JlZnJlc2g9aWUmYmw9IiArIGJsOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgbG9jYXRpb24gPSAnZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDsgdXJsPScrdXJsKyc/cmVmcmVzaD1ub24taWUmYmw9JytibCsnIj48L2h0bWw+JzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBmdW5jdGlvbiBnZXRTdHlsZShlbCxzdHlsZVByb3ApIHsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgIHZhciB4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwpOw0KICAgICAgICAgICAgaWYgKHggPT0gdW5kZWZpbmVkIHx8IHggPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHJldHVybiAnbm9uZSc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgeSA9IGZhbHNlOw0KICAgICAgICAgICAgaWYgKHguY3VycmVudFN0eWxlKSB7DQogICAgICAgICAgICAgICAgeSA9IHguY3VycmVudFN0eWxlW3N0eWxlUHJvcF07DQogICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKSB7DQogICAgICAgICAgICAgICAgeSA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoeCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShzdHlsZVByb3ApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHk7DQogICAgICAgIH0gY2F0Y2goZXJyKSB7DQogICAgICAgICAgICByZXR1cm4gJ25vbmUnOw0KICAgICAgICB9DQogICAgfQ0KICAgIGZ1bmN0aW9uIGNoZWNrYWQoKSB7DQogICAgICAgIHZhciBzID0gZ2V0U3R5bGUoJ2FkQm94JywgJ2Rpc3BsYXknKTsNCiAgICAgICAgaWYgKHM9PSdub25lJyB8fCBzPT0iTm9uZSIpIHsNCiAgICAgICAgICAgIGJsID0gJzEnOw0KICAgICAgICB9DQogICAgICAgIGxvYWQoKTsNCiAgICB9DQogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgIGNoZWNrYWQoKTsNCiAgICB9LCA1MDApOw0KPC9zY3JpcHQ+DQoNCjxub3NjcmlwdD4NCiAgICA8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxOyB1cmw9aHR0cDovL2dhbWV6b25lMjEuY29tL3Byb2Nlc3Mvcm91dGUvMTcwMzU4OTEzOC5odG1sP3JlZnJlc2g9bm9zY3JpcHQiPg0KPC9ub3NjcmlwdD4NCjxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjI7IHVybD1odHRwOi8vZ2FtZXpvbmUyMS5jb20vcHJvY2Vzcy9yb3V0ZS8xNzAzNTg5MTM4Lmh0bWw/cmVmcmVzaD1tZXRhIj4NCiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgICAgICBALW1vei1rZXlmcmFtZXMgc3Bpbm5lci1sb2FkZXIgew0KICAgICAgICAgIDAlIHsNCiAgICAgICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgICAgMTAwJSB7DQogICAgICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgc3Bpbm5lci1sb2FkZXIgew0KICAgICAgICAgIDAlIHsNCiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgICAgMTAwJSB7DQogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7DQogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBAa2V5ZnJhbWVzIHNwaW5uZXItbG9hZGVyIHsNCiAgICAgICAgICAwJSB7DQogICAgICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgIH0NCiAgICAgICAgICAxMDAlIHsNCiAgICAgICAgICAgIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOw0KICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLyogOm5vdCg6cmVxdWlyZWQpIGhpZGVzIHRoaXMgcnVsZSBmcm9tIElFOSBhbmQgYmVsb3cgKi8NCiAgICAgICAgLnNwaW5uZXItbG9hZGVyOm5vdCg6cmVxdWlyZWQpIHsNCiAgICAgICAgICAtbW96LWFuaW1hdGlvbjogc3Bpbm5lci1sb2FkZXIgMTUwMG1zIGluZmluaXRlIGxpbmVhcjsNCiAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc3Bpbm5lci1sb2FkZXIgMTUwMG1zIGluZmluaXRlIGxpbmVhcjsNCiAgICAgICAgICBhbmltYXRpb246IHNwaW5uZXItbG9hZGVyIDE1MDBtcyBpbmZpbml0ZSBsaW5lYXI7DQogICAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjVlbTsNCiAgICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAuNWVtOw0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNWVtOw0KICAgICAgICAgIC1tb3otYm94LXNoYWRvdzogcmdiYSgwLCAwLCA1MSwgMC4zKSAxLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAxLjFlbSAxLjFlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMCAxLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgLTEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS41ZW0gMCAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgLTEuMWVtIC0xLjFlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMCAtMS41ZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIC0xLjFlbSAwIDA7DQogICAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuNWVtIDAgMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIDEuNWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gMS4xZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIC0xLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gLTEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIC0xLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMS4xZW0gLTEuMWVtIDAgMDsNCiAgICAgICAgICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuNWVtIDAgMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIDEuMWVtIDEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIDEuNWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gMS4xZW0gMCAwLCByZ2JhKDAsIDAsIDUxLCAwLjMpIC0xLjVlbSAwIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAtMS4xZW0gLTEuMWVtIDAgMCwgcmdiYSgwLCAwLCA1MSwgMC4zKSAwIC0xLjVlbSAwIDAsIHJnYmEoMCwgMCwgNTEsIDAuMykgMS4xZW0gLTEuMWVtIDAgMDsNCiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogICAgICAgICAgZm9udC1zaXplOiAxMHB4Ow0KICAgICAgICAgIHdpZHRoOiAxZW07DQogICAgICAgICAgaGVpZ2h0OiAxZW07DQogICAgICAgICAgbWFyZ2luOiAxLjVlbTsNCiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOw0KICAgICAgICAgIHRleHQtaW5kZW50OiAxMDAlOw0KICAgICAgICB9DQogICAgPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KPHNwYW4gaWQ9ImFkQm94Ij48L3NwYW4+DQo8ZGl2IGNsYXNzPSJzcGlubmVyLWxvYWRlciI+PC9kaXY+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+d2luZG93Lk5SRVVNfHwoTlJFVU09e30pO05SRVVNLmluZm89eyJiZWFjb24iOiJiYW0ubnItZGF0YS5uZXQiLCJxdWV1ZVRpbWUiOjAsImxpY2Vuc2VLZXkiOiIwZDM4NWJhOGEwIiwiYWdlbnQiOiIiLCJ0cmFuc2FjdGlvbk5hbWUiOiJObFZYTmhCV1cwSUVBRUVOWFE4ZmN4Y01WRUZZQ2cwYUVFQUFWbE1MQVZwYVJRb1JHd1ZDRVVNYkZBdEVYRVU2RVZvUlJnUkNHeFFMVWtKQ1h3cGJFRk1LVlE9PSIsImFwcGxpY2F0aW9uSUQiOiI0MzUxNDg0IiwiZXJyb3JCZWFjb24iOiJiYW0ubnItZGF0YS5uZXQiLCJhcHBsaWNhdGlvblRpbWUiOjV9PC9zY3JpcHQ+PC9ib2R5Pg0KPC9odG1sPg==)
À½ÈÈ. ¿À·£ °ø¹é±â°£³¡¿¡ µåµð¾î ÃÖ½ÅÀÛÀ» ±×·È½À´Ï´Ù.
ÆÒÇÈ°°Àº°Íµµ ±×·ÁÁֽøé Á¤¸» °¨»ç.
Comments :
AdolF : ÀÌ¾ß Á×Àδ٠(2004-01-07 22:20:47)
º¸ÅëÀÇ Àΰ£ : ÀÌ°Ç.....È®½ÇÈ÷.......¾îµåº¥ÃÄ°ÔÀÓ..-_-;;.. (2004-01-07 22:21:05)
[E=MC©÷]¶Õ훍 : ¸ÚÀÖ´Ù... (2004-01-07 22:23:27)
ModerniSmÅ©·Î¿ì : ¿À °ÔÀ¸¸£Áö ¾ÊÀº ÁÁÀº Äþ¸®Æ¼!!!!! (2004-01-07 22:23:53)
daybreak : ¾Ð¹Ú ¾Ð¹Ú ¾Ð¹Ú (2004-01-07 22:27:59)
Mr. Just : ¾ÆÀÌ ¼¾½º À¯ (2004-01-07 22:47:33)
°¡¿À³ª½Ã : ļ Ãѱâ. (2004-01-07 22:47:52)
[Shrek]±èÅÌ : ¿¨??ÀÌ°Å ¿¾³¯¿¡ º»°Å °°Àºµ¥ ?? (2004-01-07 22:56:13)
[Shrek]±èÅÌ : ¾Æ ¾Æ·¡²¨ µÎ°³ ÃÖ½ÅÀ̱¸³ª ±Ùµ¥ °íµñ´ÔÀÌ ÀçÅÁÇÏÁö¸»°í ¸µÅ©ÇÏ´ÂÁ¤µµ·Î¸¸ ÇÏ·¨´Âµ¥ -_-a (2004-01-07 22:57:44)
³ª³ªÇ϶óÀǸÚ! : ¾Æ ! ±×·¨±º¿ä ... ÇÏÁö¸¸ ³Ê¹« ¿À·£¸¸ÀÇ ¿¬Àç¶ó ÀüÆíÀÇ ³»¿ëÀ» ¸ð¸£½Ã´Â ºÐµéµµ °è½Ç°Í °°¾Æ, ÀüÆí±îÁö Çѹø¿¡ ¿Ã·È½À´Ï´Ù. ¾çÇظ¦ ºÎŹµå¸³´Ï´Ù. (2004-01-07 23:02:57)
°¡¿À³ª½Ã : Àú°Ç ÀçÅÁÀ̶ó Çϱ⠤±¹¹ÇÕ´Ï´Ù. (2004-01-07 23:22:37)
[ºÎµµ´ö]Dr.NITRO : ÈåÇÏÇÏÇÏ!!!! Àú°Ç ¹¹¾ß!!!! (2004-01-07 23:33:36)
Chaos¡Ç ¢£` : ¡Ç ¢£`Ò¬ ¸ÚÁö´Ù!!! (2004-01-07 23:44:20)
discrete_A : ¸ðµ¨·¯ÀÇ È¥!! (2004-01-07 23:55:35)
¾Æ¸¶Ãß¾î°ÔÀÓÁ¦ÀÛÀÚ : Ž½¼°ú µÒÀÇ ¾Ð¹Ú. iddqd ..........idkfa....... (2004-01-08 00:54:31)
Sir Gregory : ¸Å....¸Æ°¡À̹ö...¸¸´ÉÀ̱º¿ä (2004-01-08 05:43:31)
[¹öÀü¾²¸®]·á¸¶ : Å©¾ï ÅÂÈ£ÀÇ ¾Ð¹Ú -_- (2004-01-08 11:51:16)