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

Esse conteúdo é antigo

STJ nega recursos de Flávio Bolsonaro e evita revés do caso das rachadinhas

Guilherme Mazieiro

Do UOL, em Brasília

16/03/2021 16h47Atualizada em 16/03/2021 22h26

A Quinta Turma do STJ (Superior Tribunal de Justiça) negou hoje, pelo placar de 3 votos a 2, dois recursos da defesa do senador Flávio Bolsonaro (Republicanos-RJ) e evitou que a investigação do caso das "rachadinhas" voltasse à estaca zero.

Na primeira decisão, os ministros consideraram válidas as trocas de informações entre o Coaf (Conselho de Controle das Atividades Financeiras) e o Ministério Público do Rio de Janeiro.

A maioria da 5ª Turma também rejeitou um segundo recurso da defesa do senador, que pedia a declaração de nulidade das decisões da primeira instância no caso das rachadinhas. Desta forma, os atos do juiz Flávio Itabaiana, da 27ª Vara Criminal do Rio, foram validados pelo STJ, exceção feita à autorização das quebras de sigilo bancário e fiscal.

Quebras de sigilo continuam anuladas

As decisões de hoje não mudam a situação das quebras de sigilo de bancário e fiscal da investigação. Elas continuam anuladas por determinação anterior da própria 5ª Turma do STJ. Sobre esse caso específico, há um recurso do MPF (Ministério Público Federal) que será analisado pelo STF (Supremo Tribunal Federal).

Ontem (15), o UOL publicou uma série de reportagens investigativas, com base nos dados das quebras de sigilos bancário e fiscal da investigação, que revelam indícios de rachadinha nos gabinetes do então deputado Jair Bolsonaro (sem partido) e do filho e vereador, Carlos Bolsonaro (Republicanos-RJ).

A "rachadinha" é a prática criminosa de peculato (roubo de dinheiro público) em que os servidores de gabinete sacam e am aos parlamentares parte dos salários que receberam. O caso estava na pauta do dia 2 de março, mas foi retirado de julgamento e foi retomado hoje.

Wassef na defesa de Flávio

O advogado Frederick Wassef, que havia se desligado da defesa de Flávio quando Queiroz foi preso em uma residência sua, participou do julgamento de hoje.

O relator do recurso, Félix Fischer, negou o pedido da defesa de Flávio. Ao contrário do que alegou a defesa, ele disse que não há comprovação de que houve quebra de sigilo bancário e fiscal sem autorização judicial.

O ministro João Otávio de Noronha considerou que o processo legal não foi obedecido no caso em questão. Ele votou de maneira contrária ao relator, ou seja, a favor de Flávio.

"Há uma confissão expressa do Ministério Público, tinha todos elementos para pedir quebra de sigilo bancário. O que ele faz? Investiga camufladamente. Transforma o Coaf em um órgão de investigação. Transforma um órgão de inteligência em um órgão de investigação. Tudo poderia ter sido obtido de forma legal, mas aqui no Brasil às vezes não se faz", disse Noronha.

O ministro Reynaldo Soares da Fonseca concordou com o voto do relator, contra o recurso de Flávio. Ele considerou que não identifica ilegalidades nas informações, já que foram compartilhadas pelo Coaf a partir do seu banco de dados.

O ministro Ribeiro Dantas disse que todo procedimento do Ministério Público seguiu a legislação. Já o minsitro Joel Ilan Paciornik acompanhou o voto divergente. O resultado desta votação terminou em 3 a 2 contra a defesa de Flávio.