Compare commits

..

240 Commits

Author SHA1 Message Date
255fdae3e2 Release v3.0.5
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
2025-05-14 19:02:09 +02:00
b18b617b24 Fix issue when login with wrong credentials. Fixes https://github.com/GNS3/gns3-gui/issues/3714
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
2025-03-16 20:30:03 +07:00
cdf1b0ab72 Fix issue when login with wrong credentials. Fixes #1481
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
2025-03-15 14:58:54 +07:00
8222417c91 Use short imports
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
2025-03-02 17:44:00 +07:00
c7ebc354b9 Formatting for Controller 2025-03-02 17:53:30 +08:00
82905ea72f Development on 3.0.5.dev1
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
2025-02-25 22:37:10 +08:00
c49e5d2573 Release v3.0.4
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
2025-02-23 12:00:58 +10:00
de186fef4c Merge pull request #1543 from GNS3/idlepc
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Build / Node 14 (push) Waiting to run
Build / Node 16 (push) Waiting to run
Build / Node 18 (push) Waiting to run
Idle-PC configuration support
2025-02-22 19:11:43 +08:00
346e3d988f Fix tests 2025-02-22 21:04:51 +10:00
4a34007cf4 Implement Idle-PC finder for IOS templates 2025-02-22 20:57:32 +10:00
aeb26b0f17 Add tooltip for idle-pc dialog and implement auto idle-pc action 2025-02-22 18:59:57 +10:00
6a9505fc0a Allow users to compute Idle-PC values 2025-02-22 16:51:23 +10:00
445ce5a864 Enforce password complexity. Ref https://github.com/GNS3/gns3-gui/issues/3698
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
2025-02-19 18:51:36 +10:00
050d4158ed Add possibility for a user to change his/her password. Ref https://github.com/GNS3/gns3-gui/issues/3698
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Build / Node 14 (push) Waiting to run
Build / Node 16 (push) Waiting to run
Build / Node 18 (push) Waiting to run
2025-02-18 11:44:06 +10:00
6b28370111 Fix tests
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
2025-02-16 13:32:10 +10:00
8ec03968df Fix import/export Dynamips configs 2025-02-16 12:57:01 +10:00
097efdcbcd Add prune images and install images to image manager
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Build / Node 14 (push) Waiting to run
Build / Node 16 (push) Waiting to run
Build / Node 18 (push) Waiting to run
2025-02-15 23:57:30 +10:00
cd483e047b Improvements to add new Ethernet switch ports 2025-02-15 18:16:21 +10:00
64cc001512 Merge pull request #1541 from GNS3/add-missing-settings
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
Add missing settings for nodes/templates
2025-02-05 18:14:59 +08:00
55bc69389d Add missing adapter and mac address settings for Qemu and Docker nodes 2025-02-05 20:02:58 +10:00
10c1461d93 Fix tests
Some checks failed
Build / Node 14 (push) Has been cancelled
Build / Node 16 (push) Has been cancelled
Build / Node 18 (push) Has been cancelled
2025-02-04 21:45:22 +10:00
86db2e208c Fix and improve IOS template configuration 2025-02-04 21:00:20 +10:00
80884a7929 Fix aux and aux_type usage 2025-02-04 14:23:32 +10:00
9523cd7703 Add missing IOS router settings in node configurator 2025-02-04 14:17:51 +10:00
042eb79e36 Development on 3.0.4.dev1
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
2025-01-22 19:09:08 +10:00
67b597d8ec Release v3.0.3 2025-01-22 18:53:25 +10:00
7fd37610ee Merge remote-tracking branch 'origin/2.2' into master-3.0
# Conflicts:
#	package.json
#	src/app/components/project-map/new-template-dialog/new-template-dialog.component.ts
2025-01-22 18:44:55 +10:00
c8ccf4d475 Development on 2.2.54.dev1
Some checks failed
Build / build (push) Has been cancelled
2025-01-21 12:13:40 +10:00
1a49bec3d4 Release v2.2.53 2025-01-21 11:37:59 +10:00
64f9631946 Fix use of FileUploader 2025-01-21 11:37:22 +10:00
b02fe4c751 Merge remote-tracking branch 'origin/2.2' into master-3.0
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
# Conflicts:
#	src/app/components/project-map/new-template-dialog/new-template-dialog.component.html
#	src/app/services/mapsettings.service.ts
2025-01-20 16:51:31 +10:00
84169a2c1e Add missing checkImageFromVersion() for IOS and IOU
Some checks are pending
Build / build (push) Waiting to run
2025-01-20 16:46:26 +10:00
2a9ced5cbd Allow ':' in project names. Fixes https://github.com/GNS3/gns3-gui/issues/3686 2025-01-20 13:39:04 +10:00
7c7e20d95f Release v3.0.2
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
2025-01-03 21:36:27 +07:00
e959a947cc Use correct image upload endpoint
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
2024-12-31 18:57:36 +07:00
7b633c29dd Allow ':' in project names. Fixes https://github.com/GNS3/gns3-gui/issues/3686
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
2024-12-30 16:26:51 +07:00
c24517d1f0 Release v3.0.1
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
2024-12-27 20:58:03 +07:00
9043c5b97c Use template image name when uploading to controller 2024-12-27 20:57:23 +07:00
2227d11932 Handle normal user cannot access user management page. Fixes https://github.com/GNS3/gns3-server/issues/2460
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Build / Node ${{ matrix.node }} (14) (push) Waiting to run
Build / Node ${{ matrix.node }} (16) (push) Waiting to run
Build / Node ${{ matrix.node }} (18) (push) Waiting to run
2024-12-26 17:21:37 +07:00
2e581c4495 Merge pull request #1533 from GNS3/bugfix/1436
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
Fix error 404 when editing a project
2024-12-23 17:27:07 +07:00
ee5b88e19a Backport: fix interface labels are not persistant
Some checks failed
Build / build (push) Has been cancelled
2024-12-23 16:05:05 +07:00
cddce63e2b Fix error 404 when editing a project 2024-12-23 15:44:43 +07:00
180c65351b Merge pull request #1532 from GNS3/bugfix/1435
Fix interface labels are not persistant
2024-12-23 15:13:50 +07:00
27eb8eb9c3 Fix interface labels are not persistant 2024-12-23 15:07:09 +07:00
ab84d1eea6 Development on 3.1.0.dev1
Some checks failed
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Build / Node ${{ matrix.node }} (14) (push) Has been cancelled
Build / Node ${{ matrix.node }} (16) (push) Has been cancelled
Build / Node ${{ matrix.node }} (18) (push) Has been cancelled
2024-12-20 18:11:44 +07:00
89a7588612 Release v3.0.0
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Build / Node ${{ matrix.node }} (14) (push) Waiting to run
Build / Node ${{ matrix.node }} (16) (push) Waiting to run
Build / Node ${{ matrix.node }} (18) (push) Waiting to run
2024-12-19 19:46:49 +07:00
ab5d298d7b Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
2024-12-19 18:17:25 +07:00
608fcfd04e Fix unable to configure Ethernet Switch. Fixes #1530
Some checks failed
Build / build (push) Has been cancelled
2024-12-19 18:16:41 +07:00
99c6502a65 Development on 2.2.53.dev1 2024-12-02 11:27:15 +10:00
28d27194be Release v2.2.52 2024-12-02 11:05:45 +10:00
bbb7f08925 Add .iol extension filter to image dialog. Ref https://github.com/GNS3/gns3-gui/issues/3664 2024-11-25 11:03:44 +10:00
c1fa038f27 Merge branch '2.2' into master-3.0 2024-11-25 11:03:29 +10:00
52f772676b Add .iol extension filter. Ref https://github.com/GNS3/gns3-gui/issues/3664 2024-11-25 11:02:49 +10:00
e424a7f410 Release v3.0.0rc2 2024-11-20 13:46:43 +10:00
27eecf2ec9 Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
#	src/app/models/templates/docker-template.ts
#	src/app/services/template-mocks.service.ts
#	yarn.lock
2024-11-20 12:37:26 +10:00
8068751032 Development on 2.2.51.dev1 2024-10-21 13:25:06 +10:00
28f8de0da1 Release v2.2.50 2024-10-21 12:02:41 +10:00
8cc4fb6f75 Merge remote-tracking branch 'origin/master' into 2.2 2024-10-21 11:56:21 +10:00
1196742e3b Merge pull request #1525 from GNS3/dependabot/npm_and_yarn/body-parser-1.20.3
Bump body-parser from 1.20.1 to 1.20.3
2024-09-21 16:54:09 +07:00
d398efe229 Bump body-parser from 1.20.1 to 1.20.3
Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.20.1 to 1.20.3.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/1.20.1...1.20.3)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-21 09:40:03 +00:00
33e8fa7f5f Merge pull request #1524 from GNS3/dependabot/npm_and_yarn/express-4.21.0
Bump express from 4.19.2 to 4.21.0
2024-09-21 16:38:57 +07:00
b9833aa00b Bump express from 4.19.2 to 4.21.0
Bumps [express](https://github.com/expressjs/express) from 4.19.2 to 4.21.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.2...4.21.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-21 08:22:26 +00:00
fc66124ea9 Add configure base mac address for Docker templates 2024-09-18 17:09:25 +07:00
9d0d88337a Release v3.0.0rc1 2024-08-11 11:00:56 -06:00
5283d074e7 Merge remote-tracking branch 'origin/2.2' into master-3.0
# Conflicts:
#	package.json
2024-08-11 10:53:25 -06:00
3f74a916d4 Merge pull request #1522 from GNS3/2.2
Release v2.2.49
2024-08-06 20:44:59 +02:00
ff78754fd5 Merge branch 'master' into 2.2 2024-08-06 20:26:35 +02:00
323255286b Development on 2.2.50.dev1 2024-08-06 20:25:51 +02:00
a9314b65f8 Release v2.2.49 2024-08-06 12:36:04 +02:00
9cb21c7dd1 Merge remote-tracking branch 'origin/2.2' into master-3.0
# Conflicts:
#	package.json
#	src/app/layouts/default-layout/default-layout.component.html
#	src/app/layouts/default-layout/default-layout.component.ts
#	yarn.lock
2024-07-22 19:16:37 +02:00
e5b3a101b8 Fix CVE-2024-6345 and CVE-2024-39689. Fixes #1521 #1520 2024-07-22 19:13:46 +02:00
8b2d20e8e9 Merge pull request #1519 from GNS3/dependabot/pip/scripts/setuptools-70.0.0
Bump setuptools from 65.5.1 to 70.0.0 in /scripts
2024-07-15 20:44:13 +02:00
26023fe884 Bump setuptools from 65.5.1 to 70.0.0 in /scripts
Bumps [setuptools](https://github.com/pypa/setuptools) from 65.5.1 to 70.0.0.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v65.5.1...v70.0.0)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-15 17:29:28 +00:00
9a2e06471c Development on 2.2.49.dev1 2024-07-13 16:33:10 +02:00
98f4ec1ce0 Merge pull request #1518 from GNS3/release/2.2.48.1
Release v2.2.48.1
2024-07-13 14:43:03 +02:00
4d695274bb Release v2.2.48.1 2024-07-11 23:40:15 +02:00
e5af89821d Show current year in default-layout.component.html 2024-07-11 23:39:53 +02:00
78b910504d Fix syntax error in index.html. Ref https://github.com/GNS3/gns3-server/issues/2399 2024-07-11 23:21:44 +02:00
93aabe0cbc Merge pull request #1515 from GNS3/2.2
Release v2.2.48
2024-07-09 00:31:25 +02:00
27446f8d14 Development on 2.2.49.dev1 2024-07-09 00:20:28 +02:00
a026374e75 Release v2.2.48 2024-07-08 18:21:21 +02:00
4f303921c6 Merge branch 'master' into 2.2 2024-07-08 18:19:14 +02:00
dea6a5021d Merge pull request #1511 from GNS3/dependabot/npm_and_yarn/socket.io-4.7.5
Bump socket.io from 4.4.1 to 4.7.5
2024-06-19 19:02:52 +02:00
46c7c58402 Bump socket.io from 4.4.1 to 4.7.5
Bumps [socket.io](https://github.com/socketio/socket.io) from 4.4.1 to 4.7.5.
- [Release notes](https://github.com/socketio/socket.io/releases)
- [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io/compare/4.4.1...4.7.5)

---
updated-dependencies:
- dependency-name: socket.io
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-19 16:25:06 +00:00
0df3525bbf Merge pull request #1509 from GNS3/dependabot/npm_and_yarn/ws-6.2.3
Bump ws from 6.2.2 to 6.2.3
2024-06-18 20:06:15 +02:00
9667e2363c Bump ws from 6.2.2 to 6.2.3
Bumps [ws](https://github.com/websockets/ws) from 6.2.2 to 6.2.3.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/6.2.2...6.2.3)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 16:17:11 +00:00
24ec96a2dd Change interface label to fit in the SVG rect. Ref #1504 2024-06-17 17:37:07 +02:00
9844a2f88f Disable AdButler 2024-06-17 17:16:33 +02:00
0cdbeb98a2 Update Google Analytics ID 2024-06-17 16:18:14 +02:00
dc40d3be6e Merge pull request #1502 from GNS3/dependabot/pip/scripts/requests-2.32.0
Bump requests from 2.31.0 to 2.32.0 in /scripts
2024-05-21 13:46:33 +07:00
2015917767 ---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-21 05:25:06 +00:00
f3b3f35d58 Development on 3.0.0.dev14 2024-05-19 20:55:35 +07:00
19b50fda9d Release v3.0.0b3 2024-05-19 17:13:55 +07:00
6c292aeb24 Enforce min/max for mat-input fields for ATM switch 2024-05-19 17:11:47 +07:00
a3d149dcbe Enforce min/max for mat-input fields for Frame-Relay switch 2024-05-19 17:08:18 +07:00
9287706185 New titles for node configurators and enforce min/max for mat-input fields. 2024-05-19 16:49:10 +07:00
84a145a701 Fix mat-table style and project readme edit 2024-05-19 12:47:11 +07:00
6ccddac32c Add missing categories for Dynamips IOS router templates 2024-05-19 00:44:53 +07:00
9447622e1f Fix tests 2024-05-18 23:30:08 +07:00
a27a7ff4ee Prevent to delete locked nodes and drawings 2024-05-18 23:11:35 +07:00
3c48ef67dc Change how ports are listed in the node info dialog 2024-05-18 22:36:46 +07:00
d411ece90e Merge pull request #1501 from GNS3/feature/aux-console-support
Auxiliary console support
2024-05-18 22:29:21 +07:00
c9c043b726 Auxiliary console support for IOS, Docker and Qemu templates/nodes 2024-05-18 22:24:19 +07:00
040447ffdf Code formatting 2024-05-18 21:06:19 +07:00
21f1d3e624 Build 3.0.0.dev13 2024-05-18 17:34:40 +07:00
4c597ce3af Development on 3.0.0.dev13 2024-05-18 16:28:35 +07:00
8f268e374c Use the image name from the controller when creating a new template from an appliance. 2024-05-18 16:27:22 +07:00
a9bca2e265 Release v3.0.0b3 2024-05-16 17:26:42 +07:00
948c600e1a Fix tests. 2024-05-16 17:19:17 +07:00
1c55972b00 Merge branch '2.2' into master-3.0 2024-05-16 17:14:39 +07:00
360d77d2ef Add Qemu for auxiliary console support. 2024-05-16 17:14:13 +07:00
d40324377e Update yarn.lock 2024-05-16 17:12:01 +07:00
75c3d8ed97 Merge pull request #1500 from GNS3/release/v2.2.47
Release v2.2.47
2024-05-15 16:44:26 +07:00
3880d28ec1 Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
#	src/app/app.module.ts
#	src/app/components/project-map/context-menu/actions/console-device-action-browser/console-device-action-browser.component.ts
#	src/app/components/project-map/packet-capturing/start-capture/start-capture.component.spec.ts
#	src/app/components/project-map/project-map.component.ts
#	src/app/services/packet-capture.service.ts
#	yarn.lock
2024-05-15 16:39:46 +07:00
f94d59206e Development on 2.2.48.dev1 2024-05-15 16:28:14 +07:00
5b41f9789a Release v2.2.47 2024-05-15 11:51:18 +07:00
ac84106dbc Merge pull request #1499 from GNS3/feature/aux-console
Auxiliary console support
2024-05-14 22:17:16 +07:00
21f2267960 Merge remote-tracking branch 'origin/feature/aux-console' into feature/aux-console 2024-05-14 22:12:01 +07:00
a9781943d5 Check auxiliary console port is defined 2024-05-14 22:11:38 +07:00
6fc2f6f964 Merge branch '2.2' into feature/aux-console 2024-05-14 20:19:59 +07:00
cd5773e58a Merge branch 'master' into 2.2 2024-05-14 20:18:30 +07:00
f4bcb844dc Merge pull request #1494
Bump @angular/core from 9.0.0 to 12.2.17
2024-05-14 20:18:10 +07:00
24cf0f5623 Merge pull request #1489 from GNS3/dependabot/npm_and_yarn/follow-redirects-1.15.6
Bump follow-redirects from 1.15.4 to 1.15.6
2024-05-14 20:10:14 +07:00
5e02a3d757 Merge pull request #1490 from GNS3/dependabot/npm_and_yarn/express-4.19.2
Bump express from 4.18.2 to 4.19.2
2024-05-14 20:09:48 +07:00
42599dafb5 Auxiliary console support 2024-05-14 20:07:30 +07:00
9c754f3444 Merge remote-tracking branch 'origin/2.2' into 2.2 2024-05-14 17:43:48 +07:00
6772f0cb16 Merge pull request #1498 from GNS3/feature/protocol-handler-service
Create protocol handler service
2024-05-14 17:43:33 +07:00
2730ee6f6e Merge branch 'master' into 2.2 2024-05-14 17:25:07 +07:00
de058e175b Fix tests 2024-05-14 17:15:29 +07:00
e9487c5ada Create protocol handler service 2024-05-14 15:18:59 +07:00
035c846f85 Merge pull request #1495 from GNS3/dependabot/npm_and_yarn/ejs-3.1.10
Bump ejs from 3.1.8 to 3.1.10
2024-05-02 08:54:27 +07:00
80239229aa Bump ejs from 3.1.8 to 3.1.10
Bumps [ejs](https://github.com/mde/ejs) from 3.1.8 to 3.1.10.
- [Release notes](https://github.com/mde/ejs/releases)
- [Commits](https://github.com/mde/ejs/compare/v3.1.8...v3.1.10)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-02 01:29:26 +00:00
c12a7acb2c Bump @angular/core from 9.0.0 to 12.2.17
Bumps [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) from 9.0.0 to 12.2.17.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/12.2.17/packages/core)

---
updated-dependencies:
- dependency-name: "@angular/core"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-11 07:52:40 +00:00
23bf5ad2f3 Merge pull request #1493 from GNS3/dependabot/npm_and_yarn/tar-6.2.1
Bump tar from 6.1.11 to 6.2.1
2024-04-11 14:51:41 +07:00
bed98624cc Bump tar from 6.1.11 to 6.2.1
Bumps [tar](https://github.com/isaacs/node-tar) from 6.1.11 to 6.2.1.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v6.1.11...v6.2.1)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-10 21:17:40 +00:00
eb82af94c9 Development on 3.0.0.dev13 2024-04-07 19:49:28 +07:00
316d3cb83e Release v3.0.0b2 2024-04-07 12:55:52 +07:00
11e1c382b2 Merge pull request #1492 from GNS3/feature/custom-qemu-path
Support for custom Qemu paths
2024-04-03 21:24:07 +07:00
d710c14218 Support for custom Qemu paths 2024-04-03 21:18:25 +07:00
66b88c288d Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
2024-04-03 17:55:07 +07:00
383c26dcef Merge branch 'master' into 2.2 2024-04-03 17:54:45 +07:00
f505c101f7 Merge pull request #1491 from qmwd2006/patch-1
web browser out ouf memory when upload large image file
2024-04-03 17:53:57 +07:00
db744d3c25 Merge branch 'master' into master-3.0
# Conflicts:
#	package.json
#	yarn.lock
2024-04-03 17:51:04 +07:00
ca071f79c2 web browser out ouf memory when upload large image file 2024-03-31 07:18:10 +08:00
20be9027fd Bump express from 4.18.2 to 4.19.2
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-28 17:27:08 +00:00
e63898a22a Show default username/password when authentication failed. Ref https://github.com/GNS3/gns3-server/issues/2332 2024-03-26 13:57:38 +01:00
63389812b5 Bump follow-redirects from 1.15.4 to 1.15.6
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.4 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-16 23:09:05 +00:00
6873432833 Merge pull request #1488 from GNS3/release/v2.2.46
Release v2.2.46
2024-02-26 17:53:06 +08:00
a7e3c24a27 Development on 2.2.47.dev1 2024-02-26 17:36:11 +08:00
358f50596c Release v2.2.46 2024-02-26 16:29:45 +08:00
b61f5803fd Merge branch 'master' into 2.2 2024-02-26 16:26:56 +08:00
c27f4aee57 Merge pull request #1486 from GNS3/dependabot/npm_and_yarn/ip-1.1.9
Bump ip from 1.1.5 to 1.1.9
2024-02-21 10:53:45 +08:00
5aa00a9f77 Bump ip from 1.1.5 to 1.1.9
Bumps [ip](https://github.com/indutny/node-ip) from 1.1.5 to 1.1.9.
- [Commits](https://github.com/indutny/node-ip/compare/v1.1.5...v1.1.9)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-20 21:27:19 +00:00
91075a60b1 Release v2.2.45 2024-01-12 21:18:37 +11:00
57e590a704 Merge branch 'master' into 2.2 2024-01-12 21:16:07 +11:00
8d3e571aa4 Merge pull request #1485 from GNS3/dependabot/npm_and_yarn/follow-redirects-1.15.4
Bump follow-redirects from 1.14.8 to 1.15.4
2024-01-12 12:21:20 +11:00
af5917b6e4 Bump follow-redirects from 1.14.8 to 1.15.4
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.8 to 1.15.4.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.8...v1.15.4)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-09 17:38:04 +00:00
49eee13f7c Merge branch '2.2' into master-3.0
# Conflicts:
#	angular.json
2023-12-07 11:17:28 +10:00
21ed977a55 Add ipaddr.js to "allowedCommonJsDependencies" 2023-12-06 22:34:22 +10:00
6bb451e01a Cleaning 2023-12-06 21:16:37 +10:00
f32998be47 Push development version of the Web UI 2023-12-06 19:32:28 +10:00
26a4205164 Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
#	yarn.lock
2023-12-06 19:28:09 +10:00
f861364727 Fix console launch with protocol handler for IPv6 addresses 2023-12-06 15:10:12 +10:00
8a796559de Development on 3.0.0.dev12 2023-11-27 11:32:14 +10:00
8cd821b9fe Release v3.0.0b1 2023-11-27 11:08:04 +10:00
6dfe28ec8f Fix typos 2023-11-27 11:00:22 +10:00
a465133ba3 Catch error if project cannot be created 2023-11-23 16:23:15 +10:00
5a46911730 Push development version of the Web UI 2023-11-23 16:19:36 +10:00
0a48b46754 Fix resource pool detail path. 2023-11-23 12:23:39 +10:00
607c190a9a Allow the API documentation to be accessed over HTTPS 2023-11-22 18:52:28 +10:00
08161ce1fe Release v3.0.0a6 2023-11-15 11:59:55 +10:00
a6c220c2cf Comment test in pre-commit 2023-11-15 11:45:10 +10:00
e7a03c9913 Push development version of the Web UI 2023-11-10 15:39:44 +10:00
9c1d576eb5 Bump to 3.0.0.dev11 2023-11-10 11:56:50 +10:00
81efa0c6d6 Merge remote-tracking branch 'origin/master-3.0' into master-3.0 2023-11-09 15:44:47 +10:00
63b8582982 Script to push dev version of the web-ui 2023-11-09 15:44:34 +10:00
cb74260405 Push development version of the Web UI 2023-11-09 15:42:26 +10:00
49f8f61962 Merge pull request #1479 from Orange-OpenSource/master-3.0
somes fixes :
2023-11-07 23:00:51 +10:00
443e518740 fix update group name 2023-11-06 16:47:39 +01:00
99e9257a13 cannot update builtin group : disable button 2023-11-06 16:47:39 +01:00
ea6309c615 fix role update infinte loop 2023-11-06 16:03:17 +01:00
be6da1d2e1 cannot update a buildin role: disable update button if role is build_in 2023-11-06 13:52:49 +01:00
349260d807 add pre hook commit to launch test 2023-11-06 13:39:56 +01:00
600d807af3 fix test for TemplateListdialogComponent 2023-11-06 13:33:44 +01:00
4378cce5e5 Merge branch 'GNS3:master-3.0' into master-3.0 2023-11-06 07:44:52 +01:00
9547b88894 Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
2023-11-06 16:30:14 +10:00
0ff4d534f4 Development on 2.2.45.dev1 2023-11-06 16:28:27 +10:00
ca408663a5 Merge pull request #1478 from GNS3/release-v2.2.44
Release v2.2.44
2023-11-06 16:27:49 +10:00
c96d66b34a Release v2.2.44 2023-11-06 15:52:05 +10:00
a234f62ae9 Fix after merge 2023-11-03 15:07:03 +10:00
4b55e3f576 Merge branch '2.2' into master-3.0
# Conflicts:
#	src/app/services/packet-capture.service.ts
2023-11-03 14:49:23 +10:00
896ca927f3 Add correct protocol when capturing with protocol handler 2023-11-03 14:44:41 +10:00
8253f8da38 Add server protocol to gns3+pcap 2023-11-02 17:36:41 +10:00
d1725e16f5 add nvmrc 2023-11-01 14:26:19 +01:00
cbb1c9ecfc Add project name in gns3+pcap protocol handler URL 2023-10-31 16:45:17 +10:00
1e8b6261dc Merge branch 'master' into 2.2 2023-10-31 16:16:22 +10:00
b0bbf514b1 Merge branch 'master' into master-3.0 2023-10-29 15:53:03 +10:00
d705d81cd0 Merge branch 'master' into master-3.0
# Conflicts:
#	yarn.lock
2023-10-29 15:52:13 +10:00
f3b8a42d89 Merge pull request #1476 from GNS3/console-ipv6
Support IPv6 for external consoles
2023-10-29 15:50:45 +10:00
7812ff38cc Development on 3.0.0.dev10 2023-10-29 15:36:53 +10:00
925920deef Development on 3.0.0.dev10 2023-10-27 13:34:40 +10:00
f076b5590f Release v3.0.0a5 2023-10-27 13:29:47 +10:00
aead5be762 Merge pull request #1475 from Orange-OpenSource/master-3.0
re enable configure dialog
2023-10-26 19:57:38 +10:00
b6db926654 re enable configure dialog 2023-10-26 11:19:24 +02:00
c9ac9f896f Merge pull request #1474 from Orange-OpenSource/master-3.0
3.0 fix not working tests
2023-10-25 21:39:21 +10:00
15e20263e5 fix somes tests 2023-10-25 11:06:15 +02:00
3df22bd177 Merge branch '2.2' into master-3.0
# Conflicts:
#	package.json
#	src/app/components/project-map/drawings-editors/style-editor/style-editor.component.ts
2023-10-24 18:25:10 +10:00
d725363fe5 Allow edit height and width for rectangles and ellipses 2023-10-24 18:23:55 +10:00
58d42558f7 Merge pull request #1467 from GNS3/dependabot/npm_and_yarn/babel/traverse-7.23.2
Bump @babel/traverse from 7.16.0 to 7.23.2
2023-10-24 18:08:43 +10:00
aecbe32c6c Merge branch 'master' into dependabot/npm_and_yarn/babel/traverse-7.23.2 2023-10-24 17:47:26 +10:00
35193043a2 Merge pull request #1469 from ventaquil/feature/add-qemu-igb-nic
Add Qemu IGB network device
2023-10-24 17:13:59 +10:00
dbcb8a88c8 Pass authentication token when opening ws console. Ref https://github.com/GNS3/gns3-web-ui/issues/1468 2023-10-22 15:50:05 +10:00
76f2314e08 Development on 3.0.0.dev9 2023-10-20 15:52:29 +10:00
7a229d8e3e Add Qemu IGB network device 2023-10-19 11:23:55 +02:00
97d054bb2b Release v3.0.0a4 2023-10-18 17:41:43 +10:00
ba1180786f Bump @babel/traverse from 7.16.0 to 7.23.2
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.16.0 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 09:34:36 +00:00
931b7b1109 Merge pull request #1465 from GNS3/rbac-tweaking
Adjustments for RBAC system
2023-10-06 18:42:01 +10:00
c7b5d0d2f8 Rename ACE management component to ACL 2023-10-06 18:02:57 +10:00
a71014de81 Change titles for RBAC management 2023-10-06 17:27:00 +10:00
73c9fd3181 Merge pull request #1464 from Orange-OpenSource/master-3.0
Master 3.0: Update group management
2023-09-29 23:23:16 +10:00
ff38d7abb7 Merge branch 'GNS3:master-3.0' into master-3.0 2023-09-29 14:11:29 +02:00
db66a09e3b add linked ACE to user and group detail page 2023-09-29 11:10:53 +02:00
c517e98bb1 Merge pull request #1462 from Orange-OpenSource/master-3.0
PR: Add resources pools management + ACE/ACL management
2023-09-28 18:44:43 +10:00
ed4fd7c06a Merge branch 'GNS3:master-3.0' into master-3.0 2023-09-26 11:07:18 +02:00
4870e58977 ACE management 2023-09-26 11:02:33 +02:00
6b5b784658 Add resources pools management interface 2023-09-25 15:03:07 +02:00
963af81d30 Rename text "is build" to "is built-in" 2023-09-21 19:43:20 +10:00
b106f31b36 Merge pull request #1460 from Orange-OpenSource/master-3.0
Master 3.0, add privileges to role management
2023-09-20 14:05:35 +07:00
39401f3184 fix privilege component test 2023-09-19 11:52:07 +02:00
55c993df71 updte role management: replace permissions by privileges 2023-09-19 11:43:46 +02:00
2c0cd88ca6 create UI to manege privileges to a role 2023-09-18 14:22:41 +02:00
9ca10d6d6a update role api url 2023-09-12 15:53:08 +02:00
7bad625fdd suppression des permissions 2023-09-12 15:03:02 +02:00
bae7bcdd8d Update endpoint paths for user management 2023-09-07 14:46:23 +07:00
535649f0a9 Merge pull request #1458 from GNS3/release-v2.2.42
Release v2.2.42
2023-08-09 22:18:36 +10:00
a4f7db62ba Development on v2.2.43.dev1 2023-08-09 22:14:16 +10:00
662aba4ec8 Release v2.2.42 2023-08-09 20:55:57 +10:00
de07558349 Merge pull request #1455 from GNS3/release-v2.2.41
Release v2.2.41
2023-07-12 17:10:55 +10:00
b8253d365d Merge pull request #1454 from GNS3/dependabot/npm_and_yarn/semver-5.7.2
Bump semver from 5.7.1 to 5.7.2
2023-07-11 11:09:22 +10:00
05685af5c4 Bump semver from 5.7.1 to 5.7.2
Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 23:33:31 +00:00
672 changed files with 47005 additions and 6589 deletions

4
.gitignore vendored
View File

@ -2,7 +2,6 @@
# compiled output
/.angular
/dist
/tmp
/out-tsc
/ng-dist
@ -12,7 +11,6 @@
/scripts/build
/scripts/dist
/env
/.angular
# dependencies
/node_modules
@ -59,4 +57,4 @@ licenses.csv
.temp-var-file.ts
# external software
/external
/external

4
.husky/pre-commit Executable file
View File

@ -0,0 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# yarn test

1
.nvmrc Normal file
View File

@ -0,0 +1 @@
v16.14.0

View File

@ -5,5 +5,5 @@
"tabWidth": 2,
"semi": true,
"bracketSpacing": true,
"jsxBracketSameLine": false,
}
"jsxBracketSameLine": false
}

View File

@ -31,7 +31,8 @@
"spark-md5",
"xterm",
"xterm-addon-attach",
"xterm-addon-fit"
"xterm-addon-fit",
"ipaddr.js"
],
"outputPath": "dist",
"index": "src/index.html",

2604
dist/3rdpartylicenses.txt vendored Normal file

File diff suppressed because it is too large Load Diff

1
dist/465.92c7ab880f2504d3.js vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
dist/NotoSans-Bold.885427cced6d8c94.woff vendored Normal file

Binary file not shown.

8453
dist/NotoSans-Bold.93203a43bc93ad9c.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
dist/NotoSans-Bold.a7ab189a45f553b4.eot vendored Normal file

Binary file not shown.

BIN
dist/NotoSans-Bold.e989c11744b36f58.ttf vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

8453
dist/NotoSans-Italic.3d6f7cf772169c8d.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

8453
dist/NotoSans-Regular.bb384defbe36eaec.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

179
dist/ReleaseNotes.txt vendored Normal file
View File

@ -0,0 +1,179 @@
GNS3 WebUI is web implementation of user interface for GNS3 software.
Current version: 2.2.24
Bug Fixes & enhancements
- security fixes
Current version: 2020.4.0-beta.1
Bug Fixes & enhancements
- symbol is not properly selected in change symbol dialog
- issue when using the scroll wheel on the web console
- missing settings for Docker nodes
- error on servers page
What's new
- double click nodes to open the console
Current version: 2020.3.0-beta.3
Bug Fixes & enhancements
- direct download URL in template dialog
- fix for issues with suspnded nodes
- fix for bug with deleting templates
- fix for importing images
What's new
- Option to resize console
- Improvements in creating templates
GNS3 Web UI 2020.3.0-beta.1
Bug Fixes & enhancements
- refreshing list of templates after adding new template from project map 
- link to preferences from project page 
- disallow user to create Qemu template when binary is not selected 
- extending the time for notification to appear 
- open first settings menu at start 
- the menu for the map rearranged 
- restyling SystemStatus page 
- marking files which already exist in appliance wizard
What's new
- Option to import appliances
GNS3 Web UI 2020.2.0-beta.5
Bug Fixes
- Bug in symbol selection
- Same question is asked after going back to project
- Cannot read property 'forEach' of undefined
- Error when selecting existing Docker image
- Invalid property when adding VMware VM template
- Invalid type for adapters field when adding Docker template
- Prevent user to move to another step when adding template
- Web UI cannot set flag "Leave this project running in the background after closing"
What's new
- Default values in templates
- New option for Qemu VMs
- Ability to quickly change Hostname from right click
- Progress bar for node creation
GNS3 Web UI 2020.2.0-beta.4
Bug Fixes
- New port setting for GNS3 VM preferences
- Option to auto-hide menu toolbar on the left side
-Controller type in template preferences
- Error when selecting existing Docker image
- Default values in templates
- TypeError: Cannot read property 'message' of undefined
- TypeError: e.error is undefined
- TypeError: Cannot read property 'placements' of null
- Creating IOS templates -> fix for platforms and network adapters
GNS3 Web UI 2020.2.0-beta.2
What's New
- Drag & drop to add new nodes on topology
- Option to minimize/maximize and hide console widget
- Ability to add IOS templates
- Node names in HTTP console tabs
- Default settings for templates
- Support for adding IOS images
- Node dialog updated
- Messages with description in toasts
- Adding interfaces to cloud nodes
- Changes in notification box mechanism (once per day option)
- Additional tooltips added
- Copy/paste options in console (only Chrome full support)
- More details for server failed connections
Bug Fixes
- Fix for console icons
- Fix for creating ethernet switches and hubs
- Fix for opening console from context menu
- Qemu configurator now works properly
- Fixes in snap to grid option
- Symbols preview now works correctly
- Error messages in preferences should be displayed
- Default values for New Ethernet devices in configurator
- Fix for wrong adapter types in Qemu
- Fix for fit in view option on Firefox
- Fix for navigation errors
GNS3 Web UI 2020.2.0-beta.1
What's New
- Support for suspended status added
- Suport for 404 page
- Actions for group of nodes added
- Updating packages
- Button to close project added
- Opening ads in new window
- New dialog for adding nodes
- Option to import config
- Support for light theme added
Bug Fixes
- Fix for navigating to project that doesn't exist
- Fix for AdButler errors
- Fix for screenshot issue
- Proper centering of icons
- Fix for adding custom symbols
- Fix for return command in console
- Fix for deleting links
- Fix for duplicating any node type
- Fix for console errors on servers page
- Fix for console errors on projects page
GNS3 Web UI 2019.2.0 v10
What's New
- Qemu image configurator
- Custom console for particular node
- Option to connect console to all nodes
- Option to start Winpcap
- Filtering devices with packet filters on topology summary
- Filtering devices with captures on topology summary
- View options taken from map configuration
- Servers summary widget
- Ability to lock single item on the map
- Editing & import & export config files
- Context menu for inserted drawings
- Ability to drag topology summary & servers summary & console widgets
- Ability to resize topology summary & servers summary & console widgets
- Option to show the grid
- Option to snap to grid
- Usage instructions available from context menu
- Errors & warnings visible as notifications
- Fit in view options
- Support for global variables
- Support for layers
- Extending template preferences
Bug Fixes
- Input validation in styles editor
- Fix for saving map as image
- Removing errors with uncorrect subscriptions
GNS3 Web UI 2019.2.0 v9
What's New
- Editing interface labels on double click
- Support for keyboard shortcuts
- Menu extended with option to delete currently opened project, export & import project
- Possibility to save current state of project
- Ability to duplicate project from projects page
- Node information dialog available from context menu
- Topology summary widget on map view
- Improvements in dialog styles
Bug Fixes
- Removing issues with opening console
- Context menu now is correctly placed
- Text validation in dialogs
- Removing errors with creating WebSockets

BIN
dist/assets/favicon.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

88
dist/assets/gns3_icon.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

88
dist/assets/gns3_icon_black.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

BIN
dist/assets/icons/mac/icon.icns vendored Normal file

Binary file not shown.

BIN
dist/assets/icons/png/1024x1024.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

BIN
dist/assets/icons/png/128x128.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
dist/assets/icons/png/16x16.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 734 B

BIN
dist/assets/icons/png/24x24.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
dist/assets/icons/png/256x256.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
dist/assets/icons/png/32x32.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
dist/assets/icons/png/48x48.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
dist/assets/icons/png/512x512.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
dist/assets/icons/png/64x64.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
dist/assets/icons/win/icon.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

BIN
dist/assets/logo-header.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -0,0 +1,428 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="filter-capture.svg"
inkscape:version="0.91 r13725"
sodipodi:version="0.32"
id="svg11300"
height="48px"
width="48px"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs3">
<linearGradient
id="linearGradient2846">
<stop
id="stop2848"
offset="0.0000000"
style="stop-color:#8a8a8a;stop-opacity:1.0000000;" />
<stop
id="stop2850"
offset="1.0000000"
style="stop-color:#484848;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2366">
<stop
id="stop2368"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
style="stop-color:#ffffff;stop-opacity:0.21904762;"
offset="0.50000000"
id="stop2374" />
<stop
id="stop2370"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4487">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4489" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop4491" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4477">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop4479" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop4481" />
</linearGradient>
<linearGradient
id="linearGradient4467">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4469" />
<stop
style="stop-color:#ffffff;stop-opacity:0.24761905;"
offset="1.0000000"
id="stop4471" />
</linearGradient>
<linearGradient
id="linearGradient4454">
<stop
style="stop-color:#729fcf;stop-opacity:0.20784314;"
offset="0.0000000"
id="stop4456" />
<stop
style="stop-color:#729fcf;stop-opacity:0.67619050;"
offset="1.0000000"
id="stop4458" />
</linearGradient>
<linearGradient
id="linearGradient4440">
<stop
style="stop-color:#7d7d7d;stop-opacity:1;"
offset="0"
id="stop4442" />
<stop
id="stop4448"
offset="0.50000000"
style="stop-color:#b1b1b1;stop-opacity:1.0000000;" />
<stop
style="stop-color:#686868;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop4444" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4440"
id="linearGradient4446"
x1="30.656250"
y1="34.000000"
x2="33.218750"
y2="31.062500"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.334593,0.000000,0.000000,1.291292,-6.973842,-7.460658)" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4454"
id="radialGradient4460"
cx="18.240929"
cy="21.817987"
fx="18.240929"
fy="21.817987"
r="8.3085051"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4467"
id="radialGradient4473"
cx="15.414371"
cy="13.078408"
fx="15.414371"
fy="13.078408"
r="6.6562500"
gradientTransform="matrix(2.592963,-7.746900e-24,-5.714443e-24,2.252104,-25.05975,-18.94100)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4487"
id="radialGradient4493"
cx="24.130018"
cy="37.967922"
fx="24.130018"
fy="37.967922"
r="16.528622"
gradientTransform="matrix(0.47747795,0,0,0.17126529,6.9831225,31.643536)"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="25.743469"
x2="17.500893"
y1="13.602121"
x1="18.292673"
id="linearGradient2372"
xlink:href="#linearGradient2366"
inkscape:collect="always" />
<radialGradient
r="16.528622"
fy="37.967922"
fx="24.130018"
cy="37.967922"
cx="24.130018"
gradientTransform="matrix(1.000000,0.000000,0.000000,0.237968,-2.471981e-16,28.93278)"
gradientUnits="userSpaceOnUse"
id="radialGradient2842"
xlink:href="#linearGradient4477"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="30.557772"
x2="31.335964"
y1="26.580296"
x1="27.366341"
id="linearGradient2852"
xlink:href="#linearGradient2846"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
stroke="#3465a4"
inkscape:window-y="48"
inkscape:window-x="130"
inkscape:window-height="1752"
inkscape:window-width="3070"
inkscape:showpageshadow="false"
inkscape:document-units="px"
inkscape:grid-bbox="true"
showgrid="false"
inkscape:current-layer="g1772"
inkscape:cy="37.212656"
inkscape:cx="23.821561"
inkscape:zoom="11.313708"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="0.25490196"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
fill="#729fcf"
inkscape:window-maximized="1" />
<metadata
id="metadata4">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:creator>
<cc:Agent>
<dc:title>Jakub Steiner</dc:title>
</cc:Agent>
</dc:creator>
<dc:source>http://jimmac.musichall.cz</dc:source>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Notice" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Attribution" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
<cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
inkscape:label="Layer 1"
id="layer1">
<g
id="g1772">
<path
sodipodi:type="arc"
style="opacity:0.17112298;color:#000000;fill:url(#radialGradient2842);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
id="path4475"
sodipodi:cx="24.130018"
sodipodi:cy="37.967922"
sodipodi:rx="16.528622"
sodipodi:ry="3.9332814"
d="M 40.658640 37.967922 A 16.528622 3.9332814 0 1 1 7.6013966,37.967922 A 16.528622 3.9332814 0 1 1 40.658640 37.967922 z"
transform="matrix(1.446431,0.000000,0.000000,1.519990,-10.97453,-17.75168)" />
<path
sodipodi:nodetypes="csscccscccscczzzz"
id="path2844"
d="M 18.627569,3.1435548 C 10.488439,3.1435548 3.8827682,9.7492259 3.8827682,17.888356 C 3.8827682,26.027486 10.488439,32.633158 18.627569,32.633158 C 22.107124,32.633158 25.178570,31.248765 27.701292,29.230511 C 27.495915,30.237392 27.623257,31.265879 28.457436,31.990436 L 39.421520,41.517846 C 40.654936,42.589175 42.508982,42.448806 43.580310,41.215389 C 44.651638,39.981971 44.511269,38.127927 43.277853,37.056599 L 32.313769,27.529188 C 31.642242,26.945909 30.820891,26.773219 30.007531,26.886466 C 31.994231,24.374044 33.372370,21.337663 33.372370,17.888356 C 33.372370,9.7492259 26.766699,3.1435548 18.627569,3.1435548 z M 18.551954,4.3697381 C 26.191413,4.3697381 31.843729,9.1586886 31.843729,17.661513 C 31.843729,26.336626 26.027039,30.953288 18.551954,30.953288 C 11.249005,30.953288 5.2601806,25.475196 5.2601806,17.661513 C 5.2601806,9.6774061 11.084819,4.3697380 18.551954,4.3697381 z "
style="opacity:1.0000000;color:#000000;fill:#dcdcdc;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2852);stroke-width:2.0000010;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;" />
<path
style="opacity:1.0000000;color:#000000;fill:#dcdcdc;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000004;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
d="M 18.602905,3.0803551 C 10.437465,3.0803551 3.8104408,9.7073791 3.8104408,17.872819 C 3.8104408,26.038259 10.437465,32.665283 18.602905,32.665283 C 22.093708,32.665283 25.175082,31.276416 27.705960,29.251638 C 27.499919,30.261774 27.627672,31.293585 28.464547,32.020484 L 39.464073,41.578691 C 40.701476,42.653483 42.561515,42.512661 43.636306,41.275256 C 44.711097,40.037852 44.570274,38.177814 43.332871,37.103023 L 32.333346,27.544815 C 31.659648,26.959651 30.835642,26.786402 30.019653,26.900016 C 32.012775,24.379472 33.395369,21.333276 33.395369,17.872819 C 33.395369,9.7073791 26.768345,3.0803551 18.602905,3.0803551 z M 18.527046,6.2664243 C 24.808154,6.2664245 29.905864,11.364135 29.905864,17.645243 C 29.905864,23.926351 24.808154,29.024061 18.527046,29.024061 C 12.245938,29.024061 7.1482276,23.926351 7.1482276,17.645243 C 7.1482278,11.364135 12.245938,6.2664243 18.527046,6.2664243 z "
id="path4430" />
<path
style="opacity:1.0000000;color:#000000;fill:url(#linearGradient4446);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
d="M 39.507004,41.577690 C 39.028332,39.304503 40.904334,36.766268 43.091057,36.789315 C 43.091057,36.789315 32.330690,27.531204 32.330690,27.531204 C 29.385899,27.474498 28.061188,29.803820 28.553876,32.131126 L 39.507004,41.577690 z "
id="path4438"
sodipodi:nodetypes="ccccc" />
<path
sodipodi:type="arc"
style="opacity:1.0000000;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2372);stroke-width:0.80273360;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
id="path4450"
sodipodi:cx="17.500893"
sodipodi:cy="18.920233"
sodipodi:rx="11.048544"
sodipodi:ry="11.048544"
d="M 28.549437 18.920233 A 11.048544 11.048544 0 1 1 6.4523487,18.920233 A 11.048544 11.048544 0 1 1 28.549437 18.920233 z"
transform="matrix(1.245743,0.000000,0.000000,1.245743,-3.425346,-6.177033)" />
<ellipse
id="path4485"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4493);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
cx="18.504675"
cy="38.146122"
rx="7.8920522"
ry="2.8307779" />
<rect
style="opacity:0.43315509;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000311;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
id="rect4495"
width="19.048439"
height="4.4404783"
x="40.373337"
y="0.14086054"
rx="2.1366608"
ry="1.8879365"
transform="matrix(0.752986,0.658037,-0.648902,0.760872,0.000000,0.000000)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:url(#radialGradient4460);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#3063a3;stroke-width:0.71499395;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10.000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;"
id="path4452"
sodipodi:cx="17.589281"
sodipodi:cy="18.478292"
sodipodi:rx="8.3085051"
sodipodi:ry="8.3085051"
d="M 25.897786 18.478292 A 8.3085051 8.3085051 0 1 1 9.2807760,18.478292 A 8.3085051 8.3085051 0 1 1 25.897786 18.478292 z"
transform="matrix(1.398614,0.000000,0.000000,1.398614,-6.224338,-8.298958)" />
<path
style="opacity:0.83422458;color:#000000;fill:url(#radialGradient4473);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
d="M 18.156915,7.3966938 C 12.949325,7.3966938 8.7323681,11.613651 8.7323681,16.821241 C 8.7323681,18.325216 9.1526753,19.709014 9.7795400,20.971144 C 11.031920,21.432757 12.362297,21.746827 13.774307,21.746827 C 19.945262,21.746827 24.873589,16.885190 25.254413,10.809698 C 23.523449,8.7641668 21.044374,7.3966938 18.156915,7.3966938 z "
id="path4462" />
<g
transform="matrix(0.02264973,0,0,0.02609408,48.046283,48.655279)"
id="g6-3"
style="opacity:0.4;fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1">
<g
id="g8-6"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1">
<path
inkscape:connector-curvature="0"
d="m -1627.0838,-595.53083 c 10.4,11.3 16.1,26 16.1,41.3 l 0,449.7 c 0,27.099997 32.7,40.799997 52,21.799997 l 125.5,-143.799997 c 16.8,-20.1 26,-30.1 26,-50.1 l 0,-277.4 c 0,-15.3 5.8,-30 16.1,-41.3 l 360,-390.6 c 27,-29.29997 6.2,-76.79997 -33.7,-76.79997 l -888.3,0 c -39.9,-0.1 -60.7,47.3 -33.7,76.69997 l 360,390.5 z"
id="path10-7"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:82.35282898;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g12-5"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g14-3"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g16-5"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g18-6"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g20-2"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g22-9"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g24-1"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g26-2"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g28-7"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g30-0"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g32-9"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g34-3"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g36-6"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g38-0"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g40-6"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
</g>
<g
transform="matrix(0.0233822,0,0,0.02642586,47.842749,48.274221)"
id="g6"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
<g
id="g8"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
<path
inkscape:connector-curvature="0"
d="m -1627.0838,-595.53083 c 10.4,11.3 16.1,26 16.1,41.3 l 0,449.7 c 0,27.099997 32.7,40.799997 52,21.799997 l 125.5,-143.799997 c 16.8,-20.1 26,-30.1 26,-50.1 l 0,-277.4 c 0,-15.3 5.8,-30 16.1,-41.3 l 360,-390.6 c 27,-29.29997 6.2,-76.79997 -33.7,-76.79997 l -888.3,0 c -39.9,-0.1 -60.7,47.3 -33.7,76.69997 l 360,390.5 z"
id="path10"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g12"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g14"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g16"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g18"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g20"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g22"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g24"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g26"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g28"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g30"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g32"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g34"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g36"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g38"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g40"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB

708
dist/assets/resources/images/filter.svg vendored Normal file
View File

@ -0,0 +1,708 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="filter.svg"
inkscape:version="0.91 r13725"
sodipodi:version="0.32"
id="svg11300"
height="48px"
width="48px"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs3">
<linearGradient
id="linearGradient2846">
<stop
id="stop2848"
offset="0.0000000"
style="stop-color:#8a8a8a;stop-opacity:1.0000000;" />
<stop
id="stop2850"
offset="1.0000000"
style="stop-color:#484848;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2366">
<stop
id="stop2368"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
style="stop-color:#ffffff;stop-opacity:0.21904762;"
offset="0.50000000"
id="stop2374" />
<stop
id="stop2370"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient4467">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4469" />
<stop
style="stop-color:#ffffff;stop-opacity:0.24761905;"
offset="1.0000000"
id="stop4471" />
</linearGradient>
<linearGradient
id="linearGradient4454">
<stop
style="stop-color:#729fcf;stop-opacity:0.20784314;"
offset="0.0000000"
id="stop4456" />
<stop
style="stop-color:#729fcf;stop-opacity:0.67619050;"
offset="1.0000000"
id="stop4458" />
</linearGradient>
<linearGradient
id="linearGradient4440">
<stop
style="stop-color:#7d7d7d;stop-opacity:1;"
offset="0"
id="stop4442" />
<stop
id="stop4448"
offset="0.50000000"
style="stop-color:#b1b1b1;stop-opacity:1.0000000;" />
<stop
style="stop-color:#686868;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop4444" />
</linearGradient>
<linearGradient
gradientTransform="matrix(1.5770403,0,0,1.4373405,-85.325285,-112.88055)"
y2="78.206215"
x2="71.53405"
y1="124.11652"
x1="71.288956"
gradientUnits="userSpaceOnUse"
id="linearGradient2306"
xlink:href="#linearGradient5075"
inkscape:collect="always" />
<linearGradient
id="linearGradient3340">
<stop
id="stop3342"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop3344"
offset="1"
style="stop-color:#ffffff;stop-opacity:0.62886596;" />
</linearGradient>
<linearGradient
id="linearGradient5075">
<stop
id="stop5077"
offset="0"
style="stop-color:#adb0a8;stop-opacity:1;" />
<stop
id="stop5079"
offset="1"
style="stop-color:#464744;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient2584">
<stop
id="stop2586"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop2588"
offset="1"
style="stop-color:#ffffff;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient2684">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop2686" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop2688" />
</linearGradient>
<linearGradient
y2="52.510574"
x2="14"
y1="15.291994"
x1="15.089521"
gradientTransform="translate(-4e-4,-9.426e-2)"
gradientUnits="userSpaceOnUse"
id="linearGradient2864"
xlink:href="#linearGradient3081"
inkscape:collect="always" />
<linearGradient
y2="93.204849"
x2="169"
y1="110.33805"
x1="169"
gradientTransform="matrix(1,0,0,1.004384,-145.0004,-71.4625)"
gradientUnits="userSpaceOnUse"
id="linearGradient2862"
xlink:href="#linearGradient2697"
inkscape:collect="always" />
<radialGradient
r="11"
fy="100.20107"
fx="169.77171"
cy="100.20107"
cx="169.77171"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-175.6121,212.6949)"
gradientUnits="userSpaceOnUse"
id="radialGradient2860"
xlink:href="#linearGradient2679"
inkscape:collect="always" />
<linearGradient
y2="105.49083"
x2="174.74524"
y1="84.263489"
x1="174.83363"
gradientTransform="matrix(1.103262,0,0,1.054917,-163.1228,-76.31138)"
gradientUnits="userSpaceOnUse"
id="linearGradient2858"
xlink:href="#linearGradient2817"
inkscape:collect="always" />
<radialGradient
r="11"
fy="100.20107"
fx="169.77171"
cy="100.20107"
cx="169.77171"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-175.6121,186.6949)"
gradientUnits="userSpaceOnUse"
id="radialGradient2831"
xlink:href="#linearGradient2679"
inkscape:collect="always" />
<linearGradient
y2="52.510574"
x2="14"
y1="15.291994"
x1="15.089521"
gradientTransform="translate(-4e-4,-26.09426)"
gradientUnits="userSpaceOnUse"
id="linearGradient2825"
xlink:href="#linearGradient3081"
inkscape:collect="always" />
<linearGradient
y2="105.49083"
x2="174.74524"
y1="84.263489"
x1="174.83363"
gradientTransform="matrix(1.103262,0,0,1.054917,-163.1228,-76.31138)"
gradientUnits="userSpaceOnUse"
id="linearGradient2823"
xlink:href="#linearGradient2817"
inkscape:collect="always" />
<radialGradient
r="11"
fy="100.20107"
fx="169.77171"
cy="100.20107"
cx="169.77171"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-175.6121,212.6949)"
gradientUnits="userSpaceOnUse"
id="radialGradient2809"
xlink:href="#linearGradient2679"
inkscape:collect="always" />
<linearGradient
y2="93.204849"
x2="169"
y1="110.33805"
x1="169"
gradientTransform="translate(-145.0004,-97.0943)"
gradientUnits="userSpaceOnUse"
id="linearGradient2806"
xlink:href="#linearGradient2697"
inkscape:collect="always" />
<linearGradient
y2="93.204849"
x2="169"
y1="110.33805"
x1="169"
gradientTransform="matrix(1,0,0,1.004384,-145.0004,-71.4625)"
gradientUnits="userSpaceOnUse"
id="linearGradient2803"
xlink:href="#linearGradient2697"
inkscape:collect="always" />
<linearGradient
y2="52.510574"
x2="14"
y1="15.291994"
x1="15.089521"
gradientTransform="translate(-4e-4,-9.426e-2)"
gradientUnits="userSpaceOnUse"
id="linearGradient2800"
xlink:href="#linearGradient3081"
inkscape:collect="always" />
<linearGradient
y2="52.510574"
x2="14"
y1="15.291994"
x1="15.089521"
gradientTransform="translate(133,70.99999)"
gradientUnits="userSpaceOnUse"
id="linearGradient2797"
xlink:href="#linearGradient3081"
inkscape:collect="always" />
<linearGradient
y2="93.204849"
x2="169"
y1="110.33805"
x1="169"
gradientTransform="translate(-12,0)"
gradientUnits="userSpaceOnUse"
id="linearGradient2795"
xlink:href="#linearGradient2697"
inkscape:collect="always" />
<linearGradient
y2="93.204849"
x2="169"
y1="110.33805"
x1="169"
gradientTransform="translate(-12,0)"
gradientUnits="userSpaceOnUse"
id="linearGradient2793"
xlink:href="#linearGradient2697"
inkscape:collect="always" />
<radialGradient
r="11"
fy="100.20107"
fx="169.77171"
cy="100.20107"
cx="169.77171"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-42.61165,283.7891)"
gradientUnits="userSpaceOnUse"
id="radialGradient2791"
xlink:href="#linearGradient2679"
inkscape:collect="always" />
<linearGradient
y2="52.510574"
x2="14"
y1="15.291994"
x1="15.089521"
gradientTransform="translate(133,70.99999)"
gradientUnits="userSpaceOnUse"
id="linearGradient2753"
xlink:href="#linearGradient3081"
inkscape:collect="always" />
<linearGradient
y2="93.204849"
x2="169"
y1="110.33805"
x1="169"
gradientTransform="translate(-12,0)"
gradientUnits="userSpaceOnUse"
id="linearGradient2751"
xlink:href="#linearGradient2697"
inkscape:collect="always" />
<radialGradient
r="11"
fy="100.20107"
fx="169.77171"
cy="100.20107"
cx="169.77171"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-42.61165,283.7891)"
gradientUnits="userSpaceOnUse"
id="radialGradient2749"
xlink:href="#linearGradient2679"
inkscape:collect="always" />
<radialGradient
r="15.644737"
fy="36.421127"
fx="24.837126"
cy="36.421127"
cx="24.837126"
gradientTransform="matrix(1,0,0,0.536723,-1.44832e-12,16.87306)"
gradientUnits="userSpaceOnUse"
id="radialGradient2747"
xlink:href="#linearGradient8662"
inkscape:collect="always" />
<radialGradient
r="15.644737"
fy="36.421127"
fx="24.837126"
cy="36.421127"
cx="24.837126"
gradientTransform="matrix(1,0,0,0.536723,4.579205e-13,16.87306)"
gradientUnits="userSpaceOnUse"
id="radialGradient2745"
xlink:href="#linearGradient8662"
inkscape:collect="always" />
<linearGradient
y2="52.510574"
x2="14"
y1="15.291994"
x1="15.089521"
gradientTransform="translate(133,70.99999)"
gradientUnits="userSpaceOnUse"
id="linearGradient2733"
xlink:href="#linearGradient3081"
inkscape:collect="always" />
<linearGradient
y2="93.204849"
x2="169"
y1="110.33805"
x1="169"
gradientTransform="translate(-12,0)"
gradientUnits="userSpaceOnUse"
id="linearGradient2731"
xlink:href="#linearGradient2697"
inkscape:collect="always" />
<radialGradient
r="11"
fy="100.20107"
fx="169.77171"
cy="100.20107"
cx="169.77171"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-42.61165,283.7891)"
gradientUnits="userSpaceOnUse"
id="radialGradient2729"
xlink:href="#linearGradient2679"
inkscape:collect="always" />
<radialGradient
r="15.644737"
fy="36.421127"
fx="24.837126"
cy="36.421127"
cx="24.837126"
gradientTransform="matrix(1,0,0,0.536723,-1.432388e-12,16.87306)"
gradientUnits="userSpaceOnUse"
id="radialGradient2727"
xlink:href="#linearGradient8662"
inkscape:collect="always" />
<radialGradient
r="15.644737"
fy="36.421127"
fx="24.837126"
cy="36.421127"
cx="24.837126"
gradientTransform="matrix(1,0,0,0.536723,4.526469e-13,16.87306)"
gradientUnits="userSpaceOnUse"
id="radialGradient2725"
xlink:href="#linearGradient8662"
inkscape:collect="always" />
<radialGradient
r="15.644737"
fy="36.421127"
fx="24.837126"
cy="36.421127"
cx="24.837126"
gradientTransform="matrix(1,0,0,0.536723,-1.416456e-12,16.87306)"
gradientUnits="userSpaceOnUse"
id="radialGradient2139"
xlink:href="#linearGradient8662"
inkscape:collect="always" />
<radialGradient
r="15.644737"
fy="36.421127"
fx="24.837126"
cy="36.421127"
cx="24.837126"
gradientTransform="matrix(1,0,0,0.536723,4.473733e-13,16.87306)"
gradientUnits="userSpaceOnUse"
id="radialGradient2137"
xlink:href="#linearGradient8662"
inkscape:collect="always" />
<linearGradient
y2="52.510574"
x2="14"
y1="15.291994"
x1="15.089521"
gradientTransform="translate(133,70.99999)"
gradientUnits="userSpaceOnUse"
id="linearGradient2124"
xlink:href="#linearGradient3081"
inkscape:collect="always" />
<linearGradient
y2="93.204849"
x2="169"
y1="110.33805"
x1="169"
gradientTransform="translate(-12,0)"
gradientUnits="userSpaceOnUse"
id="linearGradient2122"
xlink:href="#linearGradient2697"
inkscape:collect="always" />
<radialGradient
r="11"
fy="100.20107"
fx="169.77171"
cy="100.20107"
cx="169.77171"
gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-42.61165,283.7891)"
gradientUnits="userSpaceOnUse"
id="radialGradient2112"
xlink:href="#linearGradient2679"
inkscape:collect="always" />
<linearGradient
id="linearGradient8662"
inkscape:collect="always">
<stop
id="stop8664"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop8666"
offset="1"
style="stop-color:#000000;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient3081"
inkscape:collect="always">
<stop
id="stop3083"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop3085"
offset="1"
style="stop-color:#ffffff;stop-opacity:0;" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient2679">
<stop
style="stop-color:#f7f7f7;stop-opacity:1"
offset="0"
id="stop2681" />
<stop
style="stop-color:#ccd0c7;stop-opacity:1"
offset="1"
id="stop2683" />
</linearGradient>
<linearGradient
id="linearGradient2697">
<stop
style="stop-color:#babdb6"
offset="0"
id="stop2699" />
<stop
style="stop-color:#555753"
offset="1"
id="stop2701" />
</linearGradient>
<linearGradient
id="linearGradient2584-8">
<stop
id="stop2586-4"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop2588-8"
offset="1"
style="stop-color:#ffffff;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient2817">
<stop
id="stop2819"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop2821"
offset="1"
style="stop-color:#ffffff;stop-opacity:0.48453608;" />
</linearGradient>
</defs>
<sodipodi:namedview
stroke="#3465a4"
inkscape:window-y="48"
inkscape:window-x="130"
inkscape:window-height="1752"
inkscape:window-width="3070"
inkscape:showpageshadow="false"
inkscape:document-units="px"
inkscape:grid-bbox="true"
showgrid="false"
inkscape:current-layer="layer1"
inkscape:cy="24.580209"
inkscape:cx="-23.904288"
inkscape:zoom="11.313708"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="0.25490196"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
fill="#729fcf"
inkscape:window-maximized="1" />
<metadata
id="metadata4">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:creator>
<cc:Agent>
<dc:title>Jakub Steiner</dc:title>
</cc:Agent>
</dc:creator>
<dc:source>http://jimmac.musichall.cz</dc:source>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Notice" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Attribution" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
<cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
inkscape:label="Layer 1"
id="layer1">
<g
transform="matrix(0.04112758,0,0,0.04208992,87.449849,49.200049)"
id="g6-3"
style="opacity:0.4;fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1">
<g
id="g8-6"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1">
<path
inkscape:connector-curvature="0"
d="m -1627.0838,-595.53083 c 10.4,11.3 16.1,26 16.1,41.3 l 0,449.7 c 0,27.099997 32.7,40.799997 52,21.799997 l 125.5,-143.799997 c 16.8,-20.1 26,-30.1 26,-50.1 l 0,-277.4 c 0,-15.3 5.8,-30 16.1,-41.3 l 360,-390.6 c 27,-29.29997 6.2,-76.79997 -33.7,-76.79997 l -888.3,0 c -39.9,-0.1 -60.7,47.3 -33.7,76.69997 l 360,390.5 z"
id="path10-7"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:82.35282898;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g12-5"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g14-3"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g16-5"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g18-6"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g20-2"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g22-9"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g24-1"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g26-2"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g28-7"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g30-0"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g32-9"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g34-3"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g36-6"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g38-0"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<g
id="g40-6"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
</g>
<g
transform="matrix(0.04245758,0,0,0.04262509,87.080268,48.585402)"
id="g6"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none">
<g
id="g8"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
d="m -1627.0838,-595.53083 c 10.4,11.3 16.1,26 16.1,41.3 l 0,449.7 c 0,27.099997 32.7,40.799997 52,21.799997 l 125.5,-143.799997 c 16.8,-20.1 26,-30.1 26,-50.1 l 0,-277.4 c 0,-15.3 5.8,-30 16.1,-41.3 l 360,-390.6 c 27,-29.29997 6.2,-76.79997 -33.7,-76.79997 l -888.3,0 c -39.9,-0.1 -60.7,47.3 -33.7,76.69997 l 360,390.5 z"
id="path10"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g12"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g14"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g16"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g18"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g20"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g22"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g24"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g26"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g28"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g30"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g32"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g34"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g36"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g38"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g40"
style="fill:#e6e6e6;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:70.51978539;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
<g
inkscape:r_cy="true"
inkscape:r_cx="true"
style="display:inline"
inkscape:label="Layer 1"
id="layer1-4"
transform="matrix(0.52129778,0,0,0.55541254,0.16640648,22.45761)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 23 KiB

