;(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

Fred volta a marcar, e Fluminense avança com nova vitória sobre o Cerro

Fred e Nenê comemoram gol do Fluminense contra o Cerro Porteño pela Libertadores - Thiago Ribeiro/AGIF
Fred e Nenê comemoram gol do Fluminense contra o Cerro Porteño pela Libertadores Imagem: Thiago Ribeiro/AGIF

Do UOL, em São Paulo

03/08/2021 21h08

O Fluminense está classificado para as quartas de final da Copa Libertadores da América. Com uma atuação segura, correndo poucos riscos, o Tricolor derrotou o Cerro Porteño (PAR) por 1 a 0, hoje (3), no Maracanã, e está entre os oito melhores do continente. Fred fez o gol do triunfo, voltando a marcar depois de um mês de jejum.

O Flu obteve a vaga nas quartas de final com folga. Na partida de ida, há duas semanas, no Paraguai, o Tricolor havia ganhado por 2 a 0, com gols de Nenê e Egídio. Na próxima fase, o adversário será o Barcelona de Guayaquil (EQU), que já havia despachado o Vélez Sarsfield (ARG). O primeiro jogo contra o time equatoriano acontece no dia 12, no Maracanã. A volta será sete dias depois.

Antes disso, o time de Roger Machado volta a jogar pelo Campeonato Brasileiro, no domingo (8), contra o América-MG, em Belo Horizonte (MG). A equipe, aliás, vem de duas derrotas nessa competição e precisa se recuperar para figurar na primeira metade da tabela de classificação.

Pênalti acaba com marasmo

A partida no Maracanã começou sem iniciativa das equipes em buscar o ataque. Mas veio um pênalti salvador para movimentar o placar. Em uma jogada individual de Fred, ao tentar driblar um adversário, a bola bateu no braço de Carrascal, e a penalidade foi marcada pelo árbitro colombiano Wilmar Roldán. Na cobrança, Fred deslocou o goleiro Jean, ex-São Paulo, e acertou o canto direito para abrir o placar aos 24 minutos.

Fim de jejum do ídolo tricolor

Fred não marcava um gol pelo Fluminense havia mais de um mês. O último dele havia sido na derrota para o Athletico-PR por 4 a 1, no Maracanã, no dia 30 de junho. Mas não que a má fase tivesse começado nessa data uma vez que o veterano artilheiro marcou apenas dois gols nos últimos 12 jogos. Foi um período de queda de rendimento numa temporada de alta: Fred marcou 13 vezes em 26 partidas e é o artilheiro tricolor na Libertadores, com cinco tentos.

É a vez de os paraguaios assustarem

Com a boa vantagem de 3 a 0 no placar agregado, o Fluminense não parecia muito disposto a se entregar ao ataque, até levando em conta o calendário puxado que tem pela frente, com jogos não só do Brasileiro, mas também pela Copa do Brasil. Por isso, o time adotou uma postura mais defensiva, aguardando as chegadas do adversário e, assim, quase foi surpreendido antes do intervalo. Aos 38 minutos, Villasanti fez boa jogada pelo lado esquerdo e saiu de frente para o goleiro. No entanto, ele preferiu o e para Boselli, que chutou em cima de Samuel Xavier.

2º tempo começa movimentado

Uma boa chance para cada lado marcou o duelo no segundo tempo no Maracanã. A primeira, aos 2 minutos, veio do lado do Cerro em jogada do brasileiro Gonçalves. Após cruzamento, a bola ficou livre para Carrizo, que bateu em cima de Luccas Claro e viu a bola sair pela linha de fundo. Três minutos depois, o Fluminense assustou em um chute de fora da área de Samuel Xavier, que obrigou Jean a se esticar e espalmar a bola para escanteio.

Quase o segundo tricolor

O Fluminense voltou a fazer o goleiro Jean trabalhar novamente aos 20 minutos. E a solução tricolor eram os chutes de meia distância. Dessa vez, Fred ajeitou para Luiz Henrique, que emendou de esquerda. O arqueiro do Cerro saltou bem no canto esquerdo para impedir o segundo gol.

Cerro não desistiu até o fim

Embora não tenha atacado com eficiência, o Cerro Porteño tentou pelo menos um gol até os últimos minutos. Adrian Martínez, que havia entrado em lugar de Boselli, teve duas boas chances. Na primeira, ele recebeu e da direita e chutou à queima-roupa para grande defesa de Marcos Felipe. O lance, no entanto, já estava paralisado por impedimento. Já no fim, ele levou a melhor em jogada aérea, cabeceou forte e viu a bola ar bem perto por cima do travessão.

Ficha técnica

FLUMINENSE 1 x 0 CERRO PORTEÑO
Motivo:
Oitavas de final da Libertadores
Data: 3 de agosto de 2021 (terça-feira)
Horário: 19h15 (de Brasília)
Local: Estádio do Maracanã, no Rio de Janeiro (RJ)
Árbitro: Wilmar Roldan (COL)
Assistentes: Sebastian Vela (COL) e Dionisio Ruiz (COL)
VAR: Jhon Ospina (COL)
Cartões amarelos: Luiz Henrique, Samuel Xavier, Ganso, Gabriel Teixeira (Fluminense); Aquino, Adrian Martínez, Villasanti, Patiño, Espínola (Cerro)
Gol: Fred, aos 24min do primeiro tempo (Fluminense)/

Fluminense: Marcos Felipe; Samuel Xavier, Manoel, Luccas Claro e Egídio; Martinelli (André), Yago Felipe e Nenê (Ganso); Luiz Henrique (Kayky), Fred (Abel Hernández) e Gabriel Teixeira (Lucca). Técnico: Roger Machado

Cerro Porteño: Jean; Espínola, Alexis Duarte, Patiño e Adorno (Alan Rodríguez); Villasanti, Carrascal, Aquino (Morales), Carrizo (Adrian Martínez) e Gonçalves; Boselli (Vargas). Técnico: Francisco Arce