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

Anonymous ameaça expor 'crimes' da polícia dos EUA; estado confirma ataque

Anonymous publicou vídeo de mais de um minuto com ameaças à polícia dos EUA - Reprodução/Twitter
Anonymous publicou vídeo de mais de um minuto com ameaças à polícia dos EUA Imagem: Reprodução/Twitter

Do UOL, em São Paulo

31/05/2020 13h11

O grupo de hackers Anonymous decidiu se manifestar no Twitter em meio às turbulências nos EUA envolvendo os desdobramentos do caso George Floyd, após um homem negro ser morto durante uma abordagem policial.

Em vídeo publicado na manhã de hoje, o perfil da organização enviou uma mensagem à polícia norte-americana (assista abaixo), e ameaçou expor "muitos crimes" cometidos pela polícia ao mundo todo.

O grupo afirmou ter hackeado uma série de sistemas de autoridades norte-americanas. Tim Waltz, governador do Minnesota, onde Floyd morreu, confirmou que os computadores do estado foram atacados.

No vídeo, o Anonymous diz que as pessoas "estão cansadas da corrupção e da violência de uma organização que promete mantê-las seguras".

"Policiais que matam pessoas e cometem outros crimes precisam ser responsabilizados, como todos nós. Caso contrário, eles acreditarão que têm licença para fazer o que quiserem. Você vai dizer que este é apenas o trabalho de algumas maçãs podres, mas o que falar de oficiais que não fazem nada enquanto cometem ofensas contra as pessoas que encontram? E os departamentos de polícia que se recusam a processar esses criminosos como se fossem um dos cidadãos que eles juraram proteger? As pessoas se cansaram dessa corrupção e violência de uma organização que promete mantê-las seguras. Após os eventos dos últimos anos, muitas pessoas agora estão começando a aprender que vocês não estão aqui para nos salvar, mas sim para nos oprimir e realizar a vontade da classe dominante criminal", disse um interlocutor.

Na sequência da mensagem, o grupo citou que a sociedade está "acordando" diante do "sistema global de opressão".

"Vocês estão aqui para manter a ordem das pessoas no controle. De fato, você é o próprio mecanismo que as elites usam para continuar seu sistema global de opressão, e o planeta finalmente está acordando para isso. Eles estão ficando cada vez mais zangados toda vez que veem sangue sem necessidade derramado sem consequências."

Por fim, o Anonymous ameaçou expor "muitos crimes" cometidos pela polícia ao mundo todo. Não há, no entanto, detalhes sobre quando isso seria feito.

"Os oficiais devem enfrentar acusações criminais, e o oficial Chauvin [Derek Chauvin, suspeito de ter assassinado Floyd], especialmente, deve enfrentar acusações de assassinato. Infelizmente, não confiamos na sua organização corrupta para fazer justiça, então estaremos expondo seus muitos crimes ao mundo. Nos aguarde" concluiu.

Sistemas hackeados

O grupo afirmou ainda ter hackeado uma série de sistemas de autoridades norte-americanas e pediu justiça por George Floyd.

Há poucos minutos, o governador de Minnesota, Tim Walz, confirmou que os computadores do estado foram atacados.

"Antes de nossa operação começar na noite ada, um ataque muito sofisticado de negação de serviço em todos os computadores do estado foi executado", disse ele em entrevista publicada na CNN.

Entenda o caso

A morte de um homem negro em Minnesota, nos EUA, causou uma onda de indignação depois da divulgação de um vídeo que mostra um policial branco ajoelhado no pescoço dele.

Nas imagens, colhidas na segunda-feira (25), o homem, identificado como George Floyd reclama e diz repetidamente: "Não consigo respirar".

Pouco depois, ele parece não se mexer, antes de ser colocado em uma maca e transferido para uma ambulância.

O acusado de ass Floyd é um ex-policial branco de Minneapolis. Derek Chauvin, de 44 anos, deve comparecer a um tribunal amanhã.

A polícia local disse em comunicado que Floyd morreu "após um incidente médico durante uma interação policial".