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

UOL Confere

Uma iniciativa do UOL para checagem e esclarecimento de fatos


É falso que votos de quem vai justificar possam ser transferidos

UOL Confere - Post de Oswaldo Eustáquio é falso - Arte/UOL
UOL Confere - Post de Oswaldo Eustáquio é falso Imagem: Arte/UOL

Douglas Maia

Colaboração para o UOL, em Curitiba

15/11/2020 23h00

Publicação divulgada pelo blogueiro bolsonarista Oswaldo Eustáquio neste domingo (15) afirma que a tentativa de um ataque hacker ao sistema do Tribunal Superior Eleitoral (TSE) "revela a fraude nas urnas com a chancela da Justiça eleitoral". Eustáquio é um dos principais acusados no inquérito das fake news que tramita no Supremo Tribunal Federal (STF). E a informação deste post é falsa.

O blogueiro cita como fonte a ex-deputada federal Cristiane Brasil (PTB), que teria afirmado que o ataque confirma que "os votos válidos e os de quem justifica estão em banco de dados diferentes" e que, por isso, "eles podem descarregar os votos de quem vai justificar na esquerda".

Segundo o TSE, o texto "não tem qualquer cabimento fático ou razoabilidade por inúmeras razões". O tribunal afirma que não há como votos de eleitores ausentes serem "transferidos" para qualquer candidato, uma vez que esses eleitores não votaram. "A urna eletrônica só computa os votos que foram efetivamente recebidos, digitados por quem compareceu à seção eleitoral e teve o seu o liberado após a identificação pelos mesários", esclareceu o TSE, em nota.

O tribunal afirma que as justificativas são computadas no Cadastro Nacional de Eleitores, um outro banco de dados. Desta forma, caso um eleitor justifique seu voto e, ainda assim, compareça à urna, o cruzamento destes dados detecta a irregularidade. Nesses casos, "a Corregedoria-Geral da Justiça Eleitoral —em seu papel de fiscal do cadastro— pode adotar medidas de apuração quanto ao fato".

Já o sistema de "totalização" é unificado e contabiliza todos os votos, abstenções e justificativas. Na nota, o TSE explica que "todas essas informações são tratadas em um mesmo sistema de totalização, devidamente auditado e com s digitais lacradas em audiência pública com a participação de partidos políticos, Ministério Público e Ordem dos Advogados do Brasil".

O tribunal ressalta ainda que cada uma das urnas eletrônicas emite um boletim com os votos coletados ao longo do dia. "Assim, eventual tentativa de alteração de banco de dados seria rapidamente identificada com uma simples conferência do Boletim de Urna, que é impresso e entregue a representantes de partidos políticos presentes nos locais de votação e disponibilizados posteriormente na internet", diz o TSE.

Entenda como funciona a urna eletrônica brasileira.

O UOL Confere é uma iniciativa do UOL para combater e esclarecer as notícias falsas na internet. Se você desconfia de uma notícia ou mensagem que recebeu, envie para [email protected].