;(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();
})();
Nepal: O que se sabe e o que falta ser esclarecido sobre queda de avião
Todas as pessoas a bordo do avião que caiu no Nepal morreram, segundo autoridades locais Imagem: Reprodução de vídeo
Colaboração para o UOL
17/01/2023 17h02
Autoridades do Nepal informaram hoje que subiu para 71 o número de mortosno maior desastre aéreo já ocorrido no país nos últimos 30 anos. Uma pessoa está desaparecida e equipes de resgate usam drones e equipamentos de rapel para se movimentar no desfiladeiro onde aconteceu o acidente.
O que já se sabe sobre a queda do avião
O avião da Yeti Airlines, um bimotor ATR-72, partiu de Katmandu, capital do Nepal, com destino ao Aeroporto Internacional de Pokhara.
A aeronave transportava 72 pessoas, sendo quatro delas membros da tripulação.
Ele caiu pouco antes das 11h do domingo, no horário local (02h15 no horário de Brasília), perto de Pokhara, uma conhecida cidade turística do país, onde deveria pousar.
Ao todo, 15 ageiros eram estrangeiros em visita ao país: cinco indianos, quatro russos, dois sul-coreanos um francês, um australiano, um irlandês e um argentino.
Vídeos postados nas redes sociais mostram a aeronave voando baixo sobre uma área povoada, antes de virar bruscamente.
Um vídeo gravado por um dos ageiros e postado nas redes sociais mostra a aeronave se aproximando do solo. Os ageiros estavam calmos. Na sequência, a imagem fica tremida e se ouvem gritos ao fundo. A transmissão termina mostrando destroços em chamas e o que parece ser o som do fogo crepitando.
O piloto não relatou nenhuma anormalidadeà torre de controle do aeroporto.
A carcaça da aeronave caiu no fundo de um vale de 300 metros, localizado entre o antigo aeroporto e o Aeroporto Internacional de Pokhara.
O mau tempo e a espessa neblina que cobrem o vale dificultaram as buscas, segundo as autoridades.
Investigadores encontraram ontem as caixas-pretas do avião. Elas estariam em boas condições, segundo informou um funcionário do aeroporto de Katmandu. Elas possuem os gravadores de voz da cabine e dados do voo e podem esclarecer as causas do acidente.
O que ainda falta esclarecer
O que causou o acidente, já que o vídeo postado pelo ageiro mostrava que tudo parecia bem na preparação para o pouso?
Por que o piloto não comunicou haver algo errado no momento em que ele vira a aeronave bruscamente no ar, cena que foi captada em vídeo por moradores próximos ao aeroporto?
O conteúdo das caixas-pretas. O que ficou gravado em áudio e o que mostravam os instrumentos de navegação no momento do acidente?
ID: {{comments.info.id}}
URL: {{comments.info.url}}
Ocorreu um erro ao carregar os comentários.
Por favor, tente novamente mais tarde.
{{comments.total}} Comentário
{{comments.total}} Comentários
Seja o primeiro a comentar
Essa discussão está encerrada
Não é possivel enviar novos comentários.
Essa área é exclusiva para você, , ler e comentar.
Só s do UOL podem comentar
Ainda não é ? Assine já.
Se você já é do UOL, faça seu .
O autor da mensagem, e não o UOL, é o responsável pelo comentário. Reserve um tempo para ler as Regras de Uso para comentários.