Pular para o conteúdo

Consulta operadora

Um script simples que utiliza o site http://www.qualoperadora.net/ para verificar a operadora de um número de celular ou fixo.
Mauricio Calligaris MCalligaris
Hits: 18.414 Categoria: Shell Script Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Descrição

Um script simples que utiliza o site http://www.qualoperadora.net/ para verificar a operadora de um número de celular ou fixo.
Download operadora.sh Enviar nova versão
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Versões atualizadas deste script

Mauricio Calligaris

Versão 2 enviada por Mauricio Calligaris em 28/12/2013

Changelog: - Adicionado UA e referer;
- Filtra o conteúdo de com awk ao invés de grep.<br /> <br /> ---------------------<br /> <br /> - Add UA and referer;<br /> - Grabbing <title> content with awk instead of grep.</p> <p><a class="article-view__primary article-view__download-link" href="/scripts/download.php?codigo=332&versao=1"><i class="fa fa-download"></i> Download 1388330993.operadora.sh</a></p> </div> </div> </article> <p class="article-view__source-toggle"><a id="fonteHide" href="/script/Consulta-operadora"><i class="fa fa-unlink"></i> <span id="labelFonte">Esconder</span> código-fonte</a></p> <pre id="fonte" class="prettyprint" ondblclick="copiarCodigo(this)" contentEditable onkeypress="return false">#!/bin/bash # # Consulta operadora de um numero de telefone/celular. #   (http://www.qualoperadora.net) #   # Uso: operadora [numero] # Ex.: operadora 1934621026 # # Autor: Mauricio Calligaris # Versão: 0.01b # # ---------------------------------------------------------------------------- # #            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE #                  Version 2, December 2004 # #   Copyright (C) 2013 Mauricio Calligaris <mauriciocalligaris@gmail.com> # # Everyone is permitted to copy and distribute verbatim or modified # copies of this license document, and changing it is allowed as long # as the name is changed. # #            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE #      TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION # # 0. You just DO WHAT THE FUCK YOU WANT TO. # # This program is free software. It comes without any warranty, to # the extent permitted by applicable law. You can redistribute it # and/or modify it under the terms of the Do What The Fuck You Want # To Public License, Version 2, as published by Sam Hocevar. See # http://www.wtfpl.net/ for more details. # # ---------------------------------------------------------------------------- if ! [[ "$1" =~ ^[0-9]+$ ]] ; then    exec >&2; echo "Digite apenas os numeros"; exit 1 fi url="http://www.qualoperadora.net" post="telefone=$1" result=$(curl -s --data-urlencode $post $url | grep \<title\> |         cut -f2 -d\> | cut -f1 -d\<); if [[ "$result" == Resu* ]] then         awk -F '[-:] ' '{print $2, $4, $5}' <<< $result; else         echo "Numero não encontrado"; fi</pre> </section> <div class="vol-ad-container vol-ad-container--end-content"><ins class="adsbygoogle vol-ad vol-ad--end_content" style="display:block" data-ad-client="ca-pub-3535276187000580" data-ad-slot="7942256155" data-ad-format="auto" data-full-width-responsive="true"></ins><div class="vol-ad-fallback" data-vol-ad-fallback><div class="vol-ad-fallback__message vol-ad-fallback__message--cookies"><span>O Viva o Linux depende da receita de anúncios para se manter.</span> <a href="#" data-cookie-consent-open>Ative os cookies aqui para nos patrocinar.</a></div><div class="vol-ad-fallback__message vol-ad-fallback__message--blocked"><span>Não conseguimos carregar os anúncios.</span> <span>Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.</span></div></div></div> </article> <section class="article-view__section" aria-labelledby="article-recommended-title"> <h2 id="article-recommended-title" class="article-view__section-label">Leitura recomendada</h2> <p class="recomendado"> <a href="/script/Efetua-uma-busca-na-rede-por-IPs(hosts)-ativos"><i class="fa fa-chevron-circle-right"></i> Efetua uma busca na rede por IPs(hosts) ativos</a></p> <p class="recomendado"> <a href="/script/Firewall-para-web-server"><i class="fa fa-chevron-circle-right"></i> Firewall para web server</a></p> <p class="recomendado"> <a href="/script/"><i class="fa fa-chevron-circle-right"></i> Pesquisar extensões 2</a></p> <p class="recomendado"> <a href="/script/Monitoramento-de-espaco-em-disco-load-e-usuarios-logados-na-maquina-por-email"><i class="fa fa-chevron-circle-right"></i> Monitoramento de espaco em disco, load e usuarios logados na maquina por e-mail</a></p> <p class="recomendado"> <a href="/script/Calcular-o-consumo-de-energia-eletrica-de-eletrodomesticos"><i class="fa fa-chevron-circle-right"></i> Calcular o consumo de energia elétrica de eletrodomésticos</a></p> </section> <section class="article-view__section" aria-labelledby="article-comments-title" data-comment-target="script" data-comment-target-id="5816" data-comment-last-id="224100" data-comment-poll-ms="45000"> <h2 id="article-comments-title" class="article-view__section-label">Comentários</h2> <div id="article-comments-list"> <article class="article-comment" id="comentario214954" data-comment-id="214954"> <header class="article-comment__meta"> <span class="article-comment__number">#1</span> <span>Comentário enviado por <a href="/~gouvmarc@aim.com">gouvmarc@aim.com</a> em 20/06/2013 - 11:10h</span> </header> <div data-comment-view> <div class="article-comment__body" data-comment-body> bom legal </div> </div> <footer class="article-comment__footer"> <div class="article-comment__votes"> <div class="vol-like-buttons" aria-label="Avaliação de comentário #1"> <button type="button" data-codigo="214954" data-tabela="comentario" data-tipo="like" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Curtir comentário #1" aria-pressed="false"> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> </button> <button type="button" data-codigo="214954" data-tabela="comentario" data-tipo="dislike" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Não curtir comentário #1" aria-pressed="false" disabled> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> </button> <span class="article-like__status" data-like-status role="status" aria-live="polite"></span> </div> </div> <ul class="article-comment__actions"> </ul> </footer> </article> <article class="article-comment" id="comentario215192" data-comment-id="215192"> <header class="article-comment__meta"> <span class="article-comment__number">#2</span> <span>Comentário enviado por <a href="/~emanuelsena">emanuelsena</a> em 28/06/2013 - 14:37h</span> </header> <div data-comment-view> <div class="article-comment__body" data-comment-body> esta base que o site utiliza, deve nao ter manutencao, pois fiz testes com celular e fixo portado, e portado a bom tempo e nao informou como portado. </div> </div> <footer class="article-comment__footer"> <div class="article-comment__votes"> <div class="vol-like-buttons" aria-label="Avaliação de comentário #2"> <button type="button" data-codigo="215192" data-tabela="comentario" data-tipo="like" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Curtir comentário #2" aria-pressed="false"> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> </button> <button type="button" data-codigo="215192" data-tabela="comentario" data-tipo="dislike" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Não curtir comentário #2" aria-pressed="false" disabled> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> </button> <span class="article-like__status" data-like-status role="status" aria-live="polite"></span> </div> </div> <ul class="article-comment__actions"> </ul> </footer> </article> <article class="article-comment" id="comentario215193" data-comment-id="215193"> <header class="article-comment__meta"> <span class="article-comment__number">#3</span> <span>Comentário enviado por <a href="/~emanuelsena">emanuelsena</a> em 28/06/2013 - 14:39h</span> </header> <div data-comment-view> <div class="article-comment__body" data-comment-body> mas nao eh culpa do script, eh o retorno mesmo, se conseguir o do site consultanumero.abr.net.br:8080/consultanumero/consulta<br /> <br /> vai ajudar esse eh o mais confiavel que existe. </div> </div> <footer class="article-comment__footer"> <div class="article-comment__votes"> <div class="vol-like-buttons" aria-label="Avaliação de comentário #3"> <button type="button" data-codigo="215193" data-tabela="comentario" data-tipo="like" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Curtir comentário #3" aria-pressed="false"> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> </button> <button type="button" data-codigo="215193" data-tabela="comentario" data-tipo="dislike" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Não curtir comentário #3" aria-pressed="false" disabled> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> </button> <span class="article-like__status" data-like-status role="status" aria-live="polite"></span> </div> </div> <ul class="article-comment__actions"> </ul> </footer> </article> <article class="article-comment" id="comentario220995" data-comment-id="220995"> <header class="article-comment__meta"> <span class="article-comment__number">#4</span> <span>Comentário enviado por <a href="/~rudregues">rudregues</a> em 06/01/2014 - 18:56h</span> </header> <div data-comment-view> <div class="article-comment__body" data-comment-body> Não entendo, testei aqui o script e tá dando a operadora errada com meus números de celular, mas no site ele responde corretamente? </div> </div> <footer class="article-comment__footer"> <div class="article-comment__votes"> <div class="vol-like-buttons" aria-label="Avaliação de comentário #4"> <button type="button" data-codigo="220995" data-tabela="comentario" data-tipo="like" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Curtir comentário #4" aria-pressed="false"> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> </button> <button type="button" data-codigo="220995" data-tabela="comentario" data-tipo="dislike" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Não curtir comentário #4" aria-pressed="false" disabled> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> </button> <span class="article-like__status" data-like-status role="status" aria-live="polite"></span> </div> </div> <ul class="article-comment__actions"> </ul> </footer> </article> <article class="article-comment" id="comentario220996" data-comment-id="220996"> <header class="article-comment__meta"> <span class="article-comment__number">#5</span> <span>Comentário enviado por <a href="/~MCalligaris">MCalligaris</a> em 06/01/2014 - 19:17h</span> </header> <div data-comment-view> <div class="article-comment__body" data-comment-body> <div class='quote'><br /> [4] Comentário enviado por rudregues em 06/01/2014 - 18:56h:<br /> <br /> Não entendo, testei aqui o script e tá dando a operadora errada com meus números de celular, mas no site ele responde corretamente? </div><br /> <br /> Poderia me informar qual versão você utilizou? </div> </div> <footer class="article-comment__footer"> <div class="article-comment__votes"> <div class="vol-like-buttons" aria-label="Avaliação de comentário #5"> <button type="button" data-codigo="220996" data-tabela="comentario" data-tipo="like" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Curtir comentário #5" aria-pressed="false"> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> </button> <button type="button" data-codigo="220996" data-tabela="comentario" data-tipo="dislike" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Não curtir comentário #5" aria-pressed="false" disabled> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> </button> <span class="article-like__status" data-like-status role="status" aria-live="polite"></span> </div> </div> <ul class="article-comment__actions"> </ul> </footer> </article> <article class="article-comment" id="comentario222138" data-comment-id="222138"> <header class="article-comment__meta"> <span class="article-comment__number">#6</span> <span>Comentário enviado por <a href="/~rudregues">rudregues</a> em 01/03/2014 - 13:26h</span> </header> <div data-comment-view> <div class="article-comment__body" data-comment-body> Desculpe a demora em responder.<br /> Versão 2<br /> Testei hoje de novo e nada... mas é estranho pois com alguns números funciona e outros não, na verdade a maioria funciona. Os que deram problema, foram números que mudaram de operadora recentemente.<br /> <br /> Tive dois números que o script falhou:<br /> <br /> 1) $ sh operadora2.sh 21912345678<br /> (21) 912345678 * Operadora Celular Rio de Janeiro<br /> 2) A outra indicou a operadora antiga (atualmente o número foi pra claro, mas o script ainda indica como se fosse da Oi)<br /> <br /> Obs.: coloquei 912345678 apenas para não colocar o número verdadeiro </div> </div> <footer class="article-comment__footer"> <div class="article-comment__votes"> <div class="vol-like-buttons" aria-label="Avaliação de comentário #6"> <button type="button" data-codigo="222138" data-tabela="comentario" data-tipo="like" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Curtir comentário #6" aria-pressed="false"> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> </button> <button type="button" data-codigo="222138" data-tabela="comentario" data-tipo="dislike" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Não curtir comentário #6" aria-pressed="false" disabled> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> </button> <span class="article-like__status" data-like-status role="status" aria-live="polite"></span> </div> </div> <ul class="article-comment__actions"> </ul> </footer> </article> <article class="article-comment" id="comentario222140" data-comment-id="222140"> <header class="article-comment__meta"> <span class="article-comment__number">#7</span> <span>Comentário enviado por <a href="/~MCalligaris">MCalligaris</a> em 01/03/2014 - 14:54h</span> </header> <div data-comment-view> <div class="article-comment__body" data-comment-body> <div class='quote'><br /> [6] Comentário enviado por rudregues em 01/03/2014 - 13:26h:<br /> <br /> Desculpe a demora em responder.<br /> Versão 2<br /> Testei hoje de novo e nada... mas é estranho pois com alguns números funciona e outros não, na verdade a maioria funciona. Os que deram problema, foram números que mudaram de operadora recentemente.<br /> </div><br /> <br /> Não fui capaz de reproduzir esse comportamento com nenhum número que eu testei, se tu quiser manda um email para endereço que se encontra no cabeçalho do script com os números que vc tem tido problema, juntamente com o resultado do script e o resultado esperado. </div> </div> <footer class="article-comment__footer"> <div class="article-comment__votes"> <div class="vol-like-buttons" aria-label="Avaliação de comentário #7"> <button type="button" data-codigo="222140" data-tabela="comentario" data-tipo="like" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Curtir comentário #7" aria-pressed="false"> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> </button> <button type="button" data-codigo="222140" data-tabela="comentario" data-tipo="dislike" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Não curtir comentário #7" aria-pressed="false" disabled> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> </button> <span class="article-like__status" data-like-status role="status" aria-live="polite"></span> </div> </div> <ul class="article-comment__actions"> </ul> </footer> </article> <article class="article-comment" id="comentario222897" data-comment-id="222897"> <header class="article-comment__meta"> <span class="article-comment__number">#8</span> <span>Comentário enviado por <a href="/~julioagostini">julioagostini</a> em 28/03/2014 - 11:08h</span> </header> <div data-comment-view> <div class="article-comment__body" data-comment-body> Pessoal bom dia,<br /> Também não consegui mais consultar.<br /> Para todos os números o resultado é: "Numero não encontrado"<br /> <br /> Comando:<br /> 1388330993.operadora.sh 5196881111<br /> Numero não encontrado<br /> <br /> Coloquei para printar o resultado da variavel $result antes do awk e o site esta retornando:<br /> #Erro 403 - Consulta Inválida! - 5196881111<br /> <br /> Abraço:<br /> Júlio Agostini </div> </div> <footer class="article-comment__footer"> <div class="article-comment__votes"> <div class="vol-like-buttons" aria-label="Avaliação de comentário #8"> <button type="button" data-codigo="222897" data-tabela="comentario" data-tipo="like" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Curtir comentário #8" aria-pressed="false"> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> </button> <button type="button" data-codigo="222897" data-tabela="comentario" data-tipo="dislike" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Não curtir comentário #8" aria-pressed="false" disabled> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> </button> <span class="article-like__status" data-like-status role="status" aria-live="polite"></span> </div> </div> <ul class="article-comment__actions"> </ul> </footer> </article> <article class="article-comment" id="comentario222909" data-comment-id="222909"> <header class="article-comment__meta"> <span class="article-comment__number">#9</span> <span>Comentário enviado por <a href="/~MCalligaris">MCalligaris</a> em 28/03/2014 - 18:15h</span> </header> <div data-comment-view> <div class="article-comment__body" data-comment-body> O script já foi atualizado e enviado para o VOL, falta só eles liberarem aqui. </div> </div> <footer class="article-comment__footer"> <div class="article-comment__votes"> <div class="vol-like-buttons" aria-label="Avaliação de comentário #9"> <button type="button" data-codigo="222909" data-tabela="comentario" data-tipo="like" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Curtir comentário #9" aria-pressed="false"> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> </button> <button type="button" data-codigo="222909" data-tabela="comentario" data-tipo="dislike" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Não curtir comentário #9" aria-pressed="false" disabled> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> </button> <span class="article-like__status" data-like-status role="status" aria-live="polite"></span> </div> </div> <ul class="article-comment__actions"> </ul> </footer> </article> <article class="article-comment" id="comentario224100" data-comment-id="224100"> <header class="article-comment__meta"> <span class="article-comment__number">#10</span> <span>Comentário enviado por <a href="/~adilsom">adilsom</a> em 19/05/2014 - 17:16h</span> </header> <div data-comment-view> <div class="article-comment__body" data-comment-body> indico outro site para usar <a target="_blank" rel="nofollow noopener noreferrer" href="http://www.qualoperadora.net.br">www.qualoperadora.net.br</a> </div> </div> <footer class="article-comment__footer"> <div class="article-comment__votes"> <div class="vol-like-buttons" aria-label="Avaliação de comentário #10"> <button type="button" data-codigo="224100" data-tabela="comentario" data-tipo="like" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Curtir comentário #10" aria-pressed="false"> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> </button> <button type="button" data-codigo="224100" data-tabela="comentario" data-tipo="dislike" data-csrf-token="92d712a7a29e8f74ff7322de7d8311a124ed8c4d44912d867ca98a367b737fda" class="btn-like btn btn-default btn-xs rounded" aria-label="Não curtir comentário #10" aria-pressed="false" disabled> <span class="likeBadge fonte11">0</span> <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> </button> <span class="article-like__status" data-like-status role="status" aria-live="polite"></span> </div> </div> <ul class="article-comment__actions"> </ul> </footer> </article> </div> <form action="/comentarios/enviarComentario.php" method="post" name="formComentario" class="article-view__comment-form" novalidate> <input type="hidden" name="tabela" value="script"> <input type="hidden" name="codtabela" value="5816"> <input type="hidden" name="csrf_token" value="800cf69bbf1ce413ae474ff41c540bb3d2ab0f228d1f870616dd5d48f1e88498"> <input type="hidden" name="ajax" value="1"> <h2 class="article-view__section-title">Contribuir com comentário</h2> <p class="article-view__comment-state article-view__comment-state--locked"><i class="fa fa-lock"></i> Entre na sua conta para comentar.</p> <p class="article-view__comment-login"><a class="article-view__primary" href="/login/?msg=1&referer=%2Fscript%2FConsulta-operadora%2F">Fazer login para comentar</a></p> <textarea name="comentario" readonly disabled id="boxcomentario" class="article-view__comment-textarea" rows="8" data-mention-autocomplete></textarea> <button type="submit" class="btn btn-u rounded-2x article-view__comment-submit" disabled>Enviar comentário <span class="vol-shortcut-hint" aria-hidden="true"><kbd>Ctrl</kbd><kbd>Enter</kbd></span></button> <span id="articleCommentStatus" class="article-view__comment-status" role="status" aria-live="polite"></span> </form> </section> <div class="modal fade" id="articleCommentDeleteModal" tabindex="-1" role="dialog" aria-labelledby="articleCommentDeleteTitle" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <form action="/comentarios/excluirComentario.php" method="post" data-comment-delete-form> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Fechar"><span aria-hidden="true">×</span></button> <h3 class="modal-title" id="articleCommentDeleteTitle">Excluir comentário</h3> </div> <div class="modal-body"> <input type="hidden" name="codigo" value=""> <input type="hidden" name="csrf_token" value="800cf69bbf1ce413ae474ff41c540bb3d2ab0f228d1f870616dd5d48f1e88498"> <input type="hidden" name="ajax" value="1"> <p>Confirma a exclusão deste comentário?</p> <p class="text-muted" data-comment-delete-label></p> </div> <div class="modal-footer"> <button type="button" class="btn btn-default rounded-2x" data-dismiss="modal">Cancelar</button> <button type="submit" class="btn btn-danger rounded-2x" data-comment-delete-confirm><i class="fa fa-trash" aria-hidden="true"></i> Excluir</button> </div> </form> </div> </div> </div> </div> <script> (function () { var section = document.querySelector('[data-comment-target="script"]'); if (!section || !window.fetch || !window.FormData) return; var form = section.querySelector('form.article-view__comment-form'); var list = document.getElementById('article-comments-list'); var status = document.getElementById('articleCommentStatus'); var textarea = document.getElementById('boxcomentario'); var submit = form ? form.querySelector('button[type="submit"]') : null; var deleteModal = document.getElementById('articleCommentDeleteModal'); var deleteForm = deleteModal ? deleteModal.querySelector('[data-comment-delete-form]') : null; var deleteLabel = deleteModal ? deleteModal.querySelector('[data-comment-delete-label]') : null; var deleteSource = null; var pollMs = parseInt(section.getAttribute('data-comment-poll-ms'), 10) || 45000; function setStatus(message, kind) { if (!status) return; status.textContent = message || ''; status.className = 'article-view__comment-status' + (kind ? ' is-' + kind : ''); } function toast(kind, message) { if (window.volToast && window.volToast[kind]) { window.volToast[kind](message, { anchor: '#articleCommentStatus' }); } } function lastId() { return parseInt(section.getAttribute('data-comment-last-id'), 10) || 0; } function updateLastId(value) { value = parseInt(value, 10) || lastId(); if (value > lastId()) { section.setAttribute('data-comment-last-id', String(value)); } } function renumberVisibleComments() { if (!list) return; Array.prototype.slice.call(list.querySelectorAll('.article-comment')).forEach(function (comment, index) { var number = index + 1; var numberNode = comment.querySelector('.article-comment__number'); var deleteButton = comment.querySelector('[data-comment-delete-button]'); if (numberNode) { numberNode.textContent = '#' + number; } if (deleteButton) { deleteButton.setAttribute('data-comment-label', 'comentário #' + number); } }); } function appendComments(html, newLastId) { if (!html || !list) { updateLastId(newLastId); renumberVisibleComments(); return 0; } var tmp = document.createElement('div'); tmp.innerHTML = html; var added = 0; Array.prototype.slice.call(tmp.children).forEach(function (node) { var id = node.getAttribute('data-comment-id'); if (id && list.querySelector('[data-comment-id="' + id + '"]')) return; node.classList.add('is-new'); list.appendChild(node); window.setTimeout(function () { node.classList.remove('is-new'); }, 2200); added++; }); updateLastId(newLastId); if (added > 0) { renumberVisibleComments(); } return added; } function readJson(response) { return response.json().catch(function () { return { ok: false, message: 'Resposta inválida do servidor.' }; }).then(function (data) { if (!response.ok && data.ok !== true) { data.ok = false; } return data; }); } function submitJson(targetForm, payload) { var form = targetForm; return fetch(targetForm.action, { method: 'POST', body: payload || new FormData(form), headers: { 'Accept': 'application/json', 'X-Requested-With': 'XMLHttpRequest' }, credentials: 'same-origin' }).then(readJson); } function hideModal(modal) { if (window.jQuery && modal) { window.jQuery(modal).modal('hide'); } } function hideModalThen(modal, callback) { if (window.jQuery && modal) { window.jQuery(modal).one('hidden.bs.modal', callback).modal('hide'); return; } callback(); } function replaceComment(currentArticle, html, lastIdValue) { if (!currentArticle || !html) { updateLastId(lastIdValue); return false; } var tmp = document.createElement('div'); tmp.innerHTML = html; var nextArticle = tmp.querySelector('.article-comment'); if (!nextArticle) { updateLastId(lastIdValue); return false; } currentArticle.parentNode.replaceChild(nextArticle, currentArticle); updateLastId(lastIdValue); renumberVisibleComments(); return true; } function setCommentEditMode(comment, editing) { if (!comment) return; var view = comment.querySelector('[data-comment-view]'); var panel = comment.querySelector('[data-comment-edit-panel]'); if (!view || !panel) return; view.hidden = !!editing; panel.hidden = !editing; if (editing) { var textarea = panel.querySelector('textarea[name="comentario"]'); if (textarea) { textarea.focus(); textarea.setSelectionRange(textarea.value.length, textarea.value.length); } } } function submitInlineCommentFormOnCtrlEnter(event) { if (!((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey && (event.key === 'Enter' || event.keyCode === 13)) || event.isComposing) { return false; } var editForm = event.target.closest('[data-comment-edit-form]'); if (!editForm || editForm.hidden) { return false; } event.preventDefault(); if (editForm.requestSubmit) { editForm.requestSubmit(); return true; } var submit = editForm.querySelector('button[type="submit"]'); if (submit) { submit.click(); } return true; } section.addEventListener('click', function (event) { var quoteButton = event.target.closest('[data-comment-quote-button]'); if (quoteButton) { event.preventDefault(); if (window.quote) { window.quote(quoteButton.getAttribute('data-comment-quote-target')); } return; } var editButton = event.target.closest('[data-comment-edit-button]'); var editCancel = event.target.closest('[data-comment-edit-cancel]'); if (editButton || editCancel) { event.preventDefault(); setCommentEditMode(event.target.closest('.article-comment'), !!editButton); return; } var deleteButton = event.target.closest('[data-comment-delete-button]'); if (!deleteButton || !deleteForm || !deleteModal) return; event.preventDefault(); deleteSource = deleteButton; deleteForm.elements.codigo.value = deleteButton.getAttribute('data-comment-id') || ''; if (deleteLabel) { deleteLabel.textContent = deleteButton.getAttribute('data-comment-label') || ''; } if (window.jQuery) { window.jQuery(deleteModal).modal('show'); } }); section.addEventListener('keydown', function (event) { submitInlineCommentFormOnCtrlEnter(event); }, true); section.addEventListener('submit', function (event) { var editForm = event.target.closest('[data-comment-edit-form]'); if (!editForm) return; event.preventDefault(); var editTextarea = editForm.querySelector('textarea[name="comentario"]'); if (editTextarea && !editTextarea.value.replace(/\s+/g, '')) { setStatus('Escreva um comentário antes de gravar.', 'error'); toast('error', 'Escreva um comentário antes de gravar.'); editTextarea.focus(); return; } var editSubmit = editForm.querySelector('button[type="submit"]'); var currentArticle = editForm.closest('.article-comment'); if (editSubmit) editSubmit.disabled = true; setStatus('Gravando comentário...', ''); submitJson(editForm).then(function (data) { if (!data.ok) { throw new Error(data.message || 'Não foi possível gravar o comentário.'); } var finishEdit = function () { replaceComment(currentArticle, data.html, data.last_id); setStatus('Comentário atualizado.', 'success'); toast('success', 'Comentário atualizado.'); }; var editModal = editForm.closest('.modal'); if (editModal) { hideModalThen(editModal, finishEdit); } else { finishEdit(); } }).catch(function (error) { setStatus(error.message, 'error'); toast('error', error.message); }).finally(function () { if (editSubmit) editSubmit.disabled = false; }); }); if (deleteForm) { deleteForm.addEventListener('submit', function (event) { event.preventDefault(); var deleteSubmit = deleteForm.querySelector('[data-comment-delete-confirm]'); var currentArticle = deleteSource ? deleteSource.closest('.article-comment') : null; if (deleteSubmit) deleteSubmit.disabled = true; setStatus('Excluindo comentário...', ''); submitJson(deleteForm).then(function (data) { if (!data.ok) { throw new Error(data.message || 'Não foi possível excluir o comentário.'); } hideModal(deleteModal); if (currentArticle) { currentArticle.remove(); renumberVisibleComments(); } deleteSource = null; setStatus('Comentário excluído.', 'success'); toast('success', 'Comentário excluído.'); }).catch(function (error) { setStatus(error.message, 'error'); toast('error', error.message); }).finally(function () { if (deleteSubmit) deleteSubmit.disabled = false; }); }); } if (textarea && form) { textarea.addEventListener('keydown', function (event) { if ((event.ctrlKey || event.metaKey) && event.key === 'Enter') { event.preventDefault(); if (form.requestSubmit) { form.requestSubmit(); } else { form.dispatchEvent(new Event('submit', { cancelable: true })); } } }); form.addEventListener('submit', function (event) { event.preventDefault(); if (!textarea.value.replace(/\s+/g, '')) { setStatus('Escreva um comentário antes de enviar.', 'error'); toast('error', 'Escreva um comentário antes de enviar.'); textarea.focus(); return; } var commentPayload = new FormData(form); submit.disabled = true; textarea.disabled = true; setStatus('Enviando comentário...', ''); submitJson(form, commentPayload).then(function (data) { if (!data.ok) { throw new Error(data.message || 'Não foi possível enviar o comentário.'); } appendComments(data.html, data.last_id); textarea.value = ''; setStatus('Comentário enviado.', 'success'); toast('success', 'Comentário enviado.'); }).catch(function (error) { setStatus(error.message, 'error'); toast('error', error.message); }).finally(function () { submit.disabled = false; textarea.disabled = false; }); }); } function poll() { if (document.hidden) return; var url = '/comentarios/listarRecentes.php?tabela=script&codtabela=' + encodeURIComponent(section.getAttribute('data-comment-target-id')) + '&after=' + encodeURIComponent(lastId()); fetch(url, { headers: { 'Accept': 'application/json' }, credentials: 'same-origin' }).then(readJson).then(function (data) { if (!data.ok) return; var added = appendComments(data.html, data.last_id); if (added > 0) { var pollMessage = added === 1 ? '1 novo comentário carregado.' : added + ' novos comentários carregados.'; setStatus(pollMessage, 'success'); toast('success', pollMessage); } }).catch(function () {}); } window.setInterval(poll, pollMs); }()); </script> </main> <br><br> </div> </div> </div><!--/main-col--> <button class="vol-sidebar-drawer__toggle" type="button" aria-controls="vol-mobile-sidebar" aria-expanded="false" aria-label="Abrir conteúdo lateral" data-vol-sidebar-toggle> <span aria-hidden="true"></span> </button> <div class="vol-sidebar-drawer__backdrop" data-vol-sidebar-backdrop hidden></div> <aside id="vol-mobile-sidebar" class="col-md-2 vol-sidebar vol-content-sidebar vol-sidebar-drawer" aria-label="Conteúdo lateral" data-vol-sidebar-drawer aria-hidden="false"> <div class="vol-sidebar__sponsor-slot" data-vol-sidebar-sponsor> <div class="vol-sidebar__banner vol-sidebar__banner--sticky"><ins class="adsbygoogle vol-ad vol-ad--sidebar" style="display:block" data-ad-client="ca-pub-3535276187000580" data-ad-slot="4365973221" data-ad-format="auto" data-full-width-responsive="false"></ins><div class="vol-ad-fallback" data-vol-ad-fallback><div class="vol-ad-fallback__message vol-ad-fallback__message--cookies"><span>O Viva o Linux depende da receita de anúncios para se manter.</span> <a href="#" data-cookie-consent-open>Ative os cookies aqui para nos patrocinar.</a></div><div class="vol-ad-fallback__message vol-ad-fallback__message--blocked"><span>Não conseguimos carregar os anúncios.</span> <span>Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.</span></div></div></div> <section class="vol-sidebar__card" aria-labelledby="vol-sidebar-destaques"> <h3 class="vol-sidebar__heading" id="vol-sidebar-destaques">Destaques</h3> <ul class="vol-sidebar__list" role="list"> <li class="vol-sidebar__list-item"><a href="/topico/Sugestoes-para-o-Viva-o-Linux/Links-de-importantes-de-usurios-do-vol/">Links importantes de usuários do vol (6)</a></li> <li class="vol-sidebar__list-item"><a href="/topico/Softwares-Educacionais-em-Linux/Criei-um-app-de-escrita-acadmica-para-brasileiros/">Criei um app de escrita acadêmica para brasileiros! (4)</a></li> </ul> </section> <aside class="vol-sidebar__credit"> <p>Hospedado por <a href="https://www.redehost.com.br/" target="_blank" rel="nofollow noopener">RedeHost</a></p> </aside> </div> <div class="vol-sidebar__slot vol-sidebar__slot--top10"><section class="vol-sidebar__card vol-sidebar__card--top10" aria-labelledby="vol-sidebar-top10"> <h3 class="vol-sidebar__heading" id="vol-sidebar-top10">Top 10 <span class="vol-sidebar__heading-sub">últimos 30 dias</span></h3> <ol class="vol-sidebar__top10" role="list"> <li class="vol-sidebar__top10-item"> <a class="vol-sidebar__top10-link" href="/~xerxeslins"> <span class="vol-sidebar__top10-rank" aria-hidden="true">01</span> <img class="vol-sidebar__top10-avatar" src="/imagens/fotos/8336076b2736.png" alt="" width="40" height="40" loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/imagens/fotos/desconhecido.png';"> <span class="vol-sidebar__top10-meta"> <span class="vol-sidebar__top10-name">Xerxes</span> <span class="vol-sidebar__top10-pts">161.527 pts</span> </span> </a> </li> <li class="vol-sidebar__top10-item"> <a class="vol-sidebar__top10-link" href="/~fabio"> <span class="vol-sidebar__top10-rank" aria-hidden="true">02</span> <img class="vol-sidebar__top10-avatar" src="/imagens/fotos/avatar-fabio-626fc1d825ca.png" alt="" width="40" height="40" loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/imagens/fotos/desconhecido.png';"> <span class="vol-sidebar__top10-meta"> <span class="vol-sidebar__top10-name">Fábio Berbert de Paula</span> <span class="vol-sidebar__top10-pts">79.693 pts</span> </span> </a> </li> <li class="vol-sidebar__top10-item"> <a class="vol-sidebar__top10-link" href="/~albfneto"> <span class="vol-sidebar__top10-rank" aria-hidden="true">03</span> <img class="vol-sidebar__top10-avatar" src="/imagens/fotos/telapad.png" alt="" width="40" height="40" loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/imagens/fotos/desconhecido.png';"> <span class="vol-sidebar__top10-meta"> <span class="vol-sidebar__top10-name">Alberto Federman Neto.</span> <span class="vol-sidebar__top10-pts">43.090 pts</span> </span> </a> </li> <li class="vol-sidebar__top10-item"> <a class="vol-sidebar__top10-link" href="/~Buckminster"> <span class="vol-sidebar__top10-rank" aria-hidden="true">04</span> <img class="vol-sidebar__top10-avatar" src="/imagens/fotos/94c1a8a7e098.jpg" alt="" width="40" height="40" loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/imagens/fotos/desconhecido.png';"> <span class="vol-sidebar__top10-meta"> <span class="vol-sidebar__top10-name">Buckminster</span> <span class="vol-sidebar__top10-pts">38.677 pts</span> </span> </a> </li> <li class="vol-sidebar__top10-item"> <a class="vol-sidebar__top10-link" href="/~cabelo"> <span class="vol-sidebar__top10-rank" aria-hidden="true">05</span> <img class="vol-sidebar__top10-avatar" src="/imagens/fotos/4fcb75802380.png" alt="" width="40" height="40" loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/imagens/fotos/desconhecido.png';"> <span class="vol-sidebar__top10-meta"> <span class="vol-sidebar__top10-name">Alessandro de Oliveira Faria (A.K.A. CABELO)</span> <span class="vol-sidebar__top10-pts">38.053 pts</span> </span> </a> </li> <li class="vol-sidebar__top10-item"> <a class="vol-sidebar__top10-link" href="/~edps"> <span class="vol-sidebar__top10-rank" aria-hidden="true">06</span> <img class="vol-sidebar__top10-avatar" src="/imagens/fotos/fdfa73842224.gif" alt="" width="40" height="40" loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/imagens/fotos/desconhecido.png';"> <span class="vol-sidebar__top10-meta"> <span class="vol-sidebar__top10-name">edps</span> <span class="vol-sidebar__top10-pts">33.918 pts</span> </span> </a> </li> <li class="vol-sidebar__top10-item"> <a class="vol-sidebar__top10-link" href="/~maurixnovatrento"> <span class="vol-sidebar__top10-rank" aria-hidden="true">07</span> <img class="vol-sidebar__top10-avatar" src="/imagens/fotos/1c799c4c3fa1.png" alt="" width="40" height="40" loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/imagens/fotos/desconhecido.png';"> <span class="vol-sidebar__top10-meta"> <span class="vol-sidebar__top10-name">Mauricio Ferrari (LinuxProativo)</span> <span class="vol-sidebar__top10-pts">25.122 pts</span> </span> </a> </li> <li class="vol-sidebar__top10-item"> <a class="vol-sidebar__top10-link" href="/~pinduvoz"> <span class="vol-sidebar__top10-rank" aria-hidden="true">08</span> <img class="vol-sidebar__top10-avatar" src="/imagens/fotos/2534dc3c78c8a.png" alt="" width="40" height="40" loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/imagens/fotos/desconhecido.png';"> <span class="vol-sidebar__top10-meta"> <span class="vol-sidebar__top10-name">Andre (pinduvoz)</span> <span class="vol-sidebar__top10-pts">24.994 pts</span> </span> </a> </li> <li class="vol-sidebar__top10-item"> <a class="vol-sidebar__top10-link" href="/~Zoiudo"> <span class="vol-sidebar__top10-rank" aria-hidden="true">09</span> <img class="vol-sidebar__top10-avatar" src="/imagens/fotos/1c4963f171ad8.jpg" alt="" width="40" height="40" loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/imagens/fotos/desconhecido.png';"> <span class="vol-sidebar__top10-meta"> <span class="vol-sidebar__top10-name">Sidnei Serra</span> <span class="vol-sidebar__top10-pts">24.576 pts</span> </span> </a> </li> <li class="vol-sidebar__top10-item"> <a class="vol-sidebar__top10-link" href="/~danniel-lara"> <span class="vol-sidebar__top10-rank" aria-hidden="true">10</span> <img class="vol-sidebar__top10-avatar" src="/imagens/fotos/1275176319.euu.jpg" alt="" width="40" height="40" loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/imagens/fotos/desconhecido.png';"> <span class="vol-sidebar__top10-meta"> <span class="vol-sidebar__top10-name">Daniel Lara Souza</span> <span class="vol-sidebar__top10-pts">22.887 pts</span> </span> </a> </li> </ol> </section> </div> <div class="vol-sidebar__slot vol-sidebar__slot--news"><section class="vol-sidebar__card" aria-labelledby="vol-sidebar-Noticias"> <h3 class="vol-sidebar__heading" id="vol-sidebar-Noticias">Notícias</h3> <ul class="vol-sidebar__list" role="list"> <li class="vol-sidebar__list-item"><a href="/noticia/debian-14-tera-exigencia-de-pacotes-reproduziveis/">Debian 14 terá exigência de pacotes reproduzíveis</a></li> <li class="vol-sidebar__list-item"><a href="/noticia/novo-zero-day-no-linux-apelidado-de-dirty-frag-da-root-em-distros-populares/">Novo zero-day no Linux, apelidado de Dirty Frag, dá root em distros populares</a></li> </ul> </section> </div> <div class="vol-sidebar__slot vol-sidebar__slot--articles"><section class="vol-sidebar__card" aria-labelledby="vol-sidebar-Artigos"> <h3 class="vol-sidebar__heading" id="vol-sidebar-Artigos">Artigos</h3> <ul class="vol-sidebar__list" role="list"> <li class="vol-sidebar__list-item"><a href="/artigo/File-Browser-Crie-sua-Nuvem-Pessoal-Privada">File Browser: Crie sua Nuvem Pessoal Privada</a></li> <li class="vol-sidebar__list-item"><a href="/artigo/A-produo-de-udio-e-vdeo-no-Linux-e-as-distribuies-dedicadas-a-esse-fim">A produção de áudio e vídeo no Linux e as distribuições dedicadas a esse fim</a></li> <li class="vol-sidebar__list-item"><a href="/artigo/Criptografando-sua-Home-com-Gocryptfs-para-tristeza-do-meliante">Criptografando sua Home com Gocryptfs para tristeza do meliante</a></li> <li class="vol-sidebar__list-item"><a href="/artigo/A-Involuo-do-Linux-e-as-Lambanas-Desnecessrias-desde-o-seu-Lanamento">A Involução do Linux e as Lambanças Desnecessárias desde o seu Lançamento</a></li> <li class="vol-sidebar__list-item"><a href="/artigo/O-Journal-no-Linux-para-a-guarda-e-consulta-de-logs-do-sistema">O Journal no Linux para a guarda e consulta de logs do sistema</a></li> </ul> </section> </div> <div class="vol-sidebar__slot vol-sidebar__slot--tips"><section class="vol-sidebar__card" aria-labelledby="vol-sidebar-Dicas"> <h3 class="vol-sidebar__heading" id="vol-sidebar-Dicas">Dicas</h3> <ul class="vol-sidebar__list" role="list"> <li class="vol-sidebar__list-item"><a href="/dica/As-melhores-alternativas-entre-as-IAs-Generativas-gratuitas-para-gerar-cdigo-para-Robots-em-bolsas-de-valores-no-mercado-domstico">As melhores alternativas entre as IAs Generativas gratuitas para gerar código para Robots em bolsas de valores no mercado doméstico</a></li> <li class="vol-sidebar__list-item"><a href="/dica/Gerenciamento-de-Vdeo-Hbrido-IntelNVIDIA-via-nvidia-prime-no-Ubuntu-e-derivados">Gerenciamento de Vídeo Híbrido (Intel/NVIDIA) via nvidia-prime no Ubuntu e derivados</a></li> <li class="vol-sidebar__list-item"><a href="/dica/Assistindo-IPTV-no-Linux-com-Fred-TV-e-Lista-Free-TV">Assistindo IPTV no Linux com Fred TV e Lista Free TV</a></li> <li class="vol-sidebar__list-item"><a href="/dica/Impressora-Tomate-MDK-007-no-Ubuntu-ou-qualquer-distro-Linux">Impressora Tomate MDK-007 no Ubuntu (ou qualquer distro Linux)</a></li> <li class="vol-sidebar__list-item"><a href="/dica/Acelerando-a-compilao-de-pacotes-no-Arch-Linux-AUR-usando-todos-os-ncleos-do-processador">Acelerando a compilação de pacotes no Arch Linux (AUR) usando todos os núcleos do processador</a></li> </ul> </section> </div> <div class="vol-sidebar__slot vol-sidebar__slot--topics"><section class="vol-sidebar__card" aria-labelledby="vol-sidebar-Topicos"> <h3 class="vol-sidebar__heading" id="vol-sidebar-Topicos">Tópicos</h3> <ul class="vol-sidebar__list" role="list"> <li class="vol-sidebar__list-item"><a href="/topico/vivaolinux/O-que-est-achando-no-NOVO-Viva-o-Linux">O que está achando no NOVO Viva o Linux? (13)</a></li> <li class="vol-sidebar__list-item"><a href="/topico/Java/Entendendo-o-Maven-com-JavaFX">Entendendo o Maven com JavaFX (0)</a></li> <li class="vol-sidebar__list-item"><a href="/topico/Helps-e-dicas-para-usuarios-iniciantes/Tive-um-problema-ao-abrir-minha-partio-Btrfs-Como-posso-resolver-isso">Tive um problema ao abrir minha partição Btrfs. Como posso resolver ... (1)</a></li> <li class="vol-sidebar__list-item"><a href="/topico/C-C++/Enquete-qual-bloco-de-cdigo-C-mais-legvel-1">Enquete: qual bloco de código C++ é mais legível? (4)</a></li> <li class="vol-sidebar__list-item"><a href="/topico/Navegadores/Warsaw-no-reconhecido-no-Google-Chrome-1470772755">Warsaw não é reconhecido no Google Chrome 147.0.7727.55 [RESOLVIDO] (11)</a></li> </ul> </section> </div> </aside> </div><!--/row-centro--> </div><!--/container--> <!-- End Content Part --> <!--=== Footer Version 1 ===--> <footer class="footer-v1" role="contentinfo"> <div class="footer"> <div class="container"> <div class="row"> <div class="col-md-3 col-sm-6 md-margin-bottom-40 vol-footer__brand"> <a href="/"><img class="footer-logo" src="/imagens/logo-vol-white.png?v=6a00b1a2-130d" width="93" height="40" alt="Viva o Linux"></a> <p>A maior comunidade GNU/Linux da América Latina. Artigos, dicas, tutoriais, fórum, scripts e troca de conhecimento desde 2002.</p> </div> <div class="col-md-3 col-sm-6 md-margin-bottom-40 vol-footer__section"> <h3>Comunidade</h3> <div class="posts"> <ul class="list-unstyled latest-list"> <li> <a href="/faq.php">FAQ - Perguntas frequentes</a></li> <li> <a href="/estatisticas.php">Estatísticas do site</a></li> <li> <a href="/equipe/">Equipe de moderadores</a></li> <li> <a href="/membros/">Membros da comunidade</a></li> <li> <a href="/feeds/">Feeds RSS</a></li> </ul> </div> </div> <div class="col-md-3 col-sm-6 md-margin-bottom-40 vol-footer__section"> <h3>Institucional</h3> <div class="posts"> <ul class="list-unstyled latest-list"> <li> <a href="/falecom/">Contato</a></li> <li> <a href="/quemsomos/">Quem somos</a></li> <li> <a href="/privacidade/">Política de privacidade</a></li> <li> <a href="/termos-de-uso/">Termos de uso</a></li> <li> <a href="#preferencias-cookies" data-cookie-consent-open>Preferências de cookies</a></li> </ul> </div> </div> <div class="col-md-3 col-sm-6 md-margin-bottom-40 vol-footer__section vol-footer__host"> <h3>Hospedagem</h3> <p>Site hospedado por:</p> <a href="https://www.redehost.com.br/" target="_blank" rel="nofollow"><img src="/imagens/logo-redehost.png?v=6a00b1a2-e5a" width="196" height="53" class="footer-header" alt="RedeHost"></a> </div> </div> <div class="row vol-footer__bottom"> <div class="col-md-12"> <p>Viva o Linux desde 2002 · comunidade brasileira de GNU/Linux e software livre.</p> </div> </div> </div> </div><!--/footer--> </footer> <!--=== End Footer Version 1 ===--> <button type="button" class="vol-scroll-top" data-vol-scroll-top aria-label="Voltar ao topo" title="Voltar ao topo"> <i class="fa fa-angle-up" aria-hidden="true"></i> </button> </div><!--/wrapper--> <style> .footer-v1 .footer .vol-footer__section h3 { margin: 0 0 12px; color: #f7fbf8; font-size: .9375rem; font-weight: 700; line-height: 1.3; } .footer-v1 .footer .vol-footer__brand p, .footer-v1 .footer .vol-footer__host p, .footer-v1 .footer .vol-footer__bottom p { color: #d9e4dd; line-height: 1.55; } .footer-v1 .footer .vol-footer__brand p { margin-top: 12px; max-width: 31ch; } .footer-v1 .footer .vol-footer__section .latest-list li { padding: 4px 0; } .footer-v1 .footer .vol-footer__section .latest-list a { display: inline-block; color: #d9e4dd; line-height: 1.35; } .footer-v1 .footer .vol-footer__section .latest-list a:hover, .footer-v1 .footer .vol-footer__section .latest-list a:focus { color: #fff; text-decoration: underline; } .footer-v1 .footer .vol-footer__host .footer-header { margin-top: 2px; max-width: 150px; height: auto; } .footer-v1 .footer .vol-footer__bottom { margin-top: 18px; padding-top: 14px; border-top: 1px solid rgba(255, 255, 255, .12); } .footer-v1 .footer .vol-footer__bottom p { margin: 0; font-size: .75rem; } </style> <!-- JS Global Compulsory --> <script src="/include/js/jquery-1.11.1.min.js?v=6a00b1a2-1762a"></script> <script src="/include/js/bootstrap.min.js?v=6a00b1a2-7c4b"></script> <!-- picture-cut--> <!-- JS Page Level --> <script src="/assets/js/mega.js?v=6a00b1a1-fc0"></script> <script type="text/javascript"> jQuery(document).ready(function() { App.init(); //$("#banner-sky").replaceWith( $("#google-sky") ); //$("#banner-left").replaceWith( $("#google-left") ); $('[data-toggle="tooltip"]').tooltip(); $('[data-tooltip="tooltip"]').tooltip(); $("button[type=submit]").not("[data-question-submit]").attr("data-loading-text", "Enviando..."); $("button[data-loading-text]").not("[data-question-submit]").click(function () { var btn = $(this).button("loading"); setInterval(function () { btn.button("reset"); }, 2000); }); $("a#fonteHide").click(function(event) { var preFonte = $("pre#fonte"); preFonte.slideToggle("slow"); event.preventDefault(); if (preFonte.is(":visible")) { $("span#labelFonte").text("Esconder"); } else { $("span#labelFonte").text("Mostrar"); } }); }); </script> <script> (function () { var widgetsScriptUrl = "/include/js/vol-content-widgets.js?v=6a00b1a2-8f6"; function pageNeedsContentWidgets() { return !!document.querySelector('.counter, .newsticker'); } function initContentWidgets() { if (window.VolContentWidgets && window.VolContentWidgets.init) { window.VolContentWidgets.init(document); } } function loadContentWidgets() { if (!pageNeedsContentWidgets()) { return; } if (window.VolContentWidgets) { initContentWidgets(); return; } if (document.querySelector('script[data-vol-content-widgets-js]')) { return; } var script = document.createElement('script'); script.src = widgetsScriptUrl; script.defer = true; script.setAttribute('data-vol-content-widgets-js', '1'); script.onload = initContentWidgets; document.head.appendChild(script); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', loadContentWidgets); } else { loadContentWidgets(); } }()); </script> <script> (function () { var prettifyScriptUrl = "/include/js/google-code-prettify.js?v=6a00b1a2-38d7"; var prettifyStyleUrl = "/assets/css/google-code-prettify/prettify.css?v=6a00b1a1-2a3"; function loadPrettify() { if (!document.querySelector('.prettyprint')) { return; } if (!document.querySelector('link[data-vol-prettify-css]')) { var link = document.createElement('link'); link.rel = 'stylesheet'; link.href = prettifyStyleUrl; link.setAttribute('data-vol-prettify-css', '1'); document.head.appendChild(link); } if (window.prettyPrint) { window.prettyPrint(); return; } if (document.querySelector('script[data-vol-prettify-js]')) { return; } var script = document.createElement('script'); script.src = prettifyScriptUrl; script.defer = true; script.setAttribute('data-vol-prettify-js', '1'); script.onload = function () { if (window.prettyPrint) { window.prettyPrint(); } }; document.head.appendChild(script); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', loadPrettify); } else { loadPrettify(); } }()); </script> <script> (function () { var likeScriptUrl = "/include/js/vol-like-buttons.js?v=6a00b1a2-1152"; function loadLikeButtons() { if (!document.querySelector('.btn-like')) { return; } if (document.querySelector('script[data-vol-like-buttons-js]')) { return; } var script = document.createElement('script'); script.src = likeScriptUrl; script.defer = true; script.setAttribute('data-vol-like-buttons-js', '1'); document.head.appendChild(script); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', loadLikeButtons); } else { loadLikeButtons(); } }()); </script> <!--[if lt IE 9]> <script src="/assets/plugins/ie-plugins-min.js?v=6a00b1a1-29fe"></script> <![endif]--> <script> var VOL_PUBLIC_ORIGIN = "https://www.vivaolinux.com.br"; window.VOL_MEDIA_ORIGIN = ""; </script> <script src="/include/js/vol-global-helpers.js?v=6a00b1a2-d63"></script> <script src="/include/js/mobileSidebarDrawer.js?v=6a01675e-9b9" defer></script> <script src="/include/js/vol-mentions.js?v=6a00b1a2-2f2e"></script> <script src="/include/js/vol-signature-card.js?v=6a0143fd-5c7" defer></script> <script src="/include/js/adminCtrlEnter2026.js?v=6a00b1a2-16f4" defer></script> <!-- Google Analytics is loaded by the cookie consent component after opt-in. --> <script> function leftArrowPressed() { } function rightArrowPressed() { } document.onkeydown = function(evt) { evt = evt || window.event; switch (evt.keyCode) { case 37: leftArrowPressed(); break; case 39: rightArrowPressed(); break; } }; $("textarea").keydown(function() { document.onkeydown = null; }); $("textarea").focusout(function() { document.onkeydown = function(evt) { evt = evt || window.event; switch (evt.keyCode) { case 37: leftArrowPressed(); break; case 39: rightArrowPressed(); break; } }; }); </script> <style> .vol-toast-region { position: fixed; top: 18px; right: 18px; z-index: 10050; display: grid; gap: 10px; width: min(380px, calc(100vw - 32px)); pointer-events: none; } .vol-toast { display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: start; padding: 13px 14px; border: 1px solid #d1d5db; border-radius: 8px; background: #fff; box-shadow: 0 18px 40px rgba(15, 23, 42, .18); color: #111827; opacity: 0; transform: translateY(-8px); transition: opacity .18s ease, transform .18s ease; pointer-events: auto; overflow: hidden; } .vol-toast--error { background: #7f1d1d; border-color: #7f1d1d; color: #fff; } .vol-toast--info { background: #eff6ff; border-color: #2563eb; color: #1e3a8a; } .vol-toast--success { background: #ecfdf5; border-color: #047857; color: #064e3b; } .vol-toast.is-visible { opacity: 1; transform: translateY(0); } .vol-toast__message { margin: 0; font-size: var(--vol-type-small); line-height: 1.45; overflow-wrap: anywhere; } .vol-toast__close { border: 0; background: transparent; color: #4b5563; font-size: 1.375rem; line-height: 1; padding: 0 0 0 6px; } .vol-toast__close:hover, .vol-toast__close:focus { color: #111827; } .vol-toast--error .vol-toast__close { color: #fff; } .vol-toast--error .vol-toast__message { color: #fff; font-weight: 700; } .vol-toast--error .vol-toast__close:hover, .vol-toast--error .vol-toast__close:focus { color: #fff; } .vol-toast--anchored { position: relative; width: 100%; margin: 10px 0 0; transform: translateY(4px); } .vol-like-buttons { align-items: center; display: inline-flex; flex-wrap: wrap; gap: 6px; } .vol-like-buttons .btn-like { align-items: center; display: inline-flex; gap: 5px; line-height: 1.2; min-height: 34px; transform-origin: center; } .vol-like-buttons .btn-like.is-like-shaking { animation: vol-like-shake 280ms cubic-bezier(0.25, 1, 0.5, 1) 1; will-change: transform; } .vol-like-buttons .btn-like[disabled] { cursor: not-allowed; opacity: .62; } .vol-like-buttons .btn-like.is-active { background: #f3f8f2; border-color: #008318; color: #00540f !important; font-weight: 700; } .vol-like-buttons .article-like__status { color: #667085; font-size: .75rem; min-height: 16px; } .vol-like-buttons .article-like__status.is-error { color: #991b1b; font-weight: 700; } .vol-like-buttons .article-like__status.is-success { color: #00540f; font-weight: 700; } @keyframes vol-like-shake { 0% { transform: translate3d(0, 0, 0) rotate(0deg); } 18% { transform: translate3d(-2px, 0, 0) rotate(-4deg); } 36% { transform: translate3d(2px, 0, 0) rotate(4deg); } 54% { transform: translate3d(-1px, 0, 0) rotate(-2deg); } 72% { transform: translate3d(1px, 0, 0) rotate(2deg); } 100% { transform: translate3d(0, 0, 0) rotate(0deg); } } @media (prefers-reduced-motion: reduce) { .vol-like-buttons .btn-like.is-like-shaking { animation: none; } } @media (max-width: 640px) { .vol-toast-region { top: 12px; right: 12px; left: 12px; width: auto; } } </style> <div class="vol-toast-region" id="vol-toast-region" aria-live="polite" aria-atomic="true"></div> <script> (function () { var allowed = { info: true, success: true, error: true }; var defaultDuration = 5200; function region() { var existing = document.getElementById('vol-toast-region'); if (existing) { return existing; } var created = document.createElement('div'); created.className = 'vol-toast-region'; created.id = 'vol-toast-region'; created.setAttribute('aria-live', 'polite'); created.setAttribute('aria-atomic', 'true'); document.body.appendChild(created); return created; } function removeToast(toast) { if (!toast || toast.getAttribute('data-removing') === '1') { return; } toast.setAttribute('data-removing', '1'); toast.className = toast.className.replace(/\bis-visible\b/g, ''); setTimeout(function () { if (toast.parentNode) { toast.parentNode.removeChild(toast); } }, 220); } function show(category, message, options) { category = allowed[category] ? category : 'info'; message = String(message || '').replace(/\s+/g, ' ').trim(); if (!message) { return null; } options = options || {}; var toast = document.createElement('div'); toast.className = 'vol-toast vol-toast--' + category; toast.setAttribute('role', category === 'error' ? 'alert' : 'status'); toast.innerHTML = '<p class="vol-toast__message"></p><button type="button" class="vol-toast__close" aria-label="Fechar aviso">×</button>'; toast.querySelector('.vol-toast__message').textContent = message; toast.querySelector('.vol-toast__close').addEventListener('click', function () { removeToast(toast); }); var anchor = options.anchor ? document.querySelector(options.anchor) : null; if (anchor) { toast.className += ' vol-toast--anchored'; anchor.insertAdjacentElement('beforebegin', toast); } else { region().appendChild(toast); } setTimeout(function () { toast.className += ' is-visible'; }, 20); setTimeout(function () { removeToast(toast); }, options.duration || defaultDuration); return toast; } window.volToast = { info: function (message, options) { return show('info', message, options); }, success: function (message, options) { return show('success', message, options); }, error: function (message, options) { return show('error', message, options); } }; document.addEventListener('DOMContentLoaded', function () { var items = document.querySelectorAll('[data-vol-toast]'); for (var i = 0; i < items.length; i++) { var item = items[i]; var category = item.getAttribute('data-vol-toast') || 'info'; var message = item.getAttribute('data-vol-toast-message') || item.textContent || ''; show(category, message, { duration: 6500, anchor: item.getAttribute('data-vol-anchor') || '' }); } }); }()); </script> <style> .vol-cookie-consent[hidden] { display: none; } .vol-cookie-consent { align-items: center; background: rgba(15, 23, 42, .68); bottom: 0; display: flex; justify-content: center; left: 0; padding: 20px; position: fixed; right: 0; top: 0; z-index: 100000; } .vol-cookie-consent__dialog { background: #fff; border: 1px solid #d8dee9; border-radius: 8px; box-shadow: 0 22px 70px rgba(15, 23, 42, .28); color: #1f2937; max-height: calc(100vh - 40px); max-width: 620px; overflow: auto; padding: 22px; width: 100%; } .vol-cookie-consent__title { color: #111827; font-size: var(--vol-type-h3); font-weight: 700; line-height: 1.25; margin: 0 0 8px; } .vol-cookie-consent__text { font-size: var(--vol-type-small); line-height: 1.55; margin: 0 0 18px; } .vol-cookie-consent__options { border: 1px solid #e5e7eb; border-radius: 6px; margin-bottom: 18px; } .vol-cookie-consent__option { align-items: flex-start; border-bottom: 1px solid #e5e7eb; display: flex; gap: 12px; padding: 13px 14px; } .vol-cookie-consent__option:last-child { border-bottom: 0; } .vol-cookie-consent__option input { flex: 0 0 auto; margin-top: 3px; } .vol-cookie-consent__option strong { color: #111827; display: block; font-size: var(--vol-type-small); margin-bottom: 3px; } .vol-cookie-consent__option span { color: #4b5563; display: block; font-size: var(--vol-type-caption); line-height: 1.45; } .vol-cookie-consent__actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-end; } .vol-cookie-consent__button { background: #f3f4f6; border: 1px solid #d1d5db; border-radius: 6px; color: #111827; cursor: pointer; font-size: var(--vol-type-small); font-weight: 600; line-height: 1.2; min-height: 38px; padding: 9px 13px; } .vol-cookie-consent__button:focus { outline: 2px solid #2563eb; outline-offset: 2px; } .vol-cookie-consent__button--primary { background: #166534; border-color: #166534; color: #fff; } @media (max-width: 520px) { .vol-cookie-consent { align-items: flex-end; padding: 12px; } .vol-cookie-consent__dialog { padding: 18px; } .vol-cookie-consent__actions, .vol-cookie-consent__button { width: 100%; } } </style> <div class="vol-cookie-consent" data-cookie-consent-modal hidden aria-hidden="true"> <div class="vol-cookie-consent__dialog" role="dialog" aria-modal="true" aria-labelledby="vol-cookie-consent-title"> <h2 class="vol-cookie-consent__title" id="vol-cookie-consent-title">Preferências de cookies</h2> <p class="vol-cookie-consent__text">Usamos cookies essenciais para manter o site funcionando. Cookies de estatísticas e anúncios só serão carregados se você permitir.</p> <div class="vol-cookie-consent__options"> <label class="vol-cookie-consent__option"> <input type="checkbox" checked disabled> <span> <strong>Essenciais</strong> <span>Necessários para login, sessão, segurança e preferências básicas.</span> </span> </label> <label class="vol-cookie-consent__option"> <input type="checkbox" data-cookie-consent-statistics> <span> <strong>Estatísticas</strong> <span>Ajuda a entender navegação e audiência usando Google Analytics.</span> </span> </label> <label class="vol-cookie-consent__option"> <input type="checkbox" data-cookie-consent-ads> <span> <strong>Anúncios</strong> <span>Permite carregar Google Adsense e melhorar a monetização do site.</span> </span> </label> </div> <div class="vol-cookie-consent__actions"> <button type="button" class="vol-cookie-consent__button" data-cookie-consent-reject>Recusar opcionais</button> <button type="button" class="vol-cookie-consent__button" data-cookie-consent-save>Salvar preferências</button> <button type="button" class="vol-cookie-consent__button vol-cookie-consent__button--primary" data-cookie-consent-accept>Aceitar todos</button> </div> </div> </div> <script> (function () { var cookieName = 'vol_cookie_consent'; var consentVersion = Number('1') || 1; var analyticsId = 'G-40EGW0ERX5' || 'G-40EGW0ERX5'; var adsenseClient = 'ca-pub-3535276187000580' || 'ca-pub-3535276187000580'; var maxAge = 60 * 60 * 24 * 180; var modal = document.querySelector('[data-cookie-consent-modal]'); var statisticsInput = document.querySelector('[data-cookie-consent-statistics]'); var adsInput = document.querySelector('[data-cookie-consent-ads]'); var analyticsLoaded = false; var adsLoaded = false; function readConsent() { var parts = document.cookie ? document.cookie.split('; ') : []; for (var i = 0; i < parts.length; i++) { var pair = parts[i].split('='); if (pair[0] !== cookieName) { continue; } try { var consent = JSON.parse(decodeURIComponent(pair.slice(1).join('='))); if (!consent || Number(consent.version) !== consentVersion) { return null; } return { statistics: consent.statistics === true, ads: consent.ads === true }; } catch (e) { return null; } } return null; } function writeConsent(statistics, ads) { var consent = { version: consentVersion, statistics: statistics === true, ads: ads === true, savedAt: new Date().toISOString() }; document.cookie = cookieName + '=' + encodeURIComponent(JSON.stringify(consent)) + '; path=/; max-age=' + maxAge + '; SameSite=Lax'; return consent; } function loadAnalytics() { if (analyticsLoaded || !analyticsId) { return; } analyticsLoaded = true; window.dataLayer = window.dataLayer || []; window.gtag = window.gtag || function () { window.dataLayer.push(arguments); }; window.gtag('js', new Date()); window.gtag('config', analyticsId); var script = document.createElement('script'); script.async = true; script.src = 'https://www.googletagmanager.com/gtag/js?id=' + encodeURIComponent(analyticsId); document.head.appendChild(script); } function loadAdsense() { if (adsLoaded || !adsenseClient) { return; } adsLoaded = true; hideAdFallbacks(); pushLegacyAdsenseSlots(); var script = document.createElement('script'); script.async = true; script.crossOrigin = 'anonymous'; script.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=' + encodeURIComponent(adsenseClient); script.onerror = function () { showAdFallbacks('blocked'); }; document.head.appendChild(script); window.setTimeout(checkAdsenseFill, 3500); } function adSlotContainer(slot) { return slot.closest ? slot.closest('.vol-ad-container, .vol-sidebar__banner') : null; } function showAdFallbacks(reason) { var slots = document.querySelectorAll('.adsbygoogle'); for (var i = 0; i < slots.length; i++) { var container = adSlotContainer(slots[i]); if (!container) { continue; } container.classList.add('is-ad-fallback'); container.setAttribute('data-vol-ad-fallback-reason', reason || 'unavailable'); } } function hideAdFallbacks() { var containers = document.querySelectorAll('.vol-ad-container.is-ad-fallback, .vol-sidebar__banner.is-ad-fallback'); for (var i = 0; i < containers.length; i++) { containers[i].classList.remove('is-ad-fallback'); containers[i].removeAttribute('data-vol-ad-fallback-reason'); } } function checkAdsenseFill() { if (!adsLoaded) { return; } var slots = document.querySelectorAll('.adsbygoogle'); for (var i = 0; i < slots.length; i++) { var status = slots[i].getAttribute('data-ad-status'); var loaded = slots[i].getAttribute('data-adsbygoogle-status'); if (status === 'unfilled') { continue; } if (loaded !== 'done') { var container = adSlotContainer(slots[i]); if (container) { container.classList.add('is-ad-fallback'); container.setAttribute('data-vol-ad-fallback-reason', 'blocked'); } } } } function pushLegacyAdsenseSlots() { var slots = document.querySelectorAll('.adsbygoogle'); window.adsbygoogle = window.adsbygoogle || []; for (var i = 0; i < slots.length; i++) { if (slots[i].getAttribute('data-vol-adsense-loaded') === '1') { continue; } slots[i].setAttribute('data-vol-adsense-loaded', '1'); try { window.adsbygoogle.push({}); } catch (e) { break; } } } function applyConsent(consent) { if (!consent) { return; } if (consent.statistics) { loadAnalytics(); } if (consent.ads) { loadAdsense(); } else { showAdFallbacks('cookies'); } } function setInputs(consent) { if (statisticsInput) { statisticsInput.checked = !!(consent && consent.statistics); } if (adsInput) { adsInput.checked = !!(consent && consent.ads); } } function showModal(consent) { if (!modal) { return; } setInputs(consent); modal.hidden = false; modal.setAttribute('aria-hidden', 'false'); } function hideModal() { if (!modal) { return; } modal.hidden = true; modal.setAttribute('aria-hidden', 'true'); } function saveAndApply(statistics, ads) { var consent = writeConsent(statistics, ads); hideModal(); applyConsent(consent); } window.volOpenCookieConsent = function () { showModal(readConsent()); }; document.addEventListener('click', function (event) { var consentOpenTrigger = event.target.closest ? event.target.closest('[data-cookie-consent-open]') : null; if (consentOpenTrigger) { event.preventDefault(); showModal(readConsent()); } if (event.target.matches('[data-cookie-consent-reject]')) { saveAndApply(false, false); } if (event.target.matches('[data-cookie-consent-save]')) { saveAndApply(!!(statisticsInput && statisticsInput.checked), !!(adsInput && adsInput.checked)); } if (event.target.matches('[data-cookie-consent-accept]')) { saveAndApply(true, true); } }); var consent = readConsent(); if (consent) { applyConsent(consent); } else { showAdFallbacks('cookies'); showModal(null); } }()); </script> </body> </html>