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

Rússia tem soldados suficientes para invadir a Ucrânia, dizem EUA

Imagem mostra trem com soldados e veículos militares da Rússia chegando para exercícios em Belarus - Ministério da Defesa de Belarus/AFP
Imagem mostra trem com soldados e veículos militares da Rússia chegando para exercícios em Belarus Imagem: Ministério da Defesa de Belarus/AFP

Da Reuters, em Moscou (Rússia) e Washington (EUA)

11/02/2022 20h07

A Rússia reuniu militares suficientes perto da Ucrânia para lançar uma grande invasão, disse Washington nesta sexta-feira, ao pedir a todos os cidadãos norte-americanos que deixem o país dentro de 48 horas, depois que Moscou endureceu ainda mais sua resposta à diplomacia ocidental.

Um ataque russo poderia começar a qualquer dia e provavelmente começaria com um ataque aéreo, disse o conselheiro de segurança nacional da Casa Branca, Jake Sullivan.

Ele disse que a inteligência dos EUA acredita que um ataque rápido a Kiev também é uma possibilidade, e que o presidente russo, Vladimir Putin, pode ordenar uma invasão antes do final dos Jogos Olímpicos de Inverno em Pequim, em 20 de fevereiro.

No entanto, não está claro se Putin deu definitivamente essa ordem, afirmou Sullivan em uma entrevista coletiva.

Putin e o presidente dos EUA, Joe Biden, falarão por telefone no sábado, de acordo com uma autoridade da Casa Branca e a agência de notícias russa RIA. A agência de notícias russa TASS informou que Putin falará com o presidente francês, Emmanuel Macron, no mesmo dia.

Quatro autoridades dos EUA disseram à Reuters nesta sexta-feira que Washington enviará 3.000 soldados extras para a Polônia nos próximos dias para tentar ajudar a tranquilizar os aliados da Otan. Eles se somam aos 8.500 já em alerta para mobilização à Europa, se necessário.

Anteriormente, imagens de satélite de uma empresa dos EUA mostraram novas mobilizações militares russas em vários locais perto da fronteira.

Depois de dizer à NBC News que as coisas na Ucrânia "podem enlouquecer rapidamente", Biden falou por telefone sobre a crise com os líderes de Reino Unido, Canadá, França, Alemanha, Polônia e Romênia, bem como os chefes da Otan e da União Europeia.

Os líderes levantaram preocupações sobre o aumento militar da Rússia, expressaram o desejo de uma solução diplomática e concordaram em fazer esforços coordenados para impedir a agressão russa, inclusive estando prontos para impor "consequências enormes e custos econômicos graves" a Moscou se a Rússia optar pela escalada militar, disse a Casa Branca após a ligação.

O Ministério das Relações Exteriores da Rússia afirmou que os países ocidentais, com a ajuda da mídia, estão espalhando informações falsas para tentar desviar a atenção de suas próprias ações agressivas.

"Devastadora e destrutiva"

O primeiro-ministro britânico, Boris Johnson, que se juntou a outras nações para pedir a seus cidadãos que deixem a Ucrânia, disse na ligação com Biden que teme pela segurança da Europa.

Ele enfatizou a necessidade de "um pacote pesado de sanções econômicas pronto para ser lançado, caso a Rússia tome a decisão devastadora e destrutiva de invadir a Ucrânia", disse o gabinete de Johnson.

Japão, Letônia, Noruega e Holanda também aconselharam seus cidadãos a deixarem a Ucrânia imediatamente. Israel afirmou que estava retirando parentes de funcionários da embaixada.

Moscou, enquanto isso, disse que as respostas enviadas esta semana pela UE e pela Otan às suas demandas de segurança mostravam "desrespeito".