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

"Por mim, botaria 60", diz Bolsonaro sobre novo limite de pontos na CNH

Stella Borges

Do UOL, em São Paulo

05/06/2019 13h02

Um dia depois de apresentar à Câmara um projeto de lei que sugere, entre outros, um aumento de 20 para 40 no limite de pontos para cassação da CNH (Carteira Nacional de Habilitação), o presidente Jair Bolsonaro (PSL) disse hoje que, se a medida dependesse apenas dele, o limite seria ainda maior: 60 pontos.

Especialistas em engenharia de tráfego, segurança viária, medicina e direito do trânsito mostraram receio que as medidas, se aprovadas, resultem na elevação de acidentes fatais no país.

"Apresentamos um projeto para fazer com que a carteira nacional de habilitação e a sua validade de 5 para 10 anos. Para que o caminhoneiro que transporta o que o Centro-Oeste produz não perca sua carteira com 20 pontos e sim com 40. Por mim, eu botaria 60", afirmou o presidente.

A declaração foi dada nesta manhã em cerimônia do lançamento de projeto de revitalização do rio Araguaia, na cidade de Aragarças (GO). Ele acrescentou ainda que "a indústria da multa vai deixar de existir no Brasil", repetindo uma promessa feita durante a campanha eleitoral.

Além do aumento no limite de pontos e a ampliação de 5 para 10 anos do prazo de validade da CNH, o projeto também propõe o fim da exigência de exame toxicológico para motoristas profissionais e retirada da multa para motoristas com crianças fora da cadeirinha -- neste caso, eles seriam apenas advertidos.

Bolsonaro anda de moto aquática em Goiás

UOL Notícias

Ontem, Bolsonaro disse que acolheu sugestões do presidente da Câmara, Rodrigo Maia (DEM-RJ), e de outros projetos que já tramitavam na Casa sobre o tema.

As mudanças propostas na CNH não entram em vigor imediatamente. O projeto recebido pela Mesa da Câmara será agora distribuído às comissões e, se for levado ao plenário, precisa ser aprovado por maioria simples (votos favoráveis de metade mais um entre os parlamentares presentes na sessão).

CNH: Especialistas avaliam mudanças propostas por Bolsonaro

Band Notí­cias