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

Guarda é flagrado dando tapa no rosto de motociclista em Salvador; vídeo

Ed Rodrigues

Colaboração para o UOL

24/04/2021 20h51

Uma discussão entre um motociclista e um guarda municipal acabou em agressão, na Bahia. Após um bate-boca, o agente desferiu um tapa contra a face do motoqueiro. A violência ocorreu no bairro de Brotas, em Salvador, durante uma abordagem de rotina.

A confusão foi filmada e o registro circula nas redes sociais. No vídeo, que não mostra o atrito desde o início, é possível ouvir o agente mandar o homem calar a boca.

O jovem, que não foi identificado, retruca: "Quem é você para me mandar calar a boca?", questionou o motociclista. É nesse momento que o agente parte para cima e estapeia o homem.

A postura do guarda causou revolta em populares que avam pelo local. A terapeuta Karoline Meireles presenciou a agressão.

"O rapaz foi interceder pelo amigo, que parece que estava sem habilitação. Ele ficou rebatendo o guarda. Aí, eles discutiram e, para mim, o guarda perdeu a razão. Porque nada justifica agredir", contou ao UOL.

"As pessoas que estavam ando não gostaram e quase partiram para cima do guarda. Foi a maior confusão. Eles levaram os motoqueiros presos", continuou.

Os agentes conduziram os dois motociclistas para a delegacia da área e registraram Boletim de Ocorrência. Segundo a Polícia Civil, no registro da ocorrência, os agentes relataram que o rapaz tentou intimidar a equipe de fiscalização.

O UOL procurou a Guarda Municipal de Salvador para questionar sobre a agressão promovida pelo agente. Em nota, órgão informou que a blitz abordou um jovem por ele transportar um botijão de gás na moto.

De acordo com a Guarda, o homem também não tinha CNH (Carteira Nacional de Habilitação). Ainda segundo o órgão, outro motociclista se apresentou como proprietário da moto e tentou impedir a apreensão do veículo.

Sobre a agressão, a Guarda Municipal disse que será investigada.

Confira a nota da Guarda Municipal na íntegra:

No final da tarde de ontem (23), equipes da Transavaldor realizavam uma blitz na região de Brotas, proximidades do supermercado Atakarejo, quando um homem tentou evadir da ação. Momento em que os agentes da GCM foram acionados para contê-lo, pois este pilotava uma moto, sem o documento, sem CNH, alteração nas características do veículo, além de está transportando produtos perigosos (botijão de gás) sem autorização para tal, ações onde é prevista a remoção do veículo.

Outro homem, que se identificou como proprietário da motocicleta, tentou impedir a apreensão do veículo, intimidando e desacatando os agentes de trânsito, sendo ambos conduzidos para a Central de Flagrantes pela Guarda Civil Municipal, para adoção das medidas cabíveis. Qualquer situação de excesso, por parte dos agentes da GCM, será devidamente apurado pela Corregedoria do órgão.