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

Thiago Silva tem torcida e vestiário ao lado em tentativa de ficar no PSG

Thiago Silva agradece homenagem da torcida do PSG - REUTERS/Benoit Tessier
Thiago Silva agradece homenagem da torcida do PSG Imagem: REUTERS/Benoit Tessier

João Henrique Marques

Colaboração para o UOL, em Paris (França)

22/07/2020 04h00

A vitória do Paris Saint-Germain por 4 a 0 em amistoso contra o Celtic, ontem (21), no Parque dos Príncipes, em Paris, teve ares de despedida para Thiago Silva. O zagueiro brasileiro recebeu homenagem da torcida parisiense pelos oito anos vividos no clube e viu a pressão para a renovação de contrato aumentar.

Thiago Silva já foi avisado pelo PSG de que o contrato não será renovado após a o término do Liga dos Campeões - o vínculo do jogador foi ampliado apenas para encerrar a atual temporada. No entanto, além da torcida, há um desejo de vestiário na continuidade do capitão. Assim, a expectativa de seguir em Paris permanece, já que o zagueiro ainda não acertou vínculo com outro clube.

A possibilidade de ter o contrato renovado é considerada pequena no entorno do jogador. O discurso é de foco na reta final da temporada, com as disputas dos títulos da Copa da França (diante do Saint-Etienne dia 24 de julho) e Copa da Liga da França (contra o Lyon dia 31 de julho), além da sequência da Liga dos Campeões (PSG encara a Atalanta, nas quartas de final, dia 12 de agosto).

Thiago Silva esperava novo vínculo por, no mínimo, dois anos com o PSG. A ideia era garantir a permanência na elite do futebol europeu até o ano de Copa do Mundo do Qatar-2022. No entanto, o alto salário pesou.

O zagueiro já ou por três renovações de contrato no PSG e tem um dos maiores ordenados do clube - somente atrás de Neymar e Mbappé. A ideia da diretoria parisiense é a de reduzir a folha salarial do time com as saídas do zagueiro e também do atacante Cavani, que já deixou a equipe.

"Agora ele é nosso jogador. Nosso capitão. Precisamos nos concentrar para os jogos que temos pela frente. Parece que ele vai embora, mas no futebol nunca se sabe", disse Thomas Tuchel, técnico do PSG, em entrevista coletiva concedida ontem (21).

A emoção de Thiago Silva

Thiago Silva também sentiu o clima de despedida no amistoso contra o Celtic. O zagueiro teve o nome gritado pelos Ultras, a principal torcida organizada do PSG, em vários momentos da partida. A homenagem veio através da faixa que dizia: "Thiago Silva em Paris...a gente contrata na hora".

"Muitas emoções que senti. Também me lembro da minha última partida no Maracanã com o Fluminense. Mas a história ainda não acabou, ainda temos muito a ver com três copas a serem procuradas [Copa da França, Copa da Ligue e Liga dos Campeões].Espero que eu possa sair pela porta da frente", disse Thiago Silva em entrevista à emissora sa Bein Sports.

A contratação de Thiago Silva ocorreu em 2012, após pagamento de 42 milhões de euros ao Milan, e a justificativa do presidente do PSG, Nasser al-Khelaïfi, de que era o investimento no "melhor zagueiro do mundo". Rapidamente, o brasileiro transformou-se em capitão do time e conquistou a idolatria da torcida. Com tanto tempo em Paris, o zagueiro adquiriu fluência no idioma francês e naturalizou a família - ele, mulher e dois filhos.

"Na minha opinião, essa é uma história que escrevi e estou muito feliz por isso. Meus filhos cresceram aqui na França. Eu cresci não apenas como jogador, mas também como homem. O respeito que o clube, os jogadores e a equipe me deram é a coisa mais importante para mim ", complementou Thiago Silva.

No Paris Saint-Germain, Thiago Silva tem 310 jogos no total. A idolatria da torcida, além da dedicação ao clube, a, em muito, pela rica história de troféus, com a conquista de sete títulos do Campeonato Francês, cinco da Copa da Liga da França, quatro da Copa da França e outros sete da Supercopa da França.