IyAtKi0gY29kaW5nOiBrb2k4LXIgLSotDQoNCmltcG9ydCB1bml0dGVzdA0KZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQNCg0KY2xhc3MgUEVQMjYzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6DQoNCiAgICBkZWYgdGVzdF9wZXAyNjMoc2VsZik6DQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoDQogICAgICAgICAgICB1IvDJ1M/OIi5lbmNvZGUoInV0Zi04IiksDQogICAgICAgICAgICAnXHhkMFx4OWZceGQwXHhiOFx4ZDFceDgyXHhkMFx4YmVceGQwXHhiZCcNCiAgICAgICAgKQ0KICAgICAgICBzZWxmLmFzc2VydEVxdWFsKA0KICAgICAgICAgICAgdSJc8CIuZW5jb2RlKCJ1dGYtOCIpLA0KICAgICAgICAgICAgJ1xcXHhkMFx4OWYnDQogICAgICAgICkNCg0KICAgIGRlZiB0ZXN0X2NvbXBpbGVzdHJpbmcoc2VsZik6DQogICAgICAgICMgc2VlICMxODgyDQogICAgICAgIGMgPSBjb21waWxlKCJcbiMgY29kaW5nOiB1dGYtOFxudSA9IHUnXHhjM1x4YjMnXG4iLCAiZHVtbXkiLCAiZXhlYyIpDQogICAgICAgIGQgPSB7fQ0KICAgICAgICBleGVjIGMgaW4gZA0KICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3UnXSwgdSdceGYzJykNCg0KDQogICAgZGVmIHRlc3RfaXNzdWUzMjk3KHNlbGYpOg0KICAgICAgICBjID0gY29tcGlsZSgiYSwgYiA9ICdcVTAwMDEwMTBGJywgJ1xcVTAwMDEwMTBGJyIsICJkdW1teSIsICJleGVjIikNCiAgICAgICAgZCA9IHt9DQogICAgICAgIGV4ZWMoYywgZCkNCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydhJ10sIGRbJ2InXSkNCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZFsnYSddKSwgbGVuKGRbJ2InXSkpDQoNCiAgICBkZWYgdGVzdF9pc3N1ZTc4MjAoc2VsZik6DQogICAgICAgICMgRW5zdXJlIHRoYXQgY2hlY2tfYm9tKCkgcmVzdG9yZXMgYWxsIGJ5dGVzIGluIHRoZSByaWdodCBvcmRlciBpZg0KICAgICAgICAjIGNoZWNrX2JvbSgpIGZhaWxzIGluIHB5ZGVidWcgbW9kZTogYSBidWZmZXIgc3RhcnRzIHdpdGggdGhlIGZpcnN0DQogICAgICAgICMgYnl0ZSBvZiBhIHZhbGlkIEJPTSwgYnV0IG5leHQgYnl0ZXMgYXJlIGRpZmZlcmVudA0KDQogICAgICAgICMgb25lIGJ5dGUgaW4gY29tbW9uIHdpdGggdGhlIFVURi0xNi1MRSBCT00NCiAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICdceGZmXHgyMCcpDQoNCiAgICAgICAgIyB0d28gYnl0ZXMgaW4gY29tbW9uIHdpdGggdGhlIFVURi04IEJPTQ0KICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgJ1x4ZWZceGJiXHgyMCcpDQoNCmRlZiB0ZXN0X21haW4oKToNCiAgICB0ZXN0X3N1cHBvcnQucnVuX3VuaXR0ZXN0KFBFUDI2M1Rlc3QpDQoNCmlmIF9fbmFtZV9fPT0iX19tYWluX18iOg0KICAgIHRlc3RfbWFpbigpDQo=