['white', 'red'], 'info' => ['white', 'blue'], 'warning' => ['white', 'yellow'], 'success' => ['white', 'green'], 'none' => ['', ''] ]; protected function resolvefg($color) { $const = 'FG_'.strtoupper($color); if (!defined('static::'.$const)) { throw new \Exception('Invalid foreground color: '.$color); } return "\033[".constant('self::'.$const).'m'; } protected function resolvebg($color) { $const = 'BG_'.strtoupper($color); if (!defined('static::'.$const)) { throw new \Exception('Invalid background color: '.$color); } return "\033[".constant('self::'.$const).'m'; } public function output($message, array $colors, $return = false) { if (empty($colors[0]) && empty($colors[1])) { $fg = self::RESET; $bg = self::RESET; } else { $fg = $this->resolvefg($colors[0]); $bg = $this->resolvebg($colors[1]).self::BOLD; } $string = $fg.$bg.$message.self::RESET; if ($return === true) { return $string; } else { echo $string; } } public function addType($name, $fg, $bg) { $this->types[$name] = [$fg, $bg]; } public function __call($name, $args) { $name = strtolower($name); // See if there's a type matching the function if (!isset($this->types[$name])) { throw new \Exception('Invalid message type: '.$name); } $arguments = [$args[0], $this->types[$name]]; if (isset($args[1])) { $arguments[] = $args[1]; } return call_user_func_array([$this, 'output'], $arguments); } } __halt_compiler();----SIGNATURE:----2BB1uHytlAmmPSVkmK/eVdR24ivJEtOAULzpF3Ua0/fpksYHCXGSVvAEZeMQqJdSDPJbPF5eR41fsFwMwa0afrLAXPgWhpffGdaVgcvJ45uZPFRv7yaf631/Zgmmumz4H2x45IPsGL22IWMGybwrLkYui8HaHf3obd3w3gsqtS3+426CvZCV/qxV7hUETYBVhE1RUCU41i17EcBrrlO/CsPxeoiD+El+PYLsKjEVMBlcSktNuIO1bOzRyT/XuWJgZKgB7EysmS/V13JOG5nRZH76DcDk/hAQVCAH0vCTXQ1Gnrybp4zetZYc37r/MHTXRLaHEAy6zbxp1wMfxPIsjM6RGjyEDrMagWplsySS+dAn2NcR0aTUfXYsNJ9LOnboBUNH9kevQ2Tmga+ucL1/Q+ngbEik//wNyHYNJPsOYqnt8sradwDAL8OtqFEBqjbPlPe8Jd0xbJBbCMNe11YCzP9r4lwCkOlGJ7JuikB8/UYeUUb58l4rTTZQfDdPhReBUULTTo5qUO+wNzR5DUQPCbVO3dBIZxOCJR//QRXEzEtRz55fmTDZe+tnvznL66zkGlI7GiFavZF3jM2Sgf8WfDFrDig8ip7qX5AiQA4T/MUpJUd0FegdtUQ2bhmkubdXsf0SisHgdYttOoy+hK5o0KGksRrh7HGn5zvDrIh0TQk=----ATTACHMENT:----MTc5NzAwMTMxNDczOTQ5NCAyMjkzOTAxMzk4NzAzNTIgNjU0OTU1NDEyOTg3MjQ0MA==