<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>5777879193 - @PoggVpn</title>
<style>
:root {
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
line-height: 1.5;
font-weight: 400;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
/*-------->MENU<--------*/
/*IMAGEM DE FUNDO PRINCIPAL*/
--imagem-de-fundo: url("https://i.ibb.co/gTFm7PJ/images-8.jpg");
/*CONTAINER DE STATUS VPN*/
--cor-de-fundo-do-container-de-status-da-vpn: rgba(161, 42, 246, 0.1);
--cor-do-icone-do-container-de-status-da-vpn: rgba(255, 255, 255, 1);
--cor-do-texto-do-container-de-status-da-vpn: rgba(255, 255, 255, 1);
/*CONTAINER DE SELECIONAR OPERADORA*/
--cor-de-fundo-do-campo-de-selecionar-operadora: rgba(
161,
42,
246,
0.5
);
--borda-do-container-de-selecionar-operadora: rgba(68, 60, 119, 1);
--cor-do-icone-de-chip-do-campo-de-selecionar-operadora: rgba(
255,
255,
255,
1
);
--cor-do-texto-do-campo-de-selecionar-operadora: rgba(255, 255, 255, 1);
/*CONTAINER PRINCIPAL*/
--cor-de-fundo-do-container-principal: rgba(161, 42, 246, 0.5);
--borda-do-container-principal: rgba(68, 60, 119, 1);
--borda-do-header-do-container-principal: rgba(68, 60, 119, 1);
--cor-de-fundo-dos-input-do-container-principal: rgba(
187,
127,
243,
0.2
);
--cor-da-borda-dos-input-do-container-principal: rgba(68, 60, 119, 1);
--cor-dos-icones-dos-input-do-container-principal: rgba(
255,
255,
255,
1
);
--cor-do-texto-dos-input-do-container-principal: rgba(255, 255, 255, 1);
--cor-do-texto-dos-input-do-container-principal-quando-nao-ta-selecionado: rgba(
255,
255,
255,
1
);
--cor-de-fundo-do-botao-do-container-principal: rgba(
187,
127,
243,
0.2
);
--cor-da-borda-do-botao-do-container-principal: rgba(68, 60, 119, 1);
--cor-do-icone-do-botao-do-container-principal: rgba(255, 255, 255, 1);
--cor-do-texto-do-botao-do-container-principal: rgba(255, 255, 255, 1);
/*CONTAINER DOS CONTROLES*/
--cor-de-fundo-do-container-de-controles: rgba(161, 42, 246, 0.5);
--cor-da-borda-do-container-de-controles: rgba(68, 60, 119, 1);
--cor-de-fundo-do-botao-do-container-de-controles: rgba(104, 3, 202, 1);
--cor-da-borda-do-botao-do-container-de-controles: rgba(68, 60, 119, 1);
--cor-do-icone-do-botao-do-container-de-controles: rgba(
255,
255,
255,
1
);
--cor-de-fundo-do-botao-do-meio-do-container-de-controles: rgba(
68,
60,
119,
1
);
--cor-da-borda-do-botao-do-meio-do-container-de-controles: rgba(
161,
42,
246,
0.5
);
/* CONTAINER DAS CONFIGURAÇÕES */
--cor-de-fundo-do-container-da-lista-de-configuracoes: rgba(
161,
42,
246,
0.4
);
--cor-da-borda-do-container-da-lista-de-configuracoes: rgba(
68,
60,
119,
0.5
);
--cor-de-fundo-do-header-do-container-da-lista-de-configuracoes: rgba(
187,
127,
243,
1
);
--cor-do-icone-de-fechar-do-header-do-container-da-lista-de-configuracoes: rgba(
255,
255,
255,
1
);
--cor-de-fundo-do-container-da-lista-de-categorias-de-configuracoes: transparent;
--cor-de-fundo-da-categoria: transparent;
--cor-de-fundo-do-header-da-categoria: rgba(187, 127, 243, 1);
--cor-da-borda-do-header-da-categoria: rgba(127, 71, 203, 1);
--cor-do-text-do-header-da-categoria: rgba(255, 255, 255, 1);
--cor-do-icone-do-header-da-categoria: rgba(255, 255, 255, 1);
--cor-de-fundo-da-lista-de-configuracoes: transparent;
--cor-de-fundo-do-item-da-configuracao: rgba(187, 127, 243, 1);
--cor-do-texto-do-titulo-do-item-da-configuracao: rgba(
255,
255,
255,
1
);
--cor-do-texto-da-descricao-do-item-da-configuracao: rgba(
255,
255,
255,
1
);
--cor-do-modo-da-conexao-do-item-da-configuracao: rgba(
255,
255,
255,
1
);
/* CHECKUSER PRINCIPAL */
--cor-de-fundo-do-container-do-checkuser-principal: rgba(
161,
42,
246,
0.8
);
--cor-de-fundo-do-header-do-container-do-checkuser-principal: rgba(
187,
127,
243,
1
);
--cor-do-icone-do-header-do-container-do-checkuser-principal: rgba(
255,
255,
255,
1
);
--cor-da-borda-do-icone-de-sucesso: rgba(255, 255, 255, 1);
--cor-do-icone-de-sucesso: rgba(255, 255, 255, 1);
--cor-de-fundo-da-lista-de-dados-de-login: transparent;
--cor-de-fundo-dos-dados-de-login: rgba(187, 127, 243, 1);
--cor-dos-icones-dos-dados-de-login: rgba(255, 255, 255, 1);
--cor-dos-textos-dos-dados-de-login: rgba(255, 255, 255, 1);
/* CONTAINER DE CARREGAMENTO */
--cor-de-fundo-do-container-de-carregamento: rgba(161, 42, 246, 0.8);
--cor-de-fundo-do-header-do-container-de-carregamento: rgba(
187,
127,
243,
1
);
--cor-do-icone-do-header-do-container-de-carregamento: rgba(
255,
255,
255,
1
);
/* CONTAINER DE PERFIL DO USUÁRIO */
--cor-de-fundo-do-container-do-perfil-do-usuario: rgba(
161,
42,
246,
0.8
);
--cor-de-fundo-do-header-do-container-do-perfil-do-usuario: transparent;
--cor-da-borda-do-header-do-container-do-perfil-do-usuario: rgba(
187,
127,
243,
1
);
--cor-de-fundo-da-lista-do-container-do-perfil-do-usuario: transparent;
--cor-de-fundo-dos-items-do-container-do-perfil-do-usuario: rgba(
187,
127,
243,
1
);
--cor-de-fundo-dos-icones-do-container-do-perfil-do-usuario: rgba(
187,
127,
243,
1
);
--cor-da-borda-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario: rgba(
255,
255,
255,
1
);
--cor-do-icone-de-dentro-do-close-do-container-do-perfil-do-usuario: rgba(
255,
255,
255,
1
);
--cor-do-titulo-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario: rgba(
255,
255,
255,
1
);
--cor-da-descricao-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario: rgba(
255,
255,
255,
1
);
--cor-de-fundo-dos-termos-do-container-do-perfil-do-usuario: rgba(
11,
26,
59,
0.5
);
/* CONTAINER DE FERRAMENTAS */
--cor-da-borda-do-titulo-do-container-de-ferramentas: rgba(
255,
255,
255,
1
);
--cor-do-texto-do-titulo-do-container-de-ferramentas: rgba(
255,
255,
255,
1
);
--cor-da-borda-dos-botoes-do-container-de-ferramentas: #cc60ff;
--cor-de-fundo-dos-botoes-do-container-de-ferramentas: rgba(
161,
42,
246,
0.5
);
--cor-da-sombra-dos-botoes-do-container-de-ferramentas: rgba(
0,
0,
0,
0.25
);
--cor-dos-icones-dos-botoes-do-container-de-ferramentas: rgba(
255,
255,
255,
1
);
--cor-dos-textos-dos-botoes-do-container-de-ferramentas: rgba(
255,
255,
255,
1
);
/* MODAL SPEEDTEST */
--cor-do-header-do-modal-do-speedtest: rgba(187, 127, 243, 1);
--cor-de-fundo-do-modal-do-speedtest: rgba(187, 127, 243, 1);
--cor-do-icone-do-header-do-modal-do-speedtest: rgba(255, 255, 255, 1);
/* MODAL ERROR */
--cor-do-header-do-modal-de-error: rgba(158, 36, 36, 0.8);
--cor-de-fundo-do-modal-de-error: rgba(53, 46, 57, 0.9);
--cor-do-icone-do-header-do-modal-de-error: rgba(255, 255, 255, 1);
/* MODAL LOGS */
--cor-do-header-do-modal-de-logs: rgba(187, 127, 243, 1);
--cor-de-fundo-do-modal-de-logs: rgba(53, 46, 57, 0.9);
--cor-do-texto-do-registro-do-modal-de-logs: rgba(255, 255, 255, 1);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body,
main {
width: 100%;
height: 100%;
}
body {
background: var(--imagem-de-fundo);
background-repeat: no-repeat;
background-position: center;
background-size: cover;
}
main {
max-width: 500px;
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
margin: auto;
position: relative;
overflow: hidden;
}
main section.vpnStatus {
width: auto;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
gap: 5px;
margin-top: 5%;
padding: 0px 10px;
border-radius: 20px;
background: var(--cor-de-fundo-do-container-de-status-da-vpn);
}
main section.vpnStatus svg {
color: var(--cor-do-icone-do-container-de-status-da-vpn);
}
main section.vpnStatus span {
color: var(--cor-do-texto-do-container-de-status-da-vpn);
}
section.local-ip {
width: auto;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
gap: 5px;
margin-top: 5%;
padding: 0px 10px;
border-radius: 20px;
background: var(--cor-de-fundo-do-container-de-status-da-vpn);
}
section.local-ip svg {
color: var(--cor-do-icone-do-container-de-status-da-vpn);
}
section.local-ip span {
text-align: center;
color: var(--cor-do-texto-do-container-de-status-da-vpn);
}
main section.home {
width: 100%;
max-width: 500px;
height: auto;
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
position: relative;
padding: 0px 10px;
}
main section.home header {
width: 100%;
height: auto;
display: flex;
justify-content: center;
align-items: center;
}
main section.home header img.logo {
width: 60%;
max-width: 100px;
height: auto;
}
main section.home div.carrierSelector {
width: 100%;
height: 50px;
display: flex;
align-items: center;
justify-content: center;
gap: 20px;
padding: 0px 10px;
border: 1px solid var(--borda-do-container-de-selecionar-operadora);
border-radius: 10px;
overflow: hidden;
background: var(--cor-de-fundo-do-campo-de-selecionar-operadora);
}
main section.home div.carrierSelector svg {
width: 20px;
height: 20px;
color: var(--cor-do-icone-de-chip-do-campo-de-selecionar-operadora);
}
main section.home div.carrierSelector span {
width: 100%;
max-width: 100%;
height: 100%;
max-height: 100%;
display: flex;
justify-content: center;
align-items: center;
color: var(--cor-do-texto-do-campo-de-selecionar-operadora);
overflow: none;
}
main section.home div.container {
width: 100%;
height: auto;
min-height: 200px;
max-height: 240px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
border: 1px solid var(--borda-do-container-principal);
border-radius: 10px;
background: var(--cor-de-fundo-do-container-principal);
}
main section.home div.container header {
width: 100%;
height: 50px;
display: flex;
align-items: center;
padding: 0px 5px;
border-bottom: 1px solid var(--borda-do-header-do-container-principal);
overflow: hidden;
}
main section.home div.container form {
width: 100%;
height: auto;
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
padding: 10px;
}
main section.home div.container form div {
width: 90%;
height: 40px;
display: flex;
align-items: center;
position: relative;
padding: 0px 0px 0px 5px;
border-radius: 20px;
border: 1px solid var(--cor-da-borda-dos-input-do-container-principal);
overflow: hidden;
background: var(--cor-de-fundo-dos-input-do-container-principal);
}
main section.home div.container form div#container-uuid-input {
display: none;
}
main section.home div.container form div svg {
width: 40px;
height: 40px;
padding: 10px;
color: var(--cor-dos-icones-dos-input-do-container-principal);
}
main section.home div.container form div input {
width: calc(100% - 40px);
height: 100%;
border: 0;
outline: none;
color: var(--cor-do-texto-dos-input-do-container-principal);
background: transparent;
}
main section.home div.container form div svg.eye {
position: absolute;
right: 0;
}
.eye-none {
display: none;
}
.eye-block {
display: block;
}
main section.home div.container form div input::placeholder {
color: var(
--cor-do-texto-dos-input-do-container-principal-quando-nao-ta-selecionado
);
}
main section.home div.container form div.buttons {
height: 40px;
display: flex;
justify-content: center;
align-items: center;
gap: 10px;
border: 0;
padding-left: 3px;
background: transparent;
}
main section.home div.container form div button#startStopVpn {
flex: 1;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
padding: 10px;
border: 1px solid var(--cor-da-borda-do-botao-do-container-principal);
border-radius: 20px;
background: var(--cor-de-fundo-do-botao-do-container-principal);
}
main section.home div.container form div button#buttonLogs {
width: 40px;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid var(--cor-da-borda-do-botao-do-container-principal);
border-radius: 50%;
background: var(--cor-de-fundo-do-botao-do-container-principal);
}
main section.home div.container form button svg {
color: var(--cor-do-icone-do-botao-do-container-principal);
}
main section.home div.container form button span {
color: var(--cor-do-texto-do-botao-do-container-principal);
}
main section.controls {
width: 90%;
height: 50px;
display: flex;
align-items: center;
gap: 15px;
position: absolute;
bottom: 10px;
z-index: 999;
padding: 0px 10px;
border: 1px solid var(--cor-da-borda-do-container-de-controles);
border-radius: 25px;
background: var(--cor-de-fundo-do-container-de-controles);
}
main section.controls button {
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
border: 0px solid var(--cor-da-borda-do-botao-do-container-de-controles);
border-radius: 50%;
background: var(--cor-de-fundo-do-botao-do-container-de-controles);
}
main section.controls button:nth-child(2) {
margin-right: auto;
}
main section.controls button svg {
color: var(--cor-do-icone-do-botao-do-container-de-controles);
}
main section.controls button#backToHome {
width: 60px;
height: 60px;
margin-left: auto;
margin-right: auto;
position: absolute;
top: -50%;
left: 0;
right: 0;
border: 1px solid
var(--cor-da-borda-do-botao-do-meio-do-container-de-controles);
background: var(
--cor-de-fundo-do-botao-do-meio-do-container-de-controles
);
}
main section.controls button#backToHome::before {
width: 60px;
height: 60px;
content: "";
position: absolute;
top: -6px;
left: -6px;
right: 0;
bottom: 0px;
z-index: 2;
margin-left: auto;
margin-right: auto;
border: 5px solid
var(--cor-da-borda-do-botao-do-meio-do-container-de-controles);
border-radius: 50%;
}
main section.listOfCarriers {
width: calc(100% - 10px);
height: 70%;
display: flex;
flex-direction: column;
align-items: center;
position: absolute;
top: 13%;
border: 1px solid
var(--cor-da-borda-do-container-da-lista-de-configuracoes);
border-radius: 10px;
overflow-y: auto;
opacity: 0;
transform: scale(0);
transform-origin: center;
transition: all 0.3s ease 0.1s;
background: var(--cor-de-fundo-do-container-da-lista-de-configuracoes);
backdrop-filter: blur(10px);
}
main section.listOfCarriers.active {
opacity: 1;
transform: scale(1);
}
main section.listOfCarriers .header-list {
width: 100%;
height: 50px;
display: flex;
align-items: center;
padding: 10px;
border: 1px solid var();
background: var(
--cor-de-fundo-do-header-do-container-da-lista-de-configuracoes
);
}
main section.listOfCarriers header svg.bi-x-lg {
margin: 0px 0px 0px auto;
color: var(
--cor-do-icone-de-fechar-do-header-do-container-da-lista-de-configuracoes
);
}
main section.listOfCarriers section.list-container {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
gap: 20px;
margin: 10px 0px;
padding: 0px 10px;
overflow-y: auto;
background: var(
--cor-de-fundo-do-container-da-lista-de-categorias-de-configuracoes
);
}
main section.listOfCarriers section.list-container div.category {
width: 100%;
height: auto;
display: flex;
flex-direction: column;
gap: 10px;
border-radius: 5px;
background: var(--cor-de-fundo-da-categoria);
}
main section.listOfCarriers section.list-container div.category header {
width: 100%;
height: 50px;
min-height: 50px;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0px 5px;
border-bottom: 1px solid var(--cor-da-borda-do-header-da-categoria);
border-radius: 5px;
background: var(--cor-de-fundo-do-header-da-categoria);
}
main
section.listOfCarriers
section.list-container
div.category
header
h1 {
color: var(--cor-do-text-do-header-da-categoria);
font-weight: 400;
font-size: 1rem;
}
main
section.listOfCarriers
section.list-container
div.category
header
svg {
color: var(--cor-do-icone-do-header-da-categoria);
transition: all 0.3s ease 0.3s;
}
main
section.listOfCarriers
section.list-container
div.category
ul.configs {
width: 100%;
max-height: 0px;
display: flex;
flex-direction: column;
gap: 10px;
overflow-y: auto;
overflow-x: hidden;
background: var(--cor-de-fundo-da-lista-de-configuracoes);
transition: all 0.3s ease 0.3s;
}
main
section.listOfCarriers
section.list-container
div.category
ul.configs
li {
width: 100%;
height: 60px;
display: flex;
align-items: center;
gap: 3px;
padding: 5px;
border-radius: 5px;
background: var(--cor-de-fundo-do-item-da-configuracao);
}
main
section.listOfCarriers
section.list-container
div.category
ul.configs
li
div.logo {
width: auto;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
main
section.listOfCarriers
section.list-container
div.category
ul.configs
li
div.logo
img {
width: 40px;
height: auto;
}
main
section.listOfCarriers
section.list-container
div.category
ul.configs
li
div.description {
width: 150px;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
justify-items: center;
align-content: center;
overflow: hidden;
}
main
section.listOfCarriers
section.list-container
div.category
ul.configs
li
div.description
h1 {
width: 100%;
height: 30px;
display: flex;
justify-content: center;
color: var(--cor-do-texto-do-titulo-do-item-da-configuracao);
font-size: 0.6rem;
font-weight: 400;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
main
section.listOfCarriers
section.list-container
div.category
ul.configs
li
div.description
p {
width: 100%;
height: 30px;
display: flex;
justify-content: flex-end;
align-items: end;
color: var(--cor-do-texto-da-descricao-do-item-da-configuracao);
font-size: 0.6rem;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
main
section.listOfCarriers
section.list-container
div.category
ul.configs
li
div.mode {
width: 50px;
height: 100%;
margin-left: auto;
display: flex;
justify-content: flex-end;
align-items: end;
}
main
section.listOfCarriers
section.list-container
div.category
ul.configs
li
div.mode
p {
color: var(--cor-do-modo-da-conexao-do-item-da-configuracao);
font-size: 0.6rem;
}
section.main-checkuser {
width: 95%;
height: 70%;
position: absolute;
top: 8%;
margin: auto;
border-radius: 5px;
overflow: hidden;
background: var(--cor-de-fundo-do-container-do-checkuser-principal);
opacity: 0;
transform: scale(0);
transform-origin: center;
transition: all 0.3s ease 0.1s;
}
section.main-checkuser.show {
opacity: 1;
transform: scale(1);
}
@media (min-width: 320px) {
section.main-checkuser {
height: 55%;
top: 50%;
bottom: 50%;
}
}
section.main-checkuser header {
width: 100%;
height: 10%;
max-height: 50px;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 10px;
background: var(
--cor-de-fundo-do-header-do-container-do-checkuser-principal
);
}
section.main-checkuser header svg {
color: var(
--cor-do-icone-do-header-do-container-do-checkuser-principal
);
}
section.main-checkuser section.container-content-checkuser {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
}
section.main-checkuser
section.container-content-checkuser
div.connected-success {
width: 50%;
max-width: 100px;
height: 50%;
max-height: 100px;
display: flex;
justify-content: center;
align-items: center;
margin-top: 20px;
margin-bottom: 20px;
border: 1px solid var(--cor-da-borda-do-icone-de-sucesso);
border-radius: 50%;
animation: pulse 1s infinite;
}
section.main-checkuser
section.container-content-checkuser
div.connected-success
svg {
width: 50%;
height: 50%;
color: var(--cor-do-icone-de-sucesso);
}
@keyframes pulse {
0% {
box-shadow: 0 0 0 0 rgba(0, 255, 0, 0.7);
}
70% {
box-shadow: 0 0 0 20px rgba(0, 255, 0, 0);
}
100% {
box-shadow: 0 0 0 0 rgba(0, 255, 0, 0);
}
}
section.main-checkuser section.container-content-checkuser ul {
width: 100%;
height: auto;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 10px;
padding: 0px 10px;
list-style: none;
}
section.main-checkuser section.container-content-checkuser ul li {
width: 100%;
height: 50px;
display: flex;
align-items: center;
padding: 0px 10px;
border-radius: 5px;
background: var(--cor-de-fundo-dos-dados-de-login);
}
section.main-checkuser section.container-content-checkuser ul li svg {
margin-right: 10px;
color: var(--cor-dos-icones-dos-dados-de-login);
}
section.main-checkuser section.container-content-checkuser ul li span {
color: var(--cor-dos-textos-dos-dados-de-login);
}
section.loading {
width: 95%;
height: auto;
position: absolute;
top: 50%;
left: 0;
right: 0;
transform: translateY(-50%);
margin: auto;
border-radius: 5px;
overflow-x: hidden;
opacity: 0;
transform: scale(0);
transform-origin: center;
transition: all 0.3s ease 0.1s;
background: var(--cor-de-fundo-do-container-de-carregamento);
}
section.loading.show {
opacity: 1;
transform: scale(1);
}
section.loading header {
width: 100%;
height: 10%;
max-height: 50px;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 10px;
background: var(--cor-de-fundo-do-header-do-container-de-carregamento);
}
section.loading header svg {
color: var(--cor-do-icone-do-header-do-container-de-carregamento);
}
section.loading div.loading-container {
width: 100px;
height: 100px;
margin: 30px auto;
border: 4px solid #ffffff;
border-top: 4px solid transparent;
border-radius: 50%;
animation: spin 0.5s linear infinite;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
section.profile-checkuser {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: 100%;
right: 0;
bottom: 0;
background: var(--imagem-de-fundo);
background-repeat: no-repeat;
background-position: center;
background-size: cover;
transition: transform 0.5s ease-in-out;
}
section.profile-checkuser.show {
transform: translateX(-100%);
}
section.profile-checkuser header,
section.profile-checkuser section.terms header {
width: 95%;
height: 40px;
display: flex;
align-items: center;
margin: 0 auto;
background: var(
--cor-de-fundo-do-header-do-container-do-perfil-do-usuario
);
}
section.profile-checkuser header h1,
section.profile-checkuser section.terms header h1 {
width: 95%;
color: #ffffff;
font-weight: 400;
font-size: 1rem;
text-align: center;
margin: 0 auto;
border-bottom: 4px solid
var(--cor-da-borda-do-header-do-container-do-perfil-do-usuario);
}
section.profile-checkuser div.not-view-user {
display: none;
flex-direction: column;
align-items: center;
gap: 15px;
padding: 15px 10px;
}
section.profile-checkuser div.not-view-user.show {
display: flex;
}
section.profile-checkuser div.not-view-user div.circle {
width: 100px;
height: 100px;
display: flex;
justify-content: center;
align-items: center;
border: 2px solid
var(
--cor-da-borda-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario
);
border-radius: 50%;
}
section.profile-checkuser div.not-view-user div.circle svg {
width: 50%;
height: 50%;
color: var(
--cor-do-icone-de-dentro-do-close-do-container-do-perfil-do-usuario
);
}
section.profile-checkuser div.not-view-user h2 {
width: 100%;
color: var(
--cor-do-titulo-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario
);
text-align: center;
font-size: 1rem;
}
section.profile-checkuser div.not-view-user p {
color: var(
--cor-da-descricao-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario
);
text-align: center;
font-size: 0.8rem;
}
section.profile-checkuser ul {
width: 100%;
height: auto;
display: none;
flex-direction: column;
gap: 20px;
list-style: none;
padding: 10px;
background: var(
--cor-de-fundo-da-lista-do-container-do-perfil-do-usuario
);
}
section.profile-checkuser ul.show {
display: grid;
}
section.profile-checkuser ul li {
width: 95%;
height: 40px;
display: grid;
align-items: center;
margin: 0px auto;
position: relative;
border-radius: 20px;
background: var(
--cor-de-fundo-dos-items-do-container-do-perfil-do-usuario
);
}
section.profile-checkuser ul li svg {
width: 50px;
height: 50px;
position: absolute;
left: -10px;
padding: 10px;
border-radius: 50%;
box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1);
color: #ffffff;
background: var(
--cor-de-fundo-dos-icones-do-container-do-perfil-do-usuario
);
}
section.profile-checkuser ul li svg.even {
box-shadow: -1px 1px 2px rgba(0, 0, 0, 0.2);
position: absolute;
left: initial;
right: -10px;
}
section.profile-checkuser ul li svg path {
transform: scale(0.6);
transform-origin: center;
}
section.profile-checkuser ul li span {
margin-left: 45px;
color: #ffffff;
font-size: 0.8rem;
}
section.profile-checkuser ul li span.even {
margin-left: auto;
margin-right: 45px;
}
section.profile-checkuser section.terms {
display: flex;
flex-direction: column;
width: 100%;
height: auto;
margin-top: 5%;
}
section.profile-checkuser section.terms p {
width: 95%;
height: auto;
max-height: 210px;
margin: 0 auto;
padding: 10px;
border-radius: 5px;
overflow-y: auto;
color: #ffffff;
text-align: center;
background: var(
--cor-de-fundo-dos-termos-do-container-do-perfil-do-usuario
);
}
@media (min-height: 700px) {
section.profile-checkuser section.terms p {
max-height: 350px;
}
}
section.tools {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: 100%;
right: 0;
background: var(--imagem-de-fundo);
background-repeat: no-repeat;
background-position: center;
background-size: cover;
transition: transform 0.5s ease-in-out;
}
section.tools.show {
transform: translateX(-100%);
}
section.tools header {
width: 100%;
height: auto;
display: flex;
justify-content: center;
}
section.tools header h1 {
width: 90%;
height: auto;
padding: 10px;
border-bottom: 3px solid
var(--cor-da-borda-do-titulo-do-container-de-ferramentas);
text-shadow: 0px 4px 4px
var(--cor-da-sombra-dos-botoes-do-container-de-ferramentas);
color: var(--cor-do-texto-do-titulo-do-container-de-ferramentas);
font-weight: bold;
font-size: 1rem;
text-align: center;
}
section.tools section.container-tools {
width: 100%;
height: auto;
display: flex;
flex-direction: column;
gap: 20px;
margin: 40px 0px 0px 0px;
padding: 0px 10px;
}
section.tools section.container-tools button {
width: 100%;
height: 50px;
display: flex;
align-items: center;
gap: 9.5px;
padding: 0px 16px;
border: 1px solid
var(--cor-da-borda-dos-botoes-do-container-de-ferramentas);
border-radius: 25px;
box-shadow: 0px 4px 4px
var(--cor-da-sombra-dos-botoes-do-container-de-ferramentas);
background: var(--cor-de-fundo-dos-botoes-do-container-de-ferramentas);
}
section.tools section.container-tools button svg {
width: 20px;
height: 20px;
color: var(--cor-dos-icones-dos-botoes-do-container-de-ferramentas);
}
section.tools section.container-tools button span {
color: var(--cor-dos-textos-dos-botoes-do-container-de-ferramentas);
}
section.modal-speedtest,
section.modal-error-alert {
width: 95%;
max-width: 450px;
height: 50%;
position: absolute;
top: 25%;
transform: translate(-50%, -50%);
z-index: 2;
display: flex;
flex-direction: column;
border-radius: 5px;
overflow-x: hidden;
opacity: 0;
transform: scale(0);
transform-origin: center;
transition: all 0.3s ease 0.1s;
}
section.modal-speedtest.show,
section.modal-error-alert.show,
section.modal-logs.show {
opacity: 1;
transform: scale(1);
}
section.modal-speedtest header,
section.modal-error-alert header {
width: 100%;
height: 40px;
display: flex;
align-items: center;
padding: 0px 10px;
}
section.modal-speedtest header {
background: var(--cor-do-header-do-modal-do-speedtest);
}
section.modal-speedtest header h1,
section.modal-error-alert header h1 {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
color: #ffffff;
font-family: "Roboto", sans-serif;
font-weight: bolder;
}
section.modal-speedtest header svg,
section.modal-error-alert header svg {
margin-left: auto;
color: var(--cor-do-icone-do-header-do-modal-do-speedtest);
}
section.modal-speedtest section,
section.modal-error-alert section {
width: 100%;
height: calc(100% - 40px);
position: relative;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
section.modal-speedtest section {
background: var(--cor-de-fundo-do-modal-do-speedtest);
}
section.modal-speedtest section iframe {
width: 100%;
height: 100%;
border: 0;
overflow: hidden;
}
section.modal-error-alert header {
background: var(--cor-do-header-do-modal-de-error);
}
section.modal-error-alert section {
background: var(--cor-de-fundo-do-modal-de-error);
}
section.modal-error-alert section h1 {
padding: 0px 10px;
color: #ffffff;
}
section.modal-error-alert section p {
margin-top: 10px;
padding: 0px 10px;
color: #ffffff;
text-align: center;
}
section.modal-logs {
width: 95%;
max-width: 450px;
height: auto;
position: absolute;
top: 15%;
transform: translate(-50%, -50%);
z-index: 2;
display: flex;
flex-direction: column;
border-radius: 5px;
overflow-x: hidden;
opacity: 0;
transform: scale(0);
transform-origin: center;
transition: all 0.3s ease 0.1s;
}
section.modal-logs header {
width: 100%;
height: 40px;
display: flex;
align-items: center;
justify-content: flex-start;
padding: 0px 10px;
background: var(--cor-de-fundo-do-modal-de-logs);
}
section.modal-logs header h1 {
font-size: 14px;
color: #ffffff;
}
section.modal-logs p {
height: 100%;
/* min-height: 200px;
max-height: 400px; */
padding: 10px;
font-size: 12px;
text-align: left;
color: var(--cor-do-texto-do-registro-do-modal-de-logs);
overflow-y: auto;
background: var(--cor-de-fundo-do-modal-de-logs);
}
section.modal-logs section {
width: 100%;
height: auto;
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 10px;
border-top: 3px solid rgba(161, 161, 161, 1);
background: var(--cor-de-fundo-do-modal-de-logs);
}
section.modal-logs section button {
width: 45%;
min-width: 115px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid rgba(97, 97, 97, 1);
border-radius: 3px;
color: #ffffff;
background: rgba(46, 46, 46, 1);
}
section.renew-window {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: -100%;
right: 100%;
background: var(--imagem-de-fundo);
background-repeat: no-repeat;
background-position: center;
background-size: cover;
transition: transform 0.5s ease-in-out;
}
section.renew-window.show {
transform: translateX(100%);
}
section.renew-window header {
width: 100%;
height: auto;
display: flex;
justify-content: center;
}
section.renew-window header h1 {
width: 90%;
height: auto;
padding: 10px;
border-bottom: 3px solid
var(--cor-da-borda-do-titulo-do-container-de-ferramentas);
text-shadow: 0px 4px 4px
var(--cor-da-sombra-dos-botoes-do-container-de-ferramentas);
color: var(--cor-do-texto-do-titulo-do-container-de-ferramentas);
font-weight: bold;
font-size: 1rem;
text-align: center;
}
section.renew-window section {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
section.renew-window section div {
width: 90%;
height: auto;
display: flex;
flex-direction: column;
align-items: center;
padding: 10px;
margin: 0px 0px 40px 0px;
border: 1px solid rgba(219, 142, 255, 1);
border-radius: 37px;
background: rgba(161, 42, 246, 0.5);
}
section.renew-window section div h1 {
color: #ffffff;
}
section.renew-window section div p {
width: 100%;
display: flex;
justify-content: center;
align-items: center;
margin-top: 15%;
color: #ffffff;
text-align: center;
}
</style>
</head>
<body>
<main>
<section class="home">
<header>
<img
class="logo"
src="https://i.ibb.co/Qkd7xzR/IMG-20230708-213237.png"
alt="logo"
/>
</header>
<div class="carrierSelector">
<svg
xmlns="http://www.w3.org/2000/svg"
width="14"
height="14"
fill="currentColor"
class="bi bi-sd-card"
viewBox="0 0 14 14"
>
<path
d="M6.25 3.5a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2z"
/>
<path
fill-rule="evenodd"
d="M5.914 0H12.5A1.5 1.5 0 0 1 14 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5V3.914c0-.398.158-.78.44-1.06L4.853.439A1.5 1.5 0 0 1 5.914 0zM13 1.5a.5.5 0 0 0-.5-.5H5.914a.5.5 0 0 0-.353.146L3.146 3.561A.5.5 0 0 0 3 3.914V14.5a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-13z"
/>
</svg>
<span>Selecione uma operadora</span>
</div>
<div class="container">
<form>
<div id="container-user-input">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-person"
viewBox="0 0 16 16"
>
<path
d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z"
/>
</svg>
<input id="inputUser" type="text" placeholder="Usuário" />
</div>
<div id="container-password-input">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-key"
viewBox="0 0 16 16"
>
<path
d="M0 8a4 4 0 0 1 7.465-2H14a.5.5 0 0 1 .354.146l1.5 1.5a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0L13 9.207l-.646.647a.5.5 0 0 1-.708 0L11 9.207l-.646.647a.5.5 0 0 1-.708 0L9 9.207l-.646.647A.5.5 0 0 1 8 10h-.535A4 4 0 0 1 0 8zm4-3a3 3 0 1 0 2.712 4.285A.5.5 0 0 1 7.163 9h.63l.853-.854a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.793-.793-1-1h-6.63a.5.5 0 0 1-.451-.285A3 3 0 0 0 4 5z"
/>
<path d="M4 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0z" />
</svg>
<input id="inputPassword" type="password" placeholder="Senha" />
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-eye-slash eye-hidden"
viewBox="0 0 16 16"
>
<path
d="M13.359 11.238C15.06 9.72 16 8 16 8s-3-5.5-8-5.5a7.028 7.028 0 0 0-2.79.588l.77.771A5.944 5.944 0 0 1 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.134 13.134 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755-.165.165-.337.328-.517.486l.708.709z"
/>
<path
d="M11.297 9.176a3.5 3.5 0 0 0-4.474-4.474l.823.823a2.5 2.5 0 0 1 2.829 2.829l.822.822zm-2.943 1.299.822.822a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829z"
/>
<path
d="M3.35 5.47c-.18.16-.353.322-.518.487A13.134 13.134 0 0 0 1.172 8l.195.288c.335.48.83 1.12 1.465 1.755C4.121 11.332 5.881 12.5 8 12.5c.716 0 1.39-.133 2.02-.36l.77.772A7.029 7.029 0 0 1 8 13.5C3 13.5 0 8 0 8s.939-1.721 2.641-3.238l.708.709zm10.296 8.884-12-12 .708-.708 12 12-.708.708z"
/>
</svg>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-eye eye-show eye-none"
viewBox="0 0 16 16"
>
<path
d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.133 13.133 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.133 13.133 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5c-2.12 0-3.879-1.168-5.168-2.457A13.134 13.134 0 0 1 1.172 8z"
/>
<path
d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z"
/>
</svg>
</div>
<div id="container-uuid-input">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-fingerprint"
viewBox="0 0 16 16"
>
<path
d="M8.06 6.5a.5.5 0 0 1 .5.5v.776a11.5 11.5 0 0 1-.552 3.519l-1.331 4.14a.5.5 0 0 1-.952-.305l1.33-4.141a10.5 10.5 0 0 0 .504-3.213V7a.5.5 0 0 1 .5-.5Z"
/>
<path
d="M6.06 7a2 2 0 1 1 4 0 .5.5 0 1 1-1 0 1 1 0 1 0-2 0v.332c0 .409-.022.816-.066 1.221A.5.5 0 0 1 6 8.447c.04-.37.06-.742.06-1.115V7Zm3.509 1a.5.5 0 0 1 .487.513 11.5 11.5 0 0 1-.587 3.339l-1.266 3.8a.5.5 0 0 1-.949-.317l1.267-3.8a10.5 10.5 0 0 0 .535-3.048A.5.5 0 0 1 9.569 8Zm-3.356 2.115a.5.5 0 0 1 .33.626L5.24 14.939a.5.5 0 1 1-.955-.296l1.303-4.199a.5.5 0 0 1 .625-.329Z"
/>
<path
d="M4.759 5.833A3.501 3.501 0 0 1 11.559 7a.5.5 0 0 1-1 0 2.5 2.5 0 0 0-4.857-.833.5.5 0 1 1-.943-.334Zm.3 1.67a.5.5 0 0 1 .449.546 10.72 10.72 0 0 1-.4 2.031l-1.222 4.072a.5.5 0 1 1-.958-.287L4.15 9.793a9.72 9.72 0 0 0 .363-1.842.5.5 0 0 1 .546-.449Zm6 .647a.5.5 0 0 1 .5.5c0 1.28-.213 2.552-.632 3.762l-1.09 3.145a.5.5 0 0 1-.944-.327l1.089-3.145c.382-1.105.578-2.266.578-3.435a.5.5 0 0 1 .5-.5Z"
/>
<path
d="M3.902 4.222a4.996 4.996 0 0 1 5.202-2.113.5.5 0 0 1-.208.979 3.996 3.996 0 0 0-4.163 1.69.5.5 0 0 1-.831-.556Zm6.72-.955a.5.5 0 0 1 .705-.052A4.99 4.99 0 0 1 13.059 7v1.5a.5.5 0 1 1-1 0V7a3.99 3.99 0 0 0-1.386-3.028.5.5 0 0 1-.051-.705ZM3.68 5.842a.5.5 0 0 1 .422.568c-.029.192-.044.39-.044.59 0 .71-.1 1.417-.298 2.1l-1.14 3.923a.5.5 0 1 1-.96-.279L2.8 8.821A6.531 6.531 0 0 0 3.058 7c0-.25.019-.496.054-.736a.5.5 0 0 1 .568-.422Zm8.882 3.66a.5.5 0 0 1 .456.54c-.084 1-.298 1.986-.64 2.934l-.744 2.068a.5.5 0 0 1-.941-.338l.745-2.07a10.51 10.51 0 0 0 .584-2.678.5.5 0 0 1 .54-.456Z"
/>
<path
d="M4.81 1.37A6.5 6.5 0 0 1 14.56 7a.5.5 0 1 1-1 0 5.5 5.5 0 0 0-8.25-4.765.5.5 0 0 1-.5-.865Zm-.89 1.257a.5.5 0 0 1 .04.706A5.478 5.478 0 0 0 2.56 7a.5.5 0 0 1-1 0c0-1.664.626-3.184 1.655-4.333a.5.5 0 0 1 .706-.04ZM1.915 8.02a.5.5 0 0 1 .346.616l-.779 2.767a.5.5 0 1 1-.962-.27l.778-2.767a.5.5 0 0 1 .617-.346Zm12.15.481a.5.5 0 0 1 .49.51c-.03 1.499-.161 3.025-.727 4.533l-.07.187a.5.5 0 0 1-.936-.351l.07-.187c.506-1.35.634-2.74.663-4.202a.5.5 0 0 1 .51-.49Z"
/>
</svg>
<input type="password" placeholder="UUID" id="uuid-input" />
</div>
<div class="buttons">
<button id="startStopVpn" type="button">
<span id="startStopVpnButtonValue">Conectar</span>
</button>
<button id="buttonLogs" type="button">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-file-earmark-text"
viewBox="0 0 16 16"
>
<path
d="M5.5 7a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zM5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z"
/>
<path
d="M9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.5L9.5 0zm0 1v2A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"
/>
</svg>
</button>
</div>
</form>
</div>
</section>
<section class="vpnStatus">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-plug"
viewBox="0 0 16 16"
>
<path
d="M6 0a.5.5 0 0 1 .5.5V3h3V.5a.5.5 0 0 1 1 0V3h1a.5.5 0 0 1 .5.5v3A3.5 3.5 0 0 1 8.5 10c-.002.434-.01.845-.04 1.22-.041.514-.126 1.003-.317 1.424a2.083 2.083 0 0 1-.97 1.028C6.725 13.9 6.169 14 5.5 14c-.998 0-1.61.33-1.974.718A1.922 1.922 0 0 0 3 16H2c0-.616.232-1.367.797-1.968C3.374 13.42 4.261 13 5.5 13c.581 0 .962-.088 1.218-.219.241-.123.4-.3.514-.55.121-.266.193-.621.23-1.09.027-.34.035-.718.037-1.141A3.5 3.5 0 0 1 4 6.5v-3a.5.5 0 0 1 .5-.5h1V.5A.5.5 0 0 1 6 0zM5 4v2.5A2.5 2.5 0 0 0 7.5 9h1A2.5 2.5 0 0 0 11 6.5V4H5z"
/>
</svg>
<span>Desconectado</span>
</section>
<section class="local-ip">
<span>TIM: 192.168.0.1</span>
</section>
<section class="listOfCarriers">
<header class="header-list">
<svg
id="close-modal-configs"
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-x-lg"
viewBox="0 0 16 16"
>
<path
d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"
/>
</svg>
</header>
<section class="list-container"></section>
</section>
<section class="loading">
<header>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-x-lg"
viewBox="0 0 16 16"
>
<path
d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"
/>
</svg>
</header>
<div class="loading-container"></div>
</section>
<section class="main-checkuser">
<header>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-x-lg"
viewBox="0 0 16 16"
>
<path
d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"
/>
</svg>
</header>
<section class="container-content-checkuser">
<div class="connected-success">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-check2"
viewBox="0 0 16 16"
>
<path
d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z"
/>
</svg>
</div>
<ul></ul>
</section>
</section>
<section class="profile-checkuser">
<header>
<h1>INFORMAÇÕES DO PERFIL</h1>
</header>
<div id="not-profile-user" class="not-view-user">
<div class="circle">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-x-lg"
viewBox="0 0 16 16"
>
<path
d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"
/>
</svg>
</div>
<h2>NÃO FOI POSSÍVEL CARREGAR AS INFORMAÇÕES DO PERFIL</h2>
<p>
Tente conectar o seu usuário antes de verificar as informações do
seu perfil
</p>
</div>
<ul id="list-profile">
<li>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-person"
viewBox="0 0 16 16"
>
<path
d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z"
/>
</svg>
<span>NOME DE USUÁRIO: fulano</span>
</li>
<li>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-calendar3-week even"
viewBox="0 0 16 16"
>
<path
d="M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z"
/>
<path
d="M12 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm2-3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"
/>
</svg>
<span class="even">EXPIRAÇÃO: dd/mm/aaaa</span>
</li>
<li>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-hourglass-split"
viewBox="0 0 16 16"
>
<path
d="M2.5 15a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11zm2-13v1c0 .537.12 1.045.337 1.5h6.326c.216-.455.337-.963.337-1.5V2h-7zm3 6.35c0 .701-.478 1.236-1.011 1.492A3.5 3.5 0 0 0 4.5 13s.866-1.299 3-1.48V8.35zm1 0v3.17c2.134.181 3 1.48 3 1.48a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351z"
/>
</svg>
<span>DIAS RESTANTES: 99</span>
</li>
<li>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-phone-flip even"
viewBox="0 0 16 16"
>
<path
fill-rule="evenodd"
d="M11 1H5a1 1 0 0 0-1 1v6a.5.5 0 0 1-1 0V2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v6a.5.5 0 0 1-1 0V2a1 1 0 0 0-1-1Zm1 13a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-2a.5.5 0 0 0-1 0v2a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-2a.5.5 0 0 0-1 0v2ZM1.713 7.954a.5.5 0 1 0-.419-.908c-.347.16-.654.348-.882.57C.184 7.842 0 8.139 0 8.5c0 .546.408.94.823 1.201.44.278 1.043.51 1.745.696C3.978 10.773 5.898 11 8 11c.099 0 .197 0 .294-.002l-1.148 1.148a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2a.5.5 0 1 0-.708.708l1.145 1.144L8 10c-2.04 0-3.87-.221-5.174-.569-.656-.175-1.151-.374-1.47-.575C1.012 8.639 1 8.506 1 8.5c0-.003 0-.059.112-.17.115-.112.31-.242.6-.376Zm12.993-.908a.5.5 0 0 0-.419.908c.292.134.486.264.6.377.113.11.113.166.113.169 0 .003 0 .065-.13.187-.132.122-.352.26-.677.4-.645.28-1.596.523-2.763.687a.5.5 0 0 0 .14.99c1.212-.17 2.26-.43 3.02-.758.38-.164.713-.357.96-.587.246-.229.45-.537.45-.919 0-.362-.184-.66-.412-.883-.228-.223-.535-.411-.882-.571ZM7.5 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1Z"
/>
</svg>
<span class="even">CONECTADOS: 01/03</span>
</li>
</ul>
<section class="terms">
<header>
<h1>TERMOS DE USO</h1>
</header>
<p>
Ao comprar o acesso você aceita todos os nossos termos!
<br />
--------------------------------------------------------------
<br />
<br />
1- Todo e qualquer conteúdo acessado através do aplicativo é de
responsabilidade do usuário! caso o usuário aproveitar-se de nosso
vpn para cometer qualquer ato ilegal, será de total responsabilidade
do usuário!
<br />
<br />
2- Em casos de falha na conexão entre em contato com ovendedor que
lhe forneceu o acesso ao aplicativo!
<br />
<br />
3- NÃO realizamos a prática de REEMBOLSO, então realize o teste
grátis antes de comprar!
<br />
<br />
4- Caso ocorra queda no sinal da operadora os dias offline serão
adicionados de bônus. Peça esses dias ao seu vendedor! (Somente
quedas geral, quedas de forma especifica, não nos
responsabilizamos!)
<br />
<br />
5- Caso houver alguma falhas de conexão por negligencia do usuário
em não saber configurar o aplicativo ou falha na rede móvel do
usuário não disponibilizamos dias bônus para estes casos. Porém
disponibilizamos suporte especializado para ajudar a solucionar
esses problemas. Então em caso de falha de conexão entre em contato
com seu vendedor!
<br />
<br />
6- Método de pagamento é pré-pago, ou seja você paga para usar. Caso
desejar cancelar basta não renovar no próximo mês, que seu login
será deletado automaticamente. Não temos termo de fidelidade em
nossos serviços!
<br />
<br />
7- Não temos vínculos algum com a operadora do seu chip. Vendemos
apenas a conexão SSH, que pode te liberar internet ilimitada através
da conexão realizada no aplicativo!
<br />
<br />
8- Nosso produto é a conexão SSH, não vendemos internet, caso a
operadora que você está utilizando não estiver conectando, você pode
utilizar outra opção de operadora para realizar a conexão!
<br />
<br />
9- Ao utilizar nossa vpn você navegara de forma anônima na internet,
dito isso você concorda em não acessar qualquer conteúdo ilegal ou
não permitidos em seu estado! Atenciosamente ITechNet_VPN
<br />
--------------------------------------------------------------
</p>
</section>
</section>
<section class="tools">
<header>
<h1>FERRAMENTAS</h1>
</header>
<section class="container-tools">
<button id="config-apn">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-tools"
viewBox="0 0 16 16"
>
<path
d="M1 0 0 1l2.2 3.081a1 1 0 0 0 .815.419h.07a1 1 0 0 1 .708.293l2.675 2.675-2.617 2.654A3.003 3.003 0 0 0 0 13a3 3 0 1 0 5.878-.851l2.654-2.617.968.968-.305.914a1 1 0 0 0 .242 1.023l3.27 3.27a.997.997 0 0 0 1.414 0l1.586-1.586a.997.997 0 0 0 0-1.414l-3.27-3.27a1 1 0 0 0-1.023-.242L10.5 9.5l-.96-.96 2.68-2.643A3.005 3.005 0 0 0 16 3c0-.269-.035-.53-.102-.777l-2.14 2.141L12 4l-.364-1.757L13.777.102a3 3 0 0 0-3.675 3.68L7.462 6.46 4.793 3.793a1 1 0 0 1-.293-.707v-.071a1 1 0 0 0-.419-.814L1 0Zm9.646 10.646a.5.5 0 0 1 .708 0l2.914 2.915a.5.5 0 0 1-.707.707l-2.915-2.914a.5.5 0 0 1 0-.708ZM3 11l.471.242.529.026.287.445.445.287.026.529L5 13l-.242.471-.026.529-.445.287-.287.445-.529.026L3 15l-.471-.242L2 14.732l-.287-.445L1.268 14l-.026-.529L1 13l.242-.471.026-.529.445-.287.287-.445.529-.026L3 11Z"
/>
</svg>
<span>CONFIGURAR APN</span>
</button>
<button id="battery-optimization">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-youtube" viewBox="0 0 16 16">
<path d="M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.007 2.007 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.007 2.007 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31.4 31.4 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.007 2.007 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A99.788 99.788 0 0 1 7.858 2h.193zM6.4 5.209v4.818l4.157-2.408L6.4 5.209z"/>
</svg>
<span> ASSISTIR YOUTUBE</span>
</button>
<button id="speedtest">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-speedometer2"
viewBox="0 0 16 16"
>
<path
d="M8 4a.5.5 0 0 1 .5.5V6a.5.5 0 0 1-1 0V4.5A.5.5 0 0 1 8 4zM3.732 5.732a.5.5 0 0 1 .707 0l.915.914a.5.5 0 1 1-.708.708l-.914-.915a.5.5 0 0 1 0-.707zM2 10a.5.5 0 0 1 .5-.5h1.586a.5.5 0 0 1 0 1H2.5A.5.5 0 0 1 2 10zm9.5 0a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H12a.5.5 0 0 1-.5-.5zm.754-4.246a.389.389 0 0 0-.527-.02L7.547 9.31a.91.91 0 1 0 1.302 1.258l3.434-4.297a.389.389 0 0 0-.029-.518z"
/>
<path
fill-rule="evenodd"
d="M0 10a8 8 0 1 1 15.547 2.661c-.442 1.253-1.845 1.602-2.932 1.25C11.309 13.488 9.475 13 8 13c-1.474 0-3.31.488-4.615.911-1.087.352-2.49.003-2.932-1.25A7.988 7.988 0 0 1 0 10zm8-7a7 7 0 0 0-6.603 9.329c.203.575.923.876 1.68.63C4.397 12.533 6.358 12 8 12s3.604.532 4.923.96c.757.245 1.477-.056 1.68-.631A7 7 0 0 0 8 3z"
/>
</svg>
<span> SPEED TESTE </span>
</button>
<button id="clean-data-app">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-trash"
viewBox="0 0 16 16"
>
<path
d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z"
/>
<path
d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z"
/>
</svg>
<span>RESETAR/LIMPAR APP</span>
</button>
<button id="renew_acess">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrows-fullscreen" viewBox="0 0 16 16">
<path fill-rule="evenodd" d="M5.828 10.172a.5.5 0 0 0-.707 0l-4.096 4.096V11.5a.5.5 0 0 0-1 0v3.975a.5.5 0 0 0 .5.5H4.5a.5.5 0 0 0 0-1H1.732l4.096-4.096a.5.5 0 0 0 0-.707zm4.344 0a.5.5 0 0 1 .707 0l4.096 4.096V11.5a.5.5 0 1 1 1 0v3.975a.5.5 0 0 1-.5.5H11.5a.5.5 0 0 1 0-1h2.768l-4.096-4.096a.5.5 0 0 1 0-.707zm0-4.344a.5.5 0 0 0 .707 0l4.096-4.096V4.5a.5.5 0 1 0 1 0V.525a.5.5 0 0 0-.5-.5H11.5a.5.5 0 0 0 0 1h2.768l-4.096 4.096a.5.5 0 0 0 0 .707zm-4.344 0a.5.5 0 0 1-.707 0L1.025 1.732V4.5a.5.5 0 0 1-1 0V.525a.5.5 0 0 1 .5-.5H4.5a.5.5 0 0 1 0 1H1.732l4.096 4.096a.5.5 0 0 1 0 .707z"/>
</svg>
<span>ACESSAR PAINEL WEB</span>
</button>
</section>
</section>
<section class="renew-window">
<header>
<h1>⚠️INFORMAÇÕES IMPORTANTES⚠️</h1>
</header>
<section>
<div>
<h1>⚠️⚠️⚠️⚠️⚠️⚠️⚠️</h1>
<p>
✅ MANTENHA SEU APLICATIVO SEMPRE ATUALIZADO PARA NÃO FICAR SEM INTERNET, DUVIDAS CHAMAR SEU VENDENDOR! ✅<br><br>⛔ PROIBIDO USAR TORRENT ⛔<br><br>⛔ PROIBIDO COMPARTILHAR OU ROTEAR A INTERNET 🌏<br><br>⏳ AGUARDE DE 5 A 15 SEGUNDOS EM CADA UMA CONEXÃO ATÉ CONECTAR ⏳<br><br>📲 USE ILIMITADO PARA NAVEGAR NO FACEBOOK, INSTAGRAM, YOUTUBE, TIK TOK, JOGOS ONLINE E ENTRE OUTRAS COISAS 🌏<br><br>📝 MANTENHA SUA INTERNET EM DIA PARA NÃO FICAR SEM ACESSO ✅<br><br>🥳 ITechNet_VPN CONECTANDO VOCÊ AO MUNDO A 5 ANOS 🔥<br>
</p>
</div>
</section>
</section>
<section class="modal-speedtest">
<header>
<h1>SPEED TESTE</h1>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-x-lg"
viewBox="0 0 16 16"
>
<path
d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"
/>
</svg>
</header>
<section>
<iframe src=""></iframe>
</section>
</section>
<section class="modal-error-alert">
<header>
<h1>ERROR</h1>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-x-lg"
viewBox="0 0 16 16"
>
<path
d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"
/>
</svg>
</header>
<section>
<h1>TITULO DO ERRO</h1>
<p></p>
</section>
</section>
<section class="modal-logs">
<header>
<h1>REGISTRO - É NECESSÁRIO AGUARDAR ALGUNS SEGUNDOS PARA CONECTAR</h1><br>
</header><br>
<p></p>
<section>
<button id="clean-data-logs">LIMPAR</button>
<button id="hidden-modal-logs">FECHAR</button>
</section>
</section>
<section class="controls">
<button
id="refresh-button"
type="button"
title="Atualizar as configurações do app"
>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-arrow-down" viewBox="0 0 16 16">
<path fill-rule="evenodd" d="M7.646 10.854a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L8.5 9.293V5.5a.5.5 0 0 0-1 0v3.793L6.354 8.146a.5.5 0 1 0-.708.708l2 2z"/>
<path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383zm.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/>
</svg>
</button>
<button id="renew" type="button" title="Renovar pagamento">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16">
<path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/>
</svg>
</button>
<button
id="backToHome"
type="button"
title="Voltar para a página inicial"
>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-house"
viewBox="0 0 16 16"
>
<path
d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L2 8.207V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V8.207l.646.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.707 1.5ZM13 7.207V13.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V7.207l5-5 5 5Z"
/>
</svg>
</button>
<button id="utilitys" type="button" title="utilidades">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-gear"
viewBox="0 0 16 16"
>
<path
d="M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492zM5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0z"
/>
<path
d="M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255-.52l-.094-.319zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 0 0 2.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 0 0 1.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 0 0-1.115 2.693l.16.291c.415.764-.42 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 0 0-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 0 0-2.692-1.115l-.292.16c-.764.415-1.6-.42-1.184-1.185l.159-.291A1.873 1.873 0 0 0 1.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 0 0 3.06 4.377l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 0 0 2.692-1.115l.094-.319z"
/>
</svg>
</button>
<button id="profile-button" type="button" title="Detalhes do usuário">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-person"
viewBox="0 0 16 16"
>
<path
d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z"
/>
</svg>
</button>
</section>
</main>
<!-- VARIAVEIS DE CONSULTA -->
<script>
let dataCheckuser
let zIndexContainers
</script>
<!-- FUNÇÕES DO APP -->
<script>
const dtStatusBarHeight = () => DtGetStatusBarHeight.execute()
const dtNavHeight = () => DtGetNavigationBarHeight.execute()
const dtGetLogs = () => DtGetLogs.execute()
const dtClearLogs = () => DtClearLogs.execute()
const dtVpnState = () => DtGetVpnState.execute()
const dtTranslateText = (label) => DtTranslateText.execute(label)
const dtStartVpn = () => DtExecuteVpnStart.execute()
const dtStopVpn = () => DtExecuteVpnStop.execute()
const dtUpdate = () => DtStartAppUpdate.execute()
const dtAllConfigs = () => DtGetConfigs.execute()
const dtSetConfig = (id) => DtSetConfig.execute(id)
const dtGetDefaultConfig = () => DtGetDefaultConfig.execute()
const dtGetUsername = () => DtUsername.get()
const dtSetUsername = (username) => DtUsername.set(username)
const dtGetPassword = () => DtPassword.get()
const dtSetPassword = (password) => DtPassword.set(password)
const dtGetUUID = () => DtUuid.get()
const dtSetUUID = (uuid) => DtUuid.set(uuid)
const dtApnConfig = () => DtStartApnActivity.execute()
const dtBatteryOptimization = () => DtIgnoreBatteryOptimizations.execute()
const dtCleanApp = () => DtCleanApp.execute()
const dtGetNetworkName = () => Android.getNetworkName()
const dtGetNetworkLocalIp = () => Android.getLocalIP()
</script>
<!-- FUNÇÕES PARA O APP -->
<script>
const dtVpnStateListener = (state) => {
const stateVpn = vpnState(state)
vpnStatus.html(stateVpn)
}
const dtOnNewLogListener = () => writeModalLogger()
const dtConfigClickListener = () => {
const user = dtGetUsername()
const pass = dtGetPassword()
const value = areaCarrierSelector()
CarrierTextValue.html(value)
inputUser.attr({
placeholder: inputUserPlaceholder(),
value: inputUserValue(),
})
inputPassword.attr({
placeholder: inputPasswordPlaceholder(),
value: inputPasswordValue(),
})
inputUUID.attr({
value: inputUUIDValue(),
placeholder: inputUUIDPlaceholder(),
})
toggleInput()
}
const dtCheckUserModelListener = (model) => {
dataCheckuser = model
writeMainCheckuser(dataCheckuser)
writeProfileCheckuser(dataCheckuser)
loadingContainer.toggleClass("show")
mainCheckuser.addClass("show")
}
const dtCheckUserStartedListener = () => {
loadingContainer.addClass("show")
}
const dtMessageErrorListener = (model) => writeModalError(model)
</script>
<!-- HELPERS -->
<script>
const createSvgIcon = (iconPath, Class = "") => {
const svg = document.createElementNS(
"http://www.w3.org/2000/svg",
"svg"
)
svg.setAttribute("xmlns", "http://www.w3.org/2000/svg")
svg.setAttribute("width", "16")
svg.setAttribute("height", "16")
svg.setAttribute("fill", "currentColor")
svg.setAttribute("viewBox", "0 0 16 16")
svg.setAttribute("class", Class)
const path = document.createElementNS(
"http://www.w3.org/2000/svg",
"path"
)
path.setAttribute("d", iconPath)
svg.appendChild(path)
return svg
}
const createListItem = (iconPath, Class = "", text) => {
const li = document.createElement("li")
const svg = createSvgIcon(iconPath, Class)
const span = document.createElement("span")
span.setAttribute("class", Class)
span.innerHTML = text
li.appendChild(svg)
li.appendChild(span)
return li
}
</script>
<!-- FUNÇÕES DO LAYOUT -->
<script>
const vpnState = (state) => {
const stateLabel = state || dtVpnState()
switch (stateLabel) {
case "DISCONNECTED":
writeStartStopVpnButton(dtTranslateText("LBL_BTN_START"))
return disconnected()
case "CONNECTING":
writeStartStopVpnButton(dtTranslateText("LBL_BTN_STOP"))
return connecting()
case "CONNECTED":
writeStartStopVpnButton(dtTranslateText("LBL_BTN_STOP"))
return connected()
case "STOPPING":
writeStartStopVpnButton(dtTranslateText("LBL_BTN_STOPPING"))
return stopping()
case "NO_NETWORK":
writeStartStopVpnButton(dtTranslateText("LBL_BTN_STOP"))
return noNetwork()
case "AUTH":
writeStartStopVpnButton(dtTranslateText("LBL_BTN_STOP"))
return auth()
case "AUTH_FAILED":
writeStartStopVpnButton(dtTranslateText("LBL_BTN_STOP"))
return authFailed()
default:
return "Não foi possível obter o status da conexão"
}
}
const writeNetworkStatus = () => {
let span = "<span>Localizando rede...</span>"
setInterval(() => {
if (dtGetNetworkName() && dtGetNetworkLocalIp()) {
const carrierName = `${dtGetNetworkName()}`
const localIP = `${dtGetNetworkLocalIp()}`
span = `<span>${carrierName}: ${localIP}</span>`
networkStatus.html(span)
} else {
span = `<span>Não foi possível carregar informações da rede</span>`
}
}, 500)
return span
}
const allConfigs = () => {
const ListContainer = document.querySelector("section.list-container")
ListContainer.innerHTML = ""
const configs = JSON.parse(dtAllConfigs())
configs.sort((a, b) => a.sorter - b.sorter)
configs.forEach((item) =>
item.items.sort((a, b) => a.sorter - b.sorter)
)
configs.forEach((category) => {
const defaultColor = category.color
const categoryColor = `#${defaultColor.substr(
3
)}${defaultColor.substr(1, 2)}`
document.documentElement.style.setProperty(
"--cor-de-fundo-do-header-da-categoria",
categoryColor
)
document.documentElement.style.setProperty(
"--cor-de-fundo-do-item-da-configuracao",
categoryColor
)
const div = document.createElement("div")
const header = document.createElement("header")
const h1 = document.createElement("h1")
const svg = document.createElementNS(
"http://www.w3.org/2000/svg",
"svg"
)
const path = document.createElementNS(
"http://www.w3.org/2000/svg",
"path"
)
const ul = document.createElement("ul")
div.classList.add("category")
ul.classList.add("configs")
h1.textContent = category.name
svg.setAttribute("xmlns", "http://www.w3.org/2000/svg")
svg.setAttribute("width", "16")
svg.setAttribute("height", "16")
svg.setAttribute("fill", "currentColor")
svg.setAttribute("class", "bi bi-caret-right")
svg.setAttribute("viewBox", "0 0 16 16")
path.setAttribute(
"d",
"M6 12.796V3.204L11.481 8 6 12.796zm.659.753 5.48-4.796a1 1 0 0 0 0-1.506L6.66 2.451C6.011 1.885 5 2.345 5 3.204v9.592a1 1 0 0 0 1.659.753"
)
svg.appendChild(path)
header.appendChild(h1)
header.appendChild(svg)
div.appendChild(header)
category.items.forEach((item) => {
const li = document.createElement("li")
const img = document.createElement("img")
const h1Item = document.createElement("h1")
const pItem = document.createElement("p")
const pMode = document.createElement("p")
const divLogo = document.createElement("div")
const divDescription = document.createElement("div")
const divMode = document.createElement("div")
divLogo.classList.add("logo")
divDescription.classList.add("description")
divMode.classList.add("mode")
h1Item.textContent = item.name
pItem.textContent = item.description
pMode.textContent = item.mode
img.setAttribute("src", item.icon)
divLogo.appendChild(img)
divDescription.appendChild(h1Item)
divDescription.appendChild(pItem)
divMode.appendChild(pMode)
li.appendChild(divLogo)
li.appendChild(divDescription)
li.appendChild(divMode)
ul.appendChild(li)
div.appendChild(ul)
li.addEventListener("click", () => {
dtSetConfig(item.id)
listOfCarriers.toggleClass("active")
})
})
header.addEventListener("click", () => {
if (ul.offsetHeight <= 0) {
ul.style.maxHeight = `${ul.scrollHeight}px`
svg.style.transform = "rotate(90deg)"
} else {
ul.style.maxHeight = "0px"
svg.style.transform = "rotate(0deg)"
}
})
ListContainer.appendChild(div)
})
}
const showPassword = () => {
const inputPassword = document.querySelector("#inputPassword")
if (inputPassword.type === "password") {
inputPassword.type = "text"
eyeHidden.toggleClass(".eye-none").style({ display: "none" })
eyeShow.style({ display: "block" })
} else {
inputPassword.type = "password"
eyeShow.toggleClass(".eye-none").style({ display: "none" })
eyeHidden.toggleClass(".eye-none").style({ display: "block" })
}
}
const startStopVpn = () => {
const state = dtVpnState()
state === "CONNECTED" ? dtStopVpn() : dtStartVpn()
}
const writeStartStopVpnButton = (status) => {
buttonStartStopVpnValue.html(status)
}
const writeMainCheckuser = (model) => {
const data = JSON.parse(model)
const ul = document.querySelector(
"section.main-checkuser section.container-content-checkuser ul"
)
const username = createListItem(
"M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z",
"",
`NOME DE USUÁRIO: ${data.username}`
)
const expiration = createListItem(
'M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z"/><path d="M12 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm2-3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2z',
"",
`EXPIRAÇÃO: ${data.expiration_date}`
)
const remainingDays = createListItem(
"M2.5 15a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11zm2-13v1c0 .537.12 1.045.337 1.5h6.326c.216-.455.337-.963.337-1.5V2h-7zm3 6.35c0 .701-.478 1.236-1.011 1.492A3.5 3.5 0 0 0 4.5 13s.866-1.299 3-1.48V8.35zm1 0v3.17c2.134.181 3 1.48 3 1.48a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351z",
"",
`DIAS RESTANTES: ${data.expiration_days}`
)
const connecteds = createListItem(
"M11 1H5a1 1 0 0 0-1 1v6a.5.5 0 0 1-1 0V2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v6a.5.5 0 0 1-1 0V2a1 1 0 0 0-1-1Zm1 13a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-2a.5.5 0 0 0-1 0v2a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-2a.5.5 0 0 0-1 0v2ZM1.713 7.954a.5.5 0 1 0-.419-.908c-.347.16-.654.348-.882.57C.184 7.842 0 8.139 0 8.5c0 .546.408.94.823 1.201.44.278 1.043.51 1.745.696C3.978 10.773 5.898 11 8 11c.099 0 .197 0 .294-.002l-1.148 1.148a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2a.5.5 0 1 0-.708.708l1.145 1.144L8 10c-2.04 0-3.87-.221-5.174-.569-.656-.175-1.151-.374-1.47-.575C1.012 8.639 1 8.506 1 8.5c0-.003 0-.059.112-.17.115-.112.31-.242.6-.376Zm12.993-.908a.5.5 0 0 0-.419.908c.292.134.486.264.6.377.113.11.113.166.113.169 0 .003 0 .065-.13.187-.132.122-.352.26-.677.4-.645.28-1.596.523-2.763.687a.5.5 0 0 0 .14.99c1.212-.17 2.26-.43 3.02-.758.38-.164.713-.357.96-.587.246-.229.45-.537.45-.919 0-.362-.184-.66-.412-.883-.228-.223-.535-.411-.882-.571ZM7.5 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1Z",
"",
`CONECTADOS: ${data.count_connections}/${data.limit_connections}`
)
ul.innerHTML =
username.outerHTML +
expiration.outerHTML +
remainingDays.outerHTML +
connecteds.outerHTML
}
const showProfile = (model) => {
hiddenAll()
const data = model
const main = document.querySelector("section.profile-checkuser")
const zIndexMain = window
.getComputedStyle(main)
.getPropertyValue("z-index")
if (data !== undefined) {
notViewUser.removeClass("show")
viewUser.addClass("show")
mainProfile.addClass("show")
} else {
viewUser.removeClass("show")
notViewUser.addClass("show")
mainProfile.addClass("show")
}
}
const hiddenProfile = () => {
mainProfile.removeClass("show")
mainProfile.style({ "z-index": 0 })
}
const writeProfileCheckuser = (model) => {
const data = JSON.parse(model)
const username = createListItem(
"M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z",
"",
`NOME DE USUÁRIO: ${data.username}`
)
const expiration = createListItem(
'M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z"/><path d="M12 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm2-3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2z',
"even",
`EXPIRAÇÃO: ${data.expiration_date}`
)
const remainingDays = createListItem(
"M2.5 15a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11zm2-13v1c0 .537.12 1.045.337 1.5h6.326c.216-.455.337-.963.337-1.5V2h-7zm3 6.35c0 .701-.478 1.236-1.011 1.492A3.5 3.5 0 0 0 4.5 13s.866-1.299 3-1.48V8.35zm1 0v3.17c2.134.181 3 1.48 3 1.48a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351z",
"",
`DIAS RESTANTES: ${data.expiration_days}`
)
const connecteds = createListItem(
"M11 1H5a1 1 0 0 0-1 1v6a.5.5 0 0 1-1 0V2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v6a.5.5 0 0 1-1 0V2a1 1 0 0 0-1-1Zm1 13a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-2a.5.5 0 0 0-1 0v2a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-2a.5.5 0 0 0-1 0v2ZM1.713 7.954a.5.5 0 1 0-.419-.908c-.347.16-.654.348-.882.57C.184 7.842 0 8.139 0 8.5c0 .546.408.94.823 1.201.44.278 1.043.51 1.745.696C3.978 10.773 5.898 11 8 11c.099 0 .197 0 .294-.002l-1.148 1.148a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2a.5.5 0 1 0-.708.708l1.145 1.144L8 10c-2.04 0-3.87-.221-5.174-.569-.656-.175-1.151-.374-1.47-.575C1.012 8.639 1 8.506 1 8.5c0-.003 0-.059.112-.17.115-.112.31-.242.6-.376Zm12.993-.908a.5.5 0 0 0-.419.908c.292.134.486.264.6.377.113.11.113.166.113.169 0 .003 0 .065-.13.187-.132.122-.352.26-.677.4-.645.28-1.596.523-2.763.687a.5.5 0 0 0 .14.99c1.212-.17 2.26-.43 3.02-.758.38-.164.713-.357.96-.587.246-.229.45-.537.45-.919 0-.362-.184-.66-.412-.883-.228-.223-.535-.411-.882-.571ZM7.5 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1Z",
"even",
`CONECTADOS: ${data.count_connections}/${data.limit_connections}`
)
viewUser.html(
username.outerHTML +
expiration.outerHTML +
remainingDays.outerHTML +
connecteds.outerHTML
)
}
const hiddenLoadContainer = () => {
loadingContainer.removeClass("show")
}
const showMainTools = () => {
hiddenAll()
MainTools.style({ "z-index": 1 })
MainTools.addClass("show")
}
const hiddenMainTools = () => {
MainTools.style({ "z-index": 0 })
MainTools.removeClass("show")
}
const showModalSpeedtest = () => {
ModalSpeedtest.addClass("show")
IframeModalSpeedtest.attr({ src: "https://fast.com/pt/" })
}
const hiddenModalSpeedtest = () => {
ModalSpeedtest.removeClass("show")
IframeModalSpeedtest.attr({ src: "" })
}
const writeModalError = (model) => {
const data = JSON.parse(model)
const h1 = `<h1>${data.title}</h1>`
const p = `<p>${data.content}</p>`
ContentModalError.html(h1 + p)
hiddenAll()
showModalError()
}
const showModalError = () => {
ModalError.addClass("show")
}
const hiddenModalError = () => {
ModalError.removeClass("show")
}
const writeModalLogger = () => {
const data = JSON.parse(dtGetLogs())
const p = document.querySelector("section.modal-logs p")
let content = ""
data.forEach((item) => {
content += `${Object.keys(item)} ${item[Object.keys(item)]} <br>`
})
ModalLoggerContent.html(content)
p.scrollTop = p.scrollHeight
return content
}
const showModalLogger = () => {
ModalLogger.addClass("show")
}
const hiddenModalRegister = () => {
ModalLogger.removeClass("show")
}
const showRenew = () => {
hiddenAll()
MainRenew.addClass("show")
}
const hiddenRenew = () => {
MainRenew.removeClass("show")
}
const hiddenAll = () => {
hiddenProfile()
hiddenMainTools()
hiddenModalSpeedtest()
hiddenModalError()
hiddenModalRegister()
hiddenRenew()
}
</script>
<!-- ESTADOS DE CONEXÃO -->
<script>
const disconnected = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-outlet" viewBox="0 0 16 16"><path d="M3.34 2.994c.275-.338.68-.494 1.074-.494h7.172c.393 0 .798.156 1.074.494.578.708 1.84 2.534 1.84 5.006 0 2.472-1.262 4.297-1.84 5.006-.276.338-.68.494-1.074.494H4.414c-.394 0-.799-.156-1.074-.494C2.762 12.297 1.5 10.472 1.5 8c0-2.472 1.262-4.297 1.84-5.006zm1.074.506a.376.376 0 0 0-.299.126C3.599 4.259 2.5 5.863 2.5 8c0 2.137 1.099 3.74 1.615 4.374.06.073.163.126.3.126h7.17c.137 0 .24-.053.3-.126.516-.633 1.615-2.237 1.615-4.374 0-2.137-1.099-3.74-1.615-4.374a.376.376 0 0 0-.3-.126h-7.17z"/><path d="M6 5.5a.5.5 0 0 1 .5.5v1.5a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm4 0a.5.5 0 0 1 .5.5v1.5a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zM7 10v1h2v-1a1 1 0 0 0-2 0z"/></svg>`
const text = `<span>${dtTranslateText("LBL_STATE_DISCONNECTED")}</span>`
return icon + text
}
const connecting = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plug" viewBox="0 0 16 16"><path d="M6 0a.5.5 0 0 1 .5.5V3h3V.5a.5.5 0 0 1 1 0V3h1a.5.5 0 0 1 .5.5v3A3.5 3.5 0 0 1 8.5 10c-.002.434-.01.845-.04 1.22-.041.514-.126 1.003-.317 1.424a2.083 2.083 0 0 1-.97 1.028C6.725 13.9 6.169 14 5.5 14c-.998 0-1.61.33-1.974.718A1.922 1.922 0 0 0 3 16H2c0-.616.232-1.367.797-1.968C3.374 13.42 4.261 13 5.5 13c.581 0 .962-.088 1.218-.219.241-.123.4-.3.514-.55.121-.266.193-.621.23-1.09.027-.34.035-.718.037-1.141A3.5 3.5 0 0 1 4 6.5v-3a.5.5 0 0 1 .5-.5h1V.5A.5.5 0 0 1 6 0zM5 4v2.5A2.5 2.5 0 0 0 7.5 9h1A2.5 2.5 0 0 0 11 6.5V4H5z"/></svg>`
const text = `<span>${dtTranslateText("LBL_STATE_CONNECTING")}</span>`
return icon + text
}
const connected = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plugin" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M1 8a7 7 0 1 1 2.898 5.673c-.167-.121-.216-.406-.002-.62l1.8-1.8a3.5 3.5 0 0 0 4.572-.328l1.414-1.415a.5.5 0 0 0 0-.707l-.707-.707 1.559-1.563a.5.5 0 1 0-.708-.706l-1.559 1.562-1.414-1.414 1.56-1.562a.5.5 0 1 0-.707-.706l-1.56 1.56-.707-.706a.5.5 0 0 0-.707 0L5.318 5.975a3.5 3.5 0 0 0-.328 4.571l-1.8 1.8c-.58.58-.62 1.6.121 2.137A8 8 0 1 0 0 8a.5.5 0 0 0 1 0Z"/></svg>`
const text = `<span>${dtTranslateText("LBL_STATE_CONNECTED")}</span>`
return icon + text
}
const stopping = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stop" viewBox="0 0 16 16"><path d="M3.5 5A1.5 1.5 0 0 1 5 3.5h6A1.5 1.5 0 0 1 12.5 5v6a1.5 1.5 0 0 1-1.5 1.5H5A1.5 1.5 0 0 1 3.5 11V5zM5 4.5a.5.5 0 0 0-.5.5v6a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 .5-.5V5a.5.5 0 0 0-.5-.5H5z"/></svg>`
const text = `<span>${dtTranslateText("LBL_STATE_STOPPING")}</span>`
return icon + text
}
const noNetwork = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wifi-off" viewBox="0 0 16 16"><path d="M10.706 3.294A12.545 12.545 0 0 0 8 3C5.259 3 2.723 3.882.663 5.379a.485.485 0 0 0-.048.736.518.518 0 0 0 .668.05A11.448 11.448 0 0 1 8 4c.63 0 1.249.05 1.852.148l.854-.854zM8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065 8.448 8.448 0 0 1 3.51-1.27L8 6zm2.596 1.404.785-.785c.63.24 1.227.545 1.785.907a.482.482 0 0 1 .063.745.525.525 0 0 1-.652.065 8.462 8.462 0 0 0-1.98-.932zM8 10l.933-.933a6.455 6.455 0 0 1 2.013.637c.285.145.326.524.1.75l-.015.015a.532.532 0 0 1-.611.09A5.478 5.478 0 0 0 8 10zm4.905-4.905.747-.747c.59.3 1.153.645 1.685 1.03a.485.485 0 0 1 .047.737.518.518 0 0 1-.668.05 11.493 11.493 0 0 0-1.811-1.07zM9.02 11.78c.238.14.236.464.04.66l-.707.706a.5.5 0 0 1-.707 0l-.707-.707c-.195-.195-.197-.518.04-.66A1.99 1.99 0 0 1 8 11.5c.374 0 .723.102 1.021.28zm4.355-9.905a.53.53 0 0 1 .75.75l-10.75 10.75a.53.53 0 0 1-.75-.75l10.75-10.75z"/></svg>`
const text = `<span>${dtTranslateText("LBL_STATE_NO_NETWORK")}</span>`
return icon + text
}
const auth = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-lock" viewBox="0 0 16 16"><path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 5.996V14H3s-1 0-1-1 1-4 6-4c.564 0 1.077.038 1.544.107a4.524 4.524 0 0 0-.803.918A10.46 10.46 0 0 0 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h5ZM9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1v-2Zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1Z"/></svg>`
const text = `<span>${dtTranslateText("LBL_STATE_AUTH")}</span>`
return icon + text
}
const authFailed = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-slash" viewBox="0 0 16 16"><path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465l3.465-3.465Zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465Zm-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95ZM11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm.256 7a4.474 4.474 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10c.26 0 .507.009.74.025.226-.341.496-.65.804-.918C9.077 9.038 8.564 9 8 9c-5 0-6 3-6 4s1 1 1 1h5.256Z"/></svg>`
const text = `<span>${dtTranslateText("LBL_STATE_AUTH_FAILED")}</span>`
return icon + text
}
</script>
<!-- VALOR DE EXIBIÇÃO DO CAMPO DE SELECIONAR OPERADORA -->
<script>
const areaCarrierSelector = () => {
const data = dtGetDefaultConfig()
if (data !== undefined) {
return JSON.parse(data).name
} else {
return dtTranslateText("LBL_CHOOSE_CONFIG")
}
}
</script>
<!-- VALOR DE EXIBIÇÃO DO INPUT USUÁRIO DO USUÁRIO -->
<script>
const inputUserPlaceholder = () => dtTranslateText("LBL_USERNAME")
const inputUserValue = () => {
if (dtGetUsername()) {
return dtGetUsername()
} else {
return ""
}
}
</script>
<!-- VALOR DE EXIBIÇÃO DO INPUT DA SENHA DO USUÁRIO -->
<script>
const inputPasswordPlaceholder = () => dtTranslateText("LBL_PASSWORD")
const inputPasswordValue = () => {
if (dtGetPassword()) {
return dtGetPassword()
} else {
return ""
}
}
</script>
<!-- VALOR DE EXIBIÇÃO DO INPUT DA SENHA DO USUÁRIO -->
<script>
const inputUUIDPlaceholder = () => dtTranslateText("LBL_UUID")
const inputUUIDValue = () => {
if (dtGetUUID()) {
return dtGetUUID()
} else {
return ""
}
}
</script>
<!-- DOM WRAPPER -->
<script>
const Dom = (selector) => {
const _elements = document.querySelectorAll(selector)
const wrapper = {
on(listeners) {
for (const [event, listener] of Object.entries(listeners)) {
_elements.forEach((element) => {
element.addEventListener(event, listener)
})
}
return wrapper
},
addClass: (...tokens) => {
_elements.forEach((element) => {
element.classList.add(...tokens)
})
return wrapper
},
removeClass: (...tokens) => {
_elements.forEach((element) => {
element.classList.remove(...tokens)
})
return wrapper
},
toggleClass: (token, force) => {
_elements.forEach((element) => {
element.classList.toggle(token, force)
})
return wrapper
},
style(styles) {
for (const [property, value] of Object.entries(styles)) {
console.log(value)
_elements.forEach((element) => {
element.style[property] = value
})
}
return wrapper
},
attr(attrs) {
for (const [name, value] of Object.entries(attrs)) {
_elements.forEach((element) => element.setAttribute(name, value))
}
return wrapper
},
html(value) {
_elements.forEach((element) => (element.innerHTML = value))
return wrapper
},
}
return wrapper
}
</script>
<!-- VÁRIAVIES -->
<script>
const main = Dom("main")
const vpnStatus = Dom("section.vpnStatus")
const networkStatus = Dom("section.local-ip")
const carrierSelector = Dom("div.carrierSelector")
const listOfCarriers = Dom("section.listOfCarriers")
const closeModalCarriers = Dom("#close-modal-configs")
const CarrierCategoryContainer = Dom("section.list-container")
const CarrierTextValue = Dom("div.carrierSelector span")
const buttonControl = Dom("section.controls")
const refreshButton = Dom("#refresh-button")
const renewButton = Dom("#renew")
const backToHome = Dom("#backToHome")
const ToolsButton = Dom("#utilitys")
const profileButton = Dom("#profile-button")
const ContainerInputUser = Dom("#container-user-input")
const ContainerInputPassword = Dom("#container-password-input")
const ContainerInputUUID = Dom("#container-uuid-input")
const inputUser = Dom("#inputUser")
const inputPassword = Dom("#inputPassword")
const inputUUID = Dom("#uuid-input")
const buttonStartStopVpn = Dom("#startStopVpn")
const buttonLogs = Dom("#buttonLogs")
const buttonStartStopVpnValue = Dom("#startStopVpnButtonValue")
const mainCheckuser = Dom("section.main-checkuser")
const mainCheckuserClose = Dom("section.main-checkuser header svg")
const mainCheckuserContent = Dom(
"section.main-checkuser section.container-content-checkuser"
)
const loadingContainer = Dom("section.loading")
const loadingContainerClose = Dom("section.loading header svg")
const mainProfile = Dom("section.profile-checkuser")
const notViewUser = Dom("#not-profile-user")
const viewUser = Dom("#list-profile")
const MainTools = Dom("section.tools")
const ConfigApnButton = Dom("#config-apn")
const BatteryOptimizeButton = Dom("#battery-optimization")
const SpeedtestButton = Dom("#speedtest")
const ClearDataAppButton = Dom("#clean-data-app")
const MainRenew = Dom("section.renew-window")
const ModalSpeedtest = Dom("section.modal-speedtest")
const CloseModalSpeedtest = Dom("section.modal-speedtest header svg")
const IframeModalSpeedtest = Dom("section.modal-speedtest section iframe")
const ModalError = Dom("section.modal-error-alert")
const CloseModalError = Dom("section.modal-error-alert header svg")
const ContentModalError = Dom("section.modal-error-alert section")
const ModalLogger = Dom("section.modal-logs")
const CloseModalLogger = Dom("#hidden-modal-logs")
const ModalLoggerContent = Dom("section.modal-logs p")
const CleanLoggerContent = Dom("#clean-data-logs")
const eyeHidden = Dom("svg.eye-hidden")
const eyeShow = Dom("svg.eye-show")
const ButtonRenew = Dom("#renew_acess")
</script>
<!-- AÇÕES -->
<script>
main.style({ padding: `${dtStatusBarHeight() + 100}px 0px 0px 0px` })
mainProfile.style({
padding: `${dtStatusBarHeight() + 10}px 0px ${
dtNavHeight() + 90
}px 0px`,
})
MainTools.style({
padding: `${dtStatusBarHeight() + 10}px 0px ${
dtNavHeight() + 90
}px 0px`,
})
MainRenew.style({
padding: `${dtStatusBarHeight() + 10}px 0px ${
dtNavHeight() + 90
}px 0px`,
})
ModalLogger.style({
top: `${dtStatusBarHeight() + 95}px`,
bottom: `${dtNavHeight() + 95}px`,
})
vpnStatus.html(vpnState())
networkStatus.html(writeNetworkStatus())
carrierSelector.on({
click: () => {
allConfigs()
listOfCarriers.toggleClass("active")
},
})
closeModalCarriers.on({
click: () => listOfCarriers.toggleClass("active"),
})
CarrierTextValue.html(areaCarrierSelector())
inputUser.on({ input: (e) => dtSetUsername(e.target.value) })
inputPassword.on({ input: (e) => dtSetPassword(e.target.value) })
inputUUID.on({ input: (e) => dtSetUUID(e.target.value) })
eyeHidden.on({ click: () => showPassword() })
eyeShow.on({ click: () => showPassword() })
inputUser.attr({
placeholder: inputUserPlaceholder(),
value: inputUserValue(),
})
inputPassword.attr({
placeholder: inputPasswordPlaceholder(),
value: inputPasswordValue(),
})
inputUUID.attr({
value: inputUUIDValue(),
placeholder: inputUUIDPlaceholder(),
})
buttonControl.style({ bottom: `${dtNavHeight() + 10}px` })
refreshButton.on({ click: () => dtUpdate() })
renewButton.on({ click: () => showRenew() })
backToHome.on({
click: () => {
hiddenAll()
},
})
ToolsButton.on({ click: () => showMainTools() })
profileButton.on({ click: () => showProfile(dataCheckuser) })
buttonStartStopVpn.on({ click: () => startStopVpn() })
buttonLogs.on({ click: () => showModalLogger() })
loadingContainerClose.on({ click: () => hiddenLoadContainer() })
mainCheckuserClose.on({ click: () => mainCheckuser.toggleClass("show") })
ConfigApnButton.on({ click: () => dtApnConfig() })
BatteryOptimizeButton.on({ click: () => DtStartWebViewActivity.execute('http://youtube.com')})
SpeedtestButton.on({ click: () => showModalSpeedtest() })
CloseModalSpeedtest.on({ click: () => hiddenModalSpeedtest() })
ClearDataAppButton.on({ click: () => dtCleanApp() })
ButtonRenew.on({click: () => DtStartWebViewActivity.execute('https://painel.space/renovar.php')})
CloseModalError.on({ click: () => hiddenModalError() })
ModalLoggerContent.html(writeModalLogger())
CleanLoggerContent.on({ click: () => dtClearLogs() })
CloseModalLogger.on({ click: () => hiddenModalRegister() })
const checkV2ray = () => {
const data = JSON.parse(dtGetDefaultConfig())
const isV2ray = data?.mode?.toLowerCase()?.startsWith("v2ray")
if (!dtGetDefaultConfig()) {
return false
} else if (isV2ray && data?.auth?.v2ray_uuid) {
return "have_uuid"
} else if (isV2ray && !data?.auth?.v2ray_uuid) {
return "not_have_uuid"
} else {
return false
}
}
const toggleInput = () => {
if (checkV2ray() === "not_have_uuid") {
ContainerInputUser.style({ display: "none" })
ContainerInputPassword.style({ display: "none" })
ContainerInputUUID.style({ display: "flex" })
} else if (checkV2ray() === "have_uuid") {
ContainerInputUser.style({ display: "none" })
ContainerInputPassword.style({ display: "none" })
ContainerInputUUID.style({ display: "none" })
} else {
ContainerInputUser.style({ display: "flex" })
ContainerInputPassword.style({ display: "flex" })
ContainerInputUUID.style({ display: "none" })
}
}
toggleInput()
</script>
</body>
</html>