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

General Heleno troca ministério da Defesa no governo Bolsonaro pelo GSI

O presidente eleito, Jair Bolsonaro, participa de um café da manhã com oficiais da Aeronáutica em Brasília - Reprodução/Twitter FAB
O presidente eleito, Jair Bolsonaro, participa de um café da manhã com oficiais da Aeronáutica em Brasília Imagem: Reprodução/Twitter FAB

Luciana Amaral e Antonio Temóteo

Do UOL, em Brasília

07/11/2018 10h01Atualizada em 07/11/2018 12h11

O general Augusto Heleno, um dos principais auxiliares do presidente eleito, Jair Bolsonaro (PSL), confirmou nesta quarta-feira (7) que será ministro do GSI (Gabinete de Segurança Institucional). Inicialmente, ele foi anunciado para assumir a Defesa. A equipe de transição de governo também confirmou a informação.

“Eu vou para o GSI. O presidente escolheu”, afirmou, após café da manhã no Comando da Aeronáutica com Bolsonaro e grupo de assessores e militares. Por enquanto, não há um novo nome indicado para o Ministério da Defesa.

O vice-presidente eleito, general do Exército da reserva Antônio Hamilton Mourão (PRTB), afirmou na manhã desta quarta que Bolsonaro escolherá outro oficial-general para o ministério da Defesa. “Ele está pensando talvez em alguém da Marinha, para contemplar todas as Forças”, afirmou Mourão.

Ao ser questionado sobre o motivo para a troca, Mourão diz que “Heleno é uma cabeça brilhante que não pode ser desperdiçada”. Mourão também disse que o presidente eleito deve substituir os comandantes da Marinha, da Aeronáutica e do Exército.

Mourão e Heleno estiveram no primeiro compromisso de Bolsonaro nesta quarta, em Brasília. Eles participaram de um café da manhã com o comandante da Aeronáutica, tenente-brigadeiro do ar Nivaldo Rossato, na sede da Força na Esplanada dos Ministérios.

Bolsonaro estava acompanhado também do general Oswaldo Ferreira (cotado para Infraestrutura) e dos filhos Jair Renan e Flávio Bolsonaro (PSL-RJ), deputado federal e eleito para o Senado.

Pelas redes sociais, a Aeronáutica informou que Rossato apresentaria um “panorama de assuntos” referentes à Força. Nessa terça (6), Bolsonaro indicou que as Forças Armadas não sofreriam restrições financeiras apesar de cortes previstos no Orçamento do ano que vem.

Ainda nesta quarta, Bolsonaro terá agendas no STF (Supremo Tribunal Federal), STJ (Superior Tribunal de Justiça), no CCBB (Centro Cultural Banco do Brasil) - base da equipe de transição -, e no Palácio do Planalto, onde terá o primeiro encontro a sós com o atual presidente, Michel Temer (MDB).

O presidente eleito chegou a Brasília ontem e manteve uma série de reuniões com militares, além de ter participado de sessão solene no Congresso Nacional em homenagem aos 30 anos da promulgação da Constituição Federal.