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

Caso Moïse: 'Tudo indica que crime foi por ser negro e pobre', diz promotor

O jovem congolês Moïse Mugenyi Kabagambe, 24, morto por espancamento na Barra da Tijuca, zona oeste do Rio - Facebook/Reprodução
O jovem congolês Moïse Mugenyi Kabagambe, 24, morto por espancamento na Barra da Tijuca, zona oeste do Rio Imagem: Facebook/Reprodução

Do UOL, em São Paulo

07/02/2022 14h09

O promotor Alexandre Murilo Graça, que atua na investigação do assassinato do congolês Moïse Kabagambe, disse acreditar que o crime tenha motivação racial.

"Tudo indica que o crime foi praticado pelas características da vítima, por ser negro, por ser pobre", disse ele em entrevista ao Fantástico, da TV Globo, veiculada nesse domingo.

Graça também afirmou ao programa que as investigações não apontam, até o momento, que a milícia esteja envolvida no caso. O ministro do STF (Supremo Tribunal Federal) Gilmar Mendes levantou a possibilidade ontem em post nas redes sociais.

Moïse Kabagambe, de 24 anos, foi morto a pauladas no último dia 24 no quiosque Tropicália, no posto 8 da Barra da Tijuca. Segundo a família, ele foi até o local cobrar o pagamento de duas diárias de trabalho como garçom, que somavam R$ 200.

Câmeras de segurança do quiosque mostram os agressores que batem na vítima mesmo estando ela imobilizada e imóvel no chão. Três suspeitos foram presos temporariamente na semana ada, por homicídio duplamente qualificado, com aplicação de meio cruel e impossibilidade de defesa da vítima.

A Prefeitura do Rio anunciou hoje que vai transformar os quiosques Tropicália e o vizinho, Biruta, em um memorial em homenagem às culturas congolesa e africana. De acordo com a Secretaria Municipal de Fazenda, a gestão de um dos quiosques será oferecida aos familiares de Moïse.

Novas imagens mostram Moïse sozinho e desacordado por 21 minutos até Samu chegar

O UOL teve o à íntegra das gravações feitas pela câmera de segurança do quiosque Tropicália, analisadas pelos investigadores. São três horas ininterruptas de imagens, das 22h25 de 24 de janeiro até as 1h26 do dia 25.

O material, inédito, mostra Moïse sozinho, amarrado e desacordado por 21 minutos após a sessão de agressões ao lado do quiosque. As imagens também revelam que o Samu tentou reanimar o congolês por 25 minutos.

Linha do tempo - Moise -  -