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

Esse conteúdo é antigo

Perícia relata alteração em locais de morte em ação no Jacarezinho, diz TV

Grafite na favela do Jacarezinho, no Rio de Janeiro - Lenon Lins (@lenon.há)
Grafite na favela do Jacarezinho, no Rio de Janeiro Imagem: Lenon Lins (@lenon.há)

Do UOL, em Brasília

19/06/2021 14h30

Laudos de perícia relatam alterações em locais onde houve mortes na operação policial na favela do Jacarezinho, no Rio de Janeiro, ocorrida em 6 de maio deste ano, segundo a TV Globo. Ao todo, 28 pessoas morreram na ação da Polícia Civil, incluindo um policial.

Esses laudos fazem parte de conjunto de documentos para os quais a Polícia Civil pediu sigilo de cinco anos, segundo a TV Globo. Também de acordo com o canal, os peritos encontraram "inúmeros componentes de munição caídos pelo solo" e "perfurações em paredes compatíveis com projéteis de armas de fogo".

Os lugares foram descritos como "zona de forte confronto armado", acrescentou. Em fotos feitas durante a operação, é possível perceber diversos buracos de balas em paredes de casas e, enquanto peritos trabalhavam, ainda se escutavam tiros, apontou a TV.

A perícia foi feita somente em locais com mortes violentas e, em alguns lugares, os cenários foram modificados, o que dificulta as investigações, afirma a perícia, segundo a TV. Um laudo aponta que uma pessoa ferida foi retirada do local analisado possivelmente com movimentação inicial de "arraste", que pode ter modificado perfis de manchas de sangue encontradas pelo caminho. Ainda, componentes de munição podem ter sido deslocados.

Por causa da não preservação do local em questão, o perito não fez análises do posicionamento do atirador, afirmou a reportagem.

À TV Globo, a Polícia Civil afirmou que o socorro prestado vai ser esclarecido durante a investigação e que os laudos da perícia serão comparados com depoimentos e demais provas produzidas.

Os 12 boletins de ocorrência que registram morte por intervenção policial de 27 pessoas em 6 de maio relatam supostos confrontos em nove localidades da favela em um intervalo de seis horas, segundo a versão dos agentes. Moradores denunciam, contudo, mortes arbitrárias por policiais em situações em que as vítimas estariam desarmadas e em fuga, sem trocar tiros com agentes.

Ações coordenadas tiveram início após o policial civil André Leonardo de Mello Frias ter sido atingido por um tiro na cabeça logo no início da operação, às 6h, ao tentar retirar uma das barricadas que travavam o o à comunidade.

Segundo a versão contada pelos agentes na DH (Delegacia de Homicídios) da capital, nove incursões pela favela entre 6h e 8h deixaram 17 mortos em pontos próximos uns aos outros, mostrando uma progressão dos agentes pelo território. As outras ocorrências com óbitos foram às 10h, 11h e 12h.