312
dist/assets/resources/images/inspect.svg vendored Normal file
View File

@ -0,0 +1,312 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="system-search.svg"
sodipodi:docbase="/home/tigert/cvs/freedesktop.org/tango-icon-theme/scalable/actions"
inkscape:version="0.43+devel"
sodipodi:version="0.32"
id="svg11300"
height="48px"
width="48px"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs3">
<linearGradient
id="linearGradient2846">
<stop
id="stop2848"
offset="0.0000000"
style="stop-color:#8a8a8a;stop-opacity:1.0000000;" />
<stop
id="stop2850"
offset="1.0000000"
style="stop-color:#484848;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2366">
<stop
id="stop2368"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
style="stop-color:#ffffff;stop-opacity:0.21904762;"
offset="0.50000000"
id="stop2374" />
<stop
id="stop2370"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4487">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4489" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop4491" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4477">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop4479" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop4481" />
</linearGradient>
<linearGradient
id="linearGradient4467">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4469" />
<stop
style="stop-color:#ffffff;stop-opacity:0.24761905;"
offset="1.0000000"
id="stop4471" />
</linearGradient>
<linearGradient
id="linearGradient4454">
<stop
style="stop-color:#729fcf;stop-opacity:0.20784314;"
offset="0.0000000"
id="stop4456" />
<stop
style="stop-color:#729fcf;stop-opacity:0.67619050;"
offset="1.0000000"
id="stop4458" />
</linearGradient>
<linearGradient
id="linearGradient4440">
<stop
style="stop-color:#7d7d7d;stop-opacity:1;"
offset="0"
id="stop4442" />
<stop
id="stop4448"
offset="0.50000000"
style="stop-color:#b1b1b1;stop-opacity:1.0000000;" />
<stop
style="stop-color:#686868;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop4444" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4440"
id="linearGradient4446"
x1="30.656250"
y1="34.000000"
x2="33.218750"
y2="31.062500"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.334593,0.000000,0.000000,1.291292,-6.973842,-7.460658)" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4454"
id="radialGradient4460"
cx="18.240929"
cy="21.817987"
fx="18.240929"
fy="21.817987"
r="8.3085051"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4467"
id="radialGradient4473"
cx="15.414371"
cy="13.078408"
fx="15.414371"
fy="13.078408"
r="6.6562500"
gradientTransform="matrix(2.592963,-7.746900e-24,-5.714443e-24,2.252104,-25.05975,-18.94100)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4487"
id="radialGradient4493"
cx="24.130018"
cy="37.967922"
fx="24.130018"
fy="37.967922"
r="16.528622"
gradientTransform="matrix(1.000000,0.000000,0.000000,0.237968,3.152859e-15,28.93278)"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="25.743469"
x2="17.500893"
y1="13.602121"
x1="18.292673"
id="linearGradient2372"
xlink:href="#linearGradient2366"
inkscape:collect="always" />
<radialGradient
r="16.528622"
fy="37.967922"
fx="24.130018"
cy="37.967922"
cx="24.130018"
gradientTransform="matrix(1.000000,0.000000,0.000000,0.237968,-2.471981e-16,28.93278)"
gradientUnits="userSpaceOnUse"
id="radialGradient2842"
xlink:href="#linearGradient4477"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="30.557772"
x2="31.335964"
y1="26.580296"
x1="27.366341"
id="linearGradient2852"
xlink:href="#linearGradient2846"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
stroke="#3465a4"
inkscape:window-y="187"
inkscape:window-x="239"
inkscape:window-height="754"
inkscape:window-width="691"
inkscape:showpageshadow="false"
inkscape:document-units="px"
inkscape:grid-bbox="true"
showgrid="false"
inkscape:current-layer="layer1"
inkscape:cy="23.070520"
inkscape:cx="23.821561"
inkscape:zoom="11.313708"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="0.25490196"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
fill="#729fcf" />
<metadata
id="metadata4">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:creator>
<cc:Agent>
<dc:title>Jakub Steiner</dc:title>
</cc:Agent>
</dc:creator>
<dc:source>http://jimmac.musichall.cz</dc:source>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Notice" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Attribution" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
<cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
inkscape:label="Layer 1"
id="layer1">
<g
id="g1772">
<path
sodipodi:type="arc"
style="opacity:0.17112298;color:#000000;fill:url(#radialGradient2842);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
id="path4475"
sodipodi:cx="24.130018"
sodipodi:cy="37.967922"
sodipodi:rx="16.528622"
sodipodi:ry="3.9332814"
d="M 40.658640 37.967922 A 16.528622 3.9332814 0 1 1 7.6013966,37.967922 A 16.528622 3.9332814 0 1 1 40.658640 37.967922 z"
transform="matrix(1.446431,0.000000,0.000000,1.519990,-10.97453,-17.75168)" />
<path
sodipodi:nodetypes="csscccscccscczzzz"
id="path2844"
d="M 18.627569,3.1435548 C 10.488439,3.1435548 3.8827682,9.7492259 3.8827682,17.888356 C 3.8827682,26.027486 10.488439,32.633158 18.627569,32.633158 C 22.107124,32.633158 25.178570,31.248765 27.701292,29.230511 C 27.495915,30.237392 27.623257,31.265879 28.457436,31.990436 L 39.421520,41.517846 C 40.654936,42.589175 42.508982,42.448806 43.580310,41.215389 C 44.651638,39.981971 44.511269,38.127927 43.277853,37.056599 L 32.313769,27.529188 C 31.642242,26.945909 30.820891,26.773219 30.007531,26.886466 C 31.994231,24.374044 33.372370,21.337663 33.372370,17.888356 C 33.372370,9.7492259 26.766699,3.1435548 18.627569,3.1435548 z M 18.551954,4.3697381 C 26.191413,4.3697381 31.843729,9.1586886 31.843729,17.661513 C 31.843729,26.336626 26.027039,30.953288 18.551954,30.953288 C 11.249005,30.953288 5.2601806,25.475196 5.2601806,17.661513 C 5.2601806,9.6774061 11.084819,4.3697380 18.551954,4.3697381 z "
style="opacity:1.0000000;color:#000000;fill:#dcdcdc;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2852);stroke-width:2.0000010;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;" />
<path
style="opacity:1.0000000;color:#000000;fill:#dcdcdc;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000004;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
d="M 18.602905,3.0803551 C 10.437465,3.0803551 3.8104408,9.7073791 3.8104408,17.872819 C 3.8104408,26.038259 10.437465,32.665283 18.602905,32.665283 C 22.093708,32.665283 25.175082,31.276416 27.705960,29.251638 C 27.499919,30.261774 27.627672,31.293585 28.464547,32.020484 L 39.464073,41.578691 C 40.701476,42.653483 42.561515,42.512661 43.636306,41.275256 C 44.711097,40.037852 44.570274,38.177814 43.332871,37.103023 L 32.333346,27.544815 C 31.659648,26.959651 30.835642,26.786402 30.019653,26.900016 C 32.012775,24.379472 33.395369,21.333276 33.395369,17.872819 C 33.395369,9.7073791 26.768345,3.0803551 18.602905,3.0803551 z M 18.527046,6.2664243 C 24.808154,6.2664245 29.905864,11.364135 29.905864,17.645243 C 29.905864,23.926351 24.808154,29.024061 18.527046,29.024061 C 12.245938,29.024061 7.1482276,23.926351 7.1482276,17.645243 C 7.1482278,11.364135 12.245938,6.2664243 18.527046,6.2664243 z "
id="path4430" />
<path
style="opacity:1.0000000;color:#000000;fill:url(#linearGradient4446);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
d="M 39.507004,41.577690 C 39.028332,39.304503 40.904334,36.766268 43.091057,36.789315 C 43.091057,36.789315 32.330690,27.531204 32.330690,27.531204 C 29.385899,27.474498 28.061188,29.803820 28.553876,32.131126 L 39.507004,41.577690 z "
id="path4438"
sodipodi:nodetypes="ccccc" />
<path
sodipodi:type="arc"
style="opacity:1.0000000;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2372);stroke-width:0.80273360;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
id="path4450"
sodipodi:cx="17.500893"
sodipodi:cy="18.920233"
sodipodi:rx="11.048544"
sodipodi:ry="11.048544"
d="M 28.549437 18.920233 A 11.048544 11.048544 0 1 1 6.4523487,18.920233 A 11.048544 11.048544 0 1 1 28.549437 18.920233 z"
transform="matrix(1.245743,0.000000,0.000000,1.245743,-3.425346,-6.177033)" />
<path
transform="matrix(0.497764,0.000000,0.000000,0.609621,8.973526,15.61929)"
d="M 40.658640 37.967922 A 16.528622 3.9332814 0 1 1 7.6013966,37.967922 A 16.528622 3.9332814 0 1 1 40.658640 37.967922 z"
sodipodi:ry="3.9332814"
sodipodi:rx="16.528622"
sodipodi:cy="37.967922"
sodipodi:cx="24.130018"
id="path4485"
style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4493);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
sodipodi:type="arc" />
<rect
style="opacity:0.43315509;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000311;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
id="rect4495"
width="19.048439"
height="4.4404783"
x="40.373337"
y="0.14086054"
rx="2.1366608"
ry="1.8879365"
transform="matrix(0.752986,0.658037,-0.648902,0.760872,0.000000,0.000000)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:url(#radialGradient4460);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#3063a3;stroke-width:0.71499395;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10.000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;"
id="path4452"
sodipodi:cx="17.589281"
sodipodi:cy="18.478292"
sodipodi:rx="8.3085051"
sodipodi:ry="8.3085051"
d="M 25.897786 18.478292 A 8.3085051 8.3085051 0 1 1 9.2807760,18.478292 A 8.3085051 8.3085051 0 1 1 25.897786 18.478292 z"
transform="matrix(1.398614,0.000000,0.000000,1.398614,-6.224338,-8.298958)" />
<path
style="opacity:0.83422458;color:#000000;fill:url(#radialGradient4473);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;"
d="M 18.156915,7.3966938 C 12.949325,7.3966938 8.7323681,11.613651 8.7323681,16.821241 C 8.7323681,18.325216 9.1526753,19.709014 9.7795400,20.971144 C 11.031920,21.432757 12.362297,21.746827 13.774307,21.746827 C 19.945262,21.746827 24.873589,16.885190 25.254413,10.809698 C 23.523449,8.7641668 21.044374,7.3966938 18.156915,7.3966938 z "
id="path4462" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

