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

PE: Cúpula do governo não deu ordem para atirar em protesto, diz governador

Governador Paulo Câmara se reuniu hoje com o novo comandante da PM do estado, coronel Roberto Santana - Hélia Scheppa/Governo do Pernambuco
Governador Paulo Câmara se reuniu hoje com o novo comandante da PM do estado, coronel Roberto Santana Imagem: Hélia Scheppa/Governo do Pernambuco

Colaboração parar o UOL

02/06/2021 20h15Atualizada em 02/06/2021 20h44

O governador de Pernambuco, Paulo Câmara (PSB), disse hoje que a ordem para atirar contra manifestantes em Recife no último sábado (29) não partiu do Centro Integrado de Comando e Controle, que acompanhava o protesto.

De acordo com o governador, representantes das polícias Civil e Militar e a cúpula da Secretaria estadual de Defesa Social acompanhavam o movimento contra o presidente Jair Bolsonaro (sem partido) que acontecia na capital pernambucana.

"Todos eles estavam atuando nesta questão. Os fatos que originaram essa ação não saíram desse centro integrado, pela informação que nos foi dada pelo secretário de Defesa Social", disse o governador, em entrevista à TV Globo.

Câmara criticou a ação truculenta dos policiais militares, que atiraram balas de borracha e bombas de efeito moral nos manifestantes. Duas pessoas gravemente feridas, dentre elas, um homem que perdeu a visão do olho esquerdo.

A vereadora Liana Cirne (PT) chegou a ser agredida por um PM, que jogou spray de pimenta em seu rosto.

Não concordamos de maneira nenhuma com a forma que foi feita essa ação policial no último sábado. Essa polícia que joga bala no rosto das pessoas, que impede socorro de vítimas, que atua da forma que atuou... essa polícia não pode atuar
Paulo Câmara

Sete PMs identificados

Segundo o governador, três oficiais e quatro praças da Polícia Militar envolvidos nas agressões foram identificados e afastados de suas funções. Eles são alvos de quatro inquéritos que estão em andamento nas polícias. O Ministério Público de Pernambuco também abriu uma investigação.

"Os afastamentos vão ocorrer desde a identificação. Tão logo haja novas identificações, novos afastamentos ocorrerão (...) Podem ocorrer vários tipos de punição, inclusive a demissão, caso chegue a tal extremo", afirmou.

Após a repercussão negativa da ação dos policiais, Câmara trocou ontem o comandante da PM do estado. Saiu o coronel Vanildo Maranhão, que foi substituído pelo coronel José Roberto Santana.

Hoje, o governador se reuniu com o novo comandante e o secretário de Defesa Social, Antonio de Pádua.

Tratamos das ações de combate à criminalidade e ponderamos sobre a garantia de uma polícia que preserve os direitos humanos e proteja o cidadão. Estamos confiantes no seu trabalho e vamos continuar nos dedicando à investigação dos fatos que ocorreram no último sábado, para dar respostas ao povo pernambucano
Paulo Câmara, em foto compartilhada nas redes sociais