Ly8gUFIgYysrLzI3NjAxCi8vIE9yaWdpbjogUGF0cmlrIEjkZ2dsdW5kICA8cGF0cmlrLmhhZ2dsdW5kQGJyZWRiYW5kLm5ldD4KLy8geyBkZy1kbyBjb21waWxlIH0KCnN0cnVjdCBiYXIgewogIHN0YXRpYyBpbnQgZm9vOwogIHN0YXRpYyBpbnQgYmF6KCk7Cn07CgppbnQgYSA9IF9fYnVpbHRpbl9vZmZzZXRvZihiYXIsIGZvbyk7ICAvLyB7IGRnLWVycm9yICJzdGF0aWMgZGF0YSBtZW1iZXIiIH0KaW50IGF2ID0gX19idWlsdGluX29mZnNldG9mKHZvbGF0aWxlIGJhciwgZm9vKTsgIC8vIHsgZGctZXJyb3IgInN0YXRpYyBkYXRhIG1lbWJlciIgfQppbnQgYiA9IF9fYnVpbHRpbl9vZmZzZXRvZihiYXIsIGJheik7ICAvLyB7IGRnLWVycm9yICJtZW1iZXIgZnVuY3Rpb24iIH0KaW50IGIwID0gX19idWlsdGluX29mZnNldG9mKGJhciwgYmF6WzBdKTsgIC8vIHsgZGctZXJyb3IgImZ1bmN0aW9uIiB9CmludCBidjAgPSBfX2J1aWx0aW5fb2Zmc2V0b2Yodm9sYXRpbGUgYmFyLCBiYXpbMF0pOyAgLy8geyBkZy1lcnJvciAiZnVuY3Rpb24iIH0KaW50IGMgPSBfX2J1aWx0aW5fb2Zmc2V0b2YoYmFyLCB+YmFyKTsgIC8vIHsgZGctZXJyb3IgIm1lbWJlciBmdW5jdGlvbiIgfQoKdHlwZWRlZiBpbnQgSTsKZW51bSBFIHsgfTsKCmludCBkID0gX19idWlsdGluX29mZnNldG9mKEksIH5JKTsgIC8vIHsgZGctZXJyb3IgImRlc3RydWN0b3IiIH0KaW50IGUgPSBfX2J1aWx0aW5fb2Zmc2V0b2YoRSwgfkUpOyAgLy8geyBkZy1lcnJvciAiZGVzdHJ1Y3RvciIgfQo=