752
dist/assets/resources/images/pause.svg vendored Normal file
View File

@ -0,0 +1,752 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48px"
height="48px"
id="svg1307"
sodipodi:version="0.32"
inkscape:version="0.48.2 r9819"
sodipodi:docname="pause2-test.svg"
inkscape:export-filename="/home/lapo/Desktop/Grafica/Icone/media-actions-outlines.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true"
version="1.1">
<defs
id="defs1309">
<linearGradient
inkscape:collect="always"
id="linearGradient9487">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop9489" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop9491" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient9476">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop9478" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop9480" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient9466">
<stop
style="stop-color:#008080;stop-opacity:1;"
offset="0"
id="stop9468" />
<stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop9470" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient9432">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop9434" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop9436" />
</linearGradient>
<linearGradient
id="linearGradient2684">
<stop
id="stop2686"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop2688"
offset="1"
style="stop-color:#000000;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient2584">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop2586" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop2588" />
</linearGradient>
<linearGradient
id="linearGradient5075">
<stop
style="stop-color:#adb0a8;stop-opacity:1;"
offset="0"
id="stop5077" />
<stop
style="stop-color:#464744;stop-opacity:1"
offset="1"
id="stop5079" />
</linearGradient>
<linearGradient
id="linearGradient3340">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3342" />
<stop
style="stop-color:#ffffff;stop-opacity:0.62886596;"
offset="1"
id="stop3344" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5075"
id="linearGradient2306"
gradientUnits="userSpaceOnUse"
x1="71.288956"
y1="124.11652"
x2="71.53405"
y2="78.206215"
gradientTransform="matrix(1.5770403,0,0,1.4373405,-85.325285,-112.88055)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2684"
id="linearGradient2690"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.7791869,0,0,1.6215803,-99.507163,-130.51074)"
x1="70.049156"
y1="150.31598"
x2="70.951942"
y2="88.923729" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient9466"
id="radialGradient9472"
cx="15.733126"
cy="66.241669"
fx="15.733126"
fy="66.241669"
r="15.202796"
gradientTransform="matrix(0.30232561,1.0465118,-0.93837208,0.27108486,73.135931,31.962758)"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient9476"
id="linearGradient9482"
x1="27.147097"
y1="74.225502"
x2="27.300127"
y2="83.68985"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient9487"
id="linearGradient9493"
x1="21.213203"
y1="53.481934"
x2="21.213203"
y2="89.745346"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.76653669,0,0,0.56547618,-34.291922,62.481744)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2684"
id="linearGradient10063"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.65862368,0,0,0.65001423,-61.40613,49.04658)"
x1="70.049156"
y1="150.31598"
x2="70.951942"
y2="88.923729" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5075"
id="linearGradient10065"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.58379256,0,0,0.57616129,-56.156247,56.113683)"
x1="71.288956"
y1="124.11652"
x2="71.53405"
y2="78.206215" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2817"
id="linearGradient2858"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.103262,0,0,1.054917,-163.1228,-76.31138)"
x1="174.83363"
y1="84.263489"
x2="174.74524"
y2="105.49083" />
<linearGradient
id="linearGradient2817">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop2819" />
<stop
style="stop-color:#ffffff;stop-opacity:0.48453608;"
offset="1"
id="stop2821" />
</linearGradient>
<linearGradient
id="linearGradient2679"
inkscape:collect="always">
<stop
id="stop2681"
offset="0"
style="stop-color:#f7f7f7;stop-opacity:1" />
<stop
id="stop2683"
offset="1"
style="stop-color:#ccd0c7;stop-opacity:1" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2697"
id="linearGradient2862"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.004384,-145.0004,-71.4625)"
x1="169"
y1="110.33805"
x2="169"
y2="93.204849" />
<linearGradient
id="linearGradient2697">
<stop
id="stop2699"
offset="0"
style="stop-color:#babdb6" />
<stop
id="stop2701"
offset="1"
style="stop-color:#555753" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3081"
id="linearGradient2864"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-4e-4,-0.09426)"
x1="15.089521"
y1="15.291994"
x2="14"
y2="52.510574" />
<linearGradient
inkscape:collect="always"
id="linearGradient3081">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3083" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3085" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3081"
id="linearGradient2800"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.5675917,0,0,1.9063787,-13.071975,-21.908765)"
x1="15.089521"
y1="15.291994"
x2="14"
y2="52.510574" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2697"
id="linearGradient2803"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.5675917,0,0,1.9147365,-240.37274,-157.96366)"
x1="169"
y1="110.33805"
x2="169"
y2="93.204849" />
<linearGradient
id="linearGradient13149">
<stop
id="stop13151"
offset="0"
style="stop-color:#babdb6" />
<stop
id="stop13153"
offset="1"
style="stop-color:#555753" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient2679"
id="radialGradient2809"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(5.5842451e-6,-2.0437337,3.1228051,-2.3842281e-6,-288.35934,383.74801)"
cx="169.77171"
cy="100.20107"
fx="169.77171"
fy="100.20107"
r="11" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2817"
id="linearGradient2823"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.6933999,0,0,0.73552,-98.013543,-42.307321)"
x1="174.83363"
y1="84.263489"
x2="174.74524"
y2="105.49083" />
<linearGradient
id="linearGradient13163">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop13165" />
<stop
style="stop-color:#ffffff;stop-opacity:0.48453608;"
offset="1"
id="stop13167" />
</linearGradient>
<linearGradient
y2="105.49083"
x2="174.74524"
y1="84.263489"
x1="174.83363"
gradientTransform="matrix(1.7294643,0,0,2.0110717,-268.78128,-167.20747)"
gradientUnits="userSpaceOnUse"
id="linearGradient13178"
xlink:href="#linearGradient2817"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2817"
id="linearGradient15748"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.7294643,0,0,2.0110717,-212.21274,-161.55062)"
x1="174.83363"
y1="84.263489"
x2="174.74524"
y2="105.49083" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2697"
id="linearGradient15752"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.5675917,0,0,1.9147365,-183.8042,-152.30681)"
x1="169"
y1="110.33805"
x2="169"
y2="93.204849" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3081"
id="linearGradient15754"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.5675917,0,0,1.9063787,43.496568,-16.251911)"
x1="15.089521"
y1="15.291994"
x2="14"
y2="52.510574" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2817"
id="linearGradient15756"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.103262,0,0,1.054917,-163.1228,-76.31138)"
x1="174.83363"
y1="84.263489"
x2="174.74524"
y2="105.49083" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2697"
id="linearGradient15760"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.004384,-145.0004,-71.4625)"
x1="169"
y1="110.33805"
x2="169"
y2="93.204849" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3081"
id="linearGradient15762"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-4e-4,-0.09426)"
x1="15.089521"
y1="15.291994"
x2="14"
y2="52.510574" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2817"
id="linearGradient15780"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.7294643,0,0,2.0110717,-188.87822,-175.51598)"
x1="174.83363"
y1="84.263489"
x2="174.74524"
y2="105.49083" />
<filter
inkscape:collect="always"
id="filter15790"
x="-0.14901266"
width="1.2980253"
y="-0.047467741"
height="1.0949355">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.86708971"
id="feGaussianBlur15792" />
</filter>
<filter
color-interpolation-filters="sRGB"
inkscape:collect="always"
id="filter15790-7"
x="-0.14901266"
width="1.2980253"
y="-0.047467742"
height="1.0949355">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.86708971"
id="feGaussianBlur15792-7" />
</filter>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient9432"
id="linearGradient8781"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.95808383,0,0,0.97572816,4.2045332,1.2585858)"
x1="21.566757"
y1="-18.998367"
x2="21.213203"
y2="32.797203" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="0.19607843"
inkscape:pageopacity="0.0000000"
inkscape:pageshadow="2"
inkscape:zoom="8.5789558"
inkscape:cx="8.4708524"
inkscape:cy="23.599988"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:grid-points="true"
fill="#555753"
showguides="false"
inkscape:guide-bbox="true"
guidetolerance="1px"
stroke="#555753"
inkscape:window-width="1440"
inkscape:window-height="848"
inkscape:window-x="-8"
inkscape:window-y="-8"
showborder="true"
inkscape:showpageshadow="false"
inkscape:window-maximized="1">
<sodipodi:guide
orientation="horizontal"
position="38.996647"
id="guide2194" />
<sodipodi:guide
orientation="horizontal"
position="9.0140845"
id="guide2196" />
<sodipodi:guide
orientation="vertical"
position="9.0140845"
id="guide2198" />
<sodipodi:guide
orientation="vertical"
position="38.975184"
id="guide2200" />
<sodipodi:guide
orientation="horizontal"
position="22.988281"
id="guide2202" />
<sodipodi:guide
orientation="vertical"
position="23.908786"
id="guide2204" />
<sodipodi:guide
orientation="vertical"
position="157.99417"
id="guide4332" />
<sodipodi:guide
orientation="horizontal"
position="-36.062446"
id="guide4334" />
<sodipodi:guide
orientation="horizontal"
position="-58.02695"
id="guide4336" />
<sodipodi:guide
orientation="vertical"
position="180.00287"
id="guide4338" />
<sodipodi:guide
orientation="vertical"
position="107.92217"
id="guide4417" />
<sodipodi:guide
orientation="vertical"
position="129.93087"
id="guide4419" />
<sodipodi:guide
orientation="horizontal"
position="19.996875"
id="guide5106" />
<sodipodi:guide
orientation="horizontal"
position="63.039674"
id="guide5119" />
<sodipodi:guide
orientation="horizontal"
position="49.066305"
id="guide5121" />
<sodipodi:guide
orientation="horizontal"
position="-86.007168"
id="guide5307" />
<sodipodi:guide
orientation="horizontal"
position="-108.09009"
id="guide5309" />
<sodipodi:guide
orientation="horizontal"
position="-100.15429"
id="guide3111" />
<inkscape:grid
id="GridFromPre046Settings"
type="xygrid"
originx="0px"
originy="0px"
spacingx="0.5px"
spacingy="0.5px"
color="#0000ff"
empcolor="#0000ff"
opacity="0.2"
empopacity="0.4"
empspacing="2" />
</sodipodi:namedview>
<metadata
id="metadata1312">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:creator>
<cc:Agent>
<dc:title>Lapo Calamandrei</dc:title>
</cc:Agent>
</dc:creator>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
<dc:subject>
<rdf:Bag>
<rdf:li>play</rdf:li>
<rdf:li>media</rdf:li>
<rdf:li>music</rdf:li>
<rdf:li>video</rdf:li>
<rdf:li>player</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:contributor>
<cc:Agent>
<dc:title>Jakub Steiner</dc:title>
</cc:Agent>
</dc:contributor>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Notice" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Attribution" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
<cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="contorno"
style="display:inline" />
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
style="display:inline">
<rect
style="opacity:0.87000002;fill:#000000;fill-opacity:1;stroke:none;display:inline;filter:url(#filter15790-7)"
id="rect15782-1"
width="13.965359"
height="43.840622"
x="31.024309"
y="3.2754953"
ry="3.4330382" />
<rect
style="opacity:0.87000002;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter15790)"
id="rect15782"
width="13.965359"
height="43.840622"
x="11.490485"
y="3.4522724"
ry="3.4330382" />
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:1"
id="path9440"
sodipodi:cx="11.667262"
sodipodi:cy="68.113136"
sodipodi:rx="5.6568542"
sodipodi:ry="9.1529827"
d="m 17.324116,68.113136 a 5.6568542,9.1529827 0 1 1 -11.3137081,0 5.6568542,9.1529827 0 1 1 11.3137081,0 z"
transform="translate(-39.244427,37.47666)" />
<path
sodipodi:type="arc"
style="fill:url(#radialGradient9472);fill-opacity:1;stroke:none"
id="path9446"
sodipodi:cx="21.213203"
sodipodi:cy="72.395187"
sodipodi:rx="15.202796"
sodipodi:ry="14.849242"
d="m 36.415999,72.395187 a 15.202796,14.849242 0 1 1 -30.4055916,0 15.202796,14.849242 0 1 1 30.4055916,0 z"
transform="translate(-39.244427,37.47666)" />
<path
inkscape:r_cy="true"
inkscape:r_cx="true"
style="opacity:0.15;color:#000000;fill:none;stroke:url(#linearGradient10063);stroke-width:1.15992785;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
d="m -22.879826,119.83382 0,-17.57292 15.2194595,8.53701 -15.2194595,9.03591 z"
id="path10055"
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cccc"
id="path10057"
d="m -22.588246,118.86097 0,-16.02392 14.0713202,8.01196 -14.0713202,8.01196 z"
style="color:#000000;fill:#abc6e3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000036;marker:none;visibility:visible;display:inline;overflow:visible"
inkscape:r_cx="true"
inkscape:r_cy="true"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cccc"
id="path10059"
d="m -22.588246,118.86097 0,-16.02392 14.0713202,8.01196 -14.0713202,8.01196 z"
style="color:#000000;fill:none;stroke:url(#linearGradient10065);stroke-width:0.57996458;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
inkscape:r_cx="true"
inkscape:r_cy="true"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cccccccc"
id="path10061"
d="m -22.29635,103.34091 0,15.01619 13.1900645,-7.50809 -13.1900645,-7.5081 z m 0.583793,1.00829 11.420442,6.49981 -11.420442,6.49983 0,-12.99964 z"
style="color:#000000;fill:#a6c1dd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible"
inkscape:r_cx="true"
inkscape:r_cy="true"
inkscape:connector-curvature="0" />
<path
style="fill:url(#linearGradient9493);fill-opacity:1;stroke:none"
d="m -6.3777226,103.4195 c 0,4.63747 -4.8638964,7.33623 -11.2999474,7.33623 -6.43605,0 -12.007054,-2.69876 -12.007054,-7.33623 0,-4.637478 5.21745,-8.396895 11.653501,-8.396895 6.436051,0 11.6535004,3.759417 11.6535004,8.396895 z"
id="path9484"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssss" />
<path
inkscape:connector-curvature="0"
inkscape:r_cy="true"
inkscape:r_cx="true"
id="path2815"
d="m 27.821733,2.7280617 0,42.2324963 13.835705,0 0,-42.2324963 -13.835705,0 z"
style="opacity:0.15;color:#000000;fill:none;stroke:url(#linearGradient13178);stroke-width:3.45741057;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
<path
inkscape:connector-curvature="0"
id="path2827"
d="m 28.469206,3.8273677 0,40.0339553 12.540723,0 0,-40.0339553 -12.540723,0 z"
style="color:#000000;fill:url(#radialGradient2809);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
<path
inkscape:connector-curvature="0"
style="color:#000000;fill:none;stroke:url(#linearGradient2803);stroke-width:1.72870588;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
d="m 28.469206,3.8315531 0,40.2094649 12.540723,0 0,-40.2094649 -12.540723,0 z"
id="path2762"
inkscape:r_cx="true"
inkscape:r_cy="true" />
<path
inkscape:connector-curvature="0"
id="path2811"
d="m 30.036795,5.7337473 0,36.2211937 9.405555,0 0,-36.2211937 -9.405555,0 z"
style="color:#000000;fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2800);stroke-width:1.72870529000000000;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
<g
style="display:inline;fill:#ffff00"
id="use2844"
inkscape:r_cx="true"
inkscape:r_cy="true"
transform="matrix(1.5675916,0,0,1.9063788,-33.406597,-21.729071)">
<path
inkscape:connector-curvature="0"
style="opacity:0.14999999999999999;color:#000000;fill:#ffff00;stroke:url(#linearGradient2858);stroke-width:1.99999952000000000;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
d="m 26.086565,12.829103 0,22.153256 8.826093,0 0,-22.153256 -8.826093,0 z"
id="path2848"
inkscape:r_cx="true"
inkscape:r_cy="true" />
<path
inkscape:connector-curvature="0"
style="color:#000000;fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
d="m 26.4996,13.40575 0,21 8,0 0,-21 -8,0 z"
id="path2850"
inkscape:r_cx="true"
inkscape:r_cy="true" />
<path
inkscape:connector-curvature="0"
inkscape:r_cy="true"
inkscape:r_cx="true"
id="path2852"
d="m 26.4996,13.407946 0,21.092064 8,0 0,-21.092064 -8,0 z"
style="color:#000000;fill:#ffff00;stroke:url(#linearGradient2862);stroke-width:1.00000011999999990;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
<path
inkscape:connector-curvature="0"
style="color:#000000;fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2864);stroke-width:0.99999970000000005;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
d="m 27.4996,14.40575 0,19 6,0 0,-19 -6,0 z"
id="path2854"
inkscape:r_cx="true"
inkscape:r_cy="true" />
</g>
<path
style="fill:url(#linearGradient8781);fill-opacity:1"
d="M 5.84375 0.90625 L 5.84375 17.03125 C 11.031229 20.945225 18.82566 23.4375 27.5625 23.4375 C 34.627667 23.4375 41.067803 21.787366 46.03125 19.09375 L 46.03125 0.90625 L 5.84375 0.90625 z "
id="path9430" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

