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

Qatar tem reforço de militares italianos para segurança da final da Copa

Forças de segurança do Qatar nos arredores do Estádio Al Bayt antes da abertura da Copa do Mundo - Salih Zeki Fazlioglu/Agência Anadolu via Getty Images
Forças de segurança do Qatar nos arredores do Estádio Al Bayt antes da abertura da Copa do Mundo Imagem: Salih Zeki Fazlioglu/Agência Anadolu via Getty Images

Do UOL, em São Paulo

17/12/2022 09h20

Classificação e Jogos

Um contingente de 560 militares italianos foi enviado para Doha em outubro para auxiliar na segurança da Copa do Mundo do Qatar.

Os soldados europeus vão participar das operações da grande final e da disputa pelo terceiro lugar do torneio.

No que vão auxiliar?

  • Os soldados italianos estarão prontos para ajudar em situações de emergência, atos hostis ou terrorismo nos dois últimos jogos do Mundial da Fifa.
  • Na proteção de complexos industriais, shoppings e locais com aglomeração de pessoas.
  • As tropas italianas, incluindo a unidade de especialistas caninos, estão preparadas para intervir "em caso de alarmes devido a situações que possam ameaçar infraestruturas críticas como estádios, portos e aeroportos".
  • Estão presentes também outros contingentes internacionais da França, Paquistão, Reino Unido, Estados Unidos e Turquia, segundo a agência ANSA.

"É uma missão que decorre de um pedido específico do governo do Qatar, de colocar em licitação ativos altamente especializados em setores muito sensíveis. É a primeira vez que estamos envolvidos no apoio à gestão de um evento como a Copa do Mundo, mas é um modelo vencedor que nos orgulha e que pode ser replicado em outros eventos internacionais", explicou o general Giuseppe Bossa, comandante da operação.

Delegação italiana

  • Conta com componentes terrestres da base da Brigada Sassari do Exército.
  • Militares para operações no mar, por meio do navio Thaon di Revel, da Marinha, que monitora águas internacionais.
  • Representantes da Aeronáutica, que cuida do controle do espaço aéreo.
  • Os Carabinieri, que participam da atividade da Polícia Militar e auxiliam as forças locais.
A grande decisão será disputada entre Argentina e França amanhã (18), no Estádio Lusail. Já o confronto entre Marrocos e Croácia acontece hoje (17), Khalifa International. Ambas as partidas serão às 12h (de Brasília).