Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Tuesday, 30 March 2021

Byju’s in talks to acquire US-based reading platform Epic

Byju’s is eying acquisition of a startup that could help the biggest e-learning Indian firm deepen its footprint in the U.S.

The Indian startup is in talks to acquire online reading platform Epic, a startup that offers unlimited access to over 40,000 books, videos, and quizzes from more than 250 publishers to kids aged 12 or younger, two people familiar with the matter told TechCrunch.

The deal values Epic at “significantly” over $300 million dollars, according to one person, who like the other requested anonymity as the matter is private. The terms of the deal may change and/or the acquisition may not materialize, people warned.

An Epic spokesperson declined to comment Monday evening, and Byju’s did not respond to a request for comment on Tuesday.

Epic, backed by Evolution Media, reaches over 50 million kids in the U.S., a figure that has ballooned from 20 million last year.

The California-based startup, which has raised over $51 million to date, claimed in a press release last year that over 1 million teachers across more than 90% of U.S. elementary schools use Epic.

On Epic, founded by Suren Markosian and Kevin Donahue, children read over a billion books last year. The firm now plans to release several print versions of its original titles at Walmart, Target, and Sam’s Club later this year.

Some original titles released by Epic

Epic collects and analyzes real-time anonymized and aggregated data on how many children read a book, how deeply they engage with it, and where their interests start to fall off.

If the deal goes through, the startup’s offerings would align with Byju’s current playbook in the U.S. In 2019, the Indian startup acquired U.S.-based Osmo, which offers “blended learning” apps to integrate offline activities for kids aged between five to 12.

Byju’s is separately in the middle of concluding a new funding round whose size is expected to balloon over $600 million, TechCrunch reported last week. The new round is expected to value Byju’s at $15 billion.

The new financing round, a major tranche of which has already concluded (about $460 million at $13 billion valuation, per a filing), will be used to finance the new acquisition, the source said.

The Indian giant, which prepares students pursuing undergraduate and graduate-level courses, has witnessed skyrocketing growth amid the pandemic after New Delhi issued a months-long lockdown and closed schools.

India’s second most valuable startup, which serves over 80 million users, has additionally been aggressively exploring ways to grow inorganically.

Byju’s, which acquired coding platform aimed at kids WhiteHat Jr for $300 million last year, is conducting due diligence to acquire decades-old Indian brick-and-mortar institute Aakash and Toppr, another online learning startup in the world’s second largest internet market. These two deals are being financed with the over $1 billion funds Byju’s raised last year, one person familiar with the matter said.

WhiteHat Jr, which sparked controversy last year when it sued two critics, currently generates nearly half of its revenue from the U.S.



from TechCrunch https://ift.tt/3u6c0lX
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support