From 5cc8375106189e3b5e55a4ba72c23ef1569a4d99 Mon Sep 17 00:00:00 2001
From: MatMoul <matmoul@gmail.com>
Date: Thu, 31 Oct 2024 18:34:57 +0100
Subject: [PATCH] Add TODO to node + Sample IT_V2

---
 samples/it_v2/doc.yaml                        |   2 +
 samples/it_v2/doc/_index.01.pug               |   1 +
 samples/it_v2/doc/_index.yaml                 |   6 +
 samples/it_v2/doc/ad/_index.yaml              |   5 +
 samples/it_v2/doc/ad/acls/_index.yaml         |   7 +
 samples/it_v2/doc/ad/acls/fs-01.yaml          |  31 ++
 samples/it_v2/doc/ad/dfs/_index.yaml          |   7 +
 .../it_v2/doc/ad/dfs/root@domain.local.yaml   |   9 +
 samples/it_v2/doc/ad/domains/_index.yaml      |   7 +
 .../it_v2/doc/ad/domains/domain.local.yaml    |   7 +
 samples/it_v2/doc/ad/shares/_index.yaml       |   7 +
 samples/it_v2/doc/ad/shares/fs-01.yaml        |   7 +
 samples/it_v2/doc/ad/usergroups/_index.yaml   |   7 +
 .../it_v2/doc/ad/usergroups/domain.local.yaml |   8 +
 samples/it_v2/doc/devices/_index.yaml         |   5 +
 .../it_v2/doc/devices/computers/_index.yaml   |   6 +
 .../doc/devices/computers/computer-01.yaml    |  20 +
 .../doc/devices/computers/computer-02.yaml    |  23 ++
 samples/it_v2/doc/devices/netdevs/_index.yaml |   6 +
 .../doc/devices/netdevs/firewall-01.yaml      |  33 ++
 .../it_v2/doc/devices/netdevs/switch-01.yaml  |  19 +
 .../it_v2/doc/devices/netdevs/wifi-01.yaml    |  19 +
 .../it_v2/doc/devices/printers/_index.yaml    |   6 +
 .../it_v2/doc/devices/printers/mfc-01.yaml    |  12 +
 .../doc/devices/printers/printer-01.yaml      |  12 +
 samples/it_v2/doc/devices/servers/_index.yaml |   6 +
 samples/it_v2/doc/devices/servers/dc-01.yaml  |  26 ++
 samples/it_v2/doc/devices/servers/fs-01.yaml  |  28 ++
 samples/it_v2/doc/devices/servers/nas-01.yaml |  30 ++
 samples/it_v2/doc/index/_index.yaml           |   6 +
 samples/it_v2/doc/maintenance/_index.yaml     |   5 +
 .../it_v2/doc/maintenance/backups/_index.yaml |   7 +
 .../it_v2/doc/maintenance/todos/_index.yaml   |   6 +
 .../it_v2/doc/maintenance/updates/_index.yaml |   7 +
 samples/it_v2/doc/network/_index.01.pug       |  10 +
 samples/it_v2/doc/network/_index.yaml         |   7 +
 samples/it_v2/doc/network/ipam/_index.yaml    |   7 +
 .../doc/network/subnets/01_lan.01.drawio      |   1 +
 .../it_v2/doc/network/subnets/01_lan.01.svg   |   4 +
 samples/it_v2/doc/network/subnets/01_lan.yaml |  11 +
 .../doc/network/subnets/02_guest.01.drawio    |   1 +
 .../it_v2/doc/network/subnets/02_guest.01.svg |   4 +
 .../it_v2/doc/network/subnets/02_guest.yaml   |  13 +
 samples/it_v2/doc/network/subnets/04_vpn.yaml |  11 +
 .../doc/network/subnets/05_wan.01.drawio      |   1 +
 .../it_v2/doc/network/subnets/05_wan.01.svg   |   4 +
 samples/it_v2/doc/network/subnets/05_wan.yaml |   3 +
 samples/it_v2/doc/network/subnets/_index.yaml |   7 +
 samples/it_v2/doc/network/wifi/01_lan.yaml    |   4 +
 samples/it_v2/doc/network/wifi/02_guest.yaml  |   4 +
 samples/it_v2/doc/network/wifi/_index.yaml    |   7 +
 samples/it_v2/doc/secrets/_index.yaml         |   6 +
 samples/it_v2/doc/secrets/ad.yaml             |   9 +
 samples/it_v2/doc/secrets/ms365.yaml          |  11 +
 samples/it_v2/doc/secrets/windows.yaml        |   6 +
 samples/it_v2/doc/softwares/_index.yaml       |   5 +
 .../it_v2/doc/softwares/software1.notes.md    |   3 +
 samples/it_v2/doc/softwares/software1.yaml    |   9 +
 samples/it_v2/schemas/_index.json             |  99 +++++
 samples/it_v2/schemas/ad_acls.json            | 118 ++++++
 samples/it_v2/schemas/ad_dfs.json             | 121 ++++++
 samples/it_v2/schemas/ad_domain.json          | 116 ++++++
 samples/it_v2/schemas/ad_shares.json          | 107 ++++++
 samples/it_v2/schemas/ad_usergroups.json      |  91 +++++
 samples/it_v2/schemas/computer.json           | 341 +++++++++++++++++
 samples/it_v2/schemas/netdev.json             | 345 +++++++++++++++++
 samples/it_v2/schemas/printer.json            | 317 +++++++++++++++
 samples/it_v2/schemas/secrets.json            | 104 +++++
 samples/it_v2/schemas/server.json             | 362 ++++++++++++++++++
 samples/it_v2/schemas/software.json           | 124 ++++++
 samples/it_v2/schemas/subnet.json             | 172 +++++++++
 samples/it_v2/schemas/voipdev.json            | 317 +++++++++++++++
 samples/it_v2/schemas/wifi.json               | 106 +++++
 samples/it_v2/schemas_builder/build.sh        |  52 +++
 samples/it_v2/schemas_builder/objects/_index  |   7 +
 samples/it_v2/schemas_builder/objects/ad_acls |   4 +
 samples/it_v2/schemas_builder/objects/ad_dfs  |   4 +
 .../it_v2/schemas_builder/objects/ad_domain   |   4 +
 .../it_v2/schemas_builder/objects/ad_shares   |   4 +
 .../schemas_builder/objects/ad_usergroups     |   4 +
 .../it_v2/schemas_builder/objects/computer    |  12 +
 samples/it_v2/schemas_builder/objects/netdev  |  12 +
 samples/it_v2/schemas_builder/objects/printer |  10 +
 samples/it_v2/schemas_builder/objects/secrets |   3 +
 samples/it_v2/schemas_builder/objects/server  |  12 +
 .../it_v2/schemas_builder/objects/software    |   6 +
 samples/it_v2/schemas_builder/objects/subnet  |   4 +
 samples/it_v2/schemas_builder/objects/voipdev |  10 +
 samples/it_v2/schemas_builder/objects/wifi    |   4 +
 .../it_v2/schemas_builder/parts/ad_acls.json  |  48 +++
 .../it_v2/schemas_builder/parts/ad_dfs.json   |  51 +++
 .../schemas_builder/parts/ad_domain.json      |  46 +++
 .../schemas_builder/parts/ad_shares.json      |  37 ++
 .../schemas_builder/parts/ad_usergroups.json  |  21 +
 samples/it_v2/schemas_builder/parts/book.json |   6 +
 .../schemas_builder/parts/computer_os.json    |  26 ++
 .../schemas_builder/parts/computer_type.json  |  20 +
 .../it_v2/schemas_builder/parts/files.json    |  38 ++
 .../it_v2/schemas_builder/parts/index.json    |   6 +
 .../schemas_builder/parts/interfaces.json     |  63 +++
 .../it_v2/schemas_builder/parts/location.json |  13 +
 .../schemas_builder/parts/maintainer.json     |  13 +
 .../parts/maintenance_backups.json            |  86 +++++
 .../parts/maintenance_updates.json            |  72 ++++
 .../it_v2/schemas_builder/parts/model.json    |  13 +
 samples/it_v2/schemas_builder/parts/name.json |  13 +
 .../schemas_builder/parts/netdev_os.json      |  16 +
 .../schemas_builder/parts/netdev_roles.json   |  21 +
 .../schemas_builder/parts/netdev_type.json    |  18 +
 .../schemas_builder/parts/printer_type.json   |  17 +
 .../it_v2/schemas_builder/parts/secrets.json  |  67 ++++
 .../schemas_builder/parts/server_os.json      |  28 ++
 .../schemas_builder/parts/server_roles.json   |  26 ++
 .../schemas_builder/parts/server_type.json    |  18 +
 .../it_v2/schemas_builder/parts/software.json |  22 ++
 .../it_v2/schemas_builder/parts/subnet.json   |  87 +++++
 .../schemas_builder/parts/subnet_name.json    |  28 ++
 .../schemas_builder/parts/templates.json      |  26 ++
 .../it_v2/schemas_builder/parts/title.json    |  13 +
 samples/it_v2/schemas_builder/parts/toc.json  |   6 +
 samples/it_v2/schemas_builder/parts/todo.json |  31 ++
 samples/it_v2/schemas_builder/parts/urls.json |  29 ++
 .../schemas_builder/parts/voipdev_type.json   |  17 +
 samples/it_v2/schemas_builder/parts/wifi.json |  21 +
 samples/it_v2/templates/acls.pug              |  15 +
 samples/it_v2/templates/adadmins.pug          |  13 +
 samples/it_v2/templates/backups.pug           |  46 +++
 samples/it_v2/templates/cloudadmins.pug       |  13 +
 samples/it_v2/templates/computers.pug         |  23 ++
 samples/it_v2/templates/dfs.pug               |  34 ++
 samples/it_v2/templates/domains.pug           |  28 ++
 samples/it_v2/templates/ipam.pug              |  72 ++++
 samples/it_v2/templates/maintenances.pug      |  56 +++
 samples/it_v2/templates/ms365admins.pug       |  13 +
 samples/it_v2/templates/ms365sharepoint.pug   |  11 +
 samples/it_v2/templates/ms365users.pug        |  17 +
 samples/it_v2/templates/netdevs.pug           |  20 +
 samples/it_v2/templates/printers.pug          |  22 ++
 samples/it_v2/templates/ran.pug               |  16 +
 samples/it_v2/templates/secrets.pug           |  31 ++
 samples/it_v2/templates/servers.pug           |  28 ++
 samples/it_v2/templates/shares.pug            |  17 +
 samples/it_v2/templates/softwares.pug         |  14 +
 samples/it_v2/templates/subnets.pug           |  25 ++
 samples/it_v2/templates/todos.pug             |  59 +++
 samples/it_v2/templates/updates.pug           |  45 +++
 samples/it_v2/templates/usergroups.pug        |  11 +
 samples/it_v2/templates/webdomains.pug        |  18 +
 samples/it_v2/templates/wifis.pug             |  13 +
 src/core/jsondoc.js                           |   3 +
 150 files changed, 5259 insertions(+)
 create mode 100644 samples/it_v2/doc.yaml
 create mode 100644 samples/it_v2/doc/_index.01.pug
 create mode 100644 samples/it_v2/doc/_index.yaml
 create mode 100644 samples/it_v2/doc/ad/_index.yaml
 create mode 100644 samples/it_v2/doc/ad/acls/_index.yaml
 create mode 100644 samples/it_v2/doc/ad/acls/fs-01.yaml
 create mode 100644 samples/it_v2/doc/ad/dfs/_index.yaml
 create mode 100644 samples/it_v2/doc/ad/dfs/root@domain.local.yaml
 create mode 100644 samples/it_v2/doc/ad/domains/_index.yaml
 create mode 100644 samples/it_v2/doc/ad/domains/domain.local.yaml
 create mode 100644 samples/it_v2/doc/ad/shares/_index.yaml
 create mode 100644 samples/it_v2/doc/ad/shares/fs-01.yaml
 create mode 100644 samples/it_v2/doc/ad/usergroups/_index.yaml
 create mode 100644 samples/it_v2/doc/ad/usergroups/domain.local.yaml
 create mode 100644 samples/it_v2/doc/devices/_index.yaml
 create mode 100644 samples/it_v2/doc/devices/computers/_index.yaml
 create mode 100644 samples/it_v2/doc/devices/computers/computer-01.yaml
 create mode 100644 samples/it_v2/doc/devices/computers/computer-02.yaml
 create mode 100644 samples/it_v2/doc/devices/netdevs/_index.yaml
 create mode 100644 samples/it_v2/doc/devices/netdevs/firewall-01.yaml
 create mode 100644 samples/it_v2/doc/devices/netdevs/switch-01.yaml
 create mode 100644 samples/it_v2/doc/devices/netdevs/wifi-01.yaml
 create mode 100644 samples/it_v2/doc/devices/printers/_index.yaml
 create mode 100644 samples/it_v2/doc/devices/printers/mfc-01.yaml
 create mode 100644 samples/it_v2/doc/devices/printers/printer-01.yaml
 create mode 100644 samples/it_v2/doc/devices/servers/_index.yaml
 create mode 100644 samples/it_v2/doc/devices/servers/dc-01.yaml
 create mode 100644 samples/it_v2/doc/devices/servers/fs-01.yaml
 create mode 100644 samples/it_v2/doc/devices/servers/nas-01.yaml
 create mode 100644 samples/it_v2/doc/index/_index.yaml
 create mode 100644 samples/it_v2/doc/maintenance/_index.yaml
 create mode 100644 samples/it_v2/doc/maintenance/backups/_index.yaml
 create mode 100644 samples/it_v2/doc/maintenance/todos/_index.yaml
 create mode 100644 samples/it_v2/doc/maintenance/updates/_index.yaml
 create mode 100644 samples/it_v2/doc/network/_index.01.pug
 create mode 100644 samples/it_v2/doc/network/_index.yaml
 create mode 100644 samples/it_v2/doc/network/ipam/_index.yaml
 create mode 100644 samples/it_v2/doc/network/subnets/01_lan.01.drawio
 create mode 100644 samples/it_v2/doc/network/subnets/01_lan.01.svg
 create mode 100644 samples/it_v2/doc/network/subnets/01_lan.yaml
 create mode 100644 samples/it_v2/doc/network/subnets/02_guest.01.drawio
 create mode 100644 samples/it_v2/doc/network/subnets/02_guest.01.svg
 create mode 100644 samples/it_v2/doc/network/subnets/02_guest.yaml
 create mode 100644 samples/it_v2/doc/network/subnets/04_vpn.yaml
 create mode 100644 samples/it_v2/doc/network/subnets/05_wan.01.drawio
 create mode 100644 samples/it_v2/doc/network/subnets/05_wan.01.svg
 create mode 100644 samples/it_v2/doc/network/subnets/05_wan.yaml
 create mode 100644 samples/it_v2/doc/network/subnets/_index.yaml
 create mode 100644 samples/it_v2/doc/network/wifi/01_lan.yaml
 create mode 100644 samples/it_v2/doc/network/wifi/02_guest.yaml
 create mode 100644 samples/it_v2/doc/network/wifi/_index.yaml
 create mode 100644 samples/it_v2/doc/secrets/_index.yaml
 create mode 100644 samples/it_v2/doc/secrets/ad.yaml
 create mode 100644 samples/it_v2/doc/secrets/ms365.yaml
 create mode 100644 samples/it_v2/doc/secrets/windows.yaml
 create mode 100644 samples/it_v2/doc/softwares/_index.yaml
 create mode 100644 samples/it_v2/doc/softwares/software1.notes.md
 create mode 100644 samples/it_v2/doc/softwares/software1.yaml
 create mode 100644 samples/it_v2/schemas/_index.json
 create mode 100644 samples/it_v2/schemas/ad_acls.json
 create mode 100644 samples/it_v2/schemas/ad_dfs.json
 create mode 100644 samples/it_v2/schemas/ad_domain.json
 create mode 100644 samples/it_v2/schemas/ad_shares.json
 create mode 100644 samples/it_v2/schemas/ad_usergroups.json
 create mode 100644 samples/it_v2/schemas/computer.json
 create mode 100644 samples/it_v2/schemas/netdev.json
 create mode 100644 samples/it_v2/schemas/printer.json
 create mode 100644 samples/it_v2/schemas/secrets.json
 create mode 100644 samples/it_v2/schemas/server.json
 create mode 100644 samples/it_v2/schemas/software.json
 create mode 100644 samples/it_v2/schemas/subnet.json
 create mode 100644 samples/it_v2/schemas/voipdev.json
 create mode 100644 samples/it_v2/schemas/wifi.json
 create mode 100644 samples/it_v2/schemas_builder/build.sh
 create mode 100644 samples/it_v2/schemas_builder/objects/_index
 create mode 100644 samples/it_v2/schemas_builder/objects/ad_acls
 create mode 100644 samples/it_v2/schemas_builder/objects/ad_dfs
 create mode 100644 samples/it_v2/schemas_builder/objects/ad_domain
 create mode 100644 samples/it_v2/schemas_builder/objects/ad_shares
 create mode 100644 samples/it_v2/schemas_builder/objects/ad_usergroups
 create mode 100644 samples/it_v2/schemas_builder/objects/computer
 create mode 100644 samples/it_v2/schemas_builder/objects/netdev
 create mode 100644 samples/it_v2/schemas_builder/objects/printer
 create mode 100644 samples/it_v2/schemas_builder/objects/secrets
 create mode 100644 samples/it_v2/schemas_builder/objects/server
 create mode 100644 samples/it_v2/schemas_builder/objects/software
 create mode 100644 samples/it_v2/schemas_builder/objects/subnet
 create mode 100644 samples/it_v2/schemas_builder/objects/voipdev
 create mode 100644 samples/it_v2/schemas_builder/objects/wifi
 create mode 100644 samples/it_v2/schemas_builder/parts/ad_acls.json
 create mode 100644 samples/it_v2/schemas_builder/parts/ad_dfs.json
 create mode 100644 samples/it_v2/schemas_builder/parts/ad_domain.json
 create mode 100644 samples/it_v2/schemas_builder/parts/ad_shares.json
 create mode 100644 samples/it_v2/schemas_builder/parts/ad_usergroups.json
 create mode 100644 samples/it_v2/schemas_builder/parts/book.json
 create mode 100644 samples/it_v2/schemas_builder/parts/computer_os.json
 create mode 100644 samples/it_v2/schemas_builder/parts/computer_type.json
 create mode 100644 samples/it_v2/schemas_builder/parts/files.json
 create mode 100644 samples/it_v2/schemas_builder/parts/index.json
 create mode 100644 samples/it_v2/schemas_builder/parts/interfaces.json
 create mode 100644 samples/it_v2/schemas_builder/parts/location.json
 create mode 100644 samples/it_v2/schemas_builder/parts/maintainer.json
 create mode 100644 samples/it_v2/schemas_builder/parts/maintenance_backups.json
 create mode 100644 samples/it_v2/schemas_builder/parts/maintenance_updates.json
 create mode 100644 samples/it_v2/schemas_builder/parts/model.json
 create mode 100644 samples/it_v2/schemas_builder/parts/name.json
 create mode 100644 samples/it_v2/schemas_builder/parts/netdev_os.json
 create mode 100644 samples/it_v2/schemas_builder/parts/netdev_roles.json
 create mode 100644 samples/it_v2/schemas_builder/parts/netdev_type.json
 create mode 100644 samples/it_v2/schemas_builder/parts/printer_type.json
 create mode 100644 samples/it_v2/schemas_builder/parts/secrets.json
 create mode 100644 samples/it_v2/schemas_builder/parts/server_os.json
 create mode 100644 samples/it_v2/schemas_builder/parts/server_roles.json
 create mode 100644 samples/it_v2/schemas_builder/parts/server_type.json
 create mode 100644 samples/it_v2/schemas_builder/parts/software.json
 create mode 100644 samples/it_v2/schemas_builder/parts/subnet.json
 create mode 100644 samples/it_v2/schemas_builder/parts/subnet_name.json
 create mode 100644 samples/it_v2/schemas_builder/parts/templates.json
 create mode 100644 samples/it_v2/schemas_builder/parts/title.json
 create mode 100644 samples/it_v2/schemas_builder/parts/toc.json
 create mode 100644 samples/it_v2/schemas_builder/parts/todo.json
 create mode 100644 samples/it_v2/schemas_builder/parts/urls.json
 create mode 100644 samples/it_v2/schemas_builder/parts/voipdev_type.json
 create mode 100644 samples/it_v2/schemas_builder/parts/wifi.json
 create mode 100644 samples/it_v2/templates/acls.pug
 create mode 100644 samples/it_v2/templates/adadmins.pug
 create mode 100644 samples/it_v2/templates/backups.pug
 create mode 100644 samples/it_v2/templates/cloudadmins.pug
 create mode 100644 samples/it_v2/templates/computers.pug
 create mode 100644 samples/it_v2/templates/dfs.pug
 create mode 100644 samples/it_v2/templates/domains.pug
 create mode 100644 samples/it_v2/templates/ipam.pug
 create mode 100644 samples/it_v2/templates/maintenances.pug
 create mode 100644 samples/it_v2/templates/ms365admins.pug
 create mode 100644 samples/it_v2/templates/ms365sharepoint.pug
 create mode 100644 samples/it_v2/templates/ms365users.pug
 create mode 100644 samples/it_v2/templates/netdevs.pug
 create mode 100644 samples/it_v2/templates/printers.pug
 create mode 100644 samples/it_v2/templates/ran.pug
 create mode 100644 samples/it_v2/templates/secrets.pug
 create mode 100644 samples/it_v2/templates/servers.pug
 create mode 100644 samples/it_v2/templates/shares.pug
 create mode 100644 samples/it_v2/templates/softwares.pug
 create mode 100644 samples/it_v2/templates/subnets.pug
 create mode 100644 samples/it_v2/templates/todos.pug
 create mode 100644 samples/it_v2/templates/updates.pug
 create mode 100644 samples/it_v2/templates/usergroups.pug
 create mode 100644 samples/it_v2/templates/webdomains.pug
 create mode 100644 samples/it_v2/templates/wifis.pug

