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

Guerra da Rússia-Ucrânia

Notícias do conflito entre Rússia e Ucrânia


Esse conteúdo é antigo

Macron diz que França vai fornecer equipamentos de defesa à Ucrânia

Do UOL, em São Paulo

25/02/2022 12h58

O presidente da França, Emmanuel Macron, disse hoje que o país fornecerá equipamentos de defesa à Ucrânia, invadida pela Rússia.

Em um discurso escrito aos dois órgãos legislativos ses, Macron não detalhou quais seriam os equipamentos, mas informou que fornecerá à Ucrânia uma "assistência orçamentária adicional de 300 milhões de euros [cerca de R$ 1,7 bilhão]" e "fornecerá o material defensivo de que eles precisam".

A França não forneceu armas à Ucrânia anteriormente, mas auxiliou com ajuda humanitária e apoio orçamentário.

O presidente da Ucrânia, Volodymyr Zelensky, afirmou, em vídeo publicado nas redes sociais, que o país se defende sozinho contra a Rússia. O ucraniano também diz que o "país mais poderoso do mundo olhou de longe", numa referência aos Estados Unidos.

Zelensky cobra que a Rússia sofra mais do que sanções, já aplicadas por nações ocidentais. "A Rússia foi atingida ontem por sanções, mas não são suficientes para tirar essas tropas estrangeiras de nosso solo. Só com solidariedade e determinação isso pode ser alcançado."

Conversa 'franca' com Putin

Macron disse que teve uma conversa "franca, direta e rápida" com o presidente da Rússia, Vladimir Putin. O político pediu o fim da ofensiva contra a Ucrânia, que já deixou mais de 130 mortos apenas no primeiro dia de conflito.

"(A ligação) Foi também para pedir que ele discutisse com o presidente (Volodimir) Zelensky, que havia solicitado isso, porque ele não conseguiu contatá-lo", disse Macron a repórteres após uma cúpula da UE em Bruxelas, segundo a SKY News.

O presidente francês considerou útil "deixar o caminho aberto" para um possível diálogo com o mandatário russo quando as condições estiverem adequadas, para tentar pôr fim à ofensiva russa contra a Ucrânia.

Invasão a Kiev

As tropas russas entraram em Kiev, capital da Ucrânia, por volta das 13h50 (horário local), confirmou o prefeito Vitaliy Klitschko. O movimento de militares da Rússia estava sendo acompanhado por aliados da Ucrânia e uma invasão em Kiev era esperada para as próximas horas.

De acordo com fontes militares, Kiev é o principal alvo do presidente russo para "decapitar o governo" ucraniano e instalar um Executivo favorável a Moscou.

O prefeito incentivou que cidadãos peguem em armas para ajudar os soldados ucranianos.

Nesta manhã, o ministro das Relações Exteriores da Rússia, Sergey Lavrov, afirmou que o país está disposto a negociar se a Ucrânia deixar de lutar e "soltar as armas". Segundo o chanceler da Rússia, o país não tem a intenção de ocupar Ucrânia, mas "libertar os ucranianos da opressão".