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

Justiça manda presos de Tremembé em grupos de risco para regime domiciliar

Vista da penitenciária de Tremembé - Divulgação/Governo de SP
Vista da penitenciária de Tremembé Imagem: Divulgação/Governo de SP

Do UOL, em São Paulo

27/03/2020 22h06

A Justiça de São Paulo determinou, na noite de hoje, que todos os presos do Centro de Progressão Penitenciária de Tremembé que integram grupos de risco do novo coronavírus devem cumprir pena em regime domiciliar. Os presídios da cidade são conhecidos por abrigar "detentos famosos".

Cumprem pena no complexo prisional alguns nomes conhecidos como Suzane von Richthofen, Elize Matsunaga, Anna Carolina Jatobá e Alexandre Nardoni.

A decisão desta noite é da juíza Sueli Zeraik de Oliveira Armani, do Departamento Estadual de Execução Criminal (Deecrim) de São José dos Campos e da Vara de Execução Criminal (VEC) de Taubaté.

A quantidade de detentos que serão liberados ainda não foi divulgada pelo Tribunal de Justiça.

Segundo a SAP (Secretaria de istração Penitenciária), o presídio opera com 2.427 detentos — 90,8% do total da capacidade da penitenciária.

SP lidera casos de covid-19

São Paulo é o estado brasileiro com a maior quantidade de casos confirmados de coronavírus e mortes pela covid-19: 1.223 casos e 68 óbitos.

Diante da pandemia, o governador João Doria (PSDB) determinou que penitenciárias do estado ficarão encarregadas de produzir máscaras de proteção. As oficinas das Penitenciárias Femininas I e II de Tremembé serão responsáveis pela entrega de 18 mil peças por dia.

Foi decidido que o sistema penitenciário deve produzir 26 mil máscaras hospitalares por dia até chegar a 320 mil unidades. A medida entrou em vigor nesta quarta-feira.

No país, o Ministério da Saúde confirmou, nesta tarde, 3.417 casos e 92 mortes.

Presídio foi palco de fuga e rebelião

No dia 16, após a suspensão de saídas temporárias e visitas nos presídios federais e estaduais, a penitenciária registrou rebelião e fugas — que também ocorreram em outras unidades prisionais do estado.

Segundo a SAP, 218 presos fugiram do presídio de Tremembé e ao menos 116 teriam sido recapturados. A contagem de fugitivos, no entanto, ainda não é exata e é apontada como um dos empecilhos para determinar o número exato de presos que devem seguir para o regime domiciliar.

Errata: este conteúdo foi atualizado
Diferentemente do que foi publicado anteriormente, a decisão se refere ao P de Tremembé, não ao CDP.