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

Oficiais da ativa do Exército atacam Supremo, Lula e Alckmin nas redes

Ricardo Stuckert/Divulgação
Imagem: Ricardo Stuckert/Divulgação

Marcelo Godoy

São Paulo

22/11/2022 08h01Atualizada em 12/12/2022 16h05

Não só os comandantes das Forças Armadas se manifestaram sobre os protestos contra a posse de Luiz Inácio Lula da Silva (PT), as urnas eletrônicas e as decisões judiciais que excluíram das redes sociais perfis de apoiadores do presidente Jair Bolsonaro (PL) que questionaram o resultado da eleição. Outros militares da ativa fizeram ou compartilharam publicações de caráter político-partidário em redes sociais.

Um dos mais ativos é o coronel Alberto Ono Horita, que comandou o 20.º Batalhão de Logística Paraquedista do Exército, foi adido militar nos Emirados Árabes e a partir do ano que vem vai dirigir o Colégio Militar de Curitiba. Em 2019, o general Edson Leal Pujol fez publicar portaria na qual disciplinava o uso das redes sociais. Desde então, a conta do coronel no Twitter registrava pouquíssimas publicações. Isso mudou em 17 de setembro.

Na conta, agora sob o nome de Patriota_PQD (abreviação de paraquedista), apareceu naquele dia mensagem compartilhada sobre uma bolsonarista infiltrada em uma manifestação do "nine". Nine é uma alusão a Lula, que teve um dedo amputado em uma prensa quando era torneiro mecânico.

Seguem-se 13 publicações de caráter político-partidário até 30 de outubro, quando a conta do coronel registra o desabafo: "Vergonha! A mentira prevalece! O crime compensa! Esse é o Brasil!". No dia seguinte à derrota de Bolsonaro, o coronel retuitou publicação com foto do presidente: "Jair Bolsonaro é um líder espetacular, independente do que aconteça, devemos respeitá-lo por resgatar nosso patriotismo e nos dar a chance de lutar. Obrigado, capitão".

Nos dias seguintes, há mais 39 publicações partidárias. Em uma delas, o presidente eleito e futuro comandante em chefe das Forças Armadas é chamado de "ladrão". Há ainda acusações sem provas de fraude nas urnas e ofensas a ministros do Supremo Tribunal Federal.

Contra Alexandre de Moraes, a conta do coronel diz ao compartilhar um vídeo sobre as urnas: "Que beleza, Xandão! Fez tudo para colocar seu amigo Chuchu!!!!" Xandão é uma referência a Moraes e Chuchu, ao vice-presidente eleito Geraldo Alckmin.

Generais. O perfil do coronel não foi o único no Exército que fez publicações críticas a Moraes. O comandante de uma Divisão de Exército retuitou um artigo para explicitar a "censura sob a qual o Brasil vive". Era 24 de outubro. O mesmo fez outro general de divisão, subchefe de uma estrutura militar em Brasília, ao compartilhar publicação sobre a "censura" à rádio Jovem Pan. Era 20 de outubro.

São casos menos intensos do que o do coronel. O TSE havia derrubado contas de políticos bolsonaristas porque divulgariam fake news contra as urnas e agira contra a Jovem Pan, impondo multa a comentaristas. Um perfil de um terceiro general de divisão, um engenheiro militar, compartilhou publicações em solidariedade à rádio. Em uma delas, porém, faz menção ao PT: "Um bom teste para todos os comentaristas compartilharem essa imagem. Quem se recusar veste mais a camisa do PT do que a da JP". A publicação é de 19 de outubro.

O Estadão procurou o coronel, mas não conseguiu localizá-lo até a publicação deste texto. A reportagem também procurou o Exército, mas o comando não se manifestou.