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

Incêndio em balsa italiana com 478 pessoas deixa 5 mortos; 190 são resgatadas

Do UOL, em São Paulo

28/12/2014 11h50Atualizada em 29/12/2014 12h47

Um oficial da Guarda Costeira italiana informou que pelo menos cinco pessoas morreram neste domingo (28) em decorrência do incêndio em uma balsa italiana que se dirigia da cidade grega de Patras para Ancona, na Itália.

Até o momento 190 pessoas das 478 que estavam a bordo foram resgatadas. Segundo a Guarda Costeira italiana, o homem, um ageiro grego, morreu ao cair na água com sua esposa quando tentava escapar das chamas. A mulher foi resgatada com vida. Os dois foram levados para a cidade italiana de Brindisi.

Os outros ageiros aguardam resgate no deque superior da embarcação.

O fogo começou por volta das 4h (meia-noite em Brasília) por motivos ainda desconhecidos na garagem da embarcação "Norman Atlantic" pouco depois da embarcação deixar a Grécia. Além dos ageiros e da tripulação, há 222 veículos na balsa.

As autoridades italianas conseguiram acoplar um gancho a proa do ferry para evitar que o forte vento e a chuva desloquem a embarcação pelo mar durante a noite. Conforme o primeiro-ministro da Itália, Matteo Renzi, e a ministra da Defesa, Roberta Pinotti, as operações de estabilização e de reboque começarão nas próximas horas.

O "Norman Atlantic" está a poucas milhas do litoral da Albânia para onde foi impulsionado pelo forte vento. A maioria dos ageiros é da Grécia (234), Turquia (54) e Itália (22). Há ainda pessoas da Romênia, Rússia, Áustria, Hungria, Suíça, Croácia, Geórgia, Síria, Suécia, Canadá, Ucrânia, Egito, Alemanha, Afeganistão, Albânia, Malta, Bulgária e Macedônia.

O ministro da Marina Mercante da Grécia, Miltiadis Varvitsiotis, disse que a combinação de muito mau tempo, com ventos de até 88 quilômetros por hora, e o fogo tornam a operação extremamente complicada.

"Estamos fazendo tudo que podemos para salvar as pessoas a bordo e ninguém, ninguém vai ficar impotente nesta situação difícil", disse Varvitsiotis. "É uma das operações de resgate mais complicadas que nós já fizemos".

Na operação de resgate participam sete embarcações privadas, uma fragata da armada grega e quatro lanchas da guarda litorânea, além de três helicópteros e dois aviões das forças aéreas grega e italiana.

A guarda litorânea italiana enviou três helicópteros e duas lanchas de supervisão ao lugar do fato.

Varvitsiotis informou que o comando da operação de resgate é coordenado pelas autoridades italianas, com apoio da Grécia.

Fogo no chão

ageiros que estão a bordo da nave afirmaram em ligações telefônica que as condições "são terríveis" pois as chamas já tomaram dois terços da embarcação, o que contradiz informações iniciais que indicavam que o fogo estava sob controle.

"O navio ainda está em chamas, o chão está queimando", disse o ageiro George Styliaras por telefone a uma televisão grega, acrescentando que a fumaça dificultava a respiração. "Não sabemos quanto tempo nós podemos aguentar". As temperaturas frias do inverno tornariam a sobrevivência no mar difícil.