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

Polícia de Barcelona prende brasileiro suspeito de matar moradores de rua

Cenário da quarentena: uma das principais avenidas de Barcelona quase vazia - Getty Images
Cenário da quarentena: uma das principais avenidas de Barcelona quase vazia Imagem: Getty Images

28/04/2020 09h01

Um brasileiro de 35 anos foi detido nesta terça-feira (28), na Espanha, como suspeito do assassinato de pelo menos três moradores de rua em Barcelona durante as últimas semanas de confinamento pelo coronavírus - anunciou a polícia regional da Catalunha.

"Os Mossos d'Esquadra (polícia regional) anunciam a detenção de um homem relacionado com a morte de pessoas que vivem nas ruas de Barcelona", afirma um comunicado da força de segurança.

A detenção do homem aconteceu na madrugada de terça-feira na localidade de Sant Cugat del Vallés, na periferia de Barcelona, horas depois da notificação do assassinato de um morador de rua no centro da cidade.

"Às 23h, recebemos um aviso de que havia uma pessoa morta com sinais de violência em uma rua do centro de Barcelona", afirmou um porta-voz da polícia.

De acordo com a rádio Cadena Ser, a vítima recebeu golpes violentos na cabeça com um objeto contundente, um "modus operandi" que a polícia observou em dois crimes contra pessoas sem teto em 16 e 18 de abril na mesma área de Barcelona.

"A forma como esta pessoa atuava não deixava nenhum tipo de defesa para a vítima. A violência era desmedida e gratuita", afirmou em uma entrevista coletiva o intendente Joan Carles Granja, responsável pela investigação.

O dispositivo mobilizado pela polícia, as descrições apresentadas por testemunhas e as imagens das câmeras de segurança permitiram deter o suspeito durante a madrugada.

"Estes homicídios em via pública de moradores de rua terminaram", disse Granja.

O policial afirmou que o suspeito já havia sido detido por roubo na cidade de Zaragoza, mas sua ficha não registrava atos violentos.

"É uma pessoa com um discurso um pouco incoerente, não descartamos que tenha alguma dificuldade mental", completou.

Além das três mortes em abril, no dia 19 de março outro assassinato de sem teto foi registrado em Barcelona, mas este caso está relacionado a uma briga entre moradores de rua, de acordo com a imprensa local.

A polícia vincula o detento a três dos quatro crimes, afirmou uma fonte policial. Não anunciou oficialmente quais deles, porque a investigação está sob segredo de Justiça.