+++ /dev/null
-package session;
-
-use strict;
-use lib ('./lib/perl5');
-use lib ('./lib');
-use lib ('./');
-use File::Basename;
-use Digest::SHA qw(sha256_hex);
-
-use dksdb;
-use sendemail;
-# use Data::Dumper;
-
-sub new {
- my $class = shift;
- my $self = bless {}, $class;
- $self->{db} = dksdb->new();
- return $self;
-}
-
-sub checklogin(){
- my $self = shift;
- my $login = shift;
- my $password = shift;
- # open FILE,">>tmp/sql.log";
- # print FILE "pwd: $password\n";
- # close(FILE);
- my $pwd = sha256_hex($password);
- my $ret->{messagetype} ='w3-red';
- # my $newsid = undef;
- $login = lc($login);
- $login =~ s/^\s+//;
- $login =~ s/\s+$//;
-
- $ret->{message} = "Passwuert oder Login onbekannt!";
- $ret->{messagetype} = "w3-red";
- $ret->{sid} = undef;
- my $user = $self->{db}->dbquerysorted("select id from users where lower(username)=lower('".$self->{db}->securetext($login)."') and userpassword = '".$pwd."' and \"blocked\" is null;");
- # open FILE,">>tmp/sql.log";
- # print FILE "select id from users where username= '".$self->{db}->securetext($login)."' and userpassword = '".$pwd."' and \"blocked\" is null;\n";
- # close FILE;
- if (keys(%{$user}) > 0){
- $ret->{sid} = $self->randomstring(40);
- $self->{db}->dbexec("DELETE FROM sessions where id_user=".$user->{0}->{id}." and remote_addr='".$ENV{REMOTE_ADDR}."' and user_agent='".$ENV{HTTP_USER_AGENT}."';");
- my $r = $self->{db}->dbexec("INSERT INTO sessions (id_user,idsession,remote_addr,user_agent) VALUES (".$user->{0}->{id}.", '".$ret->{sid}."', '".$ENV{REMOTE_ADDR}."', '".$ENV{HTTP_USER_AGENT}."');");
- }
- return $ret;
-}
-
-sub savepassword(){
- my $self = shift;
- my $iduser = shift;
- my $newpwd = shift;
- my $pwd = sha256_hex($newpwd);
- $self->{db}->dbexec("UPDATE users SET userpassword = '".$pwd."' WHERE id=".$iduser.";");
- return 1;
-}
-
-sub passwordforgotten(){
- my $self = shift;
- my $email = shift;
- my $ret->{messagetype} ='w3-red';
- $ret->{message} = "Onbekannt E-mail!";
- my $sql = "select id,userpassword from users where username='".$self->{db}->securetext($email)."';";
- my $ex = $self->{db}->dbquerysorted($sql);
- if (keys(%{$ex}) > 0){
- my $newpwd = $self->randomstring(12);
- my $pwd = sha256_hex($newpwd);
- $self->{db}->dbexec("UPDATE users SET userpassword = '".$pwd."' WHERE id=".$ex->{0}->{id}.";");
- my $data->{newpassword} = $newpwd;
- my $eml = sendemail->new();
- my $mret = $eml->sendemail('user_forgotpasswd',$ex->{0}->{id},$email,$data,undef);
- if ($mret != 0){
- $ret->{messagetype} ='w3-red';
- $ret->{message} = "Den Moment ass et leider nët méglech d'Passwuert autmatesch zreckzesetzen, <br/> wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>!";
- return $ret;
- }
- $ret->{message} = "Mir hun dir eng E-Mail, matt engem neien Passwuert gescheckt!";
- $ret->{messagetype} = "w3-green";
- }
- return $ret;
-}
-
-sub registeruser(){
- my $self = shift;
- my $data = shift;
- my $ret->{messagetype} ='w3-red';
- $ret->{message} = "Een Fehler ass passéiert, probéier et spéier nach eemol!";
- $ret->{page} = "message.tt";
- if (!exists($data->{license}) || !exists($data->{regcode}) || !exists($data->{email}) || !exists($data->{terms})){
- $ret->{message} = "W.e.g. All Felder ausfëllen!";
- $ret->{page} = "register.tt";
- return $ret;
- }
- foreach my $d (%{$data}){
- $data->{$d} = $self->{db}->securetext($data->{$d});
- }
-
- my $user = $self->{db}->dbquerysorted("select id from users where username='".$data->{email}."';");
- if (keys(%{$user}) > 0){
- $ret->{page} = "register.tt";
- $ret->{message} = "Een Benotzer matt der selwechter E-Mail existéiert schon!";
- return $ret;
- }
- my $license = $self->{db}->dbquerysorted("select us.id as id_user,lic.license,mb.id as id_member,us.username,us.vcode,us.regcode from members mb join licenses lic on (lic.id_member=mb.id) join users us on (mb.id_user=us.id) where us.regcode='".$data->{regcode}."' and lic.license='".$data->{license}."' limit 1");
- if (keys(%{$license}) == 0){
- $ret->{message} = "Falsch Lizenz-Nummer oder falschen Régistréierungs-Code!";
- return $ret;
- }
- my $regcode = $license->{0}->{regcode};
- my $newcode = $self->randomstring(6);
- #my $usergroup = $self->{db}->dbquerysorted("select id from usergroups where usergroup ='avocat';");
- my $newuserid = $self->{db}->dbquerysorted("UPDATE users set username='".$data->{email}."',vcode='".$newcode."' where id=".$license->{0}->{id_user}." ;");
- my $maildata->{vcode} = $newcode;
- my $eml = sendemail->new();
- my $mret = $eml->sendemail('user_verification',$license->{0}->{id_user},$data->{email},$maildata,undef);
- if ($mret == 0){
- $ret->{message} = "Merci,<br/>Mir hun dir elo eng E-Mail gescheckt, mattengem Code fir deng E-Mail ze verifizéieren!<br/>Gëff desen Code w.e.g. an daat Feld hei drënner an!<br/>Bei Problemer wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>";
- $ret->{messagetype} = "w3-green";
- $ret->{page} = "validationcode.tt";
- } else {
- $self->{db}->dbexec("UPDATE users set username='".$data->{email}."',vcode=null where id=".$license->{0}->{id_user}." ;");
- $ret->{message} = "Aus iergend engem Grond konnten mir dir keng E-Mail un '".$data->{email}."' schecken! Falls dess E-Mail-Address net existéiert, versich et nach eng Kéier matt enger E-Mail-Address, déi existéiert!<br>Bei Problemer wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>";
- $ret->{messagetype} = "w3-red";
- $ret->{page} = "register.tt";
- }
- #$self->{db}->dbexec("insert into appaccess (id_user) values (".$newuserid->{0}->{id}.");");
- # $ret->{messagetype} = "w3-green";
-
- return $ret;
-}
-
-sub validateaccount(){
- my $self = shift;
- my $data = shift;
- foreach my $d (%{$data}){
- $data->{$d} = $self->{db}->securetext($data->{$d});
- }
-
- my $ret->{messagetype} ='w3-red';
- my $vcodedata = $self->{db}->dbquerysorted("select id,vcode,username from users where vcode='".$data->{vcode}."';");
- if (keys(%{$vcodedata}) == 0){
- $ret->{message} = "Benotzer onbekannt oder Code falsch!";
- $ret->{page} = "validationcode.tt";
- }
- my $newpwd = $self->randomstring(12);
- my $pwd = sha256_hex($newpwd);
- my $maildata->{password} = $newpwd;
- my $eml = sendemail->new();
- my $newuserid = $self->{db}->dbquerysorted("UPDATE users set userpassword='".$pwd."',vcode=null,regcode=null where id=".$vcodedata->{0}->{id}." returning id,username;");
- my $mret = $eml->sendemail('user_registration',$vcodedata->{0}->{id},$vcodedata->{0}->{username},$maildata,undef);
- if ($mret == 0){
- $ret->{message} = "Merci,<br/>Mir hun dir elo eng E-Mail gescheckt, matt all deenen néidegen Donnéeen fir dech anzeloggen!<br/>Bei Problemer wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>";
- $ret->{messagetype} = "w3-green";
- $ret->{page} = "message.tt";
- } else {
- $ret->{message} = "Aus iergend engem Grond konnten mir dir keng E-Mail un '".$newuserid->{0}->{username}."' schecken! Falls dess E-Mail-Address net existéiert, versich et nach eng Kéier matt enger E-Mail-Address, déi existéiert!<br>Bei Problemer wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>";
- $ret->{page} = "message.tt";
- }
- return $ret;
-}
-
-sub getsession($){
- my $self = shift;
- my $sid = shift;
- my $sql ="select se.idsession,us.id,us.username,string_agg(distinct(aug.usergroup),',') as usergroups from sessions se
-join users us on (us.id=se.id_user)
-left join useringroups uig on (us.id=uig.id_user)
-left join usergroups aug on (aug.id=uig.id_group)
-where se.idsession= '".$self->{db}->securetext($sid)."'
-and se.remote_addr= '".$ENV{REMOTE_ADDR}."'
-and se.user_agent='".$ENV{HTTP_USER_AGENT}."' and us.blocked is null group by se.id,us.id;";
- my $res= $self->{db}->dbquerysorted($sql);
- my $ret = undef;
- if (keys(%{$res}) > 0){
- return $res->{0};
- }
- return $ret;
-}
-
-sub deletesession(){
- my $self = shift;
- my $sid = shift;
- $self->{db}->dbexec("DELETE FROM sessions where idsession='".$self->{db}->securetext($sid)."';");
-}
-
-sub randomstring(){
- my $self = shift;
- my $num = shift;
- my @alphanumeric = ('a'..'z', 'A'..'Z', 0..9);
- my $randstring = join '', map $alphanumeric[rand @alphanumeric], 0..$num;
- return $randstring;
-}
-
-
-# sub deleteprofile(){
-# my $self = shift;
-# my $data = shift;
-# my $ret->{message} = "mot de passe ou profile inconnue!";
-# $ret->{messagetype} = "danger";
-# if ($data->{id_user} eq ''){
-# $ret->{sid} = undef;
-# return $ret;
-# }
-# my $pwd = sha256_hex($data->{password});
-# my $user = $self->{db}->dbquerysorted("select id from users where id= '".$data->{id_user}."' and userpassword = '".$pwd."';");
-# if (keys(%{$user}) > 0){
-# $self->admindeleteuser($data->{id_user});
-# my $ret->{'message'} = "Votre profile a été supprimé!";
-# $ret->{'messagetype'} = "info";
-# $ret->{sid} = undef;
-# }
-# return $ret;
-
-# }
-
-# sub admindeleteuser(){
-# my $self = shift;
-# my $id_user = shift;
-# my @dl = ("DELETE FROM public.useringroups WHERE id_uset=".$id_user.";",
-# "DELETE FROM public.userclients WHERE id_user=".$id_user.";",
-# "DELETE FROM public.appaccess WHERE id_user=".$id_user.";",
-# "DELETE FROM public.modulepreferences WHERE id_user=".$id_user.";",,
-# "DELETE FROM public.sessions WHERE id_user=".$id_user.";",
-# "delete from users where id=".$id_user.";");
-# foreach my $s (@dl){
-# $self->{db}->dbexec($s);
-# }
-# return 1;
-# }
-
-1;
\ No newline at end of file
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+PyFingerprint
+Copyright (C) 2015 Bastian Raschke <bastian.raschke@posteo.de>
+All rights reserved.
+
+"""
+
+from pyfingerprint2.pyfingerprint import PyFingerprint
+
+
+## Shows the template index table
+##
+
+## Tries to initialize the sensor
+try:
+ f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)
+
+ if ( f.verifyPassword() == False ):
+ raise ValueError('The given fingerprint sensor password is wrong!')
+
+except Exception as e:
+ print('The fingerprint sensor could not be initialized!')
+ print('Exception message: ' + str(e))
+ exit(1)
+
+## Gets some sensor information
+print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))
+
+## Tries to show a template index table page
+try:
+ page = input('Please enter the index page (0, 1, 2, 3) you want to see: ')
+ page = int(page)
+
+ tableIndex = f.getTemplateIndex(page)
+
+ for i in range(0, len(tableIndex)):
+ print('Template at position #' + str(i) + ' is used: ' + str(tableIndex[i]))
+
+except Exception as e:
+ print('Operation failed!')
+ print('Exception message: ' + str(e))
+ exit(1)
+
--- /dev/null
+./CGI/api/db.cgi|3144
+./CGI/api/fingerprint.cgi|3359
+./CGI/api/fingerunload.cgi|1602
+./CGI/api/index.cgi|4333
+./CGI/api/lib/dksconfig.pm|1022
+./CGI/api/lib/dksdb.pm|11300
+./CGI/api/service.cgi|4844
+./CGI/api/system.cgi|4448
+./CGI/index.cgi|2666
+./CGI/tmpl/app/hourtrax/index.tt|2984
+./CGI/tmpl/app/hourtrax/module/members/index.js|3987
+./CGI/tmpl/app/hourtrax/module/members/index.tt|3416
+./CGI/tmpl/app/hourtrax/module/timetrack/index.js|2017
+./CGI/tmpl/app/hourtrax/module/timetrack/index.tt|401
+./CGI/tmpl/app/hourtrax/module/timetrack/usertimetrack.js|5633
+./CGI/tmpl/app/hourtrax/module/timetrack/usertimetrack.tt|3132
+./CGI/tmpl/app/system/hourtrax/index.js|0
+./CGI/tmpl/app/system/hourtrax/index.tt|0
+./CGI/tmpl/app/system/index.tt|2888
+./CGI/tmpl/app/system/network/index.js|0
+./CGI/tmpl/app/system/network/index.tt|1193
+./CGI/tmpl/app/system/vpn/index.js|0
+./CGI/tmpl/app/system/vpn/index.tt|0
+./CGI/tmpl/app/timeclock/index.js|15742
+./CGI/tmpl/app/timeclock/index.tt|9644
+./CGI/tmpl/block/snackbar.tt|25
+./CGI/tmpl/macro/fields.tt|8091
+./CGI/tmpl/skeleton/app.tt|82
+./CGI/tmpl/skeleton/file.tt|82
+./CGI/tmpl/skeleton/index.tt|1861
+./CGI/tmpl/skeleton/module.tt|3361
+./hourtrax.pl|3252
+./htdocs/css/admin.css|5127
+./htdocs/css/clock.css|6290
+./htdocs/css/clock2.css|72
+./htdocs/css/w3pro.css|26847
+./htdocs/img/dks_1000.png|68554
+./htdocs/img/fingerprint/finger1.svg|4819
+./htdocs/img/fingerprint/finger2.svg|4963
+./htdocs/img/fingerprint/finger3.svg|4796
+./htdocs/img/fingerprint/finger4.svg|4768
+./htdocs/img/fingerprint/finger5.svg|4788
+./htdocs/img/fingerprint/fingerprint-check.svg|5525
+./htdocs/img/fingerprint/fingerprint-crosshair.svg|6148
+./htdocs/img/fingerprint/fingerprint-remove.svg|5587
+./htdocs/img/fingerprint/fingerprint-remove_white.svg|5720
+./htdocs/img/fingerprint/fingerprint-scanning-index.svg|7393
+./htdocs/img/fingerprint/fingerprint-scanning.svg|6064
+./htdocs/img/fingerprint/fingerprint-search.svg|17333
+./htdocs/img/fingerprint/fingerprint-simple.svg|5706
+./htdocs/img/hourtrax.png|23443
+./htdocs/img/hourtrax.svg|10430
+./htdocs/img/icons/address.svg|800
+./htdocs/img/icons/address_white.svg|812
+./htdocs/img/icons/Adobe_Acrobat.svg|3436
+./htdocs/img/icons/Adobe_PDF_Export.svg|2730
+./htdocs/img/icons/Agreement_01.svg|5234
+./htdocs/img/icons/apps.svg|781
+./htdocs/img/icons/apps_white.svg|793
+./htdocs/img/icons/archive.svg|273
+./htdocs/img/icons/archive_white.svg|285
+./htdocs/img/icons/Bill.svg|3185
+./htdocs/img/icons/calendar.svg|954
+./htdocs/img/icons/calendar_white.svg|966
+./htdocs/img/icons/clocktime.svg|1122
+./htdocs/img/icons/clocktime_white.svg|1117
+./htdocs/img/icons/club.svg|823
+./htdocs/img/icons/club_white.svg|835
+./htdocs/img/icons/clubs.svg|1033
+./htdocs/img/icons/clubs_white.svg|1045
+./htdocs/img/icons/code.svg|589
+./htdocs/img/icons/cube.svg|365
+./htdocs/img/icons/cube_white.svg|378
+./htdocs/img/icons/cubelight.svg|1023
+./htdocs/img/icons/cubelight_white.svg|1036
+./htdocs/img/icons/dashboard.svg|1085
+./htdocs/img/icons/dashboard_white.svg|1098
+./htdocs/img/icons/Document_Save.svg|729
+./htdocs/img/icons/download.svg|339
+./htdocs/img/icons/download_white.svg|351
+./htdocs/img/icons/duplicate.svg|430
+./htdocs/img/icons/duplicate_white.svg|442
+./htdocs/img/icons/edit.svg|712
+./htdocs/img/icons/edit_white.svg|725
+./htdocs/img/icons/file/dir.png|6937
+./htdocs/img/icons/file/doc.png|6455
+./htdocs/img/icons/file/docx.png|6455
+./htdocs/img/icons/file/file.png|4540
+./htdocs/img/icons/file/jpg.png|6297
+./htdocs/img/icons/file/pdf.png|8783
+./htdocs/img/icons/file/png.png|6297
+./htdocs/img/icons/file/txt.png|6049
+./htdocs/img/icons/file/xls.png|6065
+./htdocs/img/icons/file/xlsx.png|6065
+./htdocs/img/icons/file.svg|272
+./htdocs/img/icons/file_white.svg|284
+./htdocs/img/icons/folder.svg|404
+./htdocs/img/icons/folder_white.svg|417
+./htdocs/img/icons/globe.svg|1242
+./htdocs/img/icons/globe_white.svg|1254
+./htdocs/img/icons/group.svg|1994
+./htdocs/img/icons/group_white.svg|2006
+./htdocs/img/icons/history.svg|1284
+./htdocs/img/icons/history_white.svg|1296
+./htdocs/img/icons/inbox.svg|413
+./htdocs/img/icons/inbox_white.svg|425
+./htdocs/img/icons/library.svg|968
+./htdocs/img/icons/library_white.svg|980
+./htdocs/img/icons/license.svg|478
+./htdocs/img/icons/license_white.svg|490
+./htdocs/img/icons/list.svg|640
+./htdocs/img/icons/list_white.svg|652
+./htdocs/img/icons/logout.svg|402
+./htdocs/img/icons/logout_white.svg|414
+./htdocs/img/icons/menu.svg|336
+./htdocs/img/icons/menu_white.svg|348
+./htdocs/img/icons/newspaper.svg|812
+./htdocs/img/icons/newspaper_white.svg|824
+./htdocs/img/icons/numberlist.svg|908
+./htdocs/img/icons/numberlist_white.svg|920
+./htdocs/img/icons/package.svg|408
+./htdocs/img/icons/package_white.svg|420
+./htdocs/img/icons/pictures.svg|1420
+./htdocs/img/icons/pictures_white.svg|1436
+./htdocs/img/icons/plus.svg|535
+./htdocs/img/icons/plus_white.svg|547
+./htdocs/img/icons/remove.svg|816
+./htdocs/img/icons/remove_white.svg|828
+./htdocs/img/icons/Save.svg|477
+./htdocs/img/icons/squares.svg|502
+./htdocs/img/icons/squares_white.svg|514
+./htdocs/img/icons/target.svg|780
+./htdocs/img/icons/target_white.svg|792
+./htdocs/img/icons/user.svg|780
+./htdocs/img/icons/user_white.svg|792
+./htdocs/js/admin.js|3246
+./htdocs/js/fieldsave.js|1447
+./htdocs/js/formsave.js|6063
+./htdocs/js/moduleglobal.js|839
+./htdocs/js/request.js|5308
+./htdocs/vendor/choices/base.css|2314
+./htdocs/vendor/choices/base.min.css|1604
+./htdocs/vendor/choices/choices.css|8095
+./htdocs/vendor/choices/choices.js|217424
+./htdocs/vendor/choices/choices.min.css|6735
+./htdocs/vendor/choices/choices.min.js|91604
+./htdocs/vendor/choices/scripts/choices.js|217424
+./htdocs/vendor/choices/scripts/choices.min.js|91604
+./htdocs/vendor/flatpickr/flatpickr.css|18831
+./htdocs/vendor/flatpickr/flatpickr.js|118042
+./htdocs/vendor/flatpickr/flatpickr.min.css|15954
+./htdocs/vendor/flatpickr/flatpickr.min.js|48368
+./htdocs/vendor/flatpickr/ie.css|260
+./htdocs/vendor/flatpickr/index.d.ts|138
+./htdocs/vendor/flatpickr/l10n/de.d.ts|2272
+./htdocs/vendor/flatpickr/l10n/de.js|1757
+./htdocs/vendor/flatpickr/l10n/default.d.ts|104
+./htdocs/vendor/flatpickr/l10n/default.js|2150
+./htdocs/vendor/flatpickr/l10n/fr.d.ts|2272
+./htdocs/vendor/flatpickr/l10n/fr.js|1893
+./htdocs/vendor/flatpickr/l10n/lu.d.ts|2314
+./htdocs/vendor/flatpickr/l10n/lu.js|1802
+./htdocs/vendor/flatpickr/plugins/confirmDate/confirmDate.css|373
+./htdocs/vendor/flatpickr/plugins/confirmDate/confirmDate.d.ts|272
+./htdocs/vendor/flatpickr/plugins/confirmDate/confirmDate.js|4236
+./htdocs/vendor/flatpickr/plugins/labelPlugin/labelPlugin.d.ts|114
+./htdocs/vendor/flatpickr/plugins/labelPlugin/labelPlugin.js|964
+./htdocs/vendor/flatpickr/plugins/minMaxTimePlugin.d.ts|491
+./htdocs/vendor/flatpickr/plugins/minMaxTimePlugin.js|12399
+./htdocs/vendor/flatpickr/plugins/monthSelect/index.d.ts|367
+./htdocs/vendor/flatpickr/plugins/monthSelect/index.js|7757
+./htdocs/vendor/flatpickr/plugins/monthSelect/style.css|1561
+./htdocs/vendor/flatpickr/plugins/monthSelect/tests.spec.d.ts|11
+./htdocs/vendor/flatpickr/plugins/rangePlugin.d.ts|312
+./htdocs/vendor/flatpickr/plugins/rangePlugin.js|6475
+./htdocs/vendor/flatpickr/plugins/scrollPlugin.d.ts|113
+./htdocs/vendor/flatpickr/plugins/scrollPlugin.js|2026
+./htdocs/vendor/flatpickr/plugins/weekSelect/weekSelect.d.ts|218
+./htdocs/vendor/flatpickr/plugins/weekSelect/weekSelect.js|3500
+./htdocs/vendor/flatpickr/themes/airbnb.css|21148
+./htdocs/vendor/flatpickr/themes/confetti.css|19048
+./htdocs/vendor/flatpickr/themes/dark.css|18875
+./htdocs/vendor/flatpickr/themes/light.css|18996
+./htdocs/vendor/flatpickr/themes/material_blue.css|19048
+./htdocs/vendor/flatpickr/themes/material_green.css|19048
+./htdocs/vendor/flatpickr/themes/material_orange.css|19048
+./htdocs/vendor/flatpickr/themes/material_red.css|19048
+./htdocs/vendor/flatpickr/types/globals.d.ts|546
+./htdocs/vendor/flatpickr/types/instance.d.ts|4386
+./htdocs/vendor/flatpickr/types/locale.d.ts|2263
+./htdocs/vendor/flatpickr/types/options.d.ts|4564
+./htdocs/vendor/flatpickr/typings.d.ts|1001
+./htdocs/vendor/flatpickr/utils/dates.d.ts|922
+./htdocs/vendor/flatpickr/utils/dom.d.ts|585
+./htdocs/vendor/flatpickr/utils/formatting.d.ts|834
+./htdocs/vendor/flatpickr/utils/index.d.ts|393
+./htdocs/vendor/flatpickr/utils/polyfills.d.ts|0
+./htdocs/vendor/jspdf/jspdf.min.js|307591
+./htdocs/vendor/jspdf/jspdf.plugin.autotable.js|71296
+./htdocs/vendor/jspdf/jspdf.plugin.autotable.min.js|30274
+./htdocs/vendor/jsxlsx/cpexcel.js|471033
+./htdocs/vendor/jsxlsx/jszip.js|288108
+./htdocs/vendor/jsxlsx/LICENSE|11356
+./htdocs/vendor/jsxlsx/shim.min.js|5651
+./htdocs/vendor/jsxlsx/xlsx.core.min.js|477227
+./htdocs/vendor/jsxlsx/xlsx.core.min.map|717898
+./htdocs/vendor/jsxlsx/xlsx.extendscript.js|992249
+./htdocs/vendor/jsxlsx/xlsx.full.min.js|921331
+./htdocs/vendor/jsxlsx/xlsx.full.min.map|841224
+./htdocs/vendor/jsxlsx/xlsx.js|696439
+./htdocs/vendor/jsxlsx/xlsx.min.js|397226
+./htdocs/vendor/jsxlsx/xlsx.min.map|586186
+./htdocs/vendor/moment/moment-with-locales.min.js|330190
+./htdocs/vendor/moment/moment.min.js|51746
+./htdocs/vendor/tabulator/css/bootstrap/tabulator_bootstrap.css|19703
+./htdocs/vendor/tabulator/css/bootstrap/tabulator_bootstrap.min.css|17088
+./htdocs/vendor/tabulator/css/bootstrap/tabulator_bootstrap.min.css.map|27442
+./htdocs/vendor/tabulator/css/bootstrap/tabulator_bootstrap4.css|25548
+./htdocs/vendor/tabulator/css/bootstrap/tabulator_bootstrap4.min.css|22258
+./htdocs/vendor/tabulator/css/bootstrap/tabulator_bootstrap4.min.css.map|34724
+./htdocs/vendor/tabulator/css/bulma/tabulator_bulma.css|19945
+./htdocs/vendor/tabulator/css/bulma/tabulator_bulma.min.css|17240
+./htdocs/vendor/tabulator/css/bulma/tabulator_bulma.min.css.map|27793
+./htdocs/vendor/tabulator/css/semantic-ui/tabulator_semantic-ui.css|31861
+./htdocs/vendor/tabulator/css/semantic-ui/tabulator_semantic-ui.min.css|23042
+./htdocs/vendor/tabulator/css/semantic-ui/tabulator_semantic-ui.min.css.map|42076
+./htdocs/vendor/tabulator/css/tabulator.css|18678
+./htdocs/vendor/tabulator/css/tabulator.min.css|16153
+./htdocs/vendor/tabulator/css/tabulator.min.css.map|30054
+./htdocs/vendor/tabulator/css/tabulator_midnight.css|18806
+./htdocs/vendor/tabulator/css/tabulator_midnight.min.css|16278
+./htdocs/vendor/tabulator/css/tabulator_midnight.min.css.map|30296
+./htdocs/vendor/tabulator/css/tabulator_modern.css|19468
+./htdocs/vendor/tabulator/css/tabulator_modern.min.css|16838
+./htdocs/vendor/tabulator/css/tabulator_modern.min.css.map|31647
+./htdocs/vendor/tabulator/css/tabulator_simple.css|18618
+./htdocs/vendor/tabulator/css/tabulator_simple.min.css|16106
+./htdocs/vendor/tabulator/css/tabulator_simple.min.css.map|30033
+./htdocs/vendor/tabulator/css/tabulator_site.css|18507
+./htdocs/vendor/tabulator/css/tabulator_site.min.css|16002
+./htdocs/vendor/tabulator/css/tabulator_site.min.css.map|30389
+./htdocs/vendor/tabulator/js/jquery_wrapper.js|1421
+./htdocs/vendor/tabulator/js/jquery_wrapper.min.js|699
+./htdocs/vendor/tabulator/js/modules/accessor.js|2558
+./htdocs/vendor/tabulator/js/modules/accessor.min.js|1455
+./htdocs/vendor/tabulator/js/modules/ajax.js|11994
+./htdocs/vendor/tabulator/js/modules/ajax.min.js|8042
+./htdocs/vendor/tabulator/js/modules/calculation_colums.js|11664
+./htdocs/vendor/tabulator/js/modules/calculation_colums.min.js|7402
+./htdocs/vendor/tabulator/js/modules/clipboard.js|25291
+./htdocs/vendor/tabulator/js/modules/clipboard.min.js|14993
+./htdocs/vendor/tabulator/js/modules/data_tree.js|8748
+./htdocs/vendor/tabulator/js/modules/data_tree.min.js|5983
+./htdocs/vendor/tabulator/js/modules/download.js|20203
+./htdocs/vendor/tabulator/js/modules/download.min.js|9822
+./htdocs/vendor/tabulator/js/modules/edit.js|43160
+./htdocs/vendor/tabulator/js/modules/edit.min.js|22312
+./htdocs/vendor/tabulator/js/modules/filter.js|20848
+./htdocs/vendor/tabulator/js/modules/filter.min.js|11513
+./htdocs/vendor/tabulator/js/modules/format.js|21000
+./htdocs/vendor/tabulator/js/modules/format.min.js|12537
+./htdocs/vendor/tabulator/js/modules/frozen_columns.js|6116
+./htdocs/vendor/tabulator/js/modules/frozen_columns.min.js|3946
+./htdocs/vendor/tabulator/js/modules/frozen_rows.js|2249
+./htdocs/vendor/tabulator/js/modules/frozen_rows.min.js|1645
+./htdocs/vendor/tabulator/js/modules/group_rows.js|25932
+./htdocs/vendor/tabulator/js/modules/group_rows.min.js|17645
+./htdocs/vendor/tabulator/js/modules/history.js|3203
+./htdocs/vendor/tabulator/js/modules/history.min.js|2270
+./htdocs/vendor/tabulator/js/modules/html_table_export.js|10649
+./htdocs/vendor/tabulator/js/modules/html_table_export.min.js|6930
+./htdocs/vendor/tabulator/js/modules/html_table_import.js|5208
+./htdocs/vendor/tabulator/js/modules/html_table_import.min.js|2721
+./htdocs/vendor/tabulator/js/modules/keybindings.js|8003
+./htdocs/vendor/tabulator/js/modules/keybindings.min.js|5002
+./htdocs/vendor/tabulator/js/modules/moveable_columns.js|8666
+./htdocs/vendor/tabulator/js/modules/moveable_columns.min.js|5383
+./htdocs/vendor/tabulator/js/modules/moveable_rows.js|16514
+./htdocs/vendor/tabulator/js/modules/moveable_rows.min.js|11212
+./htdocs/vendor/tabulator/js/modules/mutator.js|2940
+./htdocs/vendor/tabulator/js/modules/mutator.min.js|1722
+./htdocs/vendor/tabulator/js/modules/page.js|16067
+./htdocs/vendor/tabulator/js/modules/page.min.js|10966
+./htdocs/vendor/tabulator/js/modules/persistence.js|4822
+./htdocs/vendor/tabulator/js/modules/persistence.min.js|2767
+./htdocs/vendor/tabulator/js/modules/print.js|3008
+./htdocs/vendor/tabulator/js/modules/print.min.js|2306
+./htdocs/vendor/tabulator/js/modules/reactive_data.js|5286
+./htdocs/vendor/tabulator/js/modules/reactive_data.min.js|3051
+./htdocs/vendor/tabulator/js/modules/resize_columns.js|5035
+./htdocs/vendor/tabulator/js/modules/resize_columns.min.js|3034
+./htdocs/vendor/tabulator/js/modules/resize_rows.js|2885
+./htdocs/vendor/tabulator/js/modules/resize_rows.min.js|1741
+./htdocs/vendor/tabulator/js/modules/resize_table.js|895
+./htdocs/vendor/tabulator/js/modules/resize_table.min.js|669
+./htdocs/vendor/tabulator/js/modules/responsive_layout.js|6313
+./htdocs/vendor/tabulator/js/modules/responsive_layout.min.js|4016
+./htdocs/vendor/tabulator/js/modules/select_row.js|9355
+./htdocs/vendor/tabulator/js/modules/select_row.min.js|5969
+./htdocs/vendor/tabulator/js/modules/sort.js|13879
+./htdocs/vendor/tabulator/js/modules/sort.min.js|7200
+./htdocs/vendor/tabulator/js/modules/validate.js|5230
+./htdocs/vendor/tabulator/js/modules/validate.min.js|2576
+./htdocs/vendor/tabulator/js/tabulator.js|531228
+./htdocs/vendor/tabulator/js/tabulator.min.js|301937
+./htdocs/vendor/tabulator/js/tabulator_core.js|190661
+./htdocs/vendor/tabulator/js/tabulator_core.min.js|117292
+./htdocs/vendor/tinymce/changelog.txt|92798
+./htdocs/vendor/tinymce/js/tinymce/jquery.tinymce.min.js|3561
+./htdocs/vendor/tinymce/js/tinymce/langs/de.js|10334
+./htdocs/vendor/tinymce/js/tinymce/langs/fr_FR.js|10140
+./htdocs/vendor/tinymce/js/tinymce/langs/readme.md|151
+./htdocs/vendor/tinymce/js/tinymce/license.txt|26945
+./htdocs/vendor/tinymce/js/tinymce/plugins/advlist/plugin.min.js|2226
+./htdocs/vendor/tinymce/js/tinymce/plugins/anchor/plugin.min.js|1426
+./htdocs/vendor/tinymce/js/tinymce/plugins/autolink/plugin.min.js|2127
+./htdocs/vendor/tinymce/js/tinymce/plugins/autoresize/plugin.min.js|2074
+./htdocs/vendor/tinymce/js/tinymce/plugins/autosave/plugin.min.js|3083
+./htdocs/vendor/tinymce/js/tinymce/plugins/bbcode/plugin.min.js|2850
+./htdocs/vendor/tinymce/js/tinymce/plugins/charmap/plugin.min.js|8601
+./htdocs/vendor/tinymce/js/tinymce/plugins/code/plugin.min.js|1024
+./htdocs/vendor/tinymce/js/tinymce/plugins/codesample/css/prism.css|2472
+./htdocs/vendor/tinymce/js/tinymce/plugins/codesample/plugin.min.js|19415
+./htdocs/vendor/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js|1349
+./htdocs/vendor/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js|1824
+./htdocs/vendor/tinymce/js/tinymce/plugins/directionality/plugin.min.js|857
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-cool.gif|354
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-cry.gif|329
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-embarassed.gif|331
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif|342
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-frown.gif|340
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-innocent.gif|336
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-kiss.gif|338
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-laughing.gif|343
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-money-mouth.gif|321
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-sealed.gif|323
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-smile.gif|344
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-surprised.gif|338
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-tongue-out.gif|328
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-undecided.gif|337
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-wink.gif|350
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-yell.gif|336
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/plugin.min.js|1071
+./htdocs/vendor/tinymce/js/tinymce/plugins/fullpage/plugin.min.js|7168
+./htdocs/vendor/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js|2161
+./htdocs/vendor/tinymce/js/tinymce/plugins/help/img/logo.png|13208
+./htdocs/vendor/tinymce/js/tinymce/plugins/help/plugin.min.js|9992
+./htdocs/vendor/tinymce/js/tinymce/plugins/hr/plugin.min.js|428
+./htdocs/vendor/tinymce/js/tinymce/plugins/image/plugin.min.js|18255
+./htdocs/vendor/tinymce/js/tinymce/plugins/imagetools/plugin.min.js|36525
+./htdocs/vendor/tinymce/js/tinymce/plugins/importcss/plugin.min.js|3167
+./htdocs/vendor/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js|2633
+./htdocs/vendor/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js|3402
+./htdocs/vendor/tinymce/js/tinymce/plugins/link/plugin.min.js|8919
+./htdocs/vendor/tinymce/js/tinymce/plugins/lists/plugin.min.js|14256
+./htdocs/vendor/tinymce/js/tinymce/plugins/media/plugin.min.js|15064
+./htdocs/vendor/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js|1012
+./htdocs/vendor/tinymce/js/tinymce/plugins/noneditable/plugin.min.js|1540
+./htdocs/vendor/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js|1436
+./htdocs/vendor/tinymce/js/tinymce/plugins/paste/plugin.min.js|21601
+./htdocs/vendor/tinymce/js/tinymce/plugins/preview/plugin.min.js|2044
+./htdocs/vendor/tinymce/js/tinymce/plugins/print/plugin.min.js|366
+./htdocs/vendor/tinymce/js/tinymce/plugins/save/plugin.min.js|1426
+./htdocs/vendor/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js|7358
+./htdocs/vendor/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js|10184
+./htdocs/vendor/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js|1631
+./htdocs/vendor/tinymce/js/tinymce/plugins/table/plugin.min.js|135387
+./htdocs/vendor/tinymce/js/tinymce/plugins/template/plugin.min.js|5414
+./htdocs/vendor/tinymce/js/tinymce/plugins/textcolor/plugin.min.js|4924
+./htdocs/vendor/tinymce/js/tinymce/plugins/textpattern/plugin.min.js|4412
+./htdocs/vendor/tinymce/js/tinymce/plugins/toc/plugin.min.js|2941
+./htdocs/vendor/tinymce/js/tinymce/plugins/visualblocks/css/visualblocks.css|5627
+./htdocs/vendor/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js|1691
+./htdocs/vendor/tinymce/js/tinymce/plugins/visualchars/plugin.min.js|6294
+./htdocs/vendor/tinymce/js/tinymce/plugins/wordcount/plugin.min.js|10937
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/content.inline.min.css|3375
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/content.min.css|3781
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/content.mobile.min.css|234
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-mobile.woff|4624
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.eot|9492
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.svg|24789
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf|9304
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.woff|9380
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.eot|18808
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.svg|46119
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.ttf|18644
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.woff|18720
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/img/anchor.gif|53
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/img/loader.gif|2608
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/img/object.gif|152
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/img/trans.gif|43
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/skin.min.css|43950
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/skin.mobile.min.css|28006
+./htdocs/vendor/tinymce/js/tinymce/themes/inlite/theme.min.js|137124
+./htdocs/vendor/tinymce/js/tinymce/themes/mobile/theme.min.js|174158
+./htdocs/vendor/tinymce/js/tinymce/themes/modern/theme.min.js|135904
+./htdocs/vendor/tinymce/js/tinymce/tinymce.min.js|350402
+./htdocs/vendor/tinymce/LICENSE.TXT|26945
+./tools/fingerdelete.py|1219
+./tools/fingerenroll.py|2747
+./tools/fingerindex.py|1176
+./tools/fingerledoff.py|583
+./tools/fingerledon.py|582
+./tools/fingersearch.py|1962
+./tools/fpunload.sh|520
+./tools/pyfingerprint2/__init__.py|175
+./tools/pyfingerprint2/pyfingerprint.orig.py|44719
+./tools/pyfingerprint2/pyfingerprint.py|45813
--- /dev/null
+./CGI/api/db.cgi|3027
+./CGI/api/fingerprint.cgi|4338
+./CGI/api/index.cgi|4333
+./CGI/api/lib/dksconfig.pm|1022
+./CGI/api/lib/dksdb.pm|11300
+./CGI/api/service.cgi|4844
+./CGI/api/system.cgi|4448
+./CGI/index.cgi|2667
+./CGI/tmpl/app/hourtrax/index.tt|2984
+./CGI/tmpl/app/hourtrax/module/members/index.js|3913
+./CGI/tmpl/app/hourtrax/module/members/index.tt|3416
+./CGI/tmpl/app/hourtrax/module/settings/index.js|0
+./CGI/tmpl/app/hourtrax/module/settings/index.tt|1192
+./CGI/tmpl/app/hourtrax/module/timetrack/index.js|2017
+./CGI/tmpl/app/hourtrax/module/timetrack/index.tt|401
+./CGI/tmpl/app/hourtrax/module/timetrack/usertimetrack.js|5633
+./CGI/tmpl/app/hourtrax/module/timetrack/usertimetrack.tt|3132
+./CGI/tmpl/app/system/hourtrax/index.js|0
+./CGI/tmpl/app/system/hourtrax/index.tt|0
+./CGI/tmpl/app/system/index.tt|2888
+./CGI/tmpl/app/system/network/index.js|0
+./CGI/tmpl/app/system/network/index.tt|1193
+./CGI/tmpl/app/system/vpn/index.js|0
+./CGI/tmpl/app/system/vpn/index.tt|0
+./CGI/tmpl/app/timeclock/index.js|14470
+./CGI/tmpl/app/timeclock/index.tt|9073
+./CGI/tmpl/block/snackbar.tt|25
+./CGI/tmpl/macro/fields.tt|8091
+./CGI/tmpl/skeleton/app.tt|82
+./CGI/tmpl/skeleton/file.tt|82
+./CGI/tmpl/skeleton/index.tt|1861
+./CGI/tmpl/skeleton/module.tt|3361
+./hourtrax.pl|3246
+./htdocs/css/admin.css|5127
+./htdocs/css/clock2.css|72
+./htdocs/css/clock.css|6290
+./htdocs/css/w3pro.css|26847
+./htdocs/img/dks_1000.png|68554
+./htdocs/img/fingerprint/finger1.svg|4819
+./htdocs/img/fingerprint/finger2.svg|4963
+./htdocs/img/fingerprint/finger3.svg|4796
+./htdocs/img/fingerprint/finger4.svg|4768
+./htdocs/img/fingerprint/finger5.svg|4788
+./htdocs/img/fingerprint/fingerprint-check.svg|5525
+./htdocs/img/fingerprint/fingerprint-crosshair.svg|6148
+./htdocs/img/fingerprint/fingerprint-remove.svg|5587
+./htdocs/img/fingerprint/fingerprint-remove_white.svg|5720
+./htdocs/img/fingerprint/fingerprint-scanning-index.svg|7393
+./htdocs/img/fingerprint/fingerprint-scanning.svg|6064
+./htdocs/img/fingerprint/fingerprint-search.svg|17333
+./htdocs/img/fingerprint/fingerprint-simple.svg|5706
+./htdocs/img/hourtrax.png|23443
+./htdocs/img/hourtrax.svg|10430
+./htdocs/img/icons/address.svg|800
+./htdocs/img/icons/address_white.svg|812
+./htdocs/img/icons/Adobe_Acrobat.svg|3436
+./htdocs/img/icons/Adobe_PDF_Export.svg|2730
+./htdocs/img/icons/Agreement_01.svg|5234
+./htdocs/img/icons/apps.svg|781
+./htdocs/img/icons/apps_white.svg|793
+./htdocs/img/icons/archive.svg|273
+./htdocs/img/icons/archive_white.svg|285
+./htdocs/img/icons/Bill.svg|3185
+./htdocs/img/icons/calendar.svg|954
+./htdocs/img/icons/calendar_white.svg|966
+./htdocs/img/icons/clocktime.svg|1122
+./htdocs/img/icons/clocktime_white.svg|1117
+./htdocs/img/icons/clubs.svg|1033
+./htdocs/img/icons/club.svg|823
+./htdocs/img/icons/clubs_white.svg|1045
+./htdocs/img/icons/club_white.svg|835
+./htdocs/img/icons/code.svg|589
+./htdocs/img/icons/cubelight.svg|1023
+./htdocs/img/icons/cubelight_white.svg|1036
+./htdocs/img/icons/cube.svg|365
+./htdocs/img/icons/cube_white.svg|378
+./htdocs/img/icons/dashboard.svg|1085
+./htdocs/img/icons/dashboard_white.svg|1098
+./htdocs/img/icons/Document_Save.svg|729
+./htdocs/img/icons/download.svg|339
+./htdocs/img/icons/download_white.svg|351
+./htdocs/img/icons/duplicate.svg|430
+./htdocs/img/icons/duplicate_white.svg|442
+./htdocs/img/icons/edit.svg|712
+./htdocs/img/icons/edit_white.svg|725
+./htdocs/img/icons/file/dir.png|6937
+./htdocs/img/icons/file/doc.png|6455
+./htdocs/img/icons/file/docx.png|6455
+./htdocs/img/icons/file/file.png|4540
+./htdocs/img/icons/file/jpg.png|6297
+./htdocs/img/icons/file/pdf.png|8783
+./htdocs/img/icons/file/png.png|6297
+./htdocs/img/icons/file.svg|272
+./htdocs/img/icons/file/txt.png|6049
+./htdocs/img/icons/file_white.svg|284
+./htdocs/img/icons/file/xls.png|6065
+./htdocs/img/icons/file/xlsx.png|6065
+./htdocs/img/icons/folder.svg|404
+./htdocs/img/icons/folder_white.svg|417
+./htdocs/img/icons/globe.svg|1242
+./htdocs/img/icons/globe_white.svg|1254
+./htdocs/img/icons/group.svg|1994
+./htdocs/img/icons/group_white.svg|2006
+./htdocs/img/icons/history.svg|1284
+./htdocs/img/icons/history_white.svg|1296
+./htdocs/img/icons/inbox.svg|413
+./htdocs/img/icons/inbox_white.svg|425
+./htdocs/img/icons/library.svg|968
+./htdocs/img/icons/library_white.svg|980
+./htdocs/img/icons/license.svg|478
+./htdocs/img/icons/license_white.svg|490
+./htdocs/img/icons/list.svg|640
+./htdocs/img/icons/list_white.svg|652
+./htdocs/img/icons/logout.svg|402
+./htdocs/img/icons/logout_white.svg|414
+./htdocs/img/icons/menu.svg|336
+./htdocs/img/icons/menu_white.svg|348
+./htdocs/img/icons/newspaper.svg|812
+./htdocs/img/icons/newspaper_white.svg|824
+./htdocs/img/icons/numberlist.svg|908
+./htdocs/img/icons/numberlist_white.svg|920
+./htdocs/img/icons/package.svg|408
+./htdocs/img/icons/package_white.svg|420
+./htdocs/img/icons/pictures.svg|1420
+./htdocs/img/icons/pictures_white.svg|1436
+./htdocs/img/icons/plus.svg|535
+./htdocs/img/icons/plus_white.svg|547
+./htdocs/img/icons/remove.svg|816
+./htdocs/img/icons/remove_white.svg|828
+./htdocs/img/icons/Save.svg|477
+./htdocs/img/icons/squares.svg|502
+./htdocs/img/icons/squares_white.svg|514
+./htdocs/img/icons/target.svg|780
+./htdocs/img/icons/target_white.svg|792
+./htdocs/img/icons/user.svg|780
+./htdocs/img/icons/user_white.svg|792
+./htdocs/js/admin_ht.js|12992
+./htdocs/js/admin.js|3246
+./htdocs/js/fieldsave.js|1445
+./htdocs/js/formsave.js|6063
+./htdocs/js/moduleglobal.js|839
+./htdocs/js/request.js|5300
+./htdocs/js/sysconfig.js|5904
+./htdocs/vendor/choices/base.css|2314
+./htdocs/vendor/choices/base.min.css|1604
+./htdocs/vendor/choices/choices.css|8095
+./htdocs/vendor/choices/choices.js|217424
+./htdocs/vendor/choices/choices.min.css|6735
+./htdocs/vendor/choices/choices.min.js|91604
+./htdocs/vendor/choices/scripts/choices.js|217424
+./htdocs/vendor/choices/scripts/choices.min.js|91604
+./htdocs/vendor/flatpickr/flatpickr.css|18831
+./htdocs/vendor/flatpickr/flatpickr.js|118042
+./htdocs/vendor/flatpickr/flatpickr.min.css|15954
+./htdocs/vendor/flatpickr/flatpickr.min.js|48368
+./htdocs/vendor/flatpickr/ie.css|260
+./htdocs/vendor/flatpickr/index.d.ts|138
+./htdocs/vendor/flatpickr/l10n/de.d.ts|2272
+./htdocs/vendor/flatpickr/l10n/default.d.ts|104
+./htdocs/vendor/flatpickr/l10n/default.js|2150
+./htdocs/vendor/flatpickr/l10n/de.js|1757
+./htdocs/vendor/flatpickr/l10n/fr.d.ts|2272
+./htdocs/vendor/flatpickr/l10n/fr.js|1893
+./htdocs/vendor/flatpickr/l10n/lu.d.ts|2314
+./htdocs/vendor/flatpickr/l10n/lu.js|1802
+./htdocs/vendor/flatpickr/plugins/confirmDate/confirmDate.css|373
+./htdocs/vendor/flatpickr/plugins/confirmDate/confirmDate.d.ts|272
+./htdocs/vendor/flatpickr/plugins/confirmDate/confirmDate.js|4236
+./htdocs/vendor/flatpickr/plugins/labelPlugin/labelPlugin.d.ts|114
+./htdocs/vendor/flatpickr/plugins/labelPlugin/labelPlugin.js|964
+./htdocs/vendor/flatpickr/plugins/minMaxTimePlugin.d.ts|491
+./htdocs/vendor/flatpickr/plugins/minMaxTimePlugin.js|12399
+./htdocs/vendor/flatpickr/plugins/monthSelect/index.d.ts|367
+./htdocs/vendor/flatpickr/plugins/monthSelect/index.js|7757
+./htdocs/vendor/flatpickr/plugins/monthSelect/style.css|1561
+./htdocs/vendor/flatpickr/plugins/monthSelect/tests.spec.d.ts|11
+./htdocs/vendor/flatpickr/plugins/rangePlugin.d.ts|312
+./htdocs/vendor/flatpickr/plugins/rangePlugin.js|6475
+./htdocs/vendor/flatpickr/plugins/scrollPlugin.d.ts|113
+./htdocs/vendor/flatpickr/plugins/scrollPlugin.js|2026
+./htdocs/vendor/flatpickr/plugins/weekSelect/weekSelect.d.ts|218
+./htdocs/vendor/flatpickr/plugins/weekSelect/weekSelect.js|3500
+./htdocs/vendor/flatpickr/themes/airbnb.css|21148
+./htdocs/vendor/flatpickr/themes/confetti.css|19048
+./htdocs/vendor/flatpickr/themes/dark.css|18875
+./htdocs/vendor/flatpickr/themes/light.css|18996
+./htdocs/vendor/flatpickr/themes/material_blue.css|19048
+./htdocs/vendor/flatpickr/themes/material_green.css|19048
+./htdocs/vendor/flatpickr/themes/material_orange.css|19048
+./htdocs/vendor/flatpickr/themes/material_red.css|19048
+./htdocs/vendor/flatpickr/types/globals.d.ts|546
+./htdocs/vendor/flatpickr/types/instance.d.ts|4386
+./htdocs/vendor/flatpickr/types/locale.d.ts|2263
+./htdocs/vendor/flatpickr/types/options.d.ts|4564
+./htdocs/vendor/flatpickr/typings.d.ts|1001
+./htdocs/vendor/flatpickr/utils/dates.d.ts|922
+./htdocs/vendor/flatpickr/utils/dom.d.ts|585
+./htdocs/vendor/flatpickr/utils/formatting.d.ts|834
+./htdocs/vendor/flatpickr/utils/index.d.ts|393
+./htdocs/vendor/flatpickr/utils/polyfills.d.ts|0
+./htdocs/vendor/jspdf/jspdf.min.js|307591
+./htdocs/vendor/jspdf/jspdf.plugin.autotable.js|71296
+./htdocs/vendor/jspdf/jspdf.plugin.autotable.min.js|30274
+./htdocs/vendor/jsxlsx/cpexcel.js|471033
+./htdocs/vendor/jsxlsx/jszip.js|288108
+./htdocs/vendor/jsxlsx/LICENSE|11356
+./htdocs/vendor/jsxlsx/shim.min.js|5651
+./htdocs/vendor/jsxlsx/xlsx.core.min.js|477227
+./htdocs/vendor/jsxlsx/xlsx.core.min.map|717898
+./htdocs/vendor/jsxlsx/xlsx.extendscript.js|992249
+./htdocs/vendor/jsxlsx/xlsx.full.min.js|921331
+./htdocs/vendor/jsxlsx/xlsx.full.min.map|841224
+./htdocs/vendor/jsxlsx/xlsx.js|696439
+./htdocs/vendor/jsxlsx/xlsx.min.js|397226
+./htdocs/vendor/jsxlsx/xlsx.min.map|586186
+./htdocs/vendor/moment/moment.min.js|51746
+./htdocs/vendor/moment/moment-with-locales.min.js|330190
+./htdocs/vendor/tabulator/css/bootstrap/tabulator_bootstrap4.css|25548
+./htdocs/vendor/tabulator/css/bootstrap/tabulator_bootstrap4.min.css|22258
+./htdocs/vendor/tabulator/css/bootstrap/tabulator_bootstrap4.min.css.map|34724
+./htdocs/vendor/tabulator/css/bootstrap/tabulator_bootstrap.css|19703
+./htdocs/vendor/tabulator/css/bootstrap/tabulator_bootstrap.min.css|17088
+./htdocs/vendor/tabulator/css/bootstrap/tabulator_bootstrap.min.css.map|27442
+./htdocs/vendor/tabulator/css/bulma/tabulator_bulma.css|19945
+./htdocs/vendor/tabulator/css/bulma/tabulator_bulma.min.css|17240
+./htdocs/vendor/tabulator/css/bulma/tabulator_bulma.min.css.map|27793
+./htdocs/vendor/tabulator/css/semantic-ui/tabulator_semantic-ui.css|31861
+./htdocs/vendor/tabulator/css/semantic-ui/tabulator_semantic-ui.min.css|23042
+./htdocs/vendor/tabulator/css/semantic-ui/tabulator_semantic-ui.min.css.map|42076
+./htdocs/vendor/tabulator/css/tabulator.css|18678
+./htdocs/vendor/tabulator/css/tabulator_midnight.css|18806
+./htdocs/vendor/tabulator/css/tabulator_midnight.min.css|16278
+./htdocs/vendor/tabulator/css/tabulator_midnight.min.css.map|30296
+./htdocs/vendor/tabulator/css/tabulator.min.css|16153
+./htdocs/vendor/tabulator/css/tabulator.min.css.map|30054
+./htdocs/vendor/tabulator/css/tabulator_modern.css|19468
+./htdocs/vendor/tabulator/css/tabulator_modern.min.css|16838
+./htdocs/vendor/tabulator/css/tabulator_modern.min.css.map|31647
+./htdocs/vendor/tabulator/css/tabulator_simple.css|18618
+./htdocs/vendor/tabulator/css/tabulator_simple.min.css|16106
+./htdocs/vendor/tabulator/css/tabulator_simple.min.css.map|30033
+./htdocs/vendor/tabulator/css/tabulator_site.css|18507
+./htdocs/vendor/tabulator/css/tabulator_site.min.css|16002
+./htdocs/vendor/tabulator/css/tabulator_site.min.css.map|30389
+./htdocs/vendor/tabulator/js/jquery_wrapper.js|1421
+./htdocs/vendor/tabulator/js/jquery_wrapper.min.js|699
+./htdocs/vendor/tabulator/js/modules/accessor.js|2558
+./htdocs/vendor/tabulator/js/modules/accessor.min.js|1455
+./htdocs/vendor/tabulator/js/modules/ajax.js|11994
+./htdocs/vendor/tabulator/js/modules/ajax.min.js|8042
+./htdocs/vendor/tabulator/js/modules/calculation_colums.js|11664
+./htdocs/vendor/tabulator/js/modules/calculation_colums.min.js|7402
+./htdocs/vendor/tabulator/js/modules/clipboard.js|25291
+./htdocs/vendor/tabulator/js/modules/clipboard.min.js|14993
+./htdocs/vendor/tabulator/js/modules/data_tree.js|8748
+./htdocs/vendor/tabulator/js/modules/data_tree.min.js|5983
+./htdocs/vendor/tabulator/js/modules/download.js|20203
+./htdocs/vendor/tabulator/js/modules/download.min.js|9822
+./htdocs/vendor/tabulator/js/modules/edit.js|43160
+./htdocs/vendor/tabulator/js/modules/edit.min.js|22312
+./htdocs/vendor/tabulator/js/modules/filter.js|20848
+./htdocs/vendor/tabulator/js/modules/filter.min.js|11513
+./htdocs/vendor/tabulator/js/modules/format.js|21000
+./htdocs/vendor/tabulator/js/modules/format.min.js|12537
+./htdocs/vendor/tabulator/js/modules/frozen_columns.js|6116
+./htdocs/vendor/tabulator/js/modules/frozen_columns.min.js|3946
+./htdocs/vendor/tabulator/js/modules/frozen_rows.js|2249
+./htdocs/vendor/tabulator/js/modules/frozen_rows.min.js|1645
+./htdocs/vendor/tabulator/js/modules/group_rows.js|25932
+./htdocs/vendor/tabulator/js/modules/group_rows.min.js|17645
+./htdocs/vendor/tabulator/js/modules/history.js|3203
+./htdocs/vendor/tabulator/js/modules/history.min.js|2270
+./htdocs/vendor/tabulator/js/modules/html_table_export.js|10649
+./htdocs/vendor/tabulator/js/modules/html_table_export.min.js|6930
+./htdocs/vendor/tabulator/js/modules/html_table_import.js|5208
+./htdocs/vendor/tabulator/js/modules/html_table_import.min.js|2721
+./htdocs/vendor/tabulator/js/modules/keybindings.js|8003
+./htdocs/vendor/tabulator/js/modules/keybindings.min.js|5002
+./htdocs/vendor/tabulator/js/modules/moveable_columns.js|8666
+./htdocs/vendor/tabulator/js/modules/moveable_columns.min.js|5383
+./htdocs/vendor/tabulator/js/modules/moveable_rows.js|16514
+./htdocs/vendor/tabulator/js/modules/moveable_rows.min.js|11212
+./htdocs/vendor/tabulator/js/modules/mutator.js|2940
+./htdocs/vendor/tabulator/js/modules/mutator.min.js|1722
+./htdocs/vendor/tabulator/js/modules/page.js|16067
+./htdocs/vendor/tabulator/js/modules/page.min.js|10966
+./htdocs/vendor/tabulator/js/modules/persistence.js|4822
+./htdocs/vendor/tabulator/js/modules/persistence.min.js|2767
+./htdocs/vendor/tabulator/js/modules/print.js|3008
+./htdocs/vendor/tabulator/js/modules/print.min.js|2306
+./htdocs/vendor/tabulator/js/modules/reactive_data.js|5286
+./htdocs/vendor/tabulator/js/modules/reactive_data.min.js|3051
+./htdocs/vendor/tabulator/js/modules/resize_columns.js|5035
+./htdocs/vendor/tabulator/js/modules/resize_columns.min.js|3034
+./htdocs/vendor/tabulator/js/modules/resize_rows.js|2885
+./htdocs/vendor/tabulator/js/modules/resize_rows.min.js|1741
+./htdocs/vendor/tabulator/js/modules/resize_table.js|895
+./htdocs/vendor/tabulator/js/modules/resize_table.min.js|669
+./htdocs/vendor/tabulator/js/modules/responsive_layout.js|6313
+./htdocs/vendor/tabulator/js/modules/responsive_layout.min.js|4016
+./htdocs/vendor/tabulator/js/modules/select_row.js|9355
+./htdocs/vendor/tabulator/js/modules/select_row.min.js|5969
+./htdocs/vendor/tabulator/js/modules/sort.js|13879
+./htdocs/vendor/tabulator/js/modules/sort.min.js|7200
+./htdocs/vendor/tabulator/js/modules/validate.js|5230
+./htdocs/vendor/tabulator/js/modules/validate.min.js|2576
+./htdocs/vendor/tabulator/js/tabulator_core.js|190661
+./htdocs/vendor/tabulator/js/tabulator_core.min.js|117292
+./htdocs/vendor/tabulator/js/tabulator.js|531228
+./htdocs/vendor/tabulator/js/tabulator.min.js|301937
+./htdocs/vendor/tinymce/changelog.txt|92798
+./htdocs/vendor/tinymce/js/tinymce/jquery.tinymce.min.js|3561
+./htdocs/vendor/tinymce/js/tinymce/langs/de.js|10334
+./htdocs/vendor/tinymce/js/tinymce/langs/fr_FR.js|10140
+./htdocs/vendor/tinymce/js/tinymce/langs/readme.md|151
+./htdocs/vendor/tinymce/js/tinymce/license.txt|26945
+./htdocs/vendor/tinymce/js/tinymce/plugins/advlist/plugin.min.js|2226
+./htdocs/vendor/tinymce/js/tinymce/plugins/anchor/plugin.min.js|1426
+./htdocs/vendor/tinymce/js/tinymce/plugins/autolink/plugin.min.js|2127
+./htdocs/vendor/tinymce/js/tinymce/plugins/autoresize/plugin.min.js|2074
+./htdocs/vendor/tinymce/js/tinymce/plugins/autosave/plugin.min.js|3083
+./htdocs/vendor/tinymce/js/tinymce/plugins/bbcode/plugin.min.js|2850
+./htdocs/vendor/tinymce/js/tinymce/plugins/charmap/plugin.min.js|8601
+./htdocs/vendor/tinymce/js/tinymce/plugins/code/plugin.min.js|1024
+./htdocs/vendor/tinymce/js/tinymce/plugins/codesample/css/prism.css|2472
+./htdocs/vendor/tinymce/js/tinymce/plugins/codesample/plugin.min.js|19415
+./htdocs/vendor/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js|1349
+./htdocs/vendor/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js|1824
+./htdocs/vendor/tinymce/js/tinymce/plugins/directionality/plugin.min.js|857
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-cool.gif|354
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-cry.gif|329
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-embarassed.gif|331
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif|342
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-frown.gif|340
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-innocent.gif|336
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-kiss.gif|338
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-laughing.gif|343
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-money-mouth.gif|321
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-sealed.gif|323
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-smile.gif|344
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-surprised.gif|338
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-tongue-out.gif|328
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-undecided.gif|337
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-wink.gif|350
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/img/smiley-yell.gif|336
+./htdocs/vendor/tinymce/js/tinymce/plugins/emoticons/plugin.min.js|1071
+./htdocs/vendor/tinymce/js/tinymce/plugins/fullpage/plugin.min.js|7168
+./htdocs/vendor/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js|2161
+./htdocs/vendor/tinymce/js/tinymce/plugins/help/img/logo.png|13208
+./htdocs/vendor/tinymce/js/tinymce/plugins/help/plugin.min.js|9992
+./htdocs/vendor/tinymce/js/tinymce/plugins/hr/plugin.min.js|428
+./htdocs/vendor/tinymce/js/tinymce/plugins/image/plugin.min.js|18255
+./htdocs/vendor/tinymce/js/tinymce/plugins/imagetools/plugin.min.js|36525
+./htdocs/vendor/tinymce/js/tinymce/plugins/importcss/plugin.min.js|3167
+./htdocs/vendor/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js|2633
+./htdocs/vendor/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js|3402
+./htdocs/vendor/tinymce/js/tinymce/plugins/link/plugin.min.js|8919
+./htdocs/vendor/tinymce/js/tinymce/plugins/lists/plugin.min.js|14256
+./htdocs/vendor/tinymce/js/tinymce/plugins/media/plugin.min.js|15064
+./htdocs/vendor/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js|1012
+./htdocs/vendor/tinymce/js/tinymce/plugins/noneditable/plugin.min.js|1540
+./htdocs/vendor/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js|1436
+./htdocs/vendor/tinymce/js/tinymce/plugins/paste/plugin.min.js|21601
+./htdocs/vendor/tinymce/js/tinymce/plugins/preview/plugin.min.js|2044
+./htdocs/vendor/tinymce/js/tinymce/plugins/print/plugin.min.js|366
+./htdocs/vendor/tinymce/js/tinymce/plugins/save/plugin.min.js|1426
+./htdocs/vendor/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js|7358
+./htdocs/vendor/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js|10184
+./htdocs/vendor/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js|1631
+./htdocs/vendor/tinymce/js/tinymce/plugins/table/plugin.min.js|135387
+./htdocs/vendor/tinymce/js/tinymce/plugins/template/plugin.min.js|5414
+./htdocs/vendor/tinymce/js/tinymce/plugins/textcolor/plugin.min.js|4924
+./htdocs/vendor/tinymce/js/tinymce/plugins/textpattern/plugin.min.js|4412
+./htdocs/vendor/tinymce/js/tinymce/plugins/toc/plugin.min.js|2941
+./htdocs/vendor/tinymce/js/tinymce/plugins/visualblocks/css/visualblocks.css|5627
+./htdocs/vendor/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js|1691
+./htdocs/vendor/tinymce/js/tinymce/plugins/visualchars/plugin.min.js|6294
+./htdocs/vendor/tinymce/js/tinymce/plugins/wordcount/plugin.min.js|10937
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/content.inline.min.css|3375
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/content.min.css|3781
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/content.mobile.min.css|234
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.eot|18808
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-mobile.woff|4624
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.eot|9492
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.svg|24789
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf|9304
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.woff|9380
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.svg|46119
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.ttf|18644
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.woff|18720
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/img/anchor.gif|53
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/img/loader.gif|2608
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/img/object.gif|152
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/img/trans.gif|43
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/skin.min.css|43950
+./htdocs/vendor/tinymce/js/tinymce/skins/lightgray/skin.mobile.min.css|28006
+./htdocs/vendor/tinymce/js/tinymce/themes/inlite/theme.min.js|137124
+./htdocs/vendor/tinymce/js/tinymce/themes/mobile/theme.min.js|174158
+./htdocs/vendor/tinymce/js/tinymce/themes/modern/theme.min.js|135904
+./htdocs/vendor/tinymce/js/tinymce/tinymce.min.js|350402
+./htdocs/vendor/tinymce/LICENSE.TXT|26945
+./tools/fingerdelete.py|1219
+./tools/fingerenroll.py|2747
+./tools/fingerindex.py|1176
+./tools/fingerledoff.py|583
+./tools/fingerledon.py|582
+./tools/fingersearch.py|1962
+./tools/pyfingerprint2/__init__.py|175
+./tools/pyfingerprint2/__init__.pyc|297
+./tools/pyfingerprint2/pyfingerprint.orig.py|44719
+./tools/pyfingerprint2/pyfingerprint.py|45813
+./tools/pyfingerprint2/pyfingerprint.pyc|31042
--- /dev/null
+#!/bin/bash
+ACTION=$1
+REMOTEFOLDER="/home/dks/bin/hourtrax"
+SSHUSER="dks"
+SSHPORT="22"
+SSHHOST="hourtrax"
+SYNCOS=`uname`
+CALLDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+cd "../bin/hourtrax"
+echo "SYSTEM: "${SYNCOS}
+if [ "${SYNCOS}" == "Darwin" ]
+then
+ find . -type f -exec stat -f "%N|%z" {} \; | grep -v ".DS_Store" > ../../dev/sourcefiles.local.txt
+else
+ find . -type f -printf "%p|%s\n" | sort > ../../dev/sourcefiles.local.txt
+fi
+ssh -p ${SSHPORT} ${SSHUSER}@${SSHHOST} 'cd '${REMOTEFOLDER}' && find . -type f -printf "%p|%s\n" | sort' > ../../dev/sourcefiles.remote.txt
+
+CDATE=`date +"%F"`
+echo "To update:"
+UPDFILES=`diff -y -W 200 ${CALLDIR}/sourcefiles.local.txt ${CALLDIR}/sourcefiles.remote.txt | grep " |" | awk '{ print $1 }' | cut -d"|" -f 1 | grep -v ".htaccess" | grep -v ".git" | grep -v "/data/" | grep -v "/media/"`
+echo ${UPDFILES}
+echo ""
+echo "new files:"
+INSFILES=`diff -y -W 200 ${CALLDIR}/sourcefiles.local.txt ${CALLDIR}/sourcefiles.remote.txt | grep " <" | awk '{ print $1 }' | cut -d"|" -f 1 | grep -v ".htaccess" | grep -v ".git" | grep -v "/data/" | grep -v "/media/"`
+echo ${INSFILES}
+echo ""
+echo "only online or OLD files:"
+diff -y -W 200 ${CALLDIR}/sourcefiles.remote.txt ${CALLDIR}/sourcefiles.local.txt | grep " <" | awk '{ print $1 }'
+echo ""
+echo "----------------------------"
+echo ""
+#cd ${CALLDIR}
+
+# cd ..
+if [ -e ${CALLDIR}/update_${CDATE}.tar.gz ]
+then
+ rm ${CALLDIR}/update_${CDATE}.tar.gz
+fi
+# if [ -e ${CALLDIR}/download_${CDATE}.tar.gz ]
+# then
+# rm ${CALLDIR}/download_${CDATE}.tar.gz
+# fi
+if [ "${UPDFILES}" != "" ] || [ "${INSFILES}" != "" ]
+then
+ echo "TAR package:"
+ tar czvf ${CALLDIR}/update_${CDATE}.tar.gz ${UPDFILES} ${INSFILES}
+ #tar tzvf ${CALLDIR}/update_${CDATE}.tar.gz
+fi
+if [ "${ACTION}" == "upload" ]
+then
+ echo "upload/Install files"
+ if [ -e ${CALLDIR}/update_${CDATE}.tar.gz ]
+ then
+ scp -P ${SSHPORT} ${CALLDIR}/update_${CDATE}.tar.gz ${SSHUSER}@${SSHHOST}:${REMOTEFOLDER}
+ ssh -p ${SSHPORT} ${SSHUSER}@${SSHHOST} 'cd '${REMOTEFOLDER}' && tar xzvf update_'${CDATE}'.tar.gz && rm update_'${CDATE}'.tar.gz'
+ else
+ echo "NO Files to Install/upload!"
+ fi
+fi
+if [ -e ${CALLDIR}/update_${CDATE}.tar.gz ]
+then
+ rm ${CALLDIR}/update_${CDATE}.tar.gz
+fi
+
+# if [ "${ACTION}" == "remoteclean" ]
+# then
+# echo "clean remote files"
+# # if [ -e ${CALLDIR}/update_${CDATE}.tar.gz ]
+# # then
+# # scp -P ${SSHPORT} ${CALLDIR}/update_${CDATE}.tar.gz ${SSHUSER}@${SSHHOST}:${REMOTEFOLDER}
+# # ssh -p ${SSHPORT} ${SSHUSER}@${SSHHOST} 'cd '${REMOTEFOLDER}' && tar xzvf update_'${CDATE}'.tar.gz && rm update_'${CDATE}'.tar.gz'
+# # else
+# # echo "NO Files to Install/upload!"
+# # fi
+# fi
+
+
+# if [ "${ACTION}" == "download" ]
+# then
+# echo "download files"
+# # if [ -e ${CALLDIR}/update_${CDATE}.tar.gz ]
+# # then
+# # scp -P ${SSHPORT} ${CALLDIR}/update_${CDATE}.tar.gz ${SSHUSER}@${SSHHOST}:${REMOTEFOLDER}
+# # ssh -p ${SSHPORT} ${SSHUSER}@${SSHHOST} 'cd '${REMOTEFOLDER}' && tar xzvf update_'${CDATE}'.tar.gz && rm update_'${CDATE}'.tar.gz'
+# # else
+# # echo "NO Files to Install/upload!"
+# # fi
+# fi
+# if [ -e ${CALLDIR}/update_${CDATE}.tar.gz ]
+# then
+# rm ${CALLDIR}/update_${CDATE}.tar.gz
+# fi
--- /dev/null
+#fpsensor {
+ margin-left: 750px;
+ width: 60px;
+ height: 80px;
+ border: 5px solid black;
+ border-bottom: 20px solid black;
+}
+
+#demoframe {
+ margin-top: 0px;
+ width: 800px;
+ height: 470px;
+ border: 50px solid black;
+ overflow: hidden;
+ border-radius: 20px;
+}
\ No newline at end of file
--- /dev/null
+/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */
+html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
+/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
+html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
+article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item}
+audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
+audio:not([controls]){display:none;height:0}[hidden],template{display:none}
+a{background-color:transparent}a:active,a:hover{outline-width:0}
+abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}
+b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000}
+small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}
+code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
+button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold}
+button,input{overflow:visible}button,select{text-transform:none}
+button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}
+button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}
+button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}
+fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
+legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
+[type=checkbox],[type=radio]{padding:0}
+[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
+[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
+[type=search]::-webkit-search-decoration{-webkit-appearance:none}
+::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
+/* End extract */
+html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden}
+h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif}
+h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin: 0}.w3-wide{letter-spacing:4px}
+hr{border:0;border-top:1px solid #eee;margin:20px 0}
+.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit}
+.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc}
+.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1}
+.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1}
+.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center}
+.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
+.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px}
+.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap}
+.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
+.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
+.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none}
+.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none}
+.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%}
+.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none}
+.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block}
+.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s}
+.w3-input{padding:8px;display:block;border:1px solid #ccc;width:100%;background-color: #e8f0fe; }
+.w3-select{padding:9px 0; display:block;width:100%;border:1px solid #ccc;background-color: #e8f0fe;}
+.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer}
+.w3-dropdown-hover:hover .w3-dropdown-content{display:block; }
+.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000}
+.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000}
+.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
+.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px}
+.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
+.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%}
+.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%}
+.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px}
+.w3-main,#main{transition:margin-left .4s}
+.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
+.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
+.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto}
+.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0}
+.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left}
+.w3-bar .w3-button{white-space:normal}
+.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0}
+.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%}
+.w3-responsive{display:block;overflow-x:auto}
+.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,
+.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both}
+.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%}
+.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%}
+.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%}
+.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%}
+@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%}
+.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%}
+.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}}
+@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%}
+.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%}
+.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}}
+.w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px}
+.w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px}
+.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell}
+.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom}
+.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important}
+@media (max-width:1205px){.w3-auto{max-width:95%}}
+@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px}
+.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative}
+.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center}
+.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}}
+@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}}
+@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}}
+@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}}
+@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}}
+.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0}
+.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
+.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0}
+.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0}
+.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
+.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
+.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
+.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none}
+.w3-display-position{position:absolute}
+.w3-circle{border-radius:50%}
+.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px}
+.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px}
+.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px}
+.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px}
+.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
+.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
+.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16)}
+.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
+.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
+.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
+.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
+.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
+.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
+.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
+.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
+.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
+.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important}
+.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1}
+.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75}
+.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)}
+.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)}
+.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)}
+.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important}
+.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important}
+.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important}
+.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important}
+.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important}
+.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important}
+.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important}
+.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important}
+.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important}
+.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important}
+.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important}
+.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important}
+.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important}
+.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important}
+.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important}
+.w3-left{float:left!important}.w3-right{float:right!important}
+.w3-button:hover{color:#000!important;background-color:#ccc!important}
+.w3-transparent,.w3-hover-none:hover{background-color:transparent!important}
+.w3-hover-none:hover{box-shadow:none!important}
+/* DEFAULT COLORS */
+.w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important}
+.w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important}
+.w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#2196F3!important}
+.w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important}
+.w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important}
+.w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important}
+.w3-blue-grey,.w3-hover-blue-grey:hover{color:#fff!important;background-color:#607d8b!important}
+.w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important}
+.w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important}
+.w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important}
+.w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important}
+.w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important}
+.w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important}
+.w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important}
+.w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important}
+.w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important}
+.w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important}
+.w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important}
+.w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important}
+.w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important}
+.w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important}
+.w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important}
+.w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important}
+.w3-grey,.w3-hover-grey:hover{color:#000!important;background-color:#9e9e9e!important}
+.w3-light-grey,.w3-hover-light-grey:hover{color:#000!important;background-color:#f1f1f1!important}
+.w3-dark-grey,.w3-hover-dark-grey:hover{color:#fff!important;background-color:#616161!important}
+.w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffe7e7!important}.w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#e7ffe7!important}
+.w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffd7!important}.w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#e7ffff!important}
+.w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important}
+.w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important}
+.w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important}
+.w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important}
+.w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important}
+.w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important}
+.w3-text-blue-grey,.w3-hover-text-blue-grey:hover{color:#607d8b!important}
+.w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important}
+.w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important}
+.w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important}
+.w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important}
+.w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important}
+.w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important}
+.w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important}
+.w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important}
+.w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important}
+.w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important}
+.w3-text-red,.w3-hover-text-red:hover{color:#f44336!important}
+.w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important}
+.w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important}
+.w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important}
+.w3-text-white,.w3-hover-text-white:hover{color:#fff!important}
+.w3-text-black,.w3-hover-text-black:hover{color:#000!important}
+.w3-text-grey,.w3-hover-text-grey:hover{color:#757575!important}
+.w3-text-light-grey,.w3-hover-text-light-grey:hover{color:#f1f1f1!important}
+.w3-text-dark-grey,.w3-hover-text-dark-grey:hover{color:#3a3a3a!important}
+.w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important}
+.w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important}
+.w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important}
+.w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important}
+.w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important}
+.w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important}
+.w3-border-blue-grey,.w3-hover-blue-grey:hover{border-color:#607d8b!important}
+.w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important}
+.w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important}
+.w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important}
+.w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important}
+.w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important}
+.w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important}
+.w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important}
+.w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important}
+.w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important}
+.w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important}
+.w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important}
+.w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important}
+.w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important}
+.w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important}
+.w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important}
+.w3-border-black,.w3-hover-border-black:hover{border-color:#000!important}
+.w3-border-grey,.w3-hover-border-grey:hover{border-color:#9e9e9e!important}
+.w3-border-light-grey,.w3-hover-border-light-grey:hover{border-color:#f1f1f1!important}
+.w3-border-dark-grey,.w3-hover-border-dark-grey:hover{border-color:#616161!important}
+.w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important}
+.w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffd7!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important}
+/* DEFAULT THEME */
+.w3-theme-l5 {color:#000 !important; background-color:#f6f8fc !important}
+.w3-theme-l4 {color:#000 !important; background-color:#e1e9f6 !important}
+.w3-theme-l3 {color:#000 !important; background-color:#c3d3ed !important}
+.w3-theme-l2 {color:#000 !important; background-color:#a5bee4 !important}
+.w3-theme-l1 {color:#fff !important; background-color:#88a8db !important}
+.w3-theme-d1 {color:#fff !important; background-color:#5180cb !important}
+.w3-theme-d2 {color:#fff !important; background-color:#3a6fc3 !important}
+.w3-theme-d3 {color:#fff !important; background-color:#3361aa !important}
+.w3-theme-d4 {color:#fff !important; background-color:#2c5392 !important}
+.w3-theme-d5 {color:#fff !important; background-color:#24457a !important}
+
+.w3-theme-light {color:#000 !important; background-color:#f6f8fc !important}
+.w3-theme-dark {color:#fff !important; background-color:#24457a !important}
+.w3-theme-action {color:#fff !important; background-color:#24457a !important}
+
+.w3-theme {color:#fff !important; background-color:#6a92d3 !important}
+.w3-text-theme {color:#6a92d3 !important}
+.w3-border-theme {border-color:#6a92d3 !important}
+
+.w3-hover-theme:hover {color:#fff !important; background-color:#6a92d3 !important}
+.w3-hover-text-theme:hover {color:#6a92d3 !important}
+.w3-hover-border-theme:hover {border-color:#6a92d3 !important}
+
+.w3-label { color: rgb(153, 150, 150);}
+#main {margin-left: 210px;}
+@media (max-width:768px){
+ #sidebar { display: none;}
+ #main { margin-left: 0px;}
+}
+
+.w3-select {
+ display: block;
+ font-size: 16px;
+ font-family: sans-serif;
+ font-weight: normal;
+ color: #444;
+ line-height: 1.3;
+ padding: .6em 1.4em .5em .8em;
+ width: 100%;
+ max-width: 100%;
+ box-sizing: border-box;
+ margin: 0;
+ border-bottom: 1px solid #aaa;
+ box-shadow: 0 1px 0 1px rgba(0,0,0,.04);
+ /* border-radius: .5em; */
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ appearance: none;
+ background-color: #e8f0fe;
+ background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'),
+ linear-gradient(to bottom, #e8f0fe 0%,#e8f0fe 100%);
+ background-repeat: no-repeat, repeat;
+ background-position: right .7em top 50%, 0 0;
+ background-size: .65em auto, 100%;
+}
+.w3-select::-ms-expand {
+ display: none;
+}
+.w3-select:hover {
+ border-color: #888;
+}
+.w3-select:focus {
+ border-color: #aaa;
+ box-shadow: 0 0 1px 1px #6a92d3;
+ box-shadow: 0 0 0 1px -moz-mac-focusring;
+ color: #222;
+ outline: none;
+}
+
+
+.w3-select option {
+ font-weight:normal;
+}
+
+.w3-table {
+ table-layout: fixed;
+}
+
+.w3-text-line-through { text-decoration: line-through; }
+
+#snackbar {
+ visibility: hidden;
+ min-width: 250px;
+ margin-left: -125px;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+ padding: 16px;
+ position: fixed;
+ z-index: 1;
+ left: 50%;
+ bottom: 30px;
+ font-size: 17px;
+}
+
+#snackbar.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, fadeout 0.5s 2.5s;
+}
+
+@-webkit-keyframes fadein {
+ from {bottom: 0; opacity: 0;}
+ to {bottom: 30px; opacity: 1;}
+}
+
+@keyframes fadein {
+ from {bottom: 0; opacity: 0;}
+ to {bottom: 30px; opacity: 1;}
+}
+
+@-webkit-keyframes fadeout {
+ from {bottom: 30px; opacity: 1;}
+ to {bottom: 0; opacity: 0;}
+}
+
+@keyframes fadeout {
+ from {bottom: 30px; opacity: 1;}
+ to {bottom: 0; opacity: 0;}
+}
+
+.tabulator-header-filter > input {
+ background-color: #e8f0fe;
+ border: 1px solid #ccc;
+ font-weight: normal;
+}
+
+.w3-readonly {
+ pointer-events:none;
+ padding:8px;display:block;border:0px;width:100%;background-color: #fff;
+}
+
+.right-side-bg {
+ background: url("../img/bg1.jpg");
+ background-size: cover;
+ min-height: 100vh;
+}
+
+/* .mceContentBody {
+ background: #e8f0fe;
+ color:#000;
+} */
+
+/* .tabulator-row-even {
+ background-color: #757575;
+} */
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
+ <meta http-equiv="Pragma" content="no-cache" />
+ <meta http-equiv="Expires" content="0" />
+ <title>Hourtrax Online Demo</title>
+ <link rel="stylesheet" href="css/w3pro.css">
+ <link rel="stylesheet" href="css/demo.css">
+</head>
+<body>
+ <div class="w3-sidebar w3-card-4 w3-border-right w3-theme-light " id="sidebar" style="width: 200px; z-index: 3;overflow: hidden;">
+ <div class="w3-bar w3-blue-grey w3-center" style="text-transform: uppercase;">
+ <a href="index.html" >
+ <img src="img/hourtrax.png" style="width: 100px; "></a>
+ </div>
+ <div class="w3-bar-block" >
+ <!-- <button class="w3-bar-item w3-button w3-border w3-margin-top w3-light-grey w3-padding-large" id="sidebtn_pnlusers" onclick="loadpanel('users');" style="display: none; ">Autre Utilisateur</button> -->
+ <!-- <button class="w3-bar-item w3-button w3-border w3-margin-top w3-light-grey w3-padding-large" id="sidebtn_pnlchangepin" onclick="loadpanel('newpassword');" style="display: none;">Changer PIN</button> -->
+ <!-- <button class="w3-bar-item w3-button w3-border w3-margin-top w3-light-grey w3-padding-large" id="sidebtn_pnlpassword" onclick="loadpanel('password');" style="display: none;">Pointer</button> -->
+
+ </div>
+
+
+ </div>
+ <div class="display-container w3-center">
+ <h2>Demo (Simulation) Pointeuse Hourtrax</h2>
+ <div id="fpsensor" style="">
+ <button class="w3-button w3-blue" style="width: 50px; height: 60px;">FP</button>
+ </div>
+ <iframe id="demoframe" src="http://www.dks.lu" sandbox="allow-forms allow-pointer-lock allow-same-origin allow-scripts allow-top-navigation allow-modals allow-popups allow-popups-to-escape-sandbox" ></iframe>
+
+ </div>
+</body>
+</html>
\ No newline at end of file