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

Gretchen rebate críticas por mostrar bumbum aos 63: 'Não interessa a idade'

Gretchen usou look decotado para show em Belém ao lado do marido, o músico Esdras de Souza - Reprodução/Instagram
Gretchen usou look decotado para show em Belém ao lado do marido, o músico Esdras de Souza Imagem: Reprodução/Instagram

De Splash, em São Paulo

08/10/2022 10h12Atualizada em 08/10/2022 20h49

Gretchen defendeu a liberdade feminina ao rebater as críticas que recebeu por deixar o bumbum a mostra durante seu show em Belém do Pará, ao lado do marido, o músico Esdras de Souza. No post mostrando o figurino, ela já havia exaltado que usa as roupas que prefere "independente da idade", o que não evitou os comentários de seguidores afirmando que a roupa sensual seria inapropriada para a idade da cantora, de 63 anos.

Algumas horas após a apresentação, que aconteceu na noite de quinta (6), a cantora foi aos stories do Instagram para responder aos "haters", afirmando que não se abala com as opiniões negativas a respeito de suas escolhas e que continuará fazendo "o que quer".

"Eu fiz um post da roupa que eu usei ontem e é lógico que muitas pessoas infelizes vieram falar da minha roupa. Quando é que vocês haters e mulheres infelizes, recalcadas, mal-amadas, vão se tocar de que o que vocês falam não me importa? Não me importa nada disso, a única opinião que importa na minha vida é a do meu marido, e ainda assim ele acha maravilhoso, ele acha lindo me ver livre e eu mesma, usando o que eu quero e fazendo o que eu quero", afirmou Gretchen.

Ela ainda atribuiu os comentários negativos que recebeu na postagem ao machismo e etarismo de alguns dos seguidores — se referindo às pessoas que discriminam mulheres e idosos.

"Acho que encontrei um homem que deixou umas risadinhas, ele deixou umas risadinhas porque ele deve ser machista. deve ser aquele tipo de homem que acha que a mulher deve vestir o que ele quer, então eu não me importo, porque hoje eu tenho o homem mais incrível do mundo, com a alma mais feminina do mundo, que entende que pra ter alguém do lado dele tem que deixar voar, como eu faço com ele também", discursou Gretchen, aproveitando para se declarar a Esdras, com quem se casou em 2020.

Gretchen concluiu a mensagem aos críticos afirmando que não deixará de usar roupas ousadas e destacando que enxerga uma mensagem positiva para outras mulheres em sua postura depois dos 60 anos, mesmo em meio a algumas respostas negativas.

"E sabe o que é mais importante para mim quando eu faço um post desse, usando coisas que dizem que não condizem com a minha idade? Eu inspiro mulheres a se libertarem, a serem elas mesmas, a estarem lindas com 40, 50, 60, 70. Gente, não existe idade. Hoje, nós mulheres de 60, 70, somos as antigas de 30, 40. Então para com esse preconceito, vai se cuidar, vai viver. Não interessa a idade e não me interessa o seu pensamento retrógrado, tudo é pra minha idade. Eu posso colocar um vestido midi todo fechado ou colocar um com a bunda de fora, porque eu posso, eu tenho esse direito".