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

Entenda a situação das quebras de sigilo do caso das rachadinhas

Amanda Rossi, Flávio Costa, Gabriela Sá Pessoa e Juliana Dal Piva

Do UOL, em São Paulo e no Rio

15/03/2021 04h00

Em 23 de fevereiro, o STJ (Superior Tribunal de Justiça) anulou as quebras de sigilo bancário e fiscal da investigação do caso das "rachadinhas" no gabinete de Flávio Bolsonaro na Alerj (Assembleia Legislativa do Rio de Janeiro). A decisão atendeu a um pedido de habeas corpus feito pela defesa do hoje senador pelo Republicanos. O MPF (Ministério Público Federal) recorreu da decisão ao STF (Supremo Tribunal Federal). O MP-RJ (Ministério Público do Rio) também pode recorrer.

Ao longo da investigação, o juiz Flávio Itabaiana, da 27ª Vara Criminal do Tribunal de Justiça do Rio, havia autorizado a quebra de sigilo bancário e fiscal de mais de uma centena de pessoas ou empresas. Entre elas, estavam Flávio Bolsonaro, sua mulher Fernanda Bolsonaro, Fabrício Queiroz e parentes, além de ex-assessores da Alerj e pessoas que tiveram negócios com o filho do presidente.

As quebras de sigilo abrangiam um período de 12 anos, de 2007 a 2018, que engloba os três últimos mandatos de Flávio Bolsonaro como deputado estadual do Rio. As informações são um dos principais pilares de sustentação da denúncia apresentada no final do ano ado, pelo MP-RJ, contra Flávio Bolsonaro.

Mas os ministros da 5ª Turma do STJ entenderam que houve problemas na fundamentação das decisões que autorizaram as quebras de sigilo. "Decisão judicial genérica e imotivada não possui aptidão para afastar garantias constitucionais, especialmente quando desconectada dos princípios da razoabilidade e da proporcionalidade", avaliaram.

O placar foi 4 a 1 pela anulação das quebras de sigilo.

Investigação da rachadinha

Os dados das quebras de sigilo foram usados pelo MP-RJ para identificar rees de salários de assessores da Alerj para Fabrício Queiroz, denunciado como operador do esquema da "rachadinha".

As informações bancárias também embasam a denúncia do MP-RJ de que houve lavagem de dinheiro na compra de imóveis e no pagamento de contas pessoais de Flávio Bolsonaro e família. As investigações sobre uma possível lavagem de dinheiro em uma loja de chocolate continuam.

Além das quebras de sigilo, os promotores reuniram diversas outras provas, como depoimentos, mensagens de telefone, planilhas, registros de caixa bancário, informações de localização telefônica.

Um dos principais depoimentos é o de Luiza Souza Paes, ex-assessora de Flávio Bolsonaro, que revelou como funcionava o esquema de devolução de salários. Ele teve cargo na Alerj entre 2011 e 2017, mas nunca trabalhou para Flávio. Seu salário líquido variou de R$ 2.000 a quase R$ 5.000.

No depoimento, Luiza disse que ficava apenas com uma mesada mensal de R$ 700, que depois aumentou para R$ 800. O restante era transferido para Queiroz —inclusive o vale-alimentação e a restituição do imposto de renda. Depois de receber o salário, Luiza deduzia sua parte, sacava o restante e, imediatamente, depositava o valor para Queiroz.