(* @@ Application operator *)
(* |> Reverse-application operator *)
let (<<) f g x = f (g x)
let (>>) f g x = g (f x)
bGV0IGYxIHggPSBTdHJpbmcuY29uY2F0ICItIiAoTGlzdC5tYXAgc3RyaW5nX29mX2ludCAoTGlzdC5yZXYgKExpc3Quc29ydCBjb21wYXJlIHgpKSkKCigqIEBAIEFwcGxpY2F0aW9uIG9wZXJhdG9yICopCmxldCBmMiB4ID0gU3RyaW5nLmNvbmNhdCAiLSIgQEAgTGlzdC5tYXAgc3RyaW5nX29mX2ludCBAQCBMaXN0LnJldiBAQCBMaXN0LnNvcnQgY29tcGFyZSB4CgooKiB8PiBSZXZlcnNlLWFwcGxpY2F0aW9uIG9wZXJhdG9yICopCmxldCBmMyB4ID0gTGlzdC5zb3J0IGNvbXBhcmUgeCB8PiBMaXN0LnJldiB8PiBMaXN0Lm1hcCBzdHJpbmdfb2ZfaW50IHw+IFN0cmluZy5jb25jYXQgIi0iCgpsZXQgKDw8KSBmIGcgeCA9IGYgKGcgeCkKbGV0IGY0ID0gU3RyaW5nLmNvbmNhdCAiLSIgPDwgTGlzdC5tYXAgc3RyaW5nX29mX2ludCA8PCBMaXN0LnJldiA8PCBMaXN0LnNvcnQgY29tcGFyZQoKbGV0ICg+PikgZiBnIHggPSBnIChmIHgpCmxldCBmNSA9IExpc3Quc29ydCBjb21wYXJlID4+IExpc3QucmV2ID4+IExpc3QubWFwIHN0cmluZ19vZl9pbnQgPj4gU3RyaW5nLmNvbmNhdCAiLSIKCmxldCAoKSA9IExpc3QuaXRlciAoZnVuIGYgLT4gcHJpbnRfZW5kbGluZSBAQCBmIFsxOzE7OTsyXSkgW2YxO2YyO2YzO2Y0O2Y1XQo=