Compare commits

..

275 Commits

Author SHA1 Message Date
e40caa55e8 Tower: upload cetmix_tower_aws 18.0.1.0.1 (was 18.0.1.0.1, via marketplace) 2026-05-03 18:54:19 +00:00
d4789aaed6 Tower: upload cetmix_tower 18.0.1.0.0 (was 18.0.1.0.0, via marketplace) 2026-05-03 18:54:12 +00:00
OdooSky Tower
7048450ad5 Cleanup: remove orphan addon source at_master_order (no tags reference it) 2026-05-02 13:20:08 +02:00
OdooSky Tower
a3b7a9a521 Cleanup: remove orphan addon source at_accounting (no tags reference it) 2026-05-02 13:20:06 +02:00
686c06f52c Tower: unpublish om_data_remove — remove source from 18.0 branch 2026-05-02 11:15:12 +00:00
99dd5ad688 Tower: upload om_data_remove 1.4 (via marketplace) 2026-05-02 06:09:09 +00:00
2d88df12c0 Tower: upload om_data_remove 1.4 (via marketplace) 2026-05-02 06:09:07 +00:00
bb3dd53fbd Tower: upload om_data_remove 1.4 (via marketplace) 2026-05-02 06:09:05 +00:00
d2c8473122 Tower: upload om_data_remove 1.4 (via marketplace) 2026-05-02 06:09:03 +00:00
f726994409 Tower: upload om_data_remove 1.4 (via marketplace) 2026-05-02 06:09:02 +00:00
5915c32ba7 Tower: upload om_data_remove 1.4 (via marketplace) 2026-05-02 06:08:59 +00:00
2d76c220f0 Tower: upload om_data_remove 1.4 (via marketplace) 2026-05-02 06:08:58 +00:00
005da073e8 Tower: upload om_data_remove 1.4 (via marketplace) 2026-05-02 06:08:57 +00:00
7a4a89cef9 Tower: upload om_data_remove 1.4 (via marketplace) 2026-05-02 06:08:55 +00:00
9295668143 Tower: upload om_data_remove 1.4 (via marketplace) 2026-05-02 06:08:54 +00:00
c53a0b6b30 Tower: upload om_data_remove 1.4 (via marketplace) 2026-05-02 06:08:52 +00:00
a498653c26 Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:57 +00:00
730cb8ddde Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:57 +00:00
33b1eeedf8 Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:56 +00:00
4915aaa882 Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:55 +00:00
ffd1dd0b18 Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:55 +00:00
c670be57f6 Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:54 +00:00
4ac0b04bca Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:53 +00:00
c5a4899c9f Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:53 +00:00
bbb6d4c35c Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:52 +00:00
0a9a96ae77 Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:51 +00:00
7a4b7d8e8f Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:50 +00:00
285e2e807a Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:50 +00:00
b3c96f6416 Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:49 +00:00
30f5ab37d2 Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:48 +00:00
de21d5cb55 Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:48 +00:00
d4dd28c402 Tower: upload at_master_order 18.0.10.0 (via marketplace) 2026-04-30 19:03:47 +00:00
45eaa252bd Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:50 +00:00
45222f6bb7 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:49 +00:00
d9715fff07 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:48 +00:00
5227767283 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:46 +00:00
f76d79a606 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:45 +00:00
14fd3e2f1e Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:43 +00:00
e3ce2be1f4 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:40 +00:00
0329122548 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:39 +00:00
f31284a113 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:38 +00:00
dcccf8b034 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:37 +00:00
9751faf173 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:36 +00:00
0d94303107 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:35 +00:00
fcd0cfb26f Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:34 +00:00
48863fc6d5 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:33 +00:00
8ba35217bf Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:32 +00:00
afe168723d Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:30 +00:00
72273b580f Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:28 +00:00
095ed48ded Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:27 +00:00
3a18336cc4 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:26 +00:00
33c3ae3585 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:24 +00:00
aa7c94b0dc Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:22 +00:00
e30a37898b Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:19 +00:00
88e1fa7965 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:19 +00:00
9f19b53414 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:18 +00:00
26fa9e2871 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:16 +00:00
825423b3af Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:14 +00:00
06a1e15a4f Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:12 +00:00
23c6cf64cf Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:11 +00:00
ae9617dedd Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:10 +00:00
2884546072 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:09 +00:00
d5ae939266 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:08 +00:00
89047fe79c Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:06 +00:00
d323267a28 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:05 +00:00
edf915943b Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:04 +00:00
d7c9aee436 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:03 +00:00
e497c2b5d0 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:38:00 +00:00
582b9e1b9b Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:59 +00:00
2b1c7afdf1 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:57 +00:00
882ba9247a Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:55 +00:00
0671d0b2e9 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:55 +00:00
509006cce4 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:53 +00:00
44c55e900a Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:51 +00:00
db83188b88 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:50 +00:00
aa4d44164c Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:49 +00:00
ea9d3ff61f Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:48 +00:00
f63dd818aa Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:47 +00:00
27f8b2541e Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:46 +00:00
558a815535 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:44 +00:00
6d6add697b Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:42 +00:00
bb235faf39 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:40 +00:00
3951faca64 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:39 +00:00
3db314cedb Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:36 +00:00
3e4faf0dc7 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:34 +00:00
a70964ad21 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:31 +00:00
d0a79ac5a6 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:28 +00:00
04c6e4d523 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:27 +00:00
3d2cbfcb74 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:26 +00:00
320f8e5bbf Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:24 +00:00
4d495e5cc5 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:21 +00:00
dbb7322fce Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:19 +00:00
ad78baae06 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:17 +00:00
b3f9c9f989 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:16 +00:00
773476029f Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:14 +00:00
bdf313b39e Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:13 +00:00
0b3fafc478 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:11 +00:00
ebe63f69ab Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:08 +00:00
a59bf97a36 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:05 +00:00
a64c72a5d4 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:04 +00:00
8b0f9d6361 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:02 +00:00
aa5439325d Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:37:00 +00:00
b1dbab9942 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:59 +00:00
43ae1490f5 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:57 +00:00
2a07cab00b Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:56 +00:00
08fe99a3dd Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:55 +00:00
1dae9452af Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:54 +00:00
0c15c42d4f Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:54 +00:00
7a0ffe51cd Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:53 +00:00
effc02f01b Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:51 +00:00
e585583bf5 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:49 +00:00
eab73a9964 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:47 +00:00
fe62898189 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:47 +00:00
dd454b6269 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:46 +00:00
3a469c333d Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:44 +00:00
3fe3d5944a Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:43 +00:00
42ecceac62 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:42 +00:00
f5a379f683 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:40 +00:00
834b292f73 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:39 +00:00
d29c58ac6c Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:39 +00:00
1095317b23 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:38 +00:00
80ff9d095b Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:36 +00:00
e110187874 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:35 +00:00
0786f81d63 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:34 +00:00
dcb6ca59fc Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:32 +00:00
3eb6ee6758 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:30 +00:00
97753affb8 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:29 +00:00
e19d374f2b Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:28 +00:00
30a33e939f Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:26 +00:00
d2e38977c2 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:25 +00:00
fa3cb047c8 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:24 +00:00
8441d1956d Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:23 +00:00
633253de00 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:21 +00:00
9dfa1d4d03 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:20 +00:00
4350577ab7 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:20 +00:00
63becde73e Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:19 +00:00
65dc01b15e Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:17 +00:00
d0e0bb7b0c Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:16 +00:00
26ce32efb8 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:14 +00:00
aa9004b2ef Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:12 +00:00
cd8b9c7975 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:11 +00:00
500026c640 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:10 +00:00
bd2ee6d072 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:09 +00:00
da58849aae Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:07 +00:00
570140673c Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:05 +00:00
0e56aa652c Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:04 +00:00
f3b0ba4632 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:36:02 +00:00
2462220921 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:59 +00:00
17efcd0fbc Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:57 +00:00
5d3db75b14 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:55 +00:00
ea03f85024 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:53 +00:00
be600989ba Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:51 +00:00
362fe7126a Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:49 +00:00
439ebf4356 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:47 +00:00
9b50ec37a6 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:45 +00:00
829a0fe36f Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:44 +00:00
6fc36fd5c5 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:44 +00:00
cbc31eaf55 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:43 +00:00
d63a402aaf Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:42 +00:00
31047a2670 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:41 +00:00
24adc03ab3 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:39 +00:00
4e051d6c52 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:38 +00:00
2ebb0a73c2 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:36 +00:00
906671a8b5 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:35 +00:00
a401dc3abd Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:33 +00:00
124377f7c5 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:31 +00:00
90836e2f2a Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:31 +00:00
90d9a2b202 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:30 +00:00
c62d637f56 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:28 +00:00
ce90945990 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:25 +00:00
bb42154f35 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:24 +00:00
3fd4eb215e Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:23 +00:00
543f423825 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:22 +00:00
3d2ad55cfa Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:20 +00:00
50cf4b4107 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:17 +00:00
8b6528cb8b Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:14 +00:00
a55dafa6e0 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:12 +00:00
24c89d97e5 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:11 +00:00
a7c36be076 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:10 +00:00
2ef98a3897 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:09 +00:00
e21d4e66a9 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:07 +00:00
38c91ef94c Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:05 +00:00
454e6936fb Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:03 +00:00
6d49162c09 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:35:00 +00:00
5bd5c7b906 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:59 +00:00
a4de8697da Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:58 +00:00
ce8f7f8711 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:55 +00:00
ca0ca65f14 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:54 +00:00
30f2cf9b0e Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:54 +00:00
f68e2d23e7 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:53 +00:00
05c33d06c3 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:52 +00:00
46fca55d81 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:50 +00:00
4db469f273 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:49 +00:00
72a652a5c6 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:48 +00:00
5523995594 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:46 +00:00
7b7bcf73e6 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:45 +00:00
acb3564750 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:43 +00:00
bb3359a309 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:40 +00:00
8b1544647a Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:38 +00:00
f727f3ab67 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:38 +00:00
a371ac9bdc Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:36 +00:00
f84c891e96 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:35 +00:00
c31947bfab Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:33 +00:00
d783d0d08d Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:31 +00:00
7a9e3c56fe Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:30 +00:00
11770d4950 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:29 +00:00
0d150fa92e Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:28 +00:00
2933122464 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:26 +00:00
5ab0886edf Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:25 +00:00
e2045b21e2 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:24 +00:00
596bd0a761 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:22 +00:00
2a19267d2f Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:19 +00:00
50105c5ba6 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:16 +00:00
434b1d46ab Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:15 +00:00
d4945d20ee Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:13 +00:00
6e05ee4c57 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:12 +00:00
33ba2de5dd Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:11 +00:00
bb075fe036 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:09 +00:00
60687c611a Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:08 +00:00
776bcc1f7f Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:07 +00:00
61061bdee9 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:06 +00:00
77d467de70 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:04 +00:00
e4a63ec0e4 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:04 +00:00
77dc1762c0 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:03 +00:00
e2bf6c22f9 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:34:01 +00:00
f9b4e1582a Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:59 +00:00
53a05d2240 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:58 +00:00
8512a1d196 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:57 +00:00
41a130c1d6 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:55 +00:00
13b8322e3c Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:54 +00:00
d18265433c Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:53 +00:00
16e661f8e8 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:51 +00:00
8a40edf6c6 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:49 +00:00
831cbe1449 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:48 +00:00
aea1722933 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:48 +00:00
51a39b2e6e Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:46 +00:00
21e6a6f3f6 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:43 +00:00
dbca7e34e1 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:42 +00:00
ac8400512b Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:41 +00:00
817b05fe06 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:40 +00:00
cb1c9a1ffa Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:39 +00:00
bc7dbb494a Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:38 +00:00
7827e2f224 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:36 +00:00
c4edb6b3af Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:35 +00:00
bdc66120f3 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:34 +00:00
636938581d Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:33 +00:00
2c3cfc3978 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:32 +00:00
0236ef0809 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:31 +00:00
de9fd7b71d Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:29 +00:00
eaeb978c19 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:27 +00:00
2e55efb312 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:26 +00:00
b786492d5e Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:25 +00:00
6086717e66 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:24 +00:00
375466beea Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:23 +00:00
8dfe9e9874 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:21 +00:00
385ef060ed Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:20 +00:00
6c8b3cbd74 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:18 +00:00
90d1e47e03 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:17 +00:00
9700c192d0 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:16 +00:00
25596b4149 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:14 +00:00
0885b59bb3 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:14 +00:00
fcbe9a17db Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:12 +00:00
860fedb7e0 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:10 +00:00
85ada8e9b7 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:08 +00:00
6b98bf8be1 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:07 +00:00
55fb716490 Tower: upload at_accounting 18.0.1.7 (via marketplace) 2026-04-28 07:33:06 +00:00
Tower Deploy
ab214ac9dd Wipe addons/: full reset for clean re-upload 2026-04-27 11:20:55 +03:00
Tower Deploy
304da43eb8 Wipe test artifacts from 18.0 branch (test_correct_encode + web_responsive*); keep odoosky_demo 2026-04-27 10:59:55 +03:00
48b0b7a283 Tower: upload test_correct_encode 18.0.1.0.0 (via marketplace) 2026-04-27 07:38:22 +00:00
40c3e1d471 Tower: upload test_correct_encode 18.0.1.0.0 (via marketplace) 2026-04-27 07:38:22 +00:00
c1ecf1289d Tower: upload web_responsive 18.0.1.0.0 (via marketplace) 2026-04-27 06:42:13 +00:00
0741834b31 Tower: upload web_responsive 18.0.1.0.0 (via marketplace) 2026-04-27 06:42:13 +00:00
7a2debb3d7 Tower: upload web_responsive_test 18.0.0.1.0 (via marketplace) 2026-04-27 06:03:21 +00:00
6ef9d029eb Tower: upload web_responsive_test 18.0.0.1.0 (via marketplace) 2026-04-27 06:03:21 +00:00
Tower Deploy
96edc0c694 Seed addons/odoosky_demo (18.0.1.0.0) — platform smoke-test addon 2026-04-27 00:44:36 +03:00
107 changed files with 15485 additions and 2178 deletions

View File

@@ -0,0 +1,60 @@
============
Cetmix Tower
============
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:e6c57b8f0bfeb65328c359735e0e2b0fcdb4852bc9bff24afaa5ae2cbab95658
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-cetmix%2Fcetmix--tower-lightgray.png?logo=github
:target: https://github.com/cetmix/cetmix-tower/tree/18.0/cetmix_tower
:alt: cetmix/cetmix-tower
|badge1| |badge2| |badge3|
This is a technical module that allows to get `Cetmix
Tower <https://cetmix.com/tower>`__ modules from the `Odoo App
Store <https://apps.odoo.com>`__.
It's designed to install all the `Cetmix
Tower <https://cetmix.com/tower>`__ modules at once.
**Table of contents**
.. contents::
:local:
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/cetmix/cetmix-tower/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/cetmix/cetmix-tower/issues/new?body=module:%20cetmix_tower%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
-------
* Cetmix
Maintainers
-----------
This module is part of the `cetmix/cetmix-tower <https://github.com/cetmix/cetmix-tower/tree/18.0/cetmix_tower>`_ project on GitHub.
You are welcome to contribute.

View File

View File

@@ -0,0 +1,22 @@
# Copyright Cetmix OU
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Cetmix Tower",
"summary": "Odoo SAAS Server Application Management",
"version": "18.0.1.0.0",
"development_status": "Beta",
"category": "Productivity",
"website": "https://tower.cetmix.com",
"live_test_url": "https://tower.cetmix.com/download",
"images": ["static/description/banner.png"],
"author": "Cetmix",
"license": "AGPL-3",
"application": True,
"installable": True,
"depends": [
"cetmix_tower_server",
"cetmix_tower_server_queue",
"cetmix_tower_git",
"cetmix_tower_webhook",
],
}

View File

@@ -0,0 +1,13 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

View File

