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

Após retirar último corpo, prefeitura faz cronograma de demolição na Muzema

Gabriel Sabóia/UOL
Imagem: Gabriel Sabóia/UOL

21/04/2019 19h03

A prefeitura do Rio informou hoje (21) que a Defesa Civil fará inspeções técnicas e será a responsável por indicar as estruturas que deverão ser demolidas na comunidade da Muzema, onde dois prédios desabaram no último dia 12. As informações serão readas à Secretaria Municipal de Conservação (Seconserva) que já elabora um cronograma de ações.

A Defesa Civil tem quatro agentes na operação. "Os técnicos avaliam a área do desabamento para auxiliar nos preparativos para as demolições programadas, além de orientar e acompanhar moradores que necessitem recolher documentos e pertences que ainda se encontram nas oito unidades interditadas emergencialmente", informa a prefeitura em nota.

Depois de encontrar o corpo da última pessoa desaparecida, uma mulher, o Corpo de Bombeiros anunciou hoje o fim das buscas na comunidade, localizada na zona oeste do Rio de Janeiro. Ao todo, a tragédia deixou 23 mortos e oito feridos.

A demolição de pelo menos três edifícios já foi confirmada pela Secretaria Municipal de Infraestrutura e Habitação. Eles foram construídos sem autorização dos órgãos competentes e em área de preservação ambiental, assim como os dois prédios que caíram. Sem previsão para serem reassentadas em definitivo, as famílias desalojadas receberão inicialmente o aluguel social, benefício financeiro concedido pelo município.

De acordo com a prefeitura, desde 2005, o Poder Público interdita obras na Muzema. No entanto, os tapumes são arrancados e os trabalhos, retomados. No caso dos dois prédios que caíram, a última interdição foi feita em novembro do ano ado. O município sustenta que, por se tratar de uma área dominada por milícia, precisa de apoio da Polícia Militar para atuar na área.

Três homens foram apontados pela Polícia Civil como responsáveis pela tragédia na Muzema: José Bezerra de Lima, o Zé do Rolo; Renato Siqueira Ribeiro; e Rafael Gomes da Costa. Acusados de homicídio por dolo eventual, eles são considerados foragidos da Justiça. Desde sexta-feira (19), há pedidos de prisão temporária dos três.

De acordo com a Polícia Civil, Zé do Rolo teria construído os prédios enquanto os outros dois seriam corretores informais encarregados da venda dos imóveis. Um possível envolvimento dos três com grupos milicianos está sendo investigado.