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

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Forças Armadas sujaram as fardas com golpismo

Maria Aparecida Villas Bôas, mulher do ex-comandante do Exército, general Eduardo Villas Bôas, em um acampamento golpista - Reprodução de vídeo
Maria Aparecida Villas Bôas, mulher do ex-comandante do Exército, general Eduardo Villas Bôas, em um acampamento golpista Imagem: Reprodução de vídeo

Colunista do UOL

16/01/2023 04h00

Três dias antes do fim do ano, Maria Aparecida Villas Bôas ou sorridente à bordo de uma van próximo aos golpistas acampados em frente ao QG do Exército, em Brasília. Acenou da janela e bastou apontar para a parte de trás do veículo adaptado para pessoas com deficiência para que os bolsonaristas logo entendessem: o próprio ex-comandante do Exército, general da reserva Eduardo Villas Bôas, marido de Maria Aparecida, estava ali. Ele é portador de esclerose lateral amiotrófica e se movimenta em cadeira de rodas. "Ai, chega arrepia", disse uma golpista.

O vídeo que registra esse eio foi publicado pela coluna. Em várias outras oportunidades, a mulher de Villas Bôas marcou presença entre aqueles traidores da Pátria, confraternizando e posando para as câmeras de vários deles, como se estivesse em um piquenique.

A presença de personagens assim, parentes e amigos de militares da reserva e da ativa, foi um dos motivos que fizeram com que o comandante do Exército, Júlio Cézar Arruda, impedisse a Polícia Militar do Distrito Federal e o próprio ministro da Justiça e Segurança Pública, Flávio Dino, de prender os participantes do acampamento (a informação sobre o ministro foi publicada no jornal americano The Washington Post).

Em quase todo o Brasil, os bolsonaristas conspiradores contaram com o apoio de militares da reserva, da ativa e seus familiares. Basta lembrar de outro caso publicado na coluna, o do general André Luiz Ribeiro Campos Allão, comandante da 10ª Região Militar do Exército, em Fortaleza (CE), que declarou à tropa que não acataria ordem para tirar os acampados da frente de seu quartel, "mesmo que existam ordens de outros poderes no caminho contrário".

Casos como esses somam-se aos vários indícios de que parte da caserna decidiu jogar no ralo a hierarquia e a disciplina para mergulhar de cabeça na aventura golpista, que teve o ápice na invasão dos palácios do Executivo, Legislativo e Judiciário no dia 8 de janeiro.

Um desses indicativos foi produzido por gente como o general Walter Braga Netto, que não se vexou de incentivar acampados bolsonaristas a manter a mobilização criminosa. "Vocês não percam a fé... é o que eu posso falar agora", disse ele, em conversa gravada em vídeo. "Pessoal, fica firme. Tem que dar um tempo".

Por mais que tenham tentado esconder a participação direta dos seus no vandalismo institucional que por pouco não saiu vitorioso, as Forças Armadas não arão incólumes. O acampamento à frente do QG acolheu por dezenas de dias criminosos da pior espécie, de homicidas a traficante de drogas. Saíram dali as hordas que depredaram os prédios que simbolizam a democracia - e para ali retornaram após o vandalismo. O Exército não os puniu.

Se é certo que os militares legalistas não quiseram aceitar a detonação do golpe proposto por Jair Bolsonaro, por sua vez os saudosos de 1964, aqueles que rendem homenagens ao covarde Brilhante Ustra, conseguiram emporcalhar muitas fardas na lama do golpismo, misturando-se a fanáticos da extrema-direita ou incentivando-os.

O objetivo dos brucutus era que o Exército fosse chamado como salvador do poder civil. Não conseguiram alcançar o objetivo.

Se realmente querem se integrar à vida democrática, as Forças Armadas precisam expurgar o golpismo de suas colunas.

A depuração deve ser feita com serenidade, mas também com rigor.

Essa é a hora da limpeza.