Commit 02642f77 authored by Lorenz Steinert's avatar Lorenz Steinert Committed by Patrick Mischke

Acro file copy

parent d5cc88f5
*.ini
__pycache__
tags
.mypy_cache/
*.fdb_latexmk
*.aux
*.log
*.fls
......@@ -12,94 +12,106 @@ import sys
import shutil
import codecs
import argparse
from module.esme import FsrLdap, get_date, get_sprecher, get_config, get_share, get_path, get_ldap_server, get_ldap_base, get_server_timeout, Error # noqa: E501
from module.esme import (
FsrLdap,
get_date,
get_sprecher,
get_config,
get_share,
get_path,
get_ldap_server,
get_ldap_base,
get_server_timeout,
Error,
) # noqa: E501
def build_parser():
"""definition for the cli-arguments of the skript"""
parser = argparse.ArgumentParser(description="Create Protokoll")
parser.add_argument('-d', '--debug', '-v', '--verbose',
action='store_true', help='enable debug mode')
parser.add_argument('-VV', '--Vollversamlung',
action='store_true', help='gennerate VV Protokoll')
parser.add_argument('-t', '--test',
action='store_true', help='enable test mode')
parser.add_argument('-p', '--path', help='set the protokoll directory')
parser.add_argument('-c', '--config', help='set the config file')
parser.add_argument('-s', '--sharedir', help='set the share directory')
parser.add_argument('-S', '--Server', help='set the ldap Server')
parser.add_argument('-b', '--base', help='set the ldap Server search base')
parser.add_argument(
"-d",
"--debug",
"-v",
"--verbose",
action="store_true",
help="enable debug mode",
)
parser.add_argument(
"-VV",
"--Vollversamlung",
action="store_true",
help="gennerate VV Protokoll",
)
parser.add_argument(
"-t", "--test", action="store_true", help="enable test mode"
)
parser.add_argument("-p", "--path", help="set the protokoll directory")
parser.add_argument("-c", "--config", help="set the config file")
parser.add_argument("-s", "--sharedir", help="set the share directory")
parser.add_argument("-S", "--Server", help="set the ldap Server")
parser.add_argument("-b", "--base", help="set the ldap Server search base")
return parser.parse_args()
def gen_header(share_dir, reg, sprecher, protokollant, date):
"""generate the head of the protokoll"""
"""generate the header of the protokoll"""
# look for the name.tex and if not found ignore it
if os.path.isfile(os.path.join(share_dir, 'name.tex')):
with codecs.open(os.path.join(share_dir, 'name.tex'),
'r', 'utf-8') as fobj_name:
if os.path.isfile(os.path.join(share_dir, "name.tex")):
with codecs.open(
os.path.join(share_dir, "name.tex"), "r", "utf-8"
) as fobj_name:
f_name = fobj_name.read()
else:
print(os.path.abspath(os.path.join(share_dir, 'name.tex'))
+ " not found. Ignoring")
print(
os.path.abspath(os.path.join(share_dir, "name.tex"))
+ " not found. Ignoring"
)
f_name = ""
# look for the acroname.tex and the acro.tex if one is not found
# ignore both
if (os.path.isfile(os.path.join(share_dir, 'acroname.tex'))
and os.path.isfile(os.path.join(share_dir, 'acro.tex'))):
with codecs.open(os.path.join(share_dir, 'acroname.tex'),
'r', 'utf-8') as fobj_acroname:
f_acroname = fobj_acroname.read()
with codecs.open(os.path.join(share_dir, 'acro.tex'),
'r', 'utf-8') as fobj_acro:
f_acro = fobj_acro.read()
else:
print(os.path.abspath(os.path.join(share_dir, 'acroname.tex'))
+ " or "
+ os.path.abspath(os.path.join(share_dir, 'acro.tex'))
+ " not found. Ignoring")
f_acroname = ""
f_acro = ""
# look for teh head.tex and abort if it is not found
if os.path.isfile(os.path.join(share_dir, 'head.tex')):
with codecs.open(os.path.join(share_dir, 'head.tex'),
'r', 'utf-8') as fobj_head:
if os.path.isfile(os.path.join(share_dir, "head.tex")):
with codecs.open(
os.path.join(share_dir, "head.tex"), "r", "utf-8"
) as fobj_head:
f_head = fobj_head.read()
else:
print(os.path.abspath(os.path.join(share_dir, 'head.tex'))
+ " not found. Aborting!")
print(
os.path.abspath(os.path.join(share_dir, "head.tex"))
+ " not found. Aborting!"
)
sys.exit(1)
# Replace the paceholder strings with the files
f_head = reg['FSRN'].sub(f_name, f_head)
f_head = reg['ACRON'].sub(f_acroname, f_head)
f_head = reg['ACRO'].sub(f_acro, f_head)
f_head = reg['SPR'].sub(sprecher, f_head)
f_head = reg['PRO'].sub(protokollant, f_head)
f_head = reg['DATE'].sub(date[0], f_head)
f_head = reg["FSRN"].sub(f_name, f_head)
f_head = reg["SPR"].sub(sprecher, f_head)
f_head = reg["PRO"].sub(protokollant, f_head)
f_head = reg["DATE"].sub(date[0], f_head)
return f_head
def gen_attendance_tab(fsr, num_cols=5, ext=False, default=''):
def gen_attendance_tab(fsr, num_cols=5, ext=False, default=""):
"""generate the atandance tables"""
tabdef = '||' + 'c|l||' * num_cols
tabdef = "||" + "c|l||" * num_cols
fsr_tab = ''
fsr_tab = ""
if ext:
fsr_tab += "Externe Referenten\\\\\n\\\\\n" \
+ r"\scriptsize{\begin{tabular}{" \
+ tabdef + "}\n\\hline\n"
fsr_tab += (
"Externe Referenten\\\\\n\\\\\n"
+ r"\scriptsize{\begin{tabular}{"
+ tabdef
+ "}\n\\hline\n"
)
else:
fsr_tab += "FSR-Mitglieder\\\\\n\\\\\n\\scriptsize{\\begin{tabular}{" \
+ tabdef + "}\n\\hline\n"
fsr_tab += (
"FSR-Mitglieder\\\\\n\\\\\n\\scriptsize{\\begin{tabular}{"
+ tabdef
+ "}\n\\hline\n"
)
for elem, index in zip(fsr, range(len(fsr))):
if index % num_cols == 0:
......@@ -129,28 +141,34 @@ def gen_footer(share_dir, vollversamlung, reg, sprecher, protokollant, date):
# look for the foot*.tex skripts
# if not found abort
if vollversamlung:
if os.path.isfile(os.path.join(share_dir, 'foot_VV.tex')):
with codecs.open(os.path.join(share_dir, 'foot_VV.tex'),
'r', 'utf-8') as fobj_foot:
if os.path.isfile(os.path.join(share_dir, "foot_VV.tex")):
with codecs.open(
os.path.join(share_dir, "foot_VV.tex"), "r", "utf-8"
) as fobj_foot:
f_foot = fobj_foot.read()
else:
print(os.path.abspath(os.path.join(share_dir, 'foot_VV.tex'))
+ " not found. Aborting")
print(
os.path.abspath(os.path.join(share_dir, "foot_VV.tex"))
+ " not found. Aborting"
)
sys.exit(1)
else:
if os.path.isfile(os.path.join(share_dir, 'foot.tex')):
with codecs.open(os.path.join(share_dir, 'foot.tex'),
'r', 'utf-8') as fobj_foot:
if os.path.isfile(os.path.join(share_dir, "foot.tex")):
with codecs.open(
os.path.join(share_dir, "foot.tex"), "r", "utf-8"
) as fobj_foot:
f_foot = fobj_foot.read()
else:
print(os.path.abspath(os.path.join(share_dir, 'foot.tex'))
+ " not found. Aborting")
print(
os.path.abspath(os.path.join(share_dir, "foot.tex"))
+ " not found. Aborting"
)
sys.exit(1)
# replace the placeholder strings in f_foot
f_foot = reg['SPR'].sub(sprecher, f_foot)
f_foot = reg['PRO'].sub(protokollant, f_foot)
f_foot = reg['DATE'].sub(date[0], f_foot)
f_foot = reg["SPR"].sub(sprecher, f_foot)
f_foot = reg["PRO"].sub(protokollant, f_foot)
f_foot = reg["DATE"].sub(date[0], f_foot)
return f_foot
......@@ -178,22 +196,28 @@ if __name__ == "__main__":
LDAP_SERVER_BASE = get_ldap_base(CONFIG, OPT.base)
SERVER_TIMEOUT = get_server_timeout(CONFIG, OPT.test)
REG = {'SPR': re.compile('%%SPRECHER'),
'PRO': re.compile('%%PROTOKOLLANT'),
'DATE': re.compile('%%DATE'),
'ACRO': re.compile('%%ACRO'),
'ACRON': re.compile('%%ACRONAME'),
'FSRN': re.compile('%%FSRNAME')}
REG = {
"SPR": re.compile("%%SPRECHER"),
"PRO": re.compile("%%PROTOKOLLANT"),
"DATE": re.compile("%%DATE"),
"FSRN": re.compile("%%FSRNAME"),
}
if CONFIG:
NUM_COLS = CONFIG['PROTOKOLL'].getint('NUM_COLS')
NUM_COLS_EXT = CONFIG['PROTOKOLL'].getint('NUM_COLS_EXT')
NUM_COLS = CONFIG["PROTOKOLL"].getint("NUM_COLS")
NUM_COLS_EXT = CONFIG["PROTOKOLL"].getint("NUM_COLS_EXT")
else:
NUM_COLS = 5
NUM_COLS_EXT = 5
ESME = FsrLdap(LDAP_SERVER, LDAP_SERVER_BASE, SHARE_DIR, CONFIG, OPT.debug,
SERVER_TIMEOUT)
ESME = FsrLdap(
LDAP_SERVER,
LDAP_SERVER_BASE,
SHARE_DIR,
CONFIG,
OPT.debug,
SERVER_TIMEOUT,
)
print("\n")
print("Wenn der Standardwert (in []) stimmt einfach Enter!\n")
......@@ -210,45 +234,62 @@ if __name__ == "__main__":
# Generate the Path for the Protokoll in depandance of OPT.VV
# and make the directory
if OPT.Vollversamlung:
OUTDIR = os.path.join(get_path(RUNDIR, CONFIG, OPT.path), DATE[1],
"fsr_physik_vollversamlung_"
+ '-'.join(DATE[1:]))
OUTDIR = os.path.join(
get_path(RUNDIR, CONFIG, OPT.path),
DATE[1],
"fsr_physik_vollversamlung_" + "-".join(DATE[1:]),
)
# Generate the path of the .tex files
OUTFILE_HEADER = os.path.join(OUTDIR, "fsr_physik_protokoll_vv_"
+ '-'.join(DATE[1:]) + "_header.tex")
OUTFILE_BODY = os.path.join(OUTDIR, "fsr_physik_protokoll_vv_"
+ '-'.join(DATE[1:]) + ".tex")
OUTFILE_HEADER = os.path.join(
OUTDIR,
"fsr_physik_protokoll_vv_" + "-".join(DATE[1:]) + "_header.tex",
)
OUTFILE_BODY = os.path.join(
OUTDIR, "fsr_physik_protokoll_vv_" + "-".join(DATE[1:]) + ".tex"
)
else:
OUTDIR = os.path.join(get_path(RUNDIR, CONFIG, OPT.path), DATE[1],
"fsr_physik_sitzung_" + '-'.join(DATE[1:]))
OUTDIR = os.path.join(
get_path(RUNDIR, CONFIG, OPT.path),
DATE[1],
"fsr_physik_sitzung_" + "-".join(DATE[1:]),
)
# Generate the path of the .tex file
OUTFILE_HEADER = os.path.join(OUTDIR, "fsr_physik_protokoll_"
+ '-'.join(DATE[1:]) + "_header.tex")
OUTFILE_BODY = os.path.join(OUTDIR, "fsr_physik_protokoll_"
+ '-'.join(DATE[1:]) + ".tex")
OUTFILE_HEADER = os.path.join(
OUTDIR,
"fsr_physik_protokoll_" + "-".join(DATE[1:]) + "_header.tex",
)
OUTFILE_BODY = os.path.join(
OUTDIR, "fsr_physik_protokoll_" + "-".join(DATE[1:]) + ".tex"
)
if not os.path.exists(OUTDIR):
os.makedirs(OUTDIR)
shutil.copyfile(os.path.join(SHARE_DIR, "FS-Logo.pdf"),
os.path.join(OUTDIR, "FS-Logo.pdf"))
shutil.copyfile(
os.path.join(SHARE_DIR, "FS-Logo.pdf"),
os.path.join(OUTDIR, "FS-Logo.pdf"),
)
shutil.copyfile(
os.path.join(SHARE_DIR, "acro.tex"), os.path.join(OUTDIR, "acro.tex")
)
header = gen_header(SHARE_DIR, REG, SPRECHER, PROTOKOLLANT, DATE)
body = "\\input{" + os.path.split(OUTFILE_HEADER)[-1] + "}\n"
body += "\\input{acro.tex}\n"
body += "~\\newline\n"
if not OPT.Vollversamlung:
body += gen_attendance_tab(FSR[0], NUM_COLS)
body += gen_attendance_tab(FSR[1], NUM_COLS_EXT,
ext=True, default='-')
body += gen_attendance_tab(FSR[1], NUM_COLS_EXT, ext=True, default="-")
footer = gen_footer(SHARE_DIR, OPT.Vollversamlung, REG,
SPRECHER, PROTOKOLLANT, DATE)
footer = gen_footer(
SHARE_DIR, OPT.Vollversamlung, REG, SPRECHER, PROTOKOLLANT, DATE
)
body += footer
with codecs.open(OUTFILE_HEADER, 'w', 'utf-8') as fobj_out:
with codecs.open(OUTFILE_HEADER, "w", "utf-8") as fobj_out:
fobj_out.write(header)
with codecs.open(OUTFILE_BODY, 'w', 'utf-8') as fobj_out:
with codecs.open(OUTFILE_BODY, "w", "utf-8") as fobj_out:
fobj_out.write(body)
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Arch Linux) (preloaded format=pdflatex 2019.8.23) 25 SEP 2019 17:26
entering extended mode
\write18 enabled.
%&-line parsing enabled.
**/tmp/nvimSlBj2o/2
(/tmp/nvimSlBj2o/2
LaTeX2e <2018-12-01>
! LaTeX Error: There's no line here to end.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.1 \\b
egin{acronym}
Your command was ignored.
Type I <command> <return> to replace it with another command,
or <return> to continue without it.
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.1 \\b
egin{acronym}
You're in trouble here. Try typing <return> to proceed.
If that doesn't work, type X <return> to quit.
Missing character: There is no b in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no y in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no z in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no p in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no [ in font nullfont!
Missing character: There is no Z in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no P in font nullfont!
Missing character: There is no F in font nullfont!
Missing character: There is no ] in font nullfont!
Missing character: There is no Z in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no p in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no P in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no y in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no - in font nullfont!
Missing character: There is no F in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no A in font nullfont!
Missing character: There is no K in font nullfont!
Missing character: There is no [ in font nullfont!
Missing character: There is no A in font nullfont!
Missing character: There is no K in font nullfont!
Missing character: There is no ] in font nullfont!
Missing character: There is no A in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no B in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no M in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no [ in font nullfont!
Missing character: There is no B in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no M in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no ] in font nullfont!
Missing character: There is no B in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no M in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no p in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no [ in font nullfont!
Missing character: There is no D in font nullfont!
Missing character: There is no P in font nullfont!
Missing character: There is no G in font nullfont!
Missing character: There is no ] in font nullfont!
Missing character: There is no D in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no P in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no y in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no G in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no j in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no p in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no [ in font nullfont!
Missing character: There is no j in font nullfont!
Missing character: There is no D in font nullfont!
Missing character: There is no P in font nullfont!
Missing character: There is no G in font nullfont!
Missing character: There is no ] in font nullfont!
Missing character: There is no j in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no D in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no P in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no y in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no G in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no j in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no p in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no [ in font nullfont!
Missing character: There is no j in font nullfont!
Missing character: There is no D in font nullfont!
Missing character: There is no P in font nullfont!
Missing character: There is no G in font nullfont!
Missing character: There is no ] in font nullfont!
Missing character: There is no j in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no D in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no P in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no y in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no G in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no p in font nullfont!
Missing character: There is no [ in font nullfont!
Missing character: There is no K in font nullfont!
Missing character: There is no F in font nullfont!
Missing character: There is no P in font nullfont!
Missing character: There is no ] in font nullfont!
Missing character: There is no K in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no z in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no F in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no P in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no y in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no w in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no [ in font nullfont!
Missing character: There is no K in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no W in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no M in font nullfont!
Missing character: There is no ] in font nullfont!
Missing character: There is no K in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no z in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no w in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!