BIN
dist/favicon.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

51
dist/index.html vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/main.25127687b7793fef.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/polyfills.319c79dd175e50d0.js vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1
dist/runtime.24fa95b7061d7056.js vendored Normal file
View File

@ -0,0 +1 @@
!function(){"use strict";var e,v={},g={};function n(e){var u=g[e];if(void 0!==u)return u.exports;var t=g[e]={id:e,loaded:!1,exports:{}};return v[e].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}n.m=v,e=[],n.O=function(u,t,o,a){if(!t){var r=1/0;for(i=0;i<e.length;i++){t=e[i][0],o=e[i][1],a=e[i][2];for(var l=!0,f=0;f<t.length;f++)(!1&a||r>=a)&&Object.keys(n.O).every(function(b){return n.O[b](t[f])})?t.splice(f--,1):(l=!1,a<r&&(r=a));if(l){e.splice(i--,1);var s=o();void 0!==s&&(u=s)}}return u}a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[t,o,a]},n.n=function(e){var u=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(u,{a:u}),u},n.d=function(e,u){for(var t in u)n.o(u,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:u[t]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce(function(u,t){return n.f[t](e,u),u},[]))},n.u=function(e){return e+".92c7ab880f2504d3.js"},n.miniCssF=function(e){},n.hmd=function(e){return(e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e},n.o=function(e,u){return Object.prototype.hasOwnProperty.call(e,u)},function(){var e={},u="gns3-web-ui:";n.l=function(t,o,a,i){if(e[t])e[t].push(o);else{var r,l;if(void 0!==a)for(var f=document.getElementsByTagName("script"),s=0;s<f.length;s++){var c=f[s];if(c.getAttribute("src")==t||c.getAttribute("data-webpack")==u+a){r=c;break}}r||(l=!0,(r=document.createElement("script")).type="module",r.charset="utf-8",r.timeout=120,n.nc&&r.setAttribute("nonce",n.nc),r.setAttribute("data-webpack",u+a),r.src=n.tu(t)),e[t]=[o];var d=function(h,b){r.onerror=r.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],r.parentNode&&r.parentNode.removeChild(r),_&&_.forEach(function(m){return m(b)}),h)return h(b)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=d.bind(null,r.onerror),r.onload=d.bind(null,r.onload),l&&document.head.appendChild(r)}}}(),n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},function(){var e;n.tt=function(){return void 0===e&&(e={createScriptURL:function(u){return u}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e}}(),n.tu=function(e){return n.tt().createScriptURL(e)},n.p="",function(){var e={666:0};n.f.j=function(o,a){var i=n.o(e,o)?e[o]:void 0;if(0!==i)if(i)a.push(i[2]);else if(666!=o){var r=new Promise(function(c,d){i=e[o]=[c,d]});a.push(i[2]=r);var l=n.p+n.u(o),f=new Error;n.l(l,function(c){if(n.o(e,o)&&(0!==(i=e[o])&&(e[o]=void 0),i)){var d=c&&("load"===c.type?"missing":c.type),p=c&&c.target&&c.target.src;f.message="Loading chunk "+o+" failed.\n("+d+": "+p+")",f.name="ChunkLoadError",f.type=d,f.request=p,i[1](f)}},"chunk-"+o,o)}else e[o]=0},n.O.j=function(o){return 0===e[o]};var u=function(o,a){var f,s,i=a[0],r=a[1],l=a[2],c=0;if(i.some(function(p){return 0!==e[p]})){for(f in r)n.o(r,f)&&(n.m[f]=r[f]);if(l)var d=l(n)}for(o&&o(a);c<i.length;c++)s=i[c],n.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return n.O(d)},t=self.webpackChunkgns3_web_ui=self.webpackChunkgns3_web_ui||[];t.forEach(u.bind(null,0)),t.push=u.bind(null,t.push.bind(t))}()}();

5
dist/styles.6e966072487df0b7.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{
"name": "gns3-web-ui",
"version": "3.0.0.dev7",
"version": "3.0.5",
"author": {
"name": "GNS3 Technology Inc.",
"email": "developers@gns3.com"
@ -38,7 +38,7 @@
"postbuildforelectron": "node set-variables-in-env.js --unset src/environments/environment.electron.prod.ts",
"postinstall": "ngcc --properties es2020 browser module main --first-only --create-ivy-entry-points --tsconfig \"./src/tsconfig.app.json\" && ngcc --properties es2020 browser module main --first-only --create-ivy-entry-points --tsconfig \"./src/tsconfig.app.json\"",
"snyk-protect": "snyk-protect",
"prepare": "yarn run snyk-protect"
"prepare": "husky install"
},
"private": true,
"dependencies": {
@ -69,6 +69,7 @@
"eev": "^0.1.5",
"ini": "^3.0.0",
"marked": "^4.0.14",
"ipaddr.js": "^2.1.0",
"material-design-icons": "^3.0.1",
"mousetrap": "^1.6.5",
"ng-circle-progress": "^1.6.0",
@ -108,6 +109,7 @@
"electron": "13.6.6",
"electron-builder": "^23.0.3",
"file-loader": "^6.2.0",
"husky": "^8.0.3",
"jasmine-core": "^4.1.0",
"jasmine-spec-reporter": "^7.0.0",
"jquery": "^3.6.0",
@ -137,4 +139,4 @@
]
},
"snyk": true
}
}

