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

São Paulo

Vão até o final? Veja os contratos mais longos do elenco do São Paulo

Titular da equipe de Ceni, goleiro Tiago Volpi tem vínculo até 2023 com o clube do Morumbi - Marcello Zambrana/AGIF
Titular da equipe de Ceni, goleiro Tiago Volpi tem vínculo até 2023 com o clube do Morumbi Imagem: Marcello Zambrana/AGIF

Com a temporada de 2021 chegando ao fim, o São Paulo a a pensar nos seus próximos os e em reformulações no elenco. Entretanto, o time conta com jogadores que possuem longos contratos e, assim, precisam pensar em mantê-los no elenco por mais tempo ou negociá-los com outras equipes.

O Tricolor conta com jogadores que estão em término de contrato até outros que terminam seus contratos em 2025. Os jogadores de vínculos mais longos são, em sua maioria, jovens da base e alguns atletas contratados recentemente pela equipe.

É possível dividir os jogadores com contratos mais longos em três grupos, embora um deles conte apenas com um representante. O São Paulo tem nomes com vínculos até 2023, 2024 e 2025.

Jogadores com contrato até 2023

Com sete jogadores, o grupo de atletas com contratos até 2023 conta tanto com jovens revelados pelo clube quanto medalhões do elenco. Luan, Igor Gomes e Lucas Perri são os 'Made in Cotia' da lista, enquanto Pablo, Tiago Volpi, Vitor Bueno e Bruno Alves são nomes mais experientes.

A saída de algum desses jogadores antes do final do contrato é imaginável, pois alguns dos nomes são alvos constantes de críticas e, além disso, a diretoria enxerga com bons olhos a possibilidade de vender algum dos jogadores jovens formados pelo clube.

Dos sete atletas com contrato até 2023, Pablo é o que teve a renovação mais recente, mas não precisou de negociação. Obedecendo cláusula de seu contrato, o camisa 9 teve renovação automática ao entrar em campo diante do Corinthians, no dia 18 de outubro.

Jogadores com contrato até 2024

Este grupo é o que mais contém jogadores da base. Ao todo, Liziero, Gabriel Sara, Welington, Marquinhos, Talles Costa e Rodrigo Nestor são os atletas revelados por Cotia que tem vínculo até 2024. Além deles, Rigoni, contratado nesta temporada, e Léo, que renovou seu contrato recentemente, também estão na lista.

Dos oito jogadores com vínculo até 2024, Marquinhos e Liziero tem os contratos mais curtos. O volante tem contrato válido até o dia 31 de janeiro de 2024, enquanto o atacante termina seu vínculo no dia 31 de maio. O restante assinou até o dia 31 de dezembro.

Jogadores com contrato até 2025

Este é o grupo de apenas um representante. O lateral direito Orejuela, contratado nesta temporada, tem contrato até o dia primeiro de maio de 2025. O colombiano foi a contratação mais cara da temporada e ainda não engatou grande sequência como titular.

Buscando já planejar possíveis mudanças para o elenco em 2022, Ceni tem pela frente nove jogos do Campeonato Brasileiro para testar seus atletas e decidir com quais pretende contar no próximo ano.

O São Paulo entra em campo no próximo domingo (7), às 18h15, para enfrentar o Bahia, na Arena Fonte Nova, em Salvador, em jogo válido pela 30ª rodada do Campeonato Brasileiro.

Errata: este conteúdo foi atualizado
Diferentemente do que foi publicado, Orejuela tem contrato com o São Paulo até 2025, e não até 2021. O erro foi corrigido.

São Paulo