diff --git a/samples/it_v2/doc.yaml b/samples/it_v2/doc.yaml
new file mode 100644
index 0000000..86a6124
--- /dev/null
+++ b/samples/it_v2/doc.yaml
@@ -0,0 +1,2 @@
+doc: 'doc'
+templates: 'templates'
diff --git a/samples/it_v2/doc/_index.01.pug b/samples/it_v2/doc/_index.01.pug
new file mode 100644
index 0000000..cfdb394
--- /dev/null
+++ b/samples/it_v2/doc/_index.01.pug
@@ -0,0 +1 @@
+h2 Company SA
\ No newline at end of file
diff --git a/samples/it_v2/doc/_index.yaml b/samples/it_v2/doc/_index.yaml
new file mode 100644
index 0000000..1b9a7bc
--- /dev/null
+++ b/samples/it_v2/doc/_index.yaml
@@ -0,0 +1,6 @@
+# yaml-language-server: $schema=../schemas/_index.json
+title: IT Documentation
+templates:
+  node: '@empty'
+headfiles:
+  - 01.pug
diff --git a/samples/it_v2/doc/ad/_index.yaml b/samples/it_v2/doc/ad/_index.yaml
new file mode 100644
index 0000000..aad196a
--- /dev/null
+++ b/samples/it_v2/doc/ad/_index.yaml
@@ -0,0 +1,5 @@
+# yaml-language-server: $schema=../../schemas/_index.json
+index: 4
+title: 'Active Directory'
+templates:
+  node: '@overview'
diff --git a/samples/it_v2/doc/ad/acls/_index.yaml b/samples/it_v2/doc/ad/acls/_index.yaml
new file mode 100644
index 0000000..16d3d03
--- /dev/null
+++ b/samples/it_v2/doc/ad/acls/_index.yaml
@@ -0,0 +1,7 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 5
+title: 'ACLS'
+toc: false
+book: false
+templates:
+  node: 'acls'
diff --git a/samples/it_v2/doc/ad/acls/fs-01.yaml b/samples/it_v2/doc/ad/acls/fs-01.yaml
new file mode 100644
index 0000000..40b6d2a
--- /dev/null
+++ b/samples/it_v2/doc/ad/acls/fs-01.yaml
@@ -0,0 +1,31 @@
+# yaml-language-server: $schema=../../../schemas/ad_acls.json
+name: 'FS-01'
+folders:
+  - path: 'D:\Shares\Documents'
+    acls:
+      - name: 'Company'
+        access: 'RO'
+  - path: 'D:\Shares\Documents/Direction'
+    acls:
+      - name: 'Company Direction'
+        access: 'RW'
+  - path: 'D:\Shares\Documents/RH'
+    acls:
+      - name: 'Company Direction'
+        access: 'RO'
+      - name: 'Company RH'
+        access: 'RW'
+  - path: 'D:\Shares\Documents/Accounting'
+    acls:
+      - name: 'Company Direction'
+        access: 'RO'
+      - name: 'Company Accounting'
+        access: 'RW'
+  - path: 'D:\Shares\Documents/Secretariat'
+    acls:
+      - name: 'Company Direction'
+        access: 'RO'
+      - name: 'Company RH'
+        access: 'RO'
+      - name: 'Company Secretariat'
+        access: 'RW'
diff --git a/samples/it_v2/doc/ad/dfs/_index.yaml b/samples/it_v2/doc/ad/dfs/_index.yaml
new file mode 100644
index 0000000..116c89b
--- /dev/null
+++ b/samples/it_v2/doc/ad/dfs/_index.yaml
@@ -0,0 +1,7 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 3
+title: 'DFS'
+toc: false
+book: false
+templates:
+  node: 'dfs'
diff --git a/samples/it_v2/doc/ad/dfs/root@domain.local.yaml b/samples/it_v2/doc/ad/dfs/root@domain.local.yaml
new file mode 100644
index 0000000..fe245ac
--- /dev/null
+++ b/samples/it_v2/doc/ad/dfs/root@domain.local.yaml
@@ -0,0 +1,9 @@
+# yaml-language-server: $schema=../../../schemas/ad_dfs.json
+name: 'ROOT'
+path: '\\DOMAIN.local\ROOT'
+targets:
+  - '\\FS-01\ROOT'
+folders:
+  - name: 'Documents'
+    targets:
+      - '\\FS-01\Documents'
diff --git a/samples/it_v2/doc/ad/domains/_index.yaml b/samples/it_v2/doc/ad/domains/_index.yaml
new file mode 100644
index 0000000..814ffb0
--- /dev/null
+++ b/samples/it_v2/doc/ad/domains/_index.yaml
@@ -0,0 +1,7 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 1
+title: 'Domains'
+toc: false
+book: false
+templates:
+  node: 'domains'
diff --git a/samples/it_v2/doc/ad/domains/domain.local.yaml b/samples/it_v2/doc/ad/domains/domain.local.yaml
new file mode 100644
index 0000000..f287759
--- /dev/null
+++ b/samples/it_v2/doc/ad/domains/domain.local.yaml
@@ -0,0 +1,7 @@
+# yaml-language-server: $schema=../../../schemas/ad_domain.json
+name: 'DOMAIN.local'
+dc:
+  - name: 'dc-01'
+    fsmo: 'all'
+servers:
+  - name: 'fs-01'
diff --git a/samples/it_v2/doc/ad/shares/_index.yaml b/samples/it_v2/doc/ad/shares/_index.yaml
new file mode 100644
index 0000000..7408786
--- /dev/null
+++ b/samples/it_v2/doc/ad/shares/_index.yaml
@@ -0,0 +1,7 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 3
+title: 'Shares'
+toc: false
+book: false
+templates:
+  node: 'shares'
diff --git a/samples/it_v2/doc/ad/shares/fs-01.yaml b/samples/it_v2/doc/ad/shares/fs-01.yaml
new file mode 100644
index 0000000..c2521a6
--- /dev/null
+++ b/samples/it_v2/doc/ad/shares/fs-01.yaml
@@ -0,0 +1,7 @@
+# yaml-language-server: $schema=../../../schemas/ad_shares.json
+name: FS-01
+fileshares:
+  - path: '\\FS-01\Documents'
+printshares:
+  - path: '\\FS-01\MFC-01'
+  - path: '\\FS-01\PRINTER-01'
diff --git a/samples/it_v2/doc/ad/usergroups/_index.yaml b/samples/it_v2/doc/ad/usergroups/_index.yaml
new file mode 100644
index 0000000..4864673
--- /dev/null
+++ b/samples/it_v2/doc/ad/usergroups/_index.yaml
@@ -0,0 +1,7 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 2
+title: 'Usergroups'
+toc: false
+book: false
+templates:
+  node: 'usergroups'
diff --git a/samples/it_v2/doc/ad/usergroups/domain.local.yaml b/samples/it_v2/doc/ad/usergroups/domain.local.yaml
new file mode 100644
index 0000000..0e327a5
--- /dev/null
+++ b/samples/it_v2/doc/ad/usergroups/domain.local.yaml
@@ -0,0 +1,8 @@
+# yaml-language-server: $schema=../../../schemas/ad_usergroups.json
+name: DOMAIN.local
+usergroups:
+  - name: 'Company'
+  - name: 'Company Management'
+  - name: 'Company RH'
+  - name: 'Company Accounting'
+  - name: 'Company Secretariat'
diff --git a/samples/it_v2/doc/devices/_index.yaml b/samples/it_v2/doc/devices/_index.yaml
new file mode 100644
index 0000000..1d8dc89
--- /dev/null
+++ b/samples/it_v2/doc/devices/_index.yaml
@@ -0,0 +1,5 @@
+# yaml-language-server: $schema=../../schemas/_index.json
+index: 3
+title: Devices
+templates:
+  node: '@overview'
\ No newline at end of file
diff --git a/samples/it_v2/doc/devices/computers/_index.yaml b/samples/it_v2/doc/devices/computers/_index.yaml
new file mode 100644
index 0000000..3c72ca1
--- /dev/null
+++ b/samples/it_v2/doc/devices/computers/_index.yaml
@@ -0,0 +1,6 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 4
+title: Computers
+toc: false
+templates:
+  node: 'computers'
diff --git a/samples/it_v2/doc/devices/computers/computer-01.yaml b/samples/it_v2/doc/devices/computers/computer-01.yaml
new file mode 100644
index 0000000..eceb49d
--- /dev/null
+++ b/samples/it_v2/doc/devices/computers/computer-01.yaml
@@ -0,0 +1,20 @@
+# yaml-language-server: $schema=../../../schemas/computer.json
+name: 'computer-01'
+type: ''
+model: ''
+os: 'Windows 11 Pro'
+location: ''
+interfaces:
+  - name: 'LAN'
+    ip: '10.10.10.21'
+    mask: '255.255.255.0'
+    gw: '10.10.10.1'
+    dns:
+      - '10.10.10.1'
+updates:
+  - type: 'os'
+    method: 'auto'
+    frequency: 'auto'
+    time: 'auto'
+backups:
+  - type: 'none'
diff --git a/samples/it_v2/doc/devices/computers/computer-02.yaml b/samples/it_v2/doc/devices/computers/computer-02.yaml
new file mode 100644
index 0000000..9dea803
--- /dev/null
+++ b/samples/it_v2/doc/devices/computers/computer-02.yaml
@@ -0,0 +1,23 @@
+# yaml-language-server: $schema=../../../schemas/computer.json
+todo:
+  - msg: 'Replace computer'
+    priority: 20
+name: 'computer-02'
+type: ''
+model: ''
+os: '! Windows 7 Pro'
+location: ''
+interfaces:
+  - name: 'LAN'
+    ip: '10.10.10.22'
+    mask: '255.255.255.0'
+    gw: '10.10.10.1'
+    dns:
+      - '10.10.10.1'
+updates:
+  - type: 'os'
+    method: 'auto'
+    frequency: 'auto'
+    time: 'auto'
+backups:
+  - type: 'none'
diff --git a/samples/it_v2/doc/devices/netdevs/_index.yaml b/samples/it_v2/doc/devices/netdevs/_index.yaml
new file mode 100644
index 0000000..a48845a
--- /dev/null
+++ b/samples/it_v2/doc/devices/netdevs/_index.yaml
@@ -0,0 +1,6 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 1
+title: Network
+toc: false
+templates:
+  node: 'netdevs'
\ No newline at end of file
diff --git a/samples/it_v2/doc/devices/netdevs/firewall-01.yaml b/samples/it_v2/doc/devices/netdevs/firewall-01.yaml
new file mode 100644
index 0000000..49bcaf9
--- /dev/null
+++ b/samples/it_v2/doc/devices/netdevs/firewall-01.yaml
@@ -0,0 +1,33 @@
+# yaml-language-server: $schema=../../../schemas/netdev.json
+name: 'firewall-01'
+roles:
+  - Firewall
+  - DHCP
+  - DNS
+  - VPN
+  - VLAN
+model: 'Generic Firewall'
+os: 'Linux'
+location: ''
+interfaces:
+  - name: 'LAN'
+    ip: '10.10.10.1'
+    mask: '255.255.255.0'
+  - name: 'GUEST'
+    ip: '192.168.5.1'
+    mask: '255.255.255.0'
+  - name: 'VPN'
+    ip: '192.168.9.1'
+    mask: '255.255.255.0'
+  - name: 'WAN'
+    ip: '0.0.0.0'
+    mask: '255.255.255.255'
+updates:
+  - type: 'os'
+    method: 'auto'
+    frequency: 'tuesday'
+    time: '12:30'
+backups:
+  - type: 'manual'
+    content: 'config'
+    frequency: 'On change'
diff --git a/samples/it_v2/doc/devices/netdevs/switch-01.yaml b/samples/it_v2/doc/devices/netdevs/switch-01.yaml
new file mode 100644
index 0000000..9e1e9de
--- /dev/null
+++ b/samples/it_v2/doc/devices/netdevs/switch-01.yaml
@@ -0,0 +1,19 @@
+# yaml-language-server: $schema=../../../schemas/netdev.json
+name: 'switch-01'
+model: ''
+location: ''
+interfaces:
+  - name: 'LAN'
+    ip: '10.10.10.231'
+    mask: '255.255.255.0'
+    gw: '10.10.10.1'
+    dns: [ '10.10.10.1' ]
+updates:
+  - type: 'os'
+    method: 'manual'
+    frequency: 'yearly'
+    time: '-'
+backups:
+  - type: 'manual'
+    content: 'config'
+    frequency: 'On change'
diff --git a/samples/it_v2/doc/devices/netdevs/wifi-01.yaml b/samples/it_v2/doc/devices/netdevs/wifi-01.yaml
new file mode 100644
index 0000000..43787ca
--- /dev/null
+++ b/samples/it_v2/doc/devices/netdevs/wifi-01.yaml
@@ -0,0 +1,19 @@
+# yaml-language-server: $schema=../../../schemas/netdev.json
+name: 'wifi-01'
+model: ''
+location: ''
+interfaces:
+  - name: 'LAN'
+    ip: '10.10.10.241'
+    mask: '255.255.255.0'
+    gw: '10.10.10.1'
+    dns: [ '10.10.10.1' ]
+updates:
+  - type: 'os'
+    method: 'manual'
+    frequency: 'yearly'
+    time: '-'
+backups:
+  - type: 'manual'
+    content: 'config'
+    frequency: 'On change'
diff --git a/samples/it_v2/doc/devices/printers/_index.yaml b/samples/it_v2/doc/devices/printers/_index.yaml
new file mode 100644
index 0000000..39f2b8d
--- /dev/null
+++ b/samples/it_v2/doc/devices/printers/_index.yaml
@@ -0,0 +1,6 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 8
+title: Printers
+toc: false
+templates:
+  node: printers
\ No newline at end of file
diff --git a/samples/it_v2/doc/devices/printers/mfc-01.yaml b/samples/it_v2/doc/devices/printers/mfc-01.yaml
new file mode 100644
index 0000000..4443afe
--- /dev/null
+++ b/samples/it_v2/doc/devices/printers/mfc-01.yaml
@@ -0,0 +1,12 @@
+# yaml-language-server: $schema=../../../schemas/printer.json
+name: 'mfc-01'
+type: mfc
+model: ''
+location: ''
+interfaces:
+  - name: 'LAN'
+    ip: '10.10.10.211'
+    mask: '255.255.255.0'
+    gw: '10.10.10.1'
+    dns:
+      - '10.10.10.1'
diff --git a/samples/it_v2/doc/devices/printers/printer-01.yaml b/samples/it_v2/doc/devices/printers/printer-01.yaml
new file mode 100644
index 0000000..b250f95
--- /dev/null
+++ b/samples/it_v2/doc/devices/printers/printer-01.yaml
@@ -0,0 +1,12 @@
+# yaml-language-server: $schema=../../../schemas/printer.json
+name: 'printer-01'
+type: printer
+model: ''
+location: ''
+interfaces:
+  - name: 'LAN'
+    ip: '10.10.10.212'
+    mask: '255.255.255.0'
+    gw: '10.10.10.1'
+    dns:
+      - '10.10.10.1'
diff --git a/samples/it_v2/doc/devices/servers/_index.yaml b/samples/it_v2/doc/devices/servers/_index.yaml
new file mode 100644
index 0000000..a379dbf
--- /dev/null
+++ b/samples/it_v2/doc/devices/servers/_index.yaml
@@ -0,0 +1,6 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 2
+title: Servers
+toc: false
+templates:
+  node: 'servers'
diff --git a/samples/it_v2/doc/devices/servers/dc-01.yaml b/samples/it_v2/doc/devices/servers/dc-01.yaml
new file mode 100644
index 0000000..bd02514
--- /dev/null
+++ b/samples/it_v2/doc/devices/servers/dc-01.yaml
@@ -0,0 +1,26 @@
+# yaml-language-server: $schema=../../../schemas/server.json
+name: 'dc-01'
+type: ''
+roles: [ 'DC' ]
+model: ''
+os: 'Windows Server 2019 Std'
+location: ''
+interfaces:
+  - name: 'LAN'
+    ip: '10.10.10.110'
+    mask: '255.255.255.0'
+    gw: '10.10.10.1'
+    dns:
+      - '127.0.0.1'
+updates:
+  - type: 'os'
+    method: 'auto'
+    frequency: 'friday'
+    time: 23:30
+backups:
+  - type: 'Windows Backup'
+    content: 'All'
+    frequency: daily
+    time: 20:30
+    duration: ''
+    target: 'External HDD'
diff --git a/samples/it_v2/doc/devices/servers/fs-01.yaml b/samples/it_v2/doc/devices/servers/fs-01.yaml
new file mode 100644
index 0000000..5fb6aca
--- /dev/null
+++ b/samples/it_v2/doc/devices/servers/fs-01.yaml
@@ -0,0 +1,28 @@
+# yaml-language-server: $schema=../../../schemas/server.json
+name: 'fs-01'
+type: ''
+roles:
+  - 'File server'
+  - 'Print server'
+model: ''
+os: 'Windows Server 2019 Std'
+location: ''
+interfaces:
+  - name: 'LAN'
+    ip: '10.10.10.111'
+    mask: '255.255.255.0'
+    gw: '10.10.10.1'
+    dns:
+      - '10.10.10.1'
+updates:
+  - type: 'os'
+    method: 'auto'
+    frequency: 'friday'
+    time: 23:30
+backups:
+  - type: 'Windows Backup'
+    content: 'All'
+    frequency: daily
+    time: 20:30
+    duration: ''
+    target: 'External HDD'
diff --git a/samples/it_v2/doc/devices/servers/nas-01.yaml b/samples/it_v2/doc/devices/servers/nas-01.yaml
new file mode 100644
index 0000000..5b72f50
--- /dev/null
+++ b/samples/it_v2/doc/devices/servers/nas-01.yaml
@@ -0,0 +1,30 @@
+# yaml-language-server: $schema=../../../schemas/server.json
+todo:
+  - msg: 'Add a new NAS server for backup'
+    priority: 20
+name: 'nas-01'
+type: ''
+roles:
+  - 'Backup server'
+model: ''
+os: ''
+location: ''
+interfaces:
+  - name: 'LAN'
+    ip: '10.10.10.119'
+    mask: '255.255.255.0'
+    gw: '10.10.10.1'
+    dns:
+      - '10.10.10.1'
+updates:
+  - type: 'os'
+    method: 'auto'
+    frequency: 'friday'
+    time: 23:30
+backups:
+  - type: 'Internal Backup'
+    content: 'All'
+    frequency: daily
+    time: 20:30
+    duration: ''
+    target: 'External HDD'
diff --git a/samples/it_v2/doc/index/_index.yaml b/samples/it_v2/doc/index/_index.yaml
new file mode 100644
index 0000000..cae42ce
--- /dev/null
+++ b/samples/it_v2/doc/index/_index.yaml
@@ -0,0 +1,6 @@
+# yaml-language-server: $schema=../../schemas/_index.json
+index: 1
+title: Index
+toc: false
+templates:
+  node: '@index'
\ No newline at end of file
diff --git a/samples/it_v2/doc/maintenance/_index.yaml b/samples/it_v2/doc/maintenance/_index.yaml
new file mode 100644
index 0000000..ec11eec
--- /dev/null
+++ b/samples/it_v2/doc/maintenance/_index.yaml
@@ -0,0 +1,5 @@
+# yaml-language-server: $schema=../../schemas/_index.json
+index: 100
+title: Maintenance
+templates:
+  node: '@overview'
\ No newline at end of file
diff --git a/samples/it_v2/doc/maintenance/backups/_index.yaml b/samples/it_v2/doc/maintenance/backups/_index.yaml
new file mode 100644
index 0000000..3a63807
--- /dev/null
+++ b/samples/it_v2/doc/maintenance/backups/_index.yaml
@@ -0,0 +1,7 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 3
+title: Backups
+toc: false
+book: false
+templates:
+  node: backups
\ No newline at end of file
diff --git a/samples/it_v2/doc/maintenance/todos/_index.yaml b/samples/it_v2/doc/maintenance/todos/_index.yaml
new file mode 100644
index 0000000..2b89594
--- /dev/null
+++ b/samples/it_v2/doc/maintenance/todos/_index.yaml
@@ -0,0 +1,6 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 1
+title: TODOS
+book: false
+templates:
+  node: todos
\ No newline at end of file
diff --git a/samples/it_v2/doc/maintenance/updates/_index.yaml b/samples/it_v2/doc/maintenance/updates/_index.yaml
new file mode 100644
index 0000000..c0be36c
--- /dev/null
+++ b/samples/it_v2/doc/maintenance/updates/_index.yaml
@@ -0,0 +1,7 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 5
+title: Updates
+toc: false
+book: false
+templates:
+  node: updates
\ No newline at end of file
diff --git a/samples/it_v2/doc/network/_index.01.pug b/samples/it_v2/doc/network/_index.01.pug
new file mode 100644
index 0000000..d02e5c2
--- /dev/null
+++ b/samples/it_v2/doc/network/_index.01.pug
@@ -0,0 +1,10 @@
+h2 Overview
+div.section
+	h3 WAN
+	img(class="largeimage", src="/network/subnets?itm=05_wan&res=01.svg")
+div.section
+	h3 GUEST
+	img(class="largeimage", src="/network/subnets?itm=02_guest&res=01.svg")
+div.section
+	h3 LAN
+	img(class="largeimage", src="/network/subnets?itm=01_lan&res=01.svg")
diff --git a/samples/it_v2/doc/network/_index.yaml b/samples/it_v2/doc/network/_index.yaml
new file mode 100644
index 0000000..c89e2d4
--- /dev/null
+++ b/samples/it_v2/doc/network/_index.yaml
@@ -0,0 +1,7 @@
+# yaml-language-server: $schema=../../schemas/_index.json
+index: 2
+title: Network
+templates:
+  node: '@overview'
+headfiles:
+  - 01.pug
diff --git a/samples/it_v2/doc/network/ipam/_index.yaml b/samples/it_v2/doc/network/ipam/_index.yaml
new file mode 100644
index 0000000..79a76d0
--- /dev/null
+++ b/samples/it_v2/doc/network/ipam/_index.yaml
@@ -0,0 +1,7 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 10
+title: IPAM
+toc: false
+book: false
+templates:
+  node: ipam
\ No newline at end of file
diff --git a/samples/it_v2/doc/network/subnets/01_lan.01.drawio b/samples/it_v2/doc/network/subnets/01_lan.01.drawio
new file mode 100644
index 0000000..0c954d5
--- /dev/null
+++ b/samples/it_v2/doc/network/subnets/01_lan.01.drawio
@@ -0,0 +1 @@
+<mxfile host="app.diagrams.net" modified="2023-03-05T19:38:17.298Z" agent="5.0 (X11)" etag="oCyCbZFZh5oQalXICPcC" version="21.0.2" type="device"><diagram id="b6ezudLEMjEVSUdVGraq" name="Page-1">7Zpbc5s4FIB/jR/NcBPYj7HjNNvtTjPtzra7Lx4ZBFYCiEryrb++khCYq5NJ7aaeWfAM6EhIQuecT0fCI2ee7t9RmK//IiFKRrYZ7kfO7ci2Ldt3xUVKDoXEA5NCEFMc6kJHwWf8HWmhqaUbHCLWKMgJSTjOm8KAZBkKeEMGKSW7ZrGIJM1WcxijjuBzAJOu9AsO+bqQTmz/KL9HOF6XLVvetMhJYVlYvwlbw5DsaiJnMXLmlBBe3KX7OUrk4JXjUjx3N5BbdYyijL/kgRl7OCzGDh3/8+W/b05m0TTdjj2gO8cP5RujUAyAThLK1yQmGUwWR+mMkk0WIlmtKVLHMh8IyYXQEsJHxPlBaxNuOBGiNU8TnSt6TA9f5fOGOXVLwb+6QpW43TdSh3rqAVGcIo6oFkYk43OSEKpewDHVIeSMQ8pvpBGIjCCBjOGgFN/hpOxNdyD12DKyoYEele+fwLfFPVtCch9R92v08eZPNLZKi4Q0RvzEMOtycmhrLWg9vUNEvA09iAIUJZDjbdP2oDbhuCp31LK40YruV/rJbm9hstFNsR3mwXpsWh1zqKltiyjHwjU+wBVKHgjDHJNM5HGp9ir3JsGxlK4I5ySVBrLhCc7QvPJQpZvSG2QihGxd2ZPIyWXb6T6WSDEoDJ6MdY6WkG5W0Ch6ipjxOJ0ADy5t4JhL242XNovyPNmwZVFC1JS0+hkIBUujmUHdxUowaALypdD+pM50rqO5pjnnaq/fHaFhuXYhW9eBAX5eyadMrqbjU6qNhDvUXGiuDuUrlDyhWo43mVgzR+QI5YQYHR0vIxmqiW8xFcouxj2TiKgqKzFq9+g6Q3xH6BMzVhv2ujZaLIjUIeR5jRkrYVErUVWNI7NSppllmxexCsvrmoUPesyinDTObhZe1wx+LfCFBV0F8PudCvzuwD/Z7QYMvIRL9OKtuI3l7Q5HWM0ARY5oqZbZsZqc4IyrjoKZ+ImZ3BnZc6lfeRkBUWau5NZECZpCUJR1W+KJ3VN26vdVbCmh53cKF1Xra6tJqyUz7YHSrcrF77npjz0hNesoA+2ZNDvTImR5MR1GeC99qzsrqSFGdLFFxUhbPcQMMAuINTV2goUJYmKmDwJ5Uc92we7eyrMDdg3WIb8anEjPQEh7aj43cQKzC0hwKUC63ltHxADUAWkZpu9cFSTt64Sk3YVkGPRFxA1PH/DRgdi2pvF+B2x6KzDlecoBh5hUUaaNnwJWvSF5hz9t1pAowgEyGKKiVmaEJIU4W4qVt3iVJFGPDBndGUABPAM0SNGHChf0oOJSIbbrvzEqrEkjlrKuCxPedWLC62AiYv9jYhgTorNoWSQuCwjr9YTwLmQsvtkxi19LiCvZXesdPMe5SkCU3a4BIo16A4mhkR1cMpxegbx8u6tmK70u/vLdIHVcfDcoIDk+13rDt55db/g96w3/YhsykzdGhOdfMSM8/9y+rx99UOvnympc4BoT159Wh9cwompfr6yxYJaupGUhVa9+wmj8bhAiXGwHk6QPNK/buWhRwJ7IcygkGWRWX+TzbAihdjWWDEYyjAg2FPPDEouFhowmitd8o90K13mWHu7U6AkxnDMsQv52wR+r9+9tsj+ku+mnj5w+OmPrbTZ095gX+AA6VbFD3B/RIRMNcuiwBDijxh7Hq5Yu56RL79j+9iuUU72usSGnygd7Vyna83CqPoSf2rlsfuYbXEoo95vB4ClWVtb3MUY1dlPuf6pFRXszVPfnds25/NJ/I4fEvgvCzDUkCCIs7JeKwCCV29SQQ3FRgBDXYv0x5sJWRApIB7nzhZ9MjDyLzxFBtBhgOxfbshTJ4x8Eisnj+DcLZ/ED</diagram></mxfile>
\ No newline at end of file
diff --git a/samples/it_v2/doc/network/subnets/01_lan.01.svg b/samples/it_v2/doc/network/subnets/01_lan.01.svg
new file mode 100644
index 0000000..a424788
--- /dev/null
+++ b/samples/it_v2/doc/network/subnets/01_lan.01.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Do not edit this file with editors other than diagrams.net -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="754px" height="294px" viewBox="-0.5 -0.5 754 294" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2023-03-05T19:38:25.829Z&quot; agent=&quot;5.0 (X11)&quot; etag=&quot;8jscD-zKR9GG5IqyHH0f&quot; version=&quot;21.0.2&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;b6ezudLEMjEVSUdVGraq&quot; name=&quot;Page-1&quot;&gt;7Zpbc5s4FIB/jR/NcBPYj7HjNNvtTjPtzra7Lx4ZBFYCiEryrb++khCYq5NJ7aaeWfAM6EhIQuecT0fCI2ee7t9RmK//IiFKRrYZ7kfO7ci2Ldt3xUVKDoXEA5NCEFMc6kJHwWf8HWmhqaUbHCLWKMgJSTjOm8KAZBkKeEMGKSW7ZrGIJM1WcxijjuBzAJOu9AsO+bqQTmz/KL9HOF6XLVvetMhJYVlYvwlbw5DsaiJnMXLmlBBe3KX7OUrk4JXjUjx3N5BbdYyijL/kgRl7OCzGDh3/8+W/b05m0TTdjj2gO8cP5RujUAyAThLK1yQmGUwWR+mMkk0WIlmtKVLHMh8IyYXQEsJHxPlBaxNuOBGiNU8TnSt6TA9f5fOGOXVLwb+6QpW43TdSh3rqAVGcIo6oFkYk43OSEKpewDHVIeSMQ8pvpBGIjCCBjOGgFN/hpOxNdyD12DKyoYEele+fwLfFPVtCch9R92v08eZPNLZKi4Q0RvzEMOtycmhrLWg9vUNEvA09iAIUJZDjbdP2oDbhuCp31LK40YruV/rJbm9hstFNsR3mwXpsWh1zqKltiyjHwjU+wBVKHgjDHJNM5HGp9ir3JsGxlK4I5ySVBrLhCc7QvPJQpZvSG2QihGxd2ZPIyWXb6T6WSDEoDJ6MdY6WkG5W0Ch6ipjxOJ0ADy5t4JhL242XNovyPNmwZVFC1JS0+hkIBUujmUHdxUowaALypdD+pM50rqO5pjnnaq/fHaFhuXYhW9eBAX5eyadMrqbjU6qNhDvUXGiuDuUrlDyhWo43mVgzR+QI5YQYHR0vIxmqiW8xFcouxj2TiKgqKzFq9+g6Q3xH6BMzVhv2ujZaLIjUIeR5jRkrYVErUVWNI7NSppllmxexCsvrmoUPesyinDTObhZe1wx+LfCFBV0F8PudCvzuwD/Z7QYMvIRL9OKtuI3l7Q5HWM0ARY5oqZbZsZqc4IyrjoKZ+ImZ3BnZc6lfeRkBUWau5NZECZpCUJR1W+KJ3VN26vdVbCmh53cKF1Xra6tJqyUz7YHSrcrF77npjz0hNesoA+2ZNDvTImR5MR1GeC99qzsrqSFGdLFFxUhbPcQMMAuINTV2goUJYmKmDwJ5Uc92we7eyrMDdg3WIb8anEjPQEh7aj43cQKzC0hwKUC63ltHxADUAWkZpu9cFSTt64Sk3YVkGPRFxA1PH/DRgdi2pvF+B2x6KzDlecoBh5hUUaaNnwJWvSF5hz9t1pAowgEyGKKiVmaEJIU4W4qVt3iVJFGPDBndGUABPAM0SNGHChf0oOJSIbbrvzEqrEkjlrKuCxPedWLC62AiYv9jYhgTorNoWSQuCwjr9YTwLmQsvtkxi19LiCvZXesdPMe5SkCU3a4BIo16A4mhkR1cMpxegbx8u6tmK70u/vLdIHVcfDcoIDk+13rDt55db/g96w3/YhsykzdGhOdfMSM8/9y+rx99UOvnympc4BoT159Wh9cwompfr6yxYJaupGUhVa9+wmj8bhAiXGwHk6QPNK/buWhRwJ7IcygkGWRWX+TzbAihdjWWDEYyjAg2FPPDEouFhowmitd8o90K13mWHu7U6AkxnDMsQv52wR+r9+9tsj+ku+mnj5w+OmPrbTZ095gX+AA6VbFD3B/RIRMNcuiwBDijxh7Hq5Yu56RL79j+9iuUU72usSGnygd7Vyna83CqPoSf2rlsfuYbXEoo95vB4ClWVtb3MUY1dlPuf6pFRXszVPfnds25/NJ/I4fEvgvCzDUkCCIs7JeKwCCV29SQQ3FRgBDXYv0x5sJWRApIB7nzhZ9MjDyLzxFBtBhgOxfbshTJ4x8Eisnj+DcLZ/ED&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><path d="M 72 38.37 L 72 84.5 L 71.73 130.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 72 33.12 L 75.5 40.12 L 72 38.37 L 68.5 40.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 71.69 135.88 L 68.24 128.86 L 71.73 130.63 L 75.24 128.9 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1" y="17" width="142" height="15" fill="#404040" stroke="#050505" stroke-width="0.17" pointer-events="all"/><path d="M 3.39 26.38 L 3.39 28.89 L 4.25 28.89 L 4.25 29.68 L 6.36 29.68 L 6.36 28.89 L 7.16 28.89 L 7.16 26.38 L 3.39 26.38 Z" fill="#1a1a1a" stroke="#313131" stroke-width="0.17" stroke-miterlimit="10" pointer-events="all"/><rect x="1" y="17" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 71.97 20.23 L 100.07 20.23 L 100.07 29.16 L 71.97 29.16 L 71.97 20.23 Z M 100.48 20.23 L 128.58 20.23 L 128.58 29.16 L 100.48 29.16 L 100.48 20.23 Z" fill="#f2f2f2" stroke="none" pointer-events="all"/><path d="M 75.99 28.75 L 76.84 28.75 L 76.84 28.26 L 75.99 28.26 L 75.99 28.75 Z M 72.65 28.75 L 73.51 28.75 L 73.51 28.25 L 72.65 28.25 L 72.65 28.75 Z M 80.5 28.75 L 81.35 28.75 L 81.35 28.26 L 80.5 28.26 L 80.5 28.75 Z M 77.16 28.75 L 78.02 28.75 L 78.02 28.25 L 77.16 28.25 L 77.16 28.75 Z M 85.01 28.75 L 85.87 28.75 L 85.87 28.26 L 85.01 28.26 L 85.01 28.75 Z M 81.67 28.75 L 82.53 28.75 L 82.53 28.25 L 81.67 28.25 L 81.67 28.75 Z M 89.52 28.75 L 90.38 28.75 L 90.38 28.26 L 89.52 28.26 L 89.52 28.75 Z M 86.18 28.75 L 87.04 28.75 L 87.04 28.25 L 86.18 28.25 L 86.18 28.75 Z M 94.03 28.75 L 94.89 28.75 L 94.89 28.26 L 94.03 28.26 L 94.03 28.75 Z M 90.69 28.75 L 91.55 28.75 L 91.55 28.25 L 90.69 28.25 L 90.69 28.75 Z M 98.54 28.75 L 99.4 28.75 L 99.4 28.26 L 98.54 28.26 L 98.54 28.75 Z M 95.21 28.75 L 96.06 28.75 L 96.06 28.25 L 95.21 28.25 L 95.21 28.75 Z M 104.5 28.75 L 105.36 28.75 L 105.36 28.26 L 104.5 28.26 L 104.5 28.75 Z M 101.17 28.75 L 102.02 28.75 L 102.02 28.25 L 101.17 28.25 L 101.17 28.75 Z M 109.01 28.75 L 109.87 28.75 L 109.87 28.26 L 109.01 28.26 L 109.01 28.75 Z M 105.68 28.75 L 106.54 28.75 L 106.54 28.25 L 105.68 28.25 L 105.68 28.75 Z M 113.52 28.75 L 114.38 28.75 L 114.38 28.26 L 113.52 28.26 L 113.52 28.75 Z M 110.19 28.75 L 111.05 28.75 L 111.05 28.25 L 110.19 28.25 L 110.19 28.75 Z M 118.04 28.75 L 118.89 28.75 L 118.89 28.26 L 118.04 28.26 L 118.04 28.75 Z M 114.7 28.75 L 115.56 28.75 L 115.56 28.25 L 114.7 28.25 L 114.7 28.75 Z M 122.55 28.75 L 123.4 28.75 L 123.4 28.26 L 122.55 28.26 L 122.55 28.75 Z M 119.21 28.75 L 120.07 28.75 L 120.07 28.25 L 119.21 28.25 L 119.21 28.75 Z M 127.06 28.75 L 127.91 28.75 L 127.91 28.26 L 127.06 28.26 L 127.06 28.75 Z M 123.72 28.75 L 124.58 28.75 L 124.58 28.25 L 123.72 28.25 L 123.72 28.75 Z" fill="#96ad92" stroke="#646664" stroke-width="0.1" stroke-miterlimit="10" pointer-events="all"/><rect x="1" y="17" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 73.78 28.77 L 73.78 27.83 L 72.88 27.83 L 72.88 25.5 L 76.66 25.5 L 76.66 27.83 L 75.77 27.83 L 75.77 28.77 L 73.78 28.77 Z M 78.29 28.77 L 78.29 27.83 L 77.39 27.83 L 77.39 25.5 L 81.17 25.5 L 81.17 27.83 L 80.28 27.83 L 80.28 28.77 L 78.29 28.77 Z M 82.8 28.77 L 82.8 27.83 L 81.9 27.83 L 81.9 25.5 L 85.68 25.5 L 85.68 27.83 L 84.79 27.83 L 84.79 28.77 L 82.8 28.77 Z M 87.31 28.77 L 87.31 27.83 L 86.41 27.83 L 86.41 25.5 L 90.2 25.5 L 90.2 27.83 L 89.3 27.83 L 89.3 28.77 L 87.31 28.77 Z M 91.82 28.77 L 91.82 27.83 L 90.92 27.83 L 90.92 25.5 L 94.71 25.5 L 94.71 27.83 L 93.81 27.83 L 93.81 28.77 L 91.82 28.77 Z M 96.34 20.54 L 96.34 21.47 L 95.44 21.47 L 95.44 23.81 L 99.22 23.81 L 99.22 21.47 L 98.33 21.47 L 98.33 20.54 L 96.34 20.54 Z M 91.84 20.54 L 91.84 21.47 L 90.95 21.47 L 90.95 23.81 L 94.73 23.81 L 94.73 21.47 L 93.84 21.47 L 93.84 20.54 L 91.84 20.54 Z M 87.35 20.54 L 87.35 21.47 L 86.46 21.47 L 86.46 23.81 L 90.24 23.81 L 90.24 21.47 L 89.35 21.47 L 89.35 20.54 L 87.35 20.54 Z M 82.86 20.54 L 82.86 21.47 L 81.96 21.47 L 81.96 23.81 L 85.75 23.81 L 85.75 21.47 L 84.85 21.47 L 84.85 20.54 L 82.86 20.54 Z M 78.37 20.54 L 78.37 21.47 L 77.47 21.47 L 77.47 23.81 L 81.25 23.81 L 81.25 21.47 L 80.36 21.47 L 80.36 20.54 L 78.37 20.54 Z M 73.87 20.54 L 73.87 21.47 L 72.98 21.47 L 72.98 23.81 L 76.76 23.81 L 76.76 21.47 L 75.87 21.47 L 75.87 20.54 L 73.87 20.54 Z M 96.33 28.77 L 96.33 27.83 L 95.43 27.83 L 95.43 25.5 L 99.22 25.5 L 99.22 27.83 L 98.32 27.83 L 98.32 28.77 L 96.33 28.77 Z M 102.29 28.77 L 102.29 27.83 L 101.4 27.83 L 101.4 25.5 L 105.18 25.5 L 105.18 27.83 L 104.29 27.83 L 104.29 28.77 L 102.29 28.77 Z M 106.8 28.77 L 106.8 27.83 L 105.91 27.83 L 105.91 25.5 L 109.69 25.5 L 109.69 27.83 L 108.8 27.83 L 108.8 28.77 L 106.8 28.77 Z M 111.31 28.77 L 111.31 27.83 L 110.42 27.83 L 110.42 25.5 L 114.2 25.5 L 114.2 27.83 L 113.31 27.83 L 113.31 28.77 L 111.31 28.77 Z M 115.82 28.77 L 115.82 27.83 L 114.93 27.83 L 114.93 25.5 L 118.71 25.5 L 118.71 27.83 L 117.82 27.83 L 117.82 28.77 L 115.82 28.77 Z M 120.33 28.77 L 120.33 27.83 L 119.44 27.83 L 119.44 25.5 L 123.22 25.5 L 123.22 27.83 L 122.33 27.83 L 122.33 28.77 L 120.33 28.77 Z M 124.85 20.54 L 124.85 21.47 L 123.96 21.47 L 123.96 23.81 L 127.74 23.81 L 127.74 21.47 L 126.85 21.47 L 126.85 20.54 L 124.85 20.54 Z M 120.36 20.54 L 120.36 21.47 L 119.47 21.47 L 119.47 23.81 L 123.25 23.81 L 123.25 21.47 L 122.35 21.47 L 122.35 20.54 L 120.36 20.54 Z M 115.87 20.54 L 115.87 21.47 L 114.97 21.47 L 114.97 23.81 L 118.76 23.81 L 118.76 21.47 L 117.86 21.47 L 117.86 20.54 L 115.87 20.54 Z M 111.38 20.54 L 111.38 21.47 L 110.48 21.47 L 110.48 23.81 L 114.26 23.81 L 114.26 21.47 L 113.37 21.47 L 113.37 20.54 L 111.38 20.54 Z M 106.88 20.54 L 106.88 21.47 L 105.99 21.47 L 105.99 23.81 L 109.77 23.81 L 109.77 21.47 L 108.88 21.47 L 108.88 20.54 L 106.88 20.54 Z M 102.39 20.54 L 102.39 21.47 L 101.5 21.47 L 101.5 23.81 L 105.28 23.81 L 105.28 21.47 L 104.38 21.47 L 104.38 20.54 L 102.39 20.54 Z M 124.85 28.77 L 124.85 27.83 L 123.95 27.83 L 123.95 25.5 L 127.73 25.5 L 127.73 27.83 L 126.84 27.83 L 126.84 28.77 L 124.85 28.77 Z" fill="#333" stroke="none" pointer-events="all"/><rect x="1.56" y="17.28" width="5.81" height="3.23" fill="#333" stroke="#282828" stroke-width="0.13" pointer-events="all"/><rect x="8.43" y="17.64" width="5.81" height="3.5" fill="#4d4d4d" stroke="#808080" stroke-width="0.1" pointer-events="all"/><path d="M 4.33 22.76 L 7.28 22.76 L 7.28 23.51 L 4.33 23.51 L 4.33 22.76 Z M 4.33 21.53 L 7.28 21.53 L 7.28 22.27 L 4.33 22.27 L 4.33 21.53 Z" fill="#cde1cb" stroke="#2a2a2a" stroke-width="0.13" stroke-miterlimit="10" pointer-events="all"/><rect x="15.47" y="28.25" width="2.32" height="0.72" fill="none" stroke="#808080" stroke-width="0.13" pointer-events="all"/><rect x="1" y="17" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="136.3" y="20.41" width="4.84" height="8.51" fill="#f2f2f2" stroke="none" pointer-events="all"/><path d="M 136.52 25.7 L 140.92 25.7 L 140.92 28.63 L 136.52 28.63 L 136.52 25.7 Z M 136.52 20.7 L 140.92 20.7 L 140.92 23.62 L 136.52 23.62 L 136.52 20.7 Z" fill="#262626" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 14px; margin-left: 72px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">switch-01</div></div></div></foreignObject><text x="72" y="14" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">switch-01</text></switch></g><path d="M 9 157 C 5.65 154.78 3.63 151.02 3.63 147 C 3.63 142.98 5.65 139.22 9 137 L 745 137 C 748.35 139.22 750.37 142.98 750.37 147 C 750.37 151.02 748.35 154.78 745 157 Z" fill="#cccccc" stroke="#6881b3" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 745 137 C 748.35 139.22 750.37 142.98 750.37 147 C 750.37 151.02 748.35 154.78 745 157 C 741.65 154.78 739.63 151.02 739.63 147 C 739.63 142.98 741.65 139.22 745 137" fill="#ffffff" stroke="#6881b3" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 278 73.37 L 278 102 L 277.78 130.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 278 68.12 L 281.5 75.12 L 278 73.37 L 274.5 75.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 277.74 135.88 L 274.3 128.86 L 277.78 130.63 L 281.3 128.91 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="253" y="17" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><path d="M 260.78 17 L 260.78 20.25 L 261.24 20.25 L 261.24 25.01 L 261.11 25.01 C 260.43 25.01 259.87 25.58 259.87 26.28 L 259.87 34.01 L 257.22 34.01 C 254.89 34.01 253 35.95 253 38.34 L 253 62.67 C 253 65.06 254.89 67 257.22 67 L 298.78 67 C 301.11 67 303 65.06 303 62.67 L 303 38.34 C 303 35.95 301.11 34.01 298.78 34.01 L 295.92 34.01 L 295.92 26.28 C 295.92 25.58 295.37 25.01 294.68 25.01 L 294.55 25.01 L 294.55 20.25 L 295.01 20.25 L 295.01 17 L 292.69 17 L 292.69 20.25 L 293.15 20.25 L 293.15 25.01 L 293.02 25.01 C 292.33 25.01 291.78 25.58 291.78 26.28 L 291.78 34.01 L 264.01 34.01 L 264.01 26.28 C 264.01 25.58 263.46 25.01 262.78 25.01 L 262.64 25.01 L 262.64 20.25 L 263.11 20.25 L 263.11 17 Z M 257.22 35.32 L 298.78 35.32 C 300.42 35.32 301.72 36.66 301.72 38.34 L 301.72 62.67 C 301.72 64.36 300.42 65.69 298.78 65.69 L 257.22 65.69 C 255.58 65.69 254.28 64.36 254.28 62.67 L 254.28 38.34 C 254.28 36.66 255.58 35.32 257.22 35.32 Z M 265 50.98 C 264.08 50.98 263.35 51.53 262.84 52.14 C 262.58 52.44 262.36 52.78 262.17 53.11 C 262.04 52.88 261.89 52.66 261.73 52.46 C 261.27 51.88 260.65 51.4 259.85 51.4 C 259.04 51.4 258.32 51.91 257.78 52.51 C 257.27 53.09 256.9 53.75 256.87 54.41 L 256.46 54.41 C 256.46 55.28 256.89 56.02 257.48 56.67 C 258.07 57.33 258.86 57.92 259.85 57.92 C 260.81 57.92 261.55 57.33 262.05 56.7 C 262.28 56.41 262.48 56.1 262.65 55.79 C 262.8 56.03 262.97 56.27 263.15 56.49 C 263.62 57.04 264.23 57.5 265 57.5 C 265.78 57.5 266.38 57.01 266.83 56.45 C 267.03 56.2 267.21 55.93 267.37 55.66 C 267.6 56 267.85 56.36 268.13 56.69 C 268.64 57.29 269.23 57.92 270.15 57.92 C 270.97 57.92 271.59 57.42 272.1 56.85 C 272.4 56.51 272.67 56.12 272.93 55.71 C 273.12 56.03 273.32 56.33 273.55 56.6 C 273.99 57.12 274.57 57.5 275.3 57.5 C 276.06 57.5 276.65 57.02 277.1 56.47 C 277.3 56.22 277.48 55.94 277.65 55.66 C 277.85 56 278.07 56.35 278.32 56.69 C 278.8 57.3 279.51 57.92 280.45 57.92 C 281.37 57.92 282.08 57.35 282.56 56.75 C 282.82 56.42 283.04 56.06 283.24 55.7 C 283.41 55.99 283.59 56.27 283.79 56.53 C 284.22 57.07 284.82 57.5 285.6 57.5 C 286.39 57.5 286.99 57.05 287.42 56.51 C 287.62 56.25 287.8 55.97 287.96 55.69 C 288.17 56.04 288.39 56.4 288.65 56.73 C 289.12 57.34 289.83 57.92 290.75 57.92 C 291.67 57.92 292.39 57.36 292.88 56.74 C 293.14 56.42 293.35 56.08 293.55 55.74 C 293.68 55.98 293.83 56.22 293.99 56.45 C 294.41 57.02 295.03 57.5 295.9 57.5 C 296.82 57.5 297.56 56.93 298.07 56.29 C 298.57 55.66 298.89 54.99 298.89 54.41 L 299.3 54.41 C 299.3 52.65 297.89 50.98 295.9 50.98 C 294.9 50.98 294.1 51.51 293.64 52.13 C 293.39 52.47 293.2 52.83 293.02 53.17 C 292.88 52.93 292.73 52.7 292.56 52.48 C 292.12 51.91 291.53 51.4 290.75 51.4 C 289.99 51.4 289.4 51.87 288.97 52.43 C 288.78 52.67 288.61 52.94 288.44 53.21 C 288.24 52.85 288.01 52.47 287.74 52.12 C 287.27 51.53 286.53 50.98 285.6 50.98 C 284.68 50.98 283.95 51.51 283.47 52.11 C 283.2 52.45 282.97 52.83 282.76 53.2 C 282.6 52.92 282.43 52.66 282.24 52.41 C 281.8 51.86 281.22 51.4 280.45 51.4 C 279.67 51.4 279.09 51.9 278.65 52.47 C 278.46 52.71 278.29 52.97 278.14 53.23 C 277.93 52.88 277.69 52.5 277.41 52.16 C 276.93 51.56 276.23 50.98 275.3 50.98 C 274.45 50.98 273.72 51.45 273.24 52.02 C 272.93 52.38 272.68 52.78 272.45 53.2 C 272.24 52.88 272.02 52.59 271.8 52.33 C 271.33 51.8 270.79 51.4 270.15 51.4 C 269.46 51.4 268.92 51.91 268.44 52.48 C 268.24 52.72 268.04 52.99 267.86 53.25 C 267.66 52.9 267.43 52.53 267.15 52.18 C 266.66 51.58 265.94 50.98 265 50.98 Z M 259.85 52.24 C 260.33 52.24 260.72 52.52 261.09 52.99 C 261.32 53.28 261.53 53.63 261.72 53.98 C 261.71 54 261.7 54.02 261.69 54.04 C 261.42 54.61 261.11 55.22 260.77 55.64 C 260.44 56.06 260.17 56.24 259.85 56.24 C 259.57 56.24 259.07 55.97 258.69 55.54 C 258.31 55.11 258.1 54.51 258.1 54.41 L 257.69 54.41 C 257.73 54.09 257.99 53.52 258.39 53.07 C 258.82 52.59 259.39 52.24 259.85 52.24 Z M 270.15 52.24 C 270.43 52.24 270.79 52.45 271.19 52.9 C 271.46 53.2 271.73 53.59 271.99 54.03 C 271.63 54.71 271.24 55.32 270.89 55.72 C 270.53 56.12 270.25 56.24 270.15 56.24 C 270.16 56.24 269.76 56.05 269.37 55.59 C 269 55.15 268.62 54.55 268.33 54.05 C 268.55 53.7 268.8 53.34 269.06 53.03 C 269.48 52.53 269.93 52.24 270.15 52.24 Z M 280.45 52.24 C 280.91 52.24 281.24 52.48 281.6 52.94 C 281.83 53.24 282.06 53.62 282.29 54.03 C 281.92 54.68 281.59 55.3 281.28 55.69 C 280.96 56.1 280.76 56.24 280.45 56.24 C 280.18 56.24 279.95 56.08 279.61 55.64 C 279.29 55.23 278.97 54.63 278.62 54.04 C 278.84 53.66 279.06 53.29 279.29 52.99 C 279.66 52.51 280.01 52.24 280.45 52.24 Z M 290.75 52.24 C 291.19 52.24 291.54 52.52 291.91 53 C 292.14 53.3 292.36 53.67 292.59 54.05 C 292.25 54.67 291.93 55.28 291.61 55.68 C 291.29 56.09 291.05 56.24 290.75 56.24 C 290.46 56.24 290.25 56.1 289.93 55.68 C 289.62 55.28 289.29 54.67 288.92 54.04 C 289.15 53.64 289.37 53.25 289.61 52.96 C 289.97 52.49 290.3 52.24 290.75 52.24 Z M 265 52.66 C 265.28 52.66 265.54 52.83 265.88 53.25 C 266.22 53.67 266.55 54.28 266.87 54.84 C 266.88 54.85 266.88 54.86 266.89 54.86 C 266.67 55.23 266.44 55.61 266.2 55.91 C 265.82 56.38 265.44 56.66 265 56.66 C 264.55 56.66 264.15 56.39 263.77 55.94 C 263.53 55.64 263.3 55.28 263.1 54.91 C 263.12 54.87 263.14 54.82 263.16 54.78 C 263.43 54.23 263.75 53.64 264.08 53.23 C 264.42 52.83 264.71 52.66 265 52.66 Z M 275.3 52.66 C 275.58 52.66 275.81 52.81 276.15 53.23 C 276.48 53.64 276.81 54.25 277.18 54.85 C 276.94 55.25 276.71 55.63 276.46 55.94 C 276.09 56.4 275.74 56.66 275.3 56.66 C 274.83 56.66 274.51 56.46 274.16 56.05 C 273.91 55.75 273.67 55.35 273.41 54.88 C 273.42 54.86 273.43 54.84 273.44 54.82 C 273.83 54.09 274.17 53.49 274.47 53.13 C 274.78 52.77 274.96 52.66 275.3 52.66 Z M 285.6 52.66 C 285.97 52.66 286.16 52.79 286.46 53.18 C 286.77 53.57 287.09 54.19 287.48 54.85 C 287.48 54.85 287.48 54.86 287.49 54.86 C 287.24 55.28 287.02 55.68 286.78 55.98 C 286.43 56.42 286.11 56.66 285.6 56.66 C 285.09 56.66 284.77 56.43 284.42 55.99 C 284.19 55.69 283.96 55.3 283.72 54.87 C 283.72 54.86 283.73 54.85 283.73 54.84 C 284.12 54.17 284.44 53.55 284.74 53.17 C 285.04 52.79 285.22 52.66 285.6 52.66 Z M 295.9 52.66 C 297 52.66 297.66 53.57 297.66 54.41 L 298.07 54.41 C 298.07 54.58 297.84 55.25 297.43 55.76 C 297.02 56.27 296.48 56.66 295.9 56.66 C 295.29 56.66 294.98 56.4 294.65 55.95 C 294.43 55.65 294.24 55.26 294.02 54.86 C 294.03 54.85 294.04 54.83 294.05 54.81 C 294.41 54.13 294.67 53.52 294.94 53.16 C 295.21 52.8 295.36 52.66 295.9 52.66 Z" fill="#4d4d4d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 14px; margin-left: 278px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><div>wifi-01</div></div></div></div></foreignObject><text x="278" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">wifi-01</text></switch></g><path d="M 42 210.63 L 42 187 L 42.28 164.83" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 42 215.88 L 38.5 208.88 L 42 210.63 L 45.5 208.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 42.35 159.58 L 45.76 166.62 L 42.28 164.83 L 38.76 166.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="19.5" y="217" width="45" height="55" fill="none" stroke="none" pointer-events="all"/><path d="M 41.05 225.92 L 41.05 223.69 L 24.7 223.69 L 24.7 225.92 Z M 19.5 269.03 L 19.5 219.84 C 19.5 218.26 20.97 217 22.38 217 L 43.36 217 C 45.05 217 46.25 218.58 46.25 219.86 L 46.25 245.49 L 41.53 254.16 L 24.7 254.16 L 24.7 256.39 L 40.33 256.39 L 37.91 260.85 L 24.7 260.85 L 24.7 263.08 L 36.7 263.08 L 33.47 269.03 Z M 36.41 272 C 35.38 272 34.74 271.32 35.26 270.26 L 48.5 245.94 C 48.99 245.09 49.93 244.83 50.62 245.96 L 63.88 270.19 C 64.5 271.3 63.78 272 62.78 272 Z" fill="#505050" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 279px; margin-left: 42px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">dc-01</div></div></div></foreignObject><text x="42" y="291" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">dc-01</text></switch></g><path d="M 142 210.63 L 142 187 L 142.3 163.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 142 215.88 L 138.5 208.88 L 142 210.63 L 145.5 208.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 142.36 158.12 L 145.77 165.16 L 142.3 163.37 L 138.77 165.07 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="119.5" y="217" width="45" height="56" fill="none" stroke="none" pointer-events="all"/><path d="M 141.25 225.96 L 141.25 223.72 L 124.75 223.72 L 124.75 225.96 Z M 150.78 249.85 L 153.6 247.25 C 154.31 246.65 154.86 246.12 155.45 246.12 L 162.67 246.12 C 164.01 246.12 164.5 247.4 164.5 248.03 L 164.5 249.85 Z M 135.25 273 L 135.25 253.22 C 135.25 252.29 135.97 251.35 137.05 251.35 L 164.5 251.35 L 164.5 273 Z M 119.5 269.27 L 119.5 219.93 C 119.5 218.39 120.85 217 122.46 217 L 143.53 217 C 145.14 217 146.5 218.39 146.5 219.9 L 146.5 249.18 L 136.96 249.18 C 134.87 249.18 133 250.96 133 253.16 L 133 254.33 L 124.75 254.33 L 124.75 256.57 L 133 256.57 L 133 261.05 L 124.75 261.05 L 124.75 263.29 L 133 263.29 L 133 269.27 Z" fill="#505050" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 280px; margin-left: 142px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">fs-01</div></div></div></foreignObject><text x="142" y="292" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fs-01</text></switch></g><path d="M 708 93.37 L 708 112 L 707.91 130.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 708 88.12 L 711.5 95.12 L 708 93.37 L 704.5 95.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 707.89 135.88 L 704.42 128.87 L 707.91 130.63 L 711.42 128.9 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 687 82.8 C 685.45 82.8 684.2 81.55 684.2 80 L 684.2 49.55 L 673 42.2 L 673 40.1 L 684.2 46.4 L 684.2 38 L 676.5 33.1 L 676.5 31 L 684.2 35.2 L 684.2 29.6 L 696.1 29.6 L 698.9 31.35 L 704.5 31.35 L 704.5 21.2 L 718.5 17 L 718.5 24.7 L 731.8 19.8 L 731.8 18.4 L 740.9 18.4 L 740.9 20.5 L 743 22.6 L 743 80 C 743 80.74 742.71 81.45 742.18 81.98 C 741.65 82.51 740.94 82.8 740.2 82.8 Z" fill="#cccccc" stroke="#666666" stroke-width="1.4" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="737.4" cy="84.9" rx="2.0999999999999996" ry="2.0999999999999996" fill="#cccccc" stroke="#666666" stroke-width="1.4" pointer-events="all"/><ellipse cx="688.4" cy="84.9" rx="2.0999999999999996" ry="2.0999999999999996" fill="#cccccc" stroke="#666666" stroke-width="1.4" pointer-events="all"/><path d="M 704.5 82.8 L 704.5 31.35 M 704.5 34.5 L 698.9 31.35 M 704.5 34.5 L 730.4 34.5 M 704.5 54.8 L 743 54.8 M 704.5 61.8 L 743 61.8 M 717.1 54.8 L 717.1 61.8 M 704.5 68.8 L 743 68.8 M 704.5 75.8 L 743 75.8 M 730.4 37.3 L 730.4 28.9 L 743 28.9 M 704.5 37.3 L 743 37.3 M 684.2 34.5 L 684.2 52" fill="none" stroke="#666666" stroke-width="1.4" stroke-miterlimit="10" pointer-events="all"/><rect x="710.1" y="27.5" width="16.8" height="4.9" fill="none" stroke="#666666" stroke-width="1.4" pointer-events="all"/><rect x="719.2" y="77.9" width="7" height="2.1" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="719.2" y="70.9" width="7" height="2.1" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="719.2" y="63.9" width="7" height="2.1" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="719.2" y="56.9" width="7" height="2.1" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="711.5" y="28.9" width="8.4" height="2.1" fill="#ffffff" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 14px; margin-left: 708px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">mfc-01</div></div></div></foreignObject><text x="708" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">mfc-01</text></switch></g><path d="M 417.8 58.37 L 417.8 94.5 L 417.84 130.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 417.8 53.12 L 421.3 60.12 L 417.8 58.37 L 414.3 60.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 417.85 135.88 L 414.34 128.89 L 417.84 130.63 L 421.34 128.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="393" y="17" width="49.5" height="35" fill="none" stroke="none" pointer-events="all"/><path d="M 393 17 L 393 23.66 L 407.71 23.66 L 407.71 17 Z M 410.34 17 L 410.34 23.66 L 425.16 23.66 L 425.16 17 Z M 427.79 17 L 427.79 23.66 L 442.5 23.66 L 442.5 17 Z M 393 26.53 L 393 33.07 L 398.99 33.07 L 398.99 26.53 Z M 401.61 26.53 L 401.61 33.07 L 416.43 33.07 L 416.43 26.53 Z M 419.06 26.53 L 419.06 33.07 L 433.88 33.07 L 433.88 26.53 Z M 436.51 26.53 L 436.51 33.07 L 442.5 33.07 L 442.5 26.53 Z M 393 35.93 L 393 42.47 L 407.71 42.47 L 407.71 35.93 Z M 410.34 35.93 L 410.34 42.47 L 425.16 42.47 L 425.16 35.93 Z M 427.79 35.93 L 427.79 42.47 L 442.5 42.47 L 442.5 35.93 Z M 393 45.34 L 393 52 L 398.99 52 L 398.99 45.34 Z M 401.61 45.34 L 401.61 52 L 416.43 52 L 416.43 45.34 Z M 419.06 45.34 L 419.06 52 L 433.88 52 L 433.88 45.34 Z M 436.51 45.34 L 436.51 52 L 442.5 52 L 442.5 45.34 Z" fill="#282828" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 14px; margin-left: 418px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">firewall-01</div></div></div></foreignObject><text x="418" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">firewall...</text></switch></g><path d="M 718 200.63 L 718 182 L 717.75 165.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 718 205.88 L 714.5 198.88 L 718 200.63 L 721.5 198.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 717.67 160.12 L 721.28 167.06 L 717.75 165.37 L 714.28 167.17 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><image x="692.5" y="206.5" width="50" height="50" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAHvElEQVR4Xu1dZ8gdRRRNNBYssWAviCEq1gixxBafBSsqihVUEEFF4y9FRf0niooiIiJRUFBBxMT2Q2N/9oY/LKhYUOxdEUvEes7HbNg89307b78t8+49A4e3b9/dnbn3nr1T3s7M9GlKri0w3bX2Un6aCOCcBCKACODcAs7VVwQQAZxbwLn6igAigHMLOFdfEUAEcG4B5+orAogAyVhgDZRkV2DFZErUTEH+xm1fBX5p5vaj3TWlCPAEir7/aMUfW+knUfIDUih9SgT4HAbZJAWjtFCGL5DHpi3kU5pFigS4D6W+vLTk4ylwCYp9NCACFPgviwA347czx9O/paVeCIkzRIBiO4kApfypXyDFKkARoH4/D72jCNCisZGVqoBJ7K0qoF0yTuSmCNCu0RUBFAHUCxjGAVUB7UYjVQEd2FtVgKoAVQGqAjQUXMgBtQE6qJPUDWzX6GoDqA2gNoDaAGoDqA0ACyT5QsghKNicdqvFZbldjKOZwCvAvR2Voelsj0EGuwE/A1c0ndmQ+7+O80uy3/KNwO1w8q3E/h/oyEams/0X2u0AvE0t8wTo4ftTplWXcpkF9sNBfzICHIkfn5O9TFlgb2jzYNColADLBEyZwLcy+QgvAjjkQi0EmAHDnQDsDHwGLAI4hDuY5uLEYcAqACd8FLUt1sL5k4CtATZI7gJ+deSYc6DrTiPouxJk/xxB/iPIXg38E66ZMgHYRXsc4PStLP2EA77n3s+dOx/HVwL5KV434fvZOZltcfwIsHnu3Ic4PhD4eAQlx1V0RxT8jRYKfzDyeLQuAtyAGy0IN+O8Ns7lY/oU2Ar4A+AYwmvB+WQr58GtGuTYB+akD6YXgD0K7sX+6aEtGKbrLPZEAZ4PhfgSn7+XFGgj/L5asHFRxM1fvjK+bBZOHIvPxeG4h88sEldqA/AJnQXwyT0cOA24Jdx8d3xyAOdCgE8/Hc9xhe+Bd4D1gVuB04F1ge8AdkEZongNI8RZAEnDSLM03NfqR54A+ad0mL5svR8B8OHapcQo+ehSKwE+QcYM2XyK+TQfD9wdCsMuBhl9KXAZ8BewBcAq4n2Ac/7uAE4FNgC+DtdRntPArgIuAEgctg2stwXGkgB8gvnUM7GBwbFshhs+zXT2b8A8gOGdTzedz2phw3DNKfi8MxxzOJINII5KfQCwCmF6Fpgfji1/5AnA6rSsccfqlo1APiAcRp4sse3FKMpUawRgGOdTnjmLGTBUnwg8kCtR9jTnC8mxfRaGDmdiGGPjZJ2c0Dc4Zt00MURpPHEo9s0WdDwIeTwW8unhc0ptAN5ndYCTG9nNY+PvdoB1/GBivcY6K+sGsqrInJ/JslrgvWYD7wJ8WeLbFoySShZsD/GPodjEqDpow8mupU2vB2rrBsYWVHJpWqCHYk05AqSpmkoVYwERIMZKhmVEAMPOjVFNBIixkmEZEcCwc2NUEwFirGRYRgQw7NwY1USAGCsZlhEBDDs3RjURIMZKhmVEAMPOjVFNBIixkmEZEcCwc2NUEwFirGRYRgQw7NwY1USAGCsZlhEBDDs3RjURIMZKhmVEAMPOjVFNBIixkmEZEcCwc2NUEwFirGRYRgQw7NwY1USAGCsZlhEBDDs3RrVOCcAp45wKZX1f4BhHxMhwUi1nS3NGdV2pUwL8CC3WrksTJ/epe3/hTgnAKc1rAlwW5SUnDqyqJifVbgz0Ac6WrislQYBroQ3XEFIabgFO4KSzRACnLBEBnDo+U9sdAbjszDZOnf4M9H5oQHdXBMivleORA1xMi4tmsZfkMgKsB62fBriknLfE5V648CbXReTiTy4J4M3pMfq6qgJiDOJNRgTw5nHPjUDnvi5U31UE4Np3XCtwS6dM4LD4/Z4jwF5Q3vPWNGz9cwXW5LqBHLN/r8ankitWctn4wf8CuHI4lzL1GgG49O5RQLaaJ02eVQFc6fO6Gn3AjTnOC/crXC5+X/zYrzHDolvpz6ByA2cEKJesLtHDpRx/WW7bOI5Icd9AhqSmkghQbtmmCcD1mLlYNRfnXo4A/M5dKbg7Rd2Jy8NzyXMRoNyyGQFehOjJ5eIjS3yFK7i0/0Rqa/v47IUQEaDcX011Awtz7poAzP9cYPtyu5iT4H8B3FHtngHNXBGAW81wlxCvia1//iHWRjcwyQjAHUMeBthF8Zj4tB8HFHUD+zhf5zuBSRLAo9PLdHZVBZQZw+PvIoBHr+d0FgFEgEZeC0+yDbACSsXxae4c5jGxB5TtpZjp7yoC7AOt+Was18SxAHYDf/BaBXCbWG46md9F3BMZXoayHO5VN9CT10t0dVUFyO//t4AI4JwVIoAI4KsbeBEczu3nLSS+5HnbFBVxFQHmw1gTryYZSUXdulFVc0WAmbDOYmDWqFZKVJ4DO5ztPMo274OquCJAon7stFgiQKfm7z5zEaB7H3RaAtMEWATTLuzUvOlnfg2KOAfoA+beCErf/OmU0BQB+I77vHRsOxYluRGlXNB0Sdt6LZyLRM4FZjStkJH7L4UeHFTiGkKNprYI0KgSunl1C4gA1W1n4koRwIQbqyshAlS3nYkrRQATbqyuhAhQ3XYmrhQBTLixuhIiQHXbmbhSBDDhxupKiADVbWfiShHAhBurKyECVLediSv/A478eJ94LE19AAAAAElFTkSuQmCC" preserveAspectRatio="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 264px; margin-left: 718px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">printer-01</div></div></div></foreignObject><text x="718" y="276" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">printer-...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
\ No newline at end of file
diff --git a/samples/it_v2/doc/network/subnets/01_lan.yaml b/samples/it_v2/doc/network/subnets/01_lan.yaml
new file mode 100644
index 0000000..0b17640
--- /dev/null
+++ b/samples/it_v2/doc/network/subnets/01_lan.yaml
@@ -0,0 +1,11 @@
+# yaml-language-server: $schema=../../../schemas/subnet.json
+name: LAN
+subnet: 10.10.10.0/24
+gw: 10.10.10.1
+dns:
+  - 10.10.10.1
+dhcp:
+  server: '10.10.10.1'
+  ranges:
+    - from: '10.10.10.50'
+      to: '10.10.10.169'
diff --git a/samples/it_v2/doc/network/subnets/02_guest.01.drawio b/samples/it_v2/doc/network/subnets/02_guest.01.drawio
new file mode 100644
index 0000000..eb3b9bd
--- /dev/null
+++ b/samples/it_v2/doc/network/subnets/02_guest.01.drawio
@@ -0,0 +1 @@
+<mxfile host="app.diagrams.net" modified="2023-03-05T19:35:23.361Z" agent="5.0 (X11)" etag="2wwb6xFnzrKgUXp9-2X4" version="21.0.2" type="device"><diagram id="b6ezudLEMjEVSUdVGraq" name="Page-1">5VfJbtswEP0aHy1oteNjYqdNNzRoCjQ3gZFGEhtKVEnacvL1JS1Su7MgblGgNmBTb4bUcN7jjDTz1vn+PUNl9oXGQGauHe9n3mbmuo679OWfQh5qZBGc1UDKcKydWuAGP4IGbY1ucQy85ygoJQKXfTCiRQGR6GGIMVr13RJK+nctUarvaLfATYQIjNx+4FhkNXrmLlv8CnCamTs7i1VtyZFx1gvzDMW06kDe5cxbM0pFPcr3ayAqeSYv9bx3R6xNYAwK8ZIJj9+CX5dXPET0KmH+bfL1/BPMHb3MDpGt3jGvsIiyua0tXDyYXGQiJ3LkzLyLHTCBZZY+ozsg15RjgWkhbYKWHes5walC76gQNJcGuhUEF7BuyLIl2CRGXcSIZxC3llLdO9+nSl0WQ9G9lZUQIra9Q1YdKXDr5+osWKDQDTw7dP00dHlSlmTLw9pDrkQGcUYyacCkAekQG2CcVpMiuSnYdyCd5vdAcxDsQbpo68LXlBvN+1ZQA1UrIcd3ayzrykf7Ia3atFm7JVYONLev4NnotcPzTYU5jyQtQ5onSerxcoz9huehAGpZjHLdEdSQalRxz8LKrwARymRfJJiQNSWUHaL0Nu7G23gSl/4xlisaW0ELOA2PAxrNZZdE2x6TuPD/EImeNyJxRB7EsnzpS8pERlNaIHLZoheMbou4obL1+UwVSQcyfoIQD7oWo62gfaoS2iZbEmEfPopCgZg4VzVXcUwQ5zgy8DtMzPSjxHC6ZRG8QMRywRTEU4nSK6pkPEk0A4IE3vVr/RRveuo1lZLsCMTpK2Tp9leod6QnDchvoniDHvyRHnYEFRIxcf0nwjB8PysM5+TCeNuBHnffBDOoECFT/fdYfqer7bNF+uU9scPxZHMYlOb14XNgmNF76Fj8jfoeL9oG3sgsRDqsQimxWcw8hLkTPUN2ioqye25JJZ+smfurQTN3Rl1gOdEEXPftmoEoWUcfv2zmwSdIl/Z6Ht5+n7v/1pk/5dme3O9fKuVLe9Uv5Str8CxWF5dTFPOn9tnhtcIJnioDpQrhEFRwMQvUaUK8rA9jgveKzC5Bo8N8/HEb54eXIfO/wXkqt0LwnfyVJQlDHAogwDGXQCWPqByr4XkUyUF4SE34oYgpZRbfpSd6mF7Z1rJHjeOOH8S8hbUYH8LAN+grjqG8bF/KanbbV1vv8jc=</diagram></mxfile>
\ No newline at end of file
diff --git a/samples/it_v2/doc/network/subnets/02_guest.01.svg b/samples/it_v2/doc/network/subnets/02_guest.01.svg
new file mode 100644
index 0000000..87ac2fd
--- /dev/null
+++ b/samples/it_v2/doc/network/subnets/02_guest.01.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Do not edit this file with editors other than diagrams.net -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="743px" height="157px" viewBox="-0.5 -0.5 743 157" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2023-03-05T19:36:29.034Z&quot; agent=&quot;5.0 (X11)&quot; etag=&quot;oqK-zXrrRnKW6i3NbcGS&quot; version=&quot;21.0.2&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;b6ezudLEMjEVSUdVGraq&quot; name=&quot;Page-1&quot;&gt;5Vddj5s4FP01eQwCA0nzOJNMO9222mqn0vYNecCAOwazthOS/vpeB5vvTKea7GqlJlJin3tt7HuO7zULf1sc3wlc5Z94QtgCuclx4e8WCIXIg18NnBogQGEDZIImDeR1wAP9TgzoGnRPEyIHjopzpmg1BGNeliRWAwwLweuhW8rZ8KkVzswT3Q54iDEjE7e/aaLyBn2D1h1+T2iW2yd7q01jKbB1NhPLHCe87kH+3cLfCs5V0yqOW8J07GxcmnFvL1jbhQlSqpcM+P5X+M/dvYwwv09F8DX98+YDWXpmmgNme7NjWVMV50vXWKQ62VjkqmDQ8hb+7YEIRSFKH/EjYZ+5pIryEmyKVz3rDaOZRh+5UrwAA98rRkuybclyAWwDozsJljlJOkuln10cMy0uR+D4yckrEmGxf8ROs1IinW+bN+EKRyj03QgFWYRkWlVsL6PGA2Zio3XGEDQiwIDNEltgGlYbItgUOfYgE+Z3hBdEiRO4GOsqMJSfbN8xoq87CXkBarC8Lx/jh41qs3bujlhoGG5/gWer1x7PDzWVMgZaxjTPkjTg5RL7Lc9jATSymMS6J6gx1biWvkO1X0lUBMG+TSljW864OK/S36Gdv/MBB/+EwozWVvKSXIfHEY222yfRdackroJ/iUTfn5A4IY8kkL5MlwuV84yXmN116K3g+zJpqex8PnJN0pmMb0Spk8nFeK/4kKqUd8EGItzzR1OosFA3OudqjhmWksYWfkuZHX6RGMn3IiYvEDFMmBH1XKDMjDoYzxItCMOKHoa5fo43M/QzB0n2BOINFbJGwxmaHZlBI/LbVbxCD8FEDweGS0Dsun4TYVi+fyoM7+rCeN2BnlbflApSY8bm6u+l+M5n258m6ZfXxB7Hs8VhlJq358+ZYcGfSM8S7PT3ctK28A6iEJtllVqJ7WT2EoZmagZUipqLJ+mAkq9WzIPNqJh7kyqwnikCCL1eMyROt/Efn3bL8APJ1u52GX39skT/rzN/zbM9u9//KJWv3c0wlW+c0V2sSS7XSObP7bPHa01TOpcGKr2E86LC20WoTxOWVXMYU3rUZPYJmhzmy9dtWpxfhuz/jhYZbIXRR/iFlERJEinCiKQSgBqOKLR18yaOoRGdQxO9LxPOhSMP2ZUu0xvXWQ+o8dD0IuavnNX0EIaBRX/hGEK3eylr2O3ebP27Hw==&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="600" y="24.5" width="142" height="15" fill="#404040" stroke="#050505" stroke-width="0.17" pointer-events="all"/><path d="M 602.39 33.88 L 602.39 36.39 L 603.25 36.39 L 603.25 37.18 L 605.36 37.18 L 605.36 36.39 L 606.16 36.39 L 606.16 33.88 L 602.39 33.88 Z" fill="#1a1a1a" stroke="#313131" stroke-width="0.17" stroke-miterlimit="10" pointer-events="all"/><rect x="600" y="24.5" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 670.97 27.73 L 699.07 27.73 L 699.07 36.66 L 670.97 36.66 L 670.97 27.73 Z M 699.48 27.73 L 727.58 27.73 L 727.58 36.66 L 699.48 36.66 L 699.48 27.73 Z" fill="#f2f2f2" stroke="none" pointer-events="all"/><path d="M 674.99 36.25 L 675.84 36.25 L 675.84 35.76 L 674.99 35.76 L 674.99 36.25 Z M 671.65 36.25 L 672.51 36.25 L 672.51 35.75 L 671.65 35.75 L 671.65 36.25 Z M 679.5 36.25 L 680.35 36.25 L 680.35 35.76 L 679.5 35.76 L 679.5 36.25 Z M 676.16 36.25 L 677.02 36.25 L 677.02 35.75 L 676.16 35.75 L 676.16 36.25 Z M 684.01 36.25 L 684.87 36.25 L 684.87 35.76 L 684.01 35.76 L 684.01 36.25 Z M 680.67 36.25 L 681.53 36.25 L 681.53 35.75 L 680.67 35.75 L 680.67 36.25 Z M 688.52 36.25 L 689.38 36.25 L 689.38 35.76 L 688.52 35.76 L 688.52 36.25 Z M 685.18 36.25 L 686.04 36.25 L 686.04 35.75 L 685.18 35.75 L 685.18 36.25 Z M 693.03 36.25 L 693.89 36.25 L 693.89 35.76 L 693.03 35.76 L 693.03 36.25 Z M 689.69 36.25 L 690.55 36.25 L 690.55 35.75 L 689.69 35.75 L 689.69 36.25 Z M 697.54 36.25 L 698.4 36.25 L 698.4 35.76 L 697.54 35.76 L 697.54 36.25 Z M 694.21 36.25 L 695.06 36.25 L 695.06 35.75 L 694.21 35.75 L 694.21 36.25 Z M 703.5 36.25 L 704.36 36.25 L 704.36 35.76 L 703.5 35.76 L 703.5 36.25 Z M 700.17 36.25 L 701.02 36.25 L 701.02 35.75 L 700.17 35.75 L 700.17 36.25 Z M 708.01 36.25 L 708.87 36.25 L 708.87 35.76 L 708.01 35.76 L 708.01 36.25 Z M 704.68 36.25 L 705.54 36.25 L 705.54 35.75 L 704.68 35.75 L 704.68 36.25 Z M 712.52 36.25 L 713.38 36.25 L 713.38 35.76 L 712.52 35.76 L 712.52 36.25 Z M 709.19 36.25 L 710.05 36.25 L 710.05 35.75 L 709.19 35.75 L 709.19 36.25 Z M 717.04 36.25 L 717.89 36.25 L 717.89 35.76 L 717.04 35.76 L 717.04 36.25 Z M 713.7 36.25 L 714.56 36.25 L 714.56 35.75 L 713.7 35.75 L 713.7 36.25 Z M 721.55 36.25 L 722.4 36.25 L 722.4 35.76 L 721.55 35.76 L 721.55 36.25 Z M 718.21 36.25 L 719.07 36.25 L 719.07 35.75 L 718.21 35.75 L 718.21 36.25 Z M 726.06 36.25 L 726.91 36.25 L 726.91 35.76 L 726.06 35.76 L 726.06 36.25 Z M 722.72 36.25 L 723.58 36.25 L 723.58 35.75 L 722.72 35.75 L 722.72 36.25 Z" fill="#96ad92" stroke="#646664" stroke-width="0.1" stroke-miterlimit="10" pointer-events="all"/><rect x="600" y="24.5" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 672.78 36.27 L 672.78 35.33 L 671.88 35.33 L 671.88 33 L 675.66 33 L 675.66 35.33 L 674.77 35.33 L 674.77 36.27 L 672.78 36.27 Z M 677.29 36.27 L 677.29 35.33 L 676.39 35.33 L 676.39 33 L 680.17 33 L 680.17 35.33 L 679.28 35.33 L 679.28 36.27 L 677.29 36.27 Z M 681.8 36.27 L 681.8 35.33 L 680.9 35.33 L 680.9 33 L 684.68 33 L 684.68 35.33 L 683.79 35.33 L 683.79 36.27 L 681.8 36.27 Z M 686.31 36.27 L 686.31 35.33 L 685.41 35.33 L 685.41 33 L 689.2 33 L 689.2 35.33 L 688.3 35.33 L 688.3 36.27 L 686.31 36.27 Z M 690.82 36.27 L 690.82 35.33 L 689.92 35.33 L 689.92 33 L 693.71 33 L 693.71 35.33 L 692.81 35.33 L 692.81 36.27 L 690.82 36.27 Z M 695.34 28.04 L 695.34 28.97 L 694.44 28.97 L 694.44 31.31 L 698.22 31.31 L 698.22 28.97 L 697.33 28.97 L 697.33 28.04 L 695.34 28.04 Z M 690.84 28.04 L 690.84 28.97 L 689.95 28.97 L 689.95 31.31 L 693.73 31.31 L 693.73 28.97 L 692.84 28.97 L 692.84 28.04 L 690.84 28.04 Z M 686.35 28.04 L 686.35 28.97 L 685.46 28.97 L 685.46 31.31 L 689.24 31.31 L 689.24 28.97 L 688.35 28.97 L 688.35 28.04 L 686.35 28.04 Z M 681.86 28.04 L 681.86 28.97 L 680.96 28.97 L 680.96 31.31 L 684.75 31.31 L 684.75 28.97 L 683.85 28.97 L 683.85 28.04 L 681.86 28.04 Z M 677.37 28.04 L 677.37 28.97 L 676.47 28.97 L 676.47 31.31 L 680.25 31.31 L 680.25 28.97 L 679.36 28.97 L 679.36 28.04 L 677.37 28.04 Z M 672.87 28.04 L 672.87 28.97 L 671.98 28.97 L 671.98 31.31 L 675.76 31.31 L 675.76 28.97 L 674.87 28.97 L 674.87 28.04 L 672.87 28.04 Z M 695.33 36.27 L 695.33 35.33 L 694.43 35.33 L 694.43 33 L 698.22 33 L 698.22 35.33 L 697.32 35.33 L 697.32 36.27 L 695.33 36.27 Z M 701.29 36.27 L 701.29 35.33 L 700.4 35.33 L 700.4 33 L 704.18 33 L 704.18 35.33 L 703.29 35.33 L 703.29 36.27 L 701.29 36.27 Z M 705.8 36.27 L 705.8 35.33 L 704.91 35.33 L 704.91 33 L 708.69 33 L 708.69 35.33 L 707.8 35.33 L 707.8 36.27 L 705.8 36.27 Z M 710.31 36.27 L 710.31 35.33 L 709.42 35.33 L 709.42 33 L 713.2 33 L 713.2 35.33 L 712.31 35.33 L 712.31 36.27 L 710.31 36.27 Z M 714.82 36.27 L 714.82 35.33 L 713.93 35.33 L 713.93 33 L 717.71 33 L 717.71 35.33 L 716.82 35.33 L 716.82 36.27 L 714.82 36.27 Z M 719.33 36.27 L 719.33 35.33 L 718.44 35.33 L 718.44 33 L 722.22 33 L 722.22 35.33 L 721.33 35.33 L 721.33 36.27 L 719.33 36.27 Z M 723.85 28.04 L 723.85 28.97 L 722.96 28.97 L 722.96 31.31 L 726.74 31.31 L 726.74 28.97 L 725.85 28.97 L 725.85 28.04 L 723.85 28.04 Z M 719.36 28.04 L 719.36 28.97 L 718.47 28.97 L 718.47 31.31 L 722.25 31.31 L 722.25 28.97 L 721.35 28.97 L 721.35 28.04 L 719.36 28.04 Z M 714.87 28.04 L 714.87 28.97 L 713.97 28.97 L 713.97 31.31 L 717.76 31.31 L 717.76 28.97 L 716.86 28.97 L 716.86 28.04 L 714.87 28.04 Z M 710.38 28.04 L 710.38 28.97 L 709.48 28.97 L 709.48 31.31 L 713.26 31.31 L 713.26 28.97 L 712.37 28.97 L 712.37 28.04 L 710.38 28.04 Z M 705.88 28.04 L 705.88 28.97 L 704.99 28.97 L 704.99 31.31 L 708.77 31.31 L 708.77 28.97 L 707.88 28.97 L 707.88 28.04 L 705.88 28.04 Z M 701.39 28.04 L 701.39 28.97 L 700.5 28.97 L 700.5 31.31 L 704.28 31.31 L 704.28 28.97 L 703.38 28.97 L 703.38 28.04 L 701.39 28.04 Z M 723.85 36.27 L 723.85 35.33 L 722.95 35.33 L 722.95 33 L 726.73 33 L 726.73 35.33 L 725.84 35.33 L 725.84 36.27 L 723.85 36.27 Z" fill="#333" stroke="none" pointer-events="all"/><rect x="600.56" y="24.78" width="5.81" height="3.23" fill="#333" stroke="#282828" stroke-width="0.13" pointer-events="all"/><rect x="607.43" y="25.14" width="5.81" height="3.5" fill="#4d4d4d" stroke="#808080" stroke-width="0.1" pointer-events="all"/><path d="M 603.33 30.26 L 606.28 30.26 L 606.28 31.01 L 603.33 31.01 L 603.33 30.26 Z M 603.33 29.03 L 606.28 29.03 L 606.28 29.77 L 603.33 29.77 L 603.33 29.03 Z" fill="#cde1cb" stroke="#2a2a2a" stroke-width="0.13" stroke-miterlimit="10" pointer-events="all"/><rect x="614.47" y="35.75" width="2.32" height="0.72" fill="none" stroke="#808080" stroke-width="0.13" pointer-events="all"/><rect x="600" y="24.5" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="735.3" y="27.91" width="4.84" height="8.51" fill="#f2f2f2" stroke="none" pointer-events="all"/><path d="M 735.52 33.2 L 739.92 33.2 L 739.92 36.13 L 735.52 36.13 L 735.52 33.2 Z M 735.52 28.2 L 739.92 28.2 L 739.92 31.12 L 735.52 31.12 L 735.52 28.2 Z" fill="#262626" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 22px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">switch-01</div></div></div></foreignObject><text x="671" y="22" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">switch-01</text></switch></g><path d="M 100 43.5 L 100 47.97 C 100 56.28 90.37 64 80.14 64 L 20.19 64 C 10.2 64 0.02 56.73 0.02 47.85 L 0 44.53 C 0 36.51 4.86 29.04 12.94 26.5 C 12.73 19.67 15.49 13.59 20.62 8.55 C 27.41 1.98 38.12 0 47.09 3.05 C 53.97 5.44 59.19 10.28 61.79 15.92 C 66.36 13.03 72.13 12.93 76.92 16.26 C 79.47 18.05 81.84 21.11 82.07 25.64 C 86.72 26.03 91.56 28.16 95.46 32.61 C 98.3 35.77 99.94 39.88 100 43.5 Z" fill="#d2d3d3" stroke="none" pointer-events="all"/><path d="M 100 43.5 L 100 47.97 C 100 56.3 90.37 64 80.14 64 L 20.19 64 C 10.16 64 0.02 56.73 0.02 47.85 L 0 44.53 C 0 53.27 9.89 60.59 20.07 60.59 L 79.89 60.59 C 91.13 60.59 100 52.7 100 43.5 Z" fill-opacity="0.3" fill="#000000" stroke="none" pointer-events="all"/><rect x="0" y="0" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 47.88 44.46 L 39.39 44.46 L 39.39 55.49 L 28.02 55.49 L 28.02 44.46 L 19.54 44.46 L 33.71 21.07 Z M 62.05 55.4 L 47.88 32 L 56.36 32 L 56.36 20.97 L 67.73 20.97 L 67.73 32 L 76.22 32 Z" fill="#ffffff" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 71px; margin-left: 50px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Swisscom</div></div></div></foreignObject><text x="50" y="83" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Swisscom</text></switch></g><path d="M 106.37 32 L 443.63 32" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 101.12 32 L 108.12 28.5 L 106.37 32 L 108.12 35.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 448.88 32 L 441.88 35.5 L 443.63 32 L 441.88 28.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 526.37 32 L 593.63 32" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 521.12 32 L 528.12 28.5 L 526.37 32 L 528.12 35.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 598.88 32 L 591.88 35.5 L 593.63 32 L 591.88 28.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 32px; margin-left: 560px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">vlan 10</div></div></div></foreignObject><text x="560" y="35" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">vlan 10</text></switch></g><rect x="450" y="21" width="70" height="18.97" rx="3.79" ry="3.79" fill="#cccccc" stroke="#4d4d4d" stroke-width="1.4" pointer-events="all"/><rect x="457" y="39.97" width="56" height="3.03" fill="#cccccc" stroke="#4d4d4d" stroke-width="1.4" pointer-events="all"/><path d="M 452.1 26.31 L 456.3 26.31 L 456.3 28.59 L 454.9 28.59 L 454.9 29.34 L 453.5 29.34 L 453.5 28.59 L 452.1 28.59 Z M 458.05 26.31 L 462.25 26.31 L 462.25 28.59 L 460.85 28.59 L 460.85 29.34 L 459.45 29.34 L 459.45 28.59 L 458.05 28.59 Z M 464 26.31 L 468.2 26.31 L 468.2 28.59 L 466.8 28.59 L 466.8 29.34 L 465.4 29.34 L 465.4 28.59 L 464 28.59 Z M 469.95 26.31 L 474.15 26.31 L 474.15 28.59 L 472.75 28.59 L 472.75 29.34 L 471.35 29.34 L 471.35 28.59 L 469.95 28.59 Z M 475.9 26.31 L 480.1 26.31 L 480.1 28.59 L 478.7 28.59 L 478.7 29.34 L 477.3 29.34 L 477.3 28.59 L 475.9 28.59 Z M 481.85 26.31 L 486.05 26.31 L 486.05 28.59 L 484.65 28.59 L 484.65 29.34 L 483.25 29.34 L 483.25 28.59 L 481.85 28.59 Z M 487.8 26.31 L 492 26.31 L 492 28.59 L 490.6 28.59 L 490.6 29.34 L 489.2 29.34 L 489.2 28.59 L 487.8 28.59 Z M 493.75 26.31 L 497.95 26.31 L 497.95 28.59 L 496.55 28.59 L 496.55 29.34 L 495.15 29.34 L 495.15 28.59 L 493.75 28.59 Z" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="511.6" cy="30.48" rx="5.6" ry="6.068965517241379" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="502.5" cy="24.79" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="502.5" cy="36.17" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="502.5" cy="30.48" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="495.85" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="489.9" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="483.95" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="478" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="472.05" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="466.1" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="460.15" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="454.2" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 511.6 26.31 L 511.6 34.66 M 507.05 30.48 L 509.85 30.48 M 513.35 30.48 L 516.15 30.48 M 510.2 27.83 L 511.6 26.31 L 513 27.83 M 510.2 33.14 L 511.6 34.66 L 513 33.14 M 508.45 28.97 L 509.85 30.48 L 508.45 32 M 514.75 28.97 L 513.35 30.48 L 514.75 32" fill="none" stroke="#4d4d4d" stroke-width="0.7" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 50px; margin-left: 485px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">firewall-01</div></div></div></foreignObject><text x="485" y="62" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">firewall-01</text></switch></g><path d="M 669 73.63 L 669 45.87" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 669 78.88 L 665.5 71.88 L 669 73.63 L 672.5 71.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 669 40.62 L 672.5 47.62 L 669 45.87 L 665.5 47.62 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 60px; margin-left: 669px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">vlan 10</div></div></div></foreignObject><text x="669" y="63" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">vlan 10</text></switch></g><image x="650.2" y="79.5" width="36.6" height="54.6" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MS4xMTUgOTEuNDAxIj48cGF0aCBkPSJNNi45NTggNjcuODE1QzMuODIgNjYuMzc3LjE4IDYxLjQ0NC4yMDUgNTcuNTQzTC4xOCA5LjYwN0MuMyA3LjY0NS42OCA2LjUgMi4yNDggNS4zMTRzNy44MDYtNC4yNjYgOC44NS00LjY4OGMxLjEtLjQ0NSAyLjQ2NC0xLjE3NiA1Ljk5NS45MTdsMzguNTIgMjMuMjYyYzQuNTYgMi42MDUgNS4xNzYgNi4yOSA1LjMxIDguOTY2cy4wMzIgNDUuNjgtLjIyIDQ4LjdjLS4xMTYgMS4zODgtLjUxNyAyLjYzOC0yLjIzNSAzLjc1Mi0xLjk1NiAxLjI3LTUuMjggMi43Ny03LjQxMyAzLjkwNy0zLjk1OCAyLjEwNC01LjMyNi43MzMtNS45MTQuNDVDNDIuMTQgODkuMTIgNi45NTggNjcuODE1IDYuOTU4IDY3LjgxNSIgZmlsbD0iIzY0NjU2NyIvPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik02Ljk1OCA2Ny44MTVDMy44MiA2Ni4zNzcuMTggNjEuNDQ0LjIwNSA1Ny41NDNMLjE4IDkuNjA3Qy4zIDcuNjQ1LjY4IDYuNSAyLjI0OCA1LjMxNHM3LjgwNi00LjI2NiA4Ljg1LTQuNjg4YzEuMS0uNDQ1IDIuNDY0LTEuMTc2IDUuOTk1LjkxN2wzOC41MiAyMy4yNjJjNC41NiAyLjYwNSA1LjE3NiA2LjI5IDUuMzEgOC45NjZzLjAzMiA0NS42OC0uMjIgNDguN2MtLjExNiAxLjM4OC0uNTE3IDIuNjM4LTIuMjM1IDMuNzUyLTEuOTU2IDEuMjctNS4yOCAyLjc3LTcuNDEzIDMuOTA3LTMuOTU4IDIuMTA0LTUuMzI2LjczMy01LjkxNC40NUM0Mi4xNCA4OS4xMiA2Ljk1OCA2Ny44MTUgNi45NTggNjcuODE1eiIgc3Ryb2tlPSIjNjQ2NTY3IiBzdHJva2Utd2lkdGg9Ii4yNjIiLz48ZyBzdHJva2U9IiM2MTYzNjUiIHN0cm9rZS13aWR0aD0iMy4xMzkiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0yLjc3IDYuODM1bDkuNDE0LTQuOTM4Yy44MzMtLjM5MyAyLjAxNy0uMTM0IDMuNDg3LjU5M0w2LjU1NyA3LjQ2M2MtLjgtLjMxOC0yLjcwNy0xLjItMy43ODYtLjYyOHptNTUuMDAzIDc3Ljg5MmMtMTIuNyA2Ljc0NyAzLjQ1My0yLjA3My05LjI1NiA0LjY3NC44ODMtLjQ3IDEuNDM1LTEuNTYgMS40MzMtMy4xNGw5LjI1OC00LjY3M2MwIDEuNTgtLjU1MiAyLjY2OC0xLjQzNSAzLjEzOHoiLz48cGF0aCBkPSJNNi4yOTYgNy40NjNsOS40MzctNC44ODIgMzguOTE1IDIzLjg0Ny05LjI4NiA0LjV6bTQzLjYyIDMxLjY5NGw5LjM1My01LjQyNy0uMDEzIDQ3LjQzLTkuMzA3IDUuMXoiLz48cGF0aCBkPSJNNDUuMzYyIDMwLjkzN2w5LjkzMy00LjQxNmMyLjUxMyAxLjUgMy45NyA0LjE4IDMuOTc0IDcuMjFsLTkuMzUyIDUuNDI3Yy0uMDAyLTMuMDMtMi4wNC02LjctNC41NTUtOC4yMnoiLz48cGF0aCBkPSJNNDUuMzYyIDMwLjkzN2MyLjUxNiAxLjUgNC41NTMgNS4xOSA0LjU1NSA4LjIybC4wMzMgNDcuMTA1Yy4wMDQgMy4wMy0yLjAzIDQuMjYyLTQuNTQ3IDIuNzUyTDYuMzM3IDY1LjU0Yy0yLjUyLTEuNTE1LTQuNTYtNS4xOTQtNC41Ni04LjIyNUwxLjc0MyAxMC4yMUMxLjc0IDcuMTggMy43NzYgNS45NSA2LjI5NiA3LjQ2M2wzOS4wNjYgMjMuNDc0eiIvPjwvZz48L2c+PHBhdGggZD0iTTIuOTY0IDYuNjcyYzEuNi0uODcgMS4xMzctLjg5NyA5LjAyMy00LjcuODMtLjQgMi4yMTUtLjIgMy40MjQuNTI3TDYuMzQ2IDcuMDM2Yy0xLjIwOC0uNzI3LTIuNTY4LS43OTUtMy4zODItLjM2NCIgZmlsbD0iIzhkOGY5MiIvPjxwYXRoIGQ9Ik01OC4wMDcgODQuMTI0bC05LjQ0IDQuODVjLjgzNy0uNTQzIDEuNDM0LTEuNTYgMS40MzItMy4xNGw5LjI1OC01LjA2N2MwIDEuNTc4LS4zNjcgMi44ODctMS4yNSAzLjM1NyIgZmlsbD0iIzU4NTg1YiIvPjxwYXRoIGQ9Ik02LjM0NSA3LjAzNmw4LjkyNS00LjY0IDM4LjkxNSAyMy40NzhMNDUuNDEgMzAuNXoiIGZpbGw9IiM2ZTcwNzIiLz48cGF0aCBkPSJNNTAuMDcyIDM4LjU3Nmw5LjE5Ny00Ljg0Ny4wMDQgNDcuOTQ1LTkuMTMgNC4xOTd6IiBmaWxsPSIjNmM2ZTcwIi8+PHBhdGggZD0iTTQ1LjQxMiAzMC41MWw4Ljc3My00LjYzNmMyLjUxNCAxLjUgNS4wOCA0LjgyNiA1LjA4NCA3Ljg1NmwtOS4zMDMgNWMtLjAwMi0zLjAzLTIuMDQtNi43LTQuNTU0LTguMjIiIGZpbGw9IiM4ZDhmOTIiLz48cGF0aCBkPSJNNDUuNDEyIDMwLjUxYzIuNTE1IDEuNSA0LjU1MiA1LjE5IDQuNTU0IDguMjJMNTAgODUuODM0Yy4wMDQgMy4wMy0yLjAzIDQuMjYyLTQuNTQ3IDIuNzUzTDYuMzg2IDY1LjExM2MtMi41Mi0xLjUxNC00LjU2LTUuMTk0LTQuNTYtOC4yMjVMMS43OTMgOS43ODNDMS43OSA2Ljc1MiAzLjgyNiA1LjUyIDYuMzQ2IDcuMDM1TDQ1LjQxMiAzMC41MXoiIGZpbGw9IiNiMWIzYjUiLz48cGF0aCBkPSJNNDkuOTQgODUuOTRsLS4wMzQtNDcuMTA0Yy0uMDEtMi43OTUtMS44ODQtNi4xODMtNC4yLTcuNTgyTDYuNjQgNy43OGMtMi4zMi0xLjM4Ni00LjE5LS4yNDgtNC4xOTMgMi41MzdsLjAzMyA0Ny4xMDVjLjAwOCAyLjc5NCAxLjg4IDYuMTggNC4yIDcuNTczTDQ1Ljc1IDg4LjQ2OGMyLjMxMiAxLjQgNC4xODYuMjU2IDQuMTkyLTIuNTN6TTQ1LjcwOCAzMC4zOWMyLjcxMyAxLjYzIDQuOTEyIDUuNiA0LjkxNiA4Ljg3M2wuMDMzIDQ3LjEwN2MuMDAyIDMuMjYyLTIuMTk1IDQuNi00LjkwOCAyLjk2OEw2LjY4MiA2NS44NjZjLTIuNzE0LTEuNjQtNC45MTQtNS42LTQuOTE2LTguODczTDEuNzMzIDkuODg3Yy0uMDAyLTMuMjcgMi4xOTQtNC42IDQuOTA4LTIuOTdMNDUuNzA4IDMwLjM5eiIgZmlsbD0iI2U3ZThlOSIvPjxwYXRoIGQ9Ik00NS43MTggMzEuM2MyLjMxNSAxLjQgNC4xOSA0Ljc4NyA0LjIgNy41OGwuMDM1IDQ3LjEwNWMtLjAwNSAyLjc4NS0xLjg4IDMuOTItNC4xOTMgMi41M0w2LjY5MyA2NS4wNTJDNC4zNyA2My42NTggMi41IDYwLjI3MiAyLjQ5IDU3LjQ4TDIuNDYgMTAuMzc0Yy4wMDQtMi43ODYgMS44Ny0zLjkyNCA0LjE5My0yLjUzOEw0NS43MTggMzEuM3oiIGZpbGw9IiNmZWZlZmUiLz48cGF0aCBkPSJNMTQuMjUzIDU3LjIzN2MwIC44NjUtLjU3NiAxLjIzMi0xLjI4Ni44MnMtMS4yODctMS40NTItMS4yODctMi4zMTguNTc2LTEuMjMyIDEuMjg3LS44MTcgMS4yODYgMS40NSAxLjI4NiAyLjMxNm00LjQzMiAyLjU4YzAgLjg2Ni0uNTc2IDEuMjMtMS4yODcuODE4cy0xLjI4Ni0xLjQ1LTEuMjg2LTIuMzE3LjU3NS0xLjIzMiAxLjI4Ni0uODE4IDEuMjg3IDEuNDUgMS4yODcgMi4zMTdtNC40MyAyLjU4YzAgLjg2NC0uNTc1IDEuMjMyLTEuMjg2Ljgycy0xLjI4Ny0xLjQ1Mi0xLjI4Ny0yLjMxOC41NzYtMS4yMzIgMS4yODctLjgxNyAxLjI4NiAxLjQ1IDEuMjg2IDIuMzE2bTQuNDM0IDIuNThjMCAuODY2LS41NzYgMS4yMy0xLjI4Ny44MThzLTEuMjg2LTEuNDUtMS4yODYtMi4zMTcuNTc1LTEuMjMyIDEuMjg2LS44MiAxLjI4NyAxLjQ1MiAxLjI4NyAyLjMxOG00LjQzIDIuNThjMCAuODY0LS41NzcgMS4yMzItMS4yODcuODJzLTEuMjg3LTEuNDUtMS4yODctMi4zMTguNTc3LTEuMjMyIDEuMjg3LS44MTcgMS4yODcgMS40NSAxLjI4NyAyLjMxNiIgZmlsbD0iIzU4NTg1YiIvPjxnIGZpbGw9IiM2YzZlNzAiPjxwYXRoIGQ9Ik0xMS44NjggMjUuNWwxLjA0NCA0Ljg3OC0xLjUwNi0uODctLjIwNi0xLjEyLS45OTguNDI2LTIuNjM2LTEuNTIzem0uMjcyLjE1bC40MTcgMS45ODguMzcuMjE1LS4yNjIuMjczLjUxMyAyLjQxMiAxLjU0NC0xLjY1LjMwOC4xOCAxLjA2OC0xLjEzMnoiLz48cGF0aCBkPSJNMTMuNzggMzAuODhsMS43MjYtMS44NmMtLjA4Ni41NTguMTA4IDEuMjM3LjQ4IDEuODc1LjM3OC42NDguODg4IDEuMTM0IDEuMzE3IDEuMWwtLjU1LjYwOC0yLjk3NC0xLjcxNHptMi40MjgtMi41NDdsMS4zMzIuNzY4Yy0uMTg2LS4yOTgtLjQxOC0uNTQ1LS42NjctLjY4OHMtLjQ3OC0uMTYzLS42NjUtLjA4Ii8+PHBhdGggZD0iTTE2Ljg4MyAzMS41MDRjLjI2LjE1LjUuMTY1LjcuMDdsLTEuMzgtLjc5OGMuMi4zMTcuNDMuNTguNy43M20tLjkzOC0xLjIzOGwxLjg3MiAxLjA4YTEgMSAwIDAgMCAuMTE3LS4yNjJsLTIuMS0xLjIxOGEzIDMgMCAwIDAgLjEyMS4zOTltLS4xOTgtLjk1N2wuMDA2LjE1OCAyLjIzMiAxLjI4Ny4wMDUtLjE1di0uMTgzbC0yLjIyNy0xLjI4NC0uMDA3LjE3M20uMDctLjUwM2wyLjEgMS4yYy0uMDM0LS4xMzYtLjA3Ny0uMjcyLS4xMjgtLjQwM2wtMS44NDYtMS4wNjhjLS4wNS4wNzMtLjA5NC4xNjItLjEyNS4yNiIvPjwvZz48ZyBmaWxsPSIjNTg1ODViIj48cGF0aCBkPSJNMjAuMDMgMzIuNzk4bC0uMzI4LS4xOS0uMTMtLjA3NC41MzQtMS40OTcuMDEuMDA1LjU2NiAyLjEzMy0uNjUyLS4zNzZ6bTEuNTY3IDIuNDcyYTEuOTQgMS45NCAwIDAgMS0uMTA4LS4yOTdMMjAuMSAzMC4wNjdsLS4wMS0uMDA2LTEuMjk1IDMuNDY3Yy0uMDE4LjA0NC0uMDQzLjA3LS4wNzcuMDhsLjQ4NS4yOGMtLjAxMy0uMDMtLjAzNS0uMDczLS4wMzQtLjExNC0uMDAxLS4wMTguMDE1LS4wNjIuMDM4LS4xMjJsLjI3NC0uNzY2LjI0Mi4xNC4zMDcuMTc3Ljc4NS40NTQuMjggMS4wODUuMDQuMTY2Yy4wMDEuMDQyLS4wMi4wNTgtLjAzMy4wNzVsLjQ5My4yODZ6Ii8+PHBhdGggZD0iTTIxLjY0IDM1LjI5NGMuMDY3LS4wMDYuMDc4LS4xNDUuMDc3LS4zNzhsLS4wMTItMy41NThjLS4wMDEtLjExMy0uMDA2LS4yMTgtLjA3Mi0uM2wuMzcyLjIxNi4wMTQgNC4wMDZjLjAwMi4xMjUuMDMzLjIyNy4wOC4zbC0uNDYtLjI2NXptLjc0NC40M2MuMDctLjAwNy4wOC0uMTQ2LjA3Ny0uMzc4bC0uMDEzLTMuNTZjMC0uMTEzLS4wMDQtLjIyLS4wNy0uM2wuMzczLjIxNi4wMTQgNC4wMDdjMCAuMTI1LjAzMi4yMjYuMDc4LjNsLS40Ni0uMjY1em0uNzQ2LjQzYy4wNy0uMDA2LjA3OC0uMTQ1LjA3Ny0uMzhsLS4wMDgtMi4yMzJjMC0uMTE0LS4wMDUtLjIyLS4wNy0uM2wuMzczLjIxNC4wMSAyLjY4MmMuMDAxLjEyNi4wMy4yMjcuMDguM2wtLjQ2LS4yNjZ6bS40MTQtMy40MWMwIC4xNS0uMS4yMTctLjE5NC4xNTZzLS4xOTYtLjIzMi0uMTk4LS4zOC4xLS4yMTcuMTk1LS4xNTguMTk3LjIzMy4xOTcuMzgybTE0LjI5IDExLjg5NWMuMDY3LS4wMDguMDc2LS4xNDYuMDc1LS4zOGwtLjAwOC0yLjIzM2MtLjAwMS0uMTE0LS4wMDUtLjIxOC0uMDctLjNsLjM3My4yMTQuMDEgMi42ODNjLjAwMS4xMjQuMDMuMjI0LjA4LjI4N2wtLjQ1OC0uMjYzem0uNDEyLTMuNGMwIC4xNS0uMS4yMTUtLjE5NC4xNTdzLS4xOTctLjIzMi0uMTk3LS4zOC4xLS4yMTguMTk0LS4xNThhLjQ5LjQ5IDAgMCAxIC4xOTcuMzhtLTEwLjA1LTIuOTA2bC0uMzA0LS41LS4wMDUtMS4wNDRjLS4yMjUtLjQ0LS4zNzgtLjY5NS0uNzk4LS45NC0uNDg2LS4yOC0uODE4LjA2LS44MTYuNjk4LjAwMi42Mi40IDEuMzYzLjg1OCAxLjYyNy40LjIyNi42LjAxNC43Ni0uMDEzbC0uMDAxLS41MDQuMzA0LjQ4MmMuMDAxLjE0My4wMDEuMzUyLjA1LjQzNC0uMS0uMDI4LS4xNzMtLjAwNC0uMjUuMDIzLS4zMDguMDYtLjQ4My4yMDMtLjg2NC0uMDE4LS42Ni0uMzgtMS4xNjQtMS4zNjMtMS4xNjgtMi4yNTMtLjAwMy0uOS41NTMtMS4yMTIgMS4xODYtLjg0N2ExLjU0IDEuNTQgMCAwIDEgLjcyMy44NTJsLjAxNS0uMDAyLS4wMDQtMS40NTdhLjQ0LjQ0IDAgMCAwLS4wNzktLjI0MmwuMzguMjIuMDEzIDMuNDk2em0yLjM4IDEuOTJhLjU2LjU2IDAgMCAwIC4wNTQuMjM4bC0uNDM0LS4yNWMuMDI4LS4wMzUuMDUyLS4wOTUuMDUyLS4xNzhsLS4wMTMtMy42MzgtLjUtLjI4MmMtLjA5My0uMDUzLS4xNS0uMDYtLjIuMDA1bC0uMDAzLS41MjcgMS43Ljk4Ny4wMDEuNTI1YS4zOS4zOSAwIDAgMC0uMi0uMjM0bC0uNS0uMjgyLjAxMiAzLjYzN3oiLz48cGF0aCBkPSJNMzMuMjggNDIuMDI1Yy4wNy0uMDA2LjA3Ny0uMTQ2LjA3Ny0uMzc4bC0uMDEzLTMuNTZjMC0uMTEzLS4wMDYtLjIxNi0uMDctLjMwN2wuMzczLjIxNEwzMy42NiA0MmMwIC4xMjUuMDMyLjIyNi4wOC4zbC0uNDYtLjI2NXptNC4wNDQtLjA4Yy0uMTA0LS4xOC0uMjQzLS4zNDgtLjM4Ny0uNDMtLjE4Ni0uMTA4LS4zNDItLjEwOC0uMzQuMTguMDAzLjY3LjkzNS44NzIuOTQgMS45Ny4wMDEuNTItLjI5OC43MjgtLjY3LjUxNGExLjk4IDEuOTggMCAwIDEtLjM2NC0uMjcxYy0uMDg4LS4wNzMtLjE1LS4xNDQtLjE5Ny0uMTctLjAyNS0uMDE2LS4wNjQtLjAwMy0uMDgyLjAyMmwtLjAwMy0uMDAxdi0uNzE3Yy4xNC4yOTguMzQyLjU1Ni41NTUuNjc4LjIyNi4xMy40NS4xNy40NS0uMTg3LS4wMDEtLjgzNi0uOTMzLS45NzItLjkzNy0yLjAyLS4wMDEtLjQ4NC4yNjMtLjYzLjYtLjQyOC4xMi4wNjguMjYuMi4zMzQuMjUuMDMuMDE4LjA3NS4wMy4wOTYuMDA2bC4wMDEuNjA0em0yLjM5MiAxLjM4Yy0uMTA0LS4xOC0uMjQzLS4zNS0uMzg3LS40My0uMTg1LS4xMDctLjM0Mi0uMTA4LS4zNC4xNzguMDAyLjY3LjkzMy44NzIuOTM2IDEuOTcuMDAyLjUyLS4yOTYuNzI4LS42Ny41MTRhMi4wNCAyLjA0IDAgMCAxLS4zNjQtLjI3Yy0uMDg3LS4wNzQtLjE0OC0uMTQ2LS4xOTQtLjE3Mi0uMDI4LS4wMTctLjA2NS0uMDAxLS4wODQuMDIzbC0uMDAyLS4wMDItLjAwMy0uNzE2Yy4xNDMuMjk4LjM0My41NTUuNTU1LjY3OC4yMjYuMTMuNDUuMTcuNDUtLjE4OC0uMDAzLS44MzUtLjkzMy0uOTc0LS45MzctMi4wMi0uMDAyLS40ODMuMjYyLS42MjguNjA4LS40My4xMi4wNy4yNi4yLjMzNC4yNTIuMDMuMDE4LjA3NC4wMy4wOTYuMDA3bC4wMDEuNjA0em0tMTUuMy04Ljc3Yy0uMzQuMTk4LS40Mi42NzQtLjI2IDEuM2wxLjMzMy0uNzc0Yy0uMzQtLjUzLS43NDMtLjcxOC0xLjA3NC0uNTI1bTEuNTQyLjc4MmwtMS42MTMuOTRjLjM0LjYxNC44MDguODY1IDEuMTczLjY1NC4xLS4wNTguMTkzLS4xMjMuMjYzLS4yMnYuNTk1bC0uMDc0LjA0NmMtLjUuMy0xLjIzLS4xMTItMS42Ni0xLjA2NS0uNDM0LS45Ni0uMzM4LTEuODUzLjE3Ny0yLjE0OC41MzgtLjMxNCAxLjI3LjMgMS42MTQgMS4wNDQuMDM3LjA4LjA4LjExNi4xMi4xNTZtNS41ODIgMy4zMjRjLS4zNDIuMi0uNDIzLjY3NC0uMjYgMS4zbDEuMzM0LS43NzVjLS4zNC0uNTI3LS43NDQtLjcxNS0xLjA3My0uNTI0bTEuNTQyLjc4NGwtMS42MTUuOTM4Yy4zNC42MTQuOC44NjQgMS4xNzQuNjUzLjEtLjA2LjItLjEyNC4yNi0uMjJsLjAwMy41OTVjLS4wMjQuMDE4LS4wNDguMDMyLS4wNzMuMDQ1LS41LjMtMS4yMy0uMTEzLTEuNjYtMS4wNjQtLjQzNi0uOTYtLjM0LTEuODUyLjE3NC0yLjE1LjU0LS4zMTMgMS4yNzMuMjkyIDEuNjE2IDEuMDQ2LjAzNi4wOC4wODIuMTE2LjEyLjE1Nm0xLjUzLjk5Yy0uMzQuMi0uNDIuNjc0LS4yNiAxLjNsMS4zMzItLjc3N2MtLjM0LS41MjctLjc0Mi0uNzE1LTEuMDcyLS41MjRtMS41NC43ODRsLTEuNjE0LjkzOGMuMzQyLjYxMy44Ljg2NCAxLjE3NS42NTNhLjguOCAwIDAgMCAuMjYtLjIybC4wMDMuNTk1LS4wNzQuMDQ1Yy0uNS4zLTEuMjMtLjExMi0xLjY2LTEuMDY1LS40MzUtLjk2LS4zMzgtMS44NS4xNzUtMi4xNDguNTM4LS4zMTMgMS4yNzIuMjkyIDEuNjE2IDEuMDQ2LjAzNS4wOC4wOC4xMTYuMTIuMTU2Ii8+PC9nPjxwYXRoIGQ9Ik0zOS43ODQgNDEuNjE3bC0uMDk0LS4wNTR2LS4wNDdsLjIyOC4xMy4wMDEuMDQ4LS4wOTUtLjA1NS4wMDIuMzc4LS4wNC0uMDIzem0uNDMuNDRsLS4wMDQtLjE4N2gtLjAwMWwtLjA0LjE0LS4wNTUuMTc0LS4wMy0uMDE2LS4wNS0uMjMtLjAzNi0uMTg2LS4wMDYuMTgzLS4wMDguMTc3LS4wMzgtLjAyLjAyLS40MTMuMDUyLjAzLjA1Mi4yMzQuMDMyLjE2LjAwMS4wMDJjLjAwNy0uMDQuMDItLjA4LjAzMi0uMTI1bC4wNTQtLjE3Mi4wNS4wMjguMDIuNDM1LS4wMzgtLjAyLS4wMS0uMTkyeiIgZmlsbD0iIzZjNmU3MCIvPjwvc3ZnPg=="/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 142px; margin-left: 669px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">wifi-01</div></div></div></foreignObject><text x="669" y="154" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">wifi-01</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
\ No newline at end of file
diff --git a/samples/it_v2/doc/network/subnets/02_guest.yaml b/samples/it_v2/doc/network/subnets/02_guest.yaml
new file mode 100644
index 0000000..ef3be27
--- /dev/null
+++ b/samples/it_v2/doc/network/subnets/02_guest.yaml
@@ -0,0 +1,13 @@
+# yaml-language-server: $schema=../../../schemas/subnet.json
+name: GUEST
+subnet: 192.168.5.0/24
+gw: 192.168.5.1
+dns:
+  - 192.168.5.1
+vlans:
+  - 10
+dhcp:
+  server: '192.168.5.1'
+  ranges:
+    - from: '192.168.5.10'
+      to: '192.18.5.199'
diff --git a/samples/it_v2/doc/network/subnets/04_vpn.yaml b/samples/it_v2/doc/network/subnets/04_vpn.yaml
new file mode 100644
index 0000000..fdc558b
--- /dev/null
+++ b/samples/it_v2/doc/network/subnets/04_vpn.yaml
@@ -0,0 +1,11 @@
+# yaml-language-server: $schema=../../../schemas/subnet.json
+name: VPN
+subnet: 192.168.9.0/24
+gw: 192.168.9.1
+dns:
+  - 192.168.9.1
+dhcp:
+  server: '192.168.9.1'
+  ranges:
+    - from: '192.168.9.2'
+      to: '192.168.9.254'
diff --git a/samples/it_v2/doc/network/subnets/05_wan.01.drawio b/samples/it_v2/doc/network/subnets/05_wan.01.drawio
new file mode 100644
index 0000000..75f8ac9
--- /dev/null
+++ b/samples/it_v2/doc/network/subnets/05_wan.01.drawio
@@ -0,0 +1 @@
+<mxfile host="app.diagrams.net" modified="2023-03-05T19:31:14.845Z" agent="5.0 (X11)" etag="FslN_q_c38xDY7rFevKs" version="21.0.2" type="device"><diagram id="b6ezudLEMjEVSUdVGraq" name="Page-1">5VbLVtswEP2aLPHxKwksIQnQU3rKKYt25yPssS2QPa4k44SvrxTLr9jhUeiqySLWndFIuvdm5Jm3yrZXnBTpN4yAzVw72s689cx1HXfpqx+N7GpkMT+tgYTTyCR1wB19BgPaBi1pBGKQKBGZpMUQDDHPIZQDjHCO1TAtRjZctSAJjIC7kLAx+pNGMq3RU3fZ4ddAk7RZ2Vmc1ZGMNMnmJCIlEVY9yNvMvBVHlPVTtl0B0+Q1vNTzLo9E241xyOVbJjz/mP/eXIuA4HXM/V/x9/OvcOKYMk+ElebEoqIyTE9sExFy13CRyoypJ2fmXTwBl1SxdEPugd2ioJJirmL3KCVmvYRzRhMdkFgoFEvJaA6rVixbgS0xehARkULURQq9drZNtLssTsJHKy0gILy8J1a9UxDWw9npfEECd+7ZgesngSviomClCOoMVWlMVnNwtU/Y9iBD3hVgBpLvVIqJLnwjZONk35rXQNUZw/HdGkv7pjB5xHgxaWt3cqkHo9g71Gtc2FPvSy6B5yBH4k1SP2D7LzUlZhSCXloBPZscCkgq4VnUbDFQZF/ElLEVMuT7XXprd+2tPYWr/Iiqik0sxxw+R8cDGZthX0TbHou48P+RiJ43EnEkHkSqKZkhcpligjlhmw694FjmUStll3ODWqS9GA8g5c50WFJKHEoVY0e2EsLef7SEknB5rjup1pgRIWjYwJeUNdOPCiOw5CG8wcSqYALyJaJMRU3Gi0JzYETSp2EHn9LNTL1FZcmeQZyhQ5busEJ9IjPpQPx2Fx/wg/9/+6GR+VU/OJ/uh4/9j8dXaUw5VISxqcv0GL/TTfbV3swOAm03fqk9T94JBx15tf/sFeb4CL2Iv9bf4726gdeKhdBsK9dObIs1b1TuxFWhLogK+aOwlJPrjX9G7z87uMOdUfNfTvR+1323Z9Swe7WrW0P3guxt/gA=</diagram></mxfile>
\ No newline at end of file
diff --git a/samples/it_v2/doc/network/subnets/05_wan.01.svg b/samples/it_v2/doc/network/subnets/05_wan.01.svg
new file mode 100644
index 0000000..98c2996
--- /dev/null
+++ b/samples/it_v2/doc/network/subnets/05_wan.01.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Do not edit this file with editors other than diagrams.net -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="743px" height="86px" viewBox="-0.5 -0.5 743 86" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2023-03-05T19:31:29.109Z&quot; agent=&quot;5.0 (X11)&quot; etag=&quot;6HpyPnld0iTa0z9jPkPf&quot; version=&quot;21.0.2&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;b6ezudLEMjEVSUdVGraq&quot; name=&quot;Page-1&quot;&gt;5VbLVtswEP2aLPHxKwksIQnQU3rKKYt25yPssS2QPa4k44SvrxTLr9jhUeiqySLWndFIuvdm5Jm3yrZXnBTpN4yAzVw72s689cx1HXfpqx+N7GpkMT+tgYTTyCR1wB19BgPaBi1pBGKQKBGZpMUQDDHPIZQDjHCO1TAtRjZctSAJjIC7kLAx+pNGMq3RU3fZ4ddAk7RZ2Vmc1ZGMNMnmJCIlEVY9yNvMvBVHlPVTtl0B0+Q1vNTzLo9E241xyOVbJjz/mP/eXIuA4HXM/V/x9/OvcOKYMk+ElebEoqIyTE9sExFy13CRyoypJ2fmXTwBl1SxdEPugd2ioJJirmL3KCVmvYRzRhMdkFgoFEvJaA6rVixbgS0xehARkULURQq9drZNtLssTsJHKy0gILy8J1a9UxDWw9npfEECd+7ZgesngSviomClCOoMVWlMVnNwtU/Y9iBD3hVgBpLvVIqJLnwjZONk35rXQNUZw/HdGkv7pjB5xHgxaWt3cqkHo9g71Gtc2FPvSy6B5yBH4k1SP2D7LzUlZhSCXloBPZscCkgq4VnUbDFQZF/ElLEVMuT7XXprd+2tPYWr/Iiqik0sxxw+R8cDGZthX0TbHou48P+RiJ43EnEkHkSqKZkhcpligjlhmw694FjmUStll3ODWqS9GA8g5c50WFJKHEoVY0e2EsLef7SEknB5rjup1pgRIWjYwJeUNdOPCiOw5CG8wcSqYALyJaJMRU3Gi0JzYETSp2EHn9LNTL1FZcmeQZyhQ5busEJ9IjPpQPx2Fx/wg/9/+6GR+VU/OJ/uh4/9j8dXaUw5VISxqcv0GL/TTfbV3swOAm03fqk9T94JBx15tf/sFeb4CL2Iv9bf4726gdeKhdBsK9dObIs1b1TuxFWhLogK+aOwlJPrjX9G7z87uMOdUfNfTvR+1323Z9Swe7WrW0P3guxt/gA=&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="600" y="24.5" width="142" height="15" fill="#404040" stroke="#050505" stroke-width="0.17" pointer-events="all"/><path d="M 602.39 33.88 L 602.39 36.39 L 603.25 36.39 L 603.25 37.18 L 605.36 37.18 L 605.36 36.39 L 606.16 36.39 L 606.16 33.88 L 602.39 33.88 Z" fill="#1a1a1a" stroke="#313131" stroke-width="0.17" stroke-miterlimit="10" pointer-events="all"/><rect x="600" y="24.5" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 670.97 27.73 L 699.07 27.73 L 699.07 36.66 L 670.97 36.66 L 670.97 27.73 Z M 699.48 27.73 L 727.58 27.73 L 727.58 36.66 L 699.48 36.66 L 699.48 27.73 Z" fill="#f2f2f2" stroke="none" pointer-events="all"/><path d="M 674.99 36.25 L 675.84 36.25 L 675.84 35.76 L 674.99 35.76 L 674.99 36.25 Z M 671.65 36.25 L 672.51 36.25 L 672.51 35.75 L 671.65 35.75 L 671.65 36.25 Z M 679.5 36.25 L 680.35 36.25 L 680.35 35.76 L 679.5 35.76 L 679.5 36.25 Z M 676.16 36.25 L 677.02 36.25 L 677.02 35.75 L 676.16 35.75 L 676.16 36.25 Z M 684.01 36.25 L 684.87 36.25 L 684.87 35.76 L 684.01 35.76 L 684.01 36.25 Z M 680.67 36.25 L 681.53 36.25 L 681.53 35.75 L 680.67 35.75 L 680.67 36.25 Z M 688.52 36.25 L 689.38 36.25 L 689.38 35.76 L 688.52 35.76 L 688.52 36.25 Z M 685.18 36.25 L 686.04 36.25 L 686.04 35.75 L 685.18 35.75 L 685.18 36.25 Z M 693.03 36.25 L 693.89 36.25 L 693.89 35.76 L 693.03 35.76 L 693.03 36.25 Z M 689.69 36.25 L 690.55 36.25 L 690.55 35.75 L 689.69 35.75 L 689.69 36.25 Z M 697.54 36.25 L 698.4 36.25 L 698.4 35.76 L 697.54 35.76 L 697.54 36.25 Z M 694.21 36.25 L 695.06 36.25 L 695.06 35.75 L 694.21 35.75 L 694.21 36.25 Z M 703.5 36.25 L 704.36 36.25 L 704.36 35.76 L 703.5 35.76 L 703.5 36.25 Z M 700.17 36.25 L 701.02 36.25 L 701.02 35.75 L 700.17 35.75 L 700.17 36.25 Z M 708.01 36.25 L 708.87 36.25 L 708.87 35.76 L 708.01 35.76 L 708.01 36.25 Z M 704.68 36.25 L 705.54 36.25 L 705.54 35.75 L 704.68 35.75 L 704.68 36.25 Z M 712.52 36.25 L 713.38 36.25 L 713.38 35.76 L 712.52 35.76 L 712.52 36.25 Z M 709.19 36.25 L 710.05 36.25 L 710.05 35.75 L 709.19 35.75 L 709.19 36.25 Z M 717.04 36.25 L 717.89 36.25 L 717.89 35.76 L 717.04 35.76 L 717.04 36.25 Z M 713.7 36.25 L 714.56 36.25 L 714.56 35.75 L 713.7 35.75 L 713.7 36.25 Z M 721.55 36.25 L 722.4 36.25 L 722.4 35.76 L 721.55 35.76 L 721.55 36.25 Z M 718.21 36.25 L 719.07 36.25 L 719.07 35.75 L 718.21 35.75 L 718.21 36.25 Z M 726.06 36.25 L 726.91 36.25 L 726.91 35.76 L 726.06 35.76 L 726.06 36.25 Z M 722.72 36.25 L 723.58 36.25 L 723.58 35.75 L 722.72 35.75 L 722.72 36.25 Z" fill="#96ad92" stroke="#646664" stroke-width="0.1" stroke-miterlimit="10" pointer-events="all"/><rect x="600" y="24.5" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 672.78 36.27 L 672.78 35.33 L 671.88 35.33 L 671.88 33 L 675.66 33 L 675.66 35.33 L 674.77 35.33 L 674.77 36.27 L 672.78 36.27 Z M 677.29 36.27 L 677.29 35.33 L 676.39 35.33 L 676.39 33 L 680.17 33 L 680.17 35.33 L 679.28 35.33 L 679.28 36.27 L 677.29 36.27 Z M 681.8 36.27 L 681.8 35.33 L 680.9 35.33 L 680.9 33 L 684.68 33 L 684.68 35.33 L 683.79 35.33 L 683.79 36.27 L 681.8 36.27 Z M 686.31 36.27 L 686.31 35.33 L 685.41 35.33 L 685.41 33 L 689.2 33 L 689.2 35.33 L 688.3 35.33 L 688.3 36.27 L 686.31 36.27 Z M 690.82 36.27 L 690.82 35.33 L 689.92 35.33 L 689.92 33 L 693.71 33 L 693.71 35.33 L 692.81 35.33 L 692.81 36.27 L 690.82 36.27 Z M 695.34 28.04 L 695.34 28.97 L 694.44 28.97 L 694.44 31.31 L 698.22 31.31 L 698.22 28.97 L 697.33 28.97 L 697.33 28.04 L 695.34 28.04 Z M 690.84 28.04 L 690.84 28.97 L 689.95 28.97 L 689.95 31.31 L 693.73 31.31 L 693.73 28.97 L 692.84 28.97 L 692.84 28.04 L 690.84 28.04 Z M 686.35 28.04 L 686.35 28.97 L 685.46 28.97 L 685.46 31.31 L 689.24 31.31 L 689.24 28.97 L 688.35 28.97 L 688.35 28.04 L 686.35 28.04 Z M 681.86 28.04 L 681.86 28.97 L 680.96 28.97 L 680.96 31.31 L 684.75 31.31 L 684.75 28.97 L 683.85 28.97 L 683.85 28.04 L 681.86 28.04 Z M 677.37 28.04 L 677.37 28.97 L 676.47 28.97 L 676.47 31.31 L 680.25 31.31 L 680.25 28.97 L 679.36 28.97 L 679.36 28.04 L 677.37 28.04 Z M 672.87 28.04 L 672.87 28.97 L 671.98 28.97 L 671.98 31.31 L 675.76 31.31 L 675.76 28.97 L 674.87 28.97 L 674.87 28.04 L 672.87 28.04 Z M 695.33 36.27 L 695.33 35.33 L 694.43 35.33 L 694.43 33 L 698.22 33 L 698.22 35.33 L 697.32 35.33 L 697.32 36.27 L 695.33 36.27 Z M 701.29 36.27 L 701.29 35.33 L 700.4 35.33 L 700.4 33 L 704.18 33 L 704.18 35.33 L 703.29 35.33 L 703.29 36.27 L 701.29 36.27 Z M 705.8 36.27 L 705.8 35.33 L 704.91 35.33 L 704.91 33 L 708.69 33 L 708.69 35.33 L 707.8 35.33 L 707.8 36.27 L 705.8 36.27 Z M 710.31 36.27 L 710.31 35.33 L 709.42 35.33 L 709.42 33 L 713.2 33 L 713.2 35.33 L 712.31 35.33 L 712.31 36.27 L 710.31 36.27 Z M 714.82 36.27 L 714.82 35.33 L 713.93 35.33 L 713.93 33 L 717.71 33 L 717.71 35.33 L 716.82 35.33 L 716.82 36.27 L 714.82 36.27 Z M 719.33 36.27 L 719.33 35.33 L 718.44 35.33 L 718.44 33 L 722.22 33 L 722.22 35.33 L 721.33 35.33 L 721.33 36.27 L 719.33 36.27 Z M 723.85 28.04 L 723.85 28.97 L 722.96 28.97 L 722.96 31.31 L 726.74 31.31 L 726.74 28.97 L 725.85 28.97 L 725.85 28.04 L 723.85 28.04 Z M 719.36 28.04 L 719.36 28.97 L 718.47 28.97 L 718.47 31.31 L 722.25 31.31 L 722.25 28.97 L 721.35 28.97 L 721.35 28.04 L 719.36 28.04 Z M 714.87 28.04 L 714.87 28.97 L 713.97 28.97 L 713.97 31.31 L 717.76 31.31 L 717.76 28.97 L 716.86 28.97 L 716.86 28.04 L 714.87 28.04 Z M 710.38 28.04 L 710.38 28.97 L 709.48 28.97 L 709.48 31.31 L 713.26 31.31 L 713.26 28.97 L 712.37 28.97 L 712.37 28.04 L 710.38 28.04 Z M 705.88 28.04 L 705.88 28.97 L 704.99 28.97 L 704.99 31.31 L 708.77 31.31 L 708.77 28.97 L 707.88 28.97 L 707.88 28.04 L 705.88 28.04 Z M 701.39 28.04 L 701.39 28.97 L 700.5 28.97 L 700.5 31.31 L 704.28 31.31 L 704.28 28.97 L 703.38 28.97 L 703.38 28.04 L 701.39 28.04 Z M 723.85 36.27 L 723.85 35.33 L 722.95 35.33 L 722.95 33 L 726.73 33 L 726.73 35.33 L 725.84 35.33 L 725.84 36.27 L 723.85 36.27 Z" fill="#333" stroke="none" pointer-events="all"/><rect x="600.56" y="24.78" width="5.81" height="3.23" fill="#333" stroke="#282828" stroke-width="0.13" pointer-events="all"/><rect x="607.43" y="25.14" width="5.81" height="3.5" fill="#4d4d4d" stroke="#808080" stroke-width="0.1" pointer-events="all"/><path d="M 603.33 30.26 L 606.28 30.26 L 606.28 31.01 L 603.33 31.01 L 603.33 30.26 Z M 603.33 29.03 L 606.28 29.03 L 606.28 29.77 L 603.33 29.77 L 603.33 29.03 Z" fill="#cde1cb" stroke="#2a2a2a" stroke-width="0.13" stroke-miterlimit="10" pointer-events="all"/><rect x="614.47" y="35.75" width="2.32" height="0.72" fill="none" stroke="#808080" stroke-width="0.13" pointer-events="all"/><rect x="600" y="24.5" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="735.3" y="27.91" width="4.84" height="8.51" fill="#f2f2f2" stroke="none" pointer-events="all"/><path d="M 735.52 33.2 L 739.92 33.2 L 739.92 36.13 L 735.52 36.13 L 735.52 33.2 Z M 735.52 28.2 L 739.92 28.2 L 739.92 31.12 L 735.52 31.12 L 735.52 28.2 Z" fill="#262626" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 47px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">switch-01</div></div></div></foreignObject><text x="671" y="59" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">switch-01</text></switch></g><path d="M 100 43.5 L 100 47.97 C 100 56.28 90.37 64 80.14 64 L 20.19 64 C 10.2 64 0.02 56.73 0.02 47.85 L 0 44.53 C 0 36.51 4.86 29.04 12.94 26.5 C 12.73 19.67 15.49 13.59 20.62 8.55 C 27.41 1.98 38.12 0 47.09 3.05 C 53.97 5.44 59.19 10.28 61.79 15.92 C 66.36 13.03 72.13 12.93 76.92 16.26 C 79.47 18.05 81.84 21.11 82.07 25.64 C 86.72 26.03 91.56 28.16 95.46 32.61 C 98.3 35.77 99.94 39.88 100 43.5 Z" fill="#d2d3d3" stroke="none" pointer-events="all"/><path d="M 100 43.5 L 100 47.97 C 100 56.3 90.37 64 80.14 64 L 20.19 64 C 10.16 64 0.02 56.73 0.02 47.85 L 0 44.53 C 0 53.27 9.89 60.59 20.07 60.59 L 79.89 60.59 C 91.13 60.59 100 52.7 100 43.5 Z" fill-opacity="0.3" fill="#000000" stroke="none" pointer-events="all"/><rect x="0" y="0" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 47.88 44.46 L 39.39 44.46 L 39.39 55.49 L 28.02 55.49 L 28.02 44.46 L 19.54 44.46 L 33.71 21.07 Z M 62.05 55.4 L 47.88 32 L 56.36 32 L 56.36 20.97 L 67.73 20.97 L 67.73 32 L 76.22 32 Z" fill="#ffffff" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 71px; margin-left: 50px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Internet</div></div></div></foreignObject><text x="50" y="83" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Internet</text></switch></g><path d="M 106.37 32 L 443.63 32" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 101.12 32 L 108.12 28.5 L 106.37 32 L 108.12 35.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 448.88 32 L 441.88 35.5 L 443.63 32 L 441.88 28.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 526.37 32 L 593.63 32" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 521.12 32 L 528.12 28.5 L 526.37 32 L 528.12 35.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 598.88 32 L 591.88 35.5 L 593.63 32 L 591.88 28.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="450" y="21" width="70" height="18.97" rx="3.79" ry="3.79" fill="#cccccc" stroke="#4d4d4d" stroke-width="1.4" pointer-events="all"/><rect x="457" y="39.97" width="56" height="3.03" fill="#cccccc" stroke="#4d4d4d" stroke-width="1.4" pointer-events="all"/><path d="M 452.1 26.31 L 456.3 26.31 L 456.3 28.59 L 454.9 28.59 L 454.9 29.34 L 453.5 29.34 L 453.5 28.59 L 452.1 28.59 Z M 458.05 26.31 L 462.25 26.31 L 462.25 28.59 L 460.85 28.59 L 460.85 29.34 L 459.45 29.34 L 459.45 28.59 L 458.05 28.59 Z M 464 26.31 L 468.2 26.31 L 468.2 28.59 L 466.8 28.59 L 466.8 29.34 L 465.4 29.34 L 465.4 28.59 L 464 28.59 Z M 469.95 26.31 L 474.15 26.31 L 474.15 28.59 L 472.75 28.59 L 472.75 29.34 L 471.35 29.34 L 471.35 28.59 L 469.95 28.59 Z M 475.9 26.31 L 480.1 26.31 L 480.1 28.59 L 478.7 28.59 L 478.7 29.34 L 477.3 29.34 L 477.3 28.59 L 475.9 28.59 Z M 481.85 26.31 L 486.05 26.31 L 486.05 28.59 L 484.65 28.59 L 484.65 29.34 L 483.25 29.34 L 483.25 28.59 L 481.85 28.59 Z M 487.8 26.31 L 492 26.31 L 492 28.59 L 490.6 28.59 L 490.6 29.34 L 489.2 29.34 L 489.2 28.59 L 487.8 28.59 Z M 493.75 26.31 L 497.95 26.31 L 497.95 28.59 L 496.55 28.59 L 496.55 29.34 L 495.15 29.34 L 495.15 28.59 L 493.75 28.59 Z" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="511.6" cy="30.48" rx="5.6" ry="6.068965517241379" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="502.5" cy="24.79" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="502.5" cy="36.17" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="502.5" cy="30.48" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="495.85" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="489.9" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="483.95" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="478" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="472.05" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="466.1" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="460.15" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="454.2" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 511.6 26.31 L 511.6 34.66 M 507.05 30.48 L 509.85 30.48 M 513.35 30.48 L 516.15 30.48 M 510.2 27.83 L 511.6 26.31 L 513 27.83 M 510.2 33.14 L 511.6 34.66 L 513 33.14 M 508.45 28.97 L 509.85 30.48 L 508.45 32 M 514.75 28.97 L 513.35 30.48 L 514.75 32" fill="none" stroke="#4d4d4d" stroke-width="0.7" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 50px; margin-left: 485px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">firewall-01</div></div></div></foreignObject><text x="485" y="62" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">firewall-01</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
\ No newline at end of file
diff --git a/samples/it_v2/doc/network/subnets/05_wan.yaml b/samples/it_v2/doc/network/subnets/05_wan.yaml
new file mode 100644
index 0000000..050e88e
--- /dev/null
+++ b/samples/it_v2/doc/network/subnets/05_wan.yaml
@@ -0,0 +1,3 @@
+# yaml-language-server: $schema=../../../schemas/subnet.json
+name: WAN
+subnet: 0.0.0.0/32
diff --git a/samples/it_v2/doc/network/subnets/_index.yaml b/samples/it_v2/doc/network/subnets/_index.yaml
new file mode 100644
index 0000000..9b29001
--- /dev/null
+++ b/samples/it_v2/doc/network/subnets/_index.yaml
@@ -0,0 +1,7 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 1
+title: Subnets
+toc: false
+book: false
+templates:
+  node: subnets
\ No newline at end of file
diff --git a/samples/it_v2/doc/network/wifi/01_lan.yaml b/samples/it_v2/doc/network/wifi/01_lan.yaml
new file mode 100644
index 0000000..c37ea68
--- /dev/null
+++ b/samples/it_v2/doc/network/wifi/01_lan.yaml
@@ -0,0 +1,4 @@
+# yaml-language-server: $schema=../../../schemas/wifi.json
+name: LAN
+ssid: 'Company-WIFI'
+key: 'feDFw848$435dEWs'
\ No newline at end of file
diff --git a/samples/it_v2/doc/network/wifi/02_guest.yaml b/samples/it_v2/doc/network/wifi/02_guest.yaml
new file mode 100644
index 0000000..f1b67d2
--- /dev/null
+++ b/samples/it_v2/doc/network/wifi/02_guest.yaml
@@ -0,0 +1,4 @@
+# yaml-language-server: $schema=../../../schemas/wifi.json
+name: GUEST
+ssid: 'GUEST-WIFI'
+key: 'Visitors'
\ No newline at end of file
diff --git a/samples/it_v2/doc/network/wifi/_index.yaml b/samples/it_v2/doc/network/wifi/_index.yaml
new file mode 100644
index 0000000..3e2c679
--- /dev/null
+++ b/samples/it_v2/doc/network/wifi/_index.yaml
@@ -0,0 +1,7 @@
+# yaml-language-server: $schema=../../../schemas/_index.json
+index: 2
+title: WIFI
+toc: false
+book: false
+templates:
+  node: wifis
\ No newline at end of file
diff --git a/samples/it_v2/doc/secrets/_index.yaml b/samples/it_v2/doc/secrets/_index.yaml
new file mode 100644
index 0000000..a0ebb65
--- /dev/null
+++ b/samples/it_v2/doc/secrets/_index.yaml
@@ -0,0 +1,6 @@
+# yaml-language-server: $schema=../../schemas/_index.json
+index: 1000
+title: Secrets
+templates:
+  node: 'secrets'
+  items: '@none'
\ No newline at end of file
diff --git a/samples/it_v2/doc/secrets/ad.yaml b/samples/it_v2/doc/secrets/ad.yaml
new file mode 100644
index 0000000..7c30bab
--- /dev/null
+++ b/samples/it_v2/doc/secrets/ad.yaml
@@ -0,0 +1,9 @@
+# yaml-language-server: $schema=../../schemas/secrets.json
+name: AD
+secrets:
+  - type: AD
+    user: Administrator
+    password: 'Pa$$w0rd'
+  - type: AD
+    user: LocalAdmin
+    password: 'SimplePass'
diff --git a/samples/it_v2/doc/secrets/ms365.yaml b/samples/it_v2/doc/secrets/ms365.yaml
new file mode 100644
index 0000000..fdd70a1
--- /dev/null
+++ b/samples/it_v2/doc/secrets/ms365.yaml
@@ -0,0 +1,11 @@
+# yaml-language-server: $schema=../../schemas/secrets.json
+name: Microsoft 365
+secrets:
+  - type: https
+    user: admin@companysa.onmicrosoft.com
+    password: 'MySuperPassword'
+    mfa:
+      - type: totp
+        value: 'JEWRF85D23NNMEISL3j'
+      - type: sms
+        value: '+000000000000'
diff --git a/samples/it_v2/doc/secrets/windows.yaml b/samples/it_v2/doc/secrets/windows.yaml
new file mode 100644
index 0000000..552e329
--- /dev/null
+++ b/samples/it_v2/doc/secrets/windows.yaml
@@ -0,0 +1,6 @@
+# yaml-language-server: $schema=../../schemas/secrets.json
+name: Windows
+secrets:
+  - type: USER
+    user: Administrator
+    password: 'Pa$$w0rd'
diff --git a/samples/it_v2/doc/softwares/_index.yaml b/samples/it_v2/doc/softwares/_index.yaml
new file mode 100644
index 0000000..e3219d0
--- /dev/null
+++ b/samples/it_v2/doc/softwares/_index.yaml
@@ -0,0 +1,5 @@
+# yaml-language-server: $schema=../../schemas/_index.json
+index: 10
+title: Softwares
+templates:
+  node: 'softwares'
\ No newline at end of file
diff --git a/samples/it_v2/doc/softwares/software1.notes.md b/samples/it_v2/doc/softwares/software1.notes.md
new file mode 100644
index 0000000..4e25d1c
--- /dev/null
+++ b/samples/it_v2/doc/softwares/software1.notes.md
@@ -0,0 +1,3 @@
+### Additional informations
+
+Before you begin, ....
\ No newline at end of file
diff --git a/samples/it_v2/doc/softwares/software1.yaml b/samples/it_v2/doc/softwares/software1.yaml
new file mode 100644
index 0000000..789d135
--- /dev/null
+++ b/samples/it_v2/doc/softwares/software1.yaml
@@ -0,0 +1,9 @@
+# yaml-language-server: $schema=../../schemas/software.json
+name: 'Software 1'
+publisher: 'Software Inc'
+licenses: '4'
+urls:
+  - website: 'https://soft.home'
+  - download: 'https://soft.download'
+files:
+  - notes.md
diff --git a/samples/it_v2/schemas/_index.json b/samples/it_v2/schemas/_index.json
new file mode 100644
index 0000000..cfb9ee2
--- /dev/null
+++ b/samples/it_v2/schemas/_index.json
@@ -0,0 +1,99 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"index": { "type": "integer" },
+		"title": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"book": { "type": "boolean" },
+		"toc": { "type": "boolean" },
+		"templates": {
+			"type": "object",
+			"properties": {
+				"node": {
+					"anyOf": [
+						{"type": "string"},
+						{"enum": [
+							"''"
+						]}
+					]
+				},
+				"items": {
+					"anyOf": [
+						{"type": "string"},
+						{"enum": [
+							"''"
+						]}
+					]
+				}
+			}
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/ad_acls.json b/samples/it_v2/schemas/ad_acls.json
new file mode 100644
index 0000000..5b835e1
--- /dev/null
+++ b/samples/it_v2/schemas/ad_acls.json
@@ -0,0 +1,118 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"folders": {
+			"type": "array",
+			"items": {
+				"properties": {
+					"path": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"acls": {
+						"type": "array",
+						"items": {
+							"properties": {
+								"name": {
+									"oneOf": [
+										{"type": "string"},
+										{"enum": [
+											"''"
+										]}
+									]
+								},
+								"access": {
+									"oneOf": [
+										{"type": "string"},
+										{"enum": [
+											"''",
+											"'RO'",
+											"'RW'",
+											"'traversal'",
+											"'DENY'"
+										]}
+									]
+								}
+							}
+						}
+					}
+				}
+			}
+
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/ad_dfs.json b/samples/it_v2/schemas/ad_dfs.json
new file mode 100644
index 0000000..829e89d
--- /dev/null
+++ b/samples/it_v2/schemas/ad_dfs.json
@@ -0,0 +1,121 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"path": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"targets": {
+			"type": "array",
+			"items": {
+				"oneOf": [
+					{"type": "string"},
+					{"enum": [
+						"''"
+					]}
+				]
+			}
+		},
+		"folders": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"targets": {
+						"type": "array",
+						"items": {
+							"oneOf": [
+								{"type": "string"},
+								{"enum": [
+									"''"
+								]}
+							]
+						}
+					}
+				}
+			}
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/ad_domain.json b/samples/it_v2/schemas/ad_domain.json
new file mode 100644
index 0000000..17c6f7d
--- /dev/null
+++ b/samples/it_v2/schemas/ad_domain.json
@@ -0,0 +1,116 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"dc": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"fsmo": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'all'"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"servers": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/ad_shares.json b/samples/it_v2/schemas/ad_shares.json
new file mode 100644
index 0000000..9be9512
--- /dev/null
+++ b/samples/it_v2/schemas/ad_shares.json
@@ -0,0 +1,107 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"fileshares": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"path": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"printshares": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"path": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/ad_usergroups.json b/samples/it_v2/schemas/ad_usergroups.json
new file mode 100644
index 0000000..6a100ea
--- /dev/null
+++ b/samples/it_v2/schemas/ad_usergroups.json
@@ -0,0 +1,91 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"usergroups": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/computer.json b/samples/it_v2/schemas/computer.json
new file mode 100644
index 0000000..2613ee4
--- /dev/null
+++ b/samples/it_v2/schemas/computer.json
@@ -0,0 +1,341 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"maintainer": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"type": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'notebook'",
+					"'rack'",
+					"'slim'",
+					"'small'",
+					"'tower'",
+					"'vm'"
+				]}
+			]
+		},
+		"model": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"os": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{"enum": [
+					"''",
+					"'Windows XP Home'",
+					"'Windows XP Pro'",
+					"'Windows Vista Home'",
+					"'Windows Vista Pro'",
+					"'Windows 7 Home'",
+					"'Windows 7 Pro'",
+					"'Windows 8 Home'",
+					"'Windows 8 Pro'",
+					"'Windows 10 Home'",
+					"'Windows 10 Pro'",
+					"'Windows 11 Home'",
+					"'Windows 11 Pro'"
+				]}
+			]
+		},
+		"location": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"interfaces": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'LAN'",
+								"'WIFI'",
+								"'WAN'",
+								"'VPN'"
+							]}
+						]
+					},
+					"ip": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"mask": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'255.255.255.0'",
+								"'255.255.0.0'",
+								"'255.0.0.0'"
+							]}
+						]
+					},
+					"gw": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"dns": {
+						"type": "array",
+						"items": {
+							"anyOf": [
+								{"type": "string"},
+								{"enum": [
+									"''"
+								]}
+							]
+						}
+					}
+				}
+			}
+		},
+		"updates": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'os'"
+							]}
+						]
+					},
+					"method": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'manual'"
+							]}
+						]
+					},
+					"frequency": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'daily'",
+								"'weekly'",
+								"'monthly'",
+								"'quarterly'",
+								"'halfyearly'",
+								"'yearly'",
+								"'monday'",
+								"'tuesday'",
+								"'wednesday'",
+								"'thursday'",
+								"'friday'",
+								"'saturday'",
+								"'sonday'"
+							]}
+						]
+					},
+					"time": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'auto'"
+							]}
+						]
+					},
+					"duration": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "type": "integer" },
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"backups": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'none'",
+								"'hypervisor'",
+								"'windowsbackup'"
+							]}
+						]
+					},
+					"method": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'manual'"
+							]}
+						]
+					},
+					"frequency": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'daily'",
+								"'weekly'",
+								"'monthly'",
+								"'quarterly'",
+								"'halfyearly'",
+								"'yearly'",
+								"'monday'",
+								"'tuesday'",
+								"'wednesday'",
+								"'thursday'",
+								"'friday'",
+								"'saturday'",
+								"'sonday'"
+							]}
+						]
+					},
+					"target": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'usb'",
+								"'pbs'",
+								"'share'",
+								"'iscsi'",
+								"'cloud'"
+							]}
+						]
+					},
+					"time": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'auto'"
+							]}
+						]
+					},
+					"duration": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "type": "integer" },
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/netdev.json b/samples/it_v2/schemas/netdev.json
new file mode 100644
index 0000000..a294829
--- /dev/null
+++ b/samples/it_v2/schemas/netdev.json
@@ -0,0 +1,345 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"maintainer": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"type": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'box'",
+					"'rack'",
+					"'wall'",
+					"'ceiling'"
+				]}
+			]
+		},
+		"roles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''",
+						"'DHCP'",
+						"'DNS'",
+						"'VPN'",
+						"'Firewall'",
+						"'Router'"
+					]}
+				]
+			}	
+		},
+		"model": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"os": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{"enum": [
+					"''",
+					"'Linux'",
+					"'Debian'"
+				]}
+			]
+		},
+		"location": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"interfaces": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'LAN'",
+								"'WIFI'",
+								"'WAN'",
+								"'VPN'"
+							]}
+						]
+					},
+					"ip": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"mask": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'255.255.255.0'",
+								"'255.255.0.0'",
+								"'255.0.0.0'"
+							]}
+						]
+					},
+					"gw": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"dns": {
+						"type": "array",
+						"items": {
+							"anyOf": [
+								{"type": "string"},
+								{"enum": [
+									"''"
+								]}
+							]
+						}
+					}
+				}
+			}
+		},
+		"updates": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'os'"
+							]}
+						]
+					},
+					"method": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'manual'"
+							]}
+						]
+					},
+					"frequency": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'daily'",
+								"'weekly'",
+								"'monthly'",
+								"'quarterly'",
+								"'halfyearly'",
+								"'yearly'",
+								"'monday'",
+								"'tuesday'",
+								"'wednesday'",
+								"'thursday'",
+								"'friday'",
+								"'saturday'",
+								"'sonday'"
+							]}
+						]
+					},
+					"time": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'auto'"
+							]}
+						]
+					},
+					"duration": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "type": "integer" },
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"backups": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'none'",
+								"'hypervisor'",
+								"'windowsbackup'"
+							]}
+						]
+					},
+					"method": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'manual'"
+							]}
+						]
+					},
+					"frequency": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'daily'",
+								"'weekly'",
+								"'monthly'",
+								"'quarterly'",
+								"'halfyearly'",
+								"'yearly'",
+								"'monday'",
+								"'tuesday'",
+								"'wednesday'",
+								"'thursday'",
+								"'friday'",
+								"'saturday'",
+								"'sonday'"
+							]}
+						]
+					},
+					"target": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'usb'",
+								"'pbs'",
+								"'share'",
+								"'iscsi'",
+								"'cloud'"
+							]}
+						]
+					},
+					"time": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'auto'"
+							]}
+						]
+					},
+					"duration": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "type": "integer" },
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/printer.json b/samples/it_v2/schemas/printer.json
new file mode 100644
index 0000000..b143ef8
--- /dev/null
+++ b/samples/it_v2/schemas/printer.json
@@ -0,0 +1,317 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"maintainer": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"type": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'printer'",
+					"'mfc'",
+					"'large printer'"
+				]}
+			]
+		},
+		"model": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"location": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"interfaces": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'LAN'",
+								"'WIFI'",
+								"'WAN'",
+								"'VPN'"
+							]}
+						]
+					},
+					"ip": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"mask": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'255.255.255.0'",
+								"'255.255.0.0'",
+								"'255.0.0.0'"
+							]}
+						]
+					},
+					"gw": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"dns": {
+						"type": "array",
+						"items": {
+							"anyOf": [
+								{"type": "string"},
+								{"enum": [
+									"''"
+								]}
+							]
+						}
+					}
+				}
+			}
+		},
+		"updates": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'os'"
+							]}
+						]
+					},
+					"method": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'manual'"
+							]}
+						]
+					},
+					"frequency": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'daily'",
+								"'weekly'",
+								"'monthly'",
+								"'quarterly'",
+								"'halfyearly'",
+								"'yearly'",
+								"'monday'",
+								"'tuesday'",
+								"'wednesday'",
+								"'thursday'",
+								"'friday'",
+								"'saturday'",
+								"'sonday'"
+							]}
+						]
+					},
+					"time": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'auto'"
+							]}
+						]
+					},
+					"duration": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "type": "integer" },
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"backups": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'none'",
+								"'hypervisor'",
+								"'windowsbackup'"
+							]}
+						]
+					},
+					"method": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'manual'"
+							]}
+						]
+					},
+					"frequency": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'daily'",
+								"'weekly'",
+								"'monthly'",
+								"'quarterly'",
+								"'halfyearly'",
+								"'yearly'",
+								"'monday'",
+								"'tuesday'",
+								"'wednesday'",
+								"'thursday'",
+								"'friday'",
+								"'saturday'",
+								"'sonday'"
+							]}
+						]
+					},
+					"target": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'usb'",
+								"'pbs'",
+								"'share'",
+								"'iscsi'",
+								"'cloud'"
+							]}
+						]
+					},
+					"time": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'auto'"
+							]}
+						]
+					},
+					"duration": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "type": "integer" },
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/secrets.json b/samples/it_v2/schemas/secrets.json
new file mode 100644
index 0000000..aff9ad9
--- /dev/null
+++ b/samples/it_v2/schemas/secrets.json
@@ -0,0 +1,104 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"secrets": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"'ad'",
+								"'https'",
+								"'ssh'",
+								"'user'"
+							]}
+						]
+					},
+					"user": {
+						"oneOf": [
+						 {"type": "string"},
+						 {"enum": [
+							 "''"
+						 ]}
+						]
+					},
+					"password": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+						 	]}
+						]
+					},
+					"mfa": {
+						"type": "array",
+						"items": {
+							"type": "object",
+							"properties": {
+								"type": {
+									"oneOf": [
+										{"type": "string"},
+										{"enum": [
+											"''",
+											"'totp'",
+											"'sms'",
+											"'e-mail'"
+										]}
+									]
+								},
+								"value": {
+									"oneOf": [
+										{"type": "string"},
+										{"enum": [
+											"''"
+										]}
+									]
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/server.json b/samples/it_v2/schemas/server.json
new file mode 100644
index 0000000..346d1fd
--- /dev/null
+++ b/samples/it_v2/schemas/server.json
@@ -0,0 +1,362 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"maintainer": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"type": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'mini'",
+					"'rack'",
+					"'tower'",
+					"'vm'"
+				]}
+			]
+		},
+		"roles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''",
+						"'DHCP'",
+						"'DNS'",
+						"'VPN'",
+						"'Firewall'",
+						"'DC'",
+						"'File Server'",
+						"'Print Server'",
+						"'App Server'",
+						"'Backup Server'",
+						"'Hypervisor'"
+					]}
+				]
+			}	
+		},
+		"model": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"os": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{"enum": [
+					"''",
+					"'Windows 2000'",
+					"'Windows 2003'",
+					"'Windows 2008'",
+					"'Windows 2008 R2'",
+					"'Windows 2012'",
+					"'Windows 2012 R2'",
+					"'Windows 2016'",
+					"'Windows 2019'",
+					"'Windows 2021'",
+					"'Debian'",
+					"'Debian / Proxmox VE'",
+					"'Debian / Proxmox BS'",
+					"'FreeBSD / OPNSense'",
+					"'FreeBSD / pfSense'"
+				]}
+			]
+		},
+		"location": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"interfaces": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'LAN'",
+								"'WIFI'",
+								"'WAN'",
+								"'VPN'"
+							]}
+						]
+					},
+					"ip": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"mask": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'255.255.255.0'",
+								"'255.255.0.0'",
+								"'255.0.0.0'"
+							]}
+						]
+					},
+					"gw": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"dns": {
+						"type": "array",
+						"items": {
+							"anyOf": [
+								{"type": "string"},
+								{"enum": [
+									"''"
+								]}
+							]
+						}
+					}
+				}
+			}
+		},
+		"updates": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'os'"
+							]}
+						]
+					},
+					"method": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'manual'"
+							]}
+						]
+					},
+					"frequency": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'daily'",
+								"'weekly'",
+								"'monthly'",
+								"'quarterly'",
+								"'halfyearly'",
+								"'yearly'",
+								"'monday'",
+								"'tuesday'",
+								"'wednesday'",
+								"'thursday'",
+								"'friday'",
+								"'saturday'",
+								"'sonday'"
+							]}
+						]
+					},
+					"time": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'auto'"
+							]}
+						]
+					},
+					"duration": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "type": "integer" },
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"backups": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'none'",
+								"'hypervisor'",
+								"'windowsbackup'"
+							]}
+						]
+					},
+					"method": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'manual'"
+							]}
+						]
+					},
+					"frequency": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'daily'",
+								"'weekly'",
+								"'monthly'",
+								"'quarterly'",
+								"'halfyearly'",
+								"'yearly'",
+								"'monday'",
+								"'tuesday'",
+								"'wednesday'",
+								"'thursday'",
+								"'friday'",
+								"'saturday'",
+								"'sonday'"
+							]}
+						]
+					},
+					"target": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'usb'",
+								"'pbs'",
+								"'share'",
+								"'iscsi'",
+								"'cloud'"
+							]}
+						]
+					},
+					"time": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'auto'"
+							]}
+						]
+					},
+					"duration": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "type": "integer" },
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/software.json b/samples/it_v2/schemas/software.json
new file mode 100644
index 0000000..06322a2
--- /dev/null
+++ b/samples/it_v2/schemas/software.json
@@ -0,0 +1,124 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"maintainer": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"publisher": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"licenses": {
+			"oneOf": [
+				{"type": "integer"},
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"urls": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"website": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"download": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/subnet.json b/samples/it_v2/schemas/subnet.json
new file mode 100644
index 0000000..542abf7
--- /dev/null
+++ b/samples/it_v2/schemas/subnet.json
@@ -0,0 +1,172 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''",
+					"'LAN'",
+					"'LAN01'",
+					"'LAN02'",
+					"'LAN03'",
+					"'LAN04'",
+					"'LAN06'",
+					"'LAN07'",
+					"'LAN08'",
+					"'LAN09'",
+					"'LAN10'",
+					"'WAN'",
+					"'WIFI'",
+					"'GUEST'",
+					"'DMZ'",
+					"'VPN'"
+				]}
+			]
+		},
+		"subnet": {
+			"type": "string",
+			"oneOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'192.168.0.0/24'",
+					"'192.168.1.0/24'"
+				]}
+			]
+		},
+		"gw": {
+			"oneOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'192.168.0.1'",
+					"'192.168.1.1'"
+				]}
+			]
+		},
+		"dns": {
+			"type": "array",
+			"items": {
+				"oneOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''",
+						"'192.168.0.1'",
+						"'192.168.1.1'"
+					]}
+				]
+			}	
+		},
+		"vlans": {
+			"type": "array",
+			"items": {
+				"type": "integer"
+			}
+		},
+		"dhcp": {
+			"type": "object",
+			"properties": {
+				"server": {
+					"oneOf": [
+						{ "type": "string" },
+						{ "enum": [
+							"''",
+							"'192.168.0.1'",
+							"'192.168.1.1'"
+						]}
+					]
+				},
+				"ranges": {
+					"type": "array",
+					"items": {
+						"properties": {
+							"from": {
+								"oneOf": [
+									{ "type": "string" },
+									{ "enum": [
+										"''",
+										"'192.168.0.20'",
+										"'192.168.1.20'"
+									]}
+								]
+							},
+							"to": {
+								"oneOf": [
+									{ "type": "string" },
+									{ "enum": [
+										"''",
+										"'192.168.0.99'",
+										"'192.168.1.99'"
+									]}
+								]
+							}
+						}
+					}
+				}
+			}
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/voipdev.json b/samples/it_v2/schemas/voipdev.json
new file mode 100644
index 0000000..5a58e5b
--- /dev/null
+++ b/samples/it_v2/schemas/voipdev.json
@@ -0,0 +1,317 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"maintainer": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"type": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'phone'",
+					"'antenna'",
+					"'gateway'"
+				]}
+			]
+		},
+		"model": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"location": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"interfaces": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'LAN'",
+								"'WIFI'",
+								"'WAN'",
+								"'VPN'"
+							]}
+						]
+					},
+					"ip": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"mask": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'255.255.255.0'",
+								"'255.255.0.0'",
+								"'255.0.0.0'"
+							]}
+						]
+					},
+					"gw": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"dns": {
+						"type": "array",
+						"items": {
+							"anyOf": [
+								{"type": "string"},
+								{"enum": [
+									"''"
+								]}
+							]
+						}
+					}
+				}
+			}
+		},
+		"updates": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'os'"
+							]}
+						]
+					},
+					"method": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'manual'"
+							]}
+						]
+					},
+					"frequency": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'daily'",
+								"'weekly'",
+								"'monthly'",
+								"'quarterly'",
+								"'halfyearly'",
+								"'yearly'",
+								"'monday'",
+								"'tuesday'",
+								"'wednesday'",
+								"'thursday'",
+								"'friday'",
+								"'saturday'",
+								"'sonday'"
+							]}
+						]
+					},
+					"time": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'auto'"
+							]}
+						]
+					},
+					"duration": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "type": "integer" },
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"backups": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'none'",
+								"'hypervisor'",
+								"'windowsbackup'"
+							]}
+						]
+					},
+					"method": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'manual'"
+							]}
+						]
+					},
+					"frequency": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'daily'",
+								"'weekly'",
+								"'monthly'",
+								"'quarterly'",
+								"'halfyearly'",
+								"'yearly'",
+								"'monday'",
+								"'tuesday'",
+								"'wednesday'",
+								"'thursday'",
+								"'friday'",
+								"'saturday'",
+								"'sonday'"
+							]}
+						]
+					},
+					"target": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'usb'",
+								"'pbs'",
+								"'share'",
+								"'iscsi'",
+								"'cloud'"
+							]}
+						]
+					},
+					"time": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'auto'"
+							]}
+						]
+					},
+					"duration": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "type": "integer" },
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas/wifi.json b/samples/it_v2/schemas/wifi.json
new file mode 100644
index 0000000..d7c70f0
--- /dev/null
+++ b/samples/it_v2/schemas/wifi.json
@@ -0,0 +1,106 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"title": "YAML Schema for computer",
+	"type": "object",
+	"additionalProperties": false,
+	"properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''",
+					"'LAN'",
+					"'LAN01'",
+					"'LAN02'",
+					"'LAN03'",
+					"'LAN04'",
+					"'LAN06'",
+					"'LAN07'",
+					"'LAN08'",
+					"'LAN09'",
+					"'LAN10'",
+					"'WAN'",
+					"'WIFI'",
+					"'GUEST'",
+					"'DMZ'",
+					"'VPN'"
+				]}
+			]
+		},
+		"ssid": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"key": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/build.sh b/samples/it_v2/schemas_builder/build.sh
new file mode 100644
index 0000000..55a1980
--- /dev/null
+++ b/samples/it_v2/schemas_builder/build.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+declare -r PARTDIR=./parts
+declare -r SCHEMADIR=../schemas
+declare -r OBJECTSDIR=./objects
+
+getSchemaHeader() {
+	local DOC="{\n"
+  DOC+="\t\""'$schema'"\": \"http://json-schema.org/draft-07/schema#\",\n"
+	DOC+="\t\"title\": \"YAML Schema for computer\",\n"
+	DOC+="\t\"type\": \"object\",\n"
+	DOC+="\t\"additionalProperties\": false,\n"
+	DOC+="\t\"properties\": {\n"
+	echo -e "${DOC}"
+}
+getSchemaFooter() {
+	local DOC+="\t}\n"
+	DOC+="}\n"
+	echo -e "${DOC}"
+}
+getPart() {
+	local -r PARTFILE=${PARTDIR}/${1}.json
+	if [ ! -f "${PARTFILE}" ]; then
+		echo "${PARTFILE} not found"
+		exit 1
+	fi
+	tail -n +4 "${PARTFILE}" | head -n -2
+}
+
+buildObject() {
+	local -r OBJECTFILE=${1}
+	local DOC=$(getSchemaHeader)"\n"
+
+	while IFS= read -r LINE; do
+		if [[ ! $LINE =~ ^[[:space:]]*\#.*$ ]]; then
+			if [ -f ${PARTDIR}/"${LINE}".json ]; then
+				DOC+=$(getPart "${LINE}")",\n"
+			else
+				echo "Error: Part not found : ${LINE} in ${OBJECTFILE}"
+			fi
+		fi
+	done < "${OBJECTFILE}"
+	DOC="${DOC::-3}\n"
+
+	DOC+=$(getSchemaFooter)
+	local SCHEMAFILE=${SCHEMADIR}/$(basename "${OBJECTFILE}").json
+	echo -e "${DOC}" > "${SCHEMAFILE}"
+}
+
+for OBJECTFILE in "${OBJECTSDIR}"/*; do
+	buildObject "${OBJECTFILE}"
+done
diff --git a/samples/it_v2/schemas_builder/objects/_index b/samples/it_v2/schemas_builder/objects/_index
new file mode 100644
index 0000000..ba861a3
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/_index
@@ -0,0 +1,7 @@
+todo
+index
+title
+book
+toc
+templates
+files
diff --git a/samples/it_v2/schemas_builder/objects/ad_acls b/samples/it_v2/schemas_builder/objects/ad_acls
new file mode 100644
index 0000000..f6640db
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/ad_acls
@@ -0,0 +1,4 @@
+todo
+name
+ad_acls
+files
diff --git a/samples/it_v2/schemas_builder/objects/ad_dfs b/samples/it_v2/schemas_builder/objects/ad_dfs
new file mode 100644
index 0000000..d368685
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/ad_dfs
@@ -0,0 +1,4 @@
+todo
+name
+ad_dfs
+files
diff --git a/samples/it_v2/schemas_builder/objects/ad_domain b/samples/it_v2/schemas_builder/objects/ad_domain
new file mode 100644
index 0000000..a9dd628
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/ad_domain
@@ -0,0 +1,4 @@
+todo
+name
+ad_domain
+files
diff --git a/samples/it_v2/schemas_builder/objects/ad_shares b/samples/it_v2/schemas_builder/objects/ad_shares
new file mode 100644
index 0000000..6dd6a25
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/ad_shares
@@ -0,0 +1,4 @@
+todo
+name
+ad_shares
+files
diff --git a/samples/it_v2/schemas_builder/objects/ad_usergroups b/samples/it_v2/schemas_builder/objects/ad_usergroups
new file mode 100644
index 0000000..7e36ad0
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/ad_usergroups
@@ -0,0 +1,4 @@
+todo
+name
+ad_usergroups
+files
diff --git a/samples/it_v2/schemas_builder/objects/computer b/samples/it_v2/schemas_builder/objects/computer
new file mode 100644
index 0000000..4260345
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/computer
@@ -0,0 +1,12 @@
+todo
+name
+maintainer
+computer_type
+# computer_roles
+model
+computer_os
+location
+interfaces
+maintenance_updates
+maintenance_backups
+files
diff --git a/samples/it_v2/schemas_builder/objects/netdev b/samples/it_v2/schemas_builder/objects/netdev
new file mode 100644
index 0000000..ace2015
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/netdev
@@ -0,0 +1,12 @@
+todo
+name
+maintainer
+netdev_type
+netdev_roles
+model
+netdev_os
+location
+interfaces
+maintenance_updates
+maintenance_backups
+files
diff --git a/samples/it_v2/schemas_builder/objects/printer b/samples/it_v2/schemas_builder/objects/printer
new file mode 100644
index 0000000..eec5ff7
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/printer
@@ -0,0 +1,10 @@
+todo
+name
+maintainer
+printer_type
+model
+location
+interfaces
+maintenance_updates
+maintenance_backups
+files
diff --git a/samples/it_v2/schemas_builder/objects/secrets b/samples/it_v2/schemas_builder/objects/secrets
new file mode 100644
index 0000000..98c872f
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/secrets
@@ -0,0 +1,3 @@
+todo
+name
+secrets
diff --git a/samples/it_v2/schemas_builder/objects/server b/samples/it_v2/schemas_builder/objects/server
new file mode 100644
index 0000000..c4ae0fd
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/server
@@ -0,0 +1,12 @@
+todo
+name
+maintainer
+server_type
+server_roles
+model
+server_os
+location
+interfaces
+maintenance_updates
+maintenance_backups
+files
diff --git a/samples/it_v2/schemas_builder/objects/software b/samples/it_v2/schemas_builder/objects/software
new file mode 100644
index 0000000..c89544e
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/software
@@ -0,0 +1,6 @@
+todo
+name
+maintainer
+software
+urls
+files
diff --git a/samples/it_v2/schemas_builder/objects/subnet b/samples/it_v2/schemas_builder/objects/subnet
new file mode 100644
index 0000000..2ad454b
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/subnet
@@ -0,0 +1,4 @@
+todo
+subnet_name
+subnet
+files
diff --git a/samples/it_v2/schemas_builder/objects/voipdev b/samples/it_v2/schemas_builder/objects/voipdev
new file mode 100644
index 0000000..ccdd3ee
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/voipdev
@@ -0,0 +1,10 @@
+todo
+name
+maintainer
+voipdev_type
+model
+location
+interfaces
+maintenance_updates
+maintenance_backups
+files
diff --git a/samples/it_v2/schemas_builder/objects/wifi b/samples/it_v2/schemas_builder/objects/wifi
new file mode 100644
index 0000000..34762e0
--- /dev/null
+++ b/samples/it_v2/schemas_builder/objects/wifi
@@ -0,0 +1,4 @@
+todo
+subnet_name
+wifi
+files
diff --git a/samples/it_v2/schemas_builder/parts/ad_acls.json b/samples/it_v2/schemas_builder/parts/ad_acls.json
new file mode 100644
index 0000000..ec9e03d
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/ad_acls.json
@@ -0,0 +1,48 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"folders": {
+			"type": "array",
+			"items": {
+				"properties": {
+					"path": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"acls": {
+						"type": "array",
+						"items": {
+							"properties": {
+								"name": {
+									"oneOf": [
+										{"type": "string"},
+										{"enum": [
+											"''"
+										]}
+									]
+								},
+								"access": {
+									"oneOf": [
+										{"type": "string"},
+										{"enum": [
+											"''",
+											"'RO'",
+											"'RW'",
+											"'traversal'",
+											"'DENY'"
+										]}
+									]
+								}
+							}
+						}
+					}
+				}
+			}
+
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/ad_dfs.json b/samples/it_v2/schemas_builder/parts/ad_dfs.json
new file mode 100644
index 0000000..f783b8c
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/ad_dfs.json
@@ -0,0 +1,51 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"path": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"targets": {
+			"type": "array",
+			"items": {
+				"oneOf": [
+					{"type": "string"},
+					{"enum": [
+						"''"
+					]}
+				]
+			}
+		},
+		"folders": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"targets": {
+						"type": "array",
+						"items": {
+							"oneOf": [
+								{"type": "string"},
+								{"enum": [
+									"''"
+								]}
+							]
+						}
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/ad_domain.json b/samples/it_v2/schemas_builder/parts/ad_domain.json
new file mode 100644
index 0000000..7d13a5f
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/ad_domain.json
@@ -0,0 +1,46 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"dc": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"fsmo": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'all'"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"servers": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/ad_shares.json b/samples/it_v2/schemas_builder/parts/ad_shares.json
new file mode 100644
index 0000000..33c9835
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/ad_shares.json
@@ -0,0 +1,37 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"fileshares": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"path": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		},
+		"printshares": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"path": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/ad_usergroups.json b/samples/it_v2/schemas_builder/parts/ad_usergroups.json
new file mode 100644
index 0000000..155620a
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/ad_usergroups.json
@@ -0,0 +1,21 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"usergroups": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/book.json b/samples/it_v2/schemas_builder/parts/book.json
new file mode 100644
index 0000000..fb3194a
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/book.json
@@ -0,0 +1,6 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"book": { "type": "boolean" }
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/computer_os.json b/samples/it_v2/schemas_builder/parts/computer_os.json
new file mode 100644
index 0000000..ed449fa
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/computer_os.json
@@ -0,0 +1,26 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"os": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{"enum": [
+					"''",
+					"'Windows XP Home'",
+					"'Windows XP Pro'",
+					"'Windows Vista Home'",
+					"'Windows Vista Pro'",
+					"'Windows 7 Home'",
+					"'Windows 7 Pro'",
+					"'Windows 8 Home'",
+					"'Windows 8 Pro'",
+					"'Windows 10 Home'",
+					"'Windows 10 Pro'",
+					"'Windows 11 Home'",
+					"'Windows 11 Pro'"
+				]}
+			]
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/computer_type.json b/samples/it_v2/schemas_builder/parts/computer_type.json
new file mode 100644
index 0000000..56736a9
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/computer_type.json
@@ -0,0 +1,20 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"type": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'notebook'",
+					"'rack'",
+					"'slim'",
+					"'small'",
+					"'tower'",
+					"'vm'"
+				]}
+			]
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/files.json b/samples/it_v2/schemas_builder/parts/files.json
new file mode 100644
index 0000000..0ec1ffa
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/files.json
@@ -0,0 +1,38 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"headfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"files": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		},
+		"footfiles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''"
+					]}
+				]
+			}	
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/index.json b/samples/it_v2/schemas_builder/parts/index.json
new file mode 100644
index 0000000..e7f5731
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/index.json
@@ -0,0 +1,6 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"index": { "type": "integer" }
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/interfaces.json b/samples/it_v2/schemas_builder/parts/interfaces.json
new file mode 100644
index 0000000..c142b3c
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/interfaces.json
@@ -0,0 +1,63 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"interfaces": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'LAN'",
+								"'WIFI'",
+								"'WAN'",
+								"'VPN'"
+							]}
+						]
+					},
+					"ip": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"mask": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'255.255.255.0'",
+								"'255.255.0.0'",
+								"'255.0.0.0'"
+							]}
+						]
+					},
+					"gw": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"dns": {
+						"type": "array",
+						"items": {
+							"anyOf": [
+								{"type": "string"},
+								{"enum": [
+									"''"
+								]}
+							]
+						}
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/location.json b/samples/it_v2/schemas_builder/parts/location.json
new file mode 100644
index 0000000..1aa74bb
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/location.json
@@ -0,0 +1,13 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"location": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/maintainer.json b/samples/it_v2/schemas_builder/parts/maintainer.json
new file mode 100644
index 0000000..97805d4
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/maintainer.json
@@ -0,0 +1,13 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"maintainer": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/maintenance_backups.json b/samples/it_v2/schemas_builder/parts/maintenance_backups.json
new file mode 100644
index 0000000..fd8bb64
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/maintenance_backups.json
@@ -0,0 +1,86 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"backups": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'none'",
+								"'hypervisor'",
+								"'windowsbackup'"
+							]}
+						]
+					},
+					"method": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'manual'"
+							]}
+						]
+					},
+					"frequency": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'daily'",
+								"'weekly'",
+								"'monthly'",
+								"'quarterly'",
+								"'halfyearly'",
+								"'yearly'",
+								"'monday'",
+								"'tuesday'",
+								"'wednesday'",
+								"'thursday'",
+								"'friday'",
+								"'saturday'",
+								"'sonday'"
+							]}
+						]
+					},
+					"target": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'usb'",
+								"'pbs'",
+								"'share'",
+								"'iscsi'",
+								"'cloud'"
+							]}
+						]
+					},
+					"time": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'auto'"
+							]}
+						]
+					},
+					"duration": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "type": "integer" },
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/maintenance_updates.json b/samples/it_v2/schemas_builder/parts/maintenance_updates.json
new file mode 100644
index 0000000..dea9a0c
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/maintenance_updates.json
@@ -0,0 +1,72 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"updates": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'os'"
+							]}
+						]
+					},
+					"method": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'manual'"
+							]}
+						]
+					},
+					"frequency": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "enum": [
+								"''",
+								"'auto'",
+								"'daily'",
+								"'weekly'",
+								"'monthly'",
+								"'quarterly'",
+								"'halfyearly'",
+								"'yearly'",
+								"'monday'",
+								"'tuesday'",
+								"'wednesday'",
+								"'thursday'",
+								"'friday'",
+								"'saturday'",
+								"'sonday'"
+							]}
+						]
+					},
+					"time": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''",
+								"'auto'"
+							]}
+						]
+					},
+					"duration": {
+						"anyOf": [
+							{ "type": "string" },
+							{ "type": "integer" },
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/model.json b/samples/it_v2/schemas_builder/parts/model.json
new file mode 100644
index 0000000..b06b1e5
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/model.json
@@ -0,0 +1,13 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"model": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/name.json b/samples/it_v2/schemas_builder/parts/name.json
new file mode 100644
index 0000000..912151b
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/name.json
@@ -0,0 +1,13 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/netdev_os.json b/samples/it_v2/schemas_builder/parts/netdev_os.json
new file mode 100644
index 0000000..768f8b4
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/netdev_os.json
@@ -0,0 +1,16 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"os": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{"enum": [
+					"''",
+					"'Linux'",
+					"'Debian'"
+				]}
+			]
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/netdev_roles.json b/samples/it_v2/schemas_builder/parts/netdev_roles.json
new file mode 100644
index 0000000..bdf3926
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/netdev_roles.json
@@ -0,0 +1,21 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"roles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''",
+						"'DHCP'",
+						"'DNS'",
+						"'VPN'",
+						"'Firewall'",
+						"'Router'"
+					]}
+				]
+			}	
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/netdev_type.json b/samples/it_v2/schemas_builder/parts/netdev_type.json
new file mode 100644
index 0000000..d62c8d7
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/netdev_type.json
@@ -0,0 +1,18 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"type": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'box'",
+					"'rack'",
+					"'wall'",
+					"'ceiling'"
+				]}
+			]
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/printer_type.json b/samples/it_v2/schemas_builder/parts/printer_type.json
new file mode 100644
index 0000000..9ef03c2
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/printer_type.json
@@ -0,0 +1,17 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"type": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'printer'",
+					"'mfc'",
+					"'large printer'"
+				]}
+			]
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/secrets.json b/samples/it_v2/schemas_builder/parts/secrets.json
new file mode 100644
index 0000000..d1190d4
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/secrets.json
@@ -0,0 +1,67 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"secrets": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"'ad'",
+								"'https'",
+								"'ssh'",
+								"'user'"
+							]}
+						]
+					},
+					"user": {
+						"oneOf": [
+						 {"type": "string"},
+						 {"enum": [
+							 "''"
+						 ]}
+						]
+					},
+					"password": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+						 	]}
+						]
+					},
+					"mfa": {
+						"type": "array",
+						"items": {
+							"type": "object",
+							"properties": {
+								"type": {
+									"oneOf": [
+										{"type": "string"},
+										{"enum": [
+											"''",
+											"'totp'",
+											"'sms'",
+											"'e-mail'"
+										]}
+									]
+								},
+								"value": {
+									"oneOf": [
+										{"type": "string"},
+										{"enum": [
+											"''"
+										]}
+									]
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/server_os.json b/samples/it_v2/schemas_builder/parts/server_os.json
new file mode 100644
index 0000000..e503025
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/server_os.json
@@ -0,0 +1,28 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"os": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{"enum": [
+					"''",
+					"'Windows 2000'",
+					"'Windows 2003'",
+					"'Windows 2008'",
+					"'Windows 2008 R2'",
+					"'Windows 2012'",
+					"'Windows 2012 R2'",
+					"'Windows 2016'",
+					"'Windows 2019'",
+					"'Windows 2021'",
+					"'Debian'",
+					"'Debian / Proxmox VE'",
+					"'Debian / Proxmox BS'",
+					"'FreeBSD / OPNSense'",
+					"'FreeBSD / pfSense'"
+				]}
+			]
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/server_roles.json b/samples/it_v2/schemas_builder/parts/server_roles.json
new file mode 100644
index 0000000..0d7be1b
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/server_roles.json
@@ -0,0 +1,26 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"roles": {
+			"type": "array",
+			"items": {
+				"anyOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''",
+						"'DHCP'",
+						"'DNS'",
+						"'VPN'",
+						"'Firewall'",
+						"'DC'",
+						"'File Server'",
+						"'Print Server'",
+						"'App Server'",
+						"'Backup Server'",
+						"'Hypervisor'"
+					]}
+				]
+			}	
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/server_type.json b/samples/it_v2/schemas_builder/parts/server_type.json
new file mode 100644
index 0000000..23d0666
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/server_type.json
@@ -0,0 +1,18 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"type": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'mini'",
+					"'rack'",
+					"'tower'",
+					"'vm'"
+				]}
+			]
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/software.json b/samples/it_v2/schemas_builder/parts/software.json
new file mode 100644
index 0000000..7ffd968
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/software.json
@@ -0,0 +1,22 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"publisher": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"licenses": {
+			"oneOf": [
+				{"type": "integer"},
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/subnet.json b/samples/it_v2/schemas_builder/parts/subnet.json
new file mode 100644
index 0000000..f60030b
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/subnet.json
@@ -0,0 +1,87 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"subnet": {
+			"type": "string",
+			"oneOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'192.168.0.0/24'",
+					"'192.168.1.0/24'"
+				]}
+			]
+		},
+		"gw": {
+			"oneOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'192.168.0.1'",
+					"'192.168.1.1'"
+				]}
+			]
+		},
+		"dns": {
+			"type": "array",
+			"items": {
+				"oneOf": [
+					{ "type": "string" },
+					{ "enum": [
+						"''",
+						"'192.168.0.1'",
+						"'192.168.1.1'"
+					]}
+				]
+			}	
+		},
+		"vlans": {
+			"type": "array",
+			"items": {
+				"type": "integer"
+			}
+		},
+		"dhcp": {
+			"type": "object",
+			"properties": {
+				"server": {
+					"oneOf": [
+						{ "type": "string" },
+						{ "enum": [
+							"''",
+							"'192.168.0.1'",
+							"'192.168.1.1'"
+						]}
+					]
+				},
+				"ranges": {
+					"type": "array",
+					"items": {
+						"properties": {
+							"from": {
+								"oneOf": [
+									{ "type": "string" },
+									{ "enum": [
+										"''",
+										"'192.168.0.20'",
+										"'192.168.1.20'"
+									]}
+								]
+							},
+							"to": {
+								"oneOf": [
+									{ "type": "string" },
+									{ "enum": [
+										"''",
+										"'192.168.0.99'",
+										"'192.168.1.99'"
+									]}
+								]
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/subnet_name.json b/samples/it_v2/schemas_builder/parts/subnet_name.json
new file mode 100644
index 0000000..a1732b3
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/subnet_name.json
@@ -0,0 +1,28 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"name": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''",
+					"'LAN'",
+					"'LAN01'",
+					"'LAN02'",
+					"'LAN03'",
+					"'LAN04'",
+					"'LAN06'",
+					"'LAN07'",
+					"'LAN08'",
+					"'LAN09'",
+					"'LAN10'",
+					"'WAN'",
+					"'WIFI'",
+					"'GUEST'",
+					"'DMZ'",
+					"'VPN'"
+				]}
+			]
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/templates.json b/samples/it_v2/schemas_builder/parts/templates.json
new file mode 100644
index 0000000..34b8504
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/templates.json
@@ -0,0 +1,26 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"templates": {
+			"type": "object",
+			"properties": {
+				"node": {
+					"anyOf": [
+						{"type": "string"},
+						{"enum": [
+							"''"
+						]}
+					]
+				},
+				"items": {
+					"anyOf": [
+						{"type": "string"},
+						{"enum": [
+							"''"
+						]}
+					]
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/title.json b/samples/it_v2/schemas_builder/parts/title.json
new file mode 100644
index 0000000..37edba7
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/title.json
@@ -0,0 +1,13 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"title": {
+			"anyOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		}
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/toc.json b/samples/it_v2/schemas_builder/parts/toc.json
new file mode 100644
index 0000000..ad08ff2
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/toc.json
@@ -0,0 +1,6 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"toc": { "type": "boolean" }
+	}
+}
diff --git a/samples/it_v2/schemas_builder/parts/todo.json b/samples/it_v2/schemas_builder/parts/todo.json
new file mode 100644
index 0000000..435a71f
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/todo.json
@@ -0,0 +1,31 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"todo": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"msg": {
+						"anyOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"priority": { "type": "integer" },
+					"duration": {
+						 "anyOf": [
+							{"type": "integer"},
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/urls.json b/samples/it_v2/schemas_builder/parts/urls.json
new file mode 100644
index 0000000..cc7ea48
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/urls.json
@@ -0,0 +1,29 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"urls": {
+			"type": "array",
+			"items": {
+				"type": "object",
+				"properties": {
+					"website": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					},
+					"download": {
+						"oneOf": [
+							{"type": "string"},
+							{"enum": [
+								"''"
+							]}
+						]
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/voipdev_type.json b/samples/it_v2/schemas_builder/parts/voipdev_type.json
new file mode 100644
index 0000000..08645fa
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/voipdev_type.json
@@ -0,0 +1,17 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+  "properties": {
+		"type": {
+			"type": "string",
+			"anyOf": [
+				{ "type": "string" },
+				{ "enum": [
+					"''",
+					"'phone'",
+					"'antenna'",
+					"'gateway'"
+				]}
+			]
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/schemas_builder/parts/wifi.json b/samples/it_v2/schemas_builder/parts/wifi.json
new file mode 100644
index 0000000..bda8be8
--- /dev/null
+++ b/samples/it_v2/schemas_builder/parts/wifi.json
@@ -0,0 +1,21 @@
+{
+	"$schema": "http://json-schema.org/draft-07/schema#",
+	"properties": {
+		"ssid": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		},
+		"key": {
+			"oneOf": [
+				{"type": "string"},
+				{"enum": [
+					"''"
+				]}
+			]
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/it_v2/templates/acls.pug b/samples/it_v2/templates/acls.pug
new file mode 100644
index 0000000..c3ffc46
--- /dev/null
+++ b/samples/it_v2/templates/acls.pug
@@ -0,0 +1,15 @@
+div#HEADFILES
+
+each srv in node.items
+	h3=srv.data.name
+	each fld in srv.data.folders
+		div.itemvmargin
+			div=fld.path
+			table
+				each acl in fld.acls
+					tr
+						td=acl.name
+						td=acl.access
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/adadmins.pug b/samples/it_v2/templates/adadmins.pug
new file mode 100644
index 0000000..90d90cf
--- /dev/null
+++ b/samples/it_v2/templates/adadmins.pug
@@ -0,0 +1,13 @@
+div#HEADFILES
+
+table
+	thead 
+		th Account
+		th Notes
+	each itm in node.items
+		tr
+			td=itm.data.name
+			td=itm.data.notes
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/backups.pug b/samples/it_v2/templates/backups.pug
new file mode 100644
index 0000000..73244ac
--- /dev/null
+++ b/samples/it_v2/templates/backups.pug
@@ -0,0 +1,46 @@
+div#HEADFILES
+-
+	const backups = []
+	const readNode = (curNode) => {
+		if(curNode?.data?.backups?.length > 0) {
+			const nodeItem = {
+				name: curNode.data.name,
+				backups: curNode.data.backups,
+			}
+			backups.push(nodeItem)
+		}
+		curNode.items.forEach((itm) => {
+			if(itm?.data?.backups?.length > 0) {
+				const nodeItem = {
+					name: itm.data.name,
+					url: curNode.url + '?itm=' + itm.name,
+					backups: itm.data.backups,
+				}
+				backups.push(nodeItem)
+			}
+		})
+		curNode.nodes.forEach((childNode) => {
+			readNode(childNode)
+		})
+	}
+	readNode(doc)
+
+table
+	thead 
+		th Devices
+		th Types
+		th Content 
+		th Frequency
+		th Time
+		th Duration
+		th Target
+	each itm in backups
+		each backup in itm.backups
+			tr
+				td
+					a(href=itm.url)=itm.name
+				each key in Object.keys(backup)
+					td=backup[key]
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/cloudadmins.pug b/samples/it_v2/templates/cloudadmins.pug
new file mode 100644
index 0000000..90d90cf
--- /dev/null
+++ b/samples/it_v2/templates/cloudadmins.pug
@@ -0,0 +1,13 @@
+div#HEADFILES
+
+table
+	thead 
+		th Account
+		th Notes
+	each itm in node.items
+		tr
+			td=itm.data.name
+			td=itm.data.notes
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/computers.pug b/samples/it_v2/templates/computers.pug
new file mode 100644
index 0000000..164f900
--- /dev/null
+++ b/samples/it_v2/templates/computers.pug
@@ -0,0 +1,23 @@
+div#HEADFILES
+table 
+	thead 
+		th Name
+		th OS
+		th IPs
+		th Emplacement
+	each computer in node.items
+		tr
+			td
+				a(href=computer.url)=computer.data.name
+			if (computer.data.os.substr(0,1) == '!')
+				td.alert=computer.data.os
+			else
+				td=computer.data.os
+			td
+				if computer.data.interfaces
+					each interface in computer.data.interfaces
+						if interface.ip
+							div=interface.ip
+			td=computer.data.location
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/dfs.pug b/samples/it_v2/templates/dfs.pug
new file mode 100644
index 0000000..557379a
--- /dev/null
+++ b/samples/it_v2/templates/dfs.pug
@@ -0,0 +1,34 @@
+div#HEADFILES
+
+each itm in node.items
+	table.itemvmargin
+		tr
+			td.bold Name
+			td.bold=itm.data.name
+		tr
+			td Path
+			td=itm.data.path
+		tr
+			td Targets
+			td
+				if (itm.data.targets)
+					each target in itm.data.targets
+						div=target
+		if (itm.data.folders)
+			tr
+				td Folders
+				td
+					table
+						thead 
+							th Name
+							th Targets
+						each fld in itm.data.folders
+							tr
+								td=fld.name
+								td
+									if (fld.targets)
+										each target in fld.targets
+											div=target
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/domains.pug b/samples/it_v2/templates/domains.pug
new file mode 100644
index 0000000..0274b21
--- /dev/null
+++ b/samples/it_v2/templates/domains.pug
@@ -0,0 +1,28 @@
+div#HEADFILES
+
+table
+	thead 
+		th Name
+		th DC
+		th FSMO
+		th Members
+	each itm in node.items
+		tr
+			td=itm.name
+			td
+				if (itm.data)
+					each dc in itm.data.dc 
+						div
+							a(href="/devices/servers?itm="+dc.name)=dc.name
+			td
+				if (itm.data)
+					each dc in itm.data.dc 
+						div=dc.fsmo
+			td
+				if (itm.data)
+					each srv in itm.data.servers
+						div
+							a(href="/devices/servers?itm="+srv.name)=srv.name
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/ipam.pug b/samples/it_v2/templates/ipam.pug
new file mode 100644
index 0000000..9abf2b3
--- /dev/null
+++ b/samples/it_v2/templates/ipam.pug
@@ -0,0 +1,72 @@
+div#HEADFILES
+-
+	let dhcpRanges = []
+	node.parent.getNode('subnets').items.forEach((itm) => {
+		itm?.data?.dhcp?.ranges?.forEach((rng) => {
+			dhcpRanges.push({
+				from: rng.from,
+				to: rng.to,
+				server: itm.data.dhcp.server,
+				name: itm.data.name,
+			})
+		})
+	})
+	dhcpRanges = dhcpRanges.sort((a,b)=>{return compareIP(a.from, b.from)})
+	let ipNodes = []
+	node.parent.parent.getNode('devices')?.nodes?.forEach((nd) => {
+		nd.items.forEach((itm) => {
+			if(itm.data.interfaces) {
+				itm.data.interfaces.forEach((nic) => {
+					if(nic.ip) ipNodes.push({
+						ip: nic.ip,
+						node: nd,
+						item: itm,
+					})
+				})
+			}
+		})
+	})
+	ipNodes = ipNodes.sort((a,b)=>{return compareIP(a.ip, b.ip)})
+if dhcpRanges.length > 0
+	h3 DHCP ranges
+	table 
+		thead 
+			th Subnet
+			th Server
+			th From
+			th To
+		each rng in dhcpRanges
+			tr
+				td=rng.name
+				td=rng.server
+				td=rng.from
+				td=rng.to
+if ipNodes.length > 0
+	h3 Static IPs
+	table 
+		thead 
+			th IP
+			th Name
+			th Model
+			th OS
+		each nd in ipNodes
+			tr
+				td=nd.ip
+				td
+					a(href=nd.item.url)=nd.item.data.name
+				if	(nd.item.data.model)
+					if (nd.item.data.model.substr(0,1) == '!')
+						td.alert=nd.item.data.model
+					else
+						td=nd.item.data.model
+				else
+					td
+				if	(nd.item.data.os)
+					if (nd.item.data.os.substr(0,1) == '!')
+						td.alert=nd.item.data.os
+					else
+						td=nd.item.data.os
+				else
+					td
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/maintenances.pug b/samples/it_v2/templates/maintenances.pug
new file mode 100644
index 0000000..a969230
--- /dev/null
+++ b/samples/it_v2/templates/maintenances.pug
@@ -0,0 +1,56 @@
+div#HEADFILES
+-
+	const maintenances = []
+	let fulltime = 0
+	const readNode = (curNode) => {
+		if(curNode?.data?.maintenances?.length > 0) {
+			const nodeItem = {
+				name: curNode.data.name,
+				maintenances: curNode.data.maintenances,
+			}
+			maintenances.push(nodeItem)
+		}
+		curNode.items.forEach((itm) => {
+			if(itm?.data?.maintenances?.length > 0) {
+				const nodeItem = {
+					name: itm.data.name,
+					maintenances: itm.data.maintenances,
+				}
+				nodeItem?.maintenances?.forEach((maintenance) => {
+				 	if(maintenance.yearlytime) fulltime += maintenance.yearlytime
+				})
+				maintenances.push(nodeItem)
+			}
+		})
+		curNode.nodes.forEach((childNode) => {
+			readNode(childNode)
+		})
+	}
+	readNode(doc)
+table
+	each itm in maintenances
+		tr
+			td=itm.name
+			td
+				table
+					thead 
+						th Type
+						th Frequency
+						th Yearly time
+						th Todo
+					each maintenance in itm.maintenances
+						tr
+							td=maintenance.type
+							td=maintenance.frequency
+							if typeof maintenance.yearlytime === 'number'
+								td=maintenance.yearlytime + ' min'
+							else
+								td
+							td=maintenance.action
+table 
+	tr 
+		td Yearly time :
+		td=((fulltime / 60) + '').split('.')[0] + ' hour'
+		td=((fulltime / 60) + '').split('.')[0] * 130 + ':' + ((fulltime / 60) + '').split('.')[0] * 100 +  ' / Years'
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/ms365admins.pug b/samples/it_v2/templates/ms365admins.pug
new file mode 100644
index 0000000..90d90cf
--- /dev/null
+++ b/samples/it_v2/templates/ms365admins.pug
@@ -0,0 +1,13 @@
+div#HEADFILES
+
+table
+	thead 
+		th Account
+		th Notes
+	each itm in node.items
+		tr
+			td=itm.data.name
+			td=itm.data.notes
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/ms365sharepoint.pug b/samples/it_v2/templates/ms365sharepoint.pug
new file mode 100644
index 0000000..712b814
--- /dev/null
+++ b/samples/it_v2/templates/ms365sharepoint.pug
@@ -0,0 +1,11 @@
+div#HEADFILES
+
+each itm in node.items
+	table
+		tr
+			td.bold=itm.data.name
+		tr
+			td=itm.data.url
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/ms365users.pug b/samples/it_v2/templates/ms365users.pug
new file mode 100644
index 0000000..1d5f3a3
--- /dev/null
+++ b/samples/it_v2/templates/ms365users.pug
@@ -0,0 +1,17 @@
+div#HEADFILES
+
+table
+	thead 
+		th Name
+		th E-Mail
+		th Password
+		th License
+	each itm in node.items
+		tr
+			td=itm.data.name
+			td=itm.data.email
+			td=itm.data.password
+			td=itm.data.license
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/netdevs.pug b/samples/it_v2/templates/netdevs.pug
new file mode 100644
index 0000000..cf72bce
--- /dev/null
+++ b/samples/it_v2/templates/netdevs.pug
@@ -0,0 +1,20 @@
+div#HEADFILES
+table 
+	thead 
+		th Name
+		th Model
+		th IPs
+		th Location
+	each netdev in node.items
+		tr
+			td
+				a(href=netdev.url)=netdev.data.name
+			td=netdev.data.model
+			td
+				if netdev.data.interfaces
+					each interface in netdev.data.interfaces
+						if interface.ip
+							div=interface.ip
+			td=netdev.data.location
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/printers.pug b/samples/it_v2/templates/printers.pug
new file mode 100644
index 0000000..aca9393
--- /dev/null
+++ b/samples/it_v2/templates/printers.pug
@@ -0,0 +1,22 @@
+div#HEADFILES
+table 
+	thead 
+		th Name
+		th Type
+		th Model
+		th IPs
+		th Location
+	each printer in node.items
+		tr
+			td
+				a(href=printer.url)=printer.data.name
+			td=printer.data.type
+			td=printer.data.model
+			td
+				if printer.data.interfaces
+					each interface in printer.data.interfaces
+						if interface.ip
+							div=interface.ip
+			td=printer.data.location
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/ran.pug b/samples/it_v2/templates/ran.pug
new file mode 100644
index 0000000..6638f46
--- /dev/null
+++ b/samples/it_v2/templates/ran.pug
@@ -0,0 +1,16 @@
+div#HEADFILES
+table 
+	thead 
+		th Name
+		th Type
+		th Model
+		th Location
+	each ran in node.items
+		tr
+			td
+				a(href=ran.url)=ran.data.name
+			td=ran.data.type
+			td=ran.data.model
+			td=ran.data.location
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/secrets.pug b/samples/it_v2/templates/secrets.pug
new file mode 100644
index 0000000..1944567
--- /dev/null
+++ b/samples/it_v2/templates/secrets.pug
@@ -0,0 +1,31 @@
+div#HEADFILES
+table
+	tr
+		th
+		th Type
+		th User 
+		th Password 
+	each item in node.items
+		- var i=0
+		each secret in item.data.secrets
+			tr
+				if i == 0
+					td(style='font-weight:bold')=item.data.name
+				else
+					td
+				if secret.port
+					td=secret.type+' ('+secret.port+')'
+				else
+					td=secret.type
+				td=secret.user
+				td=secret.password
+			if secret.mfa
+				each mfa in secret.mfa
+					tr
+						td
+						td mfa (#{mfa.type})
+						td(colspan=2)=mfa.value
+					
+			- i+=1
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/servers.pug b/samples/it_v2/templates/servers.pug
new file mode 100644
index 0000000..9224a61
--- /dev/null
+++ b/samples/it_v2/templates/servers.pug
@@ -0,0 +1,28 @@
+div#HEADFILES
+table 
+	thead 
+		th Name
+		th Roles
+		th OS
+		th IPs
+		th Location
+	each server in node.items
+		tr
+			td
+				a(href=server.url)=server.data.name
+			td
+				if server.data.roles
+					each role in server.data.roles
+						div=role
+			if (server.data.os.substr(0,1) == '!')
+				td.alert=server.data.os
+			else
+				td=server.data.os
+			td
+				if server.data.interfaces
+					each interface in server.data.interfaces
+						if interface.ip
+							div=interface.ip
+			td=server.data.location
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/shares.pug b/samples/it_v2/templates/shares.pug
new file mode 100644
index 0000000..28d1b6e
--- /dev/null
+++ b/samples/it_v2/templates/shares.pug
@@ -0,0 +1,17 @@
+div#HEADFILES
+
+each srv in node.items
+	h3=srv.data.name
+	h4 Folders
+	table
+		each fileshare in srv.data.fileshares 
+			tr
+				td=fileshare.path
+	h4 Printers
+	table
+		each printshare in srv.data.printshares 
+			tr
+				td=printshare.path
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/softwares.pug b/samples/it_v2/templates/softwares.pug
new file mode 100644
index 0000000..e60d454
--- /dev/null
+++ b/samples/it_v2/templates/softwares.pug
@@ -0,0 +1,14 @@
+div#HEADFILES
+table 
+	thead 
+		th Name
+		th Publisher
+		th Licenses
+	each software in node.items
+		tr
+			td
+				a(href=software.url)=software.data.name
+			td=software.data.publisher
+			td=software.data.licenses
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/subnets.pug b/samples/it_v2/templates/subnets.pug
new file mode 100644
index 0000000..b3f22e3
--- /dev/null
+++ b/samples/it_v2/templates/subnets.pug
@@ -0,0 +1,25 @@
+div#HEADFILES
+table 
+	thead 
+		th Name
+		th Subnet
+		th Gateway
+		th DNS
+		th VLANS
+	each subnet in node.items
+		tr
+			td=subnet.data.name
+			td=subnet.data.subnet
+			td=subnet.data.gw
+			td
+				if subnet.data.dns
+					each dns in subnet.data.dns
+						div=dns
+			td
+				if subnet.data.vlans
+					-var array = []
+					each vlan in subnet.data.vlans
+						-array.push(vlan)
+					div=array
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/todos.pug b/samples/it_v2/templates/todos.pug
new file mode 100644
index 0000000..413cedd
--- /dev/null
+++ b/samples/it_v2/templates/todos.pug
@@ -0,0 +1,59 @@
+div#HEADFILES
+-
+	let todos = []
+	const readNode = (curNode) => {
+		if(curNode?.todo?.length > 0) {
+			curNode.todo.forEach((itm) => {
+				const nodeItem = {
+					name: curNode.name,
+					url: curNode.url,
+					todo: itm,
+				}
+				todos.push(nodeItem)
+			})
+		}
+
+		curNode.items.forEach((itm) => {
+			if(itm?.data?.todo?.length > 0) {
+				itm.data.todo.forEach((todo) => {
+					const nodeItem = {
+						name: itm.data.name,
+						url: curNode.url + '?itm=' + itm.name,
+						todo: todo,
+					}
+					todos.push(nodeItem)
+				})
+			}
+		})
+
+		curNode.nodes.forEach((childNode) => {
+			readNode(childNode)
+		})
+	}
+
+	readNode(doc)
+	todos = todos.sort((x, y) => {
+		return (y.todo.priority - x.todo.priority)
+	})
+
+table
+	thead 
+		th Priority
+		th Object
+		th Message
+	each itm in todos
+		if itm.todo.priority >= 10
+			tr.alert
+				td=itm.todo.priority
+				td
+					a.alert(href=itm.url)=itm.name
+				td=itm.todo.msg
+		else
+			tr
+				td=itm.todo.priority
+				td
+					a(href=itm.url)=itm.name
+				td=itm.todo.msg
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/updates.pug b/samples/it_v2/templates/updates.pug
new file mode 100644
index 0000000..0797cc3
--- /dev/null
+++ b/samples/it_v2/templates/updates.pug
@@ -0,0 +1,45 @@
+div#HEADFILES
+-
+	const updates = []
+	const readNode = (curNode) => {
+		if(curNode?.data?.updates?.length > 0) {
+			const nodeItem = {
+				name: curNode.data.name,
+				updates: curNode.data.updates,
+			}
+			updates.push(nodeItem)
+		}
+		curNode.items.forEach((itm) => {
+			if(itm?.data?.updates?.length > 0) {
+				const nodeItem = {
+					name: itm.data.name,
+					url: curNode.url + '?itm=' + itm.name,
+					updates: itm.data.updates,
+				}
+				updates.push(nodeItem)
+			}
+		})
+		curNode.nodes.forEach((childNode) => {
+			readNode(childNode)
+		})
+	}
+	readNode(doc)
+
+table
+	thead 
+		th Devices
+		th Types
+		th Method 
+		th Frequency
+		th Time
+		th Duration
+	each itm in updates
+		each update in itm.updates
+			tr
+				td
+					a(href=itm.url)=itm.name
+				each key in Object.keys(update)
+					td=update[key]
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/usergroups.pug b/samples/it_v2/templates/usergroups.pug
new file mode 100644
index 0000000..da54ee3
--- /dev/null
+++ b/samples/it_v2/templates/usergroups.pug
@@ -0,0 +1,11 @@
+div#HEADFILES
+
+each dom in node.items
+	h3=dom.data.name
+	table
+		each usergroup in dom.data.usergroups
+			tr
+				td=usergroup.name
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/webdomains.pug b/samples/it_v2/templates/webdomains.pug
new file mode 100644
index 0000000..b4f186b
--- /dev/null
+++ b/samples/it_v2/templates/webdomains.pug
@@ -0,0 +1,18 @@
+div#HEADFILES
+
+table
+	thead 
+		th Name
+		th Notes
+	each itm in node.items
+		tr
+			td=itm.data.name
+			td=itm.data.notes
+		if itm.data.aliases
+			each alias in itm.data.aliases
+				tr
+					td=alias.name
+					td=alias.notes
+
+div#FILES
+div#FOOTFILES
diff --git a/samples/it_v2/templates/wifis.pug b/samples/it_v2/templates/wifis.pug
new file mode 100644
index 0000000..6547170
--- /dev/null
+++ b/samples/it_v2/templates/wifis.pug
@@ -0,0 +1,13 @@
+div#HEADFILES
+table 
+	thead 
+		th Subnet
+		th SSID
+		th Key
+	each wifi in node.items
+		tr
+			td=wifi.data.name
+			td=wifi.data.ssid
+			td=wifi.data.key
+div#FILES
+div#FOOTFILES
diff --git a/src/core/jsondoc.js b/src/core/jsondoc.js
index 2fab9f9..96779a2 100644
--- a/src/core/jsondoc.js
+++ b/src/core/jsondoc.js
@@ -17,6 +17,7 @@ const load = (yamlFile) => {
 			},
 		},
 		root: {
+			todo: [],
 			name: '',
 			title: '',
 			toc: false,
@@ -55,6 +56,7 @@ const load = (yamlFile) => {
 		const nodePathParts = nodePath.split(path.sep)
 		const nodeName = (parentNode)?nodePathParts[nodePathParts.length - 1]:'root'
 		const node = {
+			todo: [],
 			index: 100,
 			name: nodeName,
 			title: nodeName,
@@ -78,6 +80,7 @@ const load = (yamlFile) => {
 
 		const yamlNode = YAML.parse(fs.readFileSync(path.join(nodePath, '_index.yaml'), 'utf8'))
 		if(yamlNode) {
+			if(yamlNode.todo) node.todo = yamlNode.todo
 			if(yamlNode.index) node.index = yamlNode.index
 			if(yamlNode.title) node.title = yamlNode.title
 			if(yamlNode.toc == false) node.toc = yamlNode.toc