/** Parsed subcommand options. */
static struct lls_parse_result *cmdline_sublpr, *sublpr;
+/* The executing subcommand (NULL at startup). */
+static const struct lls_command *subcmd;
/** Wether daemon_init() was called. */
static bool daemonized;
/** Non-NULL if we log to a file. */
if (loglevel < lpr_ll)
return;
outfd = logfile? logfile : stderr;
- time(&t1);
- tm = localtime(&t1);
- strftime(str, sizeof(str), "%b %d %H:%M:%S", tm);
- fprintf(outfd, "%s ", str);
- if (lpr_ll <= INFO)
- fprintf(outfd, "%i: ", loglevel);
+ if (subcmd == CMD_PTR(RUN)) {
+ time(&t1);
+ tm = localtime(&t1);
+ strftime(str, sizeof(str), "%b %d %H:%M:%S", tm);
+ fprintf(outfd, "%s ", str);
+ if (lpr_ll <= INFO)
+ fprintf(outfd, "%i: ", loglevel);
+ }
+ if (subcmd == CMD_PTR(RUN))
#ifdef DSS_NO_FUNC_NAMES
- fprintf(outfd, "%s:%d: ", location_file, location_line);
+ fprintf(outfd, "%s:%d: ", location_file, location_line);
#else
- fprintf(outfd, "%s: ", location_func);
+ fprintf(outfd, "%s: ", location_func);
#endif
va_start(argp, fmt);
vfprintf(outfd, fmt, argp);
dss_msg("%d\n", (int)pid);
return 0;
}
+ DSS_NOTICE_LOG(("sending signal %d to pid %d\n", sig, (int)pid));
ret = kill(pid, sig);
if (ret < 0)
return -ERRNO_TO_DSS_ERROR(errno);
struct snapshot *s;
int i;
- DSS_DEBUG_LOG(("looking for orphaned snapshots\n"));
+ DSS_DEBUG_LOG(("looking for old incomplete snapshots\n"));
FOR_EACH_SNAPSHOT(s, i, sl) {
if (snapshot_is_being_created(s))
continue;
if (!low_disk_space)
goto out;
DSS_WARNING_LOG(("disk space low and nothing obvious to remove\n"));
+ why = "oldest";
victim = find_oldest_removable_snapshot(&sl);
if (victim)
goto remove;
return -E_BUG;
}
+/* also checks if . is a mountpoint, if --mountpoint was given */
static int change_to_dest_dir(void)
{
int ret;
const char *dd = OPT_STRING_VAL(DSS, DEST_DIR);
+ struct stat dot, dotdot;
DSS_INFO_LOG(("changing cwd to %s\n", dd));
- if (chdir(dd) >= 0)
- return 1;
- ret = -ERRNO_TO_DSS_ERROR(errno);
- DSS_ERROR_LOG(("could not change cwd to %s\n", dd));
- return ret;
+ if (chdir(dd) < 0) {
+ ret = -ERRNO_TO_DSS_ERROR(errno);
+ DSS_ERROR_LOG(("could not change cwd to %s\n", dd));
+ return ret;
+ }
+ if (!OPT_GIVEN(DSS, MOUNTPOINT))
+ return 0;
+ if (stat(".", &dot) < 0) {
+ ret = -ERRNO_TO_DSS_ERROR(errno);
+ DSS_ERROR_LOG(("could not stat .\n"));
+ return ret;
+ }
+ if (stat("..", &dotdot) < 0) {
+ ret = -ERRNO_TO_DSS_ERROR(errno);
+ DSS_ERROR_LOG(("could not stat ..\n"));
+ return ret;
+ }
+ if (dot.st_dev == dotdot.st_dev && dot.st_ino != dotdot.st_ino) {
+ DSS_ERROR_LOG(("mountpoint check failed for %s\n", dd));
+ return -E_MOUNTPOINT;
+ }
+ return 1;
}
-static int check_config(const struct lls_command *cmd)
+static int check_config(void)
{
int ret;
uint32_t unit_interval = OPT_UINT32_VAL(DSS, UNIT_INTERVAL);
DSS_ERROR_LOG(("bad number of intervals: %i\n", num_intervals));
return -E_INVALID_NUMBER;
}
- if (cmd == CMD_PTR(RUN) || cmd == CMD_PTR(CREATE))
+ if (subcmd == CMD_PTR(RUN) || subcmd == CMD_PTR(CREATE))
if (!OPT_GIVEN(DSS, SOURCE_DIR)) {
DSS_ERROR_LOG(("--source-dir required\n"));
return -E_SYNTAX;
}
- if (cmd == CMD_PTR(RUN) || cmd == CMD_PTR(CREATE)
- || cmd == CMD_PTR(LS) || cmd == CMD_PTR(PRUNE)) {
+ if (subcmd == CMD_PTR(RUN) || subcmd == CMD_PTR(CREATE)
+ || subcmd == CMD_PTR(LS) || subcmd == CMD_PTR(PRUNE)) {
if (!OPT_GIVEN(DSS, DEST_DIR)) {
DSS_ERROR_LOG(("--dest-dir required\n"));
return -E_SYNTAX;
ret = parse_config_file(true /* SIGHUP */, CMD_PTR(RUN));
if (ret < 0)
return ret;
- ret = check_config(CMD_PTR(RUN));
+ ret = check_config();
if (ret < 0)
return ret;
close_log(logfile);
static void exit_hook(int exit_code)
{
- const char *argv[3];
pid_t pid;
-
- argv[0] = OPT_STRING_VAL(DSS, EXIT_HOOK);
- argv[1] = dss_strerror(-exit_code);
- argv[2] = NULL;
-
- DSS_NOTICE_LOG(("executing %s %s\n", argv[0], argv[1]));
- dss_exec(&pid, argv[0], (char **)argv);
+ char **argv, *tmp = dss_strdup(OPT_STRING_VAL(DSS, EXIT_HOOK));
+ unsigned n = split_args(tmp, &argv, " \t");
+
+ n++;
+ argv = dss_realloc(argv, (n + 1) * sizeof(char *));
+ argv[n - 1] = dss_strdup(dss_strerror(-exit_code));
+ argv[n] = NULL;
+ dss_exec(&pid, argv[0], argv);
+ free(argv[n - 1]);
+ free(argv);
+ free(tmp);
}
static void lock_dss_or_die(void)
int i;
struct snapshot_list sl;
struct snapshot *s;
+ int64_t now = get_current_time();
dss_get_snapshot_list(&sl);
FOR_EACH_SNAPSHOT(s, i, &sl) {
- int64_t d = 0;
+ int64_t d;
if (s->flags & SS_COMPLETE)
d = (s->completion_time - s->creation_time) / 60;
- dss_msg("%u\t%s\t%3" PRId64 ":%02" PRId64 "\n", s->interval, s->name, d/60, d%60);
+ else
+ d = (now - s->creation_time) / 60;
+ dss_msg("%u\t%s\t%3" PRId64 ":%02" PRId64 "\n", s->interval,
+ s->name, d / 60, d % 60);
}
free_snapshot_list(&sl);
return 1;
}
EXPORT_CMD_HANDLER(ls);
+static int com_configtest(void)
+{
+ printf("Syntax Ok\n");
+ return 0;
+}
+EXPORT_CMD_HANDLER(configtest);
+
static int setup_signal_handling(void)
{
int ret;
for (i = 1; (cmd = lls_cmd(i, dss_suite)); i++) {
const char *name = lls_command_name(cmd);
const char *purpose = lls_purpose(cmd);
- printf("%-10s%s\n", name, purpose);
+ printf("%-11s%s\n", name, purpose);
}
exit(EXIT_SUCCESS);
}
int main(int argc, char **argv)
{
int ret;
- const struct lls_command *cmd = CMD_PTR(DSS);
char *errctx = NULL;
unsigned num_inputs;
- const struct dss_user_data *ud = NULL;
+ const struct dss_user_data *ud;
- ret = lls_parse(argc, argv, cmd, &cmdline_lpr, &errctx);
+ ret = lls_parse(argc, argv, CMD_PTR(DSS), &cmdline_lpr, &errctx);
if (ret < 0) {
ret = lopsub_error(ret, &errctx);
goto out;
}
lpr = cmdline_lpr;
- ret = parse_config_file(false /* no SIGHUP */, cmd);
+ ret = parse_config_file(false /* no SIGHUP */, CMD_PTR(DSS));
if (ret < 0)
goto out;
handle_version_and_help();
ret = lopsub_error(ret, &errctx);
goto out;
}
- cmd = lls_cmd(ret, dss_suite);
- ret = lls_parse(num_inputs, argv + argc - num_inputs, cmd,
+ subcmd = lls_cmd(ret, dss_suite);
+ ret = lls_parse(num_inputs, argv + argc - num_inputs, subcmd,
&cmdline_sublpr, &errctx);
if (ret < 0) {
ret = lopsub_error(ret, &errctx);
goto out;
}
sublpr = cmdline_sublpr;
- ret = parse_config_file(false /* no SIGHUP */, cmd);
+ ret = parse_config_file(false /* no SIGHUP */, subcmd);
if (ret < 0)
goto out;
- ret = check_config(cmd);
+ ret = check_config();
if (ret < 0)
goto out;
ret = setup_signal_handling();
if (ret < 0)
goto out;
- ud = lls_user_data(cmd);
+ ud = lls_user_data(subcmd);
ret = ud->handler();
signal_shutdown();
out:
lls_free_parse_result(lpr, CMD_PTR(DSS));
if (lpr != cmdline_lpr)
lls_free_parse_result(cmdline_lpr, CMD_PTR(DSS));
- lls_free_parse_result(sublpr, cmd);
+ lls_free_parse_result(sublpr, subcmd);
if (sublpr != cmdline_sublpr)
- lls_free_parse_result(cmdline_sublpr, cmd);
+ lls_free_parse_result(cmdline_sublpr, subcmd);
exit(ret >= 0? EXIT_SUCCESS : EXIT_FAILURE);
}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
- <dia:diagramdata>
- <dia:attribute name="background">
- <dia:color val="#ffffff"/>
- </dia:attribute>
- <dia:attribute name="pagebreak">
- <dia:color val="#000099"/>
- </dia:attribute>
- <dia:attribute name="paper">
- <dia:composite type="paper">
- <dia:attribute name="name">
- <dia:string>#A4#</dia:string>
- </dia:attribute>
- <dia:attribute name="tmargin">
- <dia:real val="2.8222000598907471"/>
- </dia:attribute>
- <dia:attribute name="bmargin">
- <dia:real val="2.8222000598907471"/>
- </dia:attribute>
- <dia:attribute name="lmargin">
- <dia:real val="2.8222000598907471"/>
- </dia:attribute>
- <dia:attribute name="rmargin">
- <dia:real val="2.8222000598907471"/>
- </dia:attribute>
- <dia:attribute name="is_portrait">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="scaling">
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="fitto">
- <dia:boolean val="false"/>
- </dia:attribute>
- </dia:composite>
- </dia:attribute>
- <dia:attribute name="grid">
- <dia:composite type="grid">
- <dia:attribute name="width_x">
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="width_y">
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="visible_x">
- <dia:int val="1"/>
- </dia:attribute>
- <dia:attribute name="visible_y">
- <dia:int val="1"/>
- </dia:attribute>
- <dia:composite type="color"/>
- </dia:composite>
- </dia:attribute>
- <dia:attribute name="color">
- <dia:color val="#d8e5e5"/>
- </dia:attribute>
- <dia:attribute name="guides">
- <dia:composite type="guides">
- <dia:attribute name="hguides"/>
- <dia:attribute name="vguides"/>
- </dia:composite>
- </dia:attribute>
- </dia:diagramdata>
- <dia:layer name="New layer 1" visible="true" active="true">
- <dia:object type="Standard - Box" version="0" id="O0">
- <dia:attribute name="obj_pos">
- <dia:point val="13.1551,5.70485"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="13.1051,5.65485;29.4092,11.5949"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="13.1551,5.70485"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="16.204140120230058"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="5.8400708047529699"/>
- </dia:attribute>
- <dia:attribute name="border_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="border_color">
- <dia:color val="#ffff00"/>
- </dia:attribute>
- <dia:attribute name="inner_color">
- <dia:color val="#ffff00"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- </dia:object>
- <dia:group>
- <dia:object type="Standard - Box" version="0" id="O1">
- <dia:attribute name="obj_pos">
- <dia:point val="13.5072,6.07489"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="13.4572,6.02489;17.3572,11.2249"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="13.5072,6.07489"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="3.8000000000000007"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="5.0999999999999996"/>
- </dia:attribute>
- <dia:attribute name="border_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="border_color">
- <dia:color val="#cbd4fa"/>
- </dia:attribute>
- <dia:attribute name="inner_color">
- <dia:color val="#cbd4fa"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Standard - Box" version="0" id="O2">
- <dia:attribute name="obj_pos">
- <dia:point val="17.4072,6.07489"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="17.3572,6.02489;21.2572,11.2249"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="17.4072,6.07489"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="3.8000000000000007"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="5.0999999999999996"/>
- </dia:attribute>
- <dia:attribute name="border_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="border_color">
- <dia:color val="#90a5fe"/>
- </dia:attribute>
- <dia:attribute name="inner_color">
- <dia:color val="#90a5fe"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Standard - Box" version="0" id="O3">
- <dia:attribute name="obj_pos">
- <dia:point val="21.3072,6.07489"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="21.2572,6.02489;25.1572,11.2249"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="21.3072,6.07489"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="3.8000000000000007"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="5.0999999999999996"/>
- </dia:attribute>
- <dia:attribute name="border_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="border_color">
- <dia:color val="#5e78f6"/>
- </dia:attribute>
- <dia:attribute name="inner_color">
- <dia:color val="#5e78f6"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Standard - Box" version="0" id="O4">
- <dia:attribute name="obj_pos">
- <dia:point val="25.2072,6.07489"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="25.1572,6.02489;29.0572,11.2249"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="25.2072,6.07489"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="3.8000000000000007"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="5.0999999999999996"/>
- </dia:attribute>
- <dia:attribute name="border_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="border_color">
- <dia:color val="#0000ff"/>
- </dia:attribute>
- <dia:attribute name="inner_color">
- <dia:color val="#0910f4"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- </dia:object>
- <dia:group>
- <dia:group>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O5">
- <dia:attribute name="obj_pos">
- <dia:point val="25.3046,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="25.2546,9.69613;25.7177,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="25.3046,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O6">
- <dia:attribute name="obj_pos">
- <dia:point val="25.7677,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="25.7177,9.69613;26.1809,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="25.7677,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O7">
- <dia:attribute name="obj_pos">
- <dia:point val="26.2309,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="26.1809,9.69613;26.644,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="26.2309,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O8">
- <dia:attribute name="obj_pos">
- <dia:point val="26.694,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="26.644,9.69613;27.1072,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="26.694,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O9">
- <dia:attribute name="obj_pos">
- <dia:point val="27.1572,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="27.1072,9.69613;27.5703,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="27.1572,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O10">
- <dia:attribute name="obj_pos">
- <dia:point val="27.6203,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="27.5703,9.69613;28.0335,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="27.6203,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O11">
- <dia:attribute name="obj_pos">
- <dia:point val="28.0835,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="28.0335,9.69613;28.4966,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="28.0835,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O12">
- <dia:attribute name="obj_pos">
- <dia:point val="28.5466,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="28.4966,9.69613;28.9598,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="28.5466,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- </dia:group>
- <dia:group>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O13">
- <dia:attribute name="obj_pos">
- <dia:point val="21.8026,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="21.7526,9.69613;22.2157,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="21.8026,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O14">
- <dia:attribute name="obj_pos">
- <dia:point val="22.6179,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="22.5679,9.69613;23.0311,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="22.6179,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O15">
- <dia:attribute name="obj_pos">
- <dia:point val="23.4333,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="23.3833,9.69613;23.8464,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="23.4333,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O16">
- <dia:attribute name="obj_pos">
- <dia:point val="24.2486,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="24.1986,9.69613;24.6618,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="24.2486,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- </dia:group>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O17">
- <dia:attribute name="obj_pos">
- <dia:point val="15.2256,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="15.1756,9.69613;15.6388,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="15.2256,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- <dia:group>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O18">
- <dia:attribute name="obj_pos">
- <dia:point val="18.3889,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="18.3389,9.69613;18.8021,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="18.3889,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.3631490811886362"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Geometric - Perfect Circle" version="1" id="O19">
- <dia:attribute name="obj_pos">
- <dia:point val="19.8623,9.74613"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="19.8123,9.69613;20.2754,10.1593"/>
- </dia:attribute>
- <dia:attribute name="meta">
- <dia:composite type="dict"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="19.8623,9.74613"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="0.36314908118863798"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="0.36314908118863798"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="line_colour">
- <dia:color val="#000000"/>
- </dia:attribute>
- <dia:attribute name="fill_colour">
- <dia:color val="#ff0000"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- <dia:attribute name="line_style">
- <dia:enum val="0"/>
- <dia:real val="1"/>
- </dia:attribute>
- <dia:attribute name="flip_horizontal">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="flip_vertical">
- <dia:boolean val="false"/>
- </dia:attribute>
- <dia:attribute name="subscale">
- <dia:real val="1"/>
- </dia:attribute>
- </dia:object>
- </dia:group>
- </dia:group>
- <dia:object type="Standard - Line" version="0" id="O20">
- <dia:attribute name="obj_pos">
- <dia:point val="14.4506,9.23568"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="14.4006,8.90478;28.1138,9.56659"/>
- </dia:attribute>
- <dia:attribute name="conn_endpoints">
- <dia:point val="14.4506,9.23568"/>
- <dia:point val="28.002,9.23568"/>
- </dia:attribute>
- <dia:attribute name="numcp">
- <dia:int val="1"/>
- </dia:attribute>
- <dia:attribute name="line_color">
- <dia:color val="#ffffff"/>
- </dia:attribute>
- <dia:attribute name="line_width">
- <dia:real val="0.10000000000000001"/>
- </dia:attribute>
- <dia:attribute name="end_arrow">
- <dia:enum val="3"/>
- </dia:attribute>
- <dia:attribute name="end_arrow_length">
- <dia:real val="0.5"/>
- </dia:attribute>
- <dia:attribute name="end_arrow_width">
- <dia:real val="0.5"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Standard - Text" version="1" id="O21">
- <dia:attribute name="obj_pos">
- <dia:point val="19.8922,8.37201"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="19.8922,6.86701;22.6222,8.68701"/>
- </dia:attribute>
- <dia:attribute name="text">
- <dia:composite type="text">
- <dia:attribute name="string">
- <dia:string>#DSS#</dia:string>
- </dia:attribute>
- <dia:attribute name="font">
- <dia:font family="Serif" style="80" name="Times-Bold"/>
- </dia:attribute>
- <dia:attribute name="height">
- <dia:real val="1.8584333549302243"/>
- </dia:attribute>
- <dia:attribute name="pos">
- <dia:point val="19.8922,8.37201"/>
- </dia:attribute>
- <dia:attribute name="color">
- <dia:color val="#ffffff"/>
- </dia:attribute>
- <dia:attribute name="alignment">
- <dia:enum val="0"/>
- </dia:attribute>
- </dia:composite>
- </dia:attribute>
- <dia:attribute name="valign">
- <dia:enum val="3"/>
- </dia:attribute>
- </dia:object>
- </dia:group>
- </dia:layer>
-</dia:diagram>