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

Arenas olímpicas: TRF-2 decide prosseguir ação penal contra Eduardo Paes

Eduardo Paes (DEM), participa de reunião com comerciantes durante campanha à Prefeitura do Rio de Janeiro - RAMON VELLASCO/ESTADÃO CONTEÚDO
Eduardo Paes (DEM), participa de reunião com comerciantes durante campanha à Prefeitura do Rio de Janeiro Imagem: RAMON VELLASCO/ESTADÃO CONTEÚDO

Gabriel Sabóia

Do UOL, no Rio

20/10/2020 15h49

O TRF-2 (Tribunal Regional Federal da 2ª Região) decidiu, por 2 votos a 1, dar continuidade às investigações contra o ex-prefeito do Rio de Janeiro, Eduardo Paes (DEM), na ação penal em que ele é acusado de fraudes em licitação pública, corrupção iva e falsidade ideológica pela construção do Complexo Esportivo de Deodoro.

De acordo com o MPF (Ministério Público Federal), Paes teria viabilizado a criação de um consórcio formado pelas empreiteiras Queiroz Galvão e OAS para garantir a vitória dessas empresas na construção do Complexo Esportivo de Deodoro, utilizado nos Jogos Olímpicos e Paralímpicos de 2016. O custo total das obras supera R$ 647 milhões.

As investigações apontam que a vontade original de Paes era fazer com que a Queiroz Galvão vencesse a licitação. No entanto, diante da incapacidade técnica da empresa, ele teria pedido a Léo Pinheiro , ex-presidente da OAS, que detinha o atestado de capacidade, para formar um consórcio vencedor.

A defesa do hoje candidato à prefeitura pedia o habeas corpus da ação por entender que faltava "justa causa" para a ação penal, já que a acusação é amparada em depoimento isolado de Léo Pinheiro. Mas a Segunda Turma do TRF-2, porém, refutou esse argumento e considerou que há indícios suficientes de materialidade dos crimes imputados.

Em nota, a defesa de Paes informou que "não há, sequer, alegação no processo de que Eduardo Paes teria recebido vantagem, de qualquer natureza, de quem quer que seja. Eduardo Paes confia na justiça e segue inteiramente à disposição para prestar os esclarecimentos que se fizerem necessários".