26
scripts/push_dev_version.sh Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
#
# Copyright (C) 2023 GNS3 Technologies Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
rm -rf node_modules dist
yarn install
# FIXME: remove --build-optimizer=false
yarn ng build --source-map=false --build-optimizer=false --configuration=production --base-href /static/web-ui/
git add dist/*
git commit -m "Push development version of the Web UI"

View File

@ -1,6 +1,6 @@
setuptools==65.5.1
setuptools==71.1.0
cx_Freeze==5.1.1
requests==2.31.0
requests==2.32.3
packaging==20.9
appdirs==1.4.4
psutil==5.8.0

View File

@ -1,79 +1,80 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { BundledControllerFinderComponent } from './components/bundled-controller-finder/bundled-controller-finder.component';
import { DirectLinkComponent } from './components/direct-link/direct-link.component';
import { HelpComponent } from './components/help/help.component';
import { InstalledSoftwareComponent } from './components/installed-software/installed-software.component';
import { LoginComponent } from './components/login/login.component';
import { PageNotFoundComponent } from './components/page-not-found/page-not-found.component';
import { BuiltInPreferencesComponent } from './components/preferences/built-in/built-in-preferences.component';
import { CloudNodesAddTemplateComponent } from './components/preferences/built-in/cloud-nodes/cloud-nodes-add-template/cloud-nodes-add-template.component';
import { CloudNodesTemplateDetailsComponent } from './components/preferences/built-in/cloud-nodes/cloud-nodes-template-details/cloud-nodes-template-details.component';
import { CloudNodesTemplatesComponent } from './components/preferences/built-in/cloud-nodes/cloud-nodes-templates/cloud-nodes-templates.component';
import { EthernetHubsAddTemplateComponent } from './components/preferences/built-in/ethernet-hubs/ethernet-hubs-add-template/ethernet-hubs-add-template.component';
import { EthernetHubsTemplateDetailsComponent } from './components/preferences/built-in/ethernet-hubs/ethernet-hubs-template-details/ethernet-hubs-template-details.component';
import { EthernetHubsTemplatesComponent } from './components/preferences/built-in/ethernet-hubs/ethernet-hubs-templates/ethernet-hubs-templates.component';
import { EthernetSwitchesAddTemplateComponent } from './components/preferences/built-in/ethernet-switches/ethernet-switches-add-template/ethernet-switches-add-template.component';
import { EthernetSwitchesTemplateDetailsComponent } from './components/preferences/built-in/ethernet-switches/ethernet-switches-template-details/ethernet-switches-template-details.component';
import { EthernetSwitchesTemplatesComponent } from './components/preferences/built-in/ethernet-switches/ethernet-switches-templates/ethernet-switches-templates.component';
import { AddDockerTemplateComponent } from './components/preferences/docker/add-docker-template/add-docker-template.component';
import { CopyDockerTemplateComponent } from './components/preferences/docker/copy-docker-template/copy-docker-template.component';
import { DockerTemplateDetailsComponent } from './components/preferences/docker/docker-template-details/docker-template-details.component';
import { DockerTemplatesComponent } from './components/preferences/docker/docker-templates/docker-templates.component';
import { AddIosTemplateComponent } from './components/preferences/dynamips/add-ios-template/add-ios-template.component';
import { CopyIosTemplateComponent } from './components/preferences/dynamips/copy-ios-template/copy-ios-template.component';
import { IosTemplateDetailsComponent } from './components/preferences/dynamips/ios-template-details/ios-template-details.component';
import { IosTemplatesComponent } from './components/preferences/dynamips/ios-templates/ios-templates.component';
import { AddIouTemplateComponent } from './components/preferences/ios-on-unix/add-iou-template/add-iou-template.component';
import { CopyIouTemplateComponent } from './components/preferences/ios-on-unix/copy-iou-template/copy-iou-template.component';
import { IouTemplateDetailsComponent } from './components/preferences/ios-on-unix/iou-template-details/iou-template-details.component';
import { IouTemplatesComponent } from './components/preferences/ios-on-unix/iou-templates/iou-templates.component';
import { PreferencesComponent } from './components/preferences/preferences.component';
import { AddQemuVmTemplateComponent } from './components/preferences/qemu/add-qemu-vm-template/add-qemu-vm-template.component';
import { CopyQemuVmTemplateComponent } from './components/preferences/qemu/copy-qemu-vm-template/copy-qemu-vm-template.component';
import { QemuVmTemplateDetailsComponent } from './components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component';
import { QemuVmTemplatesComponent } from './components/preferences/qemu/qemu-vm-templates/qemu-vm-templates.component';
import { AddVirtualBoxTemplateComponent } from './components/preferences/virtual-box/add-virtual-box-template/add-virtual-box-template.component';
import { VirtualBoxTemplateDetailsComponent } from './components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component';
import { VirtualBoxTemplatesComponent } from './components/preferences/virtual-box/virtual-box-templates/virtual-box-templates.component';
import { AddVmwareTemplateComponent } from './components/preferences/vmware/add-vmware-template/add-vmware-template.component';
import { VmwareTemplateDetailsComponent } from './components/preferences/vmware/vmware-template-details/vmware-template-details.component';
import { VmwareTemplatesComponent } from './components/preferences/vmware/vmware-templates/vmware-templates.component';
import { AddVpcsTemplateComponent } from './components/preferences/vpcs/add-vpcs-template/add-vpcs-template.component';
import { VpcsTemplateDetailsComponent } from './components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component';
import { VpcsTemplatesComponent } from './components/preferences/vpcs/vpcs-templates/vpcs-templates.component';
import { ProjectMapComponent } from './components/project-map/project-map.component';
import { ProjectsComponent } from './components/projects/projects.component';
import { ControllersComponent } from './components/controllers/controllers.component';
import { ConsoleComponent } from './components/settings/console/console.component';
import { SettingsComponent } from './components/settings/settings.component';
import { ListOfSnapshotsComponent } from './components/snapshots/list-of-snapshots/list-of-snapshots.component';
import { SystemStatusComponent } from './components/system-status/system-status.component';
import { WebConsoleFullWindowComponent } from './components/web-console-full-window/web-console-full-window.component';
import { BundledControllerFinderComponent } from '@components/bundled-controller-finder/bundled-controller-finder.component';
import { DirectLinkComponent } from '@components/direct-link/direct-link.component';
import { HelpComponent } from '@components/help/help.component';
import { InstalledSoftwareComponent } from '@components/installed-software/installed-software.component';
import { LoginComponent } from '@components/login/login.component';
import { PageNotFoundComponent } from '@components/page-not-found/page-not-found.component';
import { BuiltInPreferencesComponent } from '@components/preferences/built-in/built-in-preferences.component';
import { CloudNodesAddTemplateComponent } from '@components/preferences/built-in/cloud-nodes/cloud-nodes-add-template/cloud-nodes-add-template.component';
import { CloudNodesTemplateDetailsComponent } from '@components/preferences/built-in/cloud-nodes/cloud-nodes-template-details/cloud-nodes-template-details.component';
import { CloudNodesTemplatesComponent } from '@components/preferences/built-in/cloud-nodes/cloud-nodes-templates/cloud-nodes-templates.component';
import { EthernetHubsAddTemplateComponent } from '@components/preferences/built-in/ethernet-hubs/ethernet-hubs-add-template/ethernet-hubs-add-template.component';
import { EthernetHubsTemplateDetailsComponent } from '@components/preferences/built-in/ethernet-hubs/ethernet-hubs-template-details/ethernet-hubs-template-details.component';
import { EthernetHubsTemplatesComponent } from '@components/preferences/built-in/ethernet-hubs/ethernet-hubs-templates/ethernet-hubs-templates.component';
import { EthernetSwitchesAddTemplateComponent } from '@components/preferences/built-in/ethernet-switches/ethernet-switches-add-template/ethernet-switches-add-template.component';
import { EthernetSwitchesTemplateDetailsComponent } from '@components/preferences/built-in/ethernet-switches/ethernet-switches-template-details/ethernet-switches-template-details.component';
import { EthernetSwitchesTemplatesComponent } from '@components/preferences/built-in/ethernet-switches/ethernet-switches-templates/ethernet-switches-templates.component';
import { AddDockerTemplateComponent } from '@components/preferences/docker/add-docker-template/add-docker-template.component';
import { CopyDockerTemplateComponent } from '@components/preferences/docker/copy-docker-template/copy-docker-template.component';
import { DockerTemplateDetailsComponent } from '@components/preferences/docker/docker-template-details/docker-template-details.component';
import { DockerTemplatesComponent } from '@components/preferences/docker/docker-templates/docker-templates.component';
import { AddIosTemplateComponent } from '@components/preferences/dynamips/add-ios-template/add-ios-template.component';
import { CopyIosTemplateComponent } from '@components/preferences/dynamips/copy-ios-template/copy-ios-template.component';
import { IosTemplateDetailsComponent } from '@components/preferences/dynamips/ios-template-details/ios-template-details.component';
import { IosTemplatesComponent } from '@components/preferences/dynamips/ios-templates/ios-templates.component';
import { AddIouTemplateComponent } from '@components/preferences/ios-on-unix/add-iou-template/add-iou-template.component';
import { CopyIouTemplateComponent } from '@components/preferences/ios-on-unix/copy-iou-template/copy-iou-template.component';
import { IouTemplateDetailsComponent } from '@components/preferences/ios-on-unix/iou-template-details/iou-template-details.component';
import { IouTemplatesComponent } from '@components/preferences/ios-on-unix/iou-templates/iou-templates.component';
import { PreferencesComponent } from '@components/preferences/preferences.component';
import { AddQemuVmTemplateComponent } from '@components/preferences/qemu/add-qemu-vm-template/add-qemu-vm-template.component';
import { CopyQemuVmTemplateComponent } from '@components/preferences/qemu/copy-qemu-vm-template/copy-qemu-vm-template.component';
import { QemuVmTemplateDetailsComponent } from '@components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component';
import { QemuVmTemplatesComponent } from '@components/preferences/qemu/qemu-vm-templates/qemu-vm-templates.component';
import { AddVirtualBoxTemplateComponent } from '@components/preferences/virtual-box/add-virtual-box-template/add-virtual-box-template.component';
import { VirtualBoxTemplateDetailsComponent } from '@components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component';
import { VirtualBoxTemplatesComponent } from '@components/preferences/virtual-box/virtual-box-templates/virtual-box-templates.component';
import { AddVmwareTemplateComponent } from '@components/preferences/vmware/add-vmware-template/add-vmware-template.component';
import { VmwareTemplateDetailsComponent } from '@components/preferences/vmware/vmware-template-details/vmware-template-details.component';
import { VmwareTemplatesComponent } from '@components/preferences/vmware/vmware-templates/vmware-templates.component';
import { AddVpcsTemplateComponent } from '@components/preferences/vpcs/add-vpcs-template/add-vpcs-template.component';
import { VpcsTemplateDetailsComponent } from '@components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component';
import { VpcsTemplatesComponent } from '@components/preferences/vpcs/vpcs-templates/vpcs-templates.component';
import { ProjectMapComponent } from '@components/project-map/project-map.component';
import { ProjectsComponent } from '@components/projects/projects.component';
import { ControllersComponent } from '@components/controllers/controllers.component';
import { ConsoleComponent } from '@components/settings/console/console.component';
import { SettingsComponent } from '@components/settings/settings.component';
import { ListOfSnapshotsComponent } from '@components/snapshots/list-of-snapshots/list-of-snapshots.component';
import { SystemStatusComponent } from '@components/system-status/system-status.component';
import { WebConsoleFullWindowComponent } from '@components/web-console-full-window/web-console-full-window.component';
import { ConsoleGuard } from './guards/console-guard';
import { LoginGuard } from './guards/login-guard';
import { DefaultLayoutComponent } from './layouts/default-layout/default-layout.component';
import { ControllerResolve } from './resolvers/controller-resolve';
import { UserManagementComponent } from './components/user-management/user-management.component';
import { LoggedUserComponent } from './components/users/logged-user/logged-user.component';
import { ImageManagerComponent } from './components/image-manager/image-manager.component';
import { UserDetailComponent } from "./components/user-management/user-detail/user-detail.component";
import { UserDetailResolver } from "./resolvers/user-detail.resolver";
import { ManagementComponent } from "./components/management/management.component";
import { PermissionResolver } from "./resolvers/permission.resolver";
import { UserGroupsResolver } from "./resolvers/user-groups.resolver";
import { UserPermissionsResolver } from "./resolvers/user-permissions.resolver";
import { GroupManagementComponent } from "./components/group-management/group-management.component";
import { RoleManagementComponent } from "./components/role-management/role-management.component";
import { PermissionsManagementComponent } from "./components/permissions-management/permissions-management.component";
import { GroupDetailsComponent } from "./components/group-details/group-details.component";
import { GroupMembersResolver } from "./resolvers/group-members.resolver";
import { GroupResolver } from "./resolvers/group.resolver";
import { GroupRoleResolver } from "./resolvers/group-role.resolver";
import { RoleDetailComponent } from "./components/role-management/role-detail/role-detail.component";
import { RoleDetailResolver } from "./resolvers/role-detail.resolver";
import { RolePermissionsComponent } from "./components/role-management/role-detail/role-permissions/role-permissions.component";
import { UserPermissionsComponent } from "./components/user-management/user-detail/user-permissions/user-permissions.component";
import { ControllerResolve } from '@resolvers/controller-resolve';
import { UserManagementComponent } from '@components/user-management/user-management.component';
import { LoggedUserComponent } from '@components/users/logged-user/logged-user.component';
import { ImageManagerComponent } from '@components/image-manager/image-manager.component';
import { UserDetailComponent } from "@components/user-management/user-detail/user-detail.component";
import { UserDetailResolver } from "@resolvers/user-detail.resolver";
import { ManagementComponent } from "@components/management/management.component";
import { UserGroupsResolver } from "@resolvers/user-groups.resolver";
import { GroupManagementComponent } from "@components/group-management/group-management.component";
import { RoleManagementComponent } from "@components/role-management/role-management.component";
import { GroupDetailsComponent } from "@components/group-details/group-details.component";
import { GroupMembersResolver } from "@resolvers/group-members.resolver";
import { GroupResolver } from "@resolvers/group.resolver";
import { GroupRoleResolver } from "@resolvers/group-role.resolver";
import { RoleDetailComponent } from "@components/role-management/role-detail/role-detail.component";
import { RoleDetailResolver } from "@resolvers/role-detail.resolver";
import { AclManagementComponent } from "@components/acl-management/acl-management.component";
import { ResourcePoolsManagementComponent } from "@components/resource-pools-management/resource-pools-management.component";
import { ResourcePoolDetailsComponent } from "@components/resource-pool-details/resource-pool-details.component";
import { ResourcePoolsResolver } from "@resolvers/resource-pools.resolver";
import { GroupAcesResolver } from "@resolvers/group-ace.resolver.ts.resolver";
import { UserAcesResolver } from "@resolvers/user-aces.resolver";
const routes: Routes = [
{
@ -85,7 +86,7 @@ const routes: Routes = [
{ path: 'bundled', component: BundledControllerFinderComponent },
{ path: 'controller/:controller_id/login', component: LoginComponent },
{ path: 'controller/:controller_id/loggeduser', component: LoggedUserComponent },
{path : 'controller/:controller_id/image-manager', component: ImageManagerComponent},
{ path : 'controller/:controller_id/image-manager', component: ImageManagerComponent},
{
path: 'controller/:controller_id/projects',
component: ProjectsComponent,
@ -102,9 +103,18 @@ const routes: Routes = [
resolve: {
user: UserDetailResolver,
groups: UserGroupsResolver,
permissions: UserPermissionsResolver,
aces: UserAcesResolver,
controller: ControllerResolve},
},
{
path: 'controller/:controller_id/management/pools/:pool_id',
component: ResourcePoolDetailsComponent,
canActivate: [LoginGuard],
resolve: {
pool: ResourcePoolsResolver,
controller: ControllerResolve
}
},
{ path: 'installed-software', component: InstalledSoftwareComponent },
{ path: 'controller/:controller_id/systemstatus', component: SystemStatusComponent, canActivate: [LoginGuard] },
@ -239,8 +249,12 @@ const routes: Routes = [
component: RoleManagementComponent
},
{
path: 'permissions',
component: PermissionsManagementComponent
path: "pools",
component: ResourcePoolsManagementComponent
},
{
path: 'ACL',
component: AclManagementComponent
}
]
},
@ -251,7 +265,7 @@ const routes: Routes = [
members: GroupMembersResolver,
controller: ControllerResolve,
group: GroupResolver,
roles: GroupRoleResolver
aces: GroupAcesResolver
}
},
{
@ -262,25 +276,6 @@ const routes: Routes = [
controller: ControllerResolve
}
},
{
path: 'controller/:controller_id/management/roles/:role_id/permissions',
component: RolePermissionsComponent,
resolve: {
role: RoleDetailResolver,
controller: ControllerResolve,
permissions: PermissionResolver
}
},
{
path: 'controller/:controller_id/management/users/:user_id/permissions',
component: UserPermissionsComponent,
resolve: {
user: UserDetailResolver,
userPermissions: UserPermissionsResolver,
controller: ControllerResolve,
permissions: PermissionResolver
}
}
],
},
{

View File

@ -1,4 +1,4 @@
<div [ngClass]="{ dark: darkThemeEnabled, light: !darkThemeEnabled }">
<router-outlet></router-outlet>
<app-adbutler></app-adbutler>
<!-- <app-adbutler></app-adbutler> -->
</div>

View File

@ -5,7 +5,7 @@ import { RouterTestingModule } from '@angular/router/testing';
import { ElectronService, NgxElectronModule } from 'ngx-electron';
import { AppComponent } from './app.component';
import { ProgressService } from './common/progress/progress.service';
import { SettingsService } from './services/settings.service';
import { SettingsService } from '@services/settings.service';
import createSpyObj = jasmine.createSpyObj;
// import 'jasmine';

View File

@ -5,8 +5,8 @@ import { DomSanitizer } from '@angular/platform-browser';
import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';
import { ElectronService } from 'ngx-electron';
import { ProgressService } from './common/progress/progress.service';
import { SettingsService } from './services/settings.service';
import { ThemeService } from './services/theme.service';
import { SettingsService } from '@services/settings.service';
import { ThemeService } from '@services/theme.service';
@Component({
selector: 'app-root',

View File

@ -29,301 +29,307 @@ import { ProgressDialogComponent } from './common/progress-dialog/progress-dialo
import { ProgressDialogService } from './common/progress-dialog/progress-dialog.service';
import { ProgressComponent } from './common/progress/progress.component';
import { ProgressService } from './common/progress/progress.service';
import { AdbutlerComponent } from './components/adbutler/adbutler.component';
import { BundledControllerFinderComponent } from './components/bundled-controller-finder/bundled-controller-finder.component';
import { InformationDialogComponent } from './components/dialogs/information-dialog.component';
import { DirectLinkComponent } from './components/direct-link/direct-link.component';
import { DrawingAddedComponent } from './components/drawings-listeners/drawing-added/drawing-added.component';
import { DrawingDraggedComponent } from './components/drawings-listeners/drawing-dragged/drawing-dragged.component';
import { DrawingResizedComponent } from './components/drawings-listeners/drawing-resized/drawing-resized.component';
import { InterfaceLabelDraggedComponent } from './components/drawings-listeners/interface-label-dragged/interface-label-dragged.component';
import { LinkCreatedComponent } from './components/drawings-listeners/link-created/link-created.component';
import { NodeDraggedComponent } from './components/drawings-listeners/node-dragged/node-dragged.component';
import { NodeLabelDraggedComponent } from './components/drawings-listeners/node-label-dragged/node-label-dragged.component';
import { TextAddedComponent } from './components/drawings-listeners/text-added/text-added.component';
import { TextEditedComponent } from './components/drawings-listeners/text-edited/text-edited.component';
import { HelpComponent } from './components/help/help.component';
import { InstallSoftwareComponent } from './components/installed-software/install-software/install-software.component';
import { InstalledSoftwareComponent } from './components/installed-software/installed-software.component';
import { PageNotFoundComponent } from './components/page-not-found/page-not-found.component';
import { BuiltInPreferencesComponent } from './components/preferences/built-in/built-in-preferences.component';
import { CloudNodesAddTemplateComponent } from './components/preferences/built-in/cloud-nodes/cloud-nodes-add-template/cloud-nodes-add-template.component';
import { CloudNodesTemplateDetailsComponent } from './components/preferences/built-in/cloud-nodes/cloud-nodes-template-details/cloud-nodes-template-details.component';
import { CloudNodesTemplatesComponent } from './components/preferences/built-in/cloud-nodes/cloud-nodes-templates/cloud-nodes-templates.component';
import { EthernetHubsAddTemplateComponent } from './components/preferences/built-in/ethernet-hubs/ethernet-hubs-add-template/ethernet-hubs-add-template.component';
import { EthernetHubsTemplateDetailsComponent } from './components/preferences/built-in/ethernet-hubs/ethernet-hubs-template-details/ethernet-hubs-template-details.component';
import { EthernetHubsTemplatesComponent } from './components/preferences/built-in/ethernet-hubs/ethernet-hubs-templates/ethernet-hubs-templates.component';
import { EthernetSwitchesAddTemplateComponent } from './components/preferences/built-in/ethernet-switches/ethernet-switches-add-template/ethernet-switches-add-template.component';
import { EthernetSwitchesTemplateDetailsComponent } from './components/preferences/built-in/ethernet-switches/ethernet-switches-template-details/ethernet-switches-template-details.component';
import { EthernetSwitchesTemplatesComponent } from './components/preferences/built-in/ethernet-switches/ethernet-switches-templates/ethernet-switches-templates.component';
import { CustomAdaptersTableComponent } from './components/preferences/common/custom-adapters-table/custom-adapters-table.component';
import { CustomAdaptersComponent } from './components/preferences/common/custom-adapters/custom-adapters.component';
import { DeleteConfirmationDialogComponent } from './components/preferences/common/delete-confirmation-dialog/delete-confirmation-dialog.component';
import { DeleteTemplateComponent } from './components/preferences/common/delete-template-component/delete-template.component';
import { EmptyTemplatesListComponent } from './components/preferences/common/empty-templates-list/empty-templates-list.component';
import { PortsComponent } from './components/preferences/common/ports/ports.component';
import { SymbolsMenuComponent } from './components/preferences/common/symbols-menu/symbols-menu.component';
import { SymbolsComponent } from './components/preferences/common/symbols/symbols.component';
import { UdpTunnelsComponent } from './components/preferences/common/udp-tunnels/udp-tunnels.component';
import { AddDockerTemplateComponent } from './components/preferences/docker/add-docker-template/add-docker-template.component';
import { CopyDockerTemplateComponent } from './components/preferences/docker/copy-docker-template/copy-docker-template.component';
import { DockerTemplateDetailsComponent } from './components/preferences/docker/docker-template-details/docker-template-details.component';
import { DockerTemplatesComponent } from './components/preferences/docker/docker-templates/docker-templates.component';
import { AddIosTemplateComponent } from './components/preferences/dynamips/add-ios-template/add-ios-template.component';
import { CopyIosTemplateComponent } from './components/preferences/dynamips/copy-ios-template/copy-ios-template.component';
import { DynamipsPreferencesComponent } from './components/preferences/dynamips/dynamips-preferences/dynamips-preferences.component';
import { IosTemplateDetailsComponent } from './components/preferences/dynamips/ios-template-details/ios-template-details.component';
import { IosTemplatesComponent } from './components/preferences/dynamips/ios-templates/ios-templates.component';
import { GeneralPreferencesComponent } from './components/preferences/general/general-preferences.component';
import { AddIouTemplateComponent } from './components/preferences/ios-on-unix/add-iou-template/add-iou-template.component';
import { CopyIouTemplateComponent } from './components/preferences/ios-on-unix/copy-iou-template/copy-iou-template.component';
import { IouTemplateDetailsComponent } from './components/preferences/ios-on-unix/iou-template-details/iou-template-details.component';
import { IouTemplatesComponent } from './components/preferences/ios-on-unix/iou-templates/iou-templates.component';
import { PreferencesComponent } from './components/preferences/preferences.component';
import { AddQemuVmTemplateComponent } from './components/preferences/qemu/add-qemu-vm-template/add-qemu-vm-template.component';
import { CopyQemuVmTemplateComponent } from './components/preferences/qemu/copy-qemu-vm-template/copy-qemu-vm-template.component';
import { QemuPreferencesComponent } from './components/preferences/qemu/qemu-preferences/qemu-preferences.component';
import { QemuVmTemplateDetailsComponent } from './components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component';
import { QemuVmTemplatesComponent } from './components/preferences/qemu/qemu-vm-templates/qemu-vm-templates.component';
import { AddVirtualBoxTemplateComponent } from './components/preferences/virtual-box/add-virtual-box-template/add-virtual-box-template.component';
import { VirtualBoxPreferencesComponent } from './components/preferences/virtual-box/virtual-box-preferences/virtual-box-preferences.component';
import { VirtualBoxTemplateDetailsComponent } from './components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component';
import { VirtualBoxTemplatesComponent } from './components/preferences/virtual-box/virtual-box-templates/virtual-box-templates.component';
import { AddVmwareTemplateComponent } from './components/preferences/vmware/add-vmware-template/add-vmware-template.component';
import { VmwarePreferencesComponent } from './components/preferences/vmware/vmware-preferences/vmware-preferences.component';
import { VmwareTemplateDetailsComponent } from './components/preferences/vmware/vmware-template-details/vmware-template-details.component';
import { VmwareTemplatesComponent } from './components/preferences/vmware/vmware-templates/vmware-templates.component';
import { AddVpcsTemplateComponent } from './components/preferences/vpcs/add-vpcs-template/add-vpcs-template.component';
import { VpcsPreferencesComponent } from './components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component';
import { VpcsTemplateDetailsComponent } from './components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component';
import { VpcsTemplatesComponent } from './components/preferences/vpcs/vpcs-templates/vpcs-templates.component';
import { ChangeHostnameDialogComponent } from './components/project-map/change-hostname-dialog/change-hostname-dialog.component';
import { ChangeSymbolDialogComponent } from './components/project-map/change-symbol-dialog/change-symbol-dialog.component';
import { ConsoleWrapperComponent } from './components/project-map/console-wrapper/console-wrapper.component';
import { ContextConsoleMenuComponent } from './components/project-map/context-console-menu/context-console-menu.component';
import { AlignHorizontallyActionComponent } from './components/project-map/context-menu/actions/align-horizontally/align-horizontally.component';
import { AlignVerticallyActionComponent } from './components/project-map/context-menu/actions/align_vertically/align-vertically.component';
import { BringToFrontActionComponent } from './components/project-map/context-menu/actions/bring-to-front-action/bring-to-front-action.component';
import { ChangeHostnameActionComponent } from './components/project-map/context-menu/actions/change-hostname/change-hostname-action.component';
import { ChangeSymbolActionComponent } from './components/project-map/context-menu/actions/change-symbol/change-symbol-action.component';
import { ConfigActionComponent } from './components/project-map/context-menu/actions/config-action/config-action.component';
import { ConsoleDeviceActionBrowserComponent } from './components/project-map/context-menu/actions/console-device-action-browser/console-device-action-browser.component';
import { ConsoleDeviceActionComponent } from './components/project-map/context-menu/actions/console-device-action/console-device-action.component';
import { DeleteActionComponent } from './components/project-map/context-menu/actions/delete-action/delete-action.component';
import { DuplicateActionComponent } from './components/project-map/context-menu/actions/duplicate-action/duplicate-action.component';
import { EditConfigActionComponent } from './components/project-map/context-menu/actions/edit-config/edit-config-action.component';
import { EditStyleActionComponent } from './components/project-map/context-menu/actions/edit-style-action/edit-style-action.component';
import { EditLinkStyleActionComponent } from './components/project-map/context-menu/actions/edit-link-style-action/edit-link-style-action.component';
import { EditTextActionComponent } from './components/project-map/context-menu/actions/edit-text-action/edit-text-action.component';
import { ExportConfigActionComponent } from './components/project-map/context-menu/actions/export-config/export-config-action.component';
import { HttpConsoleNewTabActionComponent } from './components/project-map/context-menu/actions/http-console-new-tab/http-console-new-tab-action.component';
import { HttpConsoleActionComponent } from './components/project-map/context-menu/actions/http-console/http-console-action.component';
import { ImportConfigActionComponent } from './components/project-map/context-menu/actions/import-config/import-config-action.component';
import { LockActionComponent } from './components/project-map/context-menu/actions/lock-action/lock-action.component';
import { MoveLayerDownActionComponent } from './components/project-map/context-menu/actions/move-layer-down-action/move-layer-down-action.component';
import { MoveLayerUpActionComponent } from './components/project-map/context-menu/actions/move-layer-up-action/move-layer-up-action.component';
import { OpenFileExplorerActionComponent } from './components/project-map/context-menu/actions/open-file-explorer/open-file-explorer-action.component';
import { PacketFiltersActionComponent } from './components/project-map/context-menu/actions/packet-filters-action/packet-filters-action.component';
import { ReloadNodeActionComponent } from './components/project-map/context-menu/actions/reload-node-action/reload-node-action.component';
import { ResumeLinkActionComponent } from './components/project-map/context-menu/actions/resume-link-action/resume-link-action.component';
import { ShowNodeActionComponent } from './components/project-map/context-menu/actions/show-node-action/show-node-action.component';
import { StartCaptureOnStartedLinkActionComponent } from './components/project-map/context-menu/actions/start-capture-on-started-link/start-capture-on-started-link.component';
import { StartCaptureActionComponent } from './components/project-map/context-menu/actions/start-capture/start-capture-action.component';
import { StartNodeActionComponent } from './components/project-map/context-menu/actions/start-node-action/start-node-action.component';
import { StopCaptureActionComponent } from './components/project-map/context-menu/actions/stop-capture/stop-capture-action.component';
import { IsolateNodeActionComponent } from './components/project-map/context-menu/actions/isolate-node-action/isolate-node-action.component';
import { UnisolateNodeActionComponent } from './components/project-map/context-menu/actions/unisolate-node-action/unisolate-node-action.component';
import {StopNodeActionComponent } from './components/project-map/context-menu/actions/stop-node-action/stop-node-action.component';
import { SuspendLinkActionComponent } from './components/project-map/context-menu/actions/suspend-link/suspend-link-action.component';
import { SuspendNodeActionComponent } from './components/project-map/context-menu/actions/suspend-node-action/suspend-node-action.component';
import { ContextMenuComponent } from './components/project-map/context-menu/context-menu.component';
import { ConfigDialogComponent } from './components/project-map/context-menu/dialogs/config-dialog/config-dialog.component';
import { DrawLinkToolComponent } from './components/project-map/draw-link-tool/draw-link-tool.component';
import { StyleEditorDialogComponent } from './components/project-map/drawings-editors/style-editor/style-editor.component';
import { LinkStyleEditorDialogComponent } from './components/project-map/drawings-editors/link-style-editor/link-style-editor.component';
import { TextEditorDialogComponent } from './components/project-map/drawings-editors/text-editor/text-editor.component';
import { HelpDialogComponent } from './components/project-map/help-dialog/help-dialog.component';
import { NodeCreatedLabelStylesFixer } from './components/project-map/helpers/node-created-label-styles-fixer';
import { ImportApplianceComponent } from './components/project-map/import-appliance/import-appliance.component';
import { InfoDialogComponent } from './components/project-map/info-dialog/info-dialog.component';
import { LogConsoleComponent } from './components/project-map/log-console/log-console.component';
import { LogEventsDataSource } from './components/project-map/log-console/log-events-datasource';
import { ApplianceInfoDialogComponent } from './components/project-map/new-template-dialog/appliance-info-dialog/appliance-info-dialog.component';
import { NewTemplateDialogComponent } from './components/project-map/new-template-dialog/new-template-dialog.component';
import { TemplateNameDialogComponent } from './components/project-map/new-template-dialog/template-name-dialog/template-name-dialog.component';
import { ConfigEditorDialogComponent } from './components/project-map/node-editors/config-editor/config-editor.component';
import { ConfiguratorDialogAtmSwitchComponent } from './components/project-map/node-editors/configurator/atm_switch/configurator-atm-switch.component';
import { ConfiguratorDialogCloudComponent } from './components/project-map/node-editors/configurator/cloud/configurator-cloud.component';
import { ConfiguratorDialogDockerComponent } from './components/project-map/node-editors/configurator/docker/configurator-docker.component';
import { ConfigureCustomAdaptersDialogComponent } from './components/project-map/node-editors/configurator/docker/configure-custom-adapters/configure-custom-adapters.component';
import { EditNetworkConfigurationDialogComponent } from './components/project-map/node-editors/configurator/docker/edit-network-configuration/edit-network-configuration.component';
import { ConfiguratorDialogEthernetSwitchComponent } from './components/project-map/node-editors/configurator/ethernet-switch/configurator-ethernet-switch.component';
import { ConfiguratorDialogEthernetHubComponent } from './components/project-map/node-editors/configurator/ethernet_hub/configurator-ethernet-hub.component';
import { ConfiguratorDialogIosComponent } from './components/project-map/node-editors/configurator/ios/configurator-ios.component';
import { ConfiguratorDialogIouComponent } from './components/project-map/node-editors/configurator/iou/configurator-iou.component';
import { ConfiguratorDialogNatComponent } from './components/project-map/node-editors/configurator/nat/configurator-nat.component';
import { ConfiguratorDialogQemuComponent } from './components/project-map/node-editors/configurator/qemu/configurator-qemu.component';
import { QemuImageCreatorComponent } from './components/project-map/node-editors/configurator/qemu/qemu-image-creator/qemu-image-creator.component';
import { ConfiguratorDialogSwitchComponent } from './components/project-map/node-editors/configurator/switch/configurator-switch.component';
import { ConfiguratorDialogVirtualBoxComponent } from './components/project-map/node-editors/configurator/virtualbox/configurator-virtualbox.component';
import { ConfiguratorDialogVmwareComponent } from './components/project-map/node-editors/configurator/vmware/configurator-vmware.component';
import { ConfiguratorDialogVpcsComponent } from './components/project-map/node-editors/configurator/vpcs/configurator-vpcs.component';
import { NodeSelectInterfaceComponent } from './components/project-map/node-select-interface/node-select-interface.component';
import { NodesMenuComponent } from './components/project-map/nodes-menu/nodes-menu.component';
import { PacketFiltersDialogComponent } from './components/project-map/packet-capturing/packet-filters/packet-filters.component';
import { StartCaptureDialogComponent } from './components/project-map/packet-capturing/start-capture/start-capture.component';
import { ProjectMapMenuComponent } from './components/project-map/project-map-menu/project-map-menu.component';
import { ProjectMapComponent } from './components/project-map/project-map.component';
import { ProjectReadmeComponent } from './components/project-map/project-readme/project-readme.component';
import { ScreenshotDialogComponent } from './components/project-map/screenshot-dialog/screenshot-dialog.component';
import { WebConsoleComponent } from './components/project-map/web-console/web-console.component';
import { AddBlankProjectDialogComponent } from './components/projects/add-blank-project-dialog/add-blank-project-dialog.component';
import { ChooseNameDialogComponent } from './components/projects/choose-name-dialog/choose-name-dialog.component';
import { ConfirmationBottomSheetComponent } from './components/projects/confirmation-bottomsheet/confirmation-bottomsheet.component';
import { ConfirmationDialogComponent } from './components/projects/confirmation-dialog/confirmation-dialog.component';
import { EditProjectDialogComponent } from './components/projects/edit-project-dialog/edit-project-dialog.component';
import { ReadmeEditorComponent } from './components/projects/edit-project-dialog/readme-editor/readme-editor.component';
import { ImportProjectDialogComponent } from './components/projects/import-project-dialog/import-project-dialog.component';
import { ProjectNameValidator } from './components/projects/models/projectNameValidator';
import { NavigationDialogComponent } from './components/projects/navigation-dialog/navigation-dialog.component';
import { ProjectsComponent } from './components/projects/projects.component';
import { SaveProjectDialogComponent } from './components/projects/save-project-dialog/save-project-dialog.component';
import { AddControllerDialogComponent } from './components/controllers/add-controller-dialog/add-controller-dialog.component';
import { ControllerDiscoveryComponent } from './components/controllers/controller-discovery/controller-discovery.component';
import { ControllersComponent } from './components/controllers/controllers.component';
import { ConsoleComponent } from './components/settings/console/console.component';
import { SettingsComponent } from './components/settings/settings.component';
import { CreateSnapshotDialogComponent } from './components/snapshots/create-snapshot-dialog/create-snapshot-dialog.component';
import { ListOfSnapshotsComponent } from './components/snapshots/list-of-snapshots/list-of-snapshots.component';
import { SnapshotMenuItemComponent } from './components/snapshots/snapshot-menu-item/snapshot-menu-item.component';
import { StatusChartComponent } from './components/system-status/status-chart/status-chart.component';
import { StatusInfoComponent } from './components/system-status/status-info/status-info.component';
import { SystemStatusComponent } from './components/system-status/system-status.component';
import { TemplateListDialogComponent } from './components/template/template-list-dialog/template-list-dialog.component';
import { TemplateComponent } from './components/template/template.component';
import { TopologySummaryComponent } from './components/topology-summary/topology-summary.component';
import { WebConsoleFullWindowComponent } from './components/web-console-full-window/web-console-full-window.component';
import { DataSourceFilter } from './filters/dataSourceFilter';
import { AuthImageFilter } from './filters/authImageFilter';
import { DateFilter } from './filters/dateFilter.pipe';
import { NameFilter } from './filters/nameFilter.pipe';
import { ProjectsFilter } from './filters/projectsFilter.pipe';
import { SearchFilter } from './filters/searchFilter.pipe';
import { TemplateFilter } from './filters/templateFilter.pipe';
import { AdbutlerComponent } from '@components/adbutler/adbutler.component';
import { BundledControllerFinderComponent } from '@components/bundled-controller-finder/bundled-controller-finder.component';
import { InformationDialogComponent } from '@components/dialogs/information-dialog/information-dialog.component';
import { QuestionDialogComponent } from "@components/dialogs/question-dialog/question-dialog.component";
import { DirectLinkComponent } from '@components/direct-link/direct-link.component';
import { DrawingAddedComponent } from '@components/drawings-listeners/drawing-added/drawing-added.component';
import { DrawingDraggedComponent } from '@components/drawings-listeners/drawing-dragged/drawing-dragged.component';
import { DrawingResizedComponent } from '@components/drawings-listeners/drawing-resized/drawing-resized.component';
import { InterfaceLabelDraggedComponent } from '@components/drawings-listeners/interface-label-dragged/interface-label-dragged.component';
import { LinkCreatedComponent } from '@components/drawings-listeners/link-created/link-created.component';
import { NodeDraggedComponent } from '@components/drawings-listeners/node-dragged/node-dragged.component';
import { NodeLabelDraggedComponent } from '@components/drawings-listeners/node-label-dragged/node-label-dragged.component';
import { TextAddedComponent } from '@components/drawings-listeners/text-added/text-added.component';
import { TextEditedComponent } from '@components/drawings-listeners/text-edited/text-edited.component';
import { HelpComponent } from '@components/help/help.component';
import { InstallSoftwareComponent } from '@components/installed-software/install-software/install-software.component';
import { InstalledSoftwareComponent } from '@components/installed-software/installed-software.component';
import { PageNotFoundComponent } from '@components/page-not-found/page-not-found.component';
import { BuiltInPreferencesComponent } from '@components/preferences/built-in/built-in-preferences.component';
import { CloudNodesAddTemplateComponent } from '@components/preferences/built-in/cloud-nodes/cloud-nodes-add-template/cloud-nodes-add-template.component';
import { CloudNodesTemplateDetailsComponent } from '@components/preferences/built-in/cloud-nodes/cloud-nodes-template-details/cloud-nodes-template-details.component';
import { CloudNodesTemplatesComponent } from '@components/preferences/built-in/cloud-nodes/cloud-nodes-templates/cloud-nodes-templates.component';
import { EthernetHubsAddTemplateComponent } from '@components/preferences/built-in/ethernet-hubs/ethernet-hubs-add-template/ethernet-hubs-add-template.component';
import { EthernetHubsTemplateDetailsComponent } from '@components/preferences/built-in/ethernet-hubs/ethernet-hubs-template-details/ethernet-hubs-template-details.component';
import { EthernetHubsTemplatesComponent } from '@components/preferences/built-in/ethernet-hubs/ethernet-hubs-templates/ethernet-hubs-templates.component';
import { EthernetSwitchesAddTemplateComponent } from '@components/preferences/built-in/ethernet-switches/ethernet-switches-add-template/ethernet-switches-add-template.component';
import { EthernetSwitchesTemplateDetailsComponent } from '@components/preferences/built-in/ethernet-switches/ethernet-switches-template-details/ethernet-switches-template-details.component';
import { EthernetSwitchesTemplatesComponent } from '@components/preferences/built-in/ethernet-switches/ethernet-switches-templates/ethernet-switches-templates.component';
import { CustomAdaptersTableComponent } from '@components/preferences/common/custom-adapters-table/custom-adapters-table.component';
import { CustomAdaptersComponent } from '@components/preferences/common/custom-adapters/custom-adapters.component';
import { DeleteConfirmationDialogComponent } from '@components/preferences/common/delete-confirmation-dialog/delete-confirmation-dialog.component';
import { DeleteTemplateComponent } from '@components/preferences/common/delete-template-component/delete-template.component';
import { EmptyTemplatesListComponent } from '@components/preferences/common/empty-templates-list/empty-templates-list.component';
import { PortsComponent } from '@components/preferences/common/ports/ports.component';
import { SymbolsMenuComponent } from '@components/preferences/common/symbols-menu/symbols-menu.component';
import { SymbolsComponent } from '@components/preferences/common/symbols/symbols.component';
import { UdpTunnelsComponent } from '@components/preferences/common/udp-tunnels/udp-tunnels.component';
import { AddDockerTemplateComponent } from '@components/preferences/docker/add-docker-template/add-docker-template.component';
import { CopyDockerTemplateComponent } from '@components/preferences/docker/copy-docker-template/copy-docker-template.component';
import { DockerTemplateDetailsComponent } from '@components/preferences/docker/docker-template-details/docker-template-details.component';
import { DockerTemplatesComponent } from '@components/preferences/docker/docker-templates/docker-templates.component';
import { AddIosTemplateComponent } from '@components/preferences/dynamips/add-ios-template/add-ios-template.component';
import { CopyIosTemplateComponent } from '@components/preferences/dynamips/copy-ios-template/copy-ios-template.component';
import { DynamipsPreferencesComponent } from '@components/preferences/dynamips/dynamips-preferences/dynamips-preferences.component';
import { IosTemplateDetailsComponent } from '@components/preferences/dynamips/ios-template-details/ios-template-details.component';
import { IosTemplatesComponent } from '@components/preferences/dynamips/ios-templates/ios-templates.component';
import { GeneralPreferencesComponent } from '@components/preferences/general/general-preferences.component';
import { AddIouTemplateComponent } from '@components/preferences/ios-on-unix/add-iou-template/add-iou-template.component';
import { CopyIouTemplateComponent } from '@components/preferences/ios-on-unix/copy-iou-template/copy-iou-template.component';
import { IouTemplateDetailsComponent } from '@components/preferences/ios-on-unix/iou-template-details/iou-template-details.component';
import { IouTemplatesComponent } from '@components/preferences/ios-on-unix/iou-templates/iou-templates.component';
import { PreferencesComponent } from '@components/preferences/preferences.component';
import { AddQemuVmTemplateComponent } from '@components/preferences/qemu/add-qemu-vm-template/add-qemu-vm-template.component';
import { CopyQemuVmTemplateComponent } from '@components/preferences/qemu/copy-qemu-vm-template/copy-qemu-vm-template.component';
import { QemuPreferencesComponent } from '@components/preferences/qemu/qemu-preferences/qemu-preferences.component';
import { QemuVmTemplateDetailsComponent } from '@components/preferences/qemu/qemu-vm-template-details/qemu-vm-template-details.component';
import { QemuVmTemplatesComponent } from '@components/preferences/qemu/qemu-vm-templates/qemu-vm-templates.component';
import { AddVirtualBoxTemplateComponent } from '@components/preferences/virtual-box/add-virtual-box-template/add-virtual-box-template.component';
import { VirtualBoxPreferencesComponent } from '@components/preferences/virtual-box/virtual-box-preferences/virtual-box-preferences.component';
import { VirtualBoxTemplateDetailsComponent } from '@components/preferences/virtual-box/virtual-box-template-details/virtual-box-template-details.component';
import { VirtualBoxTemplatesComponent } from '@components/preferences/virtual-box/virtual-box-templates/virtual-box-templates.component';
import { AddVmwareTemplateComponent } from '@components/preferences/vmware/add-vmware-template/add-vmware-template.component';
import { VmwarePreferencesComponent } from '@components/preferences/vmware/vmware-preferences/vmware-preferences.component';
import { VmwareTemplateDetailsComponent } from '@components/preferences/vmware/vmware-template-details/vmware-template-details.component';
import { VmwareTemplatesComponent } from '@components/preferences/vmware/vmware-templates/vmware-templates.component';
import { AddVpcsTemplateComponent } from '@components/preferences/vpcs/add-vpcs-template/add-vpcs-template.component';
import { VpcsPreferencesComponent } from '@components/preferences/vpcs/vpcs-preferences/vpcs-preferences.component';
import { VpcsTemplateDetailsComponent } from '@components/preferences/vpcs/vpcs-template-details/vpcs-template-details.component';
import { VpcsTemplatesComponent } from '@components/preferences/vpcs/vpcs-templates/vpcs-templates.component';
import { ChangeHostnameDialogComponent } from '@components/project-map/change-hostname-dialog/change-hostname-dialog.component';
import { ChangeSymbolDialogComponent } from '@components/project-map/change-symbol-dialog/change-symbol-dialog.component';
import { ConsoleWrapperComponent } from '@components/project-map/console-wrapper/console-wrapper.component';
import { ContextConsoleMenuComponent } from '@components/project-map/context-console-menu/context-console-menu.component';
import { AlignHorizontallyActionComponent } from '@components/project-map/context-menu/actions/align-horizontally/align-horizontally.component';
import { AlignVerticallyActionComponent } from '@components/project-map/context-menu/actions/align_vertically/align-vertically.component';
import { BringToFrontActionComponent } from '@components/project-map/context-menu/actions/bring-to-front-action/bring-to-front-action.component';
import { ChangeHostnameActionComponent } from '@components/project-map/context-menu/actions/change-hostname/change-hostname-action.component';
import { ChangeSymbolActionComponent } from '@components/project-map/context-menu/actions/change-symbol/change-symbol-action.component';
import { ConfigActionComponent } from '@components/project-map/context-menu/actions/config-action/config-action.component';
import { ConsoleDeviceActionBrowserComponent } from '@components/project-map/context-menu/actions/console-device-action-browser/console-device-action-browser.component';
import { ConsoleDeviceActionComponent } from '@components/project-map/context-menu/actions/console-device-action/console-device-action.component';
import { DeleteActionComponent } from '@components/project-map/context-menu/actions/delete-action/delete-action.component';
import { DuplicateActionComponent } from '@components/project-map/context-menu/actions/duplicate-action/duplicate-action.component';
import { EditConfigActionComponent } from '@components/project-map/context-menu/actions/edit-config/edit-config-action.component';
import { EditStyleActionComponent } from '@components/project-map/context-menu/actions/edit-style-action/edit-style-action.component';
import { EditLinkStyleActionComponent } from '@components/project-map/context-menu/actions/edit-link-style-action/edit-link-style-action.component';
import { EditTextActionComponent } from '@components/project-map/context-menu/actions/edit-text-action/edit-text-action.component';
import { ExportConfigActionComponent } from '@components/project-map/context-menu/actions/export-config/export-config-action.component';
import { HttpConsoleNewTabActionComponent } from '@components/project-map/context-menu/actions/http-console-new-tab/http-console-new-tab-action.component';
import { HttpConsoleActionComponent } from '@components/project-map/context-menu/actions/http-console/http-console-action.component';
import { IdlePcActionComponent } from "@components/project-map/context-menu/actions/idle-pc-action/idle-pc-action.component";
import { AutoIdlePcActionComponent } from "@components/project-map/context-menu/actions/auto-idle-pc-action/auto-idle-pc-action.component";
import { ImportConfigActionComponent } from '@components/project-map/context-menu/actions/import-config/import-config-action.component';
import { LockActionComponent } from '@components/project-map/context-menu/actions/lock-action/lock-action.component';
import { MoveLayerDownActionComponent } from '@components/project-map/context-menu/actions/move-layer-down-action/move-layer-down-action.component';
import { MoveLayerUpActionComponent } from '@components/project-map/context-menu/actions/move-layer-up-action/move-layer-up-action.component';
import { OpenFileExplorerActionComponent } from '@components/project-map/context-menu/actions/open-file-explorer/open-file-explorer-action.component';
import { PacketFiltersActionComponent } from '@components/project-map/context-menu/actions/packet-filters-action/packet-filters-action.component';
import { ReloadNodeActionComponent } from '@components/project-map/context-menu/actions/reload-node-action/reload-node-action.component';
import { ResumeLinkActionComponent } from '@components/project-map/context-menu/actions/resume-link-action/resume-link-action.component';
import { ShowNodeActionComponent } from '@components/project-map/context-menu/actions/show-node-action/show-node-action.component';
import { StartCaptureOnStartedLinkActionComponent } from '@components/project-map/context-menu/actions/start-capture-on-started-link/start-capture-on-started-link.component';
import { StartCaptureActionComponent } from '@components/project-map/context-menu/actions/start-capture/start-capture-action.component';
import { StartNodeActionComponent } from '@components/project-map/context-menu/actions/start-node-action/start-node-action.component';
import { StopCaptureActionComponent } from '@components/project-map/context-menu/actions/stop-capture/stop-capture-action.component';
import { IsolateNodeActionComponent } from '@components/project-map/context-menu/actions/isolate-node-action/isolate-node-action.component';
import { UnisolateNodeActionComponent } from '@components/project-map/context-menu/actions/unisolate-node-action/unisolate-node-action.component';
import { StopNodeActionComponent } from '@components/project-map/context-menu/actions/stop-node-action/stop-node-action.component';
import { SuspendLinkActionComponent } from '@components/project-map/context-menu/actions/suspend-link/suspend-link-action.component';
import { SuspendNodeActionComponent } from '@components/project-map/context-menu/actions/suspend-node-action/suspend-node-action.component';
import { ContextMenuComponent } from '@components/project-map/context-menu/context-menu.component';
import { ConfigDialogComponent } from '@components/project-map/context-menu/dialogs/config-dialog/config-dialog.component';
import { IdlePCDialogComponent } from "@components/project-map/context-menu/dialogs/idle-pc-dialog/idle-pc-dialog.component";
import { DrawLinkToolComponent } from '@components/project-map/draw-link-tool/draw-link-tool.component';
import { StyleEditorDialogComponent } from '@components/project-map/drawings-editors/style-editor/style-editor.component';
import { LinkStyleEditorDialogComponent } from '@components/project-map/drawings-editors/link-style-editor/link-style-editor.component';
import { TextEditorDialogComponent } from '@components/project-map/drawings-editors/text-editor/text-editor.component';
import { HelpDialogComponent } from '@components/project-map/help-dialog/help-dialog.component';
import { NodeCreatedLabelStylesFixer } from '@components/project-map/helpers/node-created-label-styles-fixer';
import { ImportApplianceComponent } from '@components/project-map/import-appliance/import-appliance.component';
import { InfoDialogComponent } from '@components/project-map/info-dialog/info-dialog.component';
import { LogConsoleComponent } from '@components/project-map/log-console/log-console.component';
import { LogEventsDataSource } from '@components/project-map/log-console/log-events-datasource';
import { ApplianceInfoDialogComponent } from '@components/project-map/new-template-dialog/appliance-info-dialog/appliance-info-dialog.component';
import { NewTemplateDialogComponent } from '@components/project-map/new-template-dialog/new-template-dialog.component';
import { TemplateNameDialogComponent } from '@components/project-map/new-template-dialog/template-name-dialog/template-name-dialog.component';
import { ConfigEditorDialogComponent } from '@components/project-map/node-editors/config-editor/config-editor.component';
import { ConfiguratorDialogAtmSwitchComponent } from '@components/project-map/node-editors/configurator/atm_switch/configurator-atm-switch.component';
import { ConfiguratorDialogCloudComponent } from '@components/project-map/node-editors/configurator/cloud/configurator-cloud.component';
import { ConfiguratorDialogDockerComponent } from '@components/project-map/node-editors/configurator/docker/configurator-docker.component';
import { ConfigureCustomAdaptersDialogComponent } from '@components/project-map/node-editors/configurator/docker/configure-custom-adapters/configure-custom-adapters.component';
import { EditNetworkConfigurationDialogComponent } from '@components/project-map/node-editors/configurator/docker/edit-network-configuration/edit-network-configuration.component';
import { ConfiguratorDialogEthernetSwitchComponent } from '@components/project-map/node-editors/configurator/ethernet-switch/configurator-ethernet-switch.component';
import { ConfiguratorDialogEthernetHubComponent } from '@components/project-map/node-editors/configurator/ethernet_hub/configurator-ethernet-hub.component';
import { ConfiguratorDialogIosComponent } from '@components/project-map/node-editors/configurator/ios/configurator-ios.component';
import { ConfiguratorDialogIouComponent } from '@components/project-map/node-editors/configurator/iou/configurator-iou.component';
import { ConfiguratorDialogNatComponent } from '@components/project-map/node-editors/configurator/nat/configurator-nat.component';
import { ConfiguratorDialogQemuComponent } from '@components/project-map/node-editors/configurator/qemu/configurator-qemu.component';
import { QemuImageCreatorComponent } from '@components/project-map/node-editors/configurator/qemu/qemu-image-creator/qemu-image-creator.component';
import { ConfiguratorDialogSwitchComponent } from '@components/project-map/node-editors/configurator/switch/configurator-switch.component';
import { ConfiguratorDialogVirtualBoxComponent } from '@components/project-map/node-editors/configurator/virtualbox/configurator-virtualbox.component';
import { ConfiguratorDialogVmwareComponent } from '@components/project-map/node-editors/configurator/vmware/configurator-vmware.component';
import { ConfiguratorDialogVpcsComponent } from '@components/project-map/node-editors/configurator/vpcs/configurator-vpcs.component';
import { NodeSelectInterfaceComponent } from '@components/project-map/node-select-interface/node-select-interface.component';
import { NodesMenuComponent } from '@components/project-map/nodes-menu/nodes-menu.component';
import { PacketFiltersDialogComponent } from '@components/project-map/packet-capturing/packet-filters/packet-filters.component';
import { StartCaptureDialogComponent } from '@components/project-map/packet-capturing/start-capture/start-capture.component';
import { ProjectMapMenuComponent } from '@components/project-map/project-map-menu/project-map-menu.component';
import { ProjectMapComponent } from '@components/project-map/project-map.component';
import { ProjectReadmeComponent } from '@components/project-map/project-readme/project-readme.component';
import { ScreenshotDialogComponent } from '@components/project-map/screenshot-dialog/screenshot-dialog.component';
import { WebConsoleComponent } from '@components/project-map/web-console/web-console.component';
import { AddBlankProjectDialogComponent } from '@components/projects/add-blank-project-dialog/add-blank-project-dialog.component';
import { ChooseNameDialogComponent } from '@components/projects/choose-name-dialog/choose-name-dialog.component';
import { ConfirmationBottomSheetComponent } from '@components/projects/confirmation-bottomsheet/confirmation-bottomsheet.component';
import { ConfirmationDialogComponent } from '@components/projects/confirmation-dialog/confirmation-dialog.component';
import { EditProjectDialogComponent } from '@components/projects/edit-project-dialog/edit-project-dialog.component';
import { ReadmeEditorComponent } from '@components/projects/edit-project-dialog/readme-editor/readme-editor.component';
import { ImportProjectDialogComponent } from '@components/projects/import-project-dialog/import-project-dialog.component';
import { ProjectNameValidator } from '@components/projects/models/projectNameValidator';
import { NavigationDialogComponent } from '@components/projects/navigation-dialog/navigation-dialog.component';
import { ProjectsComponent } from '@components/projects/projects.component';
import { SaveProjectDialogComponent } from '@components/projects/save-project-dialog/save-project-dialog.component';
import { AddControllerDialogComponent } from '@components/controllers/add-controller-dialog/add-controller-dialog.component';
import { ControllerDiscoveryComponent } from '@components/controllers/controller-discovery/controller-discovery.component';
import { ControllersComponent } from '@components/controllers/controllers.component';
import { ConsoleComponent } from '@components/settings/console/console.component';
import { SettingsComponent } from '@components/settings/settings.component';
import { CreateSnapshotDialogComponent } from '@components/snapshots/create-snapshot-dialog/create-snapshot-dialog.component';
import { ListOfSnapshotsComponent } from '@components/snapshots/list-of-snapshots/list-of-snapshots.component';
import { SnapshotMenuItemComponent } from '@components/snapshots/snapshot-menu-item/snapshot-menu-item.component';
import { StatusChartComponent } from '@components/system-status/status-chart/status-chart.component';
import { StatusInfoComponent } from '@components/system-status/status-info/status-info.component';
import { SystemStatusComponent } from '@components/system-status/system-status.component';
import { TemplateListDialogComponent } from '@components/template/template-list-dialog/template-list-dialog.component';
import { TemplateComponent } from '@components/template/template.component';
import { TopologySummaryComponent } from '@components/topology-summary/topology-summary.component';
import { WebConsoleFullWindowComponent } from '@components/web-console-full-window/web-console-full-window.component';
import { DataSourceFilter } from '@filters/dataSourceFilter';
import { AuthImageFilter } from '@filters/authImageFilter';
import { DateFilter } from '@filters/dateFilter.pipe';
import { NameFilter } from '@filters/nameFilter.pipe';
import { ProjectsFilter } from '@filters/projectsFilter.pipe';
import { SearchFilter } from '@filters/searchFilter.pipe';
import { TemplateFilter } from '@filters/templateFilter.pipe';
import { ConsoleGuard } from './guards/console-guard';
import { LoginGuard } from './guards/login-guard';
import { ProjectWebServiceHandler } from './handlers/project-web-service-handler';
import { DefaultLayoutComponent } from './layouts/default-layout/default-layout.component';
import { MATERIAL_IMPORTS } from './material.imports';
import { ControllerResolve } from './resolvers/controller-resolve';
import { ApplianceService } from './services/appliances.service';
import { BuiltInTemplatesConfigurationService } from './services/built-in-templates-configuration.service';
import { BuiltInTemplatesService } from './services/built-in-templates.service';
import { ComputeService } from './services/compute.service';
import { DockerConfigurationService } from './services/docker-configuration.service';
import { DockerService } from './services/docker.service';
import { DrawingService } from './services/drawing.service';
import { ExternalSoftwareDefinitionService } from './services/external-software-definition.service';
import { GoogleAnalyticsService } from './services/google-analytics.service';
import { HttpController, ControllerErrorHandler } from './services/http-controller.service';
import { InfoService } from './services/info.service';
import { InstalledSoftwareService } from './services/installed-software.service';
import { IosConfigurationService } from './services/ios-configuration.service';
import { IosService } from './services/ios.service';
import { IouConfigurationService } from './services/iou-configuration.service';
import { IouService } from './services/iou.service';
import { LinkService } from './services/link.service';
import { MapScaleService } from './services/mapScale.service';
import { MapSettingsService } from './services/mapsettings.service';
import { NodeService } from './services/node.service';
import { NodeConsoleService } from './services/nodeConsole.service';
import { NotificationService } from './services/notification.service';
import { PacketCaptureService } from './services/packet-capture.service';
import { PlatformService } from './services/platform.service';
import { ProjectService } from './services/project.service';
import { QemuConfigurationService } from './services/qemu-configuration.service';
import { QemuService } from './services/qemu.service';
import { RecentlyOpenedProjectService } from './services/recentlyOpenedProject.service';
import { ControllerManagementService } from './services/controller-management.service';
import { ControllerSettingsService } from './services/controller-settings.service';
import { ControllerDatabase } from './services/controller.database';
import { ControllerService } from './services/controller.service';
import { SettingsService } from './services/settings.service';
import { ConsoleService } from './services/settings/console.service';
import { DefaultConsoleService } from './services/settings/default-console.service';
import { SnapshotService } from './services/snapshot.service';
import { SymbolService } from './services/symbol.service';
import { TemplateMocksService } from './services/template-mocks.service';
import { TemplateService } from './services/template.service';
import { ThemeService } from './services/theme.service';
import { ToasterService } from './services/toaster.service';
import { ToolsService } from './services/tools.service';
import { UpdatesService } from './services/updates.service';
import { VersionService } from './services/version.service';
import { VirtualBoxConfigurationService } from './services/virtual-box-configuration.service';
import { VirtualBoxService } from './services/virtual-box.service';
import { VmwareConfigurationService } from './services/vmware-configuration.service';
import { VmwareService } from './services/vmware.service';
import { VpcsConfigurationService } from './services/vpcs-configuration.service';
import { VpcsService } from './services/vpcs.service';
import { ControllerResolve } from '@resolvers/controller-resolve';
import { ApplianceService } from '@services/appliances.service';
import { ProtocolHandlerService } from '@services/protocol-handler.service';
import { BuiltInTemplatesConfigurationService } from '@services/built-in-templates-configuration.service';
import { BuiltInTemplatesService } from '@services/built-in-templates.service';
import { ComputeService } from '@services/compute.service';
import { DockerConfigurationService } from '@services/docker-configuration.service';
import { DockerService } from '@services/docker.service';
import { DrawingService } from '@services/drawing.service';
import { ExternalSoftwareDefinitionService } from '@services/external-software-definition.service';
import { GoogleAnalyticsService } from '@services/google-analytics.service';
import { HttpController, ControllerErrorHandler } from '@services/http-controller.service';
import { InfoService } from '@services/info.service';
import { InstalledSoftwareService } from '@services/installed-software.service';
import { IosConfigurationService } from '@services/ios-configuration.service';
import { IosService } from '@services/ios.service';
import { IouConfigurationService } from '@services/iou-configuration.service';
import { IouService } from '@services/iou.service';
import { LinkService } from '@services/link.service';
import { MapScaleService } from '@services/mapScale.service';
import { MapSettingsService } from '@services/mapsettings.service';
import { NodeService } from '@services/node.service';
import { NodeConsoleService } from '@services/nodeConsole.service';
import { NotificationService } from '@services/notification.service';
import { PacketCaptureService } from '@services/packet-capture.service';
import { PlatformService } from '@services/platform.service';
import { ProjectService } from '@services/project.service';
import { QemuConfigurationService } from '@services/qemu-configuration.service';
import { QemuService } from '@services/qemu.service';
import { RecentlyOpenedProjectService } from '@services/recentlyOpenedProject.service';
import { ControllerManagementService } from '@services/controller-management.service';
import { ControllerSettingsService } from '@services/controller-settings.service';
import { ControllerDatabase } from '@services/controller.database';
import { ControllerService } from '@services/controller.service';
import { SettingsService } from '@services/settings.service';
import { ConsoleService } from '@services/settings/console.service';
import { DefaultConsoleService } from '@services/settings/default-console.service';
import { SnapshotService } from '@services/snapshot.service';
import { SymbolService } from '@services/symbol.service';
import { TemplateMocksService } from '@services/template-mocks.service';
import { TemplateService } from '@services/template.service';
import { ThemeService } from '@services/theme.service';
import { ToasterService } from '@services/toaster.service';
import { ToolsService } from '@services/tools.service';
import { UpdatesService } from '@services/updates.service';
import { VersionService } from '@services/version.service';
import { VirtualBoxConfigurationService } from '@services/virtual-box-configuration.service';
import { VirtualBoxService } from '@services/virtual-box.service';
import { VmwareConfigurationService } from '@services/vmware-configuration.service';
import { VmwareService } from '@services/vmware.service';
import { VpcsConfigurationService } from '@services/vpcs-configuration.service';
import { VpcsService } from '@services/vpcs.service';
import { NonNegativeValidator } from './validators/non-negative-validator';
import { RotationValidator } from './validators/rotation-validator';
import { MarkedDirective } from './directives/marked.directive';
import { LoginComponent } from './components/login/login.component';
import { LoginService } from './services/login.service';
import { LoginComponent } from '@components/login/login.component';
import { LoginService } from '@services/login.service';
import { HttpRequestsInterceptor } from './interceptors/http.interceptor';
import { UserManagementComponent } from './components/user-management/user-management.component';
import { UserService } from './services/user.service';
import { LoggedUserComponent } from './components/users/logged-user/logged-user.component';
import { AddUserDialogComponent } from './components/user-management/add-user-dialog/add-user-dialog.component';
import { UserFilterPipe } from './filters/user-filter.pipe';
import { GroupManagementComponent } from './components/group-management/group-management.component';
import { GroupFilterPipe } from './filters/group-filter.pipe';
import { AddGroupDialogComponent } from './components/group-management/add-group-dialog/add-group-dialog.component';
import { DeleteGroupDialogComponent } from './components/group-management/delete-group-dialog/delete-group-dialog.component';
import { DeleteUserDialogComponent } from './components/user-management/delete-user-dialog/delete-user-dialog.component';
import { GroupDetailsComponent } from './components/group-details/group-details.component';
import { UserDetailComponent } from './components/user-management/user-detail/user-detail.component';
import { AddUserToGroupDialogComponent } from './components/group-details/add-user-to-group-dialog/add-user-to-group-dialog.component';
import { UserManagementComponent } from '@components/user-management/user-management.component';
import { UserService } from '@services/user.service';
import { LoggedUserComponent } from '@components/users/logged-user/logged-user.component';
import { AddUserDialogComponent } from '@components/user-management/add-user-dialog/add-user-dialog.component';
import { UserFilterPipe } from '@filters/user-filter.pipe';
import { GroupManagementComponent } from '@components/group-management/group-management.component';
import { GroupFilterPipe } from '@filters/group-filter.pipe';
import { AddGroupDialogComponent } from '@components/group-management/add-group-dialog/add-group-dialog.component';
import { DeleteGroupDialogComponent } from '@components/group-management/delete-group-dialog/delete-group-dialog.component';
import { DeleteUserDialogComponent } from '@components/user-management/delete-user-dialog/delete-user-dialog.component';
import { GroupDetailsComponent } from '@components/group-details/group-details.component';
import { UserDetailComponent } from '@components/user-management/user-detail/user-detail.component';
import { AddUserToGroupDialogComponent } from '@components/group-details/add-user-to-group-dialog/add-user-to-group-dialog.component';
import { RemoveToGroupDialogComponent } from '@components/group-details/remove-to-group-dialog/remove-to-group-dialog.component';
import { PaginatorPipe } from './components/group-details/paginator.pipe';
import { MembersFilterPipe } from './components/group-details/members-filter.pipe';
import { ManagementComponent } from './components/management/management.component';
import { PaginatorPipe } from '@components/group-details/paginator.pipe';
import { MembersFilterPipe } from '@components/group-details/members-filter.pipe';
import { ManagementComponent } from '@components/management/management.component';
import {MatCheckboxModule} from "@angular/material/checkbox";
import { RoleManagementComponent } from './components/role-management/role-management.component';
import { RoleFilterPipe } from './components/role-management/role-filter.pipe';
import { AddRoleDialogComponent } from './components/role-management/add-role-dialog/add-role-dialog.component';
import { DeleteRoleDialogComponent } from './components/role-management/delete-role-dialog/delete-role-dialog.component';
import { RoleDetailComponent } from './components/role-management/role-detail/role-detail.component';
import { PermissionEditorComponent } from './components/role-management/role-detail/permission-editor/permission-editor.component';
import { EditablePermissionComponent } from './components/role-management/role-detail/permission-editor/editable-permission/editable-permission.component';
import { PermissionEditorValidateDialogComponent } from './components/role-management/role-detail/permission-editor/permission-editor-validate-dialog/permission-editor-validate-dialog.component';
import { PermissionsManagementComponent } from './components/permissions-management/permissions-management.component';
import { PermissionEditLineComponent } from '@components/permissions-management/permission-edit-line/permission-edit-line.component';
import { RoleManagementComponent } from '@components/role-management/role-management.component';
import { RoleFilterPipe } from '@components/role-management/role-filter.pipe';
import { AddRoleDialogComponent } from '@components/role-management/add-role-dialog/add-role-dialog.component';
import { DeleteRoleDialogComponent } from '@components/role-management/delete-role-dialog/delete-role-dialog.component';
import { RoleDetailComponent } from '@components/role-management/role-detail/role-detail.component';
import {MatSlideToggleModule} from '@angular/material/slide-toggle';
import { UserPermissionsComponent } from './components/user-management/user-detail/user-permissions/user-permissions.component';
import {MatAutocompleteModule} from "@angular/material/autocomplete";
import {PathAutoCompleteComponent} from './components/permissions-management/add-permission-line/path-auto-complete/path-auto-complete.component';
import {FilterCompletePipe} from './components/permissions-management/add-permission-line/path-auto-complete/filter-complete.pipe';
import { AddPermissionLineComponent } from './components/permissions-management/add-permission-line/add-permission-line.component';
import { MethodButtonComponent } from './components/permissions-management/method-button/method-button.component';
import { ActionButtonComponent } from './components/permissions-management/action-button/action-button.component';
import { DeletePermissionDialogComponent } from './components/permissions-management/delete-permission-dialog/delete-permission-dialog.component';
import { AddRoleToGroupComponent } from './components/group-details/add-role-to-group/add-role-to-group.component';
import {MatAutocompleteModule} from "@angular/material/autocomplete";;
import { AddRoleToGroupComponent } from '@components/group-details/add-role-to-group/add-role-to-group.component';
import {MatFormFieldModule} from "@angular/material/form-field";
import { PermissionsFilterPipe } from './components/permissions-management/permissions-filter.pipe';
import { DisplayPathPipe } from './components/permissions-management/display-path.pipe';
import {RolePermissionsComponent} from "@components/role-management/role-detail/role-permissions/role-permissions.component";
import { ChangeUserPasswordComponent } from './components/user-management/user-detail/change-user-password/change-user-password.component';
import { ChangeUserPasswordComponent } from '@components/user-management/user-detail/change-user-password/change-user-password.component';
import {MatMenuModule} from "@angular/material/menu";
import { ImageManagerComponent } from './components/image-manager/image-manager.component';
import { AddImageDialogComponent } from './components/image-manager/add-image-dialog/add-image-dialog.component';
import { DeleteAllImageFilesDialogComponent } from './components/image-manager/deleteallfiles-dialog/deleteallfiles-dialog.component';
import { ImageManagerComponent } from '@components/image-manager/image-manager.component';
import { AddImageDialogComponent } from '@components/image-manager/add-image-dialog/add-image-dialog.component';
import { DeleteAllImageFilesDialogComponent } from '@components/image-manager/deleteallfiles-dialog/deleteallfiles-dialog.component';
import { UploadingProcessbarComponent } from './common/uploading-processbar/uploading-processbar.component';
import { ExportPortableProjectComponent } from './components/export-portable-project/export-portable-project.component';
import { NodesMenuConfirmationDialogComponent } from './components/project-map/nodes-menu/nodes-menu-confirmation-dialog/nodes-menu-confirmation-dialog.component';
import { ConfirmationDeleteAllProjectsComponent } from './components/projects/confirmation-delete-all-projects/confirmation-delete-all-projects.component';
import { ProjectMapLockConfirmationDialogComponent } from './components/project-map/project-map-menu/project-map-lock-confirmation-dialog/project-map-lock-confirmation-dialog.component';
import { ExportPortableProjectComponent } from '@components/export-portable-project/export-portable-project.component';
import { NodesMenuConfirmationDialogComponent } from '@components/project-map/nodes-menu/nodes-menu-confirmation-dialog/nodes-menu-confirmation-dialog.component';
import { ConfirmationDeleteAllProjectsComponent } from '@components/projects/confirmation-delete-all-projects/confirmation-delete-all-projects.component';
import { ProjectMapLockConfirmationDialogComponent } from '@components/project-map/project-map-menu/project-map-lock-confirmation-dialog/project-map-lock-confirmation-dialog.component';
import { AclManagementComponent } from "@components/acl-management/acl-management.component";
import { AddAceDialogComponent } from '@components/acl-management/add-ace-dialog/add-ace-dialog.component';
import { AutocompleteComponent } from '@components/acl-management/add-ace-dialog/autocomplete/autocomplete.component';
import { DeleteAceDialogComponent } from '@components/acl-management/delete-ace-dialog/delete-ace-dialog.component';
import { AceFilterPipe } from '@filters/ace-filter.pipe';
import { CdkAccordionModule } from "@angular/cdk/accordion";
import { CdkTreeModule } from "@angular/cdk/tree";
import { PrivilegeComponent } from '@components/role-management/role-detail/privilege/privilege.component';
import { GroupPrivilegesPipe } from '@components/role-management/role-detail/privilege/group-privileges.pipe';
import { ResourcePoolsManagementComponent } from '@components/resource-pools-management/resource-pools-management.component';
import { AddResourcePoolDialogComponent } from '@components/resource-pools-management/add-resource-pool-dialog/add-resource-pool-dialog.component';
import { DeleteResourcePoolComponent } from '@components/resource-pools-management/delete-resource-pool/delete-resource-pool.component';
import { ResourcePoolsFilterPipe } from '@components/resource-pools-management/resource-pools-filter.pipe';
import { ResourcePoolDetailsComponent } from '@components/resource-pool-details/resource-pool-details.component';
import { DeleteResourceConfirmationDialogComponent } from '@components/resource-pool-details/delete-resource-confirmation-dialog/delete-resource-confirmation-dialog.component';
@NgModule({
declarations: [
@ -491,6 +497,7 @@ import { ProjectMapLockConfirmationDialogComponent } from './components/project-
AlignVerticallyActionComponent,
ConfirmationBottomSheetComponent,
ConfigDialogComponent,
IdlePCDialogComponent,
ImportApplianceComponent,
DirectLinkComponent,
SystemStatusComponent,
@ -498,6 +505,8 @@ import { ProjectMapLockConfirmationDialogComponent } from './components/project-
StatusChartComponent,
OpenFileExplorerActionComponent,
HttpConsoleActionComponent,
IdlePcActionComponent,
AutoIdlePcActionComponent,
WebConsoleComponent,
ConsoleWrapperComponent,
HttpConsoleNewTabActionComponent,
@ -509,6 +518,7 @@ import { ProjectMapLockConfirmationDialogComponent } from './components/project-
ReadmeEditorComponent,
MarkedDirective,
InformationDialogComponent,
QuestionDialogComponent,
TemplateNameDialogComponent,
ConfigureCustomAdaptersDialogComponent,
EditNetworkConfigurationDialogComponent,
@ -533,26 +543,9 @@ import { ProjectMapLockConfirmationDialogComponent } from './components/project-
AddRoleDialogComponent,
DeleteRoleDialogComponent,
RoleDetailComponent,
PermissionEditorComponent,
EditablePermissionComponent,
PermissionEditorValidateDialogComponent,
RemoveToGroupDialogComponent,
PermissionsManagementComponent,
AddRoleToGroupComponent,
PermissionEditLineComponent,
AddPermissionLineComponent,
MethodButtonComponent,
ActionButtonComponent,
DeletePermissionDialogComponent,
PathAutoCompleteComponent,
FilterCompletePipe,
UserPermissionsComponent,
PermissionsFilterPipe,
RolePermissionsComponent,
DisplayPathPipe,
ChangeUserPasswordComponent,
FilterCompletePipe,
DisplayPathPipe,
ChangeUserPasswordComponent,
ProjectReadmeComponent,
ImageManagerComponent,
@ -563,6 +556,19 @@ import { ProjectMapLockConfirmationDialogComponent } from './components/project-
NodesMenuConfirmationDialogComponent,
ConfirmationDeleteAllProjectsComponent,
ProjectMapLockConfirmationDialogComponent,
AclManagementComponent,
AddAceDialogComponent,
AutocompleteComponent,
DeleteAceDialogComponent,
AceFilterPipe,
PrivilegeComponent,
GroupPrivilegesPipe,
ResourcePoolsManagementComponent,
AddResourcePoolDialogComponent,
DeleteResourcePoolComponent,
ResourcePoolsFilterPipe,
ResourcePoolDetailsComponent,
DeleteResourceConfirmationDialogComponent,
],
imports: [
BrowserModule,
@ -588,6 +594,8 @@ import { ProjectMapLockConfirmationDialogComponent } from './components/project-
MatSlideToggleModule,
MatCheckboxModule,
MatAutocompleteModule,
CdkAccordionModule,
CdkTreeModule,
],
providers: [
SettingsService,
@ -652,6 +660,7 @@ import { ProjectMapLockConfirmationDialogComponent } from './components/project-
InfoService,
ComputeService,
PacketCaptureService,
ProtocolHandlerService,
NotificationService,
ThemeService,
GoogleAnalyticsService,

View File

@ -11,13 +11,13 @@ import {
} from '@angular/core';
import { select, Selection } from 'd3-selection';
import { Subscription } from 'rxjs';
import { Link } from '../../../models/link';
import { Project } from '../../../models/project';
import { Controller } from '../../../models/controller';
import { Symbol } from '../../../models/symbol';
import { MapScaleService } from '../../../services/mapScale.service';
import { MapSettingsService } from '../../../services/mapsettings.service';
import { ToolsService } from '../../../services/tools.service';
import { Link } from '@models/link';
import { Project } from '@models/project';
import { Controller } from '@models/controller';
import { Symbol } from '@models/symbol';
import { MapScaleService } from '@services/mapScale.service';
import { MapSettingsService } from '@services/mapsettings.service';
import { ToolsService } from '@services/tools.service';
import { CanvasSizeDetector } from '../../helpers/canvas-size-detector';
import { GraphDataManager } from '../../managers/graph-data-manager';
import { MapSettingsManager } from '../../managers/map-settings-manager';

View File

@ -1,7 +1,7 @@
import { EventEmitter } from '@angular/core';
import { async, ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing';
import { select } from 'd3-selection';
import { MapSettingsService } from '../../../services/mapsettings.service';
import { MapSettingsService } from '@services/mapsettings.service';
import { DraggableDrag, DraggableEnd, DraggableStart } from '../../events/draggable';
import { DrawingsEventSource } from '../../events/drawings-event-source';
import { LinksEventSource } from '../../events/links-event-source';

View File

@ -1,7 +1,7 @@
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
import { select } from 'd3-selection';
import { merge, Subscription } from 'rxjs';
import { MapSettingsService } from '../../../services/mapsettings.service';
import { MapSettingsService } from '@services/mapsettings.service';
import { DraggableDrag, DraggableEnd, DraggableStart } from '../../events/draggable';
import { DrawingsEventSource } from '../../events/drawings-event-source';
import { DraggedDataEvent } from '../../events/event-source';

View File

@ -12,8 +12,8 @@ import {
ViewChild,
} from '@angular/core';
import { Subscription } from 'rxjs';
import { Link } from '../../../models/link';
import { Symbol } from '../../../models/symbol';
import { Link } from '@models/link';
import { Symbol } from '@models/symbol';
import { CanvasSizeDetector } from '../../helpers/canvas-size-detector';
import { GraphDataManager } from '../../managers/graph-data-manager';
import { LayersManager } from '../../managers/layers-manager';

View File

@ -13,7 +13,7 @@ import {
} from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { Subscription } from 'rxjs';
import { Symbol } from '../../../../models/symbol';
import { Symbol } from '@models/symbol';
import { DraggedDataEvent } from '../../../events/event-source';
import { NodesEventSource } from '../../../events/nodes-event-source';
import { CssFixer } from '../../../helpers/css-fixer';

View File

@ -1,10 +1,10 @@
import { Renderer2 } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { MockedLinkService } from '../../../components/project-map/project-map.component.spec';
import { LinkService } from '../../../services/link.service';
import { MapScaleService } from '../../../services/mapScale.service';
import { ToolsService } from '../../../services/tools.service';
import { MockedLinkService } from '@components/project-map/project-map.component.spec';
import { LinkService } from '@services/link.service';
import { MapScaleService } from '@services/mapScale.service';
import { ToolsService } from '@services/tools.service';
import { LinksDataSource } from '../../datasources/links-datasource';
import { NodesDataSource } from '../../datasources/nodes-datasource';
import { DrawingsEventSource } from '../../events/drawings-event-source';

View File

@ -11,12 +11,12 @@ import {
} from '@angular/core';
import { select } from 'd3-selection';
import { Subscription } from 'rxjs';
import { StyleProperty } from '../../../components/project-map/drawings-editors/text-editor/text-editor.component';
import { Link } from '../../../models/link';
import { Controller } from '../../../models/controller';
import { LinkService } from '../../../services/link.service';
import { MapScaleService } from '../../../services/mapScale.service';
import { ToolsService } from '../../../services/tools.service';
import { StyleProperty } from '@components/project-map/drawings-editors/text-editor/text-editor.component';
import { Link } from '@models/link';
import { Controller } from '@models/controller';
import { LinkService } from '@services/link.service';
import { MapScaleService } from '@services/mapScale.service';
import { ToolsService } from '@services/tools.service';
import { LinksDataSource } from '../../datasources/links-datasource';
import { NodesDataSource } from '../../datasources/nodes-datasource';
import { DrawingsEventSource } from '../../events/drawings-event-source';

View File

@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { LinkNode } from '../../../models/link-node';
import { LinkNode } from '@models/link-node';
import { MapLinkNode } from '../../models/map/map-link-node';
import { Converter } from '../converter';
import { LabelToMapLabelConverter } from './label-to-map-label-converter';

View File

@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Link } from '../../../models/link';
import { Link } from '@models/link';
import { MapLink } from '../../models/map/map-link';
import { Converter } from '../converter';
import { LinkNodeToMapLinkNodeConverter } from './link-node-to-map-link-node-converter';

View File

@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { LinkNode } from '../../../models/link-node';
import { LinkNode } from '@models/link-node';
import { MapLinkNode } from '../../models/map/map-link-node';
import { Converter } from '../converter';
import { MapLabelToLabelConverter } from './map-label-to-label-converter';

View File

@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Link } from '../../../models/link';
import { Link } from '@models/link';
import { MapLink } from '../../models/map/map-link';
import { Converter } from '../converter';
import { MapLinkNodeToLinkNodeConverter } from './map-link-node-to-link-node-converter';

Some files were not shown because too many files have changed in this diff Show More