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

Chico Alves

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Políticos vão à Justiça para impedir desfile militar de tanques no Planalto

Colunista do UOL

09/08/2021 17h51

O senador Alessandro Vieira (Cidadania-SE) e a deputada Tabata Amaral (sem partido-SP) anunciaram que entrarão com uma ação popular para tentar impedir o "desfile militar" com tanques, blindados e soldados que o presidente Jair Bolsonaro programou para amanhã na Esplanada dos Ministérios. Também o PSOL divulgou que vai entrar com mandado de segurança na Justiça com o mesmo objetivo.

Como divulgou com exclusividade a jornalista Thais Oyama, colunista do UOL, o desfile está marcado para acontecer no mesmo dia em que a Câmara analisa a proposta do voto impresso, que é defendida pelo presidente Jair Bolsonaro. A PEC deverá ser derrotada.

"É um absurdo gastar recursos públicos em uma exibição vazia de poderio militar", crítica Alessandro Vieira. "As Forças Armadas, instituições de Estado, não precisam disso. Os brasileiros, sofrendo com as consequências da pandemia, também não precisam. O Brasil não é um brinquedo à disposição de lunáticos".

Para a deputada Tabata Amaral, celebrações militares e desfiles de blindados que ocorrem de uma forma cotidiano na agenda das Três Armas não devem ser usados como desculpa para que o presidente coloque na rua suas ideias autoritárias. "O Brasil é maior do que o Bolsonaro e é importante que as autoridades públicas, inclusive as Forças Armadas, deixem isso claro nesse momento", diz a deputada.

O PSOL anunciou suas providências pelo Twitter: vai entrar com mandado de segurança para impedir desfile. "O caso é grave. O Brasil não vai aceitar intimidações golpistas!", diz o tuíte na conta oficial da legenda.

Blindados e tanques serão deslocados até a frente ao Palácio do Planalto, onde estarão Bolsonaro e o Ministro da Defesa, Walter Souza Braga Netto, que receberão convites para comparecer à Demonstração Operativa, que ocorrerá no dia 16 de agosto, no Campo de Instrução de Formosa (CIF). É a primeira vez em que ao anúncio do evento é precedido de um desfile na Esplanada.