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

STJ marca data pra retomar análise da prisão de Robinho após podcast do UOL

Adriano Wilkson e Bruno Doro

Do UOL, em São Paulo

14/06/2023 19h10Atualizada em 15/06/2023 10h35

O STJ marcou data para retomar a análise do processo que pode fazer Robinho cumprir sua pena no Brasil. O caso estava parado havia dois meses e teve nova movimentação hoje, após a estreia do podcast UOL Esporte História - Os Grampos de Robinho.

O que aconteceu?

O tribunal marcou para o dia 2 de agosto o julgamento de um recurso da defesa de Robinho. Era a primeira sessão com espaço disponível na pauta da Corte Especial do STJ. Os advogados do ex-jogador pediram para que a Itália fosse obrigada a enviar o processo original inteiro e traduzido, mas o relator do caso negou o pedido em um primeiro momento. A defesa então recorreu à Corte Especial, que confirmará ou não a decisão do relator.

A marcação da data para a análise do recurso aconteceu horas depois do UOL publicar o primeiro episódio do podcast "Os grampos de Robinho", que divulga os áudios captados durante a investigação. Esses áudios mostram conversas de Robinho com os amigos e foram a base para a condenação de Robinho e Ricardo Falco a nove anos de prisão por estupro coletivo. .

A Corte Especial, um colegiado de 15 ministros, já tinha começado o julgamento do recurso, mas o juiz João Otávio Noronha pediu vista, o que suspendeu a tramitação do processo por dois meses. Após a publicação dos áudios inéditos pelo UOL, o ministro concluiu a análise e disse estar pronto para votar. Depois que o STJ decidir se o recurso da defesa será aceito ou não, o tribunal voltará a julgar se a sentença italiana que condenou Robinho é válida no Brasil. Os advogados do ex-jogador terão um prazo pra apresentar seus argumentos, assim como o Ministério Público.

Por que Robinho não está preso?

Robinho e Ricardo Falco foram julgados na Itália e condenados em três instâncias. Não há mais possibilidade de recurso.

Os dois estavam na Itália quando as investigações começaram, mas já estavam no Brasil quando o julgamento terminou. Por isso, não foram presos.

Com a decisão em última instância, a Itália pediu ao Brasil a homologação da sentença para que os dois cumpram a pena em uma prisão brasileira. É isso que o STJ está analisando.

A Itália já tinha feito o pedido de extradição de Robinho e Falco, mas o governo brasileiro negou. A Constituição proíbe a extradição de brasileiros natos.

Os outros quatro homens envolvidos no caso, Rudney Gomes, Clayton Santos, Alexsandro da Silva e Fabio Galan, foram denunciados pelo Ministério Público da Itália, mas não foram julgados. Pelas leis italianas, só podem ser julgadas pessoas que foram comunicadas oficialmente do processo. Os quatro já estavam no Brasil quando a investigação terminou.