eval(atob('ICAgIGxldCBlZGl0b3IyID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dEFyZWEiKSwgew0KICAgICAgICBtb2RlOiAidGV4dC9odG1sIiwNCiAgICAgICAgdGhlbWU6ICJkcmFjdWxhIiwNCiAgICAgICAgbGluZU51bWJlcnM6IHRydWUsDQogICAgICAgIGxpbmVXcmFwcGluZzogdHJ1ZSwNCiAgICAgICAgcmVhZE9ubHk6IHRydWUNCiAgICB9KTsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY291bnRlckZvcm0nKS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBmdW5jdGlvbihlKSB7DQogICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgIHZhciBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSh0aGlzKTsNCg0KICAgIC8vZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvYWRlcicpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOw0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRBcmVhJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3V0cHV0QXJlYScpLnZhbHVlID0gJyc7ICAvLyBDbGVhciBwcmV2aW91cw0KDQogICAgZmV0Y2goJ2dlbmVyYXRlLXZpc2l0b3ItY291bnRlcicsIHsgDQogICAgICAgIG1ldGhvZDogJ1BPU1QnLA0KICAgICAgICBib2R5OiBmb3JtRGF0YQ0KICAgIH0pDQogICAgLnRoZW4ocmVzID0+IHJlcy5qc29uKCkpDQogICAgLnRoZW4oZGF0YSA9PiB7DQogICAgICAgIGNvbnN0IGRlbGF5ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMCkgKyAyMDAwOw0KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0QXJlYScpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOw0KICAgICAgICBlZGl0b3IyLnNldFZhbHVlKCJMb2FkaW5nLi4uLiIpOw0KICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsNCiAgICAgICAgICAgIC8vZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvYWRlcicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0QXJlYScpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOw0KICAgICAgICAgICAgLy9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3V0cHV0QXJlYScpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOw0KICAgICAgICAgICAgLy9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3V0cHV0QXJlYScpLnZhbHVlID0gZGF0YTsgIC8vIENvcnJlY3QgdXNhZ2UNCiAgICAgICAgICAgIGxldCBmb3JtYXR0ZWRDb2RlID0gaHRtbF9iZWF1dGlmeShkYXRhLmNvZGUsIHsNCiAgICAgICAgICAgICAgICBpbmRlbnRfc2l6ZTogNCwNCiAgICAgICAgICAgICAgICB3cmFwX2xpbmVfbGVuZ3RoOiAwLA0KICAgICAgICAgICAgICAgIHByZXNlcnZlX25ld2xpbmVzOiB0cnVlDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGVkaXRvcjIuc2V0VmFsdWUoZm9ybWF0dGVkQ29kZSk7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGl2ZVByZXZpZXcnKS5pbm5lckhUTUwgPSBgPGltZyBzcmM9IiR7ZGF0YS5wcmV2aWV3fSIgc3R5bGU9ImhlaWdodDoyMHB4OyIgLz5gOw0KICAgICAgICB9LCBkZWxheSk7DQogICAgfSkNCiAgICAuY2F0Y2goZXJyID0+IHsNCiAgICAgICAgU3dhbC5maXJlKHsNCiAgICAgICAgICAgIGljb246ICJlcnJvciIsDQogICAgICAgICAgICB0aXRsZTogIkVycm9yIiwNCiAgICAgICAgICAgIHRleHQ6ICJFcnJvciBnZW5lcmF0aW5nIGNvdW50ZXIuIiwNCiAgICAgICAgICAgIHNob3dDb25maXJtQnV0dG9uOiBmYWxzZSwNCiAgICAgICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZQ0KICAgICAgICB9KTsNCiAgICB9KTsNCn0pOw0KDQoNCg0KICAgIGZ1bmN0aW9uIGNvcHlFbWJlZENvZGUoKSB7DQogICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dEFyZWEiKTsNCiAgICAgICAgY29kZS5zZWxlY3QoKTsNCiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKTsNCiAgICAgICAgY29kZS5zZXRTZWxlY3Rpb25SYW5nZSgwLCA5OTk5OSk7IA0KICAgICAgICBTd2FsLmZpcmUoew0KICAgICAgICAgICAgaWNvbjogInN1Y2Nlc3MiLA0KICAgICAgICAgICAgdGl0bGU6ICJDb3BpZWQiLA0KICAgICAgICAgICAgdGV4dDogIkVtYmVkIGNvZGUgY29waWVkIHRvIGNsaXBib2FyZCEiLA0KICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLA0KICAgICAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlDQogICAgICAgIH0pOw0KICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCgpDQogICAgfQ0K'));