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

Prisão de 159 pessoas em suposta festa de milícia no Rio foi politizada, diz defensor público

Suspeitos foram detidos durante uma festa em um sítio na zona oeste do Rio - Divulgação
Suspeitos foram detidos durante uma festa em um sítio na zona oeste do Rio Imagem: Divulgação

Fernanda Nunes

Rio

22/04/2018 14h26

A prisão de 159 pessoas em um show de pagode na zona oeste do Rio, no último dia 7, "foi um caso de flagrante injustiça", segundo o defensor público-geral do Rio de Janeiro, André Castro. "Isso jamais aconteceria numa casa de show da zona sul", complementou. O ministro extraordinário de Segurança Pública, Raul Jungmann, disse em entrevista que os presos devem explicar o que faziam numa festa de milicianos. Mas a defensoria alega que 139 deles não têm antecedente criminal, que foram presos sem flagrante e, portanto, sem justificativa e que foram cometidas arbitrariedades legais nas prisões, o que demonstra a politização da ação da polícia.

Segundo Castro, o episódio é ainda mais grave do que "os casos clássicos de prisões de jovens negros e pobres", comuns nas comunidades mais carentes da cidade do Rio de Janeiro. Esse, em sua opinião, tem o agravante de ter sido cometido coletivamente e com pessoas que, nitidamente, não teriam como participar de quadrilhas de milicianos, como sustenta a acusação contra os presos.

A maior parte deles mora na região onde aconteceu o show, no bairro de Santa Cruz, e tem profissão comprovada. Esse é o caso do artista circense Pablo Martins, que deixou o presídio de Bangu na tarde de sábado, 21. Ele a a maior parte do tempo fora do País e, nesta semana, deve viajar para a Suécia. "O caso do Pablo é idêntico ao dos demais. Por isso acredito que a liberação dele deve ser estendida aos outros. Ele saiu antes pela repercussão midiática da sua prisão. Associar um palhaço à milícia é muito difícil, um absurdo", afirmou o defensor público.

Há outros exemplos como o de Pablo, segundo Castro. Ele conta que entre os presos há um homem com transtorno mental, que precisa de remédios e tratamento médico. Até ontem, 40 famílias procuraram a Defensoria Pública em busca da defesa dos seus parentes. Hoje pela manhã, após a soltura do artista circense, o número cresceu, de acordo com Castro. Ele não soube dizer exatamente quantos casos defende.

O instrumento de defesa utilizado até agora tem sido o habeas corpus e recursos no habeas corpus. A denúncia ainda não foi oferecida pelo lado da acusação, o que limita o trabalho da Defensoria. "Politizaram muito para demonstrar que foi uma grande ação contra a milícia. Mas não foi o caso. Por isso, agora, têm dificuldade de retroceder", afirmou o defensor público, acrescentando que, no dia, há relatos de agressão de mulheres e que homens foram liberados da prisão por não caberem no ônibus que transportou parte do público do show à prisão.

Em vídeo gravado após sua liberação do presídio de Bangu, o artista circense Pablo pede justiça para os amigos. "Não desejo isso para ninguém, nem para um inimigo, nem para os meus amigos. Que a justiça seja feita o mais rapidamente possível", afirmou.