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

Mais de 3.000 militares e policiais fazem operação em favelas do Rio

07/02/2018 19h54

Rio de Janeiro, 7 Fev 2018 (AFP) - Mais de 3.000 militares e policiais participaram nesta quarta-feira (7) de uma operação na comunidade Cidade de Deus, na Zona Oeste do Rio de Janeiro, na qual foram detidas 38 pessoas.

A operação foi realizada uma semana depois de confrontos entre traficantes e policiais nesta comunidade e acabou com um balanço três mortos, um deles aparentemente um líder do tráfico.

E também se deu em função de uma intensificação dos enfrentamentos entre forças de segurança e traficantes em várias comunidades da região metropolitana, onde vivem cerca de 1,5 milhão de habitantes, um quarto da população do Rio.

No início da manhã, 3.000 militares das três forças armadas (Exército, Marinha e Aeronáutica) cercaram a Cidade de Deus e bloquearam as vias adjacentes, com fechamento do espaço aéreo, enquanto agentes de vários corpos policiais entravam na favela.

Um total de 38 pessoas foram encaminhadas à sede da Polícia, cinco delas menores de idade, informou a Secretaria de Segurança do Rio de Janeiro (Seseg) em comunicado.

Também foram apreendidos três fuzis, quatro pistolas, drogas e munições, disse o organismo.

Uma porta-voz da Seseg afirmou à AFP que se tratava de uma ação "planejada há vários dias", sem ligação com os casos recentes de violência.

Na terça, as três principais artérias de o ao Rio (Avenida Brasil, Linha Vermelha e Linha Amarela) foram fechadas por um protesto de vizinhos das favelas do Complexo da Maré (Zona Norte), depois que um adolescente de 13 anos morreu ao ficar no meio de um confronto armado.

Além disso, no mesmo dia e também na Zona Norte, uma menina de três anos morreu baleada em uma tentativa de assalto quando estava com seus pais.

Esta foi a 11ª operação conjunta da Polícia com os militares, nas quais foram detidas 266 pessoas e apreenderam 30 fuzis de assalto, 31 pistolas e 2,5 toneladas de droga, segundo a Seseg.

As forças armadas foram chamadas no final de julho de 2017 para ajudar a conter a onda de violência que tomou conta do Rio, estado onde os problemas de segurança se viram agravados por uma grave crise econômica.

O ministro da Defesa, Raul Jungmann, pediu na semana ada uma reforma do sistema de segurança que, segundo ele, está "falido" no Brasil.