@@ -0,0 +1,3 @@
This is a technical module that allows to get [Cetmix Tower](https://cetmix.com/tower) modules from the [Odoo App Store](https://apps.odoo.com).
It's designed to install all the [Cetmix Tower](https://cetmix.com/tower) modules at once.

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View File

@@ -0,0 +1,435 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Слой_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 756 322.5" style="enable-background:new 0 0 756 322.5;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
.st1{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:0.75;stroke-miterlimit:10;}
</style>
<g>
<g>
<g>
<path class="st0" d="M447.2,121.7c-2,1.6-4.7,2.9-8.3,3.9c-3.6,1-6.8,1.6-9.6,1.6c-10.9,0-19.5-2.8-25.8-8.3s-9.4-13.3-9.4-23.5
V53.7h-11.8V35.6H394V14.7l23.5-4.2v25.1h16l0.2,18l-16.2,0.1v37.4c0,4.6,1.1,8.4,3.3,11.3c2.2,3,5.4,4.5,9.7,4.5
c1.6,0,3.2-0.2,4.8-0.5c1.6-0.4,3.2-1,4.9-1.8L447.2,121.7z"/>
</g>
<g>
<path class="st0" d="M536.3,49.4c3.8-4.3,8.8-7.6,15-10.1c6.3-2.5,11.8-3.7,16.8-3.7c12,0,20.6,3.5,25.6,10.5
c5.1,7.1,7.6,15.6,7.6,25.8v55.2h-23.9v-54c0-5.6-1.3-9.9-4-12.8s-6.6-4.5-11.6-4.5c-3.4,0-7,0.9-10.7,2.7s-7.2,3.9-10.3,6.2
c0.1,1.2,0.2,2.4,0.4,3.7c0.1,1.2,0.2,2.4,0.2,3.7v55.2h-23.9V73.1c0-5.6-1.3-9.9-4-12.8s-6.5-4.5-11.4-4.5
c-3.1,0-6.1,0.6-9.2,1.9c-3.1,1.3-6.1,2.9-8.9,4.8v64.7h-23.7V39l23.3-3v7c3-2,5-3,9.4-4.5c5.7-1.9,10.7-3,15.2-3
c7,0,12.7,1.2,17.3,3.7C530.1,41.8,533.7,45.2,536.3,49.4z"/>
</g>
<g>
<path class="st0" d="M634.8,0c3.8,0,7,1.3,9.6,3.8c2.6,2.6,3.9,5.7,3.9,9.5s-1.3,6.9-3.9,9.5c-2.6,2.6-5.8,3.8-9.6,3.8
c-3.7,0-6.8-1.3-9.3-3.8c-2.6-2.6-3.8-5.7-3.8-9.5s1.3-6.9,3.8-9.5C628.1,1.3,631.2,0,634.8,0z M646.9,36l-0.2,91.1H623L622.9,36
H646.9z"/>
</g>
<g>
<path class="st0" d="M659.4,127.2l34.1-45.3l-32.8-45.8h25.8l21,29.9l21.9-29.9H756l-34.5,45.8l31.6,45.3H727l-20.5-28.4
l-20.9,28.4H659.4z"/>
</g>
<g>
<path class="st0" d="M198.4,81.5c0-26.6,19.5-45.5,46.7-45.5c18,0,29,7.8,34.8,15.6l-15.1,14c-4.2-6.1-10.5-9.4-18.6-9.4
c-14,0-23.9,10.1-23.9,25.2s9.9,25.4,23.9,25.4c8.1,0,14.4-3.6,18.6-9.4l15.1,13.8c-5.9,8.1-16.7,15.8-34.8,15.8
C217.9,127.2,198.4,108.3,198.4,81.5z"/>
</g>
<g>
<path class="st0" d="M289.4,81.5c0-25.2,18.8-45.5,45.6-45.5c26.3,0,44.1,19.4,44.1,47.8v5.1h-65.5c1.5,10.9,10.4,20.1,25.3,20.1
c7.5,0,17.8-3.2,23.5-8.7l10.3,14.7c-8.8,7.9-22.6,12-36.2,12C309.6,127.2,289.4,109.4,289.4,81.5z M334.8,54.2
c-14.4,0-20.6,10.6-21.7,19.2h43.4C356,65.2,350.2,54.2,334.8,54.2z"/>
</g>
</g>
<g>
<g>
<path class="st0" d="M92.3,91.5c0.6,0.3,0.7,1,0.2,1.5c-3.1,2.8-6.6,5.2-10.3,7.1c-6.6,3.2-13.7,4.8-20.9,4.7
c-7.2-0.3-14.2-2.2-20.3-5.7s-11.2-8.5-14.9-14.3s-5.8-12.5-6.4-19.3c-0.4-6.8,0.8-13.6,3.5-19.7c1.4-3,3.1-5.9,5.2-8.5
s4.5-4.9,7.1-7c5.2-4,11.3-6.7,17.7-7.8C46.9,24,41,27.1,36.4,31.4c-2.4,2.1-4.5,4.5-6.2,7.1c-1.8,2.6-3.1,5.5-4.3,8.4
c-2.1,5.8-2.7,12-1.9,18.1c0.9,6.1,3.3,11.7,6.8,16.6c3.6,4.8,8.3,8.7,13.6,11.2s11.1,3.6,16.9,3.4c5.8-0.3,11.3-2,16.2-4.9
c1.9-1.2,3.7-2.5,5.4-4c0.3-0.2,0.7-0.3,1-0.1L92.3,91.5z"/>
</g>
<g>
<path class="st0" d="M110.3,107.7c0.4,0.4,0.3,1.1-0.1,1.5c-0.2,0.2-0.4,0.4-0.6,0.6c-2.6,2.3-5.4,4.5-8.3,6.4s-6,3.6-9.2,5
s-6.5,2.6-9.8,3.5c-13.3,3.7-27.7,2.9-40.4-1.9s-23.8-13.5-31.3-24.7C3.2,86.8-0.4,73.5,0,60.3c0.5-13.1,5.2-26,13.1-36.1
C21.2,14,32.3,6.5,44.5,3C56.8-0.6,70-0.2,81.8,4c5.9,2.1,11.4,5.1,16.3,8.9c5,3.7,9.3,8.3,12.7,13.2c-3.8-4.8-8.3-9.1-13.3-12.4
S87,7.7,81.1,6c-11.5-3.4-24-2.9-35.3,1S24.9,18.4,18.3,28c-6.7,9.6-10.2,21.1-9.9,32.4c0.2,11.3,4.1,22.5,10.8,31.5
c6.7,8.9,16.2,15.5,26.7,18.8s21.9,3.1,32-0.3c8.2-2.7,15.4-7.5,21.2-13.5c0.4-0.4,1.1-0.5,1.5-0.1c0.6,0.6,1.3,1.3,1.8,2
C102.6,98.6,108.3,105.4,110.3,107.7z"/>
</g>
<g>
<path class="st0" d="M149.8,41l-35.6,43.5l2,4.1l4.1,8.6c0.7,1.5,0.4,3.3-0.8,4.5l-2.9,2.7c-0.2,0.2-0.4,0.2-0.7,0.2
c-0.1,0-0.2-0.1-0.3-0.2c0,0-0.1,0-0.1-0.1l-7.9-9.4c-0.8-0.9-1.6-1.8-2.5-2.6c-0.7-0.6-1.3-1.2-2.1-1.8c-1.4-1.1-3-2.2-4.6-3
c-0.2-0.2-0.5-0.3-0.8-0.4l-9.1-4.8l-1.7-0.9c-0.4-0.2-0.5-0.6-0.3-1l2-3.4c0.9-1.5,2.6-2.2,4.2-1.8l13.7,3.1l13.9-18L91.8,47.8
c-0.4-0.2-0.5-0.7-0.3-1l4.5-5.6c1.8-2.3,4.8-3.4,7.7-3l30.2,5.1l7.5-9.6c1.7-2.2,3.9-3.9,6.4-5l3.5-1.5c0.5-0.2,1-0.2,1.4-0.1
c0.3,0.1,0.5,0.2,0.7,0.3l0,0c0.5,0.4,0.9,1.2,0.7,2l-0.6,3.7C152.9,36,151.7,38.7,149.8,41z"/>
</g>
<g>
<g>
<path class="st0" d="M155.2,85.4l-4.5,5.6c-0.2,0.2-0.5,0.3-0.7,0.2c-0.1,0-0.3-0.1-0.4-0.2l-17.2-23.3l13.3-16.1l10.5,25.7
C157.5,79.9,157,83,155.2,85.4z"/>
</g>
</g>
</g>
</g>
<g>
<path class="st0" d="M397.4,241.7c-15.1,0-27.3-12.3-27.3-27.3s12.3-27.3,27.3-27.3c15.1,0,27.3,12.3,27.3,27.3l0,0
C424.7,229.5,412.4,241.7,397.4,241.7z M397.4,230.4c8.9,0,16-7.2,16-16c0-8.8-7.2-16-16-16c-8.9,0-16,7.2-16,16
C381.4,223.2,388.5,230.4,397.4,230.4z M340.2,241.7c-15.1,0-27.3-12.3-27.3-27.3s12.3-27.3,27.3-27.3c15.1,0,27.3,12.3,27.3,27.3
l0,0C367.5,229.5,355.3,241.7,340.2,241.7z M340.2,230.4c8.9,0,16-7.2,16-16c0-8.8-7.2-16-16-16c-8.9,0-16,7.2-16,16
C324.2,223.2,331.3,230.4,340.2,230.4z M310.3,214.1c0,15.3-12.3,27.7-27.3,27.7s-27.3-12.4-27.3-27.7s11.1-27,27.3-27
c6,0,11.5,1.2,16,4.6v-15.8c0-3,2.7-5.5,5.7-5.5s5.7,2.5,5.7,5.5V214.1z M282.9,230.4c8.9,0,16-7.2,16-16c0-8.8-7.2-16-16-16
c-8.9,0-16,7.2-16,16C266.9,223.2,274.1,230.4,282.9,230.4z"/>
</g>
<g>
<path class="st0" d="M225.7,241.7c-15.1,0-27.3-12.3-27.3-27.3s12.3-27.3,27.3-27.3s27.3,12.3,27.3,27.3l0,0
C253.1,229.5,240.9,241.7,225.7,241.7z M225.7,230.4c8.9,0,16-7.2,16-16c0-8.8-7.2-16-16-16c-8.9,0-16,7.2-16,16
C209.7,223.2,216.9,230.4,225.7,230.4z"/>
</g>
<g>
<g>
<path class="st0" d="M547.4,229.9c0.1,0,0.2,0,0.4,0c0.1,0,0.2,0.1,0.1,0.1v0.1c0,3.8,0,7.6,0,11.4c0,0.1,0,0.1,0,0.1
c-0.9,0-1.8,0-2.7,0c0-0.1,0-0.2,0-0.2c0-3.7,0-7.4,0-11.1c0-0.3-0.1-0.2,0.2-0.2c0.1,0,0.2,0,0.4,0
C546.4,229.9,546.9,229.9,547.4,229.9z"/>
</g>
<g>
<path class="st0" d="M520.6,200.7c-0.1,0.2-0.1,0.5-0.1,0.8c0,0.1-0.1,0.2-0.2,0.2c-0.4-0.1-0.9-0.1-1.3-0.2
c-1.5-0.2-3.2-0.4-4.7-0.6c-1.4-0.2-2.7-0.4-4.1-0.5c-0.4-0.1-0.8-0.1-1.2-0.2c-0.1-0.1-0.1-0.1-0.1-0.2c0.2-1.2,0.3-2.4,0.4-3.6
c0-0.1,0.1-0.2,0.2-0.2c1.1,0.1,2.1,0.2,3.2,0.4c1.2,0.2,2.6,0.4,3.7,0.5c1.4,0.2,2.7,0.4,4.1,0.5c0.4,0.1,0.4,0.1,0.3,0.4
c-0.1,0.3-0.1,0.6-0.1,1c-0.1,0-0.1,0.1-0.1,0.1c-0.1,0.4-0.1,0.9-0.2,1.4C520.6,200.7,520.6,200.7,520.6,200.7z"/>
</g>
<g>
<path class="st0" d="M572.9,206.4c0.1-0.2,0.1-0.6,0.1-0.8c0-0.1,0.1-0.1,0.2-0.1c1,0.1,2,0.2,3,0.4c1.1,0.1,2.1,0.2,3.2,0.4
c1.2,0.1,2.3,0.3,3.5,0.5c0.5,0.1,1.1,0.1,1.5,0.2c0.1,0,0.2,0.1,0.2,0.2c0.1,0.6-0.1,1.2-0.2,1.8c-0.1,0.6-0.2,1.2-0.2,1.7
c0,0.1-0.1,0.2-0.2,0.1c-1.4-0.2-2.8-0.4-4.2-0.6c-1.4-0.2-2.7-0.4-4-0.5c-1.1-0.1-2.1-0.2-3.1-0.4c-0.1,0-0.1-0.1-0.1-0.2
c0.1-0.4,0.1-0.7,0.1-1.1c0.1,0,0.1-0.1,0.1-0.1c0.1-0.4,0.1-0.9,0.2-1.3C573,206.6,573,206.5,572.9,206.4z"/>
</g>
<g>
<path class="st0" d="M571.1,213.7c0.1-0.2,0.2-0.4,0.3-0.7c0.1-0.1,0.1-0.1,0.2-0.1c2.2,1,4.4,2,6.6,3c1.2,0.6,2.4,1.1,3.7,1.7
c0.2,0.1,0.2,0.1,0.1,0.3c-0.5,1-0.9,2-1.4,3c-0.1,0.1-0.1,0.1-0.2,0.1c-2.3-1.1-4.6-2.1-7-3.2c-1.1-0.5-2.2-1-3.3-1.5
c-0.2-0.1-0.2-0.1-0.1-0.3c0.2-0.3,0.2-0.6,0.4-0.9c0.2-0.3,0.3-0.6,0.4-0.9C571,214.1,571.1,213.9,571.1,213.7z"/>
</g>
<g>
<path class="st0" d="M522.6,193.4c-0.1,0.2-0.2,0.5-0.4,0.7c-0.1,0.1-0.1,0.1-0.2,0.1c-1.2-0.6-2.6-1.1-3.8-1.7
c-1.5-0.7-3.2-1.4-4.8-2.2c-0.6-0.2-1.1-0.5-1.7-0.8c-0.1-0.1-0.1-0.1-0.1-0.2c0.5-1,1-2.1,1.4-3c0.1-0.1,0.1-0.1,0.2-0.1
c1,0.5,2.1,0.9,3,1.4c2.4,1.1,4.8,2.2,7.2,3.3c0.1,0.1,0.2,0.1,0.1,0.3c-0.1,0.2-0.2,0.5-0.4,0.8c-0.1,0.2-0.2,0.4-0.2,0.6
C522.8,192.7,522.6,193,522.6,193.4z"/>
</g>
<g>
<path class="st0" d="M567.2,220.1c0.1-0.2,0.2-0.3,0.4-0.5c0.1-0.1,0.1-0.1,0.2,0c2.1,1.9,4.3,3.7,6.5,5.6
c0.7,0.6,1.4,1.2,2.1,1.8c0.1,0.1,0.1,0.2,0.1,0.3c-0.7,0.8-1.4,1.5-2,2.4c-0.1,0.1-0.1,0.1-0.2,0c-1.9-1.7-3.9-3.3-5.8-5
c-0.9-0.8-1.8-1.6-2.8-2.4c-0.1-0.1-0.1-0.1,0-0.2c0.2-0.2,0.4-0.4,0.6-0.7"/>
</g>
<g>
<path class="st0" d="M526.4,186.9c-0.2,0.2-0.4,0.4-0.5,0.6c-0.1,0.1-0.1,0.1-0.2,0c-1.2-1-2.4-2-3.5-3c-1.4-1.2-2.7-2.4-4.1-3.6
c-0.3-0.2-0.6-0.5-1-0.8c-0.1-0.1-0.1-0.1-0.1-0.2c0.7-0.8,1.4-1.5,2-2.3c0.1-0.1,0.2-0.1,0.2-0.1c1.4,1.2,2.7,2.4,4.1,3.6
c1.5,1.2,3,2.6,4.5,3.9c0.1,0.1,0.1,0.1,0.1,0.2c-0.2,0.2-0.3,0.4-0.4,0.5c-0.1,0-0.1,0-0.1,0.1
C527.1,186.1,526.8,186.5,526.4,186.9C526.4,186.8,526.4,186.9,526.4,186.9z"/>
</g>
<g>
<path class="st0" d="M531.8,181.9c-0.1,0.1-0.2,0.2-0.4,0.2c-0.1,0.1-0.2,0.1-0.3-0.1c-0.7-1.1-1.4-2.1-2-3.2
c-1.4-2.1-2.7-4.2-4-6.3c-0.1-0.1-0.1-0.2,0.1-0.2c0.8-0.5,1.6-1,2.4-1.5c0.1-0.1,0.2-0.1,0.2,0.1c1,1.5,2,3.1,3,4.7
c1,1.6,2.1,3.2,3,4.8c0.2,0.2,0.2,0.2-0.1,0.4c-0.1,0.1-0.2,0.1-0.3,0.2c-0.1,0-0.1,0.1-0.2,0.1c-0.4,0.2-0.8,0.5-1.1,0.7
C532,181.8,531.9,181.8,531.8,181.9z"/>
</g>
<g>
<path class="st0" d="M561.7,225.3c0.2-0.1,0.4-0.2,0.5-0.4c0.1-0.1,0.2-0.1,0.2,0.1c0.8,1.2,1.5,2.4,2.3,3.6
c1.1,1.7,2.2,3.4,3.3,5.1c0.2,0.2,0.4,0.5,0.5,0.8c0.1,0.1,0.1,0.2-0.1,0.2c-0.8,0.5-1.6,1.1-2.4,1.5c-0.1,0.1-0.2,0.1-0.2-0.1
c-1.7-2.7-3.4-5.3-5.1-8c-0.4-0.5-0.7-1.1-1-1.5c-0.1-0.1-0.1-0.1,0.1-0.2c0.2-0.1,0.4-0.2,0.6-0.4"/>
</g>
<g>
<path class="st0" d="M554.9,228.6c0.2-0.1,0.4-0.1,0.5-0.1c0.1-0.1,0.2-0.1,0.2,0.1c0.4,1.4,0.8,2.9,1.2,4.3
c0.6,2.1,1.2,4.3,1.9,6.5c0.1,0.2,0.1,0.2-0.2,0.3c-0.8,0.2-1.6,0.5-2.4,0.7c-0.2,0.1-0.2,0-0.3-0.2c-0.4-1.2-0.7-2.4-1.1-3.6
c-0.7-2.4-1.4-4.8-2.1-7.1c-0.1-0.2-0.1-0.2,0.2-0.2c0.2-0.1,0.3-0.1,0.4-0.1C553.9,228.9,554.4,228.8,554.9,228.6z"/>
</g>
<g>
<path class="st0" d="M538.7,178.5c-0.2,0.1-0.4,0.1-0.5,0.1c-0.1,0.1-0.2,0-0.2-0.1c-0.2-0.8-0.5-1.6-0.7-2.4
c-0.8-2.6-1.5-5.2-2.3-7.9c-0.1-0.2-0.1-0.3-0.1-0.5c-0.1-0.1-0.1-0.2,0.1-0.2c0.7-0.2,1.5-0.4,2.2-0.7c0.5-0.1,0.4-0.1,0.6,0.3
c0.6,2,1.2,4,1.7,6c0.4,1.5,0.9,3,1.4,4.5c0.1,0.1,0,0.2-0.1,0.2c-0.2,0.1-0.3,0.1-0.4,0.1c-0.1-0.1-0.1,0-0.1,0
c-0.4,0.1-0.7,0.2-1.1,0.4C538.9,178.5,538.8,178.5,538.7,178.5z"/>
</g>
<g>
<path class="st0" d="M546.1,177.3c-0.5,0-0.5,0-0.5-0.5c0-3.6,0-7.3,0-11c0-0.2,0.1-0.2,0.2-0.2c0.8,0,1.5,0,2.4,0
c0.1,0,0.2,0.1,0.2,0.2c0,3.7,0,7.6,0,11.3c0,0.1-0.1,0.2-0.2,0.2c-0.1,0-0.3,0-0.4,0C547.2,177.2,546.7,177.2,546.1,177.3z"/>
</g>
<g>
<path class="st0" d="M540.1,229.1c0.4,0.1,0.4,0.1,0.2,0.4c-1,3.6-2.1,7.1-3,10.7c-0.1,0.2-0.1,0.2-0.2,0.1
c-0.7-0.2-1.4-0.4-2.1-0.6c-0.2-0.1-0.2-0.1-0.1-0.2c0.5-1.8,1.1-3.6,1.5-5.4c0.5-1.8,1.1-3.6,1.5-5.5c0.1-0.2,0.1-0.2,0.2-0.1
c0.1,0.1,0.2,0.1,0.4,0.1C539,228.8,539.6,228.9,540.1,229.1z"/>
</g>
<g>
<path class="st0" d="M553.6,178.2c-0.4-0.1-0.4-0.1-0.3-0.5c0.8-2.9,1.7-5.9,2.5-8.9c0.2-0.6,0.4-1.2,0.5-1.8
c0.1-0.1,0.1-0.2,0.2-0.1c0.7,0.2,1.4,0.4,2.2,0.6c0.2,0.1,0.1,0.1,0.1,0.2c-0.4,1.6-0.9,3.2-1.4,4.9c-0.6,2-1.1,4-1.7,6
c-0.1,0.2-0.1,0.2-0.3,0.2c-0.1-0.1-0.1-0.1-0.2-0.1c-0.3-0.1-0.7-0.2-1-0.3C554,178.2,553.8,178.2,553.6,178.2z"/>
</g>
<g>
<path class="st0" d="M560.3,181.2c-0.3-0.2-0.2-0.2-0.1-0.5c1.7-2.6,3.3-5.2,4.9-7.8c0.4-0.5,0.7-1.1,1-1.6
c0.1-0.1,0.1-0.1,0.2-0.1c0.6,0.4,1.1,0.7,1.7,1.1c0.1,0.1,0.1,0.1,0.1,0.2c-1,1.5-2,3-2.9,4.6c-1.1,1.6-2.1,3.2-3.1,4.9
c-0.1,0.2-0.2,0.2-0.4,0.1"/>
</g>
<g>
<path class="st0" d="M533.1,226.1c0.2,0.2,0.2,0.2,0.1,0.5c-1.2,1.9-2.4,3.7-3.6,5.6c-0.8,1.2-1.6,2.5-2.4,3.7
c-0.1,0.1-0.2,0.2-0.3,0.1c-0.5-0.4-1.1-0.7-1.6-1.1c-0.1-0.1-0.1-0.1-0.1-0.2c1.4-2.1,2.7-4.3,4.1-6.4c0.7-1,1.2-2,1.9-3
c0.1-0.2,0.1-0.2,0.4-0.1c0,0,0.1,0,0.1,0.1C532.3,225.5,532.7,225.8,533.1,226.1z"/>
</g>
<g>
<path class="st0" d="M527.4,221.4c0.1,0.1,0.1,0.2-0.1,0.3c-2.7,2.4-5.4,4.7-8.2,7c-0.1,0.1-0.2,0.2-0.4,0.4
c-0.1,0.1-0.1,0.1-0.2,0c-0.4-0.5-0.8-0.9-1.2-1.4c-0.1-0.1-0.1-0.1,0.1-0.2c0.7-0.6,1.4-1.2,2.1-1.8c1.4-1.2,2.7-2.4,4.1-3.6
c0.8-0.7,1.6-1.4,2.4-2.1c0.2-0.1,0.2-0.1,0.3,0.1C526.7,220.6,527.1,221,527.4,221.4z"/>
</g>
<g>
<path class="st0" d="M566.2,185.8c-0.1-0.1-0.1-0.2,0.1-0.4c2.1-1.8,4.2-3.7,6.4-5.5c0.7-0.6,1.4-1.2,2.1-1.8
c0.1-0.1,0.2-0.1,0.2,0c0.4,0.4,0.7,0.9,1.1,1.3c0.1,0.1,0.1,0.2-0.1,0.2c-2.1,1.8-4.2,3.6-6.2,5.4c-0.7,0.7-1.5,1.2-2.2,1.9
c-0.1,0.1-0.2,0.1-0.4,0C566.9,186.6,566.6,186.2,566.2,185.8z"/>
</g>
<g>
<path class="st0" d="M570.3,191.9c-0.1-0.1,0.1-0.1,0.1-0.2c0.9-0.4,1.8-0.8,2.7-1.2c1.2-0.5,2.3-1.1,3.5-1.6
c1.4-0.6,2.7-1.2,4-1.9c0.1-0.1,0.2-0.1,0.3,0.1c0.2,0.4,0.4,0.9,0.6,1.3c0.1,0.1,0.1,0.2-0.1,0.2c-1.8,0.8-3.6,1.7-5.5,2.5
c-1.6,0.7-3.2,1.5-4.9,2.2c-0.1,0.1-0.2,0.1-0.2-0.1C570.8,192.9,570.6,192.4,570.3,191.9z"/>
</g>
<g>
<path class="st0" d="M523.2,215.2c0.1,0.1-0.1,0.1-0.1,0.2c-1,0.4-1.9,0.9-2.9,1.4c-1.2,0.6-2.4,1.1-3.6,1.7
c-1.3,0.6-2.6,1.2-3.9,1.8c-0.1,0.1-0.1,0.1-0.2-0.1c-0.2-0.5-0.4-1-0.7-1.4c-0.1-0.1-0.1-0.2,0.1-0.2c2.7-1.2,5.4-2.4,8-3.7
c0.7-0.4,1.5-0.7,2.3-1.1c0.1-0.1,0.2-0.1,0.2,0C522.7,214.2,523,214.8,523.2,215.2z"/>
</g>
<g>
<path class="st0" d="M531.8,181.9c0.1-0.1,0.1-0.1,0.2-0.2c0.4-0.2,0.7-0.5,1.1-0.7c0.1-0.1,0.1-0.1,0.2-0.1
c0.4,0.7,0.8,1.4,1.2,2c1,1.7,2,3.3,3,4.9c0.5,0.9,1.1,1.7,1.5,2.6c0.1,0.1,0.1,0.2-0.1,0.2c-0.4,0.2-0.9,0.5-1.2,0.8
c-0.1,0.1-0.1,0.1-0.2-0.1c-1-1.6-1.9-3.2-2.9-4.8c-0.7-1.1-1.4-2.2-2.1-3.4c-0.2-0.4-0.5-0.8-0.7-1.2
C532,182,531.9,182,531.8,181.9z"/>
</g>
<g>
<path class="st0" d="M514.2,209c-1.6,0.2-3.2,0.4-4.8,0.7c-0.1,0-0.2,0-0.2-0.1c-0.1-0.4-0.1-0.9-0.2-1.3c0-0.1,0.1-0.2,0.1-0.2
c1.3-0.2,2.6-0.4,3.9-0.5c1.5-0.2,3-0.4,4.5-0.6c1-0.1,2-0.2,3-0.4c0.1,0.6,0.2,1.1,0.2,1.6"/>
</g>
<g>
<path class="st0" d="M572.8,199c1.4-0.2,2.9-0.4,4.4-0.6c1.3-0.2,2.7-0.4,4-0.5c1-0.1,2-0.2,3-0.4c0.2-0.1,0.2,0,0.2,0.2
c0.1,0.4,0.1,0.8,0.2,1.2c0,0.1,0,0.2-0.1,0.2c-1,0.1-1.9,0.2-2.9,0.4c-1.6,0.2-3.2,0.4-4.9,0.7c-1.2,0.2-2.4,0.3-3.6,0.5
c-0.1,0-0.1,0-0.1,0C572.9,200.1,572.8,199.5,572.8,199z"/>
</g>
<g>
<path class="st0" d="M546.1,177.3c0.5-0.1,1.1-0.1,1.6,0c0,3.7,0,7.4,0,11.1c0,0.2,0,0.2-0.2,0.2c-0.4,0-0.7,0-1.1,0
c-0.2,0-0.2-0.1-0.2-0.2c0-3.6,0-7.2,0-10.8C546.1,177.5,546.1,177.3,546.1,177.3z"/>
</g>
<g>
<path class="st0" d="M547.4,229.9c-0.5,0-1.1,0-1.6,0c0-3.7,0-7.4,0-11.1c0-0.2,0.1-0.2,0.2-0.2c0.4,0,0.8,0,1.2,0
c0.1,0,0.2,0.1,0.2,0.2c0,0.8,0,1.6,0,2.4C547.4,224.1,547.4,227,547.4,229.9z"/>
</g>
<g>
<path class="st0" d="M553.6,178.2c0.2,0,0.4,0.1,0.6,0.1c0.4,0.1,0.7,0.2,1,0.3c-0.1,0.2-0.2,0.5-0.2,0.8c-0.5,1.6-1,3.3-1.4,4.9
c-0.5,1.7-1,3.3-1.5,5c-0.1,0.1-0.1,0.2-0.2,0.1c-0.4-0.1-0.8-0.2-1.2-0.4c-0.1-0.1-0.1-0.1-0.1-0.2c0.4-1.2,0.7-2.4,1.1-3.7
c0.5-1.7,1-3.4,1.5-5.1C553.1,179.5,553.4,178.8,553.6,178.2z"/>
</g>
<g>
<path class="st0" d="M526.4,186.9c0-0.1,0-0.1,0.1-0.1c0.3-0.4,0.6-0.7,1-1.1c0.1-0.1,0.1-0.1,0.1-0.1c0.4,0.3,0.7,0.6,1,0.9
c0.5,0.5,1.1,1,1.5,1.4c1,0.9,2,1.8,3,2.7c0.6,0.6,1.2,1.1,1.8,1.7c0.2,0.2,0.5,0.5,0.8,0.7c0.1,0.1,0.1,0.1,0,0.2
c-0.3,0.3-0.6,0.7-0.8,1c-0.1,0.1-0.1,0.1-0.2,0.1c-0.3-0.3-0.6-0.6-1-0.8c-1.2-1.1-2.4-2.1-3.6-3.2c-1-0.9-1.9-1.7-2.9-2.6
C527.1,187.5,526.8,187.2,526.4,186.9z"/>
</g>
<g>
<path class="st0" d="M540.1,229.1c-0.5-0.1-1.1-0.2-1.5-0.4c0.4-1.1,0.7-2.3,1-3.4c0.4-1.4,0.8-2.7,1.2-4.1
c0.3-1.1,0.6-2.1,0.9-3.2c0.1-0.2,0.1-0.2,0.2-0.2c0.4,0.1,0.8,0.2,1.2,0.4c0.1,0.1,0.2,0.1,0.1,0.2c-0.5,1.7-1,3.4-1.5,5.1
c-0.5,1.7-1,3.5-1.5,5.2C540.1,228.8,540.1,228.9,540.1,229.1z"/>
</g>
<g>
<path class="st0" d="M522.6,193.4c0.1-0.3,0.2-0.6,0.4-0.9c0.1-0.2,0.1-0.4,0.2-0.6c0.7,0.3,1.3,0.6,2,0.9c1.5,0.7,3,1.4,4.5,2.1
c0.9,0.4,1.7,0.8,2.6,1.2c0.3,0.2,0.7,0.3,1,0.4c0.1,0.1,0.1,0.1,0.1,0.2c-0.2,0.4-0.4,0.8-0.5,1.2c-0.1,0.1-0.1,0.2-0.2,0.1
c-0.7-0.4-1.4-0.7-2.1-1c-1.9-0.9-3.9-1.8-5.8-2.7C524,194.1,523.3,193.7,522.6,193.4z"/>
</g>
<g>
<path class="st0" d="M571.1,213.7c-0.1,0.2-0.1,0.4-0.2,0.6c-0.1,0.3-0.2,0.6-0.4,0.9c-0.7-0.3-1.4-0.6-2.1-1
c-1.6-0.7-3.2-1.5-4.8-2.2c-0.8-0.4-1.6-0.7-2.4-1.1c-0.2-0.1-0.6-0.2-0.8-0.4c-0.1-0.1-0.1-0.1-0.1-0.2c0.2-0.4,0.4-0.8,0.6-1.2
c0.1-0.1,0.1-0.1,0.2-0.1c1.4,0.7,2.7,1.2,4.2,1.9C567.2,211.8,569.2,212.7,571.1,213.7C571.1,213.7,571.1,213.7,571.1,213.7z"/>
</g>
<g>
<path class="st0" d="M538.7,178.5c0.1-0.1,0.2-0.1,0.2-0.1c0.4-0.1,0.7-0.2,1.1-0.4c0.1,0,0.1-0.1,0.1,0c0.5,1.6,1,3.2,1.4,4.8
c0.4,1.2,0.7,2.4,1.1,3.6c0.2,0.7,0.4,1.5,0.7,2.2c0.1,0.1,0,0.2-0.1,0.2c-0.4,0.1-0.8,0.2-1.2,0.4c-0.2,0.1-0.2,0-0.2-0.2
c-0.3-1-0.6-2-0.9-3c-0.4-1.2-0.7-2.5-1.1-3.7C539.5,181.1,539.1,179.8,538.7,178.5z"/>
</g>
<g>
<path class="st0" d="M520.6,200.7c-0.1,0-0.1-0.1-0.1-0.1c0.1-0.4,0.1-0.9,0.2-1.4c0-0.1,0.1-0.1,0.1-0.1c0.9,0.1,1.7,0.2,2.6,0.4
c1,0.1,2.1,0.2,3,0.4c1,0.2,2,0.2,3,0.4c0.7,0.1,1.4,0.2,2.2,0.2c0.2,0,0.2,0.1,0.2,0.2c-0.1,0.4-0.1,0.8-0.2,1.2
c0,0.1-0.1,0.1-0.2,0.1c-0.9-0.1-1.8-0.2-2.7-0.4c-1-0.1-1.9-0.2-2.9-0.4c-0.9-0.1-1.8-0.2-2.7-0.4
C522.4,200.9,521.6,200.8,520.6,200.7C520.8,200.8,520.8,200.8,520.6,200.7z"/>
</g>
<g>
<path class="st0" d="M533.1,226.1c-0.4-0.3-0.9-0.6-1.4-0.9c0.3-0.4,0.5-0.8,0.8-1.2c0.7-1.1,1.4-2.1,2.1-3.2
c1.1-1.7,2.1-3.3,3.2-5c0.1-0.1,0.1-0.1,0.2-0.1c0.4,0.2,0.7,0.5,1.1,0.7c0.1,0.1,0.1,0.1,0.1,0.2c-0.5,0.7-0.9,1.4-1.4,2.2
c-1.5,2.4-3,4.7-4.5,7.1C533.2,226,533.2,226.1,533.1,226.1z"/>
</g>
<g>
<path class="st0" d="M560.4,181.1c0.5,0.2,0.9,0.6,1.4,0.9c-0.5,0.7-0.9,1.4-1.4,2.2c-1.5,2.4-3,4.8-4.6,7.2
c-0.1,0.1-0.1,0.1-0.2,0.1c-0.4-0.2-0.7-0.4-1.1-0.7c-0.1-0.1-0.2-0.1-0.1-0.2c0.8-1.2,1.5-2.4,2.3-3.6c1.2-1.9,2.4-3.8,3.6-5.7
C560.4,181.1,560.4,181.1,560.4,181.1z"/>
</g>
<g>
<path class="st0" d="M527.4,221.4c-0.4-0.4-0.7-0.8-1.1-1.2c1-0.9,2-1.7,3-2.6c1-0.9,2-1.7,3-2.6c0.8-0.7,1.7-1.4,2.5-2.1
c0.1-0.1,0.2-0.1,0.2,0.1c0.2,0.3,0.5,0.7,0.8,1c0.1,0.1,0.1,0.2,0,0.2c-0.6,0.5-1.2,1.1-1.8,1.6c-0.6,0.5-1.2,1.1-1.9,1.6
c-0.9,0.8-1.8,1.5-2.7,2.4C528.7,220.3,528,220.8,527.4,221.4z"/>
</g>
<g>
<path class="st0" d="M572.8,199c0.1,0.5,0.1,1.1,0.2,1.5c-0.4,0.1-0.7,0.1-1.1,0.2c-0.7,0.1-1.5,0.2-2.2,0.3
c-0.8,0.1-1.7,0.2-2.5,0.4c-0.8,0.1-1.7,0.2-2.5,0.4c-0.7,0.1-1.4,0.2-2.2,0.3c-0.2,0.1-0.4,0.1-0.7,0.1c-0.1,0.1-0.2-0.1-0.2-0.1
c-0.1-0.3-0.1-0.6-0.1-0.9c0-0.2-0.1-0.4,0-0.5c0.1-0.1,0.3-0.1,0.4-0.1c1.4-0.2,2.8-0.4,4.2-0.6c1.4-0.2,2.7-0.4,4-0.6
C571.2,199.2,571.9,199.2,572.8,199z"/>
</g>
<g>
<path class="st0" d="M554.9,228.8c-0.5,0.2-1,0.4-1.5,0.5c-0.2-1-0.6-2.2-0.9-3.2c-0.4-1.4-0.8-2.9-1.2-4.3
c-0.3-1.1-0.6-2.3-0.9-3.4c-0.1-0.1-0.1-0.2,0.1-0.2c0.4-0.1,0.8-0.2,1.2-0.4c0.1-0.1,0.2,0,0.2,0.1c0.4,1.5,0.8,3,1.2,4.5
c0.6,2,1.1,4,1.7,6.1C554.9,228.6,554.9,228.8,554.9,228.8z"/>
</g>
<g>
<path class="st0" d="M520.8,208.1c-0.1-0.5-0.1-1.1-0.2-1.5c1.2-0.2,2.4-0.4,3.6-0.5c1.1-0.1,2.2-0.3,3.3-0.5
c1.2-0.2,2.4-0.3,3.7-0.5c0.1,0,0.3-0.1,0.4-0.1c0.1,0,0.2,0,0.2,0.1c0.1,0.4,0.1,0.9,0.2,1.2c0,0.1-0.1,0.2-0.1,0.2
c-0.4,0.1-0.9,0.1-1.2,0.2c-0.7,0.1-1.4,0.2-2.2,0.3c-0.7,0.1-1.5,0.2-2.2,0.3c-0.7,0.1-1.4,0.2-2.1,0.3"/>
</g>
<g>
<path class="st0" d="M566.3,221.4c-1.4-1.2-2.9-2.5-4.3-3.7c-1.1-1-2.2-1.9-3.4-2.9c-0.2-0.2-0.5-0.5-0.8-0.7
c-0.1-0.1-0.1-0.1,0-0.2c0.2-0.3,0.5-0.6,0.8-0.9c0.1-0.1,0.2-0.1,0.3,0c0.4,0.4,0.9,0.8,1.4,1.2c0.9,0.7,1.7,1.5,2.6,2.3
c0.7,0.6,1.4,1.2,2,1.7c0.8,0.8,1.5,1.4,2.3,2.1c0,0.1-0.1,0.2-0.2,0.2"/>
</g>
<g>
<path class="st0" d="M572.9,206.4c0.1,0.1,0.1,0.1,0.1,0.2c-0.1,0.4-0.1,0.9-0.2,1.3c0,0.1,0,0.1-0.1,0.1
c-0.4-0.1-0.9-0.1-1.4-0.2c-0.8-0.1-1.7-0.2-2.6-0.4c-0.7-0.1-1.4-0.2-2.2-0.3c-0.7-0.1-1.4-0.2-2.2-0.3c-0.7-0.1-1.2-0.2-1.9-0.2
c-0.2-0.1-0.6-0.1-0.8-0.1c-0.1,0-0.1-0.1-0.1-0.2c0.1-0.4,0.1-0.9,0.2-1.3c0-0.1,0.1-0.1,0.2-0.1c0.4,0.1,0.7,0.1,1.1,0.1
c0.8,0.1,1.6,0.2,2.4,0.4c0.7,0.1,1.5,0.2,2.3,0.3c0.8,0.1,1.7,0.2,2.5,0.4c0.8,0.1,1.6,0.2,2.4,0.4
C572.7,206.4,572.8,206.4,572.9,206.4z"/>
</g>
<g>
<path class="st0" d="M566.2,185.8c0.4,0.4,0.7,0.8,1.1,1.2c-0.4,0.3-0.7,0.6-1.1,0.9c-0.9,0.8-1.8,1.5-2.8,2.4
c-0.8,0.7-1.7,1.4-2.4,2.1c-0.7,0.6-1.4,1.2-2.1,1.8c-0.1,0.1-0.2,0.1-0.4-0.1c-0.2-0.3-0.5-0.6-0.8-0.9c-0.1-0.1-0.1-0.2,0-0.2
c0.5-0.4,1-0.9,1.5-1.3c0.6-0.5,1.2-1.1,1.8-1.5c0.9-0.8,1.9-1.6,2.8-2.4C564.7,187.1,565.5,186.4,566.2,185.8z"/>
</g>
<g>
<path class="st0" d="M561.7,225.3c-0.1,0.2-0.4,0.2-0.6,0.4c-0.2,0.1-0.4,0.2-0.6,0.4c-0.1,0.1-0.1,0.1-0.2,0.1
c-0.2-0.5-0.6-1-0.9-1.5c-1.1-1.7-2.1-3.5-3.2-5.2c-0.6-0.9-1.1-1.8-1.7-2.7c-0.1-0.1-0.1-0.2,0.1-0.2c0.4-0.2,0.7-0.4,1.1-0.7
c0.1-0.1,0.2-0.1,0.2,0.1c1.5,2.4,3,4.9,4.5,7.4C560.8,223.9,561.2,224.6,561.7,225.3z"/>
</g>
<g>
<path class="st0" d="M523.2,215.2c-0.2-0.5-0.5-1-0.7-1.4c0.7-0.4,1.4-0.7,2.2-1c2-0.9,4-1.8,6-2.7c0.6-0.3,1.2-0.6,1.9-0.9
c0.1-0.1,0.2-0.1,0.2,0.1c0.2,0.4,0.4,0.8,0.5,1.2c0.1,0.1,0.1,0.1-0.1,0.2c-2.1,0.9-4,1.9-6.1,2.8c-1.1,0.5-2.3,1.1-3.4,1.5
C523.6,215.1,523.4,215.2,523.2,215.2z"/>
</g>
<g>
<path class="st0" d="M570.3,191.9c0.2,0.5,0.5,1,0.7,1.4c-0.4,0.2-0.7,0.4-1.1,0.5c-1,0.5-2,0.9-3,1.4c-1.5,0.7-3,1.4-4.6,2.1
c-0.5,0.2-1,0.4-1.5,0.7c-0.1,0.1-0.2,0.1-0.2-0.1c-0.2-0.4-0.4-0.8-0.6-1.2c-0.1-0.1,0-0.1,0.1-0.2c1.6-0.7,3.2-1.5,4.9-2.2
c1.2-0.5,2.3-1.1,3.5-1.6c0.6-0.2,1.1-0.5,1.7-0.7C570.3,192,570.3,192,570.3,191.9z"/>
</g>
</g>
<g>
<g>
<g>
<path class="st0" d="M599.3,214.7c0-8.1,2.2-14.5,6.5-19c4.3-4.6,9.9-6.8,16.8-6.8c4.5,0,8.6,1.1,12.2,3.2c3.6,2.1,6.4,5.2,8.3,9
c1.9,3.9,2.9,8.2,2.9,13.1c0,4.9-1,9.3-3,13.3c-2,3.9-4.8,6.8-8.5,8.9c-3.6,2-7.6,3-11.8,3c-4.6,0-8.7-1.1-12.3-3.3
c-3.6-2.2-6.4-5.2-8.2-9.1C600.2,223,599.3,219,599.3,214.7z M605.9,214.8c0,5.9,1.6,10.5,4.8,13.9c3.2,3.4,7.1,5.1,11.9,5.1
c4.9,0,8.9-1.7,12-5.1c3.2-3.4,4.7-8.3,4.7-14.5c0-4-0.7-7.4-2-10.4s-3.3-5.2-5.9-6.9c-2.6-1.6-5.5-2.4-8.7-2.4
c-4.6,0-8.5,1.5-11.8,4.7C607.6,202.2,605.9,207.4,605.9,214.8z"/>
</g>
<g>
<path class="st0" d="M622.7,241.4c-4.9,0-9.4-1.2-13.4-3.6s-7-5.8-9-10c-2-4-3-8.3-3-13.1c0-8.6,2.4-15.5,7.1-20.4
c4.7-4.9,10.9-7.5,18.3-7.5c4.9,0,9.3,1.2,13.3,3.5c3.9,2.3,7,5.6,9.1,9.8c2,4.2,3.1,8.9,3.1,14s-1.1,9.9-3.2,14.2
c-2.3,4.3-5.3,7.6-9.3,9.8C631.6,240.3,627.3,241.4,622.7,241.4z M622.7,191c-6.4,0-11.4,2-15.4,6.2c-4,4.1-6,10.1-6,17.6
c0,4.1,0.8,7.8,2.6,11.2c1.7,3.5,4.2,6.3,7.4,8.3c3.3,2,7.1,3,11.2,3c3.9,0,7.6-1,10.8-2.8c3.3-1.8,5.8-4.5,7.7-8
c1.8-3.6,2.7-7.8,2.7-12.3c0-4.6-0.9-8.6-2.6-12.2c-1.7-3.5-4.3-6.2-7.4-8.1C630.5,191.9,626.9,191,622.7,191z M622.6,235.8
c-5.4,0-9.9-1.9-13.5-5.7c-3.5-3.7-5.3-8.9-5.3-15.3c0-7.9,1.9-13.7,5.7-17.3c3.6-3.5,8.1-5.3,13.2-5.3c3.6,0,6.9,1,9.8,2.7
c2.9,1.9,5.2,4.5,6.7,7.8c1.5,3.2,2.2,6.9,2.2,11.3c0,6.8-1.8,12.2-5.2,16C632.6,233.8,628,235.8,622.6,235.8z M622.7,196.4
c-4.1,0-7.4,1.4-10.4,4.1c-2.9,2.8-4.3,7.6-4.3,14.3c0,5.3,1.4,9.5,4.2,12.4c2.7,3,6.1,4.4,10.4,4.4s7.7-1.4,10.5-4.5
c2.7-3,4.2-7.4,4.2-13.1c0-3.7-0.6-6.8-1.8-9.5c-1.2-2.6-2.9-4.5-5.1-6C628.1,197.1,625.5,196.4,622.7,196.4z"/>
</g>
</g>
<g>
<g>
<path class="st0" d="M693.7,221.3l6.4,1.6c-1.4,5.3-3.8,9.3-7.3,12.1s-7.8,4.2-12.9,4.2c-5.2,0-9.5-1.1-12.8-3.2
c-3.3-2.1-5.8-5.2-7.5-9.3c-1.7-4-2.6-8.4-2.6-13.1c0-5.1,1-9.5,2.9-13.3c2-3.8,4.7-6.7,8.3-8.6s7.5-2.9,11.8-2.9
c4.9,0,9,1.2,12.3,3.7c3.3,2.5,5.7,6,7,10.5l-6.4,1.5c-1.1-3.6-2.8-6.1-4.9-7.7c-2.1-1.6-4.9-2.4-8.1-2.4c-3.7,0-6.9,0.9-9.4,2.7
c-2.5,1.8-4.3,4.2-5.3,7.3c-1,3-1.5,6.1-1.5,9.3c0,4.2,0.6,7.8,1.8,10.9c1.2,3.1,3.1,5.4,5.7,7c2.6,1.5,5.3,2.3,8.3,2.3
c3.6,0,6.7-1.1,9.2-3.2C691,228.5,692.8,225.4,693.7,221.3z"/>
</g>
<g>
<path class="st0" d="M679.9,241.3c-5.7,0-10.4-1.2-13.9-3.6c-3.6-2.4-6.4-5.8-8.3-10.2c-1.8-4.2-2.7-8.9-2.7-13.9
c0-5.5,1.1-10.2,3.2-14.2c2.1-4.2,5.2-7.3,9.1-9.5c3.8-2.1,8.2-3.2,12.9-3.2c5.3,0,9.9,1.4,13.6,4.2c3.7,2.8,6.3,6.7,7.7,11.5
l0.6,2.1l-10.4,2.4l-0.6-1.8c-1-3.1-2.4-5.4-4.2-6.7c-1.8-1.4-4.1-2-6.8-2c-3.3,0-6.1,0.8-8.2,2.3c-2.1,1.5-3.7,3.6-4.5,6.2
c-1,2.9-1.4,5.8-1.4,8.7c0,3.9,0.5,7.3,1.7,10.1c1,2.6,2.6,4.6,4.8,6c2.3,1.4,4.6,2,7.2,2c3.1,0,5.7-0.9,7.9-2.7
c2.1-1.8,3.6-4.6,4.4-8.2l0.5-2.1l10.5,2.6l-0.5,2c-1.5,5.7-4.2,10.2-8,13.3C690.2,239.8,685.4,241.3,679.9,241.3z M680,190.9
c-4,0-7.6,0.9-10.8,2.7c-3.2,1.8-5.7,4.3-7.4,7.7c-1.8,3.4-2.7,7.6-2.7,12.3c0,4.5,0.8,8.5,2.4,12.3c1.5,3.6,3.8,6.4,6.7,8.3
s6.8,2.9,11.7,2.9c4.7,0,8.5-1.2,11.6-3.7c2.7-2.1,4.7-5.2,6-9l-2.3-0.6c-1.1,3.5-2.9,6.3-5.2,8.4c-2.9,2.4-6.4,3.6-10.5,3.6
c-3.3,0-6.5-0.9-9.3-2.6c-3-1.8-5.2-4.5-6.5-8c-1.2-3.3-1.9-7.3-1.9-11.7c0-3.4,0.5-6.7,1.7-10c1.1-3.5,3.2-6.2,6.1-8.3
c2.9-2,6.4-3.1,10.6-3.1c3.7,0,6.8,1,9.3,2.9c2.1,1.6,3.8,3.9,5,7l2.3-0.5c-1.2-3-3-5.5-5.5-7.3C688.1,192,684.4,190.9,680,190.9
z"/>
</g>
</g>
<g>
<g>
<path class="st0" d="M707.2,238.5l18.7-48.8h7l19.9,48.8h-7.4l-5.7-14.8h-20.4l-5.4,14.8H707.2z M721.3,218.4h16.5l-5.1-13.5
c-1.5-4.1-2.7-7.5-3.5-10.1c-0.6,3.2-1.5,6.2-2.6,9.3L721.3,218.4z"/>
</g>
<g>
<path class="st0" d="M729.4,187.6h5l21.7,53h-11.9l-5.7-14.8h-17.5l-5.4,14.8h-11.2l20.2-53h4 M746.9,236.4h2.9l-18.2-44.6h-1
l0.7,2.4c0.8,2.9,2,6.3,3.4,10l6.2,16.3h-22.6l6.4-17.1c1.1-3.2,2-6.1,2.5-9l0.5-2.7h-0.4l-17.1,44.6h2.3l5.4-14.8h23.3
L746.9,236.4z M724.4,216.3h10.5l-4-10.7c-0.4-1.2-0.8-2.3-1.2-3.5c-0.3,0.9-0.6,1.7-0.9,2.6L724.4,216.3z"/>
</g>
</g>
</g>
<g>
<path class="st1" d="M327.3,257c1.3-0.2,3-0.4,5.3-0.4c2.7,0,4.7,0.7,6,1.8c1.2,1,1.8,2.6,1.8,4.5c0,1.9-0.6,3.5-1.7,4.5
c-1.4,1.5-3.8,2.3-6.5,2.3c-0.8,0-1.5-0.1-2.2-0.2v8.5h-2.7V257z M330,267.3c0.6,0.2,1.4,0.2,2.3,0.2c3.3,0,5.4-1.6,5.4-4.5
c0-2.8-2-4.2-5-4.2c-1.2,0-2.1,0.1-2.6,0.2L330,267.3L330,267.3z"/>
<path class="st1" d="M352,278l-0.2-1.9h-0.1c-0.8,1.2-2.5,2.3-4.6,2.3c-3.1,0-4.6-2.2-4.6-4.4c0-3.7,3.3-5.7,9.2-5.7V268
c0-1.2-0.4-3.5-3.5-3.5c-1.4,0-2.9,0.4-4,1.1l-0.7-1.8c1.2-0.8,3.1-1.4,5-1.4c4.6,0,5.8,3.2,5.8,6.2v5.7c0,1.3,0.1,2.6,0.2,3.6H352
L352,278z M351.6,270.2c-3-0.1-6.5,0.5-6.5,3.5c0,1.8,1.2,2.7,2.6,2.7c2,0,3.3-1.2,3.7-2.6c0.1-0.3,0.2-0.6,0.2-0.9V270.2z"/>
<path class="st1" d="M359.2,267.6c0-1.8-0.1-3.3-0.1-4.8h2.4l0.1,3h0.1c0.7-2,2.4-3.3,4.2-3.3c0.3,0,0.5,0.1,0.8,0.1v2.6
c-0.3-0.1-0.6-0.1-1-0.1c-2,0-3.3,1.5-3.7,3.6c-0.1,0.4-0.1,0.8-0.1,1.3v8.1h-2.7V267.6z"/>
<path class="st1" d="M374.1,258.4v4.4h4v2.1h-4v8.2c0,1.9,0.5,3,2.1,3c0.7,0,1.2-0.1,1.6-0.2l0.1,2.1c-0.5,0.2-1.4,0.4-2.4,0.4
c-1.3,0-2.3-0.4-3-1.2c-0.8-0.8-1.1-2.2-1.1-4v-8.3H369v-2.1h2.4v-3.6L374.1,258.4z"/>
<path class="st1" d="M381.6,266.9c0-1.5-0.1-2.9-0.1-4.1h2.4l0.2,2.5h0.1c0.8-1.4,2.5-2.9,5.1-2.9c2.1,0,5.4,1.2,5.4,6.5v9.1h-2.8
v-8.8c0-2.4-0.9-4.5-3.5-4.5c-1.8,0-3.3,1.3-3.7,2.9c-0.1,0.4-0.2,0.8-0.2,1.3v9.2h-2.8L381.6,266.9L381.6,266.9z"/>
<path class="st1" d="M401.1,270.9c0.1,3.7,2.4,5.3,5.2,5.3c2,0,3.2-0.4,4.2-0.8l0.5,2c-1,0.4-2.7,1-5.1,1c-4.7,0-7.5-3.1-7.5-7.7
c0-4.6,2.7-8.2,7.1-8.2c5,0,6.3,4.4,6.3,7.2c0,0.6-0.1,1-0.1,1.3L401.1,270.9L401.1,270.9L401.1,270.9z M409.2,268.9
c0.1-1.8-0.7-4.5-3.9-4.5c-2.8,0-4,2.6-4.3,4.5H409.2z"/>
<path class="st1" d="M415.8,267.6c0-1.8-0.1-3.3-0.1-4.8h2.4l0.1,3h0.1c0.7-2,2.4-3.3,4.2-3.3c0.3,0,0.5,0.1,0.8,0.1v2.6
c-0.3-0.1-0.6-0.1-1-0.1c-2,0-3.3,1.5-3.7,3.6c-0.1,0.4-0.1,0.8-0.1,1.3v8.1h-2.7V267.6z"/>
</g>
<g>
<path class="st1" d="M614.7,277.4c-1,0.5-3,1-5.6,1c-6,0-10.5-3.8-10.5-10.8c0-6.7,4.5-11.2,11.1-11.2c2.7,0,4.3,0.6,5.1,1
l-0.7,2.3c-1-0.5-2.5-0.9-4.3-0.9c-5,0-8.3,3.2-8.3,8.7c0,5.2,3,8.6,8.2,8.6c1.7,0,3.4-0.4,4.5-0.9L614.7,277.4z"/>
<path class="st1" d="M631.9,270.3c0,5.7-3.9,8.1-7.6,8.1c-4.1,0-7.3-3-7.3-7.9c0-5.1,3.3-8.1,7.6-8.1
C629,262.4,631.9,265.6,631.9,270.3z M619.9,270.5c0,3.3,1.9,5.9,4.6,5.9c2.7,0,4.6-2.5,4.6-6c0-2.6-1.3-5.9-4.6-5.9
C621.2,264.5,619.9,267.6,619.9,270.5z"/>
<path class="st1" d="M635.9,266.9c0-1.5-0.1-2.9-0.1-4.1h2.4l0.2,2.5h0.1c0.8-1.4,2.5-2.9,5.1-2.9c2.1,0,5.4,1.2,5.4,6.5v9.1h-2.8
v-8.8c0-2.4-0.9-4.5-3.5-4.5c-1.8,0-3.3,1.3-3.7,2.9c-0.1,0.4-0.2,0.8-0.2,1.3v9.2h-2.8V266.9z"/>
<path class="st1" d="M657.1,258.4v4.4h4v2.1h-4v8.2c0,1.9,0.5,3,2.1,3c0.7,0,1.2-0.1,1.6-0.2l0.1,2.1c-0.5,0.2-1.4,0.4-2.4,0.4
c-1.3,0-2.3-0.4-3-1.2c-0.8-0.8-1.1-2.2-1.1-4v-8.3H652v-2.1h2.4v-3.6L657.1,258.4z"/>
<path class="st1" d="M664.6,267.6c0-1.8-0.1-3.3-0.1-4.8h2.4l0.1,3h0.1c0.7-2,2.4-3.3,4.2-3.3c0.3,0,0.5,0.1,0.8,0.1v2.6
c-0.3-0.1-0.6-0.1-1-0.1c-2,0-3.3,1.5-3.7,3.6c-0.1,0.4-0.1,0.8-0.1,1.3v8.1h-2.7V267.6z"/>
<path class="st1" d="M678.5,258.5c0.1,1-0.7,1.7-1.8,1.7c-1,0-1.7-0.8-1.7-1.7s0.7-1.7,1.7-1.7
C677.9,256.8,678.5,257.5,678.5,258.5z M675.4,278v-15.2h2.8V278H675.4z"/>
<path class="st1" d="M683.2,278c0.1-1,0.1-2.6,0.1-3.9v-18.4h2.7v9.6h0.1c1-1.7,2.7-2.8,5.2-2.8c3.8,0,6.5,3.2,6.4,7.8
c0,5.5-3.5,8.2-6.8,8.2c-2.2,0-4-0.8-5.1-2.9h-0.1l-0.1,2.5H683.2z M686,271.9c0,0.4,0.1,0.7,0.1,1c0.5,1.9,2.1,3.3,4.2,3.3
c2.9,0,4.6-2.4,4.6-5.9c0-3-1.6-5.7-4.5-5.7c-1.9,0-3.6,1.3-4.2,3.4c-0.1,0.3-0.2,0.7-0.2,1.1L686,271.9L686,271.9z"/>
<path class="st1" d="M714.4,273.9c0,1.5,0.1,3,0.1,4.2h-2.4l-0.2-2.5h-0.1c-0.7,1.2-2.3,2.9-5.1,2.9c-2.4,0-5.2-1.3-5.2-6.7v-8.9
h2.8v8.5c0,2.9,0.9,4.9,3.4,4.9c1.8,0,3.2-1.3,3.6-2.5c0.2-0.4,0.2-0.9,0.2-1.4v-9.3h2.8L714.4,273.9L714.4,273.9z"/>
<path class="st1" d="M722.8,258.4v4.4h4v2.1h-4v8.2c0,1.9,0.5,3,2.1,3c0.7,0,1.2-0.1,1.6-0.2l0.1,2.1c-0.5,0.2-1.4,0.4-2.4,0.4
c-1.3,0-2.3-0.4-3-1.2c-0.8-0.8-1.1-2.2-1.1-4v-8.3h-2.4v-2.1h2.4v-3.6L722.8,258.4z"/>
<path class="st1" d="M744,270.3c0,5.7-3.9,8.1-7.6,8.1c-4.1,0-7.3-3-7.3-7.9c0-5.1,3.3-8.1,7.6-8.1C741,262.4,744,265.6,744,270.3z
M731.9,270.5c0,3.3,1.9,5.9,4.6,5.9c2.7,0,4.6-2.5,4.6-6c0-2.6-1.3-5.9-4.6-5.9C733.3,264.5,731.9,267.6,731.9,270.5z"/>
<path class="st1" d="M747.9,267.6c0-1.8-0.1-3.3-0.1-4.8h2.4l0.1,3h0.1c0.7-2,2.4-3.3,4.2-3.3c0.3,0,0.5,0.1,0.8,0.1v2.6
c-0.3-0.1-0.6-0.1-1-0.1c-2,0-3.3,1.5-3.7,3.6c-0.1,0.4-0.1,0.8-0.1,1.3v8.1h-2.7V267.6L747.9,267.6z"/>
<path class="st1" d="M646.9,312.6c1.2,0.8,3,1.4,4.9,1.4c2.8,0,4.5-1.5,4.5-3.6c0-2-1.1-3.1-4-4.2c-3.5-1.2-5.6-3-5.6-6
c0-3.3,2.7-5.8,6.9-5.8c2.2,0,3.7,0.5,4.7,1l-0.8,2.3c-0.7-0.4-2.1-1-4-1c-2.9,0-4,1.7-4,3.2c0,2,1.3,3,4.2,4.1
c3.6,1.4,5.4,3.1,5.4,6.2c0,3.3-2.4,6.1-7.4,6.1c-2,0-4.3-0.6-5.4-1.4L646.9,312.6z"/>
<path class="st1" d="M663.2,305.6c0-2-0.1-3.5-0.1-5h2.5l0.1,2.6h0.1c1.1-1.8,2.9-3,5.4-3c3.7,0,6.5,3.1,6.5,7.7
c0,5.5-3.3,8.2-7,8.2c-2,0-3.8-0.9-4.7-2.4h-0.1v8.3h-2.7V305.6z M665.9,309.7c0,0.4,0.1,0.8,0.1,1.1c0.5,1.9,2.2,3.3,4.2,3.3
c2.9,0,4.6-2.4,4.6-5.9c0-3-1.6-5.7-4.5-5.7c-1.9,0-3.6,1.4-4.2,3.5c-0.1,0.4-0.2,0.8-0.2,1.1L665.9,309.7L665.9,309.7z"/>
<path class="st1" d="M695.4,308.1c0,5.7-3.9,8.1-7.6,8.1c-4.1,0-7.3-3-7.3-7.9c0-5.1,3.3-8.1,7.6-8.1
C692.4,300.3,695.4,303.4,695.4,308.1z M683.2,308.3c0,3.3,1.9,5.9,4.6,5.9c2.7,0,4.6-2.5,4.6-6c0-2.6-1.3-5.9-4.6-5.9
C684.7,302.4,683.2,305.4,683.2,308.3z"/>
<path class="st1" d="M699.3,304.8c0-1.5-0.1-2.9-0.1-4.1h2.4l0.2,2.5h0.1c0.8-1.4,2.5-2.9,5.1-2.9c2.1,0,5.4,1.2,5.4,6.5v9.1h-2.8
v-8.8c0-2.4-0.9-4.5-3.5-4.5c-1.8,0-3.3,1.3-3.7,2.9c-0.1,0.4-0.2,0.8-0.2,1.3v9.2h-2.8L699.3,304.8L699.3,304.8z"/>
<path class="st1" d="M716.9,313.1c0.8,0.5,2.3,1.1,3.6,1.1c2,0,3-1,3-2.3c0-1.3-0.8-2-2.9-2.8c-2.7-1-4-2.5-4-4.3
c0-2.4,2-4.5,5.2-4.5c1.5,0,2.9,0.4,3.7,1l-0.7,2c-0.6-0.4-1.7-0.9-3.1-0.9c-1.7,0-2.6,1-2.6,2.1c0,1.2,0.9,1.8,2.9,2.6
c2.7,1,4,2.3,4,4.6c0,2.7-2.1,4.6-5.7,4.6c-1.7,0-3.2-0.4-4.3-1L716.9,313.1z"/>
<path class="st1" d="M744,308.1c0,5.7-3.9,8.1-7.6,8.1c-4.1,0-7.3-3-7.3-7.9c0-5.1,3.3-8.1,7.6-8.1C741,300.3,744,303.4,744,308.1z
M731.9,308.3c0,3.3,1.9,5.9,4.6,5.9c2.7,0,4.6-2.5,4.6-6c0-2.6-1.3-5.9-4.6-5.9C733.3,302.4,731.9,305.4,731.9,308.3z"/>
<path class="st1" d="M747.9,305.4c0-1.8-0.1-3.3-0.1-4.8h2.4l0.1,3h0.1c0.7-2,2.4-3.3,4.2-3.3c0.3,0,0.5,0.1,0.8,0.1v2.6
c-0.3-0.1-0.6-0.1-1-0.1c-2,0-3.3,1.5-3.7,3.6c-0.1,0.4-0.1,0.8-0.1,1.3v8.2h-2.7V305.4L747.9,305.4z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
<style type="text/css">
.st0{fill:#039BE5;}
.st1{opacity:0.1;fill:#FFFFFF;enable-background:new ;}
.st2{opacity:5.000000e-02;enable-background:new ;}
.st3{fill:#303C42;}
.st4{opacity:0.1;enable-background:new ;}
.st5{opacity:0.2;enable-background:new ;}
.st6{fill:#69B342;}
.st7{fill:#C6CDD1;}
.st8{fill:url(#SVGID_1_);}
.st9{fill:url(#SVGID_2_);}
.st10{fill:url(#SVGID_3_);}
</style>
<circle class="st0" cx="11.1" cy="11.1" r="9.2"/>
<path class="st1" d="M11.1,2c-3.8,0-7,2.3-8.4,5.5h16.8C18.1,4.2,14.9,2,11.1,2z"/>
<path class="st2" d="M2.7,14.8c1.4,3.2,4.6,5.5,8.4,5.5s7-2.3,8.4-5.5H2.7z"/>
<path class="st1" d="M7.5,11.1C7.5,6.1,8.6,2,11.1,2C6.1,2,2,6.1,2,11.1s4.1,9.2,9.2,9.2C8.6,20.3,7.5,16.2,7.5,11.1z"/>
<path class="st2" d="M11.1,2c2.5,0,3.7,4.1,3.7,9.2s-1.1,9.2-3.7,9.2c5.1,0,9.2-4.1,9.2-9.2S16.2,2,11.1,2z"/>
<path class="st3" d="M6.5,16.2h14.7V18H6.5V16.2z"/>
<path class="st4" d="M6.5,16.2h14.7V18H6.5V16.2z"/>
<path class="st3" d="M21.2,16.6H6.5c-0.5,0-0.9-0.4-0.9-0.9V13c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9v2.7
C22.1,16.2,21.7,16.6,21.2,16.6z"/>
<path class="st1" d="M21.2,12.1H6.5c-0.5,0-0.9,0.4-0.9,0.9v0.2c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9V13
C22.1,12.5,21.7,12.1,21.2,12.1z"/>
<path class="st5" d="M21.2,16.4H6.5c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.5,0.4,0.9,0.9,0.9h14.7c0.5,0,0.9-0.4,0.9-0.9v-0.2
C22.1,16,21.7,16.4,21.2,16.4z"/>
<path class="st3" d="M21.2,22.1H6.5c-0.5,0-0.9-0.4-0.9-0.9v-2.7c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9v2.7
C22.1,21.7,21.7,22.1,21.2,22.1z"/>
<circle class="st6" cx="19.8" cy="19.8" r="0.5"/>
<circle class="st6" cx="18" cy="19.8" r="0.5"/>
<circle class="st6" cx="16.2" cy="19.8" r="0.5"/>
<circle class="st7" cx="7.9" cy="19.8" r="0.9"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="7.336" y1="6.7378" x2="8.3616" y2="5.7121" gradientTransform="matrix(1 0 0 -1 0 26)">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<circle class="st8" cx="7.9" cy="19.8" r="0.9"/>
<circle class="st6" cx="19.8" cy="14.3" r="0.5"/>
<circle class="st6" cx="18" cy="14.3" r="0.5"/>
<circle class="st6" cx="16.2" cy="14.3" r="0.5"/>
<path class="st1" d="M21.2,17.6H6.5c-0.5,0-0.9,0.4-0.9,0.9v0.2c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9v-0.2
C22.1,18,21.7,17.6,21.2,17.6z"/>
<path class="st5" d="M21.2,21.9H6.5c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.5,0.4,0.9,0.9,0.9h14.7c0.5,0,0.9-0.4,0.9-0.9V21
C22.1,21.5,21.7,21.9,21.2,21.9z"/>
<circle class="st7" cx="7.9" cy="14.3" r="0.9"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="7.336" y1="12.2373" x2="8.3616" y2="11.2116" gradientTransform="matrix(1 0 0 -1 0 26)">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<circle class="st9" cx="7.9" cy="14.3" r="0.9"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="2.2175" y1="17.461" x2="23.5011" y2="7.5369" gradientTransform="matrix(1 0 0 -1 0 26)">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<path class="st10" d="M22.1,15.7V13c0-0.5-0.4-0.9-0.9-0.9h-1c0-0.3,0-0.6,0-0.9c0-5.1-4.1-9.2-9.2-9.2S2,6.1,2,11.1
c0,3,1.4,5.6,3.7,7.3l0,0v2.7c0,0.5,0.4,0.9,0.9,0.9h14.7c0.5,0,0.9-0.4,0.9-0.9v-2.7c0-0.5-0.4-0.9-0.9-0.9v-0.9
C21.7,16.6,22.1,16.2,22.1,15.7z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Слой_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#29A1DC;}
.st1{fill:#FFFFFF;}
</style>
<circle class="st0" cx="100.5" cy="99.8" r="92.2"/>
<path class="st1" d="M113.4,127.1c0.6,0.3,0.7,1,0.2,1.5c-3.1,2.8-6.6,5.2-10.3,7.1c-6.6,3.2-13.8,4.8-21,4.7
c-7.2-0.3-14.3-2.2-20.4-5.7s-11.3-8.5-15.1-14.4c-3.7-5.9-5.8-12.6-6.4-19.4c-0.4-6.8,0.8-13.7,3.5-19.8c1.5-3,3.1-5.9,5.2-8.5
c2.1-2.6,4.5-5,7.1-7c5.2-4,11.4-6.7,17.8-7.8c-6.3,1.5-12.2,4.6-16.9,8.9c-2.4,2.1-4.5,4.5-6.2,7.1c-1.8,2.6-3.1,5.5-4.3,8.4
c-2.1,5.9-2.7,12.2-1.9,18.3c0.9,6.1,3.3,11.8,6.8,16.7c3.6,4.8,8.4,8.7,13.7,11.3c5.3,2.5,11.3,3.7,17,3.4c5.8-0.3,11.4-2,16.3-4.9
c1.9-1.2,3.8-2.5,5.4-4c0.3-0.3,0.7-0.3,1-0.1L113.4,127.1z"/>
<path class="st1" d="M131.5,143.1c0.4,0.4,0.3,1.1-0.1,1.4c-0.2,0.2-0.4,0.4-0.6,0.6c-2.6,2.3-5.4,4.4-8.3,6.3c-2.9,1.9-6,3.5-9.2,5
c-3.2,1.4-6.4,2.6-9.8,3.5c-13.3,3.6-27.7,2.9-40.4-1.9c-12.8-4.8-23.8-13.5-31.2-24.7c-7.4-11.1-11-24.4-10.6-37.6
c0.4-13.1,5.2-25.9,13.2-36.1c7.9-10.2,19-17.7,31.3-21.2c12.2-3.5,25.4-3.2,37.2,1c5.9,2.1,11.4,5.1,16.3,8.8s9.2,8.2,12.7,13.3
c-3.8-4.8-8.3-9-13.4-12.4c-5-3.4-10.6-6-16.4-7.7c-11.6-3.4-24.1-2.9-35.2,1c-11.2,3.9-20.9,11.4-27.5,21
c-6.6,9.5-10.1,21-9.8,32.4c0.3,11.4,4.2,22.6,10.9,31.5c6.7,8.9,16.3,15.5,26.7,18.7c10.5,3.3,21.8,3.1,32-0.3
c8.1-2.7,15.4-7.4,21.2-13.6c0.4-0.4,1.1-0.5,1.5-0.1c0.6,0.6,1.3,1.3,1.8,1.9C123.8,134,129.5,140.8,131.5,143.1z"/>
<path class="st1" d="M171.3,74.2l-35.9,43.7l2,4.1l4.1,8.6c0.7,1.5,0.4,3.3-0.8,4.5l-2.9,2.7c-0.2,0.2-0.4,0.2-0.7,0.2
c-0.1,0-0.2-0.1-0.3-0.2c0,0-0.1,0-0.1-0.1l-7.9-9.4c-0.8-0.9-1.6-1.8-2.5-2.6c-0.7-0.6-1.3-1.2-2.1-1.8c-1.4-1.1-2.9-2.2-4.6-3
c-0.3-0.2-0.5-0.3-0.8-0.4l-9.3-4.8l-1.7-0.9c-0.3-0.2-0.5-0.6-0.3-1l2-3.4c0.9-1.5,2.6-2.2,4.2-1.8l13.8,3.1l14-18.1L112.9,81
c-0.4-0.2-0.5-0.7-0.3-1l4.5-5.6c1.8-2.3,4.8-3.4,7.7-3l30.3,5.1l7.5-9.6c1.7-2.2,3.9-3.9,6.4-5l3.5-1.5c0.5-0.2,1-0.2,1.4-0.1
c0.3,0.1,0.5,0.2,0.7,0.3l0,0c0.5,0.5,0.9,1.2,0.7,2l-0.6,3.7C174.4,69.2,173.1,71.9,171.3,74.2z"/>
<g>
<path class="st1" d="M175.6,119.1l-4.5,5.6c-0.2,0.2-0.5,0.3-0.7,0.2c-0.1,0-0.3-0.1-0.4-0.3l-17.3-23.3l13.5-16.1l10.6,25.8
C177.9,113.7,177.5,116.8,175.6,119.1z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D9DBDC;}
.st1{opacity:0.1;fill:#010101;enable-background:new ;}
.st2{opacity:0.2;fill:#FFFFFF;enable-background:new ;}
.st3{fill:#818181;}
.st4{fill:url(#SVGID_1_);}
.st5{fill:url(#SVGID_2_);}
.st6{fill:#333333;}
.st7{opacity:5.000000e-02;fill:#FFFFFF;enable-background:new ;}
.st8{fill:url(#SVGID_3_);}
.st9{fill:url(#SVGID_4_);}
.st10{fill:#00425A;}
.st11{fill:#27A0DA;}
</style>
<path class="st0" d="M1.1,14.7v1.8c0,1,0.8,1.8,1.8,1.8h6.4c0,0.7-0.2,1.9-0.6,2.5c-0.2,0.2-0.5,0.3-0.7,0.3s-0.5,0.2-0.5,0.5
S7.6,22,7.9,22h8.2c0.3,0,0.5-0.2,0.5-0.5s-0.2-0.5-0.5-0.5c-0.3,0-0.5-0.1-0.7-0.3c-0.5-0.5-0.6-1.7-0.6-2.5h6.4
c1,0,1.8-0.8,1.8-1.8v-1.8H1.1z"/>
<path class="st1" d="M21.1,18.2H2.9c-1,0-1.8-0.8-1.8-1.8v0.2c0,1,0.8,1.8,1.8,1.8h18.2c1,0,1.8-0.8,1.8-1.8v-0.3
C22.9,17.3,22.1,18.2,21.1,18.2z"/>
<path class="st2" d="M7.9,21.3h8.2c0.2,0,0.4,0.2,0.5,0.4v-0.1c0-0.3-0.2-0.5-0.5-0.5H7.9c-0.3-0.1-0.5,0.1-0.5,0.4v0.1
C7.6,21.4,7.7,21.3,7.9,21.3z"/>
<path class="st3" d="M12,17.7c-0.4,0-0.6-0.4-0.6-0.7c0-0.4,0.3-0.6,0.6-0.6s0.6,0.4,0.6,0.7C12.6,17.3,12.4,17.6,12,17.7z"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="11.3652" y1="-732.7223" x2="12.6001" y2="-733.298" gradientTransform="matrix(1 0 0 -1 0 -716)">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<path class="st4" d="M12,17.7c-0.4,0-0.6-0.4-0.6-0.7c0-0.4,0.3-0.6,0.6-0.6s0.6,0.4,0.6,0.7C12.6,17.3,12.4,17.6,12,17.7z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="10.8905" y1="-733.225" x2="14.6633" y2="-736.9988" gradientTransform="matrix(1 0 0 -1 0 -716)">
<stop offset="0" style="stop-color:#010101;stop-opacity:0.1"/>
<stop offset="1" style="stop-color:#010101;stop-opacity:0"/>
</linearGradient>
<path class="st5" d="M15.4,20.8c-0.5-0.5-0.6-1.7-0.6-2.5H9.3l2.7,2.7h4.1C15.8,21.1,15.5,21,15.4,20.8z"/>
<path class="st6" d="M22.9,3.8c0-1-0.8-1.8-1.8-1.8H2.9c-1,0-1.8,0.8-1.8,1.8v11.8h21.8V3.8z"/>
<path class="st7" d="M2.9,2.3h18.2c1,0,1.8,0.8,1.8,1.8V3.8c0-1-0.8-1.8-1.8-1.8H2.9c-1,0-1.8,0.8-1.8,1.8v0.3
C1.1,3,1.9,2.3,2.9,2.3z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="0.2378" y1="-721.2634" x2="23.3135" y2="-732.0244" gradientTransform="matrix(1 0 0 -1 0 -716)">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<path class="st8" d="M21.1,2H2.9c-1,0-1.8,0.8-1.8,1.8v12.7c0,1,0.8,1.8,1.8,1.8h6.4c0,0.7-0.2,1.9-0.6,2.5
c-0.2,0.2-0.5,0.3-0.7,0.3s-0.5,0.2-0.5,0.5S7.6,22,7.9,22h8.2c0.3,0,0.5-0.2,0.5-0.5s-0.2-0.5-0.5-0.5c-0.3,0-0.5-0.1-0.7-0.3
c-0.5-0.5-0.6-1.7-0.6-2.5h6.4c1,0,1.8-0.8,1.8-1.8V3.8C22.9,2.8,22.1,2,21.1,2z"/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="1.7228" y1="746.1478" x2="22.4117" y2="755.7944" gradientTransform="matrix(1 0 0 1 0 -742)">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<path class="st9" d="M22,3.7c0-0.5-0.4-0.8-0.7-0.8H2.7C2.4,2.9,2,3.3,2,3.7v11h20V3.7z"/>
<path class="st10" d="M6.7,13.8c-0.3,0-0.5-0.1-0.6-0.3c-0.4-0.4-0.4-1,0-1.4l3.1-3.1L6.1,5.9c-0.4-0.4-0.4-1,0-1.4
c0.4-0.4,1-0.4,1.4,0l3.8,3.8c0.4,0.4,0.4,1,0,1.4l-3.8,3.8C7.3,13.7,7,13.8,6.7,13.8z M17.3,13.8h-4.7c-0.5,0-0.9-0.5-0.9-0.9
s0.5-0.9,0.9-0.9h4.7c0.5,0,0.9,0.5,0.9,0.9S17.7,13.8,17.3,13.8z"/>
<g>
<path class="st11" d="M6.7,13.3c-0.3,0-0.5-0.1-0.6-0.3c-0.4-0.4-0.4-1,0-1.4l3.1-3.1L6.1,5.4c-0.4-0.4-0.4-1,0-1.4
c0.4-0.4,1-0.4,1.4,0l3.8,3.8c0.4,0.4,0.4,1,0,1.4l-3.8,3.8C7.3,13.2,7,13.3,6.7,13.3z"/>
</g>
<g>
<path class="st11" d="M17.3,13.3h-4.7c-0.5,0-0.9-0.5-0.9-0.9c0-0.5,0.5-0.9,0.9-0.9h4.7c0.5,0,0.9,0.5,0.9,0.9
S17.7,13.3,17.3,13.3z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
<style type="text/css">
.st0{fill:#303C42;}
.st1{opacity:0.1;enable-background:new ;}
.st2{opacity:0.2;enable-background:new ;}
.st3{opacity:0.1;fill:#FFFFFF;enable-background:new ;}
.st4{fill:#428EB3;}
.st5{fill:#C6CDD1;}
.st6{fill:url(#SVGID_1_);}
.st7{fill:url(#SVGID_2_);}
.st8{fill:#29A1DC;}
.st9{opacity:0.2;fill:#FFFFFF;enable-background:new ;}
.st10{fill:url(#SVGID_3_);}
</style>
<path class="st0" d="M2,7.5h18.2v2.7H2V7.5z"/>
<path class="st1" d="M2,7.5h18.2v2.7H2V7.5z"/>
<path class="st0" d="M1.1,3.8v3.6C1.1,8,1.5,8.4,2,8.4h18.2c0.5,0,0.9-0.4,0.9-0.9V3.8c0-0.5-0.4-0.9-0.9-0.9H2
C1.5,2.9,1.1,3.3,1.1,3.8z"/>
<path class="st2" d="M20.2,8.1H2c-0.5,0-0.9-0.4-0.9-0.9v0.2C1.1,8,1.5,8.4,2,8.4h18.2c0.5,0,0.9-0.4,0.9-0.9V7.2
C21.1,7.7,20.7,8.1,20.2,8.1z"/>
<path class="st3" d="M20.2,2.9H2c-0.5,0-0.9,0.4-0.9,0.9v0.2c0-0.5,0.4-0.9,0.9-0.9h18.2c0.5,0,0.9,0.4,0.9,0.9V3.8
C21.1,3.3,20.7,2.9,20.2,2.9z"/>
<circle class="st4" cx="17.9" cy="5.6" r="0.5"/>
<circle class="st4" cx="16.1" cy="5.6" r="0.5"/>
<circle class="st4" cx="14.3" cy="5.6" r="0.5"/>
<circle class="st5" cx="4.7" cy="5.6" r="0.9"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="4.1628" y1="20.9292" x2="5.1788" y2="19.9133" gradientTransform="matrix(1 0 0 -1 0 26)">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<circle class="st6" cx="4.7" cy="5.6" r="0.9"/>
<path class="st0" d="M1.1,10.2v3.6c0,0.5,0.4,0.9,0.9,0.9h18.2c0.5,0,0.9-0.4,0.9-0.9v-3.6c0-0.5-0.4-0.9-0.9-0.9H2
C1.5,9.3,1.1,9.7,1.1,10.2z"/>
<path class="st2" d="M20.2,14.5H2c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.5,0.4,0.9,0.9,0.9h18.2c0.5,0,0.9-0.4,0.9-0.9v-0.2
C21.1,14.1,20.7,14.5,20.2,14.5z"/>
<path class="st3" d="M20.2,9.3H2c-0.5,0-0.9,0.4-0.9,0.9v0.2c0-0.5,0.4-0.9,0.9-0.9h18.2c0.5,0,0.9,0.4,0.9,0.9v-0.2
C21.1,9.7,20.7,9.3,20.2,9.3z"/>
<circle class="st4" cx="17.9" cy="12" r="0.5"/>
<circle class="st4" cx="16.1" cy="12" r="0.5"/>
<circle class="st4" cx="14.3" cy="12" r="0.5"/>
<circle class="st5" cx="4.7" cy="12" r="0.9"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="4.1628" y1="14.5738" x2="5.1788" y2="13.5578" gradientTransform="matrix(1 0 0 -1 0 26)">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<circle class="st7" cx="4.7" cy="12" r="0.9"/>
<path class="st8" d="M22.4,13.8h-4.4l-0.9-0.9h-3.8c-0.3,0-0.5,0.2-0.5,0.5v7.3c0,0.3,0.2,0.5,0.5,0.5h9.1c0.3,0,0.5-0.2,0.5-0.5
v-6.4C22.9,14,22.7,13.8,22.4,13.8z"/>
<path class="st9" d="M22.4,13.8h-4.4l-0.9-0.9h-3.8c-0.3,0-0.5,0.2-0.5,0.5v0.2c0-0.3,0.2-0.5,0.5-0.5h3.8l0.9,0.9h4.4
c0.3,0,0.5,0.2,0.5,0.5v-0.2C22.9,14,22.7,13.8,22.4,13.8z"/>
<path class="st1" d="M22.4,20.9h-9.1c-0.3,0-0.5-0.2-0.5-0.5v0.2c0,0.3,0.2,0.5,0.5,0.5h9.1c0.3,0,0.5-0.2,0.5-0.5v-0.2
C22.9,20.6,22.7,20.9,22.4,20.9z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="0.7043" y1="21.5139" x2="25.1518" y2="10.1132" gradientTransform="matrix(1 0 0 -1 0 26)">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<path class="st10" d="M22.4,13.8h-1.4v-3.6c0-0.5-0.4-0.9-0.9-0.9V8.4c0.5,0,0.9-0.4,0.9-0.9V3.8c0-0.5-0.4-0.9-0.9-0.9H2
c-0.5,0-0.9,0.4-0.9,0.9v3.6C1.1,8,1.5,8.4,2,8.4v0.9c-0.5,0-0.9,0.4-0.9,0.9v3.6c0,0.5,0.4,0.9,0.9,0.9h10.9v5.9
c0,0.3,0.2,0.5,0.5,0.5h9.1c0.3,0,0.5-0.2,0.5-0.5v-6.4C22.9,14,22.7,13.8,22.4,13.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

View File

@@ -0,0 +1,380 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
<style type="text/css">
.st0{fill:none;}
.st1{fill:#173E51;}
.st2{fill:#51BCF0;}
.st3{fill:#29A1DC;}
.st4{fill:#1381B7;}
.st5{fill:#D1D6D8;}
.st6{fill:#C0C2C3;}
.st7{fill:url(#SVGID_24_);}
.st8{fill:#CECECE;}
.st9{fill:#727272;}
.st10{fill:url(#SVGID_25_);}
.st11{fill:url(#SVGID_26_);}
.st12{fill:url(#SVGID_27_);}
.st13{fill:url(#SVGID_28_);}
.st14{fill:url(#SVGID_29_);}
.st15{fill:url(#SVGID_30_);}
.st16{fill:url(#SVGID_31_);}
.st17{fill:url(#SVGID_32_);}
.st18{fill:url(#SVGID_33_);}
.st19{fill:url(#SVGID_34_);}
.st20{fill:url(#SVGID_35_);}
.st21{fill:url(#SVGID_36_);}
.st22{fill:url(#SVGID_37_);}
.st23{fill:url(#SVGID_38_);}
.st24{fill:url(#SVGID_39_);}
.st25{fill:url(#SVGID_40_);}
.st26{fill:url(#SVGID_41_);}
.st27{fill:url(#SVGID_42_);}
.st28{fill:url(#SVGID_43_);}
.st29{fill:url(#SVGID_44_);}
.st30{fill:url(#SVGID_45_);}
.st31{fill:url(#SVGID_46_);}
</style>
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_1_" viewBox="0 -99 103.5 99" style="overflow:visible;">
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
</g>
</g>
</pattern>
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_10_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
<path class="st2" d="M0-40.5h37.5V0H0V-40.5z"/>
</g>
</g>
</pattern>
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_11_" viewBox="0 -99 103.5 99" style="overflow:visible;">
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
</g>
</g>
</pattern>
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_12_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
<path class="st2" d="M0-40.5h37.5V0H0V-40.5z"/>
</g>
</g>
</pattern>
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_13_" viewBox="0 -99 103.5 99" style="overflow:visible;">
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
</g>
</g>
</pattern>
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_14_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
<path class="st2" d="M0-40.5h37.5V0H0V-40.5z"/>
</g>
</g>
</pattern>
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_15_" viewBox="0 -99 103.5 99" style="overflow:visible;">
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
</g>
</g>
</pattern>
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_16_" viewBox="0 -99 103.5 99" style="overflow:visible;">
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
</g>
</g>
</pattern>
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_17_" viewBox="0 -99 103.5 99" style="overflow:visible;">
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
</g>
</g>
</pattern>
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_18_" viewBox="0 -99 103.5 99" style="overflow:visible;">
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
</g>
</g>
</pattern>
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_19_" viewBox="0 -99 103.5 99" style="overflow:visible;">
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
</g>
</g>
</pattern>
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_2_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
<path class="st3" d="M0-40.5h37.5V0H0V-40.5z"/>
</g>
</g>
</pattern>
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_20_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
<path class="st3" d="M0-40.5h37.5V0H0V-40.5z"/>
</g>
</g>
</pattern>
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_21_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
<path class="st4" d="M0-40.5h37.5V0H0V-40.5z"/>
</g>
</g>
</pattern>
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_22_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
<path class="st5" d="M0-40.5h37.5V0H0V-40.5z"/>
</g>
</g>
</pattern>
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_23_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
<path class="st2" d="M0-40.5h37.5V0H0V-40.5z"/>
</g>
</g>
</pattern>
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_3_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
<path class="st4" d="M0-40.5h37.5V0H0V-40.5z"/>
</g>
</g>
</pattern>
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_4_" viewBox="0 -99 103.5 99" style="overflow:visible;">
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
</g>
</g>
</pattern>
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_5_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
<path class="st5" d="M0-40.5h37.5V0H0V-40.5z"/>
</g>
</g>
</pattern>
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_6_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
<path class="st6" d="M0-40.5h37.5V0H0V-40.5z"/>
</g>
</g>
</pattern>
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_7_" viewBox="0 -99 103.5 99" style="overflow:visible;">
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
</g>
</g>
</pattern>
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_8_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<g>
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
<path class="st2" d="M0-40.5h37.5V0H0V-40.5z"/>
</g>
</g>
</pattern>
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_9_" viewBox="0 -99 103.5 99" style="overflow:visible;">
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<g>
<rect y="-99" class="st0" width="103.5" height="99"/>
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
</g>
</g>
</pattern>
<pattern id="SVGID_24_" xlink:href="#SVGID_1_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
</pattern>
<path class="st7" d="M15.9,4.3h-1.6V4c0-0.4-0.3-0.7-0.8-0.7h-1.6c-0.1,0-0.2,0-0.2-0.1c0-0.1,0-0.3-0.1-0.4
c-0.2-0.5-0.7-0.9-1.3-0.9C9.9,1.8,9.4,2,9,2.3c-0.3,0.3-0.5,0.6-0.5,1c0,0,0,0,0,0c0,0-0.1,0-0.1,0H6.8C6.4,3.3,6,3.6,6,4v0.3H4.5
C3.7,4.3,3,4.9,3,5.8v14.6c0,0.8,0.7,1.5,1.5,1.5h11.4c0.8,0,1.5-0.7,1.5-1.5V5.8C17.4,4.9,16.7,4.3,15.9,4.3z M6.7,4
c0,0,0.1-0.1,0.2-0.1h1.6c0.2,0,0.4-0.1,0.6-0.2c0.1-0.1,0.2-0.3,0.2-0.5l0,0c0-0.2,0.1-0.3,0.3-0.5c0.3-0.2,0.6-0.3,0.9-0.3
c0.3,0.1,0.7,0.3,0.8,0.6c0,0.1,0,0.1,0,0.2c0,0.2,0.1,0.3,0.2,0.4c0.2,0.2,0.3,0.3,0.6,0.3h1.6c0.1,0,0.2,0.1,0.2,0.1v1.2
c0,0-0.1,0.1-0.2,0.1H6.8c-0.1,0-0.1,0-0.2-0.1C6.7,5.2,6.7,4,6.7,4z M16.8,20.4c0,0.5-0.4,0.9-0.9,0.9H4.5c0,0-0.1,0-0.1,0
s0,0-0.1,0s-0.1,0-0.1,0c0,0-0.1,0-0.1,0S4,21.2,4,21.1c0,0-0.1-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1c0,0,0-0.1-0.1-0.1
c0,0-0.1-0.1-0.1-0.1c-0.1-0.1-0.1-0.3-0.1-0.4V5.8c0-0.5,0.4-0.9,0.9-0.9h1.6v0.3c0,0.4,0.3,0.7,0.8,0.7h6.7c0.4,0,0.8-0.3,0.8-0.7
V4.9h1.6c0.2,0,0.3,0,0.4,0.1l0,0c0.1,0,0.1,0.1,0.2,0.1c0,0,0,0,0.1,0.1c0.1,0.1,0.1,0.1,0.1,0.2c0,0,0,0.1,0.1,0.1
c0,0,0,0.1,0,0.1c0,0,0,0.1,0,0.1s0,0,0,0.1s0,0.1,0,0.1L16.8,20.4L16.8,20.4z"/>
<path class="st8" d="M16.8,5.7C16.8,5.7,16.8,5.7,16.8,5.7c0-0.1,0-0.1,0-0.2c0,0,0-0.1,0-0.1c0,0,0-0.1-0.1-0.1
c0-0.1-0.1-0.1-0.1-0.2C16.5,5.1,16.4,5,16.3,5l0,0c-0.1-0.1-0.3-0.1-0.4-0.1h-1.6v0.3c0,0.4-0.3,0.7-0.8,0.7H6.8
c-0.4,0-0.8-0.3-0.8-0.7V4.9H4.5C4,4.9,3.6,5.3,3.6,5.8v14.6c0,0.2,0,0.3,0.1,0.4c0,0,0,0.1,0.1,0.1c0,0.1,0,0.1,0.1,0.1
c0,0,0.1,0.1,0.1,0.1c0,0,0.1,0.1,0.1,0.1c0,0,0.1,0,0.1,0.1c0.1,0,0.1,0,0.1,0.1c0,0,0.1,0,0.1,0s0,0,0.1,0s0.1,0,0.1,0h11.4
c0.5,0,0.9-0.4,0.9-0.9L16.8,5.7C16.8,5.7,16.8,5.7,16.8,5.7z M4.6,6.9c0-0.2,0.1-0.3,0.3-0.3h10.7c0.2,0,0.3,0.1,0.3,0.3v13.3
c0,0.2-0.1,0.3-0.3,0.3H4.8c-0.2,0-0.3-0.1-0.3-0.3L4.6,6.9L4.6,6.9z"/>
<path class="st9" d="M16.8,5.8v14.6c0,0.5-0.4,0.9-0.9,0.9H4.5c-0.3,0-0.7-0.2-0.8-0.5c0.1,0.1,0.3,0.1,0.4,0.1h11.4
c0.5,0,0.9-0.4,0.9-0.9V5.4c0-0.2,0-0.3-0.1-0.4C16.6,5.1,16.8,5.4,16.8,5.8z"/>
<pattern id="SVGID_25_" xlink:href="#SVGID_2_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
</pattern>
<path class="st10" d="M13.7,4v1.2c0,0-0.1,0.1-0.2,0.1H6.8c-0.1,0-0.1,0-0.2-0.1V4c0,0,0.1-0.1,0.2-0.1h1.6c0.2,0,0.4-0.1,0.6-0.2
c0.1-0.1,0.2-0.3,0.2-0.5l0,0c0-0.2,0.1-0.3,0.3-0.5c0.3-0.2,0.6-0.3,0.9-0.3c0.3,0.1,0.7,0.3,0.8,0.6c0,0.1,0,0.1,0,0.2
c0,0.2,0.1,0.3,0.2,0.4c0.2,0.2,0.3,0.3,0.6,0.3L13.7,4C13.7,3.9,13.7,4,13.7,4z"/>
<pattern id="SVGID_26_" xlink:href="#SVGID_3_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
</pattern>
<path class="st11" d="M13.7,4v1.2c0,0-0.1,0.1-0.2,0.1H6.8c-0.1,0-0.1,0-0.2-0.1V4.8H13c0.1,0,0.2,0,0.2-0.1V3.9h0.4
C13.7,3.9,13.7,4,13.7,4z"/>
<pattern id="SVGID_27_" xlink:href="#SVGID_4_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
</pattern>
<path class="st12" d="M15.5,6.6H4.8c-0.2,0-0.3,0.1-0.3,0.3v13.3c0,0.2,0.1,0.3,0.3,0.3h10.7c0.2,0,0.3-0.1,0.3-0.3V6.9
C15.9,6.7,15.7,6.6,15.5,6.6L15.5,6.6z M15.2,19.9H5.2V7.2h10.1V19.9z"/>
<pattern id="SVGID_28_" xlink:href="#SVGID_5_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
</pattern>
<path class="st13" d="M5.2,7.2v12.7h10.1V7.2H5.2z M8.6,18.8c0,0.2-0.1,0.3-0.3,0.3H6.8c-0.2,0-0.3-0.1-0.3-0.3v-1.5
c0-0.2,0.1-0.3,0.3-0.3h1.5c0.2,0,0.3,0.1,0.3,0.3V18.8z M8.6,15.8c0,0.2-0.1,0.3-0.3,0.3H6.8c-0.2,0-0.3-0.1-0.3-0.3v-1.5
c0-0.2,0.1-0.3,0.3-0.3h1.5c0.2,0,0.3,0.1,0.3,0.3V15.8z M8.6,12.8c0,0.2-0.1,0.3-0.3,0.3H6.8c-0.2,0-0.3-0.1-0.3-0.3v-1.5
c0-0.2,0.1-0.3,0.3-0.3h1.5c0.2,0,0.3,0.1,0.3,0.3V12.8z M8.6,9.8c0,0.2-0.1,0.3-0.3,0.3H6.8c-0.2,0-0.3-0.1-0.3-0.3V8.2
c0-0.2,0.1-0.3,0.3-0.3h1.5c0.2,0,0.3,0.1,0.3,0.3V9.8z M13.6,18.4H9.5c-0.2,0-0.3-0.1-0.3-0.3c0-0.2,0.1-0.3,0.3-0.3h4.1
c0.2,0,0.3,0.1,0.3,0.3C13.9,18.2,13.7,18.4,13.6,18.4z M13.6,15.4H9.5c-0.2,0-0.3-0.1-0.3-0.3s0.1-0.3,0.3-0.3h4.1
c0.2,0,0.3,0.1,0.3,0.3S13.7,15.4,13.6,15.4z M13.6,12.3H9.5c-0.2,0-0.3-0.1-0.3-0.3s0.1-0.3,0.3-0.3h4.1c0.2,0,0.3,0.1,0.3,0.3
S13.7,12.3,13.6,12.3z M13.6,9.3H9.5C9.3,9.3,9.2,9.2,9.2,9c0-0.2,0.1-0.3,0.3-0.3h4.1c0.2,0,0.3,0.1,0.3,0.3
C13.9,9.2,13.7,9.3,13.6,9.3z"/>
<pattern id="SVGID_29_" xlink:href="#SVGID_6_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
</pattern>
<path class="st14" d="M15.2,7.2v12.7H5.2v-0.6h9.5V7.2H15.2z"/>
<pattern id="SVGID_30_" xlink:href="#SVGID_7_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
</pattern>
<path class="st15" d="M8.3,8H6.8C6.7,8,6.5,8.1,6.5,8.3v1.5c0,0.2,0.1,0.3,0.3,0.3h1.5c0.2,0,0.3-0.1,0.3-0.3V8.3
C8.6,8.1,8.5,8,8.3,8z M8,9.5H7.1V8.6H8V9.5z"/>
<pattern id="SVGID_31_" xlink:href="#SVGID_8_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
</pattern>
<path class="st16" d="M7.1,8.6H8v0.9H7.1V8.6z"/>
<pattern id="SVGID_32_" xlink:href="#SVGID_9_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
</pattern>
<path class="st17" d="M8.3,11H6.8c-0.2,0-0.3,0.1-0.3,0.3v1.5c0,0.2,0.1,0.3,0.3,0.3h1.5c0.2,0,0.3-0.1,0.3-0.3v-1.5
C8.6,11.1,8.5,11,8.3,11z M8,12.5H7.1v-0.9H8V12.5z"/>
<pattern id="SVGID_33_" xlink:href="#SVGID_10_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
</pattern>
<path class="st18" d="M7.1,11.6H8v0.9H7.1V11.6z"/>
<pattern id="SVGID_34_" xlink:href="#SVGID_11_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
</pattern>
<path class="st19" d="M8.3,14H6.8c-0.2,0-0.3,0.1-0.3,0.3v1.5c0,0.2,0.1,0.3,0.3,0.3h1.5c0.2,0,0.3-0.1,0.3-0.3v-1.5
C8.6,14.2,8.5,14,8.3,14z M8,15.5H7.1v-0.9H8V15.5z"/>
<pattern id="SVGID_35_" xlink:href="#SVGID_12_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
</pattern>
<path class="st20" d="M7.1,14.6H8v0.9H7.1V14.6z"/>
<pattern id="SVGID_36_" xlink:href="#SVGID_13_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
</pattern>
<path class="st21" d="M8.3,17H6.8c-0.2,0-0.3,0.1-0.3,0.3l0,0v1.5c0,0.2,0.1,0.3,0.3,0.3h1.5c0.2,0,0.3-0.1,0.3-0.3v-1.5
C8.6,17.2,8.5,17,8.3,17z M8,18.6H7.1v-0.9H8V18.6z"/>
<pattern id="SVGID_37_" xlink:href="#SVGID_14_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
</pattern>
<path class="st22" d="M7.1,17.7H8v0.9H7.1V17.7z"/>
<pattern id="SVGID_38_" xlink:href="#SVGID_15_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
</pattern>
<path class="st23" d="M13.9,9c0,0.2-0.1,0.3-0.3,0.3H9.5C9.3,9.3,9.2,9.2,9.2,9c0-0.2,0.1-0.3,0.3-0.3h4.1C13.7,8.7,13.9,8.9,13.9,9
z"/>
<pattern id="SVGID_39_" xlink:href="#SVGID_16_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
</pattern>
<path class="st24" d="M13.9,12.1c0,0.2-0.1,0.3-0.3,0.3H9.5c-0.2,0-0.3-0.1-0.3-0.3s0.1-0.3,0.3-0.3h4.1
C13.7,11.7,13.9,11.9,13.9,12.1z"/>
<pattern id="SVGID_40_" xlink:href="#SVGID_17_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
</pattern>
<path class="st25" d="M13.9,15.1c0,0.2-0.1,0.3-0.3,0.3H9.5c-0.2,0-0.3-0.1-0.3-0.3s0.1-0.3,0.3-0.3h4.1
C13.7,14.8,13.9,14.9,13.9,15.1z"/>
<pattern id="SVGID_41_" xlink:href="#SVGID_18_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
</pattern>
<path class="st26" d="M13.9,18.1c0,0.2-0.1,0.3-0.3,0.3H9.5c-0.2,0-0.3-0.1-0.3-0.3c0-0.2,0.1-0.3,0.3-0.3h4.1
C13.7,17.8,13.9,17.9,13.9,18.1z"/>
<pattern id="SVGID_42_" xlink:href="#SVGID_19_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
</pattern>
<path class="st27" d="M21,19.3C21,19.3,20.9,19.3,21,19.3l0-9.4l0,0v0c0,0,0-0.1,0-0.1l0,0l-1-2.3c-0.1-0.1-0.2-0.2-0.3-0.2
s-0.2,0.1-0.3,0.2l-0.9,2.3l0,0c0,0,0,0,0,0.1s0,0,0,0.1l0,0l0,10.7c0,0.7,0.6,1.3,1.3,1.3l0,0h0.1c0.3,0,0.6-0.1,0.9-0.4
c0.2-0.2,0.4-0.5,0.4-0.9V19.3C20.9,19.3,20.9,19.3,21,19.3z M19.6,8.4l0.5,1.3h-1L19.6,8.4z M20.3,10.2l0,8.8H19l0-8.8
C19,10.3,20.3,10.2,20.3,10.2z M20.2,21.1c-0.1,0.1-0.3,0.2-0.4,0.2h-0.1c-0.2,0-0.3-0.1-0.4-0.2S19,20.8,19,20.7v-1h1.3v1
C20.4,20.8,20.3,21,20.2,21.1z"/>
<pattern id="SVGID_43_" xlink:href="#SVGID_20_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
</pattern>
<path class="st28" d="M20.4,19H19l0-8.8h1.3L20.4,19z"/>
<pattern id="SVGID_44_" xlink:href="#SVGID_21_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
</pattern>
<path class="st29" d="M20.4,19H19v-0.4h1.1l0-8.4h0.3L20.4,19z"/>
<pattern id="SVGID_45_" xlink:href="#SVGID_22_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
</pattern>
<path class="st30" d="M20.2,9.7h-1l0.5-1.3L20.2,9.7z"/>
<pattern id="SVGID_46_" xlink:href="#SVGID_23_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
</pattern>
<path class="st31" d="M20.4,20.6c0,0.2-0.1,0.3-0.2,0.4c-0.1,0.1-0.3,0.2-0.4,0.2h-0.1c-0.2,0-0.3-0.1-0.4-0.2
c-0.1-0.1-0.2-0.3-0.2-0.4v-1h1.3V20.6z"/>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
<style type="text/css">
.st0{fill:#29A1DC;}
.st1{clip-path:url(#SVGID_2_);fill:#7DBCE7;}
.st2{fill:#010101;}
.st3{fill:#F5CCB3;}
.st4{fill:#FFFFFF;}
.st5{fill:#AF5C51;}
.st6{fill:#C4E5D9;}
</style>
<path class="st0" d="M18.6,19.8c0,1.3-2.9,2.3-6.5,2.3s-6.5-1-6.5-2.3c0-1.3,2.9-2.3,6.5-2.3S18.6,18.5,18.6,19.8z"/>
<g>
<defs>
<path id="SVGID_1_" d="M9.3,23.8c0.1,0.7,0.5,1.1,0.8,1.3h3.7c0.5-0.3,0.9-0.9,0.9-2v-2.8c0,0,0.1-0.7,0.7-0.9c0,0,0.4-0.3,0-0.4
c0,0-1.8-0.1-1.8,1.3v2.1c0,0,0.1,0.8-0.3,1.1V21c0,0,0-0.8,0.5-1.2c0,0,0.3-0.5-0.3-0.4c0,0-1.2,0.2-1.3,1.6l0,2.7h-0.3l0-2.7
c-0.1-1.4-1.3-1.6-1.3-1.6c-0.6-0.1-0.3,0.4-0.3,0.4c0.4,0.3,0.5,1.2,0.5,1.2v2.7c-0.4-0.3-0.3-1.1-0.3-1.1v-2.1
c0-1.4-1.8-1.3-1.8-1.3c-0.4,0.1,0,0.4,0,0.4c0.6,0.2,0.7,0.9,0.7,0.9v2L9.3,23.8L9.3,23.8z"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
</clipPath>
<path class="st1" d="M18.6,19.8c0,1.3-2.9,2.3-6.5,2.3s-6.5-1-6.5-2.3c0-1.3,2.9-2.3,6.5-2.3S18.6,18.5,18.6,19.8z"/>
</g>
<path class="st0" d="M4.7,13.1l-0.2,0.6c0,0,0,0.2,0.2,0.3c0.2,0,0.2-0.2,0.2-0.3L4.7,13.1L4.7,13.1z"/>
<path class="st2" d="M23.5,10.4L23.5,10.4c-1.9-0.5-3.8-0.5-5-0.4c0.2-0.7,0.3-1.5,0.3-2.4c0-1.3-0.5-2.3-1.3-3.1
C17.6,4,17.8,3,17.3,1.8c0,0-0.9-0.3-2.9,1.1c-0.8-0.2-1.6-0.3-2.5-0.3c-0.9,0-1.8,0.1-2.7,0.4c-2.1-1.4-3-1.1-3-1.1
C5.7,3.3,6,4.4,6.1,4.6C5.4,5.4,5,6.4,5,7.6c0,0.9,0.1,1.7,0.4,2.4c-1.2,0-3.1,0-4.9,0.3l0,0.1C2.3,10,4.2,10,5.4,10
c0.1,0.1,0.1,0.3,0.2,0.4c-1.2,0-3.2,0.2-5.1,0.7l0,0.1c1.9-0.5,3.9-0.7,5.1-0.7c0.7,1.3,2.1,2.1,4.5,2.4c-0.4,0.2-0.7,0.6-0.8,1.3
c-0.5,0.2-2,0.8-2.9-0.8c0,0-0.5-0.9-1.5-1c0,0-0.9,0-0.1,0.6c0,0,0.6,0.3,1.1,1.4c0,0,0.6,1.9,3.3,1.3v1.9c0,0-0.1,0.7-0.7,0.9
c0,0-0.4,0.3,0,0.4c0,0,1.8,0.1,1.8-1.3v-2.1c0,0-0.1-0.8,0.3-1.1V18c0,0,0,0.8-0.5,1.2c0,0-0.3,0.5,0.3,0.4c0,0,1.2-0.2,1.3-1.6
l0-3.5h0.3l0,3.5c0.1,1.4,1.3,1.6,1.3,1.6c0.6,0.1,0.3-0.4,0.3-0.4c-0.4-0.3-0.5-1.2-0.5-1.2v-3.5c0.4,0.3,0.3,1.1,0.3,1.1v2.1
c0,1.4,1.8,1.3,1.8,1.3c0.4-0.1,0-0.4,0-0.4c-0.6-0.2-0.7-0.9-0.7-0.9v-2.8c0-1.1-0.5-1.7-0.9-2c2.6-0.3,3.9-1.1,4.4-2.4
c1.1,0,3.2,0.2,5.2,0.7l0-0.1c-2-0.6-4-0.7-5.2-0.7c0.1-0.1,0.1-0.3,0.1-0.4C19.7,10,21.6,10,23.5,10.4L23.5,10.4z"/>
<path class="st3" d="M16.2,7.5c0.6,0.5,0.9,1.1,0.9,1.8c0,3.1-2.3,3.2-5.2,3.2S6.8,12,6.8,9.3c0-0.7,0.3-1.3,0.9-1.8
c0.9-0.8,2.5-0.4,4.3-0.4S15.3,6.6,16.2,7.5L16.2,7.5z"/>
<path class="st4" d="M10.2,9.4c0,0.9-0.5,1.5-1.1,1.5s-1.1-0.7-1.1-1.5c0-0.9,0.5-1.5,1.1-1.5C9.7,7.9,10.2,8.6,10.2,9.4z"/>
<path class="st5" d="M9.9,9.5c0,0.6-0.3,1-0.7,1c-0.4,0-0.7-0.5-0.7-1c0-0.6,0.3-1,0.7-1C9.6,8.4,9.9,8.9,9.9,9.5z"/>
<path class="st4" d="M16,9.4c0,0.9-0.5,1.5-1.1,1.5c-0.6,0-1.1-0.7-1.1-1.5c0-0.9,0.5-1.5,1.1-1.5C15.5,7.9,16,8.6,16,9.4z"/>
<path class="st5" d="M15.6,9.5c0,0.6-0.3,1-0.7,1c-0.4,0-0.7-0.5-0.7-1c0-0.6,0.3-1,0.7-1C15.3,8.4,15.6,8.9,15.6,9.5z M12.2,10.8
c0,0.1-0.1,0.3-0.3,0.3c-0.1,0-0.3-0.1-0.3-0.3c0-0.2,0.1-0.3,0.3-0.3C12.1,10.5,12.2,10.7,12.2,10.8z M11.3,11.5c0,0,0-0.1,0.1-0.1
c0,0,0.1,0,0.1,0.1c0.1,0.2,0.3,0.3,0.5,0.3c0.2,0,0.4-0.1,0.5-0.3c0,0,0.1-0.1,0.1-0.1c0,0,0.1,0.1,0.1,0.1
c-0.1,0.3-0.3,0.4-0.6,0.4C11.7,11.9,11.4,11.8,11.3,11.5L11.3,11.5z"/>
<path class="st6" d="M5.4,12.7c0,0.1-0.1,0.1-0.2,0.1c-0.1,0-0.2-0.1-0.2-0.1s0.1-0.1,0.2-0.1C5.3,12.6,5.4,12.6,5.4,12.7z M5.9,13
c0,0.1-0.1,0.1-0.2,0.1c-0.1,0-0.2-0.1-0.2-0.1s0.1-0.1,0.2-0.1C5.8,12.9,5.9,12.9,5.9,13z M6.2,13.4c0,0.1-0.1,0.1-0.2,0.1
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C6.1,13.3,6.2,13.3,6.2,13.4z M6.5,13.8c0,0.1-0.1,0.1-0.2,0.1
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C6.4,13.7,6.5,13.7,6.5,13.8z M6.8,14.2c0,0.1-0.1,0.1-0.2,0.1
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C6.7,14.1,6.8,14.1,6.8,14.2z M7.2,14.6c0,0.1-0.1,0.1-0.2,0.1
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C7.2,14.4,7.2,14.5,7.2,14.6z M7.8,14.8c0,0.1-0.1,0.1-0.2,0.1
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C7.8,14.7,7.8,14.7,7.8,14.8z M8.5,14.8c0,0.1-0.1,0.1-0.2,0.1
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C8.4,14.7,8.5,14.7,8.5,14.8z M9.1,14.7c0,0.1-0.1,0.1-0.2,0.1
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C9,14.6,9.1,14.6,9.1,14.7z"/>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1,690 @@
<section class="oe_container custom_style description-odoo-font">
<div id="wrap" class="oe_structure oe_empty">
<section class="s_text_block o_colored_level pb120 pt168 oe_img_bg o_bg_img_center" data-snippet="s_text_block" data-name="Text" style="background-image: url('tower_website.svg'); position: relative;">
<div class="container">
<div class="row">
<div class="col-lg-6">
<h2 style="color: #0D3045; font-weight: 500; font-size: 48px" data-bs-original-title="" title="" aria-describedby="tooltip483440">
<strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong> What is Cetmix Tower?
<br/>
</h2>
<p style="font-size: 18px; font-weight:300">
<b>Cetmix Tower</b> is an <b>open-source</b> DevOps framework built on Odoo. <br/><br/>
It empowers you to deploy, manage, and automate applications <b>directly from Odoo</b> whether it's Odoo itself, WordPress, ERPNext or Magento.<br/><br/>
Unlike traditional hosting platforms, Cetmix Tower is <b>not tied to any specific technology</b>. You can use it with Docker, Kubernetes, a bare operating system or whatever your infrastructure requires.<br/><br/>
Fully <b>self-hosted</b> and deeply integrated with the Odoo ecosystem, it gives you complete control over your servers and applications. <br/><br/>
<b>Cetmix Tower</b> is distributed under the <b>AGPL-3 license</b>, ensuring transparency and freedom.
</p>
</div>
<div class="col-lg-6">
<img src="cetmix_tower_server_kanban.png" alt="" class="img img-fluid o_we_custom_image" data-original-id="1256" data-original-src="cetmix_tower_server_kanban.png" data-mimetype="image/png" style="width: 100% !important;" loading="eager"/>
</div>
</div>
</div>
</section>
<section class="s_text_image pb32 o_colored_level o_cc o_cc1" data-snippet="s_image_text" style="color: #343A40;" data-name="Custom Image - Text (2)" data-bs-original-title="" title="" aria-describedby="tooltip882751">
<div class="container">
<div class="row">
<div class="col-lg-6 table-responsive">
<h2 style="color: #0D3045; font-weight: 500; font-size: 48px"> <strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong>Key Differences</h2>
<!-- Bootstrap 5 CSS -->
<table class="table table-striped align-middle border">
<thead>
<tr class="align-middle">
<th class="text-center"> </th>
<th class="text-center"><b>Cetmix Tower</b></th>
<th class="text-center">Odoo.sh</th>
<th class="text-center">Other Odoo Hosting</th>
<th class="text-center">Generic DevOps Tools</th>
</tr>
</thead>
<tbody>
<tr>
<td class="text-start">Can Deploy Odoo Enterprise</td>
<td class="text-center"><i class="fa fa-check text-success"></i></td>
<td class="text-center"><i class="fa fa-check text-success"></i></td>
<td class="text-center"><i class="fa fa-check text-success"></i></td>
<td class="text-center"><i class="fa fa-check text-success"></i></td>
</tr>
<tr>
<td class="text-start">Can Deploy Odoo Community</td>
<td class="text-center"><i class="fa fa-check text-success"></i></td>
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
<td class="text-center"><i class="fa fa-check text-success"></i></td>
<td class="text-center"><i class="fa fa-check text-success"></i></td>
</tr>
<tr>
<td class="text-start">Can Deploy Other Software besides Odoo</td>
<td class="text-center"><i class="fa fa-check text-success"></i></td>
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
<td class="text-center"><i class="fa fa-check text-success"></i></td>
</tr>
<tr>
<td class="text-start">Runs on Your Own Server</td>
<td class="text-center"><i class="fa fa-check text-success"></i></td>
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
<td class="text-center">Some*</td>
</tr>
<tr>
<td class="text-start">Native Odoo App</td>
<td class="text-center"><i class="fa fa-check text-success"></i></td>
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
</tr>
<tr>
<td class="text-start">Export/Import &amp; Share Configurations</td>
<td class="text-center"><i class="fa fa-check text-success"></i></td>
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
<td class="text-center">Some*</td>
</tr>
<tr>
<td class="text-start">Is Open Source</td>
<td class="text-center"><i class="fa fa-check text-success"></i></td>
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
<td class="text-center">Some*</td>
</tr>
</tbody>
</table>
<p class="small text-muted">* depends on the tool</p>
</div>
<div class="col-lg-6">
<h2 style="color: #0D3045; font-weight: 500; font-size: 48px"> <strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong>Why Cetmix Tower?</h2>
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
<li><strong>Easy to use for non-technical users:</strong> Deploy a server or run a multi-step scenario with a single click in the UI.</li>
<li><strong>Power and flexibility for technical users:</strong> Leverage powerful features to build complex workflows and automate server and application management tasks.</li>
<li><strong>Not limited to a single technology:</strong> Run any software manageable via shell commands or API, whether you're using Docker, Kubernetes, or direct OS commands.</li>
<li><strong>Odoo Integration:</strong> Take advantage of the Odoo ecosystem for server management tasks. Integrate with Sales, Accounting, Subscriptions, Helpdesk, or any other Odoo module.</li>
<li><strong>Not limited to Odoo:</strong> While optimized for Odoo, Cetmix Tower can manage virtually any software.</li>
<li><strong>Extensibility:</strong> Develop your own Odoo modules based on Cetmix Tower to implement custom features.</li>
<li><strong>Self-Hosting:</strong> Deploy Cetmix Tower on your own infrastructure for complete control over your server and application management.</li>
<li><strong>Open Source:</strong> Cetmix Tower is distributed under the AGPL-3 license, ensuring transparency and freedom.</li>
</ul>
</div>
</div>
<div class="container pt64">
<h2 class="pb32" style="color: #0D3045; font-weight: 500; font-size: 48px"><strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong> Core Features</h2>
<div class="container">
<div class="pt32" style="margin-left: 40px; background-color:#0D3045; border-radius: 40px; padding: 24px;">
<p class="card-text text-800" style="font-size: 18px; font-weight:300; color: #d7dcdf !important; text-align: left;"><strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong>Note</p>
<p class="card-text text-800 pb32" style="font-size: 18px; font-weight:300; color: #d7dcdf !important; text-align: left;">Cetmix Tower is designed with usability and simplicity in mind, though some features might require a foundational understanding of server management principles</p>
<h4 style="font-size: 24px; color: #ffffff; font-weight: 200;">
For documentation please check <strong style="font-size: 32px; font-weight: 800; color: #29A1DC;"> | </strong> <a href="https://tower.cetmix.com" style="color: #29A1DC;"> tower.cetmix.com</a>
</h4>
</div>
</div>
</div>
<div class="container pt64">
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="self-host.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Server Management</h3>
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
<li>Variable-based flexible configuration</li>
<li>Create Servers using pre-defined Server Templates</li>
</ul>
<section
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
data-vcss="001"
data-columns="2"
data-snippet="s_images_wall"
data-name="Images Wall"
style="overflow: hidden"
>
<div class="container">
<div class="row s_nb_column_fixed">
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="server_1.png"
alt=""
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
data-original-id="1218"
data-original-src="server_1.png"
data-mimetype="image/png"
data-resize-width="1920"
loading="eager"
title="Server Management"
aria-describedby="tooltip65859"
/>
<img
src="server_template_form.png"
alt=""
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
data-original-id="1242"
data-original-src="server_template_form.png"
data-mimetype="image/png"
data-resize-width="1920"
data-bs-original-title=""
title="Server Management"
aria-describedby="tooltip990969"
loading="eager"
/>
</div>
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="server_form_configuration.png"
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
loading="eager"
data-original-id="1225"
data-original-src="server_form_configuration.png"
data-mimetype="image/png"
title="Server Management"
aria-describedby="tooltip997009"
/>
</div>
</div>
</div>
</section>
</div>
<div class="container pt64">
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="connectivity.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Connectivity</h3>
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
<li>Password and key-based authentication for outgoing SSH connections</li>
<li>Built-in support of the Python requests library for outgoing API calls</li>
</ul>
</div>
<div class="container pt64">
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="development.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Commands</h3>
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
<li>Execute SSH Commands on remote servers</li>
<li>Run Python Commands on the Tower Odoo server</li>
<li>Run Flight Plan from command</li>
<li>Render commands using Variables</li>
<li>Secrets/Keys for private data storage</li>
</ul>
<section
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
data-vcss="001"
data-columns="2"
data-snippet="s_images_wall"
data-name="Images Wall"
style="overflow: hidden"
>
<div class="container">
<div class="row s_nb_column_fixed">
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="commands_1.png"
alt=""
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
data-original-id="1218"
data-original-src="commands_1.png"
data-mimetype="image/png"
data-resize-width="1920"
loading="eager"
title="Commands"
aria-describedby="tooltip65859"
/>
</div>
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="commands_2.png"
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
loading="eager"
data-original-id="1225"
data-original-src="commands_2.png"
data-mimetype="image/png"
title="Commands"
aria-describedby="tooltip997009"
/>
</div>
</div>
</div>
</section>
</div>
<div class="container pt64">
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="flight-plan.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Flight Plans</h3>
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
<li>Execute multiple Commands in a row</li>
<li>Condition-based flow:</li>
<ul>
<li>Based on conditions using Python syntax</li>
<li>Based on the previous command exit code</li>
</ul>
</ul>
<section
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
data-vcss="001"
data-columns="2"
data-snippet="s_images_wall"
data-name="Images Wall"
style="overflow: hidden"
>
<div class="container">
<div class="row s_nb_column_fixed">
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="flight_plan_1.png"
alt=""
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
data-original-id="1218"
data-original-src="flight_plan_1.png"
data-mimetype="image/png"
data-resize-width="1920"
loading="eager"
title="Flight Plans"
aria-describedby="tooltip65859"
/>
<img
src="flight_plan_3.png"
alt=""
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
data-original-id="1242"
data-original-src="flight_plan_3.png"
data-mimetype="image/png"
data-resize-width="1920"
title="Flight Plans"
aria-describedby="tooltip990969"
loading="eager"
/>
</div>
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="flight_plan_2.png"
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
loading="eager"
data-original-id="1225"
data-original-src="flight_plan_2.png"
data-mimetype="image/png"
title="Flight Plans"
aria-describedby="tooltip997009"
/>
</div>
</div>
</div>
</section>
</div>
<div class="container pt64">
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="files.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Files</h3>
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
<li>Download Files from a remote server using SFTP</li>
<li>Upload Files to a remote server using SFTP</li>
<li>Support for <code>text</code> and <code>binary</code> file formats</li>
<li>Manage Files using pre-defined File Templates</li>
</ul>
<section
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
data-vcss="001"
data-columns="2"
data-snippet="s_images_wall"
data-name="Images Wall"
style="overflow: hidden"
>
<div class="container">
<div class="row s_nb_column_fixed">
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="files_1.png"
alt=""
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
data-original-id="1218"
data-original-src="files_1.png"
data-mimetype="image/png"
data-resize-width="1920"
loading="eager"
title="Files"
aria-describedby="tooltip65859"
/>
<img
src="files_3.png"
alt=""
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
data-original-id="1242"
data-original-src="files_3.png"
data-mimetype="image/png"
data-resize-width="1920"
title="Files"
aria-describedby="tooltip990969"
loading="eager"
/>
</div>
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="files_2.png"
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
loading="eager"
data-original-id="1225"
data-original-src="files_2.png"
data-mimetype="image/png"
title="Files"
aria-describedby="tooltip997009"
/>
</div>
</div>
</div>
</section>
</div>
<div class="container pt64">
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="server-logs.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Server Logs</h3>
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
<li>Fetch Logs from a remote server using Commands</li>
<li>Fetch Logs from a remote server using Files</li>
</ul>
<section
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
data-vcss="001"
data-columns="2"
data-snippet="s_images_wall"
data-name="Images Wall"
style="overflow: hidden"
>
<div class="container">
<div class="row s_nb_column_fixed">
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="logs_1.png"
alt=""
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
data-original-id="1218"
data-original-src="logs_1.png"
data-mimetype="image/png"
data-resize-width="1920"
loading="eager"
title="Server Logs"
aria-describedby="tooltip65859"
/>
</div>
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="logs_2.png"
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
loading="eager"
data-original-id="1225"
data-original-src="logs_2.png"
data-mimetype="image/png"
title="Server Logs"
aria-describedby="tooltip997009"
/>
</div>
</div>
</div>
</section>
</div>
<div class="container pt64 pb64">
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="tools.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Import/Export Data in YAML Format</h3>
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
<li>Share and manage data easily using YAML format</li>
</ul>
<section
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
data-vcss="001"
data-columns="2"
data-snippet="s_images_wall"
data-name="Images Wall"
style="overflow: hidden"
>
<div class="container">
<div class="row s_nb_column_fixed">
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="yaml_1.png"
alt=""
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
data-original-id="1218"
data-original-src="yaml_1.png"
data-mimetype="image/png"
data-resize-width="1920"
loading="eager"
title="Import/Export Data in YAML Format"
aria-describedby="tooltip65859"
/>
<img
src="yaml_4.png"
alt=""
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
data-original-id="1218"
data-original-src="yaml_4.png"
data-mimetype="image/png"
data-resize-width="1920"
loading="eager"
title="Import/Export Data in YAML Format"
aria-describedby="tooltip65859"
/>
</div>
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="yaml_3.png"
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
loading="eager"
data-original-src="yaml_3.png"
data-mimetype="image/png"
title="Import/Export Data in YAML Format"
/>
<img
src="yaml_5.png"
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
loading="eager"
data-original-src="yaml_5.png"
data-mimetype="image/png"
title="Import/Export Data in YAML Format"
/>
<img
src="yaml_2.png"
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
loading="eager"
data-original-src="yaml_2.png"
data-mimetype="image/png"
title="Import/Export Data in YAML Format"
/>
</div>
</div>
</div>
</section>
</div>
<div class="container pt64 pb64">
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="git.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Manage Git Projects</h3>
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
<li>
Manage Git projects directly from Odoo
</li>
<li>
User-friendly interface for controlling git repositories linked to your servers
</li>
</ul>
<section
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
data-vcss="001"
data-columns="2"
data-snippet="s_images_wall"
data-name="Images Wall"
style="overflow: hidden"
>
<div class="container">
<div class="row s_nb_column_fixed">
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="git_1.png"
alt=""
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
data-original-id="1218"
data-original-src="git_1.png"
data-mimetype="image/png"
data-resize-width="1920"
loading="eager"
title="Git Projects"
aria-describedby="tooltip65859"
/>
</div>
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
<img
src="git_2.png"
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
loading="eager"
data-original-src="git_2.png"
data-mimetype="image/png"
title="Git Projects"
/>
</div>
</div>
</div>
</section>
</div>
</div>
</section>
<section class="s_text_image o_colored_level pt64 pb64 o_cc o_cc5 " data-snippet="s_image_text" style="background-color: #0D3045 !important; background-image: none; position: relative; border-top-right-radius: 40px; border-top-left-radius: 40px;" data-name="Custom Image - Text" data-bs-original-title="" title="" aria-describedby="tooltip522920" data-oe-shape-data="{&quot;shape&quot;:&quot;web_editor/Origins/16&quot;,&quot;colors&quot;:{&quot;c3&quot;:&quot;#0D2945&quot;},&quot;flip&quot;:[]}">
<div class="container" style="padding: 30px;">
<div class="col-lg-6" style="text-align: right; margin-left: auto;">
<img src="cetmix.svg" alt="" class="img img-fluid o_we_custom_image" data-original-id="1256" data-original-src="cetmix.svg" data-mimetype="image/svg+xml" data-bs-original-title="" title="" aria-describedby="tooltip359107" style="width: 50% !important;" loading="eager"/>
</div>
<h3 class="pt64" style="color: #ffffff; font-weight: 500; font-size: 48px"><strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong> Warning</h3>
<p class="card-text text-800" style="font-size: 18px; font-weight:300; color: #ffffff !important; text-align: left;">
The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement.
In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.
</p>
</div>
</section>
<section class="s_title o_colored_level o_cc o_cc1" style="position: relative; background-color: #0D3045 !important">
<div style="background-color: #3d4856 !important; border-top-right-radius: 40px; border-top-left-radius: 40px; padding: 20px;">
&nbsp;
</div>
</section>
<section class="s_features o_colored_level pb64 o_cc o_cc1" data-snippet="s_features" data-name="Features" style="position: relative; background-color: #3d4856 !important" data-oe-shape-data="">
<div class="container mx-3">
<h2 style="font-size: 48px; font-weight:500; color: #d7dcdf;">License</h2>
<p class="card-text text-800" style="font-size: 18px; font-weight:300; color: #d7dcdf !important; text-align: left;">Cetmix Tower is distributed under the AGPL-3 license. In case you want to use this software in projects that are not compatible with AGPL-3 license, you should contact us directly.</p>
</div>
</section>
<section class="s_title o_colored_level o_cc o_cc1" style="position: relative; background-color: #3d4856">
<div style="background-color: #d7dcdf !important; border-top-right-radius: 40px; border-top-left-radius: 40px; padding: 20px;">
&nbsp;
</div>
</section>
<section class="s_text_block o_colored_level pt32 pb64 o_cc o_cc1" data-snippet="s_text_block" data-name="Text" style="position: relative; background-color: #d7dcdf !important; color: #3d4856;">
<div class="container mx-3">
<h2 style="font-size: 48px; font-weight:500; color: #3d4856;">Copyright</h2>
<p class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">Cetmix Tower is a trademark of Cetmix. All rights reserved.</p>
</div>
</section>
<section class="s_title o_colored_level o_cc o_cc1" style="position: relative; background-color: #d7dcdf">
<div style="background-color: #3d4856 !important; border-top-right-radius: 40px; border-top-left-radius: 40px; padding: 20px;">
&nbsp;
</div>
</section>
<section class="s_text_block o_colored_level pt32 pb64 o_cc o_cc1" data-snippet="s_text_block" data-name="Text" style="position: relative; background-color: #3d4856 !important; color: #3d4856;">
<div class="container mx-3">
<h2 style="font-size: 48px; font-weight:500; color: #d7dcdf;">Support</h2>
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #d7dcdf !important; text-align: left;">
<li>This project is open source. All issues and feature requests should be reported in the GitHub repository</li>
<li>Your contribution is welcome. Please refer to the CONTRIBUTING.md file for more details.</li>
<li>Dedicated support is available on request. Contact us for details at cetmix.com</li>
</ul>
</div>
</section>
<section class="s_title o_colored_level o_cc o_cc1" style="position: relative; background-color: #3d4856">
<div style="background-color: #f4f4f4 !important; border-top-right-radius: 40px; border-top-left-radius: 40px; padding: 20px;">
&nbsp;
</div>
</section>
<section id="cetmix" class="s_text_image o_colored_level pt64 pb64 o_cc o_cc5" data-snippet="s_image_text" style="background-color: #f4f4f4 !important; background-image: none; position: relative;" data-name="Custom Image - Text" data-bs-original-title="" title="" aria-describedby="tooltip522920">
<div class="container">
<div class="row align-items-center">
<div class="pt16 pb16 o_colored_level col-lg-4" style="position: relative;">
<img src="cx_logo.svg" alt="" class="img img-fluid mx-auto o_we_custom_image" style="position: relative;" data-original-id="1229" data-original-src="pdf.svg" data-mimetype="image/svg+xml" data-resize-width="undefined" loading="eager"/>
</div>
<div class="pb16 o_colored_level col-lg-8" >
<h1 style="text-align: left; color:#0D3045; font-size: 48px; font-weight:500;">
Cetmix is not just another IT company
</h1>
<h5 class="pt32" style="text-align: left; color:#3d4856; font-size: 22px; font-weight:300">
We know how the business works. Our experts have management
experience in heavy machinery, energy sector, logistics,
accounting, public services and many other industries _
<br/>
<br/>
We are the people of business
</h5>
</div>
</div>
</div>
</section>
<section class="s_title o_colored_level o_cc o_cc1" style="position: relative; background-color: #f4f4f4">
<div style="background-color: #29A1DC !important; border-top-right-radius: 40px; border-top-left-radius: 40px; padding: 20px;">
&nbsp;
</div>
</section>
<section class="s_call_to_action pt48 pb64 o_colored_level o_cc o_cc5" data-snippet="s_call_to_action" data-name="Call to Action" style="background-color: #29A1DC; color: #ffffff;">
<div class="container" style="margin-left: 100px">
<div class="row o_header_white_border_left">
<div class="col-lg-6 pb16 o_colored_level">
<h3 style="text-align: left; color:#ffffff; font-size: 48px; font-weight:500;">Solutions for your business</h3>
<h5 class="pt16" style="text-align: left; color:#3d4856; font-size: 22px; font-weight:300">Choose an existing one or we can develop a custom one for you</h5>
</div>
<div class="col pt32 o_colored_level">
<p style="text-align: center;" data-bs-original-title="" title="" aria-describedby="tooltip742456">
<a class="mb-2 btn btn-lg shadow" href="https://apps.odoo.com/apps/modules/browse?author=Cetmix" data-bs-original-title="" title="" style="color: #ffffff; border-color: #ffffff; border-radius:20px; font-size: 22px; font-weight:300">Check our Apps</a>
</p>
</div>
</div>
</div>
</section>
<section class="s_text_block o_colored_level o_cc o_cc5" data-snippet="s_text_block" data-name="Text" style="position: relative; background-color: #29A1DC; color: #ffffff; ">
<div class="s_allow_columns container-fluid">
<div class="row d-flex mx-3 pb64">
<div class="o_colored_level col-lg-4" >
<h2 style="text-align: center;">
<span style="color: #ffffff; font-size: 36px; font-weight:500;">>11 <br/> years</span>
</h2>
<h5 style="text-align: center; color:#3d4856; font-size: 22px; font-weight:300">of Odoo experience
</h5>
</div>
<div class="o_colored_level col-lg-4" >
<h2 style="text-align: center;">
<span style="color: #ffffff; font-size: 36px; font-weight:500;">> 30 000 <br/> downloads</span>
</h2>
<h5 style="text-align: center; color:#3d4856; font-size: 22px; font-weight:300">of our apps from Odoo App Store
</h5>
</div>
<div class="o_colored_level col-lg-3" >
<h2 style="text-align: center;">
<span style="color: #ffffff; font-size: 36px; font-weight:500;">>400 <br/> clients</span>
</h2>
<h5 style="text-align: center; color:#3d4856; font-size: 22px; font-weight:300">
are happy with our services
</h5>
</div>
</div>
</div>
</section>
<section class="s_title o_colored_level o_cc o_cc1" style="position: relative; background-color: #0D3045">
<div style="background-color: #29A1DC !important; border-bottom-right-radius: 40px; border-bottom-left-radius: 40px; padding: 20px;">
&nbsp;
</div>
</section>
<section class="s_text_block pt64 pb48 o_colored_level" data-snippet="s_text_block" data-name="Text" style="background-color: #0D3045 !important; border-bottom-right-radius: 40px; border-bottom-left-radius: 40px;" data-bs-original-title="" title="" aria-describedby="tooltip180671">
<div class="s_allow_columns container mx-5" data-bs-original-title="" title="" aria-describedby="tooltip154809">
<h2 style="text-align: left; color:#ffffff; font-size: 48px; font-weight:500;">
Need support, customization<br/>or interested in collaboration ?
</h2>
<h5 class="pb32" style="font-size: 24px; left; color: #ffffff;">
<strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong>cetmix.com
<br/>
</h5>
<p style="color: #ffffff;">
<span class="fa fa-linkedin-square fa-3x pt16 mr-3" data-bs-original-title="" title="" aria-describedby="tooltip359279" style="color: #29A1DC !important;"></span>
https://www.linkedin.com/company/cetmix/
</p>
<p style="color: #ffffff;">
<span class="fa fa-github-square fa-3x pt16 mr-3" data-bs-original-title="" title="" aria-describedby="tooltip359279" style="color: #29A1DC !important;"></span>
https://github.com/cetmix/
</p>
<p style="color: #ffffff;">
<span class="fa fa-facebook-square fa-3x pt16 mr-3" data-bs-original-title="" title="" aria-describedby="tooltip359279" style="color: #29A1DC !important;"></span>
https://www.facebook.com//cetmixteam
</p>
<p style="color: #ffffff;">
<span class="fa fa-twitter-square fa-3x pt16 mr-3" data-bs-original-title="" title="" aria-describedby="tooltip359279" style="color: #29A1DC !important;"></span>
https://twitter.com/cetmix_team
</p>
</div>
</div>
</section>
</div>
</section>

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="Server"><path fill="#303c42" d="M2 7h20v3H2z" class="color303c42 svgShape"></path><path d="M2 7h20v3H2z" opacity=".1" fill="#000000" class="color000000 svgShape"></path><path fill="#303c42" d="M2 14h20v3H2z" class="color303c42 svgShape"></path><path d="M2 14h20v3H2z" opacity=".1" fill="#000000" class="color000000 svgShape"></path><path fill="#303c42" d="M1 3v4a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z" class="color303c42 svgShape"></path><path d="M22 7.75H2a1 1 0 0 1-1-1V7a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1v-.25a1 1 0 0 1-1 1z" opacity=".2" fill="#000000" class="color000000 svgShape"></path><path fill="#ffffff" d="M22 2H2a1 1 0 0 0-1 1v.25a1 1 0 0 1 1-1h20a1 1 0 0 1 1 1V3a1 1 0 0 0-1-1z" opacity=".1" class="colorffffff svgShape"></path><circle cx="19.5" cy="5" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="17.5" cy="5" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="15.5" cy="5" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="5" cy="5" r="1" fill="#29a1dc" class="colorc6cdd1 svgShape"></circle><linearGradient id="a" x1="4.368" x2="5.487" y1="4.368" y2="5.487" gradientUnits="userSpaceOnUse"><stop offset="0" stop-opacity=".1"></stop><stop offset="1" stop-opacity="0"></stop></linearGradient><circle cx="5" cy="5" r="1" fill="url(#a)"></circle><path fill="#303c42" d="M1 10v4a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z" class="color303c42 svgShape"></path><path d="M22 14.75H2a1 1 0 0 1-1-1V14a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1v-.25a1 1 0 0 1-1 1z" opacity=".2" fill="#000000" class="color000000 svgShape"></path><path fill="#ffffff" d="M22 9H2a1 1 0 0 0-1 1v.25a1 1 0 0 1 1-1h20a1 1 0 0 1 1 1V10a1 1 0 0 0-1-1z" opacity=".1" class="colorffffff svgShape"></path><circle cx="19.5" cy="12" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="17.5" cy="12" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="15.5" cy="12" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="5" cy="12" r="1" fill="#29a1dc" class="colorc6cdd1 svgShape"></circle><linearGradient id="b" x1="4.368" x2="5.487" y1="11.368" y2="12.487" gradientUnits="userSpaceOnUse"><stop offset="0" stop-opacity=".1"></stop><stop offset="1" stop-opacity="0"></stop></linearGradient><circle cx="5" cy="12" r="1" fill="url(#b)"></circle><path fill="#303c42" d="M1 17v4a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z" class="color303c42 svgShape"></path><path d="M22 21.75H2a1 1 0 0 1-1-1V21a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1v-.25a1 1 0 0 1-1 1z" opacity=".2" fill="#000000" class="color000000 svgShape"></path><path fill="#ffffff" d="M22 16H2a1 1 0 0 0-1 1v.25a1 1 0 0 1 1-1h20a1 1 0 0 1 1 1V17a1 1 0 0 0-1-1z" opacity=".1" class="colorffffff svgShape"></path><circle cx="19.5" cy="19" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="17.5" cy="19" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="15.5" cy="19" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="5" cy="19" r="1" fill="#29a1dc" class="colorc6cdd1 svgShape"></circle><linearGradient id="c" x1="4.368" x2="5.487" y1="18.368" y2="19.487" gradientUnits="userSpaceOnUse"><stop offset="0" stop-opacity=".1"></stop><stop offset="1" stop-opacity="0"></stop></linearGradient><circle cx="5" cy="19" r="1" fill="url(#c)"></circle><linearGradient id="d" x1="-.568" x2="24.568" y1="6.14" y2="17.86" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffffff" stop-opacity=".2" class="stopColorffffff svgShape"></stop><stop offset="1" stop-color="#ffffff" stop-opacity="0" class="stopColorffffff svgShape"></stop></linearGradient><path fill="url(#d)" d="M23 7V3a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1v1a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1v1a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1v-1a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1V8a1 1 0 0 0 1-1z"></path></svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
<style type="text/css">
.st0{fill:#303C42;}
.st1{opacity:0.1;enable-background:new ;}
.st2{opacity:0.1;fill:#FFFFFF;enable-background:new ;}
.st3{opacity:0.2;enable-background:new ;}
.st4{fill:#428EB3;}
.st5{fill:#C6CDD1;}
.st6{fill:url(#SVGID_1_);}
.st7{fill:url(#SVGID_2_);}
.st8{fill:#D8DBDC;}
.st9{fill:#333333;}
.st10{fill:#4D4D4D;}
.st11{fill:url(#SVGID_3_);}
.st12{opacity:0.2;fill:#FFFFFF;enable-background:new ;}
.st13{fill:#29A1DC;}
.st14{fill:url(#SVGID_4_);}
.st15{fill:url(#SVGID_5_);}
.st16{fill:url(#SVGID_6_);}
</style>
<path class="st0" d="M2.8,6h14.7v1.8H2.8V6z"/>
<path class="st1" d="M2.8,6h14.7v1.8H2.8V6z"/>
<path class="st0" d="M17.5,6.5H2.8C2.3,6.5,1.8,6,1.8,5.5V2.8c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9v2.8
C18.4,6,18,6.5,17.5,6.5z"/>
<path class="st2" d="M17.5,1.9H2.8c-0.5,0-0.9,0.4-0.9,0.9V3c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9V2.8
C18.4,2.3,18,1.9,17.5,1.9z"/>
<path class="st3" d="M17.5,6.2H2.8c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.5,0.4,0.9,0.9,0.9h14.7c0.5,0,0.9-0.4,0.9-0.9V5.3
C18.4,5.8,18,6.2,17.5,6.2z"/>
<path class="st0" d="M17.5,12H2.8c-0.5,0-0.9-0.4-0.9-0.9V8.3c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9v2.8
C18.4,11.6,18,12,17.5,12z"/>
<circle class="st4" cx="16.1" cy="9.7" r="0.5"/>
<circle class="st4" cx="14.3" cy="9.7" r="0.5"/>
<circle class="st4" cx="12.4" cy="9.7" r="0.5"/>
<circle class="st5" cx="4.1" cy="9.7" r="0.9"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="3.5643" y1="16.9049" x2="4.5946" y2="15.8746" gradientTransform="matrix(1 0 0 -1 0 26)">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<circle class="st6" cx="4.1" cy="9.7" r="0.9"/>
<circle class="st4" cx="16.1" cy="4.2" r="0.5"/>
<circle class="st4" cx="14.3" cy="4.2" r="0.5"/>
<circle class="st4" cx="12.4" cy="4.2" r="0.5"/>
<path class="st2" d="M17.5,7.4H2.8c-0.5,0-0.9,0.4-0.9,0.9v0.2c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9V8.3
C18.4,7.8,18,7.4,17.5,7.4z"/>
<path class="st3" d="M17.5,11.7H2.8c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.5,0.4,0.9,0.9,0.9h14.7c0.5,0,0.9-0.4,0.9-0.9v-0.2
C18.4,11.3,18,11.7,17.5,11.7z"/>
<circle class="st5" cx="4.1" cy="4.2" r="0.9"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="3.5643" y1="22.4291" x2="4.5946" y2="21.3988" gradientTransform="matrix(1 0 0 -1 0 26)">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<circle class="st7" cx="4.1" cy="4.2" r="0.9"/>
<path class="st8" d="M17,19.3c0-0.3-0.2-0.5-0.5-0.5c-0.3,0-0.5,0.2-0.5,0.5h-1.8c0-0.3-0.2-0.5-0.5-0.5s-0.5,0.2-0.5,0.5
c0,1-0.5,1.8-0.9,1.8v0.5H18v-0.5C17.5,21.2,17,20.3,17,19.3z"/>
<path class="st9" d="M22.1,10.6c0-0.8-0.6-1.4-1.4-1.4h-11c-0.8,0-1.4,0.6-1.4,1.4V18h13.8V10.6z"/>
<path class="st8" d="M8.3,18v0.5c0,0.8,0.6,1.4,1.4,1.4h11c0.8,0,1.4-0.6,1.4-1.4V18H8.3z"/>
<path class="st1" d="M20.7,19.6h-11c-0.8,0-1.4-0.6-1.4-1.4v0.2c0,0.8,0.6,1.4,1.4,1.4h11c0.8,0,1.4-0.6,1.4-1.4v-0.2
C22.1,19,21.5,19.6,20.7,19.6z"/>
<path class="st2" d="M9.7,9.4h11c0.8,0,1.4,0.6,1.4,1.4v-0.2c0-0.8-0.6-1.4-1.4-1.4h-11c-0.8,0-1.4,0.6-1.4,1.4v0.2
C8.3,10.1,8.9,9.4,9.7,9.4z"/>
<path class="st10" d="M21.2,10.6c0-0.3-0.2-0.5-0.5-0.5h-11c-0.3,0-0.5,0.2-0.5,0.5V17h12V10.6z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="9.0616" y1="15.1862" x2="21.4007" y2="9.4328" gradientTransform="matrix(1 0 0 -1 0 26)">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<path class="st11" d="M21.2,10.6c0-0.3-0.2-0.5-0.5-0.5h-11c-0.3,0-0.5,0.2-0.5,0.5V17h12V10.6z"/>
<path class="st8" d="M18,22.1h-5.5c-0.3,0-0.5-0.2-0.5-0.5c0-0.3,0.2-0.5,0.5-0.5H18c0.3,0,0.5,0.2,0.5,0.5
C18.4,21.9,18.2,22.1,18,22.1z"/>
<path class="st12" d="M12.4,21.4H18c0.2,0,0.4,0.1,0.4,0.3c0,0,0-0.1,0-0.1c0-0.3-0.2-0.5-0.5-0.5h-5.5c-0.3,0-0.5,0.2-0.5,0.5
c0,0,0,0.1,0,0.1C12,21.6,12.2,21.4,12.4,21.4z"/>
<circle class="st13" cx="15.2" cy="18.9" r="0.5"/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="14.7771" y1="7.3105" x2="15.6119" y2="6.9216" gradientTransform="matrix(1 0 0 -1 0 26)">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<circle class="st14" cx="15.2" cy="18.9" r="0.5"/>
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="14.4175" y1="6.9761" x2="16.8002" y2="4.5933" gradientTransform="matrix(1 0 0 -1 0 26)">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<path class="st15" d="M17.1,19.8h-3.8l1.4,1.4H18C17.6,21.2,17.2,20.6,17.1,19.8z"/>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="0.5921" y1="20.7473" x2="23.4202" y2="10.102" gradientTransform="matrix(1 0 0 -1 0 26)">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<path class="st16" d="M20.7,9.2h-2.3V8.3c0-0.5-0.4-0.9-0.9-0.9V6.5c0.5,0,0.9-0.4,0.9-0.9V2.8c0-0.5-0.4-0.9-0.9-0.9H2.8
c-0.5,0-0.9,0.4-0.9,0.9v2.8c0,0.5,0.4,0.9,0.9,0.9v0.9c-0.5,0-0.9,0.4-0.9,0.9v2.8c0,0.5,0.4,0.9,0.9,0.9h5.5v6.4
c0,0.8,0.6,1.4,1.4,1.4h3.6c-0.1,0.8-0.5,1.4-0.9,1.4c-0.3,0-0.5,0.2-0.5,0.5c0,0.3,0.2,0.5,0.5,0.5H18c0.3,0,0.5-0.2,0.5-0.5
c0-0.3-0.2-0.5-0.5-0.5c-0.4,0-0.8-0.6-0.9-1.4h3.6c0.8,0,1.4-0.6,1.4-1.4v-7.8C22.1,9.8,21.5,9.2,20.7,9.2z"/>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View File

@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
<style type="text/css">
.st0{fill:#303C42;}
.st1{opacity:0.1;enable-background:new ;}
.st2{opacity:0.2;enable-background:new ;}
.st3{opacity:0.1;fill:#FFFFFF;enable-background:new ;}
.st4{fill:#428EB3;}
.st5{fill:#C6CDD1;}
.st6{fill:url(#SVGID_1_);}
.st7{fill:url(#SVGID_2_);}
.st8{fill:none;}
.st9{fill:url(#SVGID_3_);}
.st10{fill:#29A1DC;}
.st11{fill:#EFF2F4;}
.st12{fill:#ACB5BA;}
.st13{fill:#CEDAE0;}
.st14{fill:#E6EBEE;}
.st15{fill:#3F5C6B;}
.st16{fill:#22353F;}
.st17{fill:#2B424E;}
.st18{fill:#324F5E;}
</style>
<path class="st0" d="M2,7.5h18.2v2.7H2V7.5z"/>
<path class="st1" d="M2,7.5h18.2v2.7H2V7.5z"/>
<path class="st0" d="M1.1,3.8v3.6c0,0.6,0.4,1,0.9,1h18.2c0.5,0,0.9-0.4,0.9-0.9V3.8c0-0.5-0.4-0.9-0.9-0.9H2
C1.5,2.9,1.1,3.3,1.1,3.8z"/>
<path class="st2" d="M20.2,8.1H2c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.6,0.4,1,0.9,1h18.2c0.5,0,0.9-0.4,0.9-0.9V7.2
C21.1,7.7,20.7,8.1,20.2,8.1z"/>
<path class="st3" d="M20.2,2.9H2c-0.5,0-0.9,0.4-0.9,0.9V4c0-0.5,0.4-0.9,0.9-0.9h18.2c0.5,0,0.9,0.4,0.9,0.9V3.8
C21.1,3.3,20.7,2.9,20.2,2.9z"/>
<circle class="st4" cx="17.9" cy="5.6" r="0.5"/>
<circle class="st4" cx="16.1" cy="5.6" r="0.5"/>
<circle class="st4" cx="14.3" cy="5.6" r="0.5"/>
<circle class="st5" cx="4.7" cy="5.6" r="0.9"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="4.1668" y1="-1953.0668" x2="5.1828" y2="-1954.0828" gradientTransform="matrix(1 0 0 -1 0 -1948)">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<circle class="st6" cx="4.7" cy="5.6" r="0.9"/>
<path class="st0" d="M1.1,10.2v3.6c0,0.5,0.4,0.9,0.9,0.9h18.2c0.5,0,0.9-0.4,0.9-0.9v-3.6c0-0.5-0.4-0.9-0.9-0.9H2
C1.5,9.3,1.1,9.7,1.1,10.2z"/>
<path class="st2" d="M20.2,14.5H2c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.5,0.4,0.9,0.9,0.9h18.2c0.5,0,0.9-0.4,0.9-0.9v-0.2
C21.1,14.1,20.7,14.5,20.2,14.5z"/>
<path class="st3" d="M20.2,9.3H2c-0.5,0-0.9,0.4-0.9,0.9v0.2c0-0.5,0.4-0.9,0.9-0.9h18.2c0.5,0,0.9,0.4,0.9,0.9v-0.2
C21.1,9.7,20.7,9.3,20.2,9.3z"/>
<circle class="st4" cx="17.9" cy="12" r="0.5"/>
<circle class="st4" cx="16.1" cy="12" r="0.5"/>
<circle class="st4" cx="14.3" cy="12" r="0.5"/>
<circle class="st5" cx="4.7" cy="12" r="0.9"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="4.1445" y1="-1959.4445" x2="5.1605" y2="-1960.4604" gradientTransform="matrix(1 0 0 -1 0 -1948)">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<circle class="st7" cx="4.7" cy="12" r="0.9"/>
<path class="st8" d="M19.1,13c0,0.4,0.3,0.7,0.7,0.8l0,0c0.4,0,0.8-0.3,0.8-0.8c0-0.4-0.3-0.7-0.7-0.8c0,0,0,0-0.1,0
C19.5,12.3,19.1,12.6,19.1,13L19.1,13z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="0.6335" y1="1978.4908" x2="25.081" y2="1989.8916" gradientTransform="matrix(1 0 0 1 0 -1974)">
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<path class="st9" d="M22.4,13.8H21v-3.6c0-0.5-0.4-0.9-0.9-0.9V8.4C20.6,8.4,21,8,21,7.5V3.8c0-0.5-0.4-0.9-0.9-0.9H2
C1.5,2.9,1,3.3,1,3.8v3.6c0,0.6,0.4,1,0.9,1v0.9C1.5,9.3,1,9.7,1,10.2v3.6c0,0.5,0.4,0.9,0.9,0.9h10.9v5.9c0,0.3,0.2,0.5,0.5,0.5
h9.1c0.3,0,0.5-0.2,0.5-0.5v-6.4C22.9,14,22.7,13.8,22.4,13.8z"/>
<path class="st10" d="M22.4,16.2c0,2.7-2.2,4.8-4.8,4.8c-2.7,0-4.8-2.1-4.8-4.8c0-2.7,2.2-4.8,4.8-4.8
C20.2,11.3,22.4,13.5,22.4,16.2z"/>
<path class="st11" d="M22,12.7l-0.5-0.1c0,0-0.1,0-0.1-0.1c0-0.2-0.1-0.3-0.2-0.5c0,0,0-0.1,0-0.1l0.2-0.4c0,0,0-0.1,0-0.1l-0.3-0.3
c0,0-0.1,0-0.1,0l-0.4,0.2c0,0-0.1,0-0.1,0c-0.1-0.1-0.3-0.1-0.4-0.2c0,0-0.1,0-0.1-0.1L20,10.6c0,0-0.1-0.1-0.1-0.1h-0.4
c0,0-0.1,0-0.1,0.1l-0.1,0.5c0,0,0,0.1-0.1,0.1c0,0-0.1,0-0.1,0c-0.1,0-0.2,0.1-0.2,0.1c0,0-0.1,0-0.1,0.1c0,0,0,0,0,0c0,0,0,0,0,0
c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0l-0.4-0.2c0,0-0.1,0-0.1,0l-0.2,0.2h0l-0.1,0.1h0c0,0,0,0,0,0.1c0,0,0,0.1,0,0.1l0.2,0.4
c0,0,0,0,0,0c0,0,0,0.1,0,0.1c-0.1,0.1-0.1,0.3-0.2,0.5c0,0,0,0.1-0.1,0.1l-0.5,0.1c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0.1v0.4
c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0l0.5,0.1c0,0,0.1,0,0.1,0.1c0,0.2,0.1,0.3,0.2,0.5c0,0,0,0.1,0,0.1l-0.2,0.4
c0,0,0,0.1,0,0.1c0,0,0,0,0,0.1h0l0.3,0.3c0,0,0.1,0,0.1,0l0.4-0.2c0,0,0,0,0,0c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0.1
c0.1,0,0.2,0.1,0.2,0.1c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0.1l0.1,0.5c0,0,0.1,0.1,0.1,0.1h0.4c0.1,0,0.1,0,0.1-0.1l0.1-0.5
c0,0,0-0.1,0.1-0.1c0.2,0,0.3-0.1,0.4-0.2c0,0,0.1,0,0.1,0l0.4,0.2c0,0,0.1,0,0.1,0l0.3-0.3c0,0,0-0.1,0-0.1l-0.2-0.4
c0,0,0-0.1,0-0.1c0.1-0.1,0.1-0.3,0.2-0.5c0,0,0,0,0-0.1c0,0,0,0,0,0l0.5-0.1c0,0,0.1-0.1,0.1-0.1v-0.4C22.1,12.8,22.1,12.7,22,12.7
z M19.8,14.1c-0.1,0-0.3,0-0.4,0c-0.2,0-0.4-0.1-0.6-0.3c0,0,0,0,0,0c-0.1-0.2-0.2-0.3-0.2-0.5c0-0.1,0-0.3,0-0.4
c0-0.5,0.4-0.9,0.8-1c0.2,0,0.3-0.1,0.5,0c0,0,0,0,0,0c0.2,0,0.4,0.1,0.6,0.3c0,0,0,0,0,0c0.1,0.1,0.1,0.1,0.1,0.2l0,0
c0.1,0.1,0.1,0.3,0.1,0.4C20.9,13.4,20.4,14,19.8,14.1C19.8,14.1,19.8,14.1,19.8,14.1z"/>
<path class="st8" d="M18.9,13c0,0.4,0.3,0.7,0.7,0.8c0,0,0,0,0,0c0.4,0,0.8-0.3,0.8-0.8c0-0.4-0.3-0.7-0.7-0.8c0,0,0,0-0.1,0
C19.2,12.3,18.9,12.6,18.9,13L18.9,13z"/>
<path class="st12" d="M20.8,13c0-0.6-0.5-1.2-1.1-1.2c0.1,0.1,0.2,0.2,0.1,0.3c0,0.1-0.1,0.1-0.2,0.1c0.4,0,0.7,0.4,0.7,0.8
c0,0.4-0.3,0.8-0.8,0.8c0,0,0,0,0,0c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0.1,0.2,0.2,0.2c0,0,0,0,0.1,0C20.3,14.2,20.8,13.7,20.8,13z"/>
<path class="st13" d="M18.9,13.3c0-0.1-0.1-0.2-0.1-0.3c0-0.4,0.3-0.8,0.8-0.8c0,0,0,0,0.1,0c0.1,0,0.2-0.2,0.2-0.3
c0-0.1-0.1-0.1-0.1-0.2c0,0-0.1,0-0.1,0c-0.7,0-1.2,0.5-1.2,1.2c0,0.1,0,0.2,0,0.3C18.5,13.3,18.9,13.3,18.9,13.3z"/>
<path class="st13" d="M19.7,13.8C19.7,13.8,19.6,13.8,19.7,13.8c-0.5,0-0.8-0.3-0.8-0.8c0,0,0,0,0-0.1h-0.5c0,0,0,0,0,0.1
c0,0.7,0.5,1.2,1.2,1.2c0,0,0,0,0.1,0c0.1,0,0.2-0.1,0.2-0.2C19.9,13.9,19.8,13.8,19.7,13.8z"/>
<path class="st8" d="M20.5,13c0,0.5-0.4,0.8-0.8,0.9c0,0,0,0,0,0c-0.5,0-0.9-0.4-0.9-0.9c0-0.5,0.3-0.8,0.8-0.8c0,0,0,0,0.1,0
C20.1,12.2,20.5,12.6,20.5,13L20.5,13z"/>
<path class="st14" d="M19.2,14.8c-0.6-0.4-1-1-1-1.8c0-0.8,0.4-1.4,1-1.8v-0.1c-0.2,0-0.3,0.1-0.5,0.2c0,0-0.1,0-0.1,0l-0.4-0.2
c0,0-0.1,0-0.1,0l-0.3,0.3c0,0,0,0.1,0,0.1l0.2,0.4c0,0,0,0.1,0,0.1c-0.1,0.1-0.1,0.3-0.2,0.5c0,0,0,0.1-0.1,0.1l-0.5,0.1
c0,0-0.1,0.1-0.1,0.1v0.4c0,0.1,0,0.1,0.1,0.1l0.5,0.1c0,0,0.1,0,0.1,0.1c0,0.2,0.1,0.3,0.2,0.5c0,0,0,0.1,0,0.1l-0.2,0.4
c0,0,0,0.1,0,0.1l0.3,0.3c0,0,0.1,0,0.1,0l0.4-0.2c0,0,0.1,0,0.1,0C18.8,14.8,19,14.9,19.2,14.8L19.2,14.8L19.2,14.8z"/>
<path class="st15" d="M23,18.3l-0.3-0.1c0,0-0.1,0-0.1-0.1c0-0.1-0.1-0.2-0.1-0.3c0,0,0-0.1,0-0.1l0.2-0.3c0,0,0-0.1,0-0.1l-0.2-0.2
c0,0-0.1,0-0.1,0l-0.3,0.2c0,0-0.1,0-0.1,0c-0.1-0.1-0.2-0.1-0.3-0.1c0,0-0.1,0-0.1-0.1l-0.1-0.3c0,0,0-0.1-0.1-0.1h-0.3
c0,0-0.1,0-0.1,0.1l-0.1,0.3c0,0,0,0-0.1,0.1c0,0,0,0-0.1,0c-0.1,0-0.1,0-0.2,0.1c0,0-0.1,0-0.1,0c0,0,0,0,0,0c0,0,0,0,0,0
c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0l-0.3-0.2c0,0-0.1,0-0.1,0l-0.2,0.2h0l0,0h0c0,0,0,0,0,0c0,0,0,0,0,0.1l0.2,0.3c0,0,0,0,0,0
c0,0,0,0,0,0.1c-0.1,0.1-0.1,0.2-0.1,0.3c0,0,0,0-0.1,0.1l-0.3,0.1c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0v0.3c0,0,0,0,0,0
c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0l0.3,0.1c0,0,0.1,0,0.1,0.1c0,0.1,0.1,0.2,0.1,0.3c0,0,0,0.1,0,0.1l-0.2,0.3c0,0,0,0,0,0.1
c0,0,0,0,0,0h0l0.2,0.2c0,0,0.1,0,0.1,0l0.3-0.2c0,0,0,0,0,0c0,0,0,0,0.1,0c0,0,0.1,0,0.1,0c0.1,0,0.1,0.1,0.2,0.1c0,0,0,0,0.1,0
c0,0,0.1,0,0.1,0.1l0.1,0.3c0,0,0,0.1,0.1,0.1h0.3c0,0,0.1,0,0.1-0.1l0.1-0.3c0,0,0-0.1,0.1-0.1c0.1,0,0.2-0.1,0.3-0.1
c0,0,0.1,0,0.1,0l0.3,0.2c0,0,0.1,0,0.1,0l0.2-0.2c0,0,0-0.1,0-0.1l-0.2-0.3c0,0,0-0.1,0-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0,0,0,0,0,0
c0,0,0,0,0,0l0.3-0.1c0,0,0.1,0,0.1-0.1L23,18.3C23.1,18.3,23.1,18.3,23,18.3L23,18.3z M21.4,19.3c-0.1,0-0.2,0-0.3,0
c-0.1,0-0.3-0.1-0.5-0.2c0,0,0,0,0,0c-0.1-0.1-0.2-0.3-0.2-0.4c0-0.1,0-0.2,0-0.3c0-0.4,0.3-0.7,0.6-0.8c0.1,0,0.2,0,0.4,0
c0,0,0,0,0,0c0.1,0,0.3,0.1,0.4,0.2c0,0,0,0,0,0c0,0.1,0.1,0.1,0.1,0.2l0,0c0,0.1,0.1,0.2,0.1,0.3C22.2,18.8,21.9,19.3,21.4,19.3
C21.4,19.3,21.4,19.3,21.4,19.3L21.4,19.3z"/>
<path class="st8" d="M20.7,18.5c0,0.3,0.2,0.5,0.5,0.6c0,0,0,0,0,0c0.3,0,0.6-0.3,0.6-0.6c0-0.3-0.2-0.5-0.5-0.6c0,0,0,0,0,0
C20.9,18,20.7,18.2,20.7,18.5z"/>
<path class="st16" d="M22.2,18.5c0-0.5-0.4-0.9-0.8-0.9c0.1,0,0.1,0.1,0.1,0.2c0,0-0.1,0.1-0.1,0.1c0.3,0,0.5,0.3,0.5,0.6
c0,0.3-0.3,0.6-0.6,0.6c0,0,0,0,0,0c-0.1,0-0.1,0.1-0.1,0.2c0,0.1,0.1,0.1,0.1,0.2c0,0,0,0,0,0C21.8,19.4,22.2,19,22.2,18.5
L22.2,18.5z"/>
<path class="st17" d="M21.3,17.6c-0.1,0-0.2,0-0.2,0V18c0.1,0,0.1,0,0.2,0c0.3,0,0.5,0.2,0.6,0.5c0-0.1,0.1-0.2,0.2-0.1
c0.1,0,0.1,0.1,0.1,0.1c0,0,0,0,0,0C22.1,18,21.7,17.6,21.3,17.6L21.3,17.6z"/>
<path class="st16" d="M20.7,18.7c0-0.1,0-0.1,0-0.2c0-0.3,0.3-0.6,0.6-0.6c0,0,0,0,0,0c0.1,0,0.2-0.1,0.1-0.2c0-0.1-0.1-0.1-0.1-0.1
c0,0,0,0-0.1,0c-0.5,0-0.9,0.4-0.9,0.9c0,0.1,0,0.2,0,0.2C20.4,18.7,20.7,18.7,20.7,18.7z"/>
<path class="st17" d="M21.3,19.1C21.3,19.1,21.3,19.1,21.3,19.1c-0.3,0-0.6-0.2-0.6-0.6c0,0,0,0,0-0.1h-0.3c0,0,0,0,0,0.1
c0,0.5,0.4,0.9,0.9,0.9c0,0,0,0,0,0c0.1,0,0.1-0.1,0.1-0.2C21.4,19.2,21.4,19.1,21.3,19.1L21.3,19.1z"/>
<path class="st8" d="M21.9,18.5c0,0.3-0.3,0.6-0.6,0.6c0,0,0,0,0,0c-0.4,0-0.6-0.3-0.6-0.6c0-0.3,0.3-0.6,0.6-0.6c0,0,0,0,0,0
C21.6,17.9,21.9,18.2,21.9,18.5L21.9,18.5z"/>
<path class="st18" d="M20.9,19.9c-0.4-0.3-0.7-0.8-0.7-1.3c0-0.6,0.3-1.1,0.7-1.3v-0.1c-0.1,0-0.2,0.1-0.4,0.1c0,0-0.1,0-0.1,0
l-0.3-0.2c0,0-0.1,0-0.1,0l-0.2,0.2c0,0,0,0.1,0,0.1l0.2,0.3c0,0,0,0.1,0,0.1c-0.1,0.1-0.1,0.2-0.1,0.3c0,0,0,0.1-0.1,0.1l-0.3,0.1
c0,0-0.1,0-0.1,0.1v0.3c0,0,0,0.1,0.1,0.1l0.3,0.1c0,0,0.1,0,0.1,0.1c0,0.1,0.1,0.2,0.1,0.3c0,0,0,0.1,0,0.1l-0.2,0.3
c0,0,0,0.1,0,0.1l0.2,0.2c0,0,0.1,0,0.1,0l0.3-0.2c0,0,0.1,0,0.1,0C20.7,19.8,20.8,19.9,20.9,19.9C20.9,19.9,20.9,19.9,20.9,19.9z"
/>
<path class="st15" d="M19.3,16.9l-0.9-0.1c0,0-0.1,0-0.1-0.1c0-0.1,0-0.1-0.1-0.2c0,0,0-0.1,0-0.1l0.6-0.6c0,0,0-0.1,0-0.2l-0.4-0.5
c0,0-0.1-0.1-0.2,0l-0.8,0.4c0,0-0.1,0-0.1,0c-0.1,0-0.1-0.1-0.2-0.1c0,0-0.1-0.1-0.1-0.1l0.1-0.9c0-0.1,0-0.1-0.1-0.1L16.7,14
c-0.1,0-0.1,0-0.1,0.1l-0.4,0.8c0,0-0.1,0.1-0.1,0.1c0,0-0.1,0-0.1,0c0,0-0.1,0-0.1,0c0,0-0.1,0-0.1-0.1l-0.1-0.3L15.3,14
c0-0.1-0.1-0.1-0.1-0.1l-0.6,0.2c-0.1,0-0.1,0.1-0.1,0.1l0.1,0.9c0,0,0,0.1-0.1,0.1c-0.1,0-0.1,0.1-0.2,0.1c0,0-0.1,0-0.1,0L13.5,15
c-0.1,0-0.1,0-0.2,0L13,15.6c0,0,0,0.1,0,0.2l0.6,0.6c0,0,0,0.1,0,0.1c0,0.1,0,0.1-0.1,0.2c0,0-0.1,0.1-0.1,0.1l-0.7,0.1
c0,0.3,0.1,0.6,0.2,1l0.5,0.1c0,0,0.1,0,0.1,0.1c0,0.1,0,0.1,0.1,0.2c0,0,0,0.1,0,0.1l-0.3,0.3c0.2,0.3,0.4,0.6,0.6,0.8l0.3-0.2
c0,0,0.1,0,0.1,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0.1,0.1,0.2,0.1c0,0,0.1,0.1,0.1,0.1L14.6,20c0.3,0.2,0.5,0.4,0.8,0.5l0.3-0.6
c0,0,0.1-0.1,0.1-0.1h0.2c0,0,0.1,0,0.1,0.1l0.4,0.8c0,0.1,0.1,0.1,0.1,0.1l0.6-0.2c0.1,0,0.1-0.1,0.1-0.1l-0.1-0.9
c0-0.1,0-0.1,0.1-0.1c0.1,0,0.1-0.1,0.2-0.1c0,0,0.1,0,0.1,0l0.8,0.4c0.1,0,0.1,0,0.2,0l0.4-0.5c0-0.1,0-0.1,0-0.2l-0.6-0.6
c0,0,0-0.1,0-0.1c0-0.1,0.1-0.1,0.1-0.2c0,0,0-0.1,0.1-0.1l0.9-0.1c0.1,0,0.1-0.1,0.1-0.1v-0.6C19.4,17,19.4,17,19.3,16.9z
M15.2,18.3C15.2,18.3,15.2,18.2,15.2,18.3c-0.1-0.1-0.1-0.1-0.2-0.2c0,0-0.1-0.1-0.1-0.1c0-0.1-0.1-0.1-0.1-0.2c0-0.1,0-0.1,0-0.2
c0-0.1,0-0.2,0-0.2v0c0-0.6,0.5-1.2,1.2-1.2c0,0,0.1,0,0.1,0l0.1,0c0,0,0,0,0.1,0c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0s0.1,0,0.1,0
l0.1,0c0,0,0,0,0.1,0.1l0.1,0.1c0.1,0.1,0.1,0.1,0.1,0.2c0,0,0,0.1,0.1,0.1c0,0,0,0.1,0,0.1c0,0,0,0.1,0,0.1c0,0,0,0.1,0,0.1
c0,0.1,0,0.2,0,0.2l0,0.2c0,0,0,0.1,0,0.1l-0.2,0.4c0,0,0,0.1-0.1,0.1c0,0,0,0-0.1,0.1c0,0-0.1,0.1-0.1,0.1c0,0-0.1,0-0.1,0.1
c-0.1,0-0.1,0.1-0.2,0.1c0,0-0.1,0-0.1,0C15.9,18.6,15.6,18.5,15.2,18.3C15.3,18.3,15.3,18.3,15.2,18.3z"/>
<path class="st18" d="M15.3,14c0-0.1-0.1-0.1-0.1-0.1l-0.6,0.2c-0.1,0-0.1,0.1-0.1,0.1l0.1,0.9c0,0,0,0.1-0.1,0.1
c-0.1,0-0.1,0.1-0.2,0.1c0,0-0.1,0-0.1,0L13.5,15c-0.1,0-0.1,0-0.2,0L13,15.6c0,0,0,0.1,0,0.2l0.6,0.6c0,0,0,0.1,0,0.1
c0,0.1,0,0.1-0.1,0.2c0,0-0.1,0.1-0.1,0.1l-0.7,0.1c0,0.3,0.1,0.6,0.2,1l0.5,0.1c0,0,0.1,0,0.1,0.1c0,0.1,0,0.1,0.1,0.2
c0,0,0,0.1,0,0.1l-0.3,0.3c0.2,0.3,0.4,0.6,0.6,0.8l0.3-0.2c0,0,0.1,0,0.1,0c0,0,0,0,0,0l0,0v0c-0.1-0.4-0.2-0.9-0.2-1.4
c0,0,0,0,0-0.1c0-0.2,0-0.4,0-0.6c0-0.3,0.1-0.6,0.2-0.9c0,0,0-0.1,0-0.1c0.2-0.7,0.6-1.4,1.1-1.8L15.3,14z"/>
<path class="st17" d="M17.2,16.1c-0.3-0.3-0.8-0.5-1.2-0.5c-0.1,0-0.2,0-0.3,0c-0.5,0.1-0.9,0.4-1.2,0.8c-0.2,0.3-0.3,0.6-0.3,0.9
c0,0.2,0,0.3,0.1,0.5c0.1,0.3,0.2,0.6,0.5,0.8c0.4,0.4,0.9,0.6,1.5,0.5c0.4,0,0.8-0.2,1-0.5c0.2-0.2,0.4-0.6,0.5-0.9v0
c0-0.1,0-0.2,0-0.3C17.7,16.9,17.5,16.4,17.2,16.1z M15.3,18.3C15.3,18.3,15.3,18.3,15.3,18.3c-0.1-0.1-0.1-0.1-0.2-0.1
c0,0-0.1-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1c0-0.1-0.1-0.1-0.1-0.2c0-0.1,0-0.1,0-0.2c0-0.1,0-0.2,0-0.2v0c0-0.6,0.5-1.2,1.2-1.2
c0,0,0.1,0,0.1,0l0.1,0c0,0,0,0,0.1,0c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0l0.1,0c0,0,0,0,0.1,0.1l0.1,0.1
c0.1,0.1,0.1,0.1,0.1,0.2c0,0,0,0.1,0.1,0.1s0,0.1,0,0.1c0,0,0,0.1,0,0.1c0,0,0,0.1,0,0.1c0,0.1,0,0.2,0,0.2l0,0.2c0,0,0,0.1,0,0.1
l-0.2,0.4c0,0,0,0.1-0.1,0.1c0,0,0,0-0.1,0.1c0,0-0.1,0.1-0.1,0.1c0,0-0.1,0-0.1,0.1c-0.1,0-0.1,0.1-0.2,0.1c0,0-0.1,0-0.1,0
c-0.1,0-0.2,0-0.2,0C15.7,18.5,15.5,18.5,15.3,18.3z"/>
<path class="st16" d="M14.5,17.4c0.1,0,0.3-0.1,0.3-0.2c0-0.2,0.2-0.4,0.3-0.6c0.2-0.2,0.4-0.3,0.6-0.3c0.1,0,0.2-0.1,0.2-0.3
c0-0.2-0.2-0.3-0.3-0.3c-0.3,0.1-0.7,0.2-0.9,0.5c-0.2,0.2-0.4,0.6-0.5,0.9C14.2,17.2,14.3,17.4,14.5,17.4z M17.4,17.4
c-0.1,0-0.3,0.1-0.3,0.2c0,0.2-0.2,0.4-0.3,0.6c-0.2,0.2-0.4,0.3-0.6,0.3c-0.1,0-0.2,0.1-0.2,0.3c0,0.2,0.2,0.3,0.3,0.3
c0.3-0.1,0.7-0.2,0.9-0.5c0.2-0.2,0.4-0.6,0.5-0.9C17.7,17.6,17.6,17.4,17.4,17.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 988 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,308 @@
================
Cetmix Tower AWS
================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:e427fa4368b78aacbc6faa6232b54496e83fbe4905ddef4cc17f3913e5ee3ee0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-cetmix%2Fcetmix--tower-lightgray.png?logo=github
:target: https://github.com/cetmix/cetmix-tower/tree/18.0/cetmix_tower_aws
:alt: cetmix/cetmix-tower
|badge1| |badge2| |badge3|
**⚠️ DISCLAIMER: TECHNICAL MODULE**
This module integrates Boto3 library, the Amazon Web Services (AWS)
Software Development Kit (SDK) for Python, into the Cetmix Tower.
**This is a technical module intended for system administrators or
DevOps professionals.** It may involve server configuration,
infrastructure management, or advanced setup outside the standard
Odoo interface. Not intended for direct use by end users.
**Table of contents**
.. contents::
:local:
Use Cases / Context
===================
Although Amazon Web Services (AWS) allows API calls without using an
SDK, we found that integrating the Amazon SDK into Cetmix Tower makes
provisioning, configuring, and maintaining AWS instances more convenient
for the end user. However, not all Cetmix Tower users require this
functionality, so to avoid overloading the system, we have included it
in a separate module.
Configuration
=============
**Prerequisites**
The module has ``boto3`` defined in its external dependencies, which
means, you should install the Python ``boto3`` package manually if you
don't have automatic package installation configured in your Odoo
environment. Run ``pip install boto3`` to install it.
**Setting up AWS Access**
1. **Create AWS Access Keys**
To use the AWS integration with Cetmix Tower, you need to create AWS
access keys:
- Follow the `official AWS
documentation <https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html>`__
(https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html)
for creating IAM access keys
- It's recommended to create a dedicated IAM user with appropriate
permissions for Cetmix Tower
- Store your access key ID and secret access key securely - you'll
need them in the next step
2. **Configure AWS Secrets in Cetmix Tower**
Create two secrets in Cetmix Tower to store your AWS credentials:
- Navigate to ``Cetmix Tower > Settings > Keys and Secrets``
- Create a new Secret with:
- Name: ``AWS Access Key``
- Reference: ``aws_access_key``
- Key Type: ``Secret``
- Enter your AWS access key ID in the Secret Value tab
- Similarly, create another Secret with:
- Name: ``AWS Secret Access Key``
- Reference: ``aws_secret_access_key``
- Key Type: ``Secret``
- Enter your AWS secret access key in the Secret Value tab
..
Note: These secrets will be accessible as
``#!cxtower.secret.aws_access_key!#`` and
``#!cxtower.secret.aws_secret_access_key!#`` in your commands.
3. **Configure AWS Region**
Create a variable to define your AWS region:
- Navigate to ``Cetmix Tower > Settings > Variables``
- Create a new Variable with:
- Name: ``AWS Region Name``
- Reference: ``aws_region_name``
- Type: ``String``
- Set your AWS region (e.g., ``us-east-1``, ``eu-west-1``) as the
value
Usage
=====
Please check the `official Boto3
Documentation <https://boto3.amazonaws.com/v1/documentation/api/latest/index.html>`__
(https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) for
the detailed information about the services and methods provided by the
Boto3 library.
**Disclaimer**: The following example demonstrates one of many
possible commands you can create and run with this module. The boto3
library provides access to the full range of AWS services and methods
- this is just a starting point to help you get familiar with the
integration.
Example of Cetmix Tower Python Command to List EC2 Instances
------------------------------------------------------------
Navigate to Command Creation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Go to ``Cetmix Tower > Commands > Commands``
- Click the ``Create`` button
Configure Command Settings
~~~~~~~~~~~~~~~~~~~~~~~~~~
- Set a descriptive ``Name`` (e.g., "List AWS EC2 Instances")
- Leave ``Reference`` blank to generate automatically (or set a custom
reference)
- Select ``Action``: "Execute Python code"
- Set ``Access Level``: Choose appropriate level (e.g., "Manager")
- Optional: Set ``Default Path`` if needed
- Optional: Add ``Tags`` (e.g., "aws", "ec2") for better organization
Add Required Variables
~~~~~~~~~~~~~~~~~~~~~~
- In the ``Variables`` tab, add the previously configured variable:
- ``aws_region_name``
Add Required Secrets
~~~~~~~~~~~~~~~~~~~~
- In the ``Secrets`` field, add the previously configured secrets:
- ``aws_access_key``
- ``aws_secret_access_key``
Write Python Code
~~~~~~~~~~~~~~~~~
- Go to the ``Code`` tab
- Enter the following Python code:
.. code:: python
# List EC2 instances using boto3
result = {"exit_code": 0, "message": None}
session = boto3.Session(
aws_access_key_id=#!cxtower.secret.aws_access_key!#,
aws_secret_access_key=#!cxtower.secret.aws_secret_access_key!#,
region_name={{ aws_region_name }}
)
ec2 = session.client('ec2')
instances = ec2.describe_instances()
instance_details = []
for reservation in instances['Reservations']:
for instance in reservation['Instances']:
instance_detail = "Instance ID: " + instance['InstanceId']
instance_detail += ", Type: " + instance.get('InstanceType', 'Unknown')
instance_detail += ", State: " + instance.get('State', {}).get('Name', 'Unknown')
instance_details.append(instance_detail)
if instance_details:
result["message"] = "Found " + str(len(instance_details)) + " EC2 instances:\n" + "\n".join(instance_details)
else:
result["message"] = "No EC2 instances found"
Save the Command
~~~~~~~~~~~~~~~~
- Click the ``Save`` button to create the command
Running the AWS EC2 Command
---------------------------
Navigate to Server
~~~~~~~~~~~~~~~~~~
- Go to ``Cetmix Tower > Servers > Servers``
- Open the server where you want to run the command
Execute Command from Server
~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Click the ``Command`` button at the top of the server form
- In the popup dialog:
- Select your AWS EC2 command from the dropdown
- Verify the variable values (if any need adjustment)
- Click ``Run`` to execute
View Command Results
~~~~~~~~~~~~~~~~~~~~
- After execution, the command log will display showing:
- The command executed
- Execution status
- Output message containing EC2 instance details if successful
Example Output
--------------
For a successful execution with EC2 instances:
.. code:: bash
Found 3 EC2 instances:
Instance ID: i-0abc123def456789, Type: t2.micro, State: running
Instance ID: i-0def456abc789123, Type: t3.medium, State: stopped
Instance ID: i-0789abc123def456, Type: m5.large, State: running
For a successful execution with no EC2 instances:
.. code:: bash
No EC2 instances found
Creating Additional AWS Commands
--------------------------------
The cetmix_tower_aws module provides access to the boto3 Python library
for AWS service integration. Here are some common services you can use:
.. code:: python
# Standard client initialization pattern
client = boto3.client(
'service_name', # Replace with: ec2, s3, rds, cloudwatch, etc.
region_name={{ aws_region_name }},
aws_access_key_id=#!cxtower.secret.aws_access_key!#,
aws_secret_access_key=#!cxtower.secret.aws_secret_access_key!#
)
# Or use resource interface for object-oriented access
resource = boto3.resource(
'service_name', # Replace with: ec2, s3, etc.
region_name={{ aws_region_name }},
aws_access_key_id=#!cxtower.secret.aws_access_key!#,
aws_secret_access_key=#!cxtower.secret.aws_secret_access_key!#
)
Popular AWS services include: EC2 (compute), S3 (storage), RDS
(databases), and CloudWatch (monitoring).
For more details, see the `AWS Boto3
Documentation <https://boto3.amazonaws.com/v1/documentation/api/latest/index.html>`__.
Changelog
=========
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/cetmix/cetmix-tower/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/cetmix/cetmix-tower/issues/new?body=module:%20cetmix_tower_aws%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
-------
* Cetmix
Maintainers
-----------
This module is part of the `cetmix/cetmix-tower <https://github.com/cetmix/cetmix-tower/tree/18.0/cetmix_tower_aws>`_ project on GitHub.
You are welcome to contribute.

View File

@@ -0,0 +1,24 @@
# Copyright 2024 Cetmix OÜ
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Cetmix Tower AWS",
"summary": """Cetmix Tower AWS EC2 API integration""",
"version": "18.0.1.0.1",
"category": "Productivity",
"license": "AGPL-3",
"author": "Cetmix",
"website": "https://tower.cetmix.com",
"live_test_url": "https://tower.cetmix.com/download",
"images": ["static/description/banner.png"],
"installable": True,
"external_dependencies": {
"python": ["boto3"],
},
"depends": [
"cetmix_tower_server",
],
"demo": [
"demo/demo_data.xml",
],
}

View File

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<!-- ===============================================
Keys
================================================ -->
<record id="aws_access_key" model="cx.tower.key">
<field name="name">AWS Access Key</field>
<field name="reference">aws_access_key</field>
<field name="key_type">s</field>
<field name="secret_value">AKIAIOSFODNN7EXAMPLE</field>
</record>
<record id="aws_secret_access_key" model="cx.tower.key">
<field name="name">AWS Secret Access Key</field>
<field name="reference">aws_secret_access_key</field>
<field name="key_type">s</field>
<field name="secret_value">wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY</field>
</record>
<!-- ===============================================
Variables
================================================ -->
<record id="variable_aws_region_name" model="cx.tower.variable">
<field name="name">AWS Region Name</field>
<field name="reference">aws_region_name</field>
</record>
<!-- ===============================================
Global Variable values
================================================ -->
<record id="global_value_aws_region" model="cx.tower.variable.value">
<field name="variable_id" ref="variable_aws_region_name" />
<field name="value_char">us-east-1</field>
</record>
<!-- ===============================================
Commands
================================================ -->
<record id="command_list_ec2_instances" model="cx.tower.command">
<field name="name">List AWS EC2 Instances</field>
<field name="action">python_code</field>
<field name="code">
# List EC2 instances using boto3
result = {"exit_code": 0, "message": None}
session = boto3.Session(
aws_access_key_id=#!cxtower.secret.aws_access_key!#,
aws_secret_access_key=#!cxtower.secret.aws_secret_access_key!#,
region_name={{ aws_region_name }}
)
ec2 = session.client('ec2')
instances = ec2.describe_instances()
instance_details = []
for reservation in instances['Reservations']:
for instance in reservation['Instances']:
instance_detail = "Instance ID: " + instance['InstanceId']
instance_detail += ", Type: " + instance.get('InstanceType', 'Unknown')
instance_detail += ", State: " + instance.get('State', {}).get('Name', 'Unknown')
instance_details.append(instance_detail)
if instance_details:
result["message"] = "Found " + str(len(instance_details)) + " EC2 instances:\n" + "\n".join(instance_details)
else:
result["message"] = "No EC2 instances found"
</field>
<field name="access_level">1</field>
<field
name="tag_ids"
eval="[(6, 0, [ref('cetmix_tower_server.tag_custom')])]"
/>
<field name="note">List EC2 instances using boto3 AWS SDK</field>
</record>
</odoo>

View File

@@ -0,0 +1,31 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * cetmix_tower_aws
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: cetmix_tower_aws
#: model:ir.model,name:cetmix_tower_aws.model_cx_tower_command
msgid "Cetmix Tower Command"
msgstr ""
#. module: cetmix_tower_aws
#. odoo-python
#: code:addons/cetmix_tower_aws/models/cx_tower_command.py:0
msgid ""
"Python 'boto3' library for AWS services. Available methods: 'client', "
"'resource', 'Session'<br/>Supports AWS services like EC2, S3, RDS, Lambda, "
"CloudWatch, etc.<br/>Please check the <a "
"href='https://boto3.amazonaws.com/v1/documentation/api/latest/index.html' "
"target='_blank'>Boto3 Documentation</a> for the detailed information about "
"the services and methods."
msgstr ""

View File

@@ -0,0 +1,39 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * cetmix_tower_aws
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.3\n"
"Language: it\n"
#. module: cetmix_tower_aws
#: model:ir.model,name:cetmix_tower_aws.model_cx_tower_command
msgid "Cetmix Tower Command"
msgstr "Comando Cetmix Tower"
#. module: cetmix_tower_aws
#. odoo-python
#: code:addons/cetmix_tower_aws/models/cx_tower_command.py:0
#, python-format
msgid "Python 'boto3' library for AWS services. Available methods: 'client', 'resource', 'Session'<br/>Supports AWS services like EC2, S3, RDS, Lambda, CloudWatch, etc.<br/>Please check the <a href='https://boto3.amazonaws.com/v1/documentation/api/latest/index.html' target='_blank'>Boto3 Documentation</a> for the detailed information about the services and methods."
msgstr "Libreria Python 'boto3' per servizi AWS. Metodi disponibili: 'client', 'resource', 'Session'<br/>Supporta servizi AWS come EC2, S3, RDS, Lambda, CloudWatch, ecc.<br/>Consultare la <a href='https://boto3.amazonaws.com/v1/documentation/api/latest/index.html' target='_blank'>documentazione Boto3</a> per informazioni dettagliate su servizi e metodi."
#~ msgid ""
#~ "# - boto3: Python 'boto3' library for AWS services. Available methods: "
#~ "'client', 'resource', 'Session'\n"
#~ "# Supports AWS services like EC2, S3, RDS, Lambda, CloudWatch, etc."
#~ msgstr ""
#~ "# - boto3: libreria Python 'boto3' per servizi AWS. Metodi disponibili: "
#~ "'client', 'resource', 'Session'\n"
#~ "# Supporta servizi AWS come EC2, S3, RDS, Lambda, CloudWatch, ecc."

View File

@@ -0,0 +1 @@
from . import cx_tower_command

View File

@@ -0,0 +1,40 @@
# Copyright 2024 Cetmix OÜ
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _, models
from odoo.tools.safe_eval import wrap_module
# Wrap boto3 safely
boto3 = wrap_module(__import__("boto3"), ["client", "resource", "Session"])
class CxTowerCommand(models.Model):
"""Extends cx.tower.command to add AWS boto3 functionality."""
_inherit = "cx.tower.command"
def _custom_python_libraries(self):
"""
Add the boto3 library to the available libraries.
"""
custom_python_libraries = super()._custom_python_libraries()
custom_python_libraries.update(
{
"cetmix_tower_aws": {
"boto3": {
"import": boto3,
"help": _(
"Python 'boto3' library for AWS services. "
"Available methods: 'client', 'resource', 'Session'<br/>"
"Supports AWS services like EC2, S3, RDS, Lambda, "
"CloudWatch, etc.<br/>"
"Please check the <a "
"href='https://boto3.amazonaws.com/v1/documentation/api/latest/index.html'"
" target='_blank'>Boto3 Documentation</a> for the detailed "
"information about the services and methods."
),
},
}
}
)
return custom_python_libraries

View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

View File

@@ -0,0 +1,42 @@
**Prerequisites**
The module has `boto3` defined in its external dependencies, which means, you should install the Python `boto3` package manually if you don't have automatic package installation configured in your Odoo environment. Run `pip install boto3` to install it.
**Setting up AWS Access**
1. **Create AWS Access Keys**
To use the AWS integration with Cetmix Tower, you need to create AWS access keys:
- Follow the [official AWS documentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html) (https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html) for creating IAM access keys
- It's recommended to create a dedicated IAM user with appropriate permissions for Cetmix Tower
- Store your access key ID and secret access key securely - you'll need them in the next step
2. **Configure AWS Secrets in Cetmix Tower**
Create two secrets in Cetmix Tower to store your AWS credentials:
- Navigate to `Cetmix Tower > Settings > Keys and Secrets`
- Create a new Secret with:
- Name: `AWS Access Key`
- Reference: `aws_access_key`
- Key Type: `Secret`
- Enter your AWS access key ID in the Secret Value tab
- Similarly, create another Secret with:
- Name: `AWS Secret Access Key`
- Reference: `aws_secret_access_key`
- Key Type: `Secret`
- Enter your AWS secret access key in the Secret Value tab
> Note: These secrets will be accessible as `#!cxtower.secret.aws_access_key!#` and `#!cxtower.secret.aws_secret_access_key!#` in your commands.
3. **Configure AWS Region**
Create a variable to define your AWS region:
- Navigate to `Cetmix Tower > Settings > Variables`
- Create a new Variable with:
- Name: `AWS Region Name`
- Reference: `aws_region_name`
- Type: `String`
- Set your AWS region (e.g., `us-east-1`, `eu-west-1`) as the value

View File

@@ -0,0 +1,5 @@
Although Amazon Web Services (AWS) allows API calls without using an SDK, we found that
integrating the Amazon SDK into Cetmix Tower makes provisioning, configuring, and
maintaining AWS instances more convenient for the end user. However, not all Cetmix
Tower users require this functionality, so to avoid overloading the system, we have
included it in a separate module.

View File

@@ -0,0 +1,6 @@
**⚠️ DISCLAIMER: TECHNICAL MODULE**
This module integrates Boto3 library, the Amazon Web Services (AWS) Software Development Kit (SDK) for Python, into the Cetmix Tower.
> **This is a technical module intended for system administrators or DevOps professionals.** It may involve server configuration, infrastructure management, or advanced setup outside the standard Odoo interface. Not intended for direct use by end users.

View File

@@ -0,0 +1,121 @@
Please check the [official Boto3 Documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) (https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) for the detailed information about the services and methods provided by the Boto3 library.
> **Disclaimer**: The following example demonstrates one of many possible commands you can create and run with this module. The boto3 library provides access to the full range of AWS services and methods - this is just a starting point to help you get familiar with the integration.
## Example of Cetmix Tower Python Command to List EC2 Instances
### Navigate to Command Creation
- Go to `Cetmix Tower > Commands > Commands`
- Click the `Create` button
### Configure Command Settings
- Set a descriptive `Name` (e.g., "List AWS EC2 Instances")
- Leave `Reference` blank to generate automatically (or set a custom reference)
- Select `Action`: "Execute Python code"
- Set `Access Level`: Choose appropriate level (e.g., "Manager")
- Optional: Set `Default Path` if needed
- Optional: Add `Tags` (e.g., "aws", "ec2") for better organization
### Add Required Variables
- In the `Variables` tab, add the previously configured variable:
- `aws_region_name`
### Add Required Secrets
- In the `Secrets` field, add the previously configured secrets:
- `aws_access_key`
- `aws_secret_access_key`
### Write Python Code
- Go to the `Code` tab
- Enter the following Python code:
```python
# List EC2 instances using boto3
result = {"exit_code": 0, "message": None}
session = boto3.Session(
aws_access_key_id=#!cxtower.secret.aws_access_key!#,
aws_secret_access_key=#!cxtower.secret.aws_secret_access_key!#,
region_name={{ aws_region_name }}
)
ec2 = session.client('ec2')
instances = ec2.describe_instances()
instance_details = []
for reservation in instances['Reservations']:
for instance in reservation['Instances']:
instance_detail = "Instance ID: " + instance['InstanceId']
instance_detail += ", Type: " + instance.get('InstanceType', 'Unknown')
instance_detail += ", State: " + instance.get('State', {}).get('Name', 'Unknown')
instance_details.append(instance_detail)
if instance_details:
result["message"] = "Found " + str(len(instance_details)) + " EC2 instances:\n" + "\n".join(instance_details)
else:
result["message"] = "No EC2 instances found"
```
### Save the Command
- Click the `Save` button to create the command
## Running the AWS EC2 Command
### Navigate to Server
- Go to `Cetmix Tower > Servers > Servers`
- Open the server where you want to run the command
### Execute Command from Server
- Click the `Command` button at the top of the server form
- In the popup dialog:
- Select your AWS EC2 command from the dropdown
- Verify the variable values (if any need adjustment)
- Click `Run` to execute
### View Command Results
- After execution, the command log will display showing:
- The command executed
- Execution status
- Output message containing EC2 instance details if successful
## Example Output
For a successful execution with EC2 instances:
```bash
Found 3 EC2 instances:
Instance ID: i-0abc123def456789, Type: t2.micro, State: running
Instance ID: i-0def456abc789123, Type: t3.medium, State: stopped
Instance ID: i-0789abc123def456, Type: m5.large, State: running
```
For a successful execution with no EC2 instances:
```bash
No EC2 instances found
```
## Creating Additional AWS Commands
The cetmix_tower_aws module provides access to the boto3 Python library for AWS service integration. Here are some common services you can use:
```python
# Standard client initialization pattern
client = boto3.client(
'service_name', # Replace with: ec2, s3, rds, cloudwatch, etc.
region_name={{ aws_region_name }},
aws_access_key_id=#!cxtower.secret.aws_access_key!#,
aws_secret_access_key=#!cxtower.secret.aws_secret_access_key!#
)
# Or use resource interface for object-oriented access
resource = boto3.resource(
'service_name', # Replace with: ec2, s3, etc.
region_name={{ aws_region_name }},
aws_access_key_id=#!cxtower.secret.aws_access_key!#,
aws_secret_access_key=#!cxtower.secret.aws_secret_access_key!#
)
```
Popular AWS services include: EC2 (compute), S3 (storage), RDS (databases), and CloudWatch (monitoring).
For more details, see the [AWS Boto3 Documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html).

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1,684 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Cetmix Tower AWS</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="cetmix-tower-aws">
<h1 class="title">Cetmix Tower AWS</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:e427fa4368b78aacbc6faa6232b54496e83fbe4905ddef4cc17f3913e5ee3ee0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/cetmix/cetmix-tower/tree/18.0/cetmix_tower_aws"><img alt="cetmix/cetmix-tower" src="https://img.shields.io/badge/github-cetmix%2Fcetmix--tower-lightgray.png?logo=github" /></a></p>
<p><strong>⚠️ DISCLAIMER: TECHNICAL MODULE</strong></p>
<p>This module integrates Boto3 library, the Amazon Web Services (AWS)
Software Development Kit (SDK) for Python, into the Cetmix Tower.</p>
<blockquote>
<strong>This is a technical module intended for system administrators or
DevOps professionals.</strong> It may involve server configuration,
infrastructure management, or advanced setup outside the standard
Odoo interface. Not intended for direct use by end users.</blockquote>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#use-cases-context" id="toc-entry-1">Use Cases / Context</a></li>
<li><a class="reference internal" href="#configuration" id="toc-entry-2">Configuration</a></li>
<li><a class="reference internal" href="#usage" id="toc-entry-3">Usage</a><ul>
<li><a class="reference internal" href="#example-of-cetmix-tower-python-command-to-list-ec2-instances" id="toc-entry-4">Example of Cetmix Tower Python Command to List EC2 Instances</a><ul>
<li><a class="reference internal" href="#navigate-to-command-creation" id="toc-entry-5">Navigate to Command Creation</a></li>
<li><a class="reference internal" href="#configure-command-settings" id="toc-entry-6">Configure Command Settings</a></li>
<li><a class="reference internal" href="#add-required-variables" id="toc-entry-7">Add Required Variables</a></li>
<li><a class="reference internal" href="#add-required-secrets" id="toc-entry-8">Add Required Secrets</a></li>
<li><a class="reference internal" href="#write-python-code" id="toc-entry-9">Write Python Code</a></li>
<li><a class="reference internal" href="#save-the-command" id="toc-entry-10">Save the Command</a></li>
</ul>
</li>
<li><a class="reference internal" href="#running-the-aws-ec2-command" id="toc-entry-11">Running the AWS EC2 Command</a><ul>
<li><a class="reference internal" href="#navigate-to-server" id="toc-entry-12">Navigate to Server</a></li>
<li><a class="reference internal" href="#execute-command-from-server" id="toc-entry-13">Execute Command from Server</a></li>
<li><a class="reference internal" href="#view-command-results" id="toc-entry-14">View Command Results</a></li>
</ul>
</li>
<li><a class="reference internal" href="#example-output" id="toc-entry-15">Example Output</a></li>
<li><a class="reference internal" href="#creating-additional-aws-commands" id="toc-entry-16">Creating Additional AWS Commands</a></li>
</ul>
</li>
<li><a class="reference internal" href="#changelog" id="toc-entry-17">Changelog</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-18">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-19">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-20">Authors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-21">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="use-cases-context">
<h1><a class="toc-backref" href="#toc-entry-1">Use Cases / Context</a></h1>
<p>Although Amazon Web Services (AWS) allows API calls without using an
SDK, we found that integrating the Amazon SDK into Cetmix Tower makes
provisioning, configuring, and maintaining AWS instances more convenient
for the end user. However, not all Cetmix Tower users require this
functionality, so to avoid overloading the system, we have included it
in a separate module.</p>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#toc-entry-2">Configuration</a></h1>
<p><strong>Prerequisites</strong></p>
<p>The module has <tt class="docutils literal">boto3</tt> defined in its external dependencies, which
means, you should install the Python <tt class="docutils literal">boto3</tt> package manually if you
dont have automatic package installation configured in your Odoo
environment. Run <tt class="docutils literal">pip install boto3</tt> to install it.</p>
<p><strong>Setting up AWS Access</strong></p>
<ol class="arabic">
<li><p class="first"><strong>Create AWS Access Keys</strong></p>
<p>To use the AWS integration with Cetmix Tower, you need to create AWS
access keys:</p>
<ul class="simple">
<li>Follow the <a class="reference external" href="https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html">official AWS
documentation</a>
(<a class="reference external" href="https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html">https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html</a>)
for creating IAM access keys</li>
<li>Its recommended to create a dedicated IAM user with appropriate
permissions for Cetmix Tower</li>
<li>Store your access key ID and secret access key securely - youll
need them in the next step</li>
</ul>
</li>
<li><p class="first"><strong>Configure AWS Secrets in Cetmix Tower</strong></p>
<p>Create two secrets in Cetmix Tower to store your AWS credentials:</p>
<ul class="simple">
<li>Navigate to <tt class="docutils literal">Cetmix Tower &gt; Settings &gt; Keys and Secrets</tt></li>
<li>Create a new Secret with:<ul>
<li>Name: <tt class="docutils literal">AWS Access Key</tt></li>
<li>Reference: <tt class="docutils literal">aws_access_key</tt></li>
<li>Key Type: <tt class="docutils literal">Secret</tt></li>
</ul>
</li>
<li>Enter your AWS access key ID in the Secret Value tab</li>
<li>Similarly, create another Secret with:<ul>
<li>Name: <tt class="docutils literal">AWS Secret Access Key</tt></li>
<li>Reference: <tt class="docutils literal">aws_secret_access_key</tt></li>
<li>Key Type: <tt class="docutils literal">Secret</tt></li>
</ul>
</li>
<li>Enter your AWS secret access key in the Secret Value tab</li>
</ul>
<!-- -->
<blockquote>
<p>Note: These secrets will be accessible as
<tt class="docutils literal">#!cxtower.secret.aws_access_key!#</tt> and
<tt class="docutils literal">#!cxtower.secret.aws_secret_access_key!#</tt> in your commands.</p>
</blockquote>
</li>
<li><p class="first"><strong>Configure AWS Region</strong></p>
<p>Create a variable to define your AWS region:</p>
<ul class="simple">
<li>Navigate to <tt class="docutils literal">Cetmix Tower &gt; Settings &gt; Variables</tt></li>
<li>Create a new Variable with:<ul>
<li>Name: <tt class="docutils literal">AWS Region Name</tt></li>
<li>Reference: <tt class="docutils literal">aws_region_name</tt></li>
<li>Type: <tt class="docutils literal">String</tt></li>
</ul>
</li>
<li>Set your AWS region (e.g., <tt class="docutils literal"><span class="pre">us-east-1</span></tt>, <tt class="docutils literal"><span class="pre">eu-west-1</span></tt>) as the
value</li>
</ul>
</li>
</ol>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-3">Usage</a></h1>
<p>Please check the <a class="reference external" href="https://boto3.amazonaws.com/v1/documentation/api/latest/index.html">official Boto3
Documentation</a>
(<a class="reference external" href="https://boto3.amazonaws.com/v1/documentation/api/latest/index.html">https://boto3.amazonaws.com/v1/documentation/api/latest/index.html</a>) for
the detailed information about the services and methods provided by the
Boto3 library.</p>
<blockquote>
<strong>Disclaimer</strong>: The following example demonstrates one of many
possible commands you can create and run with this module. The boto3
library provides access to the full range of AWS services and methods
- this is just a starting point to help you get familiar with the
integration.</blockquote>
<div class="section" id="example-of-cetmix-tower-python-command-to-list-ec2-instances">
<h2><a class="toc-backref" href="#toc-entry-4">Example of Cetmix Tower Python Command to List EC2 Instances</a></h2>
<div class="section" id="navigate-to-command-creation">
<h3><a class="toc-backref" href="#toc-entry-5">Navigate to Command Creation</a></h3>
<ul class="simple">
<li>Go to <tt class="docutils literal">Cetmix Tower &gt; Commands &gt; Commands</tt></li>
<li>Click the <tt class="docutils literal">Create</tt> button</li>
</ul>
</div>
<div class="section" id="configure-command-settings">
<h3><a class="toc-backref" href="#toc-entry-6">Configure Command Settings</a></h3>
<ul class="simple">
<li>Set a descriptive <tt class="docutils literal">Name</tt> (e.g., “List AWS EC2 Instances”)</li>
<li>Leave <tt class="docutils literal">Reference</tt> blank to generate automatically (or set a custom
reference)</li>
<li>Select <tt class="docutils literal">Action</tt>: “Execute Python code”</li>
<li>Set <tt class="docutils literal">Access Level</tt>: Choose appropriate level (e.g., “Manager”)</li>
<li>Optional: Set <tt class="docutils literal">Default Path</tt> if needed</li>
<li>Optional: Add <tt class="docutils literal">Tags</tt> (e.g., “aws”, “ec2”) for better organization</li>
</ul>
</div>
<div class="section" id="add-required-variables">
<h3><a class="toc-backref" href="#toc-entry-7">Add Required Variables</a></h3>
<ul class="simple">
<li>In the <tt class="docutils literal">Variables</tt> tab, add the previously configured variable:<ul>
<li><tt class="docutils literal">aws_region_name</tt></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="add-required-secrets">
<h3><a class="toc-backref" href="#toc-entry-8">Add Required Secrets</a></h3>
<ul class="simple">
<li>In the <tt class="docutils literal">Secrets</tt> field, add the previously configured secrets:<ul>
<li><tt class="docutils literal">aws_access_key</tt></li>
<li><tt class="docutils literal">aws_secret_access_key</tt></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="write-python-code">
<h3><a class="toc-backref" href="#toc-entry-9">Write Python Code</a></h3>
<ul>
<li><p class="first">Go to the <tt class="docutils literal">Code</tt> tab</p>
</li>
<li><p class="first">Enter the following Python code:</p>
<pre class="code python literal-block">
<span class="c1"># List EC2 instances using boto3</span><span class="w">
</span><span class="n">result</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;exit_code&quot;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span><span class="w">
</span><span class="n">session</span> <span class="o">=</span> <span class="n">boto3</span><span class="o">.</span><span class="n">Session</span><span class="p">(</span><span class="w">
</span> <span class="n">aws_access_key_id</span><span class="o">=</span><span class="c1">#!cxtower.secret.aws_access_key!#,</span><span class="w">
</span> <span class="n">aws_secret_access_key</span><span class="o">=</span><span class="c1">#!cxtower.secret.aws_secret_access_key!#,</span><span class="w">
</span> <span class="n">region_name</span><span class="o">=</span><span class="p">{{</span> <span class="n">aws_region_name</span> <span class="p">}}</span><span class="w">
</span><span class="p">)</span><span class="w">
</span><span class="n">ec2</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">client</span><span class="p">(</span><span class="s1">'ec2'</span><span class="p">)</span><span class="w">
</span><span class="n">instances</span> <span class="o">=</span> <span class="n">ec2</span><span class="o">.</span><span class="n">describe_instances</span><span class="p">()</span><span class="w">
</span><span class="n">instance_details</span> <span class="o">=</span> <span class="p">[]</span><span class="w">
</span><span class="k">for</span> <span class="n">reservation</span> <span class="ow">in</span> <span class="n">instances</span><span class="p">[</span><span class="s1">'Reservations'</span><span class="p">]:</span><span class="w">
</span> <span class="k">for</span> <span class="n">instance</span> <span class="ow">in</span> <span class="n">reservation</span><span class="p">[</span><span class="s1">'Instances'</span><span class="p">]:</span><span class="w">
</span> <span class="n">instance_detail</span> <span class="o">=</span> <span class="s2">&quot;Instance ID: &quot;</span> <span class="o">+</span> <span class="n">instance</span><span class="p">[</span><span class="s1">'InstanceId'</span><span class="p">]</span><span class="w">
</span> <span class="n">instance_detail</span> <span class="o">+=</span> <span class="s2">&quot;, Type: &quot;</span> <span class="o">+</span> <span class="n">instance</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'InstanceType'</span><span class="p">,</span> <span class="s1">'Unknown'</span><span class="p">)</span><span class="w">
</span> <span class="n">instance_detail</span> <span class="o">+=</span> <span class="s2">&quot;, State: &quot;</span> <span class="o">+</span> <span class="n">instance</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'State'</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'Name'</span><span class="p">,</span> <span class="s1">'Unknown'</span><span class="p">)</span><span class="w">
</span> <span class="n">instance_details</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">instance_detail</span><span class="p">)</span><span class="w">
</span><span class="k">if</span> <span class="n">instance_details</span><span class="p">:</span><span class="w">
</span> <span class="n">result</span><span class="p">[</span><span class="s2">&quot;message&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;Found &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">instance_details</span><span class="p">))</span> <span class="o">+</span> <span class="s2">&quot; EC2 instances:</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">instance_details</span><span class="p">)</span><span class="w">
</span><span class="k">else</span><span class="p">:</span><span class="w">
</span> <span class="n">result</span><span class="p">[</span><span class="s2">&quot;message&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;No EC2 instances found&quot;</span>
</pre>
</li>
</ul>
</div>
<div class="section" id="save-the-command">
<h3><a class="toc-backref" href="#toc-entry-10">Save the Command</a></h3>
<ul class="simple">
<li>Click the <tt class="docutils literal">Save</tt> button to create the command</li>
</ul>
</div>
</div>
<div class="section" id="running-the-aws-ec2-command">
<h2><a class="toc-backref" href="#toc-entry-11">Running the AWS EC2 Command</a></h2>
<div class="section" id="navigate-to-server">
<h3><a class="toc-backref" href="#toc-entry-12">Navigate to Server</a></h3>
<ul class="simple">
<li>Go to <tt class="docutils literal">Cetmix Tower &gt; Servers &gt; Servers</tt></li>
<li>Open the server where you want to run the command</li>
</ul>
</div>
<div class="section" id="execute-command-from-server">
<h3><a class="toc-backref" href="#toc-entry-13">Execute Command from Server</a></h3>
<ul class="simple">
<li>Click the <tt class="docutils literal">Command</tt> button at the top of the server form</li>
<li>In the popup dialog:<ul>
<li>Select your AWS EC2 command from the dropdown</li>
<li>Verify the variable values (if any need adjustment)</li>
<li>Click <tt class="docutils literal">Run</tt> to execute</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="view-command-results">
<h3><a class="toc-backref" href="#toc-entry-14">View Command Results</a></h3>
<ul class="simple">
<li>After execution, the command log will display showing:<ul>
<li>The command executed</li>
<li>Execution status</li>
<li>Output message containing EC2 instance details if successful</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="section" id="example-output">
<h2><a class="toc-backref" href="#toc-entry-15">Example Output</a></h2>
<p>For a successful execution with EC2 instances:</p>
<pre class="code bash literal-block">
Found<span class="w"> </span><span class="m">3</span><span class="w"> </span>EC2<span class="w"> </span>instances:<span class="w">
</span>Instance<span class="w"> </span>ID:<span class="w"> </span>i-0abc123def456789,<span class="w"> </span>Type:<span class="w"> </span>t2.micro,<span class="w"> </span>State:<span class="w"> </span>running<span class="w">
</span>Instance<span class="w"> </span>ID:<span class="w"> </span>i-0def456abc789123,<span class="w"> </span>Type:<span class="w"> </span>t3.medium,<span class="w"> </span>State:<span class="w"> </span>stopped<span class="w">
</span>Instance<span class="w"> </span>ID:<span class="w"> </span>i-0789abc123def456,<span class="w"> </span>Type:<span class="w"> </span>m5.large,<span class="w"> </span>State:<span class="w"> </span>running
</pre>
<p>For a successful execution with no EC2 instances:</p>
<pre class="code bash literal-block">
No<span class="w"> </span>EC2<span class="w"> </span>instances<span class="w"> </span>found
</pre>
</div>
<div class="section" id="creating-additional-aws-commands">
<h2><a class="toc-backref" href="#toc-entry-16">Creating Additional AWS Commands</a></h2>
<p>The cetmix_tower_aws module provides access to the boto3 Python library
for AWS service integration. Here are some common services you can use:</p>
<pre class="code python literal-block">
<span class="c1"># Standard client initialization pattern</span><span class="w">
</span><span class="n">client</span> <span class="o">=</span> <span class="n">boto3</span><span class="o">.</span><span class="n">client</span><span class="p">(</span><span class="w">
</span> <span class="s1">'service_name'</span><span class="p">,</span> <span class="c1"># Replace with: ec2, s3, rds, cloudwatch, etc.</span><span class="w">
</span> <span class="n">region_name</span><span class="o">=</span><span class="p">{{</span> <span class="n">aws_region_name</span> <span class="p">}},</span><span class="w">
</span> <span class="n">aws_access_key_id</span><span class="o">=</span><span class="c1">#!cxtower.secret.aws_access_key!#,</span><span class="w">
</span> <span class="n">aws_secret_access_key</span><span class="o">=</span><span class="c1">#!cxtower.secret.aws_secret_access_key!#</span><span class="w">
</span><span class="p">)</span><span class="w">
</span><span class="c1"># Or use resource interface for object-oriented access</span><span class="w">
</span><span class="n">resource</span> <span class="o">=</span> <span class="n">boto3</span><span class="o">.</span><span class="n">resource</span><span class="p">(</span><span class="w">
</span> <span class="s1">'service_name'</span><span class="p">,</span> <span class="c1"># Replace with: ec2, s3, etc.</span><span class="w">
</span> <span class="n">region_name</span><span class="o">=</span><span class="p">{{</span> <span class="n">aws_region_name</span> <span class="p">}},</span><span class="w">
</span> <span class="n">aws_access_key_id</span><span class="o">=</span><span class="c1">#!cxtower.secret.aws_access_key!#,</span><span class="w">
</span> <span class="n">aws_secret_access_key</span><span class="o">=</span><span class="c1">#!cxtower.secret.aws_secret_access_key!#</span><span class="w">
</span><span class="p">)</span>
</pre>
<p>Popular AWS services include: EC2 (compute), S3 (storage), RDS
(databases), and CloudWatch (monitoring).</p>
<p>For more details, see the <a class="reference external" href="https://boto3.amazonaws.com/v1/documentation/api/latest/index.html">AWS Boto3
Documentation</a>.</p>
</div>
</div>
<div class="section" id="changelog">
<h1><a class="toc-backref" href="#toc-entry-17">Changelog</a></h1>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-18">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/cetmix/cetmix-tower/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/cetmix/cetmix-tower/issues/new?body=module:%20cetmix_tower_aws%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-19">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-20">Authors</a></h2>
<ul class="simple">
<li>Cetmix</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-21">Maintainers</a></h2>
<p>This module is part of the <a class="reference external" href="https://github.com/cetmix/cetmix-tower/tree/18.0/cetmix_tower_aws">cetmix/cetmix-tower</a> project on GitHub.</p>
<p>You are welcome to contribute.</p>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1 @@
from . import test_boto3_integration

View File

@@ -0,0 +1,64 @@
# Copyright 2024 Cetmix OÜ
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo.tests import common
class TestBoto3Integration(common.TransactionCase):
"""Test boto3 integration with Cetmix Tower commands."""
def setUp(self):
super().setUp()
# Create a test command
self.command = self.env["cx.tower.command"].create(
{
"name": "Test AWS Command",
"action": "python_code",
}
)
self.eval_context = self.env[
"cx.tower.command"
]._get_python_command_eval_context()
def test_boto3_in_evaluation_context(self):
"""Test that boto3 is added to the evaluation context."""
# Get evaluation context
# Check if boto3 is in the evaluation context
self.assertIn("boto3", self.eval_context)
# Check available methods
boto3_obj = self.eval_context["boto3"]
self.assertTrue(hasattr(boto3_obj, "client"))
self.assertTrue(hasattr(boto3_obj, "resource"))
self.assertTrue(hasattr(boto3_obj, "Session"))
def test_boto3_in_evaluation_context_with_server(self):
"""Test that boto3 is added to the evaluation context
when server is provided."""
# Create a test server
test_server = self.env["cx.tower.server"].create(
{
"name": "Test AWS Server",
"reference": "test_aws_server",
"ip_v4_address": "localhost",
"ssh_username": "admin",
"ssh_password": "password",
"ssh_auth_mode": "p",
"host_key": "test_key",
}
)
# Get evaluation context with server
eval_context = self.env["cx.tower.command"]._get_python_command_eval_context(
server=test_server
)
# Check if boto3 is in the evaluation context
self.assertIn("boto3", eval_context)
# Check available methods
boto3_obj = eval_context["boto3"]
self.assertTrue(hasattr(boto3_obj, "client"))
self.assertTrue(hasattr(boto3_obj, "resource"))
self.assertTrue(hasattr(boto3_obj, "Session"))
# Verify server is correctly passed to the context
self.assertEqual(eval_context["server"], test_server)

View File

@@ -1,54 +0,0 @@
==================
Odoo 18 Accounting
==================
This Module will adds following accounting features to Odoo 19 community edition:
Financial Reports, Asset Management, Budget Management, Bank Statement Import,
Daily Reports, Customer Follow Ups and Recurring Payments
Common FAQ
==========
1. How to skip in payment status and directly move to paid status ?
a) https://www.youtube.com/watch?v=eWxfy86Byog
Installation
============
To install this module, you need to:
Download the module and add it to your Odoo addons folder. Afterward, log on to
your Odoo server and go to the Apps menu. Trigger the debug mode and update the
list by clicking on the "Update Apps List" link. Now install the module by
clicking on the install button.
Upgrade
============
To upgrade this module, you need to:
Download the module and add it to your Odoo addons folder. Restart the server
and log on to your Odoo server. Select the Apps menu and upgrade the module by
clicking on the upgrade button.
Configuration
=============
There is Nothing to Configure
Credits
=======
Contributors
------------
* Odoo Mates <odoomates@gmail.com>
* Walnut Software Solutions <info@walnutit.com>
Author & Maintainer
-------------------
This module is maintained by the Odoo Mates

View File

@@ -1,44 +0,0 @@
{
'name': 'Odoo 19 Accounting Community',
'version': '19.0.1.0.3', # __odoosky_original_version__: '1.0.3'
'category': 'Accounting',
'summary': 'Accounting Reports, Asset Management and Budget, Recurring Payments, '
'Lock Dates, Fiscal Year, Accounting Dashboard, Financial Reports, '
'Customer Follow up Management, Bank Statement Import',
'description': 'Odoo 19 Financial Reports, Asset Management and '
'Budget, Financial Reports, Recurring Payments, '
'Bank Statement Import, Customer Follow Up Management,'
'Account Lock Date, Accounting Dashboard',
'live_test_url': 'https://www.youtube.com/c/OdooMates',
'sequence': '1',
'sequence': '1',
'website': 'https://www.walnutit.com',
'author': 'Odoo Mates, Walnut Software Solutions, Odoo SA',
'maintainer': 'Odoo Mates, Walnut Software Solutions',
'license': 'LGPL-3',
'support': 'odoomates@gmail.com',
'depends': [
'accounting_pdf_reports',
'om_account_asset',
'om_account_budget',
'om_fiscal_year',
'om_recurring_payments',
'om_account_daily_reports',
'om_account_followup',
],
'data': [
'security/group.xml',
'views/menu.xml',
'views/settings.xml',
'views/account_group.xml',
'views/account_tag.xml',
'views/res_partner.xml',
'views/account_bank_statement.xml',
'views/payment_method.xml',
'views/reconciliation.xml',
'views/account_journal.xml',
],
'application': True,
'images': ['static/description/banner.gif'],
}

View File

@@ -1,54 +0,0 @@
==================
Odoo 19 Accounting
==================
This Module will adds following accounting features to Odoo 19 community edition:
Financial Reports, Asset Management, Budget Management, Bank Statement Import,
Daily Reports, Customer Follow Ups and Recurring Payments
Common FAQ
==========
1. How to skip in payment status and directly move to paid status ?
a) https://www.youtube.com/watch?v=eWxfy86Byog
Installation
============
To install this module, you need to:
Download the module and add it to your Odoo addons folder. Afterward, log on to
your Odoo server and go to the Apps menu. Trigger the debug mode and update the
list by clicking on the "Update Apps List" link. Now install the module by
clicking on the install button.
Upgrade
============
To upgrade this module, you need to:
Download the module and add it to your Odoo addons folder. Restart the server
and log on to your Odoo server. Select the Apps menu and upgrade the module by
clicking on the upgrade button.
Configuration
=============
There is Nothing to Configure
Credits
=======
Contributors
------------
* Odoo Mates <odoomates@gmail.com>
* Walnut Software Solutions <info@walnutit.com>
Author & Maintainer
-------------------
This module is maintained by the Odoo Mates

View File

@@ -1,3 +0,0 @@
##Turkish - Alaattin Kahramanlar
##Spanish MX - Alfonso González
##French - Sylvain LC

View File

@@ -1,133 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * om_account_accountant
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-04-15 18:15+0000\n"
"PO-Revision-Date: 2022-04-15 18:15+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
msgid "Account Groups"
msgstr "مجموعات الحساب\n"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
msgid "Account Tags"
msgstr "علامات تصنيف الحساب "
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.account_type_menu
msgid "Account Types"
msgstr "أنواع الحسابات\n"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
msgid "Accounting"
msgstr "محاسبة\n"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Anglo-Saxon Accounting"
msgstr "المحاسبة الأنجلو سكسونية\n"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
msgid "Bank Statements"
msgstr "البيانات المصرفية\n"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
msgid "Bank and Cash"
msgstr "البنك والنقد "
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
msgid "Cash Registers"
msgstr "آلات تسجيل النقد "
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_coa_template
msgid "Chart of Accounts Templates"
msgstr "قوالب مخطط الحسابات "
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_res_config_settings
msgid "Config Settings"
msgstr "ضبط الاعدادات"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_fiscal_position_template
#: model:ir.ui.menu,name:om_account_accountant.menu_account_fiscal_position_template
msgid "Fiscal Position Templates"
msgstr "قوالب المركز المالي\n"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Group By"
msgstr "مجموعة من\n"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Method"
msgstr "طرق السداد"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
msgid "Payment Methods"
msgstr "طرق السداد"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Type"
msgstr "نوع الدفع\n"
#. module: om_account_accountant
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
msgid "Reconcile"
msgstr "التصالح\n"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid ""
"Record the cost of a good as an expense when this good is\n"
" invoiced to a final customer (instead of recording the cost as soon\n"
" as the product is received in stock)."
msgstr ""
"سجل تكلفة سلعة كمصروف عندما تكون هذه السلعة\n"
" إصدار فاتورة للعميل النهائي (بدلاً من تسجيل التكلفة في أقرب وقت\n"
" كما يتم استلام المنتج في المخزون)."
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid ""
"Record the cost of a good as an expense when this good is invoiced to a "
"final customer."
msgstr ""
"سجل تكلفة سلعة كمصروف عندما يتم إصدار فاتورة بهذه السلعة للعميل النهائي.\n"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
msgid "Templates"
msgstr "القوالب "
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid "Use anglo-saxon accounting"
msgstr "استخدام طريقة المحاسبة الأنجلو-ساكسونية"

View File

@@ -1,137 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * om_account_accountant
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-06 02:59+0000\n"
"PO-Revision-Date: 2022-07-06 02:59+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
msgid "Account Groups"
msgstr "مجموعات الحساب\n"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
msgid "Account Tags"
msgstr "علامات الحساب\n"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.account_type_menu
msgid "Account Types"
msgstr "أنواع الحسابات\n"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
msgid "Accounting"
msgstr "محاسبة\n"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Anglo-Saxon Accounting"
msgstr "المحاسبة الأنجلو سكسونية\n"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
msgid "Bank Statements"
msgstr "البيانات المصرفية\n"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
msgid "Bank and Cash"
msgstr "البنك والنقد\n"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
msgid "Cash Registers"
msgstr "الات المحاسبه\n"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_coa_template
msgid "Chart of Accounts Templates"
msgstr "نماذج مخطط الحسابات\n"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_res_config_settings
msgid "Config Settings"
msgstr "ضبط الاعدادات"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_fiscal_position_template
#: model:ir.ui.menu,name:om_account_accountant.menu_account_fiscal_position_template
msgid "Fiscal Position Templates"
msgstr "قوالب المركز المالي\n"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Group By"
msgstr "مجموعة من\n"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_account_move
msgid "Journal Entry"
msgstr "قيد اليومية"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Method"
msgstr "طريقة الدفع او السداد\n"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
msgid "Payment Methods"
msgstr "طرق الدفع\n"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Type"
msgstr "نوع الدفع\n"
#. module: om_account_accountant
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
msgid "Reconcile"
msgstr "التصالح"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid ""
"Record the cost of a good as an expense when this good is\n"
" invoiced to a final customer (instead of recording the cost as soon\n"
" as the product is received in stock)."
msgstr ""
"سجل تكلفة سلعة كمصروف عند إصدار فاتورة بهذه السلعة للعميل النهائي (بدلاً من "
"تسجيل التكلفة بمجرد استلام المنتج في المخزون)."
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid ""
"Record the cost of a good as an expense when this good is invoiced to a "
"final customer."
msgstr ""
"سجل تكلفة سلعة كمصروف عندما يتم إصدار فاتورة بهذه السلعة للعميل النهائي.\n"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
msgid "Templates"
msgstr "القوالب"
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid "Use anglo-saxon accounting"
msgstr "استخدم محاسبة الأنجلو ساكسون\n"

View File

@@ -1,144 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * om_account_accountant
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 19:42+0000\n"
"PO-Revision-Date: 2024-03-21 19:42+0000\n"
"Last-Translator: Sergio Ariel Ameghino <ariel.ameghino@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
msgid "Account Groups"
msgstr "Grupos de cuentas"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
msgid "Account Tags"
msgstr "Etiquetas de cuenta"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
msgid "Accounting"
msgstr "Contabilidad"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Anglo-Saxon Accounting"
msgstr "Contabilidad Anglosajona"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
msgid "Bank Statements"
msgstr "Extracto bancario"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_bank_cash
msgid "Bank and Cash"
msgstr "Banco y Efectivo"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
msgid "Cash Registers"
msgstr "Cajas Registradoras"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_res_config_settings
msgid "Config Settings"
msgstr "Ajustes de configuración"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Group By"
msgstr "Agrupar por"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_account_move
msgid "Journal Entry"
msgstr "Asiento contable"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_finance_entries_accounting_journals
msgid "Journals"
msgstr "Diarios"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_misc
msgid "Miscellaneous"
msgstr "Misceláneas"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Method"
msgstr "Método de pago"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
msgid "Payment Methods"
msgstr "Métodos de pago"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Type"
msgstr "Tipos de pago"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_purchase
msgid "Purchases"
msgstr "Compras"
#. module: om_account_accountant
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
msgid "Reconcile"
msgstr "Conciliación"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid ""
"Record the cost of a good as an expense when this good is\n"
" invoiced to a final customer (instead of recording the cost as soon\n"
" as the product is received in stock)."
msgstr ""
"Registrar el costo de un bien como gasto cuando este bien se\n"
"\t\t\t\t facture a un cliente final (en lugar de registrar el costo tan pronto\n"
"\t\t\t\t como el producto se recibe en stock)."
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid ""
"Record the cost of a good as an expense when this good is invoiced to a "
"final customer."
msgstr ""
"Registrar el costo de un bien como gasto cuando este bien se factura a "
"cliente final."
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_sales
msgid "Sales"
msgstr "Ventas"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
msgid "Templates"
msgstr "Plantillas"
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid "Use anglo-saxon accounting"
msgstr "Usar Contabilidad Anglosajona"

View File

@@ -1,139 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * om_account_accountant
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0-20220319\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-06-12 03:13+0000\n"
"PO-Revision-Date: 2022-06-12 03:13+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
msgid "Account Groups"
msgstr "Grupos de cuentas"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
msgid "Account Tags"
msgstr "Etiquetas de cuenta"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.account_type_menu
msgid "Account Types"
msgstr "Tipos de cuentas"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
msgid "Accounting"
msgstr "Contabilidad"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Anglo-Saxon Accounting"
msgstr "Contabilidad anglo-sajona"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
msgid "Bank Statements"
msgstr "Extractos bancarios"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
msgid "Bank and Cash"
msgstr "Banco y efectivo"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
msgid "Cash Registers"
msgstr "Registros de caja"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_coa_template
msgid "Chart of Accounts Templates"
msgstr "Plantilla de Plan Contable"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_res_config_settings
msgid "Config Settings"
msgstr "Opciones de configuración"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_fiscal_position_template
#: model:ir.ui.menu,name:om_account_accountant.menu_account_fiscal_position_template
msgid "Fiscal Position Templates"
msgstr "Plantillas de posición fiscal"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Group By"
msgstr "Agrupar por"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_account_move
msgid "Journal Entry"
msgstr "Asiento de diario"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Method"
msgstr "Método de pago"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
msgid "Payment Methods"
msgstr "Métodos de pago"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Type"
msgstr "Tipo de pago"
#. module: om_account_accountant
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
msgid "Reconcile"
msgstr "Conciliación"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid ""
"Record the cost of a good as an expense when this good is\n"
" invoiced to a final customer (instead of recording the cost as soon\n"
" as the product is received in stock)."
msgstr ""
"Registrar el costo de un bien como gasto cuando este bien se\n"
" facturado a un cliente final (en lugar de registrar el costo tan pronto\n"
" como el producto se recibe en stock)."
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid ""
"Record the cost of a good as an expense when this good is invoiced to a "
"final customer."
msgstr ""
"Registre el costo de un bien como un gasto cuando este bien se facture a un "
"cliente final."
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
msgid "Templates"
msgstr "Plantillas"
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid "Use anglo-saxon accounting"
msgstr "Utilizar contabilidad anglo-sajona"

View File

@@ -1,144 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * om_account_accountant
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0-20220319\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-06-12 03:13+0000\n"
"PO-Revision-Date: 2022-07-05 23:59+0200\n"
"Last-Translator: Sylvain Lc\n"
"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
"X-Generator: Poedit 3.1\n"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
msgid "Account Groups"
msgstr "Groupes de comptes"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
msgid "Account Tags"
msgstr "Balises de compte"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.account_type_menu
msgid "Account Types"
msgstr "Types de compte"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
msgid "Accounting"
msgstr "Comptabilité"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Anglo-Saxon Accounting"
msgstr "Comptabilité anglo-saxone"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
msgid "Bank Statements"
msgstr "Relevés bancaires"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
msgid "Bank and Cash"
msgstr "Banque et liquidités"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
msgid "Cash Registers"
msgstr "Caisses"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_coa_template
msgid "Chart of Accounts Templates"
msgstr "Modèles de plans de comptes"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_res_config_settings
msgid "Config Settings"
msgstr "Paramètres de Configuration"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_fiscal_position_template
#: model:ir.ui.menu,name:om_account_accountant.menu_account_fiscal_position_template
msgid "Fiscal Position Templates"
msgstr "Modèles de situation financière"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Group By"
msgstr "Grouper par"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_account_move
msgid "Journal Entry"
msgstr "Pièce comptable"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Method"
msgstr "Moyen de paiement"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
msgid "Payment Methods"
msgstr "Méthodes de paiement"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Type"
msgstr "Type de paiement"
#. module: om_account_accountant
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
msgid "Reconcile"
msgstr "Lettrer"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid ""
"Record the cost of a good as an expense when this good is\n"
" invoiced to a final customer (instead of "
"recording the cost as soon\n"
" as the product is received in stock)."
msgstr ""
"Enregistrer le coût dun bien comme une dépense lorsque ce bien est\n"
" facturé à un client final (au lieu "
"denregistrer le coût dès que possible)\n"
" au fur et à mesure que le produit est reçu "
"en stock)."
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid ""
"Record the cost of a good as an expense when this good is invoiced to a "
"final customer."
msgstr ""
"Enregistrez le coût dun bien comme une dépense lorsque ce bien est facturé "
"à un client final."
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
msgid "Templates"
msgstr "Modèles"
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid "Use anglo-saxon accounting"
msgstr "Utiliser la comptabilité anglo-saxone"

View File

@@ -1,144 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * om_account_accountant
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-09 12:27+0000\n"
"PO-Revision-Date: 2024-11-09 12:27+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
msgid "Account Groups"
msgstr "Grup Akun"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
msgid "Account Tags"
msgstr "Tag Akun"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
msgid "Accounting"
msgstr "Akuntansi"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Anglo-Saxon Accounting"
msgstr "Akuntansi Anglo-Saxon"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
msgid "Bank Statements"
msgstr "Laporan Bank"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_bank_cash
msgid "Bank and Cash"
msgstr "Bank dan Uang Tunai"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
msgid "Cash Registers"
msgstr "Mesin Kasir"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_res_config_settings
msgid "Config Settings"
msgstr "Pengaturan Konfigurasi"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Group By"
msgstr "Kelompokkan Berdasarkan"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_account_move
msgid "Journal Entry"
msgstr "Entri Jurnal"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_finance_entries_accounting_journals
msgid "Journals"
msgstr "Jurnal"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_misc
msgid "Miscellaneous"
msgstr "Lain-Lain"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Method"
msgstr "Metode Pembayaran"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
msgid "Payment Methods"
msgstr "Metode Pembayaran"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Type"
msgstr "Tipe Pembayaran"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_purchase
msgid "Purchases"
msgstr "Pembelian"
#. module: om_account_accountant
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
msgid "Reconcile"
msgstr "Penyesuaian"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid ""
"Record the cost of a good as an expense when this good is\n"
" invoiced to a final customer (instead of recording the cost as soon\n"
" as the product is received in stock)."
msgstr ""
"Catat harga pokok suatu barang sebagai pengeluaran ketika barang tersebut\n"
" ditagihkan ke pelanggan akhir (alih-alih mencatat biayanya\n"
" segera setelah produk diterima dalam stok)."
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid ""
"Record the cost of a good as an expense when this good is invoiced to a "
"final customer."
msgstr ""
"Catat harga suatu barang sebagai beban ketika barang tersebut ditagihkan "
"ke pelanggan akhir."
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_sales
msgid "Sales"
msgstr "Penjualan"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
msgid "Templates"
msgstr "Templat"
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid "Use anglo-saxon accounting"
msgstr "Gunakan akuntansi Anglo-Saxon"

View File

@@ -1,133 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * om_account_accountant
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-04-15 06:40+0000\n"
"PO-Revision-Date: 2022-04-15 06:40+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
msgid "Account Groups"
msgstr "Hesap Grupları"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
msgid "Account Tags"
msgstr "Hesap Etiketleri"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.account_type_menu
msgid "Account Types"
msgstr "Hesap Tipleri"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
msgid "Accounting"
msgstr "Muhasebe"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Anglo-Saxon Accounting"
msgstr "Anglo-Sakson Muhasebesi"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
msgid "Bank Statements"
msgstr "Banka Hesap Özetleri"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
msgid "Bank and Cash"
msgstr "Banka ve Nakit"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
msgid "Cash Registers"
msgstr "Yazar Kasa"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_coa_template
msgid "Chart of Accounts Templates"
msgstr "Hesap Planı Şablonları"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_res_config_settings
msgid "Config Settings"
msgstr "Yapılandırma Ayarları"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_fiscal_position_template
#: model:ir.ui.menu,name:om_account_accountant.menu_account_fiscal_position_template
msgid "Fiscal Position Templates"
msgstr "Mali Pozisyon Şablonları"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Group By"
msgstr "Gruplama"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Method"
msgstr "Ödeme Metodu"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
msgid "Payment Methods"
msgstr "Ödeme Metotları"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Type"
msgstr "Ödeme Tipi"
#. module: om_account_accountant
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
msgid "Reconcile"
msgstr "Mutabakat"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid ""
"Record the cost of a good as an expense when this good is\n"
" invoiced to a final customer (instead of recording the cost as soon\n"
" as the product is received in stock)."
msgstr ""
"Bir ürünün bedelini, o ürün son tüketiciye faturalandıktan sonra gider "
"olarak kayda gir. (Ürün stoğu geldiği anda gider olarak kaydetmek yerine)"
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid ""
"Record the cost of a good as an expense when this good is invoiced to a "
"final customer."
msgstr ""
"Ürünün bedelini, ürün son tüketiciye faturalandıktan sonra gider olarak "
"kayda gir."
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
msgid "Templates"
msgstr "Şablonlar"
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid "Use anglo-saxon accounting"
msgstr "Anglo-Sakson muhasebesi kullan"

View File

@@ -1,369 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * om_account_accountant
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-07 07:33+0000\n"
"PO-Revision-Date: 2022-07-07 07:33+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
msgid "Account Groups"
msgstr "Групи рахунків"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
msgid "Account Tags"
msgstr "Теги рахунків"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.account_type_menu
msgid "Account Types"
msgstr "Типи рахунків"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
msgid "Accounting"
msgstr ""
#. module: om_account_accountant
#: model:res.groups,name:om_account_accountant.group_fiscal_year
msgid "Allow to define fiscal years of more or less than a year"
msgstr ""
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Anglo-Saxon Accounting"
msgstr ""
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
msgid "Bank Statements"
msgstr "Банківські виписки"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
msgid "Bank and Cash"
msgstr "Банк та каса"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_change_lock_date
msgid "Cancel"
msgstr "Скасувати"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
msgid "Cash Registers"
msgstr "Касові апарати"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_change_lock_date
msgid "Change Lock Date"
msgstr ""
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_coa_template
msgid "Chart of Accounts Templates"
msgstr "Шаблони планів рахунків"
#. module: om_account_accountant
#: model_terms:ir.actions.act_window,help:om_account_accountant.actions_account_fiscal_year
msgid "Click here to create a new fiscal year."
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__company_id
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__company_id
msgid "Company"
msgstr ""
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_res_config_settings
msgid "Config Settings"
msgstr "Налаштування"
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__create_uid
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__create_uid
msgid "Created by"
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__create_date
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__create_date
msgid "Created on"
msgstr ""
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Define fiscal years of more or less than one year"
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__display_name
#: model:ir.model.fields,field_description:om_account_accountant.field_account_move__display_name
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__display_name
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Відобразити назву"
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__date_to
msgid "End Date"
msgstr "Дата закінчення"
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_account_fiscal_year__date_to
msgid "Ending Date, included in the fiscal year."
msgstr "Кінцева дата, яка входиь до фіскального року."
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Fiscal Period Closing"
msgstr ""
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_fiscal_position_template
#: model:ir.ui.menu,name:om_account_accountant.menu_account_fiscal_position_template
msgid "Fiscal Position Templates"
msgstr "Шаблони схем оподаткування"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_account_fiscal_year
#: model:ir.ui.menu,name:om_account_accountant.menu_fiscal_year
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Fiscal Year"
msgstr ""
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.actions_account_fiscal_year
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__group_fiscal_year
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Fiscal Years"
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__fiscalyear_last_day
msgid "Fiscalyear Last Day"
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__fiscalyear_last_month
msgid "Fiscalyear Last Month"
msgstr ""
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Group By"
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__id
#: model:ir.model.fields,field_description:om_account_accountant.field_account_move__id
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__id
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__id
msgid "ID"
msgstr ""
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_account_move
msgid "Journal Entry"
msgstr "Запис у журналі"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Last Day"
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year____last_update
#: model:ir.model.fields,field_description:om_account_accountant.field_account_move____last_update
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date____last_update
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings____last_update
msgid "Last Modified on"
msgstr "Останні зміни"
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__write_uid
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__write_uid
msgid "Last Updated by"
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__write_date
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__write_date
msgid "Last Updated on"
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__fiscalyear_lock_date
msgid "Lock Date"
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__fiscalyear_lock_date
msgid "Lock Date for All Users"
msgstr "Дата закриття для всіх користувачів"
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__period_lock_date
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__period_lock_date
msgid "Lock Date for Non-Advisers"
msgstr "Дата закриття для користувачів без ролі Консультант"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_action_change_lock_date
msgid "Lock Dates"
msgstr "Дати закриття періодів"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_view_change_lock_date
msgid "Lock your Fiscal Period"
msgstr "Закрийте свій податковий період"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Lock your fiscal period"
msgstr "Закрийте свій податковий період"
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__name
msgid "Name"
msgstr "Назва"
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_change_lock_date__tax_lock_date
msgid ""
"No users can edit journal entries related to a tax prior and inclusive of "
"this date."
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__fiscalyear_lock_date
msgid ""
"No users, including Advisers, can edit accounts prior to and inclusive of "
"this date. Use it for fiscal year locking for example."
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_change_lock_date__fiscalyear_lock_date
msgid ""
"No users, including Advisers, can edit accounts prior to and inclusive of "
"this date. Use it for fiscal year locking."
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__period_lock_date
msgid ""
"Only users with the 'Adviser' role can edit accounts prior to and inclusive "
"of this date. Use it for period locking inside an open fiscal year, for "
"example."
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_change_lock_date__period_lock_date
msgid ""
"Only users with the Adviser role can edit accounts prior to and inclusive of"
" this date. Use it for period locking inside an open fiscal year."
msgstr ""
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Method"
msgstr "Спосіб оплати"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
msgid "Payment Methods"
msgstr "Спосіб оплати"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Type"
msgstr "Тип оплати"
#. module: om_account_accountant
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
msgid "Reconcile"
msgstr ""
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid ""
"Record the cost of a good as an expense when this good is\n"
" invoiced to a final customer (instead of recording the cost as soon\n"
" as the product is received in stock)."
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid ""
"Record the cost of a good as an expense when this good is invoiced to a "
"final customer."
msgstr ""
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_change_lock_date
msgid "Save"
msgstr "Зберегти"
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__date_from
msgid "Start Date"
msgstr "Дата початку"
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_account_fiscal_year__date_from
msgid "Start Date, included in the fiscal year."
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__tax_lock_date
msgid "Tax Lock Date"
msgstr ""
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
msgid "Templates"
msgstr "Шаблони"
#. module: om_account_accountant
#: code:addons/om_account_accountant/models/account_fiscal_year.py:0
#, python-format
msgid "The ending date must not be prior to the starting date."
msgstr ""
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid "Use anglo-saxon accounting"
msgstr ""
#. module: om_account_accountant
#: code:addons/om_account_accountant/wizard/change_lock_date.py:0
#, python-format
msgid "You Are Not Allowed To Perform This Operation"
msgstr ""
#. module: om_account_accountant
#: code:addons/om_account_accountant/models/account_fiscal_year.py:0
#, python-format
msgid ""
"You can not have an overlap between two fiscal years, please correct the "
"start and/or end dates of your fiscal years."
msgstr ""

View File

@@ -1,146 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * om_account_accountant
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0-20231105\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-23 21:28+0000\n"
"PO-Revision-Date: 2023-11-24 06:08+0800\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.4.1\n"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
msgid "Account Groups"
msgstr "帳戶組別"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
msgid "Account Tags"
msgstr "帳戶標籤"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
msgid "Accounting"
msgstr "會計"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid "Anglo-Saxon Accounting"
msgstr "Anglo-Saxon會計"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
msgid "Bank Statements"
msgstr "銀行對帳單"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_bank_cash
msgid "Bank and Cash"
msgstr "銀行和現金"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
msgid "Cash Registers"
msgstr "現金出納"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_res_config_settings
msgid "Config Settings"
msgstr "設置"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Group By"
msgstr "分組按"
#. module: om_account_accountant
#: model:ir.model,name:om_account_accountant.model_account_move
msgid "Journal Entry"
msgstr "日記帳分錄"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_finance_entries_accounting_journals
msgid "Journals"
msgstr "日記帳"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_misc
msgid "Miscellaneous"
msgstr "一般"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Method"
msgstr "付款方式"
#. module: om_account_accountant
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
msgid "Payment Methods"
msgstr "付款方法"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
msgid "Payment Type"
msgstr "付款類型"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_purchase
msgid "Purchases"
msgstr "採購"
#. module: om_account_accountant
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
msgid "Reconcile"
msgstr "沖帳"
#. module: om_account_accountant
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
msgid ""
"Record the cost of a good as an expense when this good is\n"
" invoiced to a final customer (instead of "
"recording the cost as soon\n"
" as the product is received in stock)."
msgstr ""
"當商品是\n"
" 向最終客戶開具發票(而不是儘快記錄成"
"本)\n"
" 因為產品有庫存)。"
#. module: om_account_accountant
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid ""
"Record the cost of a good as an expense when this good is invoiced to a "
"final customer."
msgstr "當向最終客戶開立發票時,將商品成本記錄為費用。"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_sales
msgid "Sales"
msgstr "銷售"
#. module: om_account_accountant
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
msgid "Templates"
msgstr "模板"
#. module: om_account_accountant
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
msgid "Use anglo-saxon accounting"
msgstr "使用盎格魯-撒克遜會計"

View File

@@ -1,2 +0,0 @@
from . import account_move
from . import settings

View File

@@ -1,9 +0,0 @@
from odoo import fields, models, api
class AccountMove(models.Model):
_inherit = "account.move"
@api.model
def _get_invoice_in_payment_state(self):
return 'in_payment'

View File

@@ -1,11 +0,0 @@
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
anglo_saxon_accounting = fields.Boolean(
related="company_id.anglo_saxon_accounting",
readonly=False, string="Use anglo-saxon accounting",
help="Record the cost of a good as an expense when this good is invoiced to a final customer."
)

View File

@@ -1,23 +0,0 @@
<?xml version="1.0"?>
<odoo>
<record id="base.module_category_accounting_accounting" model="ir.module.category">
<field name="name">Accounting</field>
</record>
<record id="account.group_account_user" model="res.groups">
<field name="name">Accountant</field>
<field name="implied_ids" eval="[(4, ref('account.group_account_invoice'))]" />
<field name="user_ids" eval="[(4, ref('base.user_admin')), (4, ref('base.user_root'))]" />
</record>
<record id="account.group_account_manager" model="res.groups">
<field name="implied_ids" eval="[(4, ref('account.group_account_user')), (3, ref('account.group_account_invoice'))]" />
<field name="name">Advisor</field>
</record>
<record id="account.group_account_readonly" model="res.groups">
<field name="name">Auditor</field>
</record>
</odoo>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 742 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -1,254 +0,0 @@
<hr style="border: none; height: 1px; background: linear-gradient(to right, transparent, #ccc, transparent); margin: 20px auto;"/>
<section class="oe_container">
<div class="col-md-12 text-center">
<a target="_blank" href="https://www.walnutit.com">
<img src="odoowalnut.png" style="height:150px;">
</a>
</div>
<div class="col-md-12 text-center" style="margin-top: 10px;">
<a target="_blank" href="https://www.walnutit.com">
<h2>WALNUT SOFTWARE SOLUTIONS</h2>
</a>
<p>
<a href="https://www.walnutit.com" target="_blank">Website: www.walnutit.com</a><br>
Email: <a href="mailto:info@walnutit.com">info@walnutit.com</a>
</p>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span6">
<a target="_blank" href="https://www.youtube.com/watch?v=PEvrXDgfRMM">
<h3 class="oe_slogan" style="color: #332c3c;font-size: 24px;font-weight: bold;font-style: italic;">
<blink>Like to part of this project ? Contribute and
lets enhance and create a better product for the community
</blink>
</h3>
<h6 class="oe_slogan"style="color: #332c3c;font-size: 20px;font-weight: bold;font-style: italic;">
help us to translate the module into your language.
Click to know how you can contribute
</h6>
</a>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<a target="_blank" href="https://www.youtube.com/watch?v=PEvrXDgfRMM">
<img src="odoo_github.png" style="height:200px;">
</a>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="col-md-12">
<a target="_blank" href="https://www.walnutit.com">
<h2 class="oe_slogan" style="font-size: 35px;color:#2C0091"><b>Odoo 19 Accounting For Community</b></h2>
</a>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Financial Reports</h2>
<h3 class="oe_slogan" style="color:#000066;font-size: 24px;">Balance Sheet, Profit and Loss, Partner Ledger,
Aged Partner Balance, Aged Receivable, Aged Payable, General Ledger,
Trial Balance, Tax Reports, Journals Audit Reports</h3>
<div class="oe_demo oe_picture oe_screenshot">
<img src="financial_reports.png" style="height:400px;">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Asset Management</h2>
<div class="oe_demo oe_picture oe_screenshot">
<img src="odoo18_asset_management.png" style="height:400px;">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Budget Management</h2>
<div class="oe_demo oe_picture oe_screenshot">
<img src="odoo18_budget.png" style="height:400px;">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Accounting Dashboard</h2>
<div class="oe_demo oe_picture oe_screenshot">
<img src="account_dashboard.png" style="height:400px;">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Customer Follow Up</h2>
<h3 class="oe_slogan" style="color:#000066;font-size: 24px;">Send follow up emails to customer regarding pending payments
</h3>
<div class="oe_demo oe_picture oe_screenshot">
<img src="customer_followup.png" style="height:400px;">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Recurring Payment</h2>
<div class="oe_demo oe_picture oe_screenshot">
<img src="recurring_payment.png" style="height:400px;">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Daily Reports</h2>
<h3 class="oe_slogan" style="color:#000066;font-size: 24px;">Day Book, Cash Book and Bank Book</h3>
<div style="text-align: center;">
<a href="https://www.youtube.com/watch?v=PEh-an8iCO0" target="_blank" class="fa fa-youtube-play" style="font-size:24px;color:red">
Daily financial reports
</a>
</div>
<div class="oe_demo oe_picture oe_screenshot">
<img src="daily_reports.png" style="height:400px;">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Fiscal Year and Closing</h2>
<h3 class="oe_slogan" style="color:#000066;font-size: 24px;">
Manage fiscal years and year ending by setting lock dates
</h3>
<div class="oe_demo oe_picture oe_screenshot">
<img src="odoo18_fiscal_year.png" style="height:400px;">
</div>
</div>
</div>
</section>
<!--<section class="oe_container oe_dark">-->
<!-- <div class="oe_row oe_spaced">-->
<!-- <div class="oe_span12">-->
<!-- <h2 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Bank Statement & Reconciliation</h2>-->
<!-- <h3 class="oe_slogan" style="color:#000066;font-size: 24px;">Compatible with OCA reconciliation app</h3>-->
<!-- <div style="text-align: center;">-->
<!-- <a href="https://odoo-community.org/shop/account-reconcile-oca-12428#attr=940118" target="_blank" class="fa fa-bookmark" style="font-size:24px;color:#714B67">-->
<!-- Click to Download Bank Statement & Reconciliation-->
<!-- </a>-->
<!-- </div>-->
<!-- <div class="oe_demo oe_picture oe_screenshot">-->
<!-- <img src="odoo18_reconcile.png" style="height:400px;">-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!--</section>-->
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Account Settings</h2>
<h3 class="oe_slogan" style="color:#000066;font-size: 24px;">Enable sales receipts, purchase receipts, credit limit,
anglo saxon accounting and configure fiscal years from account settings
</h3>
<div class="oe_demo oe_picture oe_screenshot">
<img src="account_settings.png" style="height:400px;">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Account Settings</h2>
<div class="oe_demo oe_picture oe_screenshot">
<img src="account_settings2.png" style="height:400px;">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan" style="color:#714B67;font-size: 28px;">Need Enhanced Financial Reports ?</h2>
<h3 class="oe_slogan" style="color:#714B67;font-size: 28px;">
View financial reports in screen with filters and in PDF, Excel formats</h3>
<div class="oe_demo oe_picture oe_screenshot">
<img src="odoo_report.gif" style="height:400px;">
</div>
<div style="text-align: center;">
<a href="https://apps.odoo.com/apps/modules/19.0/om_accounting_reports/" target="_blank" class="fa fa-bookmark" style="font-size:24px;color:#714B67">
Enhanced accounting reports
</a>
</div>
</div>
</div>
</section>
<hr style="width: 100%;height: 4px;background: #2C0091;margin: 0px 0px;">
<hr style="width: 100%;height: 4px;background: #148963;margin: 0px 0px;">
<div class="row">
<div class="col-md-12">
<section class="oe_container oe_dark">
<div class="oe_row ">
<div class="oe_slogan text-center">
<img src="odoo_mates.png" style="height: 150px;"/>
<div style="color:#269900;">
<h3 style="color:#2C0091;font-size: 25px;">Keeping it simple</h3><br>
<h3 style="color:#2C0091;font-size: 20px;">Email: <a href="mailto:odoomates@gmail.com">odoomates@gmail.com</a> <br></h3>
</div>
<div class="oe_slogan">
<h2>
<a target="_blank" href="https://www.facebook.com/odoomatesofficial" target="new">
<i class="fa fa-facebook-square" style="font-size:38px;"></i>
</a>
<a target="_blank" href="https://twitter.com/odoomates/" target="new">
<i class="fa fa-twitter" style="font-size:38px;"></i>
</a>
<a href="#" target="_blank">
<i class="fa fa-linkedin" style="font-size:38px;"></i>
</a>
<a target="_blank" href="https://www.youtube.com/channel/UCVKlUZP7HAhdQgs-9iTJklQ">
<i class="fa fa-youtube-play" style="font-size:38px;"></i>
</a>
</h2>
</div>
</div>
</div>
</section>
</div>
</div>
<hr style="width: 100%;height: 4px;background: #148963;margin: 0px 0px;">
<hr style="width: 100%;height: 4px;background: #2C0091;margin: 0px 0px;">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 376 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<menuitem id="menu_accounting_bank_and_cash"
name="Bank and Cash"
parent="account.menu_finance_entries"
sequence="15"/>
<menuitem id="menu_accounting_statement_bank"
action="account.action_bank_statement_tree"
parent="menu_accounting_bank_and_cash"
sequence="10"/>
<menuitem id="menu_accounting_statement_cash"
action="account.action_view_bank_statement_tree"
parent="menu_accounting_bank_and_cash"
sequence="20"/>
</odoo>

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="action_account_group_action" model="ir.actions.act_window">
<field name="name">Account Groups</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.group</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_account_group"
action="action_account_group_action"
sequence="50"
parent="account.account_account_menu"/>
</odoo>

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