PageSourceSearch

https://dudus.log.br/trabalhe-conosco

html dudus.log.br collected 2026-10-02 01:18:45 UTC 101,760 bytes, 2,399 lines download raw bytes

1<!DOCTYPE html>
2<html lang="pt-BR">
3
4<head>
5  <meta charset="UTF-8">
6  <meta http-equiv="X-UA-Compatible" content="IE=edge">
7  <meta name="viewport" content="width=device-width, initial-scale=1.0">
8  <meta name="viewport" content="width=device-width, initial-scale=1.0">
9  <meta name="description" content="">
10  <meta name="keywords" content="">
11  <meta name="og:description" content="">
12  <meta name="og:image" content="padraoBanco/logoG.png">
13  <title>Dudus - Trabalhe Conosco</title>
14  
15<meta charset="UTF-8">
16<meta name="viewport" content="width=device-width, initial-scale=1.0">
17<meta name="author" content="Mapp Sistemas">
18<meta http-equiv="content-language" content="pt">
19<style>
20
21    @media screen and (max-width: 467px) {
22        .styleRuaN20{
23            max-width: 100px;
24            overflow: hidden;
25        }
26    }
27
28    @media (max-width: 991px) and (min-width: 767px) {
29        .styleRuaN20{
30            max-width: 125px;
31            overflow: hidden;
32        }
33    }
34
35    @media (min-width: 991px) {
36        .styleRuaN20{
37            max-width: 200px;
38            overflow: hidden;
39        }
40    }
41</style>
42
43
44
45<!-- Bootstrap 3.3.2 -->
46<link rel="stylesheet" href="assets/css/bootstrap.min.css">
47<!--<link rel="stylesheet" href="assets/css/font-awesome.css">-->
48
49<link rel="stylesheet" src="oo/src/assets/css/ol.css" type="text/css" />
50<link rel="stylesheet" src="oo/src/assets/css/estilo-map-openlayers.css" type="text/css" />
51
52<link rel="stylesheet" href="assets/css/animate.min.css">
53
54<link rel="stylesheet" href="assets/css/font-awesome.min.css">
55<link rel="stylesheet" href="assets/css/slick.min.css">
56
57<link rel="stylesheet" href="assets/js/rs-plugin/css/settings.css">
58
59<link rel="stylesheet" href="assets/css/meuStilo.min.css?v=5">
60<link rel="stylesheet" href="assets/css/stiloUsuarioLogado.min.css?v=1">
61
62
63
64<style>
65
66    :root{
67        --st-color-fonte-topo: #000000;
68        --st-color-fundo-topo: #fff;
69        --st-color-borda-topo: #ffdd21;
70        --st-color-fonte-barra-endereco: #fff;
71        --st-color-principal: #201e1e;
72        --st-color-rodape:#fff;
73        --st-color-fonte-segundaria: #fff;
74        --st-color-font-secundaria-n20: #000000;
75        --st-color-font-sec-nav: #000000;
76
77        --main-color: #201e1e;
78        --sec-color: #FFF;
79    }
80
81
82</style>
83
84<link rel="stylesheet" href="assets/css/a-styles-vindo-banco.css?v=9">
85
86
87
88  <link rel="stylesheet" href="expresso/dashboard/css/font-icons.css">
89
90
91<script type="text/javascript" src="assets/js/modernizr.custom.32033.js"></script>
91
92
93<!--
93<script src="assets/js/jquery-1.11.1.min.js"></script>
93-->
94<!--usando para autocomplete jquery nos endereços-->
95<script src="assets/js/jquery-1.12.4.min.js"></script>
95
96<link rel="stylesheet" href="assets/css/jquery-ui.css">
97<script src="assets/js/jquery-ui.js"></script>
97
98
99<script src="assets/js/jquery-migrate-1.4.1.js"></script>
99
100<style>
101  .icones-clientes {
102    text-transform: capitalize;
103  }
104
105  .ui-autocomplete {
106    max-height: 300px;
107    /*overflow-y: auto;*/
108    /* prevent horizontal scrollbar */
109    overflow-x: hidden;
110  }
111
112  /* IE 6 doesn't support max-height
113     * we use height instead, but this forces the menu to always be this tall
114     */
115  * html .ui-autocomplete {
116    height: 300px;
117  }
118
119  .ui-autocomplete-loading {
120
121    /*background: white url('assets/img/ui-anim_basic_16x16.gif') right center no-repeat;*/
122
123  }
124
125  .contact-details {
126    word-break: break-all;
127    font-size: 12px;
128  }
129</style>
130
131<script type="text/javascript">
132  // var isIE = /*cc_on!@*/false || !!document.documentMode;
133  // alert('Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PageSourceSearchBot/1.0; +https://pagesourcesearch.com/bot) Chrome/128.0.0.0 Safari/537.36');
134  // alert('Chrome');
135</script>
135
136
137
138
139<!--[if lt IE 9]>
140  
140<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
140
141  
141<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
141
142<![endif]-->
143
144
145
146
147
148<script>
149    var dominioCorrente = 'dudus';
150
151    async function calcularDistanciaPeloGoogle(tipoVeiculo, inicio, fim, p1, p2, retorno) {
152
153        console.log('====> DATA HORA:: ' + new Date());
154
155        let validarDataHora = '';
156        let departureTime = '';
157
158        let start = inicio;
159        let end = fim;
160        let arrayLaLo = [];
161        let rotaMaisCurta = 'N';
162
163        if ((tipoVeiculo == 'A') || (tipoVeiculo == 'M') || (tipoVeiculo == 'D') || (tipoVeiculo == 'B') || (tipoVeiculo == 'AC') || (tipoVeiculo == 'MC') || (tipoVeiculo == 'DC') || (tipoVeiculo == 'BC') || (tipoVeiculo == 'X')) {
164            rotaMaisCurta = 'S';
165        }
166
167        if (tipoVeiculo == '') {
168            tipoVeiculo = 'M';
169        }
170
171        if (dominioCorrente == 'edumotoboy') {
172            tipoVeiculo = 'B';
173        }
174
175        if (dominioCorrente == 'virtuan') {
176            tipoVeiculo = 'B';
177        }
178
179        if (dominioCorrente == 'logmoto') {
180            if (tipoVeiculo == 'MC') {
181                rotaMaisCurta = 'N';
182            }
183        }
184
185        arrayLaLo.push(new google.maps.LatLng(inicio));
186        arrayLaLo.push(new google.maps.LatLng(fim));
187
188        console.log('.... p1 = ' + p1 + ' start ' + start + ' end =  ' + end);
189
190        let directionsService = new google.maps.DirectionsService();
191        let tipoVeiculoUsuario = tipoVeiculo;
192
193        let request = {
194            origin: start,
195            destination: end,
196            travelMode: 'DRIVING',
197            provideRouteAlternatives: true,
198            unitSystem: google.maps.UnitSystem.METRIC
199        };
200
201        if (validarDataHora) {
202            let request = {
203                origin: start,
204                destination: end,
205                travelMode: 'DRIVING',
206                provideRouteAlternatives: true,
207                unitSystem: google.maps.UnitSystem.METRIC,
208                drivingOptions: {
209                    departureTime: departureTime,
210                    trafficModel: 'bestguess'
211                }
212            };
213        }
214
215        if (tipoVeiculoUsuario == 'B') { // bicicleta
216
217            request = {
218                origin: start,
219                destination: end,
220                travelMode: 'BICYCLING',
221                provideRouteAlternatives: true
222            };
223
224            if (validarDataHora) {
225                let request = {
226                    origin: start,
227                    destination: end,
228                    travelMode: 'BICYCLING',
229                    provideRouteAlternatives: true,
230                    unitSystem: google.maps.UnitSystem.METRIC,
231                    drivingOptions: {
232                        departureTime: departureTime,
233                        trafficModel: 'bestguess'
234                    }
235                };
236            }
237        }
238
239        directionsService.route(request, function(result, status) {
240
241            console.log('status:: ' + status);
242
243            var indexTT = p2;
244
245            var optionsDisplay = {
246                map: mapa,
247                suppressMarkers: true,
248                preserveViewport: true
249            }
250
251            if (arrayDirectionsDisplay) {
252
253                if (typeof arrayDirectionsDisplay[indexTT] != 'undefined') {
254                    arrayDirectionsDisplay[indexTT].setMap(null);
255                }
256            }
257
258            var ponto1 = p1;
259            var ponto2 = p2;
260            var menorDistancia = 0;
261            var menorDuracao = 0;
262            var melhorRota = 0;
263            var duracaoRotaMaisRapida = 0;
264            var distanciaRotaMaisRapida = 0;
265            var melhorRotaTempo = 0;
266            var ponto2Int = parseInt(ponto2);
267
268            switch (status) {
269                case google.maps.DirectionsStatus.OVER_QUERY_LIMIT:
270                    console.log('OVER_QUERY_LIMIT ');
271                    /**
272                     * o Google está limitando a 10 consultas por segundo
273                     * por isso implementamos aqui se cair no limite
274                     * após 1 segundo chamamos a função
275                     * loopCalcularTodasDistanciaVazio()
276                     * para buscar novamente a distância
277                     */
278
279                    setTimeout(function() {
280                        loopCalcularTodasDistanciaVazio();
281                    }, 1000);
282
283                    break;
284            }
285
286            if (status == google.maps.DirectionsStatus.OK) { // Se deu tudo certo
287
288                var myroute = '';
289                var melhorRota = 0;
290
291                var total = 0;
292                var duracao = 0;
293                var rotaAnterior = 0;
294                var rotaAtual = 0;
295                var indexD = 0;
296                var indexT = 0;
297                var index = 0;
298
299                for (j = 0; j < result.routes.length; j++) {
300
301                    myroute = result.routes[j];
302
303                    for (var i = 0; i < myroute.legs.length; i++) {
304
305                        total = myroute.legs[i].distance.value;
306                        duracao = myroute.legs[i].duration.value;
307
308                        console.log('duracao ' + duracao + ' distancia total =' + total);
309                    }
310                    if (rotaAnterior === 0) {
311                        rotaAnterior = total;
312                        menorDistancia = total;
313
314                        indexD = j;
315                        console.log('menorDuracao ' + menorDuracao + '== duracao =' + duracao + " indexD " + indexD);
316
317                    } else if (rotaAnterior < total) {
318                        total = rotaAnterior;
319                    } else {
320                        menorDistancia = total;
321                        rotaAnterior = total;
322
323                        indexD = j;
324                        console.log('menorDuracao ' + menorDuracao + '== duracao =' + duracao + " indexD " + indexD);
325                    }
326                    /**
327                     * pegar a menor duração
328                     */
329                    if (menorDuracao === 0) {
330                        menorDuracao = duracao;
331                    } else {
332                        if (menorDuracao > duracao) {
333                            menorDuracao = duracao;
334
335                        }
336                    }
337
338                    if (duracaoRotaMaisRapida == 0) {
339                        duracaoRotaMaisRapida = duracao;
340                        distanciaRotaMaisRapida = total;
341
342                        indexT = j;
343                    } else {
344                        if (duracao < duracaoRotaMaisRapida) {
345                            duracaoRotaMaisRapida = duracao;
346                            distanciaRotaMaisRapida = total;
347                            indexT = j;
348                        }
349                    }
350
351                }
352
353                index = indexD;
354                if (rotaMaisCurta === 'N') {
355                    /**
356                     * aqui pega a rota mais rápida e não a mais curta
357                     */
358                    menorDistancia = distanciaRotaMaisRapida;
359                    menorDuracao = duracaoRotaMaisRapida;
360                    index = indexT;
361                }
362
363                calculandoDistanciaPonto[ponto2Int] = 'T'; // terminou de calcular
364
365                console.log(' calculandoDistanciaPonto p2=  ' + calculandoDistanciaPonto[ponto2Int] + ' ponot ' + ponto2Int + ' retorno ' + retorno);
366
367                console.log('menorDistancia:: ' + menorDistancia);
368
369                console.log('distancia p2:: ' + p2)
370                console.log('retorno p2:: ' + retorno)
371                console.log('menorDistancia p2:: ' + menorDistancia)
372                console.log('menorDuracao p2:: ' + menorDuracao)
373
374                if (retorno == '') {
375
376                    $('#distancia' + p2).val(menorDistancia);
377                    $('#duracao' + p2).val(menorDuracao);
378
379                    if (document.getElementById('erroColeta' + p2)) {
380                        $('#erroColeta' + p2).text('');
381                    }
382                } else {
383
384                    $('#distanciaR').val(menorDistancia);
385                    $('#duracaoR').val(menorDuracao);
386                }
387                /**
388                 * loop mostra para cliente quais ainda falta para calcular
389                 */
390                loopVerificarTodasDistanciaVazio();
391
392                if (document.getElementById("rotaPoline" + p2)) {
393
394                    let aux = [];
395                    let arryLaLo = result.routes[index].overview_path;
396
397                    arryLaLo.forEach(function(e) {
398                        aux.push([e.lat(), e.lng()]);
399                    });
400
401                    document.querySelector("#rotaPoline" + p2).value = JSON.stringify(aux);
402                }
403
404                var decodedPoints = result.routes[index].overview_path;
405                var arrayPoligno = [];
406
407                decodedPoints.map(function(a) {
408                    arrayPoligno.push({
409                        lat: a.lat(),
410                        lng: a.lng()
411                    });
412                });
413
414                //campos usando no para armazenar DirectionsRenderer para cada rota no endereço
415                // e tambem para armazena as polyline das rotas.
416
417                if (document.getElementById('rotaPoline')) {
418                    document.getElementById('rotaPoline').value = '';
419                }
420
421
422            } else {
423                console.log(' status else ok');
424                calculandoDistanciaPonto[ponto2Int] = 'T'; // terminou de calcular
425            }
426
427        });
428    }
429
430    function loopVerificarTodasDistanciaVazio() {
431
432        var pontoInicio = 2;
433        var numeroEnderecosExiste = $("#identificadorEndereco").val();
434        var neeInt = parseInt(numeroEnderecosExiste);
435        neeInt--;
436        a = pontoInicio;
437
438        var precisaRecalcular = 'N';
439        var pontoInicio = 0;
440        var msg = '';
441        while (a <= neeInt) {
442            /**
443             * verifica se distancia esta vazio
444             */
445            var distancia = document.getElementById('distancia' + a).value;
446            if ((distancia === '') || (distancia === undefined)) {
447
448                precisaRecalcular = 'S';
449                if (pontoInicio === 0) {
450                    pontoInicio = a - 1;
451                }
452                msg += ' Ponto ' + a + '<br />';
453            }
454            a++;
455        }
456        if (document.getElementById('divInfodist')) {
457            if (msg !== '') {
458                msg = 'Calculando distâncias, aguarde... <br /> ' + msg + ' ';
459            }
460            document.getElementById('divInfodist').innerHTML = msg;
461        }
462        $('#divGif').html('');
463    }
464
465    function calcularDistanciagraphhopper(pontos1, pontos2, menorDistancia, menorDuracao) {
466
467        if (pontos1 != '' || pontos1 != undefined) {
468
469            console.log(' pontos ' + pontos1);
470            var pontosInicio = pontos1.split(',');
471            var laInicio = pontosInicio[0];
472            var loInicio = pontosInicio[1];
473            laInicio = Number(laInicio);
474            loInicio = Number(loInicio);
475
476            console.log(' laInicio = ' + laInicio + ' loInicio ' + loInicio);
477
478            var pontosFim = pontos2.split(',');
479            var laFim = pontosFim[0];
480            var loFim = pontosFim[1];
481            laFim = Number(laFim);
482            loFim = Number(loFim);
483
484            console.log(' laFim = ' + laFim + ' loFim ' + loFim);
485
486            var point = [];
487            point[0] = ['ponto 1'];
488            point[0].lat = laInicio;
489            point[0].long = loInicio;
490
491            point[1] = ['ponto 2'];
492            point[1].lat = laFim;
493            point[1].long = loFim;
494
495            let pointComplete = '';
496            for (var prop in point) {
497                pointComplete += 'point=' + point[prop].lat + ',' + point[prop].long + '&';
498            }
499
500            let url = new URL('https://graphhopper.com/api/1/route?' + pointComplete);
501
502            url.searchParams.set('vehicle', 'car'); //tipo de veiculo
503            url.searchParams.set('locale', 'pt_BR');
504            url.searchParams.set('calc_points', 'true'); //retorna rota 
505            url.searchParams.set('key', '3754f47e-6c49-41f5-aba8-92303ca87061');
506
507            var resposta = [];
508            var distancia = '';
509            var tempo = '';
510            let request = new XMLHttpRequest();
511
512            request.open('GET', url);
513            request.responseType = 'json'
514            request.send();
515            request.onload = function() {
516
517                switch (request.status) {
518                    case 200:
519                        resposta['status'] = 200;
520                        resposta['resposta'] = request.response;
521                        distancia = request.response.paths[0].distance;
522                        tempo = request.response.paths[0].time;
523                        //console.log(request.response.paths[0].distance);
524                        console.log(request.response);
525                        console.log('graphhopper distancia ' + distancia + ' tempo ' + tempo);
526                        console.log('Google menorDistancia = ' + menorDistancia + ' menorDuracao ' + menorDuracao);
527
528                        var kmGrap = distancia / 1000;
529                        var kmGoogle = menorDistancia / 1000;
530                        var diferenca = kmGoogle - kmGrap;
531
532                        console.log('Google km = ' + kmGoogle + ' kmGrap ' + kmGrap + ' diferença = ' + diferenca);
533
534                        $.post("enderecosServico/enderecoAdicional/ajaxInsereDadosGraphhopperBanco.php", {
535                                kmGrap: kmGrap,
536                                kmGoogle: kmGoogle,
537                                diferenca: diferenca,
538                                tempo: tempo,
539                                menorDuracao: menorDuracao,
540                                pontos1: pontos1,
541                                pontos2: pontos2
542                            },
543                            function(retorno) {
544                                $('#divJsonTeste').html(retorno);
545
546                            }, 'html');
547
548                        break;
549                    case 400:
550                        resposta['status'] = 400;
551                        resposta['resposta'] = 'Sua solicitação não é válida. Por exemplo, você especificou poucos ou muitos pontos.';
552                        break;
553                    case 401:
554                        resposta['status'] = 401;
555                        resposta['resposta'] = 'Autenticação necessária';
556                        break;
557                    case 429:
558                        resposta['status'] = 429;
559                        resposta['resposta'] = 'Limite de API alcançado.';
560                        break;
561                    case 500:
562                        resposta['status'] = 500;
563                        resposta['resposta'] = 'Erro do Servidor Interno. Notificação automática.';
564                        break;
565                    case 501:
566                        resposta['status'] = 501;
567                        resposta['resposta'] = 'Apenas uma lista especial de veículos é suportada.';
568                        break;
569                }
570
571            };
572
573        }
574    }
575</script>
vendor: 1 bytes, line 575
575
576<script type="text/javascript">
577    var displayObject = false;
578    var tipoCalculoPonto = ''
579
580    function validateLatLng(latitude, longitude) {
581        // let pattern = new RegExp('^-?([1-8]?[1-9]|[1-9]0)\\.{1}\\d{1,6}');
582        // return pattern.test(latitude) && pattern.test(longitude);
583
584        const latitudeRegex = /^[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?)$/;
585        const longitudeRegex = /^[-+]?([1-9]?\d(\.\d+)?|1[0-7]\d(\.\d+)?|180(\.0+)?)$/;
586
587        if (latitudeRegex.test(latitude) && longitudeRegex.test(longitude)) {
588            return true;
589        } else {
590            return false;
591        }
592
593    }
594
595    // FUNÇÃO PARA TENTAR EFETUAR O CÁLCULO DE FRETE NOVAMENTE
596    async function retryCalculate(p1, p2, retorno) {
597        const START = `${$(`#latitudeE${p1}`).val()},${$(`#longitudeE${p1}`).val()}`
598        const END = `${$(`#latitudeE${p2}`).val()},${$(`#longitudeE${p2}`).val()}`
599
600        const START_ADDRESS = $(`#txtEnderecoE${p1}`).val();
601        const END_ADDRESS = $(`#txtEnderecoE${p2}`).val();
602
603        const VEHICLE_TYPE = $(`#tipoVeiculo`).val() ? $(`#tipoVeiculo`).val() : "";
604
605        var isCalculating = false;
606        if (calculandoDistanciaPonto.indexOf(p2)) {
607            if (calculandoDistanciaPonto[p2] !== "S") {
608                calculandoDistanciaPonto[p2] = "S";
609                isCalculating = true;
610            }
611        }
612
613        if (isCalculating) {
614            $(`#divGif`).html(`<img src="imagens/carregando.gif" /><br />Aguarde...`);
615
616            /*
617            const asyncAjax = async (start, end, vehicleType, startAddress, endAddress) => {
618                return new Promise((response, rejection) => {
619                    $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaJavascript.php", {
620                        inicio: start,
621                        fim: end,
622                        p1: p1,
623                        p2: p2,
624                        retorno: retorno,
625                        tipoVeiculo: vehicleType,
626                        endPonto1: startAddress,
627                        endPonto2: endAddress
628                    }, html => {
629                        $("#divGif").html(html);
630                        response(true);
631                    }, "html");
632                });
633            }*/
634
635            const asyncAjax = async (start, end, vehicleType, startAddress, endAddress) => {
636                return new Promise((resolve, reject) => {
637                    $.ajax({
638                        url: "enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaJavascript.php",
639                        type: "POST",
640                        data: {
641                            inicio: start,
642                            fim: end,
643                            p1: p1,
644                            p2: p2,
645                            retorno: retorno,
646                            tipoVeiculo: vehicleType,
647                            endPonto1: startAddress,
648                            endPonto2: endAddress
649                        },
650                        dataType: "html",
651                        timeout: 15000,
652                        success: function(html) {
653                            $("#divGif").html(html);
654                            resolve(true);
655                        },
656                        error: function(jqXHR, textStatus, errorThrown) {
657                            console.error(" Erro Ajax:", errorThrown);
658
659                            if (textStatus === "timeout") {
660                                console.warn("Timeout de 10 segundos atingido.");
661                            }
662                            $("#divGif").html("Desculpe houver um erro tente novamente.");
663                            reject(false);
664                        }
665                    });
666                });
667            };
668
669            await asyncAjax();
670        }
671    }
672
673    function calcularDistanciaRota(p1, p2, retorno) {
674        // alert('calcularDistanciaRota');
675        return new Promise((resolve, reject) => { // reject declarado mas não usado — resolve sempre para não travar o Worker Pool
676
677        const params = new URLSearchParams(window.location.search);
678
679
680        if (($("#latitudeE" + p1).val() !== '') & ($("#latitudeE" + p2).val() !== '')) {
681            // alert('tipoCalculoPonto: ' + tipoCalculoPonto);
682            if (tipoCalculoPonto == 'P1') {
683                var inicio = $("#latitudeE1").val() + "," + $("#longitudeE1").val();
684
685                let p1Num = parseInt(p1);
686                let p2Num = parseInt(p2);
687
688                if (p1Num > p2Num) {
689                    var inicio = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val();
690                }
691            } else {
692                var inicio = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val();
693            }
694            var fim = $("#latitudeE" + p2).val() + "," + $("#longitudeE" + p2).val();
695            var endPonto1 = $("#txtEnderecoE" + p1).val();
696            var endPonto2 = $("#txtEnderecoE" + p2).val();
697            // DEFINE SE DEVERÁ TENTAR FAZER O CÁLCULO NOVAMENTE
698            const TENTAR_CALCULAR_NOVAMENTE = true;
699            const RETORNO_PRIMEIRO_PONTO = retorno;
700            // console.log('vai chamar ajax p1 ' + p1 + ' p2 ' + p2);
701            /**
702             * calcular rota pelo ajax
703             */
704            var tipoVeiculo = '';
705            if (document.getElementById('tipoVeiculo')) {
706                tipoVeiculo = document.getElementById('tipoVeiculo').value;
707            }
708
709            // document.getElementById('divJsonTeste').innerHTML += '<br> inicio= ' + inicio + ' fim = ' + fim;
710
711            var calculando = 'S';
712            if (calculandoDistanciaPonto.indexOf(p2)) {
713                console.log('index calculandoDistanciaPonto p2 ' + calculandoDistanciaPonto[p2] + ' p2= ' + p2);
714                if (calculandoDistanciaPonto[p2] !== 'S') {
715
716                    calculandoDistanciaPonto[p2] = 'S';
717                    console.log('vai calcular ' + p1 + ' p2 ' + p2);
718
719                    calculando = 'S';
720                }
721            }
722
723            console.log('inicio: ' + inicio + ' | fim: ' + fim + ' | validador: ' + validateLatLng(inicio, fim));
724            // console.log('latitudeEP1: ' + $("#latitudeE" + p1).val() + ' | latitudeEP1: ' + $("#latitudeE" + p1).val() + ' | validador: ' + validateLatLng($("#latitudeE" + p1).val(), $("#longitudeE" + p1).val()));
725            // console.log('latitudeEP2: ' + $("#latitudeE" + p2).val() + ' | latitudeEP2: ' + $("#latitudeE" + p2).val() + ' | validador: ' + validateLatLng($("#latitudeE" + p2).val(), $("#longitudeE" + p2).val()));
726
727            if (validateLatLng($("#latitudeE" + p1).val(), $("#longitudeE" + p1).val()) != true) {
728                calculando = 'N';
729            }
730
731            if (validateLatLng($("#latitudeE" + p2).val(), $("#longitudeE" + p2).val()) != true) {
732                calculando = 'N';
733            }
734
735            console.log('calculando: ' + calculando);
736            if (calculando == 'S') {
737
738                document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Aguarde...';
739                console.log('inicio ' + inicio + ' fim ' + fim + ' p1' + p1 + ' p2 ' + p2 + ' retorno' + retorno + ' tipoVeiculo' + tipoVeiculo);
740                /*
741                                //            $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRota.php", {
742                                $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaJavascript.php", {
743                                    inicio: inicio,
744                                    fim: fim,
745                                    p1: p1,
746                                    p2: p2,
747                                    retorno: retorno,
748                                    tipoVeiculo: tipoVeiculo,
749                                    endPonto1: endPonto1,
750                                    endPonto2: endPonto2
751                                }, function(retorno) {
752                                    $('#divGif').html(retorno);
753                                    //console.log('SUCESSO ajaxCalculaDistanciaRotaJavascript.PHP');
754                                    if (TENTAR_CALCULAR_NOVAMENTE && RETORNO_PRIMEIRO_PONTO) {
755                                        setTimeout(() => {
756                                            const DISTANCIA_RETORNO = parseInt($(`#distanciaR`).val());
757
758                                            if (!DISTANCIA_RETORNO) {
759                                                retryCalculate(p1, p2, RETORNO_PRIMEIRO_PONTO);
760                                            }
761                                        }, 150);
762                                    }
763
764                                    $('#btnCalcFreteCEN').attr('disabled', false);
765                                }, 'html');
766                */
767                $('#btnCalcFreteCEN').attr('disabled', true);
768                // Executar o ajax após o sleep
769
770                let setTimeOutPassar = 'N';
771                if (params.get("calculoDistancia") == 'S' || params.get("editarReabrir") == 'S') {
772                    setTimeOutPassar = 'S';
773                }
774
775                if (setTimeOutPassar == 'S') {
776
777                    setTimeout(function() {
778                        // Atualizar para mostrar que está calculando
779                        document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Calculando rota...';
780
781                        $.ajax({
782                            url: "enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaJavascript.php",
783                            method: "POST",
784                            data: {
785                                inicio: inicio,
786                                fim: fim,
787                                p1: p1,
788                                p2: p2,
789                                retorno: retorno,
790                                tipoVeiculo: tipoVeiculo,
791                                endPonto1: endPonto1,
792                                endPonto2: endPonto2
793                            },
794                            dataType: "html",
795                            timeout: 15000,
796                            success: function(retornoHtml) {
797                                $('#divGif').html(retornoHtml);
798
799                                if (TENTAR_CALCULAR_NOVAMENTE && RETORNO_PRIMEIRO_PONTO) {
800                                    setTimeout(() => {
801                                        const DISTANCIA_RETORNO = parseInt($(`#distanciaR`).val());
802
803                                        if (!DISTANCIA_RETORNO) {
804                                            retryCalculate(p1, p2, RETORNO_PRIMEIRO_PONTO);
805                                        }
806                                    }, 150);
807                                }
808
809                                $('#btnCalcFreteCEN').attr('disabled', false);
810                                resolve({ status: 'sucesso', data: retornoHtml });
811                            },
812                            error: function(jqXHR, textStatus, errorThrown) {
813                                console.error("Erro na requisição:", errorThrown);
814
815                                if (textStatus === "timeout") {
816                                    console.warn("Tempo limite de 15 segundos excedido.");
817                                }
818
819                                $('#btnCalcFreteCEN').attr('disabled', false);
820                                $('#divGif').html('<div class="alert alert-warning">Erro ao calcular rota. Tente novamente.</div>');
821                                resolve({ status: 'erro', msg: errorThrown }); // resolve mesmo em erro — não trava o Worker Pool
822                            }
823                        });
824                    }, 1000);
825                } else {
826                    // Atualizar para mostrar que está calculando
827                    document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Calculando rota...';
828
829                    $.ajax({
830                        url: "enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaJavascript.php",
831                        method: "POST",
832                        data: {
833                            inicio: inicio,
834                            fim: fim,
835                            p1: p1,
836                            p2: p2,
837                            retorno: retorno,
838                            tipoVeiculo: tipoVeiculo,
839                            endPonto1: endPonto1,
840                            endPonto2: endPonto2
841                        },
842                        dataType: "html",
843                        timeout: 15000,
844                        success: function(retornoHtml) {
845                            $('#divGif').html(retornoHtml);
846
847                            if (TENTAR_CALCULAR_NOVAMENTE && RETORNO_PRIMEIRO_PONTO) {
848                                setTimeout(() => {
849                                    const DISTANCIA_RETORNO = parseInt($(`#distanciaR`).val());
850
851                                    if (!DISTANCIA_RETORNO) {
852                                        retryCalculate(p1, p2, RETORNO_PRIMEIRO_PONTO);
853                                    }
854                                }, 150);
855                            }
856
857                            $('#btnCalcFreteCEN').attr('disabled', false);
858                            resolve({ status: 'sucesso', data: retornoHtml });
859                        },
860                        error: function(jqXHR, textStatus, errorThrown) {
861                            console.error("Erro na requisição:", errorThrown);
862
863                            if (textStatus === "timeout") {
864                                console.warn("Tempo limite de 15 segundos excedido.");
865                            }
866
867                            $('#btnCalcFreteCEN').attr('disabled', false);
868                            $('#divGif').html('<div class="alert alert-warning">Erro ao calcular rota. Tente novamente.</div>');
869                            resolve({ status: 'erro', msg: errorThrown }); // resolve mesmo em erro — não trava o Worker Pool
870                        }
871                    });
872                }
873
874            } else {
875                resolve({ status: 'pulado', msg: 'Coordenadas inválidas' });
876            }
877            //            document.getElementById('divJsonTeste').innerHTML += ' <br>p1= ' + p1;
878            if ((p1 === 1) || (p1 === '1')) {
879
880                if (document.getElementById('configEnderecobase')) {
881
882                    if (document.getElementById('configEnderecobase').value == 'S') {
883
884                        calcularDistanciaEnderecoBase();
885                    }
886
887                }
888
889                if (document.getElementById('distanciaClubeMotoboy')) {
890                    /**
891                     * clube do motoboy, tem que calcular a distancia do clube
892                     * até o ponto 1
893                     */
894                    //                    document.getElementById('divJsonTeste').innerHTML += ' <br>calcular distancia até clube= ' + p1;
895                    var tipoVeiculo = '';
896                    if (document.getElementById('tipoVeiculo')) {
897                        tipoVeiculo = document.getElementById('tipoVeiculo').value;
898                    }
899                    //                    alert('tipoVeiculo clube '+tipoVeiculo);
900                    if (tipoVeiculo != 'DC') {
901                        /**
902                         * foi pedido chamado 2622
903                         * retirar deslocamento do modulo cliente contrato delivery( contrato)
904                         */
905                        //                        alert(' calcula dist clube tipoVeiculo clube ' + tipoVeiculo);
906                        calcularDistanciaClubeMotoboyPonto1();
907                        $('#btnCalcFreteCEN').attr('disabled', false);
908                    }
909                }
910                if (document.getElementById('distanciasantafacilidade')) {
911                    /**
912                     * clube do motoboy, tem que calcular a distancia do clube
913                     * até o ponto 1
914                     */
915                    //                    document.getElementById('divJsonTeste').innerHTML += ' <br>calcular distancia até clube= ' + p1;
916                    calcularDistanciaSantaFacilidadePonto1();
917                    $('#btnCalcFreteCEN').attr('disabled', false);
918                }
919            }
920        } else {
921            //            alert(' la e lo vazio la p2 = '+$("#latitudeE" + p2).val()+ ' lap1 '+$("#latitudeE" + p1).val());
922            console.log('ainda vazio latitude p1 ' + p1 + ' p2 ' + p2);
923            resolve({ status: 'pulado', msg: 'Coordenadas vazias' });
924        }
925        }); // fim Promise
926    }
927
928    async function calcularDistanciaRotaGoogle(p1, p2, retorno, time = 1000) {
929
930        if (($("#latitudeE" + p1).val() !== '') & ($("#latitudeE" + p2).val() !== '')) {
931
932            var inicio = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val();
933            var fim = $("#latitudeE" + p2).val() + "," + $("#longitudeE" + p2).val();
934            var endPonto1 = $("#txtEnderecoE" + p1).val();
935            var endPonto2 = $("#txtEnderecoE" + p2).val();
936
937            /**
938             * calcular rota pelo ajax         
939             */
940            var tipoVeiculo = '';
941            if (document.getElementById('tipoVeiculo')) {
942                tipoVeiculo = document.getElementById('tipoVeiculo').value;
943            }
944
945            var calculando = 'N';
946            if (calculandoDistanciaPonto.indexOf(p2)) {
947                console.log('index calculandoDistanciaPonto p2 ' + calculandoDistanciaPonto[p2] + ' p2= ' + p2);
948                if (calculandoDistanciaPonto[p2] !== 'S') {
949
950                    calculandoDistanciaPonto[p2] = 'S';
951                    console.log('vai calcular ' + p1 + ' p2 ' + p2);
952
953                    calculando = 'S';
954                }
955            }
956            if (calculando === 'S') {
957
958                document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Aguarde...';
959
960                console.log('inicio ' + inicio + ' fim ' + fim + ' p1' + p1 + ' p2 ' + p2 + ' retorno' + retorno + ' tipoVeiculo' + tipoVeiculo);
961
962                sleep(time).then(() => {
963                    calcularDistanciaPeloGoogle(tipoVeiculo, inicio, fim, p1, p2, retorno);
964                });
965            }
966            //            document.getElementById('divJsonTeste').innerHTML += ' <br>p1= ' + p1;
967            if ((p1 === 1) || (p1 === '1')) {
968
969                if (document.getElementById('configEnderecobase')) {
970
971                    if (document.getElementById('configEnderecobase').value == 'S') {
972
973                        calcularDistanciaEnderecoBase();
974                    }
975
976                }
977
978                if (document.getElementById('distanciaClubeMotoboy')) {
979                    /**
980                     * clube do motoboy, tem que calcular a distancia do clube
981                     * até o ponto 1 
982                     */
983                    //                    document.getElementById('divJsonTeste').innerHTML += ' <br>calcular distancia até clube= ' + p1;
984                    var tipoVeiculo = '';
985                    if (document.getElementById('tipoVeiculo')) {
986                        tipoVeiculo = document.getElementById('tipoVeiculo').value;
987                    }
988                    //                    alert('tipoVeiculo clube '+tipoVeiculo);
989                    if (tipoVeiculo != 'DC') {
990                        /**
991                         * foi pedido chamado 2622
992                         * retirar deslocamento do modulo cliente contrato delivery( contrato)
993                         */
994                        //                        alert(' calcula dist clube tipoVeiculo clube ' + tipoVeiculo);
995                        calcularDistanciaClubeMotoboyPonto1();
996                    }
997                }
998                if (document.getElementById('distanciasantafacilidade')) {
999                    /**
1000                     * clube do motoboy, tem que calcular a distancia do clube
1001                     * até o ponto 1 
1002                     */
1003                    //                    document.getElementById('divJsonTeste').innerHTML += ' <br>calcular distancia até clube= ' + p1;
1004                    calcularDistanciaSantaFacilidadePonto1();
1005                }
1006            }
1007        } else {
1008            //            alert(' la e lo vazio la p2 = '+$("#latitudeE" + p2).val()+ ' lap1 '+$("#latitudeE" + p1).val());
1009            console.log('ainda vazio latitude p1 ' + p1 + ' p2 ' + p2);
1010
1011        }
1012    }
1013
1014    function calcularDistanciaEnderecoBase() {
1015
1016        $('#btnCalcFreteCEN').attr('disabled', true);
1017        let laP = $("#laEnderecoBase").val();
1018        let loP = $("#loEnderecoBase").val();
1019
1020        let laP1 = $("#latitudeE1").val();
1021        let loP2 = $("#longitudeE1").val();
1022
1023        let calculando = 'S';
1024
1025        if (validateLatLng(laP, loP) != true) {
1026            calculando = 'N';
1027        }
1028
1029        if (validateLatLng(laP1, loP2) != true) {
1030            calculando = 'N';
1031        }
1032
1033
1034        if (calculando == 'S') {
1035            if ((laP1 != '' && loP2 != '') && (laP != '' && loP != '')) {
1036
1037                let tipoVeiculo = 'M';
1038                if (document.getElementById('tipoVeiculo')) {
1039                    tipoVeiculo = document.getElementById('tipoVeiculo').value;
1040                }
1041
1042                document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Aguarde...';
1043
1044                $.post("enderecosServico/enderecoAdicional/ajaxCalcularDistanciaEnderecoBase.php", {
1045                    laP: laP,
1046                    loP: loP,
1047                    laP1: laP1,
1048                    loP2: loP2,
1049                    tipoVeiculo: tipoVeiculo
1050                }, function(retorno) {
1051                    $('#divGif').html(retorno);
1052                    $('#btnCalcFreteCEN').attr('disabled', false);
1053                }, 'html');
1054            }
1055        }
1056
1057    }
1058
1059    function calcularDistanciaClubeMotoboyPonto1() {
1060        var p1 = 1;
1061        var p2 = 2;
1062        //        la e lo do clube -19.9425982,-43.9407188
1063        if (($("#latitudeE1" + p1).val() !== '') & ($("#latitudeE" + p2).val() !== '')) {
1064            var inicio = '-19.9425982,-43.9407188';
1065            var fim = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val();
1066
1067            //  document.getElementById('divJsonTeste').innerHTML += ' <br>p1= ' + inicio+','+fim;
1068            /**
1069             * calcular rota pelo ajax         
1070             */
1071            var tipoVeiculo = 'M';
1072            if (document.getElementById('tipoVeiculo')) {
1073                tipoVeiculo = document.getElementById('tipoVeiculo').value;
1074            }
1075
1076            document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Aguarde...';
1077
1078
1079            //            $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRota.php", {
1080            $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaClubeMotoboy.php", {
1081                    inicio: inicio,
1082                    fim: fim,
1083                    p1: p1,
1084                    p2: p2,
1085                    tipoVeiculo: tipoVeiculo
1086                },
1087                function(retorno) {
1088                    $('#divGif').html(retorno);
1089
1090                }, 'html');
1091        } else {
1092            //            alert(' la e lo vazio la p2 = '+$("#latitudeE" + p2).val()+ ' lap1 '+$("#latitudeE" + p1).val());
1093        }
1094    }
1095
1096    function calcularDistanciaSantaFacilidadePonto1() {
1097        var p1 = 1;
1098        var p2 = 2;
1099        //        la e lo do clube -19.9425982,-43.9407188
1100        if (($("#latitudeE1" + p1).val() !== '') & ($("#latitudeE" + p2).val() !== '')) {
1101            var inicio = '-27.5967526,-48.5579545';
1102            var fim = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val();
1103
1104            //  document.getElementById('divJsonTeste').innerHTML += ' <br>p1= ' + inicio+','+fim;
1105            /**
1106             * calcular rota pelo ajax         
1107             */
1108            var tipoVeiculo = 'M';
1109            if (document.getElementById('tipoVeiculo')) {
1110                tipoVeiculo = document.getElementById('tipoVeiculo').value;
1111            }
1112
1113            document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Aguarde...';
1114
1115
1116            //            $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRota.php", {
1117            $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaSantaFacilidade.php", {
1118                    inicio: inicio,
1119                    fim: fim,
1120                    p1: p1,
1121                    p2: p2,
1122                    tipoVeiculo: tipoVeiculo
1123                },
1124                function(retorno) {
1125                    $('#divGif').html(retorno);
1126
1127                }, 'html');
1128        } else {
1129            //            alert(' la e lo vazio la p2 = '+$("#latitudeE" + p2).val()+ ' lap1 '+$("#latitudeE" + p1).val());
1130        }
1131    }
1132
1133    function calcularDistanciaRotaTracandoRota(p1, p2, retorno) {
1134
1135        //function calcularDistanciaRotaTracandoRota(p1, p2, retorno,valorRadio='')
1136        var valorRadio = '';
1137        if (arguments.length > 3) {
1138            valorRadio = arguments[arguments.length - 1];
1139        }
1140
1141        if (($("#latitudeE" + p1).val() !== '') && ($("#latitudeE" + p2).val() !== '')) {
1142            if (tipoCalculoPonto == 'P1') {
1143                var inicio = $("#latitudeE1").val() + "," + $("#longitudeE1").val();
1144
1145                let p1Num = parseInt(p1);
1146                let p2Num = parseInt(p2);
1147
1148                if (p1Num > p2Num) {
1149                    var inicio = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val();
1150                }
1151            } else {
1152                var inicio = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val();
1153            }
1154
1155            var fim = $("#latitudeE" + p2).val() + "," + $("#longitudeE" + p2).val();
1156
1157            /**
1158             * calcular rota pelo ajax         
1159             */
1160            var tipoVeiculo = '';
1161            if (document.getElementById('tipoVeiculo')) {
1162                tipoVeiculo = document.getElementById('tipoVeiculo').value;
1163            }
1164
1165
1166            // document.getElementById('divJsonTeste').innerHTML += '<br> inicio= ' + inicio + ' fim = ' + fim;
1167
1168            apareceDiv('divGif');
1169            document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Aguarde...';
1170
1171            /**
1172             * marcar radio
1173             */
1174            if (document.getElementsByName('categoriaSel')) {
1175
1176                var radios = document.getElementsByName("categoriaSel");
1177
1178                for (var i = 0; i < radios.length; i++) {
1179                    if (radios[i].value === valorRadio) {
1180                        radios[i].checked = true;
1181                    }
1182                }
1183            }
1184            //            $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRota.php", {
1185            $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaJavascriptTracanDoRota.php", {
1186                    inicio: inicio,
1187                    fim: fim,
1188                    p1: p1,
1189                    p2: p2,
1190                    retorno: retorno,
1191                    tipoVeiculo: tipoVeiculo
1192                },
1193                function(retorno) {
1194                    $('#divGif').html(retorno);
1195
1196                }, 'html');
1197
1198            //            document.getElementById('divJsonTeste').innerHTML += ' <br>p1= ' + p1;
1199            if ((p1 === 1) || (p1 === '1')) {
1200                if (document.getElementById('distanciaClubeMotoboy')) {
1201                    /**
1202                     * clube do motoboy, tem que calcular a distancia do clube
1203                     * até o ponto 1 
1204                     */
1205                    //                    document.getElementById('divJsonTeste').innerHTML += ' <br>calcular distancia até clube= ' + p1;
1206
1207                    var tipoVeiculo = '';
1208                    if (document.getElementById('tipoVeiculo')) {
1209                        tipoVeiculo = document.getElementById('tipoVeiculo').value;
1210                    }
1211                    //                    alert('tipoVeiculo clube '+tipoVeiculo);
1212                    if (tipoVeiculo != 'DC') {
1213                        calcularDistanciaClubeMotoboyPonto1();
1214                    }
1215                }
1216            }
1217        } else {
1218            //            alert(' la e lo vazio la p2 = ' + $("#latitudeE" + p2).val() + ' lap1 ' + $("#latitudeE" + p1).val());
1219        }
1220    }
1221
1222    function fecharDivSolicServicoPainel() {
1223        if (document.getElementById('divGravarPedidoPainelNovo')) {
1224            document.getElementById('divGravarPedidoPainelNovo').innerHTML = '';
1225        }
1226    }
1227</script>
1227  <link rel="shortcut icon" href="configClientesNovos/sites/dudus/favicon.png">
1228
1229<meta name="viewport" content="width=device-width, initial-scale=1">
1230<link rel="stylesheet" href="oo/src/assets/css/updateStyle.css">
1231<script type="text/javascript" src="oo/src/assets/js/updateScript.js"></script>
1231
1232 
1233<link rel="shortcut icon" href="configClientesNovos/sites/dudus/favicon.png">
1234<link rel="stylesheet" href="./paginas/layouts/01/assets/css/toast/toastr.min.css">
1235<link rel="stylesheet" href="./paginas/layouts/01/assets/css/bootstrap.min.css?v=1697631970">
1236<link rel="stylesheet" href="./paginas/layouts/01/assets/css/style.css?v=1697631970">
1237<link rel="stylesheet" href="./paginas/layouts/01/assets/css/custom-responsive.css?v=1697631970">
1238<link rel="stylesheet" href="./paginas/layouts/01/assets/css/keyframes.css?v=1697631970">
1239<link rel="stylesheet" href="./paginas/layouts/01/assets/css/wpp-popup.css?v=1697631970">
1240<link rel="stylesheet" href="./paginas/layouts/01/assets/css/Navbar/index.css?v=1697631970">
1241<link rel="stylesheet" href="./paginas/layouts/01/assets/css/InfoAlert/index.css?v=1697631970">
1242<link rel="stylesheet" href="./paginas/layouts/01/assets/css/LoginHelperPopup/index.css?v=1697631970">
1243<link rel="stylesheet" href="./paginas/layouts/01/assets/css/SocialMedia/index.css?v=1697631970">
1244
1245<style>
1246  :root {
1247    --color-primary: #000000;
1248    --color-secondary: #000000;
1249    --color-tertiary: #d5fbf5;
1250    --text-color-primary: #fff700;
1251    --text-color-secondary: #ff00ae;
1252    --text-color-tertiary: #335737;
1253  }
1254</style></head>
1255
1256<body>
1257  <!-- Barra de navegação da página -->
1258  <header>
1259  <nav class="navbar navbar-default navbar-fixed-top">
1260    <div class="container">
1261      <div class="navbar-header">
1262        <a class="navbar-brand" href="https://dudus.log.br" target="_blank">
1263          <img src="padraoBanco/logoG.png" alt="Logomarca">
1264        </a>
1265        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
1266          <span class="sr-only">Toggle navigation</span>
1267          <span class="icon-bar first"></span>
1268          <span class="icon-bar"></span>
1269          <span class="icon-bar last"></span>
1270        </button>
1271      </div>
1272      <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
1273        <div class="navbar-right">
1274          <ul class="nav navbar-nav">
1275
1276                          <li>
1277                <a href="//dudus.log.br" >
1278                  HOME                </a>
1279              </li>
1280            
1281            <!-- <li>
1282              <a href="//dudus.log.br">
1283                Home
1284              </a>
1285            </li> -->
1286                          <li class="dropdown-content">
1287                <div class="dropdown">
1288                  <a href="javascript:void(0)" data-bs-toggle="dropdown">
1289                    <span>SOBRE</span> <i class="fa fa-chevron-down" aria-hidden="true"></i>
1290                  </a>
1291                  <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
1292                                          <li>
1293                        <a href="./#sect2" class="dropdown-link">
1294                          VANTAGENS                        </a>
1295                      </li>
1296                    
1297                                          <li>
1298                        <a href="./#sect3" class="dropdown-link">
1299                          COMO FUNCIONA                        </a>
1300                      </li>
1301                    
1302                                          <li>
1303                        <a href="./#sect4" class="dropdown-link">
1304                          SOBRE                        </a>
1305                      </li>
1306                                      </ul>
1307                </div>
1308              </li>
1309            
1310                          <li class="dropdown-substitute">
1311                <a href="./#sect2" class="dropdown-link">
1312                  VANTAGENS                </a>
1313              </li>
1314            
1315                          <li class="dropdown-substitute">
1316                <a href="./#sect3" class="dropdown-link">
1317                  COMO FUNCIONA                </a>
1318              </li>
1319            
1320                          <li class="dropdown-substitute">
1321                <a href="./#sect4" class="dropdown-link">
1322                  SOBRE                </a>
1323              </li>
1324            
1325                          <li>
1326                <a href="./#sect5" class="navbarLink">
1327                  FALE CONOSCO                </a>
1328              </li>
1329            
1330                          <li>
1331                <a href="./trabalhe-conosco" class="navbarLink">
1332                  TRABALHE CONOSCO                </a>
1333              </li>
1334            
1335            
1336                          <li>
1337                <a href="//dudus.log.br/integracaoWebService/doc" target="_blank">
1338                  INTEGRAÇÃO                </a>
1339              </li>
1340            
1341                      </ul>
1342
1343          <div>
1344                                    <a href="//dudus.log.br/logar" class="btn">
1345              <span>LOGIN/CADASTRAR</span>
1346              <i class="fa fa-sign-in" aria-hidden="true"></i>
1347            </a>
1348          </div>
1349        </div>
1350      </div>
1351    </div>
1352  </nav>
1353</header>
1354
1355  <!-- Sessão contendo o banner primário da página -->
1356  <section>
1357  <div class="container">
1358    <div class="row imgHolderRev">
1359      <div class="col-lg-5">
1360        <h1>
1361          Comece a trabalhar com a Dudus        </h1>
1362        <p>
1363          <span>
1364            Receba todos os serviços através do aplicativo e acompanhe os seus recebimentos.          </span>
1365        </p>
1366                  <p>
1367            <span class="textoEspecial">
1368              Realize o cadastro através do aplicativo:            </span>
1369          </p>
1370          <div class="row">
1371                          <div class="col-md-6 iconFlex">
1372                <a href="dudus.log.br/trabalhe-conosco" target="_blank">
1373                  <img class="iconeAppStoreTC" src="./paginas/layouts/01/assets/img/GPlay.png" alt="Google Play">
1374                </a>
1375              </div>
1376                                  </div>
1377              </div>
1378      <div class="col-lg-7">
1379        <img class="imgApp" src="https://storage.googleapis.com/clientesmapptools/8b8cc050e51a42026d4045de7986794e.png">
1380      </div>
1381    </div>
1382  </div>
1383</section>
1384  <!-- Sessão contendo o banner secundário da página -->
1385  <section>
1386  <div class="container banner-secundario">
1387    <div class="row blocoCinza">
1388      <div class="col-md-6 col-lg-6 text-center">
1389        <img class="imgApp" src="https://storage.googleapis.com/clientesmapptools/16fb3bd74e8cdb9cfca2182a93a647a3.png">
1390      </div>
1391      <div class="col-md-6 col-lg-6">
1392        <div class="row">
1393          <div class="col-md-12">
1394            <h2>
1395              Siga os passos para começar a trabalhar conosco            </h2>
1396          </div>
1397        </div>
1398        <div class="row">
1399          <div class="col-md-12">
1400            <h3>
1401              Realize o cadastro            </h3>
1402            <p>
1403              <span>
1404                O cadastro deve ser feito através do aplicativo para você começar a trabalhar!              </span>
1405            </p>
1406            <div class="row">
1407              <div class="col-md-12">
1408                                  <a href="dudus.log.br/trabalhe-conosco" target="_blank">
1409                    <img src="./paginas/layouts/01/assets/img/GPlay.png" width="150px">
1410                  </a>
1411                                              </div>
1412            </div>
1413          </div>
1414        </div>
1415        <div class="row">
1416          <div class="col-md-12">
1417            <h3>
1418              Ativação do seu aplicativo            </h3>
1419            <p>
1420              <span>
1421                Após o cadastro você receberá um código, entre em contato com a nossa equipe pelo whatsapp <?= (21-96465-8681> informando o seu código.              </span>
1422            </p>
1423          </div>
1424        </div>
1425        <div class="row">
1426          <div class="col-md-12">
1427            <h3>
1428              Realize os serviços            </h3>
1429            <p>
1430              <span>
1431                Após ativado, todos os serviços solicitados irão tocar no seu aplicativo para você realizar.              </span>
1432            </p>
1433          </div>
1434        </div>
1435      </div>
1436    </div>
1437  </div>
1438</section>
1439  <!-- Sessão contendo o banner terciário da página -->
1440  <section>
1441  <div class="container">
1442    <div class="row blocoAzul">
1443      <div class="col-lg-12 text-center">
1444        <h2>
1445          Controle total da sua performance        </h2>
1446      </div>
1447      <div class="row">
1448        <div class="col-md-6">
1449          <div class="blocoVantagem">
1450            <div class="row imgHolder">
1451              <div class="col-md-4">
1452                <div class="bgVantagens">
1453                  <svg class="iconeVantagens" viewBox="0 0 916 877" xmlns="http://www.w3.org/2000/svg">
1454                    <path fill-rule="evenodd" clip-rule="evenodd" d="M29.3231 672.934V394.189C29.3231 352.436 53.9546 327.737 95.5934 327.737H432.809C473.862 327.737 498.493 352.436 498.493 394.189V672.934C498.493 714.687 473.862 739.386 432.809 739.386C404.073 739.386 177.698 737.622 170.074 740.562C159.518 744.679 117.293 795.841 102.631 805.25C102.631 789.96 103.804 768.789 102.631 754.088C100.285 726.448 68.0297 752.912 40.4659 713.511C32.8419 703.514 29.3231 691.164 29.3231 672.934ZM410.524 114.855C410.524 73.1025 435.155 48.4035 476.208 48.4035H813.424C855.062 48.4035 879.694 73.1025 879.694 114.855V394.189C879.694 411.831 876.175 424.18 868.551 434.178C840.987 473.578 808.732 447.115 806.386 474.754C805.213 489.456 806.386 510.627 806.386 525.916C786.446 512.979 747.74 460.053 733.078 460.053H527.816C527.816 425.945 531.922 375.959 520.779 349.495C513.741 334.794 504.358 325.385 492.629 315.387C467.411 294.805 441.02 298.333 410.524 298.333V114.855ZM381.201 100.154V298.333H80.9318C41.0524 298.333 0 339.498 0 379.487V687.636C0 719.98 26.3908 753.5 58.0598 764.085C63.338 765.849 69.2026 767.025 73.3
1454078 768.789C73.3078 785.843 73.3078 802.898 73.3078 819.952C73.3078 838.182 69.789 857 87.9694 857C98.5257 857 117.879 833.477 129.022 822.304C141.924 809.366 154.24 797.017 167.142 784.079C180.044 771.142 178.285 768.789 190.6 768.789C232.826 767.613 438.674 771.142 456.854 767.613C485.591 761.733 510.222 741.738 520.779 715.863C524.884 707.042 527.816 696.457 527.816 684.107V489.456H723.695C736.011 489.456 803.454 577.667 821.048 577.667C839.228 577.667 835.709 558.848 835.709 540.618C835.709 523.564 835.709 506.51 835.709 489.456C839.814 487.692 844.506 487.104 849.784 485.34C882.04 474.754 909.017 441.234 909.017 408.891V103.682C909.017 87.2161 903.152 69.574 894.355 57.8126C885.558 45.4632 875.589 35.466 861.513 28.4091C853.889 24.2926 839.814 19 828.085 19H461.546C422.253 19 381.201 60.1649 381.201 100.154Z" />
1455                    <path fill-rule="evenodd" clip-rule="evenodd" d="M117.292 474.755H146.616V680.58H117.292V474.755ZM366.539 518.86C366.539 544.736 408.764 528.858 428.118 534.15C443.366 538.855 443.366 557.673 428.118 562.378C408.764 567.67 366.539 551.792 366.539 577.667C366.539 603.543 408.764 587.665 428.118 592.957C443.366 597.662 443.366 616.48 428.118 621.185C408.764 626.477 366.539 610.599 366.539 636.474C366.539 663.526 410.524 639.415 410.524 665.878C410.524 672.935 402.313 680.58 394.103 680.58H243.968C233.412 680.58 220.51 651.176 205.262 651.176H175.939V504.159C218.164 504.159 208.194 507.687 233.412 482.4C245.728 470.051 247.487 471.227 252.765 452.408L269.186 395.366C277.983 383.016 297.923 384.192 304.96 398.894C316.69 423.005 290.885 474.167 326.073 474.755C347.186 475.343 368.885 474.755 390.584 474.755C409.937 474.755 439.847 470.051 439.847 489.457C439.847 508.275 410.524 504.159 403.486 504.159C385.306 504.159 366.539 500.63 366.539 518.86ZM195.878 474.755H175.939C175.939 438.883 177.698 445.352 102.631 445.352C93.8339 445.352 87.9693 451.232 87.9693 460.053V695.281C87.9693 704.103 93.8339 709.983 102.631 709.983H161.277C178.871 709.983 175.939 692.929 175.939 680.58H195.878C206.435 680.58 219.337 709.983 234.585 709.983H399.381C422.253 709.983 439.847 690.577 439.847 662.35C439.847 655.881 438.674 655.293 438.088 649.412C458.614 644.707 469.17 626.477 469.17 603.543C469.17 590.017 459.787 582.372 459.787 577.667C459.787 570.611 469.17 571.787 469.17 544.736C469.17 531.21 459.787 523.565 459.787 518.86C459.787 511.804 469.17 512.98 469.17 485.928C469.17 465.346 449.23 445.352 428.704 445.352H337.216V406.539C337.216 353.025 261.562 337.147 238.104 388.309L227.547 429.474C220.51 454.173 225.202 448.292 210.54 462.994C207.021 466.522 201.157 474.755 195.878 474.755Z" />
1456                    <path fill-rule="evenodd" clip-rule="evenodd" d="M608.162 327.737C597.019 321.856 550.688 283.043 536.613 271.282C531.335 267.165 529.576 266.577 527.816 259.521C537.786 248.935 543.064 258.932 566.523 277.751C572.974 283.043 578.252 287.16 584.703 292.452C618.718 319.504 612.267 302.45 656.252 267.165L724.281 204.83C728.386 201.302 731.319 197.773 735.424 194.245C740.116 189.54 742.462 188.364 747.153 184.248C751.258 180.131 754.191 176.603 758.296 173.074C762.988 168.37 765.334 167.194 770.025 163.077C773.544 159.549 777.649 153.668 781.754 152.492C788.206 150.728 792.311 154.844 790.551 161.313C789.965 164.253 751.845 197.773 746.567 203.066L711.379 234.234C707.274 238.35 704.928 241.29 700.823 245.407L621.064 318.328C615.199 323.62 615.786 324.208 608.162 327.737ZM606.402 270.694C601.124 267.165 596.432 263.049 591.154 258.932C563.59 236.586 557.139 224.824 529.576 224.824C516.087 224.824 498.493 242.467 498.493 255.992C498.493 274.222 498.493 280.691 517.846 295.393C532.508 306.566 588.808 357.14 602.883 357.14C622.823 357.14 623.41 356.552 637.485 343.615L723.695 264.813C744.807 244.231 782.341 213.063 802.281 193.069C814.596 181.307 821.047 176.603 821.047 156.608C821.047 133.085 802.867 121.912 778.822 121.912C764.747 121.912 744.221 146.023 733.665 155.432C728.973 159.549 727.213 160.137 722.522 164.841C719.003 168.37 716.071 171.31 712.552 174.838L617.545 261.285C612.853 264.813 611.094 267.754 606.402 270.694Z" />
1457                  </svg>
1458
1459                </div>
1460              </div>
1461              <div class="col-md-8">
1462                <h3>
1463                  Serviços                </h3>
1464                <p>
1465                  Todos serviços caem direto no seu aplicativo e você pode recusar ou aceitar o serviço;                </p>
1466              </div>
1467            </div>
1468          </div>
1469        </div>
1470        <div class="col-md-6">
1471          <div class="blocoVantagem">
1472            <div class="row imgHolder">
1473              <div class="col-md-4">
1474                <div class="bgVantagens">
1475                  <svg class="iconeVantagens" viewBox="0 0 916 877" xmlns="http://www.w3.org/2000/svg">
1476                    <path fill-rule="evenodd" clip-rule="evenodd" d="M670.207 587.348C622.88 587.348 597.69 587.348 553.417 565.332C525.937 551.667 501.51 534.206 482.427 510.672C477.083 504.599 475.557 503.84 470.213 496.248C432.81 440.07 428.993 411.221 428.993 347.452C428.993 305.697 455.71 254.833 474.03 230.54C498.457 200.173 527.463 177.398 566.393 160.697C740.433 88.5758 931.267 256.352 858.75 449.18C831.27 521.301 747.303 587.348 670.207 587.348ZM916 351.247V374.022C914.473 409.703 906.077 445.384 890.81 481.065C872.49 522.819 838.903 556.222 802.263 582.793C767.913 608.605 706.847 629.861 658.757 629.861C567.157 629.861 537.387 599.495 515.25 594.181C509.143 607.086 505.327 619.233 498.457 632.139C481.663 664.024 453.42 696.668 425.177 717.925C347.317 775.621 252.663 789.286 158.773 749.81C113.737 730.83 95.4167 711.092 64.8833 681.485L37.4033 644.285C4.58 589.626 0 556.222 0 491.693C0 408.944 61.83 316.326 132.057 279.127C152.667 268.498 167.933 260.907 192.36 254.074C203.047 251.037 216.023 248.001 227.473 246.482C233.58 244.964 263.35 243.446 266.403 243.446C328.233 250.278 344.263 251.037 400.75 280.645C405.33 260.907 425.177 226.744 436.627 212.32C452.657 190.304 465.633 175.121 487.77 158.419C538.913 118.183 589.293 103 663.337 103C735.09 103 802.263 143.236 838.903 179.676C887.757 228.262 912.947 288.237 916 351.247ZM386.247 354.284C386.247 403.63 393.117 449.939 416.017 488.656C429.757 511.431 433.573 520.541 451.13 538.761C461.053 548.631 459.527 552.426 479.373 565.332C458.763 654.914 366.4 729.312 274.037 729.312C232.817 729.312 201.52 725.516 165.643 707.296C106.103 677.689 58.0133 618.474 45.8 553.186C36.64 502.321 41.9833 458.29 61.83 413.499C72.5167 389.965 90.0733 367.949 107.63 350.488C182.437 276.09 299.227 263.943 388.537 323.917C388.537 336.823 386.247 339.86 386.247 354.284Z" />
1477                    <path fill-rule="evenodd" clip-rule="evenodd" d="M243.503 368.708C228.237 372.504 212.97 383.132 203.047 393.001C170.223 428.682 177.093 497.007 232.053 522.059C254.953 532.688 281.67 522.059 296.937 544.834C335.103 600.254 233.58 641.249 224.42 569.887C219.84 534.206 183.963 549.389 183.963 563.054V575.201C183.963 607.086 215.26 644.285 243.503 646.563C243.503 657.191 242.74 670.856 245.03 677.689C251.9 695.909 276.327 695.149 283.96 677.689C287.777 669.338 286.25 657.95 286.25 646.563C312.967 644.285 345.79 607.086 345.79 577.479C345.79 552.426 345.79 541.798 330.523 519.782C304.57 482.583 260.297 489.415 247.32 483.342C225.947 473.473 214.497 440.829 235.107 420.331C261.06 395.279 291.593 409.703 300.753 430.2C303.807 437.792 303.807 468.159 324.417 468.159C367.163 468.159 343.5 381.614 286.25 368.708C286.25 345.174 290.067 326.194 260.297 326.194C239.687 326.194 243.503 360.357 243.503 368.708Z" />
1478                    <path fill-rule="evenodd" clip-rule="evenodd" d="M629.75 225.986C590.82 244.965 570.21 257.871 570.21 314.049C570.21 348.211 602.27 380.855 642.727 386.929C654.94 388.447 657.23 386.17 667.153 390.725C706.083 407.426 698.45 465.882 648.833 465.882C596.927 465.882 627.46 406.667 589.293 406.667C548.073 406.667 577.843 499.285 629.75 503.84C629.75 527.375 628.223 548.631 651.123 548.631C674.787 548.631 672.497 527.375 672.497 503.84C701.503 501.563 732.037 465.123 732.037 432.479C732.037 339.861 651.887 348.971 635.093 342.138C627.46 338.342 624.407 335.306 619.063 329.232C581.66 282.164 667.153 236.614 688.527 291.274C693.107 303.421 688.527 326.196 712.953 326.196C743.487 326.196 735.09 279.886 712.19 251.038C700.74 235.855 685.473 232.059 672.497 225.986C672.497 203.97 674.023 183.472 651.123 183.472C628.987 183.472 629.75 203.97 629.75 225.986Z" />
1479                  </svg>
1480
1481                </div>
1482              </div>
1483              <div class="col-md-8">
1484                <h3>
1485                  Recebimentos                </h3>
1486                <p>
1487                  Você pode acompanhar o seu valor em saldo dos serviços e os recebimentos que você já teve e terá futuramente;                </p>
1488              </div>
1489            </div>
1490          </div>
1491        </div>
1492        <div class="col-md-6">
1493          <div class="blocoVantagem">
1494            <div class="row imgHolder">
1495              <div class="col-md-4">
1496                <div class="bgVantagens">
1497                  <svg class="iconeVantagens" viewBox="0 0 916 877" xmlns="http://www.w3.org/2000/svg">
1498                    <path fill-rule="evenodd" clip-rule="evenodd" d="M170.285 36.285H339.387V205.387H170.285V36.285ZM134 27.3849V211.548C134 233.456 141.531 241.672 164.123 241.672H347.602C363.348 241.672 375.672 237.564 375.672 222.502V17.1155C375.672 6.84622 368.825 0 358.556 0H153.169C138.108 0 134 12.3232 134 27.3849Z" />
1499                    <path fill-rule="evenodd" clip-rule="evenodd" d="M134 664.767V848.93C134 864.677 138.108 877 153.169 877H358.556C368.825 877 375.672 870.154 375.672 859.884V791.422C375.672 770.883 339.387 760.614 339.387 801.691V840.715H170.285V671.613H339.387C339.387 701.737 333.225 740.076 358.556 740.076C368.825 740.076 375.672 733.229 375.672 722.96C375.672 655.182 384.572 635.328 347.602 635.328H164.123C140.846 635.328 134 642.175 134 664.767Z" />
1500                    <path fill-rule="evenodd" clip-rule="evenodd" d="M172.339 352.58H343.495V523.735H172.339V352.58ZM138.108 331.357V544.959C138.108 550.436 145.639 557.966 151.116 557.966H360.61C370.88 557.966 377.726 551.12 377.726 540.851V335.464C377.726 325.195 370.88 318.349 360.61 318.349H151.116C145.639 318.349 138.108 325.88 138.108 331.357Z" />
1501                    <path fill-rule="evenodd" clip-rule="evenodd" d="M465.358 823.601C503.013 823.601 756.323 827.709 772.069 819.493C789.869 811.278 778.915 787.316 767.277 787.316H454.404C433.181 787.316 423.596 823.601 465.358 823.601Z" />
1502                    <path fill-rule="evenodd" clip-rule="evenodd" d="M457.141 504.566H758.375C790.552 504.566 786.444 468.281 762.482 468.281H454.402C429.756 468.281 431.125 504.566 457.141 504.566Z" />
1503                    <path fill-rule="evenodd" clip-rule="evenodd" d="M457.143 727.068H758.377C765.223 727.068 771.384 725.699 775.492 722.276C788.5 711.322 780.285 690.783 762.484 690.783H454.405C431.127 690.783 430.443 727.068 457.143 727.068Z" />
1504                    <path fill-rule="evenodd" clip-rule="evenodd" d="M454.405 185.533H762.484C786.446 185.533 791.238 149.248 758.377 149.248H457.143C430.443 149.248 431.127 185.533 454.405 185.533Z" />
1505                    <path fill-rule="evenodd" clip-rule="evenodd" d="M454.405 408.035H762.484C786.446 408.035 791.238 371.75 758.377 371.75H457.143C430.443 371.75 431.127 408.035 454.405 408.035Z" />
1506                    <path fill-rule="evenodd" clip-rule="evenodd" d="M454.404 89.6845H767.277C778.231 89.6845 789.869 67.092 773.438 57.5073C769.331 54.7688 759.061 53.3995 752.215 53.3995H465.358C423.596 53.3995 433.181 89.6845 454.404 89.6845Z" />
1507                    <path fill-rule="evenodd" clip-rule="evenodd" d="M238.745 462.119C229.845 455.958 214.099 438.157 202.46 438.157C192.191 438.157 185.345 445.004 185.345 455.273C185.345 468.965 200.406 475.812 209.306 482.658C226.422 497.035 240.114 514.15 255.176 497.72L266.815 483.343C277.084 470.335 332.538 401.188 332.538 395.711C332.538 379.28 323.638 376.542 311.315 376.542C302.415 376.542 264.076 428.573 256.545 438.842C250.384 447.058 244.222 453.904 238.745 462.119Z" />
1508                  </svg>
1509
1510                </div>
1511              </div>
1512              <div class="col-md-8">
1513                <h3>
1514                  Relatórios                </h3>
1515                <p>
1516                  Relatórios completos de todos os seus ganhos através do aplicativo, km rodado entre os serviços, etc;                </p>
1517              </div>
1518            </div>
1519          </div>
1520        </div>
1521        <div class="col-md-6">
1522          <div class="blocoVantagem">
1523            <div class="row imgHolder">
1524              <div class="col-md-4">
1525                <div class="bgVantagens">
1526                  <svg xmlns="http://www.w3.org/2000/svg" class="iconeVantagens" version="1.1" viewBox="0 0 24 24">
1527                    <path d="M23.5 17L18.5 22L15 18.5L16.5 17L18.5 19L22 15.5L23.5 17M13.1 19.9C12.7 20 12.4 20 12 20C7.6 20 4 16.4 4 12S7.6 4 12 4 20 7.6 20 12C20 12.4 20 12.7 19.9 13.1C20.6 13.2 21.2 13.4 21.8 13.7C21.9 13.1 22 12.6 22 12C22 6.5 17.5 2 12 2S2 6.5 2 12C2 17.5 6.5 22 12 22C12.6 22 13.2 21.9 13.7 21.8C13.4 21.3 13.2 20.6 13.1 19.9M15.6 14.1L12.5 12.3V7H11V13L14.5 15.1C14.8 14.7 15.2 14.4 15.6 14.1Z" />
1528                  </svg>
1529                </div>
1530              </div>
1531              <div class="col-md-8">
1532                <h3>
1533                  Horários flexíveis                </h3>
1534                <p>
1535                  Torne-se um Motoboy ou Motorista parceiro participando do processo de ativação de onde você estiver e aceite apenas os pedidos que quiser, sem penalida
1535des. Faça seu horário!                </p>
1536              </div>
1537            </div>
1538          </div>
1539        </div>
1540      </div>
1541    </div>
1542  </div>
1543</section>
1544  <!-- Rodapé da página -->
1545  <style>
1546  .contato-endereco {
1547    margin-bottom: 3px;
1548  }
1549</style>
1550<footer>
1551  <div class="container">
1552    <div class="row footer-flex">
1553      <div class="col-sm-4">
1554                  <div class="dev-by">
1555            <small>Desenvolvido por:</small>
1556            <a href="https://mappsistemas.com.br" target="_blank">
1557              <img src="./paginas/layouts/01/assets/img/mapp-sistemas-white.png" alt="Mapp Sistemas">
1558            </a>
1559          </div>
1560              </div>
1561      
1562      
1563      <div class="col-sm-8">
1564                  <div class="social-medias-footer">
1565                                                                                  </div>
1566              </div>
1567    </div>
1568    <div class="row" style="margin-top: 1rem;">
1569      <div class="col-md-12" style="text-align: center;">
1570        Copyright © 2026 - dudus.log.br. Todos os direitos reservados.
1571      </div>
1572    </div>
1573  </div>
1574</footer>
1575  
1576    <div class="social-media-popups --align-right">
1577    <div class="social-medias">
1578                                        </div>
1579  </div>
1580
1581  <div class="custom-alerts">
1582      </div>
1583  
1583<script type="text/javascript" src="assets/js/bootstrap.min.js"></script>
vendor: 1 bytes, line 1583
1583
1584<script type="text/javascript" src="assets/js/slick.min.js"></script>
vendor: 1 bytes, line 1584
1584
1585<script type="text/javascript" src="assets/js/placeholdem.min.js"></script>
vendor: 1 bytes, line 1585
1585
1586<script type="text/javascript" src="assets/js/waypoints.min.js"></script>
vendor: 1 bytes, line 1586
1586
1587<script type="text/javascript" src="assets/js/scripts.js?v=4"></script>
vendor: 1 bytes, line 1587
1587
1588<script type="text/javascript" src="js/scriptEE.js?v=3"></script>
vendor: 1 bytes, line 1588
1588
1589<script type="text/javascript" src="js/ajax.js"></script>
vendor: 1 bytes, line 1589
1589
1590<script type="text/javascript" src="js/jquery.mask.min.js"></script>
vendor: 1 bytes, line 1590
1590
1591<script type="text/javascript" src="js/mascara.js?v=1789651957"></script>
vendor: 1 bytes, line 1591
1591
1592<script type="text/javascript">
1593
1594    function removerRoute(index = '') {
1595        console.log('removerRoute-------');
1596
1597
1598        if (index && arrayOverviewPolyline) {
1599            arrayOverviewPolyline = [];
1600            if (document.getElementById('rotaPoline')) {
1601                document.getElementById('rotaPoline').value = '';
1602            }
1603        }
1604
1605
1606
1607        if (index && arrayDirectionsDisplay) {
1608
1609            var aux = arrayDirectionsDisplay;
1610            arrayDirectionsDisplay = [];
1611            aux.map(function (e) {
1612                e.setMap(null);
1613            });
1614        }
1615
1616    }
1617
1618
1619    function mergeArrayOverviewPolyline() {
1620
1621        var aux = [];
1622        arrayOverviewPolyline.map(function (e) {
1623            if (e) {
1624                e.map(function (element) {
1625                    aux.push(element);
1626                });
1627            }
1628        });
1629
1630
1631        if (document.getElementById('rotaPoline')) {
1632            console.log(aux);
1633            document.getElementById('rotaPoline').value = JSON.stringify(aux);
1634        }
1635
1636    }
1637
1638    function geraPolyline(arrayOverviewPolyline, mapa) {
1639
1640        var polyline = new google.maps.Polyline({
1641            path: arrayOverviewPolyline,
1642            geodesic: true,
1643            strokeColor: '#2E64FE',
1644            strokeOpacity: 0.7,
1645            strokeWeight: 7
1646        });
1647
1648        polyline.setMap(mapa);
1649    }
1650
1651
1652    function calculateAndDisplayRoute(arrayLaLo, mapa) {
1653
1654
1655        var retornaRotaMaisCurta = 'N'; // se N retorna rota mais rápida (duraçao menor)
1656        var arrayPoligno = [];
1657
1658        if (directionsDisplay) {
1659            directionsDisplay.setMap(null);
1660        }
1661
1662        var tipoVeiculo = ''
1663        var travelMode = 'DRIVING';
1664        if (document.getElementById('tipoVeiculo')) {
1665            tipoVeiculo = document.getElementById('tipoVeiculo').value;
1666        }
1667
1668        if (tipoVeiculo == 'B') {
1669            travelMode = 'BICYCLING';
1670        }
1671
1672        if ((tipoVeiculo == 'A') || (tipoVeiculo == 'M') || (tipoVeiculo == 'D') || (tipoVeiculo == 'B') || (tipoVeiculo == 'AC')
1673                || (tipoVeiculo == 'MC') || (tipoVeiculo == 'DC') || (tipoVeiculo == 'BC') || (tipoVeiculo == 'X')) {
1674
1675            retornaRotaMaisCurta = 'S'; // menor distancia
1676        }
1677
1678
1679        console.log(' Tipo Veiclo ', tipoVeiculo);
1680        console.log(' travelMode ', travelMode);
1681        console.log(' retornaRotaMaisCurta ', retornaRotaMaisCurta);
1682
1683        var waypts = [];
1684//        var directionsService = new google.maps.DirectionsService;
1685//        var directionsDisplay = new google.maps.DirectionsRenderer;
1686        var objDirectionsService = new google.maps.DirectionsService;
1687        //suppressMarkers => e a opção suppressMarkers para true ao criar seu objeto DirectionsRenderer e, em seguida, os marcadores não serão exibidos.
1688        directionsDisplay = new google.maps.DirectionsRenderer({suppressMarkers: true});
1689
1690        directionsDisplay.setMap(mapa);
1691
1692        if (arrayLaLo.length > 2) {
1693
1694            for (var i = 0; i < arrayLaLo.length; i++) {
1695
1696                if (i != 0 && i < (arrayLaLo.length - 1)) {
1697                    console.log('dentro');
1698                    waypts.push({
1699                        location: new google.maps.LatLng(arrayLaLo[i].la, arrayLaLo[i].lo),
1700                        stopover: true
1701                    });
1702                }
1703            }
1704
1705
1706        }
1707
1708        var start = new google.maps.LatLng(arrayLaLo[0].la, arrayLaLo[0].lo);
1709        var end = new google.maps.LatLng(arrayLaLo[(arrayLaLo.length - 1)].la, arrayLaLo[(arrayLaLo.length - 1)].lo);
1710
1711        objDirectionsService.route({
1712            origin: start,
1713            destination: end,
1714            waypoints: waypts,
1715            provideRouteAlternatives: true,
1716            travelMode: travelMode
1717        }, function (response, status) {
1718            if (status === 'OK') {
1719                directionsDisplay.setDirections(response);
1720                console.log('Routes array ::::', response.routes);
1721
1722                var menorDuracao = 0;
1723                var menorDistancia = 0;
1724                var index = 0;
1725                var route = null;
1726
1727                for (var j = 0; j < response.routes.length; j++) {
1728
1729                    var legs = response.routes[j].legs[0];
1730
1731                    if (retornaRotaMaisCurta == 'S') {
1732                        if (menorDistancia == 0) {
1733                            menorDistancia = legs.distance.value;
1734                            route = response.routes[j];
1735                            index = j;
1736                        } else if (legs.distance.value < menorDistancia) {
1737                            menorDistancia = legs.distance.value;
1738                            route = response.routes[j];
1739                            index = j;
1740                        }
1741                        console.log('menorDistancia = ' + menorDistancia + '  legs.distance.value ==' + legs.distance.value)
1742                    } else {
1743                        // menor duraçao
1744                        if (menorDuracao == 0) {
1745                            menorDuracao = legs.duration.value;
1746                            route = response.routes[j];
1747                            index = j;
1748                        } else if (legs.duration.value < menorDuracao) {
1749                            menorDuracao = legs.duration.value;
1750                            route = response.routes[j];
1751                            index = j;
1752                        }
1753                    }
1754
1755                }
1756
1757
1758                if (!route) {
1759                    route = response.routes[0];
1760                }
1761
1762                console.log(' Route Retorno ->>', route);
1763                console.log(' Route index ->>', index);
1764
1765                directionsDisplay.setRouteIndex(index);
1766
1767                var path = route.overview_path;
1768
1769
1770                var decodedPoints = route.overview_polyline;
1771                //var path = google.maps.geometry.encoding.decodePath(decodedPoints);
1772//                console.log(' decodedPoints  ->>', decodedPoints);
1773
1774                if (document.getElementById('rotaPoline')) {
1775                    document.getElementById('rotaPoline').value = decodedPoints;
1776                }
1777
1778
1779
1780//                console.log('Quantidade Routes', response.routes.length);
1781
1782
1783            }
1784        });
1785    }
1786
1787    function tracaRoutePontosMapa(arrayLaLo, mapa, tipoVeiculo = '') {
1788
1789        console.log('calculateAndDisplayRoute2 ==');
1790
1791        var cor = ['#00BFFF', '#FFFF00', '#32CD32 ', '#B8860B', '#B0E0E6', '#D8BFD8'];
1792
1793        var retornaRotaMaisCurta = 'N'; // se N retorna rota mais rápida (duraçao menor)
1794        var arrayPoligno = [];
1795
1796        var travelMode = 'DRIVING';
1797
1798        if (tipoVeiculo == 'B') {
1799            travelMode = 'BICYCLING';
1800        }
1801
1802        if ((tipoVeiculo == 'A') || (tipoVeiculo == 'M') || (tipoVeiculo == 'D') || (tipoVeiculo == 'B') || (tipoVeiculo == 'AC')
1803                || (tipoVeiculo == 'MC') || (tipoVeiculo == 'DC') || (tipoVeiculo == 'BC') || (tipoVeiculo == 'X')) {
1804
1805            retornaRotaMaisCurta = 'S'; // menor distancia
1806        }
1807
1808
1809        console.log(' Tipo Veiclo ', tipoVeiculo);
1810        console.log(' travelMode ', travelMode);
1811        console.log(' retornaRotaMaisCurta ', retornaRotaMaisCurta);
1812
1813
1814
1815        var indexDirectionsDisplay = 2;
1816        console.log(arrayLaLo);
1817        console.log('Total ' + (arrayLaLo.length - 1));
1818        for (var i = 0; i < (arrayLaLo.length - 1); i++) {
1819
1820            var start = new google.maps.LatLng(arrayLaLo[i].la, arrayLaLo[i].lo);
1821            var end = new google.maps.LatLng(arrayLaLo[i + 1].la, arrayLaLo[i + 1].lo);
1822//            console.log(start);
1823//            console.log(end);
1824
1825            var request = {
1826                origin: start,
1827                destination: end,
1828                provideRouteAlternatives: true,
1829                travelMode: travelMode
1830            };
1831
1832            get_directions_route(request);
1833
1834        }
1835  
1836
1837        function get_directions_route(request) {
1838
1839            var objDirectionsService = new google.maps.DirectionsService;
1840            objDirectionsService.route(request, function (response, status) {
1841
1842                if (status === 'OK') {
1843
1844                    var directionsDisplay = new google.maps.DirectionsRenderer({
1845                        map: mapa,
1846                        suppressMarkers: true,
1847                        preserveViewport: true,
1848                        polylineOptions: {
1849                            strokeColor: '#2E64FE',
1850                            strokeWeight: 7,
1851                            strokeOpacity: 0.7,
1852                        }
1853                    });
1854                    directionsDisplay.setDirections(response);
1855                    console.log('Routes array ::::', response.routes);
1856
1857
1858
1859                    var menorDuracao = 0;
1860                    var menorDistancia = 0;
1861                    var index = 0;
1862                    var route = null;
1863
1864                    for (var j = 0; j < response.routes.length; j++) {
1865
1866                        var legs = response.routes[j].legs[0];
1867
1868                        if (retornaRotaMaisCurta == 'S') {
1869                            if (menorDistancia == 0) {
1870                                menorDistancia = legs.distance.value;
1871                                route = response.routes[j];
1872                                index = j;
1873                            } else if (legs.distance.value < menorDistancia) {
1874                                menorDistancia = legs.distance.value;
1875                                route = response.routes[j];
1876                                index = j;
1877                            }
1878                            console.log('menorDistancia = ' + menorDistancia + '  legs.distance.value ==' + legs.distance.value)
1879                        } else {
1880                            // menor duraçao
1881                            if (menorDuracao == 0) {
1882                                menorDuracao = legs.duration.value;
1883                                route = response.routes[j];
1884                                index = j;
1885                            } else if (legs.duration.value < menorDuracao) {
1886                                menorDuracao = legs.duration.value;
1887                                route = response.routes[j];
1888                                index = j;
1889                            }
1890                        }
1891
1892                    }
1893
1894
1895                    if (!route) {
1896                        route = response.routes[0];
1897                    }
1898
1899                    console.log(' Route Retorno ->>', route);
1900                    console.log(' Route index ->>', index);
1901
1902                    directionsDisplay.setRouteIndex(index);
1903
1904                    arrayDirectionsDisplay[indexDirectionsDisplay] = directionsDisplay;
1905                    indexDirectionsDisplay++;
1906
1907                } else if (status === google.maps.DirectionsStatus.OVER_QUERY_LIMIT) {
1908                    //console.log("google.maps.DirectionsStatus.OVER_QUERY_LIMIT");
1909
1910                    
1911                    setTimeout(function () {
1912                        get_directions_route(request);
1913                    }, 1 * 1000);
1914                }
1915            });
1916
1917    }
1918
1919
1920
1921    }
1922
1923    function tracaRouteServico(startObj, endObj, wayptsArray, mapa, tipoVeiculo) {
1924
1925        var retornaRotaMaisCurta = 'N'; // se N retorna rota mais rápida (duraçao menor)
1926        var arrayPoligno = [];
1927
1928
1929        var travelMode = 'DRIVING';
1930
1931
1932        if (tipoVeiculo == 'B') {
1933            travelMode = 'BICYCLING';
1934        }
1935
1936        if ((tipoVeiculo == 'A') || (tipoVeiculo == 'M') || (tipoVeiculo == 'D') || (tipoVeiculo == 'B') || (tipoVeiculo == 'AC')
1937                || (tipoVeiculo == 'MC') || (tipoVeiculo == 'DC') || (tipoVeiculo == 'BC') || (tipoVeiculo == 'X')) {
1938
1939            retornaRotaMaisCurta = 'S'; // menor distancia
1940        }
1941
1942
1943        console.log(' Tipo Veiclo ', tipoVeiculo);
1944        console.log(' travelMode ', travelMode);
1945        console.log(' retornaRotaMaisCurta ', retornaRotaMaisCurta);
1946
1947        var objDirectionsService = new google.maps.DirectionsService;
1948        //suppressMarkers => e a opção suppressMarkers para true ao criar seu objeto DirectionsRenderer e, em seguida, os marcadores não serão exibid
1948os.
1949        var directionsDisplay = new google.maps.DirectionsRenderer({suppressMarkers: true, preserveViewport: true});
1950
1951        directionsDisplay.setMap(mapa);
1952
1953        var waypts = [];
1954        var start = new google.maps.LatLng(startObj.la, startObj.lo);
1955        var end = new google.maps.LatLng(endObj.la, endObj.lo);
1956
1957        for (var i = 0; i < wayptsArray.length; i++) {
1958
1959            waypts.push({
1960                location: new google.maps.LatLng(wayptsArray[i].la, wayptsArray[i].lo),
1961                stopover: true
1962            });
1963        }
1964
1965        var obtjDercServ = {
1966            origin: start,
1967            destination: end,
1968            provideRouteAlternatives: true,
1969            travelMode: travelMode
1970        };
1971
1972        if (wayptsArray.length > 2) {
1973            obtjDercServ = {
1974                origin: start,
1975                destination: end,
1976                waypoints: waypts,
1977                provideRouteAlternatives: true,
1978                travelMode: travelMode
1979            };
1980        }
1981
1982
1983        objDirectionsService.route(obtjDercServ, function (response, status) {
1984            if (status === 'OK') {
1985                directionsDisplay.setDirections(response);
1986                console.log('Routes array ====', response.routes);
1987
1988                var menorDuracao = 0;
1989                var menorDistancia = 0;
1990                var index = 0;
1991                var route = null;
1992
1993                for (var j = 0; j < response.routes.length; j++) {
1994
1995                    var legs = response.routes[j].legs[0];
1996
1997                    if (retornaRotaMaisCurta == 'S') {
1998                        if (menorDistancia == 0) {
1999                            menorDistancia = legs.distance.value;
2000                            route = response.routes[j];
2001                            index = j;
2002                        } else if (legs.distance.value < menorDistancia) {
2003                            menorDistancia = legs.distance.value;
2004                            route = response.routes[j];
2005                            index = j;
2006                        }
2007                        console.log('menorDistancia = ' + menorDistancia + '  legs.distance.value ==' + legs.distance.value)
2008                    } else {
2009                        // menor duraçao
2010                        if (menorDuracao == 0) {
2011                            menorDuracao = legs.duration.value;
2012                            route = response.routes[j];
2013                            index = j;
2014                        } else if (legs.duration.value < menorDuracao) {
2015                            menorDuracao = legs.duration.value;
2016                            route = response.routes[j];
2017                            index = j;
2018                        }
2019                    }
2020
2021                }
2022
2023
2024                if (!route) {
2025                    console.log('route false')
2026                    route = response.routes[0];
2027                }
2028
2029                console.log(' Route Retorno ->>', route);
2030                console.log(' Route index ->>', index);
2031
2032                directionsDisplay.setRouteIndex(index);
2033
2034                var path = route.overview_path;
2035
2036
2037
2038
2039                //
2040
2041                var decodedPoints = route.overview_polyline;
2042                //var path = google.maps.geometry.encoding.decodePath(decodedPoints);
2043//                console.log(' decodedPoints  ->>', decodedPoints);
2044
2045                if (document.getElementById('rotaPoline')) {
2046                    document.getElementById('rotaPoline').value = decodedPoints;
2047                }
2048
2049
2050
2051//                console.log('Quantidade Routes', response.routes.length);
2052
2053
2054            }
2055        });
2056
2057        return directionsDisplay;
2058    }
2059
2060    function tracaRouteServicoProf(startObj, endObj, wayptsArray, mapa, tipoVeiculo) {
2061
2062        var retornaRotaMaisCurta = 'N'; // se N retorna rota mais rápida (duraçao menor)
2063        var arrayPoligno = [];
2064
2065
2066
2067
2068        var travelMode = 'DRIVING';
2069
2070
2071        if (tipoVeiculo == 'B') {
2072            travelMode = 'BICYCLING';
2073        }
2074
2075        if ((tipoVeiculo == 'A') || (tipoVeiculo == 'M') || (tipoVeiculo == 'D') || (tipoVeiculo == 'B') || (tipoVeiculo == 'AC')
2076                || (tipoVeiculo == 'MC') || (tipoVeiculo == 'DC') || (tipoVeiculo == 'BC') || (tipoVeiculo == 'X')) {
2077
2078            retornaRotaMaisCurta = 'S'; // menor distancia
2079        }
2080
2081//        console.log(' Tipo Veiclo ', tipoVeiculo);
2082//        console.log(' travelMode ', travelMode);
2083//        console.log(' retornaRotaMaisCurta ', retornaRotaMaisCurta);
2084
2085
2086        var objDirectionsService = new google.maps.DirectionsService;
2087        //suppressMarkers => e a opção suppressMarkers para true ao criar seu objeto DirectionsRenderer e, em seguida, os marcadores não serão exibid
2087os.
2088        var directionsDisplay = new google.maps.DirectionsRenderer({
2089            map: mapa,
2090            suppressMarkers: true,
2091            preserveViewport: true,
2092            polylineOptions: {
2093                strokeColor: "#000000",
2094                strokeWeight: 7
2095            }
2096        });
2097
2098        var waypts = [];
2099        var start = new google.maps.LatLng(startObj.la, startObj.lo);
2100        var end = new google.maps.LatLng(endObj.la, endObj.lo);
2101
2102        for (var i = 0; i < wayptsArray.length; i++) {
2103
2104            waypts.push({
2105                location: new google.maps.LatLng(wayptsArray[i].la, wayptsArray[i].lo),
2106                stopover: true
2107            });
2108        }
2109
2110        objDirectionsService.route({
2111            origin: start,
2112            destination: end,
2113            provideRouteAlternatives: true,
2114            travelMode: travelMode
2115        }, function (response, status) {
2116            if (status === 'OK') {
2117
2118                directionsDisplay.setDirections(response);
2119//                console.log('Routes array ::::', response.routes);
2120
2121                var menorDuracao = 0;
2122                var menorDistancia = 0;
2123                var index = 0;
2124                var route = null;
2125
2126                for (var j = 0; j < response.routes.length; j++) {
2127
2128                    var legs = response.routes[j].legs[0];
2129
2130                    if (retornaRotaMaisCurta == 'S') {
2131                        if (menorDistancia == 0) {
2132                            menorDistancia = legs.distance.value;
2133                            route = response.routes[j];
2134                            index = j;
2135                        } else if (legs.distance.value < menorDistancia) {
2136                            menorDistancia = legs.distance.value;
2137                            route = response.routes[j];
2138                            index = j;
2139                        }
2140                    } else {
2141                        // menor duraçao
2142                        if (menorDuracao == 0) {
2143                            menorDuracao = legs.duration.value;
2144                            route = response.routes[j];
2145                            index = j;
2146                        } else if (legs.duration.value < menorDuracao) {
2147                            menorDuracao = legs.duration.value;
2148                            route = response.routes[j];
2149                            index = j;
2150                        }
2151                    }
2152
2153                }
2154
2155
2156                if (!route) {
2157                    route = response.routes[0];
2158                }
2159
2160                directionsDisplay.setRouteIndex(index);
2161
2162
2163
2164            }
2165        });
2166
2167        return directionsDisplay;
2168    }
2169
2170    function tracaRouteMapa(startObj, endObj, wayptsArray, mapa, tipoVeiculo, strokeColor = '') {
2171
2172        console.log('---tracaRouteMapa ---');
2173
2174        var retornaRotaMaisCurta = 'N'; // se N retorna rota mais rápida (duraçao menor)
2175        var arrayPoligno = [];
2176
2177
2178        var travelMode = 'DRIVING';
2179
2180
2181        if (tipoVeiculo == 'B') {
2182            travelMode = 'BICYCLING';
2183        }
2184
2185        if ((tipoVeiculo == 'A') || (tipoVeiculo == 'M') || (tipoVeiculo == 'D') || (tipoVeiculo == 'B') || (tipoVeiculo == 'AC')
2186                || (tipoVeiculo == 'MC') || (tipoVeiculo == 'DC') || (tipoVeiculo == 'BC') || (tipoVeiculo == 'X')) {
2187
2188            retornaRotaMaisCurta = 'S'; // menor distancia
2189        }
2190
2191
2192
2193        console.log(' Tipo Veiclo ', tipoVeiculo);
2194        console.log(' travelMode ', travelMode);
2195        console.log(' retornaRotaMaisCurta ', retornaRotaMaisCurta);
2196
2197        var objDirectionsService = new google.maps.DirectionsService;
2198
2199        var directionsDisplay = new google.maps.DirectionsRenderer({
2200            map: mapa,
2201            suppressMarkers: true,
2202            preserveViewport: true
2203
2204        });
2205
2206        if (strokeColor != '') {
2207            directionsDisplay = new google.maps.DirectionsRenderer({
2208                map: mapa,
2209                suppressMarkers: true,
2210                preserveViewport: true,
2211                polylineOptions: {
2212                    strokeColor: strokeColor,
2213                    strokeWeight: 7
2214                }
2215            });
2216
2217        }
2218
2219
2220        var waypts = [];
2221        var start = new google.maps.LatLng(startObj.la, startObj.lo);
2222        var end = new google.maps.LatLng(endObj.la, endObj.lo);
2223
2224        for (var i = 0; i < wayptsArray.length; i++) {
2225
2226            waypts.push({
2227                location: new google.maps.LatLng(wayptsArray[i].la, wayptsArray[i].lo),
2228                stopover: true
2229            });
2230        }
2231
2232        var obtjDercServ = {
2233            origin: start,
2234            destination: end,
2235            provideRouteAlternatives: true,
2236            travelMode: travelMode
2237        };
2238
2239        if (wayptsArray.length > 2) {
2240            obtjDercServ = {
2241                origin: start,
2242                destination: end,
2243                waypoints: waypts,
2244                provideRouteAlternatives: true,
2245                travelMode: travelMode
2246            };
2247        }
2248
2249
2250        objDirectionsService.route(obtjDercServ, function (response, status) {
2251            if (status === 'OK') {
2252                directionsDisplay.setDirections(response);
2253                console.log('Routes array ====', response.routes);
2254
2255                var menorDuracao = 0;
2256                var menorDistancia = 0;
2257                var index = 0;
2258                var route = null;
2259
2260                for (var j = 0; j < response.routes.length; j++) {
2261
2262                    var legs = response.routes[j].legs[0];
2263
2264                    if (retornaRotaMaisCurta == 'S') {
2265                        if (menorDistancia == 0) {
2266                            menorDistancia = legs.distance.value;
2267                            route = response.routes[j];
2268                            index = j;
2269                        } else if (legs.distance.value < menorDistancia) {
2270                            menorDistancia = legs.distance.value;
2271                            route = response.routes[j];
2272                            index = j;
2273                        }
2274                        console.log('menorDistancia = ' + menorDistancia + '  legs.distance.value ==' + legs.distance.value)
2275                    } else {
2276                        // menor duraçao
2277                        if (menorDuracao == 0) {
2278                            menorDuracao = legs.duration.value;
2279                            route = response.routes[j];
2280                            index = j;
2281                        } else if (legs.duration.value < menorDuracao) {
2282                            menorDuracao = legs.duration.value;
2283                            route = response.routes[j];
2284                            index = j;
2285                        }
2286                    }
2287
2288                }
2289
2290
2291                if (!route) {
2292                    console.log('route false')
2293                    route = response.routes[0];
2294                }
2295
2296                console.log(' Route Retorno ->>', route);
2297                console.log(' Route index ->>', index);
2298
2299                directionsDisplay.setRouteIndex(index);
2300
2301
2302
2303
2304            }
2305        });
2306
2307        return directionsDisplay;
2308
2309    }
2310
2311</script>
vendor: 1 bytes, line 2311
2311
2312<script>
2313    $(document).ready(function() {
2314        appMaster.preLoader();
2315    });
2316</script>
2316
2317
2318
2319    <style>
2320        .cookie-consent {
2321            display: flex;
2322            flex-direction: column;
2323            margin: .8em;
2324            padding: 1.2em;
2325            position: fixed;
2326            bottom: .1em;
2327            left: calc(50% - 190px);
2328            background: inherit;
2329            background-color: #ffffff;
2330            color: inherit;
2331            border-radius: 10px;
2332            box-shadow: 0 5px 20px #00000070;
2333            max-width: 380px;
2334        }
2335
2336        .cookie-consent__text {
2337            margin-bottom: 1em
2338        }
2339
2340        .cookie-consent__buttons {
2341            display: flex;
2342            flex-direction: row;
2343            justify-content: flex-end;
2344            text-align: center
2345        }
2346
2347        .cookie-consent__buttons-button {
2348            cursor: pointer;
2349            border-radius: 3px;
2350            padding: .5em
2351        }
2352
2353        .cookie-consent__buttons__close {
2354            background: #787878;
2355            color: #fff;
2356            padding-left: 1em;
2357            padding-right: 1em;
2358        }
2359
2360        .cookie-consent__buttons__read-more>a {
2361            color: #787878;
2362            margin-right: 1em;
2363        }
2364    </style>
2365
2366    <!-- Aceitar cookies para LGPD -->
2367    
2367<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ez-consent@1/dist/ez-consent.min.js"></script>
2367
2368    
2368<script>
2369        ez_consent.init({
2370            is_always_visible: false, // Always shows banner on load, default: false
2371            privacy_url: "/politicas-de-privacidade", // URL that "more" button goes to, default: "/privacy/"
2372            more_button: {
2373                target_attribute: "_blank", // Determines what the behavior of the 'more' button is, default: "_blank", opens the privacy page in a new tab
2374                is_consenting: false // Determines whether clicking on 'more' button gives consent and removes the banner, default: true
2375            },
2376            texts: {
2377                main: "Usamos cookies em nosso site para fornecer a experiência mais relevante, lembrando suas preferências e visitas repetidas. Ao clicar em “Aceitar”, você concorda com o uso de TODOS os cookies.", // The text that's shown on the banner, default: "This website uses cookies & similar."
2378                buttons: {
2379                    ok: "Aceitar", // OK button to hide the text, default: "ok"
2380                    more: "Política de Privacidade" // More button that shows the privacy policy, default "more"
2381                }
2382            }
2383        });
2384    </script>
2384
2385
2386      
2386<script type="text/javascript" src="assets/js/bootstrap.min.js"></script>
vendor: 1 bytes, line 2386
2386
2387<script type="text/javascript" src="assets/js/slick.min.js"></script>
vendor: 1 bytes, line 2387
2387
2388<script type="text/javascript" src="assets/js/placeholdem.min.js"></script>
vendor: 1 bytes, line 2388
2388
2389<script type="text/javascript" src="assets/js/waypoints.min.js"></script>
vendor: 1 bytes, line 2389
2389
2390<script type="text/javascript" src="js/scriptEE.js?v=4"></script>
vendor: 1 bytes, line 2390
2390
2391<script type="text/javascript" src="js/ajax.js"></script>
vendor: 1 bytes, line 2391
2391
2392<script type="text/javascript" src="js/jquery.mask.min.js"></script>
vendor: 1 bytes, line 2392
2392
2393<script type="text/javascript" src="js/mascara.js?v=1789651957"></script>
vendor: 1 bytes, line 2393
2393
2394<script src="./paginas/layouts/01/assets/js/scripts.js?v=1698150647"></script>
vendor: 1 bytes, line 2394
2394
2395<script src="./paginas/layouts/01/assets/js/toast/toastr.min.js"></script>
vendor: 1 bytes, line 2395
2395
2396<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"92600bbe634746439afc5b6a4b76592a","r":1,"spa":2}' crossorigin="anonymous"></script>
2396
2397</body>
2398
2399</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.