;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Rafael Reis

Ele tem só 15 anos, ou dos 100 gols e já joga pela seleção alemã sub-19

Youssoufa Moukoko tem só 15 anos, mas já defende a seleção sub-19 da Alemanha - AFP
Youssoufa Moukoko tem só 15 anos, mas já defende a seleção sub-19 da Alemanha Imagem: AFP

18/03/2020 04h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

Na última convocação da seleção alemã sub-19, um nome chamou a atenção. A lista para as eliminatórias da Eurocopa da categoria estava repleta de garotos de 18 e 19 anos. Mas tinha uma única exceção: um centroavante nascido no dia 20 de novembro de 2004.

O nome dele é Youssoufa Moukoko, um adolescente de 15 anos que vem destruindo recordes nas categorias de base germânicas, mesmo sempre atuando contra adversários que são de três a quatro anos mais velhos.

Há apenas dez dias, o atacante do Borussia Dortmund se tornou o maior artilheiro de uma única edição da versão sub-19 do Campeonato Alemão ao anotar 34 gols em 20 partidas.

Não, essa informação não está errada. Um menino de 2004 tem média de 1,7 tento por jogo em uma competição que permite a presença de jogadores nascidos a partir de 2001. E essa marca jamais foi atingida antes, nem mesmo por garotos que já estavam no limite da idade.

É por essas e outras que Moukoko é considerado atualmente o maior fenômeno das categorias de base europeias.

O atacante nasceu em Yaoundé, capital de Camarões, e permaneceu na África durante os dez primeiros anos de sua vida. Assim que chegou à Alemanha, ingressou nos times inferiores do St. Pauli. A partir daí, viu sua carreira decolar como um foguete.

Aos 12 anos, mudou-se para o Dortmund, marcou seus primeiros gols no Alemão sub-17 e foi parar nas capas dos principais jornais do país. O sucesso logo lhe rendeu um contrato de patrocínio com a Nike que pode chegar a casa dos 10 milhões de euros (R$ 55 milhões).

Bom demais para atuar no sub-17 mesmo sem ainda ter alcançado a idade para atuar na categoria, o centroavante foi promovido em agosto ado para o time sub-19. Logo na estreia, marcou seis vezes na vitória por 9 a 2 sobre o Wuppertal.

Desde o dia 7 de dezembro, o novo astro do Dortmund balançou as redes em todos os jogos que disputou. Foram 16 gols apenas nas últimas oito partidas, o que tornou inevitável sua convocação para a seleção júnior.

No total, o centroavante tem 126 gols marcados em 83 partidas disputadas desde que chegou à base do clube.

Na atual temporada, Moukoko também fez seus primeiros treinos com a equipe principal. A estreia entre os adultos só não foi possível ainda porque o regulamento do futebol alemão proíbe a escalação de menores de 16 anos.

Ou seja, até novembro, o menino-gol do Dortmund continuará aos amistosos e torneios de base. Depois, estará livre para reforçar o elenco que ocupa a vice-liderança da Bundesliga, com 51 pontos, quatro a menos que o Bayern de Munique.

O planejamento da diretoria aurinegra é que Moukoko seja preparado para ser o substituto de Erling Haaland, revelação desta temporada e vice-artilheiro da Liga dos Campeões. Se tudo der certo, o novo fenômeno alemão deve assumir a titularidade quando o norueguês for negociado, em um ano e meio ou dois anos.