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

Procuradoria pede investigação de crimes em 'caveirões aéreos' no Rio

 Helicóptero da Polícia Militar sobrevoa área da favela Mandela, parte do complexo de Manguinhos - Felipe Dana - 21.mar.2014/AP
Helicóptero da Polícia Militar sobrevoa área da favela Mandela, parte do complexo de Manguinhos Imagem: Felipe Dana - 21.mar.2014/AP

18/06/2019 16h01

Após o governador do Rio de Janeiro, Wilson Witzel, cobrar na manhã de hoje (18) investigação federal sobre o crime organizado, o tráfico de armas e de drogas e lavagem de dinheiro, o Ministério Público Federal divulgou no início da tarde uma nota técnica em que orienta os procuradores da República a "abrir procedimentos junto à Justiça Federal para apurar possíveis crimes a bordo de helicópteros de intervenção policial", os chamados "caveirões aéreos".

Em solenidade de doação de carros de polícia feita pelo Gabinete da Intervenção Federal, Witzel disse que "a atuação do Ministério público é sempre bem-vinda ", mas ressaltou que não se pode impedir a polícia de utilizar um equipamento.

"Se nós temos helicópteros para utilizar em eventuais confrontos com terroristas que estão atirando na polícia. Se você não tiver equipamento para rapidamente chegar e dissuadir aquele grupo e tomar as providências necessárias, então nós estamos em desequilíbrio e vai haver mais morte de policial", disse.

Ele citou as imagens mostradas pela imprensa recentemente, de "terroristas usando armas, atirando contra a polícia num muro de contenção", na Cidade de Deus, zona oeste da cidade, na semana ada.

Segundo a nota divulgada pelo MPF, a orientação da Câmara de Controle Externo da Atividade Policial e Sistema Prisional vale para todas as unidades do órgão no país.

A base jurídica citada é a Constituição Federal, que determina ser de competência federal processar e julgar crimes a bordo de navios ou aeronaves.

"Embora o uso desses veículos seja compreendido por parte das forças de segurança e da sociedade civil como um instrumento para ampliar a eficiência de intervenções policiais, tem-se verificado a necessidade de estabelecimento de parâmetros mais claros para essas ações", diz a nota técnica, que tem data de 11 de junho.

A orientação ressalta que a legalidade dessas ações foi questionada "em mais de uma oportunidade", apontando para um possível "excesso no uso da força policial e até mesmo a prática de crimes em algumas dessas intervenções".