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

Derrotado em SP, Levy Fidelix pede que TSE cancele resultado das eleições

Presidente do PRTB, Levy Fidelix teve 0,22% dos votos para a prefeitura de São Paulo - Reprodução/Redes Sociais
Presidente do PRTB, Levy Fidelix teve 0,22% dos votos para a prefeitura de São Paulo Imagem: Reprodução/Redes Sociais

Do UOL, em São Paulo

17/11/2020 17h06

Candidato derrotado à Prefeitura de São Paulo, Levy Fidelix (PRTB), protocolou na noite de ontem um pedido para que o TSE (Tribunal Superior Eleitoral) cancele as eleições até que sejam esclarecidos os ataques cibernéticos aos sistemas da Justiça Eleitoral. Sem apresentar provas, Fidelix levantou dúvidas a respeito a idoneidade da votação em função da demora na divulgação dos resultados das eleições.

Presidente do PRTB, partido do vice-presidente Hamilton Mourão, Fidelix citou no documento que apuração teve "velocidade inferior" em comparação a outros anos.

Segundo o presidente do TSE, Luis Roberto Barroso, o atraso foi provocado pela ausência de testes prévios no novo supercomputador responsável pela totalização dos votos no país, centralizada pela primeira vez no tribunal.

No dia da votação do primeiro turno os sistemas também foram alvos de ataques. Barroso afirmou que os ataques foram neutralizados e não tiveram qualquer interferência nas eleições. Ele acusou "milícias digitais" de se articularem para tentar desacreditar as instituições do país.

Além da lentidão na divulgação dos resultados, houve problemas nos aplicativos de e-título, mencionados por Fidelix na petição.

"Os graves fatos aqui narrados põem em sérias dúvidas a inviolabilidade do voto, a segurança das urnas eletrônicas e a lisura do pleito", diz o presidente do PRTB.

Levy Fidelix teve 0,22% dos votos na eleição para a prefeitura paulistana. Avançaram ao segundo turno, no município, os candidatos Bruno Covas (PSDB), com 32,85%, e Guilherme Boulos (PSOL), com 20,24%.

PRTB PEDE CANCELAMENTO DAS ELEIÇÕES NO TSE ATÉ QUE INVASÃO DAS URNAS SEJA ESCLARECIDA.

Publicado por Levy Fidelix em Terça-feira, 17 de novembro de 2020

Centralização no TSE

Esta foi a primeira eleição em que o TSE centralizou a totalização dos votos — ou seja, a soma dos votos e compilação de dados de todas as urnas — no sistema do próprio tribunal.

Em outras eleições esse processo era feito nos 27 tribunais eleitorais regionais de forma independente.

A centralização no TSE foi uma recomendação da Polícia Federal feita após as eleições de 2018, com o objetivo de aumentar a segurança do processo e reduzir os pontos de vulnerabilidade do sistema.

A falha no sistema levou a um atraso de de cerca de duas horas e meia na divulgação final dos resultados. A apuração em todo o país só foi finalizada às 23h55, o que representa um atraso de pouco mais de duas horas e meia em relação à última eleição, em 2018.