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

Exonerado, Queiroz agiu pelo gabinete de Flávio Bolsonaro

Flávio Bolsonaro e assessor Fabrício Queiroz - Reprodução
Flávio Bolsonaro e assessor Fabrício Queiroz Imagem: Reprodução

Caio Sartori

Rio

06/09/2019 07h54

Troca de mensagens entre Fabrício Queiroz e Danielle Mendonça da Costa da Nóbrega - ex-mulher de Adriano Nóbrega, um dos milicianos mais procurados do Rio - indica que, mesmo após ser exonerado do cargo, o ex-assessor continuou a agir como integrante do gabinete do então deputado estadual, hoje senador, Flávio Bolsonaro (PSL), filho mais velho do presidente Jair Bolsonaro. As conversas foram rastreadas pelo Ministério Público.

Revelados pelo jornal "O Globo", diálogos via WhatsApp indicam que Queiroz informou à assessora, em 6 de dezembro de 2018, que ela havia sido exonerada. No mesmo dia, o jornal "O Estado de S. Paulo" havia revelado que relatório do Conselho de Controle de Atividades Financeiras (Coaf), apontou a existência de movimentações "atípicas" nas contas bancárias de Queiroz. O MP do Rio investiga se houve "rachadinha" (prática ilegal em que o servidor rea parte ou a totalidade de seu salário para o parlamentar que o contratou) no gabinete de Flávio na Assembleia do Rio.

Queiroz já não era oficialmente funcionário do hoje senador desde 16 de outubro. As conversas com Danielle, contudo, sugerem que ele seguia tomando decisões em nome do parlamentar, que sempre afirmou não saber das atividades do PM. O ex-assessor pediu ainda para ela parasse de usar o sobrenome Nóbrega, a fim de evitar a associação do miliciano com o gabinete de Flávio.

Os contatos entre Queiroz e Danielle foram monitorados pelo Grupo de Atuação Especial no Combate ao Crime Organizado (Gaeco), em investigação sobre milícia - que resultou na prisão de 13 suspeitos na Operação Os Intocáveis.

Um dos investigados com prisão decretada é o ex-capitão da PM Adriano Nóbrega, que foi casado com Danielle. Além dela, Raimunda Veras Magalhães, mãe do ex-oficial, também trabalhou no gabinete de Flávio na Alerj. As investigações sobre as suspeitas de "rachadinha" são atribuição de outro órgão do MP, o Grupo de Atuação Especializada de Combate à Corrupção (Gaecc).

Em nota, o advogado Paulo Klein afirma que, pela influência que tinha no gabinete, Queiroz continuava a ser procurado por assessores - principalmente os nomeados por ele, como Danielle - mesmo fora do cargo. A defesa afirma lamentar "que mesmo diante da comprovada fragilidade de sua saúde, a devassa em sua vida pessoal e profissional não cessem, inclusive com o vazamento de informações relacionadas ao seu sigilo telefônico", disse.

"De todo modo, tais diálogos tinham como objetivo evitar que se pudesse criar qualquer suposição espúria de um vínculo entre ele e a milícia. Na realidade, a senhora Daniele foi convidada por ele a participar do gabinete em razão do trabalho social relevante do qual participa. Infelizmente, ao que parece, neste momento, todo e qualquer fato é distorcido com vistas a revelar algo supostamente ilícito, quando, em verdade, somente houve trabalho sério, honesto e comprometido." Procurado pela reportagem, Flávio Bolsonaro não quis comentar. As informações são do jornal O Estado de S. Paulo.