Compare commits

...

349 Commits
v102 ... v104

Author SHA1 Message Date
Anuken
0cbd9a1fcc Removed redundant file move code 2020-02-11 18:03:17 -05:00
Anuken
3102931cb4 Removed script wrapper 2020-02-11 17:50:16 -05:00
Anuken
fb302d49c7 Improved battery brightness display / Palette tweak / Diffgen buff 2020-02-11 17:27:33 -05:00
Anuken
a4a3e7fc48 Merge pull request #1514 from Arkanic/patch-7
make batteries glow based on power contents (a redo that works)
2020-02-11 16:31:14 -05:00
Anuken
eb87e5f265 Single-script mod case 2020-02-11 16:14:01 -05:00
Anuken
9c2569d4f5 Merge pull request #1477 from DeltaNedas/patch-5
controlled script loading
2020-02-11 16:03:38 -05:00
Anuken
ce3f4ed0fb Merge remote-tracking branch 'origin/master' 2020-02-11 15:54:23 -05:00
Anuken
1b94eed9d3 Fixed conveyors blending with enemy teams 2020-02-11 15:54:16 -05:00
Anuken
aafecfebbb Merge pull request #1468 from Prosta4okua/patch-7
Update bundle_uk_UA.properties
2020-02-11 15:45:12 -05:00
Anuken
5bbe4af71b Merge pull request #1466 from Vam-Jam/PlayerList
[Added] Dedicated Players command
2020-02-11 15:45:02 -05:00
Anuken
de9a14c903 Czech translation for 103.x changelog (#1455)
* Czech translation for 103.x changelog

* Czech translation - mod display

* Czech translation - fix typos

* Czech: added Time played + small format corr.

* Czech for server categories!
2020-02-11 15:40:33 -05:00
Ali-C-Ila
5ab47f4fe0 Update bundle_zh_TW.properties (#1454)
* Update bundle_zh_TW.properties

* Update bundle_zh_TW.properties
2020-02-11 15:40:24 -05:00
Vanguard
435860eda4 RU updates (#1442)
* 1 changed line, 1 removed line

Changed:
keybind.zoom.name

Removed:
keybind.zoom_hold.name

Moved some lines around to keep them in the same order with bundle.properties

* 1 changed line

tutorial.intro

* 3 new lines, 3 changed lines

New:
mod.erroredcontent
mod.errors
mod.noerrorplay

Changed:
mod.requiresversion
mod.remove.confirm
details

* 2 changed lines

mods.guide
mod.import.github

* 1 new line

link.feathub.description

* 1 changed line

item.graphite.description

* 1 changed line

block.mass-driver.description

* 9 new lines, 1 changed line

New:
be.update
be.update.confirm
be.updating
be.ignore
be.noupdates
be.check
server.kicked.serverRestarting
setting.coreselect.name
rules.blockhealthmultiplier

Changed:
wave.enemy

* 3 changed lines

quit.confirm.tutorial
setting.coreselect.name
public.confirm

* 22 changed lines

mod.missing
item.plastanium.name
block.plastanium-wall.name
block.plastanium-wall-large.name
block.plastanium-compressor.name
item.scrap.description
item.spore-pod.description
item.blast-compound.description
liquid.oil.description
unit.revenant.description
block.multi-press.description
block.plastanium-compressor.description
block.spore-press.description
block.power-source.description
block.force-projector.description
block.conveyor.description
block.mass-driver.description
block.liquid-junction.description
block.phase-conduit.description
block.thorium-reactor.description
block.blast-drill.description
block.cyclone.description

* 3 new lines, 2 removed lines

New:
setting.bridgeopacity.name
block.liquid-void.name
block.liquid-void.description

Removed:
block.signal
block.editsignal

* 1 new line

data.openfolder

* 1 changed line

block.cryofluidmixer.description

* 2 new lines

block.underflow-gate.name
block.underflow-gate.description

* 2 changed lines

unit.thousands
unit.millions

* 3 new lines

blocks.tiles
blocks.affinities
setting.playerlimit.name

* 1 changed line

block.underflow-gate.name

* 1 changed line

unit.thousands

* 1 changed line

blocks.affinities

* 1 changed line (reverted)

unit.thousands

* Update bundle_ru.properties

* 1 new line

mod.display

* 1 changed line

techtree

* 1 changed line (new approach)

techtree

* 1 changed line

editor.generate

* 1 new line

stat.playtime

* 3 new lines

servers.local
servers.remote
servers.global

* 3 changed lines

servers.local
servers.remote
servers.global

Co-authored-by: Anuken <arnukren@gmail.com>
Co-authored-by: Prosta4okua <31485341+Prosta4okua@users.noreply.github.com>
2020-02-11 15:40:17 -05:00
AmateurPotion
5611a8684c Update bundle_ko.properties (#1490)
* Update bundle_ko.properties

Finish! yeeeee!

* Update bundle_ko.properties
2020-02-11 15:33:25 -05:00
LauweJoster
f06550fc3c Update bundle_nl.properties (#1501)
Grammar and sentence improvements. Also added translations
2020-02-11 15:32:18 -05:00
Ali-C-Ila
652c143ff6 Update bundle_zh_TW.properties (#1519) 2020-02-11 15:25:53 -05:00
Rasangus
64ade54336 Update bundle_pt_BR.properties (#1525) 2020-02-11 15:25:38 -05:00
kf-games
e6507a84ef Update Servers.json, Add PvP server MINDUSTRY.RU:7000 (#1533)
Add PvP server MINDUSTRY.RU:7000
2020-02-11 15:25:30 -05:00
Arkanic
91148a7fde oops wrong branch 2020-02-12 08:04:35 +13:00
Arkanic
e02f370228 Update README.md 2020-02-12 08:01:49 +13:00
Anuken
5aa1e30006 Bugfix 2020-02-11 13:08:42 -05:00
Anuken
ad7c72015c Better admin management 2020-02-11 13:06:52 -05:00
Anuken
d99f9740e8 USID fixes 2020-02-11 12:36:28 -05:00
Anuken
d1840e7c2a Item selection scrolling 2020-02-11 11:55:38 -05:00
Anuken
e173eb55ca Merge remote-tracking branch 'origin/master' 2020-02-11 11:30:25 -05:00
Anuken
d6b5f6a311 buildTable improvements 2020-02-11 11:30:22 -05:00
AmateurPotion
eaa0b53f30 Update README.md (#1548)
hey?
2020-02-11 11:13:26 -05:00
fuzzbuck
f14df52490 Allow admins to bypass the playerlimit [server] (#1549) 2020-02-11 11:10:50 -05:00
Petr Gašparík
29a6b1a8da Merge branch 'master' of https://github.com/Anuken/Mindustry into v103.3 2020-02-11 11:18:54 +01:00
Anuken
b15a40fcbd Cleanup / Fixed desktop IDs resetting 2020-02-10 23:26:22 -05:00
Anuken
9da2d1ee9a Merge remote-tracking branch 'origin/master' 2020-02-10 20:22:09 -05:00
Anuken
6882a9a355 Added persistent message server function 2020-02-10 20:22:03 -05:00
GioIacca9
941449c502 Updated "Full implementation of #1494" (#1541) 2020-02-09 22:26:47 -05:00
Daniel Jennings
baab36bfc5 Trim schematic string before calling Base64Decoder (#1537)
This fixes getting the "Length of Base64 encoded input string is not a multiple of 4." error when importing schematics that have whitespace at the start/end of them, which is easy to accidentally have without knowing by when copying the schematic codes from random different web pages.
2020-02-08 16:41:33 -05:00
Anuken
f3893533a4 Cleanup 2020-02-08 11:08:31 -05:00
Prosta4okua
0a53c4c1be Update bundle_uk_UA.properties 2020-02-08 12:26:09 +02:00
Prosta4okua
d7eb0d3ba3 Update bundle_uk_UA.properties 2020-02-08 12:23:50 +02:00
Anuken
3a2fef3bd7 Merge remote-tracking branch 'origin/master' 2020-02-07 20:52:03 -05:00
Anuken
9ccf95971e Fixed small launch items button 2020-02-07 20:51:59 -05:00
valtsu41
9b36125b0c Finnish translation & grammar update (#1473)
* Finnish translation & grammar update

* More grammar correcting and making things more native

* Just a little more fine-tuning

* Fixes
2020-02-07 20:42:14 -05:00
Anuken
0ffcd0b94c Fixed #1507 / Fixed #1504 2020-02-07 20:21:45 -05:00
Anuken
a6801af128 Use zip files when exporting 2020-02-07 20:11:43 -05:00
Anuken
30ea039246 Fixed #1521 2020-02-07 20:11:05 -05:00
Anuken
5a5945cc52 Merge remote-tracking branch 'origin/master' 2020-02-07 20:09:45 -05:00
Anuken
e5fd3dec4c Fixed #1526 2020-02-07 20:09:37 -05:00
扩散性百万甜面包
7b586ea043 Fix a typo (#1528)
* Fix a typo

* Update core/src/mindustry/mod/Mods.java

Co-Authored-By: Patrick 'Quezler' Mounier <Quezler@me.com>

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>
2020-02-07 08:25:26 -05:00
Petr Gašparík
e98808bc46 Czech for server categories! 2020-02-07 12:35:09 +01:00
Petr Gašparík
bc37415a10 Merge branch 'master' of https://github.com/Anuken/Mindustry into v103.3 2020-02-07 12:32:33 +01:00
Prosta4okua
619b2ba897 Update bundle_uk_UA.properties 2020-02-07 12:42:59 +02:00
Anuken
37a9311202 Merge remote-tracking branch 'origin/master' 2020-02-06 20:25:17 -05:00
Anuken
e9f37ea68e Removed entity processor files 2020-02-06 20:25:10 -05:00
Prosta4okua
59431b223b Update bundle_uk_UA.properties 2020-02-06 23:38:45 +02:00
MEEP of Faith
da5755b7c1 For consistancy (#1517)
Swap "liquids" with "liquid." Also proposing because the category for liquid blocks is "liquid" and not "liquids" when modding.
2020-02-06 14:46:33 -05:00
Anuken
70c06b58ef Conveyor cleanup 2020-02-06 11:38:36 -05:00
Anuken
4a2c6c571f Merge remote-tracking branch 'origin/master' 2020-02-05 19:02:02 -05:00
Anuken
a5fd881f8d Full implementation of #1494 2020-02-05 19:01:53 -05:00
martin-mfg
d59b23b835 bundle_de.properties: merge PRs + further improvements (#1482)
* Update bundle_de.properties

* Update bundle_de.properties

* Update bundle_de.properties

* Update bundle_de.properties

* Update bundle_de.properties

* Update bundle_de.properties

* Update bundle_de.properties

* add minor missing changes from discussion in #799

* fix duplicated text in german translation (configure.locked)

* apply German translation suggestions from PR comment

This commit applies suggestions from the comment at https://github.com/Anuken/Mindustry/pull/783#pullrequestreview-299643677

Co-authored-by: Anuken <arnukren@gmail.com>
Co-authored-by: Silvério Santos <ssantos@web.de>
2020-02-05 18:37:21 -05:00
Patrick 'Quezler' Mounier
e06d8eabec [formatting] add newline to file(s) (#1508)
* Trail appropriate files with a new line

* For some ironic reason it ignored itself

Probably because it wasn’t tracked/commited yet.

* Rename newlines to server executable naming pattern
2020-02-05 18:36:56 -05:00
Arkanic
ce7eccf524 i forgot -base 2020-02-05 18:10:57 +00:00
Patrick 'Quezler' Mounier
8bb533f646 3rd times the charm (#1509) 2020-02-05 13:06:16 -05:00
Petr Gašparík
39b35dd9cb Merge branch 'master' of https://github.com/Anuken/Mindustry into v103.3 2020-02-05 08:34:59 +01:00
Arkanic
ff06a005a0 become exist 2020-02-05 00:53:15 +00:00
Arkanic
fd500f5405 heh make branch 2020-02-05 13:27:36 +13:00
Anuken
67106abb9b Updated arc 2020-02-03 20:30:18 -05:00
InvalidError404
ea6490cf9f Improved ItemModule::take() behavior (#1495)
* Improved ItemModule::take() behavior

The original take() behavior spams items in whatever order they appear in the items list until each index is depleted, which is problematic when non-specific unloaders are competing against dedicated unloaders for a low-index resources.

My modification makes the take() loop persistent so take() will do complete laps around the item list starting from wherever the previous call returned from, never repeating the same item twice in a row unless there is nothing else to return. A significant improvement IMO.

How is this an improvement? With the original behavior, if you converge a bunch of belts on a storage block or launcher, want to unload a few belts of specific resources (ex.: copper, lead, silicon and titanium for surge alloy) and pass everything else including overflows along using non-specific unloaders, you are out of luck when the resources you want are at the top of the list since most of those will get swept away by non-specific unloaders. With the rotating take(), non-specific unloaders are equal-opportunity across all available resources, which gives single-resource unloaders that many more chances to unload more of their resources before non-specific unloaders get to them. It also reduces the rate at which items further down the list that may hardly ever get touched by the existing implementation will race toward the storage block's cap. The even drain across all items will help prevent things like mass driver stalls due to receivers filling up with an excess resource that isn't getting cleared.

It would be even nicer if dedicated unloaders had priority over non-specific ones (non-specific unloaders don't touch resources with dedicated unloaders unless the dedicated unloaders are overflowing), though that would require a rework beyond my current "getting the stupid IDE and tool chains to work" level of familiarity with Java development.

To sum it up: trivial change, big impact for people who like mixing belts and sorting them out with unloaders.

* Update core/src/mindustry/world/modules/ItemModule.java

Co-Authored-By: Patrick 'Quezler' Mounier <Quezler@me.com>

* Update core/src/mindustry/world/modules/ItemModule.java

Co-Authored-By: Patrick 'Quezler' Mounier <Quezler@me.com>

* Formatting

* Anuken's take() rotator.

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>
2020-02-03 20:27:25 -05:00
Patrick 'Quezler' Mounier
627321304d zzzz (#1503) 2020-02-03 15:55:53 -05:00
Arkanic
d2c2fd7d5f aaaa (#1502) 2020-02-03 14:44:54 -05:00
DeltaNedas
fea9f51513 !dir.exists() and new line 2020-02-03 18:36:17 +00:00
DeltaNedas
4709b5dddc remove old mainScript, it is always main.js 2020-02-03 18:35:24 +00:00
GioIacca9
b4be655d0c Translated stat.playtime (#1485) 2020-02-03 12:54:06 -05:00
LauweJoster
19da1e1306 Update bundle_nl.properties (#1499)
Improved some grammar and sentencing. Also added a few translations.
2020-02-03 12:37:28 -05:00
Patrick 'Quezler' Mounier
9bc24ae47a Darken yellow square on nucleus core (#1497)
#1496
2020-02-03 08:51:19 -05:00
Petr Gašparík
aef5fd85b2 Merge branch 'master' of https://github.com/Anuken/Mindustry into v103.3 2020-02-03 10:05:06 +01:00
Anuken
ad84329688 Abstract component method support 2020-02-02 17:21:35 -05:00
Anuken
ae6d33cad1 Bugfixes 2020-02-02 16:44:51 -05:00
Anuken
ad9dd83032 Better entity code generation + minor refactoring 2020-02-02 16:13:25 -05:00
Anuken
382ca09f6e Merge branches 'master' and 'splinterface' of https://github.com/Anuken/Mindustry 2020-02-02 13:59:41 -05:00
Anuken
c978410cb3 Scale cleanup / Name cleanup 2020-02-02 13:59:24 -05:00
Anuken
5eb3f0f3de Interface + base component support 2020-02-02 12:25:46 -05:00
Anuken
acb3438cc8 More entity processor features 2020-02-02 11:51:58 -05:00
DeltaNedas
a9f07f3603 formatting 2020-02-02 15:49:10 +00:00
Patrick 'Quezler' Mounier
4c369dd17c Hide drop zone warning if you're part of the wave team (#1492) 2020-02-02 10:41:09 -05:00
DeltaNedas
c458c77322 cleanup 2020-02-02 13:40:53 +00:00
DeltaNedas
b93692ad41 yes 2020-02-02 13:40:38 +00:00
DeltaNedas
d84217300c fixed error message 2020-02-02 12:58:00 +00:00
DeltaNedas
49ab7ceb77 main.js required now 2020-02-02 12:44:37 +00:00
Anuken
7ddfcbfabd Utility method copying 2020-02-02 00:39:29 -05:00
Anuken
da2aee7d31 Entity components based on code generation - experiment 2020-02-01 23:54:41 -05:00
DeltaNedas
4c45716149 first part of what cat wants 2020-02-02 02:49:47 +00:00
Anuken
9f20ff151c Shortened annotation processors 2020-02-01 17:27:24 -05:00
Anuken
5f7fc3441c Merge remote-tracking branch 'origin/master' 2020-02-01 17:17:08 -05:00
Anuken
62179233ef Bugfixes 2020-02-01 17:17:03 -05:00
fuzzbuck
376e3d6ef1 Add mindustry.io to servers.json (#1467)
- huge community (~1.5k members)
- anti-grief measures (discord bot <-> in-game moderation)
- huge map pool (50+)
- stable, powerful server based in europe
2020-02-01 17:14:06 -05:00
DeltaNedas
51bc5c3b74 local changes 2020-02-01 18:28:25 +00:00
DeltaNedas
a45a14025d oops 2020-02-01 18:26:38 +00:00
Anuken
eabebcefc7 Disabled data folder button due to terrible file manager support 2020-01-31 23:09:21 -05:00
DeltaNedas
e1a215ae0b wrapper works now 2020-02-01 01:18:18 +00:00
Anuken
63d84bead3 Cleanup 2020-01-31 20:10:21 -05:00
DeltaNedas
d872656bc5 it works sorta! 2020-01-31 23:51:33 +00:00
Anuken
51b4824c92 Fixed #1484 2020-01-31 11:07:25 -05:00
Petr Gašparík
b4e9e6be32 Czech: added Time played + small format corr. 2020-01-31 13:16:27 +01:00
Petr Gašparík
737e3145ec Merge branch 'master' of https://github.com/Anuken/Mindustry into v103.3 2020-01-31 13:13:51 +01:00
Anuken
2721aa550d Implemented #1444 2020-01-30 22:56:17 -05:00
Anuken
f92b91c17b Switched to arc bloom 2020-01-30 17:50:35 -05:00
Anuken
221b28c153 Merge remote-tracking branch 'origin/master' 2020-01-30 17:43:48 -05:00
Anuken
7c2541afa2 Fixed bloom black screen on iOS/Android 2020-01-30 17:43:36 -05:00
Petr Gašparík
bfa24cca4c Merge branch 'v103.3' of https://github.com/PetrGasparik/Mindustry; branch 'master' of https://github.com/Anuken/Mindustry into v103.3 2020-01-30 16:06:46 +01:00
DeltaNedas
9da505119b it compiles but cant find module
help
2020-01-30 00:53:05 +00:00
DeltaNedas
677debd475 testing script loading stuff
is not allowed in console, only from `LoadedMod`s.
2020-01-30 00:38:51 +00:00
DeltaNedas
864c73f791 make it semi work maybe
still completely insecure
2020-01-30 00:21:50 +00:00
DeltaNedas
9ed7719464 compile dammit 2020-01-30 00:04:42 +00:00
DeltaNedas
187e1f5848 create new branch 2020-01-29 23:52:58 +00:00
Vam-Jam
36782a2454 [Fix] lastMessage doesnt change if prevented by antispam (#1471)
Fixes issue #1470
2020-01-29 11:32:41 -05:00
Prosta4okua
6a48a1e0a3 Update bundle_uk_UA.properties 2020-01-29 01:12:12 +02:00
Prosta4okua
d0faecbea5 Update bundle_uk_UA.properties 2020-01-29 01:07:24 +02:00
Vamist
b5ccd36315 [Added] Players command
Allows servers to view current active players in more detail without having to use status
2020-01-28 20:16:06 +00:00
Anuken
97cfc33abb Merge remote-tracking branch 'origin/master' 2020-01-28 13:44:13 -05:00
Anuken
867a642859 Fixed #1460 2020-01-28 13:44:06 -05:00
Anuken
d99cad8793 Update SERVERLIST.md 2020-01-28 13:28:34 -05:00
kf-games
2a11f65e10 Add server MINDUSTRY.RU (#1463)
Add server MINDUSTRY.RU
Server 24/7 Online
380+ Maps
Have a motd
There are moderators
Server in uninterrupted operation since October 2019
2020-01-28 13:05:55 -05:00
Anuken
89e1c5afc0 Conveyor tweaks 2020-01-28 00:21:05 -05:00
Anuken
a2933e030a More severe votekick 2020-01-27 15:43:17 -05:00
Anuken
d21c47a582 Merge remote-tracking branch 'origin/master' 2020-01-27 13:15:15 -05:00
Anuken
5ad0193a86 Fixed reduced conveyor edge throughput 2020-01-27 13:15:12 -05:00
MWestfall
881eca636d Update servers.json (#1457) 2020-01-27 12:55:18 -05:00
Daniel Jennings
d849a3a87f Adding Steam Rich Presence support. (#1453)
* Steam Rich Presence support. I opted to put this code inside of
DesktopLauncher.java instead of SNet.java because it heavily overlaps
with the work the DiscordRPC code was already doing.

Testing wasn't easy because I had to figure out how the Steam version
actually runs normally, but it was straightforward once I figured out
what version information to slam into the JAR and fixed 'desktop:steamtest' to work locally with my paths.

Because of how Steam currently expects SetRichPresence to be used, I had
to upload to the Steam partner site a trivial Rich Presence loc token
called 'steam_status_raw' that just gets entirely substituted for the
'steam_status' RP token string. I didn't expect that I'd need to do
anything for localization support (and instead just let it use English
for everyone like Discord) but apparently Steam isn't happy if you
directly set 'steam_display' to a raw string (but I'm going to look at
that when I'm back at work because I don't know that we need that
requirement.)

* Whoops, left this in there from debugging the Steam connection.

* Fixing coding style, and also triggering another CI build
2020-01-27 12:17:52 -05:00
Anuken
5ebc04ab29 Update SERVERLIST.md 2020-01-27 11:59:17 -05:00
Anuken
379f860a6b Merge remote-tracking branch 'origin/master' 2020-01-27 11:01:57 -05:00
Anuken
65211a6021 Fixed #1447 2020-01-27 11:01:48 -05:00
Anuken
9395fa99be Create SERVERLIST.md 2020-01-27 10:50:08 -05:00
Anuken
b7e1adb8b1 Fixed 103 network compatibility 2020-01-27 10:19:18 -05:00
Petr Gašparík
315260f7f5 Czech translation - fix typos 2020-01-27 14:14:43 +01:00
Petr Gašparík
69069e2ef3 Czech translation - mod display 2020-01-27 11:32:31 +01:00
Petr Gašparík
de143a8e16 Czech translation for 103.x changelog 2020-01-27 11:30:23 +01:00
Anuken
b9e8694e68 Added synced server label + effect methods 2020-01-27 00:25:32 -05:00
Anuken
cd1ed97e52 Merge branch 'master' of https://github.com/Anuken/Mindustry 2020-01-27 00:11:24 -05:00
Anuken
a61234d21e Minor tweaks 2020-01-26 21:50:55 -05:00
키에르
9499b9dfaf Add custom text on screen (#1448) 2020-01-26 17:56:11 -05:00
Anuken
9baaacc8ac Crash fix 2020-01-26 16:55:24 -05:00
Anuken
db3d4b170f Merge branches 'conveyor-refactor' and 'master' of https://github.com/Anuken/Mindustry 2020-01-26 16:12:35 -05:00
Anuken
621233a5b3 More optimization 2020-01-26 16:12:11 -05:00
Anuken
9a3245c23e Clamp 2020-01-26 15:13:55 -05:00
Anuken
6fe2697185 2x faster conveyor optimization 2020-01-26 15:04:00 -05:00
Anuken
d7ea0bc21e why 2020-01-26 13:16:42 -05:00
Anuken
adbfb15932 Cleanup 2020-01-26 13:13:01 -05:00
Anuken
fda6ea4b45 Fixed #1452 2020-01-26 11:40:28 -05:00
Anuken
93cada6a16 Conveyor benchmark test 2020-01-26 11:40:09 -05:00
Anuken
0d5dd146ef Fixed #1451 2020-01-26 10:58:14 -05:00
Nickibosss
1207fb1440 Update bundle_it.properties (#1431) 2020-01-25 17:51:43 -05:00
Petr Gašparík
8584fae07a Czech translation - update (#1432) 2020-01-25 17:51:32 -05:00
Ali-C-Ila
0a661766be Update bundle_zh_TW.properties (#1438) 2020-01-25 17:51:24 -05:00
Prosta4okua
fb6cb4829f Update bundle_uk_UA.properties (#1434)
* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties
2020-01-25 17:51:17 -05:00
Anuken
e14a36a97e Fixed #1445 2020-01-25 17:50:59 -05:00
Anuken
ca69aafd11 Fixed #1440 2020-01-25 10:44:46 -05:00
Anuken
923d576a5f Fixed #1436 / Fixed crawlers not exploding 2020-01-24 23:21:23 -05:00
Anuken
081edde1f2 Fixed double client commands 2020-01-24 22:48:05 -05:00
Anuken
1ab81fa4ab Bugfixes 2020-01-24 19:14:49 -05:00
Anuken
69711151a5 Bugfixes 2020-01-24 18:48:26 -05:00
Anuken
aefc4ed83c Better annotation processing 2020-01-24 18:31:54 -05:00
Anuken
83f44abb5a Suppress d/c messages when necessary 2020-01-24 14:27:23 -05:00
Anuken
f2bc3e78d7 Fixed #1429 2020-01-24 14:00:06 -05:00
Anuken
2fe6a3525b Added null check for attribute 2020-01-24 13:37:23 -05:00
Anuken
78fb427120 Minor fixes 2020-01-24 13:02:03 -05:00
Anuken
b9876e267b Headless load fix 2020-01-24 12:31:34 -05:00
Anuken
4c1459c47e Fixed page limits in /help 2020-01-24 11:50:51 -05:00
Vanguard
5b9b684ccd PRE 103 RU_updates (#1425)
* 1 changed line, 1 removed line

Changed:
keybind.zoom.name

Removed:
keybind.zoom_hold.name

Moved some lines around to keep them in the same order with bundle.properties

* 1 changed line

tutorial.intro

* 3 new lines, 3 changed lines

New:
mod.erroredcontent
mod.errors
mod.noerrorplay

Changed:
mod.requiresversion
mod.remove.confirm
details

* 2 changed lines

mods.guide
mod.import.github

* 1 new line

link.feathub.description

* 1 changed line

item.graphite.description

* 1 changed line

block.mass-driver.description

* 9 new lines, 1 changed line

New:
be.update
be.update.confirm
be.updating
be.ignore
be.noupdates
be.check
server.kicked.serverRestarting
setting.coreselect.name
rules.blockhealthmultiplier

Changed:
wave.enemy

* 3 changed lines

quit.confirm.tutorial
setting.coreselect.name
public.confirm

* 22 changed lines

mod.missing
item.plastanium.name
block.plastanium-wall.name
block.plastanium-wall-large.name
block.plastanium-compressor.name
item.scrap.description
item.spore-pod.description
item.blast-compound.description
liquid.oil.description
unit.revenant.description
block.multi-press.description
block.plastanium-compressor.description
block.spore-press.description
block.power-source.description
block.force-projector.description
block.conveyor.description
block.mass-driver.description
block.liquid-junction.description
block.phase-conduit.description
block.thorium-reactor.description
block.blast-drill.description
block.cyclone.description

* 3 new lines, 2 removed lines

New:
setting.bridgeopacity.name
block.liquid-void.name
block.liquid-void.description

Removed:
block.signal
block.editsignal

* 1 new line

data.openfolder

* 1 changed line

block.cryofluidmixer.description

* 2 new lines

block.underflow-gate.name
block.underflow-gate.description

* 2 changed lines

unit.thousands
unit.millions

* 3 new lines

blocks.tiles
blocks.affinities
setting.playerlimit.name

* 1 changed line

block.underflow-gate.name

* 1 changed line

unit.thousands

* 1 changed line

blocks.affinities

* 1 changed line (reverted)

unit.thousands

Co-authored-by: Anuken <arnukren@gmail.com>
2020-01-24 11:31:14 -05:00
Anuken
8141361a30 Fix script whitelist 2020-01-24 11:27:47 -05:00
Anuken
99e51411d5 Implemented #1048 2020-01-24 11:24:35 -05:00
Anuken
4ca1a506b6 Merge remote-tracking branch 'origin/master' 2020-01-24 11:17:22 -05:00
Anuken
125d6ef8cd Cleanup 2020-01-24 11:17:18 -05:00
Rasangus
a35365ad7c Update description.txt (#1283) 2020-01-24 11:15:25 -05:00
Rasangus
ccf8cdf961 Create title.txt (#1282) 2020-01-24 11:15:09 -05:00
Petr Gašparík
76d425a920 Czech translation for Android and Steam + continuous updates (#1383)
* Improving Czech translation, up to line  374 now

* Czech translation, revisited up to line 468

* Translation revision up to line 510.

* Czech translation - small fixes here and there.

* Czech translation - small fixes here and there.

* Czech lang. - Fixed some typos found by @dusekdan

* Czech - revision up to line 564

* Czech tr. - small fixes to fit into GUI

* Czech tr. - small fixes after checking GUI

* Czech tr. - revision up to line 670 done

* Czech tr. - revisited up to line 748.

* Czech tr. - now it has the same length as English

* Czech translation - polished up to line 1062
Only tutorial left...

* Czech translation - small fixes

* Czech tr. - revisited up to line 1070

* Czech translation - revision done up line 1084.
New: tutorial translated, new key incorporated.

* Czech translation done up to line 1100.

* Czech translation up to line 1105

* Czech translation - small corrections, consistency

* Czech translation up to line 1124

* Czech translation - done up to line 1159

* Czech translation up to line 1071

* Czech translation, up to line 1177

* Czech translation, done up to line 1203

* Czech translation REVISION DONE!

* Czech files for Steam!

* Czech - full translation for Android

* Czech translation - fixing typos found by @dusekdan
thank you!

* Czech traslation, back to "Workshop" from "Dílna"
...as it is the same name on Steam

* Czech translation - underflow gate
2020-01-24 11:12:41 -05:00
Prosta4okua
9ef23ace95 [WIP]Update bundle_uk_UA.properties (#1363)
* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties
2020-01-24 11:12:33 -05:00
Artur Quaresma
0df826a589 Android and Steam language support pt-PT (#1382)
The changelogs are being worked, but the big features are translated
2020-01-24 11:11:31 -05:00
Anuken
d58098ca94 Added server info toast method 2020-01-24 11:03:15 -05:00
Anuken
1a6436355c Merge remote-tracking branch 'origin/master' 2020-01-24 10:26:16 -05:00
Anuken
63c277f78e Implemented mod name display in content desc 2020-01-24 10:26:10 -05:00
xzarfs
dda12af593 Update finnish language properties (#1396)
Major imporvements to the finish language.

Changed finnish word 'aalto' to 'taso' (both mean wave but 'aalto' is the one in a ocean)
2020-01-24 10:09:48 -05:00
GioIacca9
3dda4badac Update bundle_it.properties (#1428) 2020-01-24 10:04:37 -05:00
Anuken
a4e820f907 Added default ore flags for modded ores 2020-01-23 20:20:04 -05:00
Anuken
bc56b8127f Merge remote-tracking branch 'origin/master' 2020-01-23 19:17:16 -05:00
Anuken
b16ad97d93 Updated font 2020-01-23 19:17:11 -05:00
martin-mfg
6ffb470916 Update bundle_de.properties (#1423)
Again some changes and translations

Co-authored-by: Amon-Senpai <56207045+Amon-Senpai@users.noreply.github.com>
2020-01-23 18:57:24 -05:00
Anuken
92df6e6e06 Merge remote-tracking branch 'origin/master' 2020-01-23 18:33:38 -05:00
Anuken
f4940fffab Minor tweaks 2020-01-23 18:33:32 -05:00
Vanguard
847a1a738e RU updates (#1354)
* 1 changed line, 1 removed line

Changed:
keybind.zoom.name

Removed:
keybind.zoom_hold.name

Moved some lines around to keep them in the same order with bundle.properties

* 1 changed line

tutorial.intro

* 3 new lines, 3 changed lines

New:
mod.erroredcontent
mod.errors
mod.noerrorplay

Changed:
mod.requiresversion
mod.remove.confirm
details

* 2 changed lines

mods.guide
mod.import.github

* 1 new line

link.feathub.description

* 1 changed line

item.graphite.description

* 1 changed line

block.mass-driver.description

* 9 new lines, 1 changed line

New:
be.update
be.update.confirm
be.updating
be.ignore
be.noupdates
be.check
server.kicked.serverRestarting
setting.coreselect.name
rules.blockhealthmultiplier

Changed:
wave.enemy

* 3 changed lines

quit.confirm.tutorial
setting.coreselect.name
public.confirm

* 22 changed lines

mod.missing
item.plastanium.name
block.plastanium-wall.name
block.plastanium-wall-large.name
block.plastanium-compressor.name
item.scrap.description
item.spore-pod.description
item.blast-compound.description
liquid.oil.description
unit.revenant.description
block.multi-press.description
block.plastanium-compressor.description
block.spore-press.description
block.power-source.description
block.force-projector.description
block.conveyor.description
block.mass-driver.description
block.liquid-junction.description
block.phase-conduit.description
block.thorium-reactor.description
block.blast-drill.description
block.cyclone.description

* 3 new lines, 2 removed lines

New:
setting.bridgeopacity.name
block.liquid-void.name
block.liquid-void.description

Removed:
block.signal
block.editsignal

* 1 new line

data.openfolder

* 1 changed line

block.cryofluidmixer.description

* 2 new lines

block.underflow-gate.name
block.underflow-gate.description

* 2 changed lines

unit.thousands
unit.millions

Co-authored-by: Anuken <arnukren@gmail.com>
2020-01-23 18:10:53 -05:00
LingLan
32b3bb2d89 Update zh_CN translate (#1412)
* update zh_CN translate

* Update bundle_zh_CN.properties

typo fixed.

* update zh_CN translate

* update translate for underflow-gate

* translate setting.bridgeopacity.name
2020-01-23 18:09:40 -05:00
Ali-C-Ila
9aa04a1584 Update bundle_zh_TW.properties (#1346)
* Update bundle_zh_TW.properties

* Update bundle_zh_TW.properties

* Update bundle_zh_TW.properties

* Update bundle_zh_TW.properties

* Update bundle_zh_TW.properties
2020-01-23 18:09:33 -05:00
Artur Quaresma
4fca93ff4d Update bundle_pt_PT.properties (#1351)
A new update
2020-01-23 18:09:25 -05:00
AmateurPotion
2455738f47 Update bundle_ko.properties (#1379) 2020-01-23 18:08:47 -05:00
Avevad
c96931a1b9 Update bundle_ru.properties (#1410) 2020-01-23 18:07:37 -05:00
GioIacca9
9efff27b77 Updated underflow gate (#1416)
Translated:
`block.underflow-gate.name` and `block.underflow-gate.description`.
`data.openfolder`
and other minor strings
2020-01-23 18:07:16 -05:00
Anuken
d031efe1f2 Added Steam player limit + reduced votekick cooldown 2020-01-23 17:49:53 -05:00
Anuken
235142c869 Implemented #1093 2020-01-23 15:50:03 -05:00
Anuken
288da868bf Merged #1406 manually 2020-01-23 14:53:27 -05:00
Anuken
1716076cdf Minor UI tweaks 2020-01-23 14:40:07 -05:00
Anuken
eb8479f7f7 Switched from gdx-packer to arc-packer 2020-01-22 19:16:56 -05:00
Anuken
78b2fe64a3 Fixed annotation source version warnings 2020-01-22 15:59:02 -05:00
Anuken
5e977312a7 Annotation processor cleanup 2020-01-22 12:24:00 -05:00
Anuken
85e0103ff8 UI fixes 2020-01-22 11:13:27 -05:00
Anuken
9e95ebfa11 Fixed action filter issues 2020-01-21 10:03:47 -05:00
Anuken
d74f6e4cb8 Fixed JS method conflict 2020-01-21 08:32:56 -05:00
Anuken
1a1208d092 Cleanup 2020-01-21 08:13:42 -05:00
Anuken
501ca5dd4e New tech tree layout 2020-01-20 22:39:46 -05:00
Anuken
2642c3c8b8 Layout improvements 2020-01-20 20:21:04 -05:00
Anuken
200e85d970 Added underflow gate to tech tree 2020-01-20 18:55:26 -05:00
Anuken
26676d60e1 Added underflow gates 2020-01-20 18:54:25 -05:00
Anuken
a4ac318c9e Changed deconstruct event to fire before tile removal 2020-01-20 15:00:38 -05:00
Anuken
d2bc2baefe Fixed #1401 2020-01-20 14:32:07 -05:00
Anuken
8aec6d24db Fixed #776 2020-01-20 14:28:18 -05:00
Anuken
b5258cd809 Fixed #1402 / Fixed #1404 2020-01-20 14:13:20 -05:00
Anuken
85cf7e9d5c Added previously-missing icons 2020-01-19 18:45:25 -05:00
Anuken
a797618f6c Fixed #1397 2020-01-19 14:56:12 -05:00
Anuken
19b8d91724 Removed dead lwjgl3 module 2020-01-19 13:22:03 -05:00
Anuken
b1df52e0c8 Added self-destruct bullet property 2020-01-19 10:43:38 -05:00
Anuken
87b4c37d82 Cleanup of scripts 2020-01-19 09:49:55 -05:00
Anuken
48b623882a Bugfixes 2020-01-18 21:16:05 -05:00
Anuken
5328875ba5 nothing 2020-01-18 11:14:47 -05:00
Anuken
95352e1729 Added server descriptions 2020-01-18 10:05:18 -05:00
Anuken
6e6f8f3cdb Icon cleanup 2020-01-17 22:50:27 -05:00
Anuken
c61fed884b Bugfixes 2020-01-17 22:40:02 -05:00
Anuken
121301c7bd Prevented extra memory leaks 2020-01-17 21:33:14 -05:00
Anuken
569b1f788f Fixed segfault during mod loading 2020-01-17 21:28:12 -05:00
Anuken
ca519a94af Font improvements 2020-01-17 18:29:18 -05:00
Anuken
8d61ddbbd4 Added chat icons for in-game items and blocks 2020-01-17 18:08:23 -05:00
Anuken
d9e5dc8ba2 Added missing icons 2020-01-17 15:24:34 -05:00
Anuken
c3d2351b2d Various icon changes 2020-01-17 13:57:04 -05:00
Anuken
4f29c80814 Single-texture font+UI packing 2020-01-16 22:25:57 -05:00
Anuken
ce18e32826 Added font icon generate+merge pipeline 2020-01-16 17:05:20 -05:00
Anuken
0299263511 Merge branch 'master' of https://github.com/Anuken/Mindustry into font-icons 2020-01-16 11:16:10 -05:00
Anuken
c456aa3beb Fixed server host not seeing own messages 2020-01-16 11:15:17 -05:00
Anuken
3eaeac3618 Testing icon font 2020-01-16 11:10:53 -05:00
Anuken
eb79f3288c Added Android crash logging 2020-01-16 10:59:27 -05:00
Anuken
7b13597d69 Removed chat clearing after /sync is used 2020-01-15 11:48:58 -05:00
Anuken
c933652da9 Removed landscape ""lock"" on iOS / Closes #1387 2020-01-15 11:29:38 -05:00
Anuken
4c0302bcb1 Added search command 2020-01-15 09:31:25 -05:00
Anuken
ac66ac2c55 Merge remote-tracking branch 'origin/master' 2020-01-14 17:08:16 -05:00
Anuken
eaa86023f9 Visual tweaks 2020-01-14 17:07:39 -05:00
Petr Gašparík
9b663b548b Czech translation total revision DONE, please merge (#1344)
* Improving Czech translation, up to line  374 now

* Czech translation, revisited up to line 468

* Translation revision up to line 510.

* Czech translation - small fixes here and there.

* Czech translation - small fixes here and there.

* Czech lang. - Fixed some typos found by @dusekdan

* Czech - revision up to line 564

* Czech tr. - small fixes to fit into GUI

* Czech tr. - small fixes after checking GUI

* Czech tr. - revision up to line 670 done

* Czech tr. - revisited up to line 748.

* Czech tr. - now it has the same length as English

* Czech translation - polished up to line 1062
Only tutorial left...

* Czech translation - small fixes

* Czech tr. - revisited up to line 1070

* Czech translation - revision done up line 1084.
New: tutorial translated, new key incorporated.

* Czech translation done up to line 1100.

* Czech translation up to line 1105

* Czech translation - small corrections, consistency

* Czech translation up to line 1124

* Czech translation - done up to line 1159

* Czech translation up to line 1071

* Czech translation, up to line 1177

* Czech translation, done up to line 1203

* Czech translation REVISION DONE!
2020-01-14 16:00:51 -05:00
Anuken
373b842c3d Bugfix 2020-01-14 13:36:15 -05:00
Anuken
68be77fa1d Added configurable block access validation 2020-01-14 10:32:52 -05:00
Jeff Huang
a526eaa112 Add Android zh-TW translations. (#1368) 2020-01-13 23:02:43 -05:00
Anuken
a5549bd4d2 Fixed #1372 2020-01-13 08:32:32 -05:00
Anuken
acaeb19fe1 Fixed #1364 2020-01-12 20:21:52 -05:00
Anuken
dbb06f8abd Extra clamping 2020-01-12 12:16:51 -05:00
Anuken
8364ca6b17 Fixed #1340 2020-01-12 11:19:24 -05:00
Anuken
dbc45985ce Added log file 2020-01-11 20:09:20 -05:00
Anuken
d6dec002c1 Added remote tile set/remove methods 2020-01-11 19:32:08 -05:00
Anuken
4aa4e15de5 Arc 2020-01-11 19:21:37 -05:00
Anuken
7e7d2019af Made Android files external 2020-01-11 19:21:16 -05:00
Anuken
10634af104 Fixed #1360 2020-01-11 17:11:51 -05:00
Anuken
15f5f2fad9 Cleanup 2020-01-11 14:08:03 -05:00
Anuken
6d30840eb1 Fixed #1358 2020-01-11 12:57:21 -05:00
Anuken
7437100c96 Merge remote-tracking branch 'origin/master' 2020-01-11 12:50:08 -05:00
Anuken
35835cacd3 Fixed #1355 2020-01-11 12:47:54 -05:00
FranLamark
1d8de2d222 Update bundle_es.properties (NEW!) (#1352)
(Nuevas cosas agregadas dentro del juego (Por Anuke) y traducidas al español por mi y otros, aparte de un retoque en algunas traducciones con errores/letras de más)
Solo para la versión en español.
(New things added within the game (By Anuke) and translated into Spanish by me and others, apart from a touch-up in some translations with more errors / lyrics)
Only for the Spanish version.
2020-01-10 22:16:06 -05:00
Anuken
647ae27020 Fixes 2020-01-10 15:20:48 -05:00
Anuken
677aa0d0bf Shortening of a few classes 2020-01-10 15:13:34 -05:00
Anuken
6cf7651069 Merge remote-tracking branch 'origin/master' 2020-01-10 11:39:48 -05:00
Anuken
18e73b1a4a Fixed mech pad indicators displaying onscreen 2020-01-10 11:39:38 -05:00
GioIacca9
87442853bb Added setting.bridgeopacity.name (#1347) 2020-01-10 11:17:48 -05:00
Anuken
5675565c96 Merge remote-tracking branch 'origin/master' 2020-01-09 14:56:26 -05:00
Anuken
6050274c0f Bugfixes 2020-01-09 14:56:21 -05:00
Anuken
75f8a495e7 Update feature_request.md 2020-01-09 14:35:33 -05:00
Anuken
5d6b8acf4c Update feature_request.md 2020-01-09 14:35:09 -05:00
Anuken
65ee2d2b9e Merge remote-tracking branch 'origin/master' 2020-01-09 12:07:41 -05:00
Anuken
e06f514023 Added basic subnet bans 2020-01-09 12:03:45 -05:00
Artur Quaresma
f183cf1882 Rename bundle_pt.properties to bundle_pt_PT.properties (#1339)
It´s better since theres is a bundle_pt_BR, and not being confuse for some
2020-01-09 08:56:00 -05:00
Anuken
2345b48e97 Merge remote-tracking branch 'origin/master' 2020-01-08 23:35:27 -05:00
Anuken
50355b45d5 Tech tree balance 2020-01-08 23:28:25 -05:00
J-VdS
9b82333a69 typo (#1343) 2020-01-08 17:36:58 -05:00
GioIacca9
08bae1fa15 Updated liquid void name and description (#1341) 2020-01-08 16:57:36 -05:00
Anuken
a7cddf97b8 Implemented bridge opacity from #1006 2020-01-08 16:16:19 -05:00
Anuken
7b4ee27fe4 Bugfixes 2020-01-08 11:37:12 -05:00
Anuken
8f208920f7 Merged in liquid void 2020-01-08 11:04:12 -05:00
Anuken
1193e18ee1 Updated bundles post-merge 2020-01-08 11:01:12 -05:00
Anuken
c04c825cec Merge remote-tracking branch 'origin/master'
# Conflicts:
#	core/assets/bundles/bundle_cs.properties
#	core/assets/bundles/bundle_fr.properties
#	core/assets/bundles/bundle_it.properties
#	core/assets/bundles/bundle_nl.properties
#	core/assets/bundles/bundle_pt.properties
#	core/assets/bundles/bundle_ru.properties
#	core/assets/bundles/bundle_zh_TW.properties
2020-01-08 11:00:19 -05:00
Anuken
5ad09d6d80 Updated bundles with proper spacing 2020-01-08 10:59:29 -05:00
Patrick 'Quezler' Mounier
4a94a6c059 Update dutch localization (#1315)
* Run gradle tools:updatebundles for nl

* Update 🇳🇱 bundle

Wow this took several hours, didn’t expect that. 🙈

* Implement @TsjipTsjip’s review

* Oops

* 〃

* 〃

* 〃

* 〃

* 〃

* 〃

* 〃
2020-01-08 10:52:43 -05:00
Valentin Lorentz
379f0b1c71 Fix translation of "silicon" in fr_BE (#1298)
This was fixed by 3b9980c01e in the fr translation, but not this one.
2020-01-08 10:52:19 -05:00
Ali-C-Ila
45aa23f94d Update bundle_zh_TW.properties (#1303) 2020-01-08 10:52:07 -05:00
Petr Gašparík
27f396a1e0 Revision of Czech translation [up to line 564]: consistency with English file, terms, grammar, semantics (#1284)
* Improving Czech translation, up to line  374 now

* Czech translation, revisited up to line 468

* Translation revision up to line 510.

* Czech translation - small fixes here and there.

* Czech translation - small fixes here and there.

* Czech lang. - Fixed some typos found by @dusekdan

* Czech - revision up to line 564

* Czech tr. - small fixes to fit into GUI

* Czech tr. - small fixes after checking GUI
2020-01-08 10:51:48 -05:00
Artur Quaresma
b44aa8e23a Update bundle_pt.properties (#1334) 2020-01-08 10:30:27 -05:00
Alessandro Maurizio
b5d5bb21b1 Fix Steam Achievement italian translation error (#1324)
* Fix Steam Achievement italian translation error

* Fix wrong Revenant Factory italian description
2020-01-08 10:30:11 -05:00
Patrick 'Quezler' Mounier
406c11a14d Make rebuildable a block attribute (#1338) 2020-01-08 10:28:28 -05:00
Jeff Huang
105aeade1f Add zh-tw translations for Steam metadata. (#1288)
* Add zh-tw translations for Steam metadata.

* Updated language name to fit Steam requirements

Co-authored-by: Anuken <arnukren@gmail.com>
2020-01-08 10:27:50 -05:00
itskatt
3cc0990a94 translate (#1311) 2020-01-08 10:22:15 -05:00
Vanguard
2692b60d21 RU updates (#1277)
* 1 changed line, 1 removed line

Changed:
keybind.zoom.name

Removed:
keybind.zoom_hold.name

Moved some lines around to keep them in the same order with bundle.properties

* 1 changed line

tutorial.intro

* 3 new lines, 3 changed lines

New:
mod.erroredcontent
mod.errors
mod.noerrorplay

Changed:
mod.requiresversion
mod.remove.confirm
details

* 2 changed lines

mods.guide
mod.import.github

* 1 new line

link.feathub.description

* 1 changed line

item.graphite.description

* 1 changed line

block.mass-driver.description

* 9 new lines, 1 changed line

New:
be.update
be.update.confirm
be.updating
be.ignore
be.noupdates
be.check
server.kicked.serverRestarting
setting.coreselect.name
rules.blockhealthmultiplier

Changed:
wave.enemy

* 3 changed lines

quit.confirm.tutorial
setting.coreselect.name
public.confirm

* 22 changed lines

mod.missing
item.plastanium.name
block.plastanium-wall.name
block.plastanium-wall-large.name
block.plastanium-compressor.name
item.scrap.description
item.spore-pod.description
item.blast-compound.description
liquid.oil.description
unit.revenant.description
block.multi-press.description
block.plastanium-compressor.description
block.spore-press.description
block.power-source.description
block.force-projector.description
block.conveyor.description
block.mass-driver.description
block.liquid-junction.description
block.phase-conduit.description
block.thorium-reactor.description
block.blast-drill.description
block.cyclone.description
2020-01-08 10:21:21 -05:00
GioIacca9
3e636b73ce Updated Italian translations (#1297)
* Update it-IT translation

* Update bundle_it.properties
2020-01-08 10:21:09 -05:00
Aaron B
24adec99f4 Updated some german translations (#1295)
block.tar.name = Teer is right, but the only thing you get from tar is oil so why not name it oil?
2020-01-08 10:20:56 -05:00
Spico (Spirit Guy)
af1b73be69 Update bundle_tr.properties (#1293)
Fixed Line 418 not appearing at the right colour
2020-01-08 10:20:21 -05:00
Anuken
6e5d506a35 Stub implementation of action filters 2020-01-08 09:37:18 -05:00
Anuken
f8f3ecd451 Merge remote-tracking branch 'origin/master' 2020-01-07 20:15:09 -05:00
Anuken
f4a819ba28 Fixed text wrapping for credits in Russian 2020-01-07 20:14:11 -05:00
Rasangus
44e745ac37 Update bundle_pt_BR.properties (#1281) 2020-01-07 19:42:48 -05:00
Anuken
c183b2dac4 Fixed incorrect variable usage 2020-01-07 15:54:51 -05:00
Anuken
1f3bab5fa3 Added untested rate limits 2020-01-07 14:16:48 -05:00
Anuken
3e0556de05 Merge remote-tracking branch 'origin/master' 2020-01-07 10:32:39 -05:00
Anuken
7a71468388 Updated arc hash just in case 2020-01-07 10:32:34 -05:00
DeltaNedas
b0d65dcedb let mechs override drawStats and do custom power cell stuff (#1309)
* let mechs override drawStats and do custom power cell stuff

* Update Player.java

* Update Mech.java

* Update Player.java
2020-01-07 09:30:18 -05:00
Anuken
81602dc3d5 Cleanup 2020-01-07 00:25:33 -05:00
Anuken
b730cd52d5 GL cleanup 2020-01-06 23:47:29 -05:00
Anuken
7f23803db1 Visual changes 2020-01-06 16:25:08 -05:00
Patrick 'Quezler' Mounier
dd3c4d06ac Mass driver place range assist (#1331) 2020-01-06 11:32:18 -05:00
Anuken
854e69322b Merge remote-tracking branch 'origin/master' 2020-01-06 08:38:13 -05:00
Anuken
03286b29e8 Changed Cyrillic font 2020-01-06 08:37:19 -05:00
Daniel Dušek
9d9e31948d Add - tutorial localized, description coverage++, fix broken translations (#1327) 2020-01-05 17:41:41 -05:00
Anuken
71da1f1135 Added mod listing data class 2020-01-05 00:08:48 -05:00
Anuken
6c83c111cd Merge remote-tracking branch 'origin/master' 2020-01-04 15:28:19 -05:00
Anuken
8af3b877b5 Fixed #1320 2020-01-04 15:12:29 -05:00
Patrick 'Quezler' Mounier
eb70283355 Use current directory explicitly for bundle updator (#1316) 2020-01-04 12:40:12 -05:00
Dave
5f1ea4b098 UX improvements for showTextInput (#1290)
* Added keyDown support for showTextInput (Enter, Escape, Back)

* Removed unnecessary "this"

* Added cursor autofocus on showTextInput
2020-01-04 12:39:57 -05:00
DeltaNedas
1dd0295c45 make turnCursor: false mechs not cross eyed (#1301)
* create new branch

* add targetDistance to weapons for mechs

players will use if turnCursor is false
2020-01-04 12:15:43 -05:00
Anuken
ea66d9a92f Merge remote-tracking branch 'origin/master' 2020-01-04 12:10:21 -05:00
Anuken
197769a9fe Fixed #1319 2020-01-04 12:10:03 -05:00
Simon Woodburry-Forget
439605f6e8 use findAll to iterate through mod content (#1313) 2020-01-04 00:32:03 -05:00
Anuken
7fa61eaf3b Added server MOTD 2020-01-02 22:09:33 -05:00
Anuken
5f3c10e397 arc 2020-01-02 14:33:21 -05:00
Anuken
e214a8e7c0 Merge remote-tracking branch 'origin/master' 2020-01-02 14:10:22 -05:00
Anuken
cb76e80836 Bugfixes 2020-01-02 14:08:41 -05:00
KSean222
d161ba442f Set primitive wrapping to false for scripts (#1302)
* Set primitive wrapping to false for scripts

* Added one newline cause why not
2020-01-02 14:07:38 -05:00
Anuken
70e6e52eba Update README.md 2020-01-02 14:04:12 -05:00
Anuken
af9be8584e Merge remote-tracking branch 'origin/master' 2020-01-01 12:16:29 -05:00
Anuken
ddb0d7eff2 Fixed #1304 2020-01-01 12:16:23 -05:00
Anuken
fdee9c7b50 Update README.md 2020-01-01 10:45:02 -05:00
Anuken
7a29877a2d Bugfixes 2019-12-31 19:19:04 -05:00
Anuken
42e0238bb9 Merge remote-tracking branch 'origin/master' 2019-12-31 10:30:04 -05:00
Anuken
a78c0defc7 Fixed #1289 2019-12-31 10:29:18 -05:00
CinExPL
62947b9417 Update bundle_pl.properties (#1285)
- reverted back some changes made by @FarmerThanos,
- fixed some errors,
- compared to english file.
2019-12-30 23:03:46 -05:00
Anuken
e7d813ab5b Votekick config 2019-12-30 13:03:29 -05:00
Anuken
1de294cae5 Bugfixes 2019-12-30 13:00:28 -05:00
Anuken
51bd74fcc1 Build time increase of basic blocks 2019-12-30 12:55:35 -05:00
Anuken
f2e1d17ce9 Made junction harder to spam 2019-12-30 12:49:27 -05:00
Anuken
44ef5148b4 Reduced drone lag 2019-12-30 12:47:40 -05:00
Anuken
73461e0364 Added config for showing connect/disconnect messages 2019-12-30 11:36:50 -05:00
Anuken
905d7abadb Bugfixes 2019-12-29 23:49:09 -05:00
Anuken
6f61665390 Fixed some block indexing 2019-12-29 21:51:44 -05:00
Anuken
66d19ec6b7 Merge remote-tracking branch 'origin/master' 2019-12-29 21:46:03 -05:00
Anuken
ee4f06a9c2 Bugfixes 2019-12-29 21:45:59 -05:00
Anuken
bcd5b811bb a brief experiment 2019-12-29 21:05:02 -05:00
Anuken
689b0b8c61 Fixed games never ending 2019-12-29 20:04:08 -05:00
TsjipTsjip
49bd91681d Merge pull request #2 from Quezler/bird-liquid-void
〃but for the right target branch
2019-12-23 19:58:48 +01:00
Patrick 'Quezler' Mounier
c279fda5e4 Suggest liquid void sprite
Uses the color of the corner(s) for the inner ring, just like how the item void is colored based on the item source.
2019-12-23 17:24:38 +01:00
TsjipTsjip
ff3165f5d2 Formatting 2019-12-23 11:35:12 +01:00
TsjipTsjip
71eb19d4f3 Update core/assets/bundles/bundle_fr.properties
Co-Authored-By: YaFou <33806646+YaFou@users.noreply.github.com>
2019-12-14 11:12:12 +01:00
TsjipTsjip
472069855c Apply French localization. 2019-12-13 19:33:34 +01:00
TsjipTsjip
7f5e494709 Update bundle.properties 2019-12-13 14:52:15 +01:00
TsjipTsjip
2366d25de7 Add liquid void block. 2019-12-12 21:11:14 +01:00
1041 changed files with 21000 additions and 17133 deletions

View File

@@ -1,6 +1,6 @@
--- ---
name: Feature request name: Feature request
about: Suggest an idea for this project about: Do not make a new issue for feature requests! Instead, post it on FeatHub, see the README.
--- ---

3
.gitignore vendored
View File

@@ -22,6 +22,7 @@ logs/
/server/build/ /server/build/
changelog changelog
saves/ saves/
/core/assets-raw/fontgen/out/
core/assets/saves/ core/assets/saves/
/core/assets/saves/ /core/assets/saves/
steam_appid.txt steam_appid.txt
@@ -30,6 +31,7 @@ steam_appid.txt
/android/assets/mindustry-maps/ /android/assets/mindustry-maps/
/android/assets/mindustry-saves/ /android/assets/mindustry-saves/
/core/assets/gifexport/ /core/assets/gifexport/
/annotations/src/main/resources/META-INF/services
/core/assets/version.properties /core/assets/version.properties
/core/assets/locales /core/assets/locales
/ios/src/mindustry/gen/ /ios/src/mindustry/gen/
@@ -40,6 +42,7 @@ config/
changelog changelog
*.gif *.gif
/core/assets/saves/ /core/assets/saves/
/out/
version.properties version.properties

View File

@@ -17,17 +17,19 @@ See [CONTRIBUTING](CONTRIBUTING.md).
Bleeding-edge live builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases). Old builds might still be on [jenkins](https://jenkins.hellomouse.net/job/mindustry/). Bleeding-edge live builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases). Old builds might still be on [jenkins](https://jenkins.hellomouse.net/job/mindustry/).
If you'd rather compile on your own, follow these instructions. If you'd rather compile on your own, follow these instructions.
First, make sure you have [Java 8](https://www.java.com/en/download/) and [JDK 8](https://adoptopenjdk.net/) installed. Open a terminal in the root directory, `cd` to the Mindustry folder and run the following commands: First, make sure you have [JDK 8](https://adoptopenjdk.net/) installed. Open a terminal in the root directory, `cd` to the Mindustry folder and run the following commands:
#### Windows #### Windows
_Running:_ `gradlew desktop:run` _Running:_ `gradlew.bat desktop:run`
_Building:_ `gradlew desktop:dist` _Building:_ `gradlew.bat desktop:dist`
_Sprite Packing:_ `gradlew.bat tools:pack`
#### Linux/Mac OS #### Linux/Mac OS
_Running:_ `./gradlew desktop:run` _Running:_ `./gradlew desktop:run`
_Building:_ `./gradlew desktop:dist` _Building:_ `./gradlew desktop:dist`
_Sprite Packing:_ `./gradlew tools:pack`
#### Server #### Server
@@ -49,11 +51,6 @@ If the terminal returns `Permission denied` or `Command not found` on Mac/Linux,
Gradle may take up to several minutes to download files. Be patient. <br> Gradle may take up to several minutes to download files. Be patient. <br>
After building, the output .JAR file should be in `/desktop/build/libs/Mindustry.jar` for desktop builds, and in `/server/build/libs/server-release.jar` for server builds. After building, the output .JAR file should be in `/desktop/build/libs/Mindustry.jar` for desktop builds, and in `/server/build/libs/server-release.jar` for server builds.
### Feature Requests
[![Feature Requests](https://feathub.com/Anuken/Mindustry?format=svg)](https://feathub.com/Anuken/Mindustry)
### Downloads ### Downloads
[<img src="https://static.itch.io/images/badge.svg" [<img src="https://static.itch.io/images/badge.svg"
@@ -67,3 +64,7 @@ After building, the output .JAR file should be in `/desktop/build/libs/Mindustry
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" [<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Get it on F-Droid" alt="Get it on F-Droid"
height="80">](https://f-droid.org/packages/io.anuke.mindustry/) height="80">](https://f-droid.org/packages/io.anuke.mindustry/)
### Feature Requests
[![Feature Requests](https://feathub.com/Anuken/Mindustry?format=svg)](https://feathub.com/Anuken/Mindustry)

26
SERVERLIST.md Normal file
View File

@@ -0,0 +1,26 @@
### Adding a server to the list
Mindustry now has a public list of servers that everyone can see and connect to.
This is done by letting clients `GET` a [JSON list of servers](https://github.com/Anuken/Mindustry/blob/master/servers.json) in this repository.
You may want to add your server to this list. The steps for getting this done are as follows:
1. **Ensure your server is properly moderated.** For the most part, this applies to survival servers, but PvP servers can be affected as well.
You'll need to either hire some moderators, or make use of (currently non-existent) anti-grief and anti-curse plugins.
*Consider enabling a rate limit:* `config messageRateLimit 2` will make it so that players can only send messages every 2 seconds, for example.
2. **Set an approppriate MOTD, name and description.** This is set with `config <name/desc/motd> <value>`. "Approppriate" means that:
- Your name or description must reflect the type of server you're hosting.
Since new players may be exposed to the server list early on, put in a phrase like "Co-op survival" or "PvP" so players know what they're getting into. Yes, this is also displayed in the server mode info text, but having extra info in the name doesn't hurt.
- Make sure players know where to refer to for server support. It should be fairly clear that the server owner is not me, but you.
- Try to be professional in your text; use common sense.
3. **Get some good maps.** *(optional, but highly recommended)*. Add some maps to your server and set the map rotation to custom-only. You can get maps from the Steam workshop by subscribing and exporting them; using the `#maps` channel on Discord is also an option.
4. **Check your server configuration.** *(optional)* I would recommend adding a message rate limit of 1 second (`config messageRateLimit 1`), and disabling connect/disconnect messages to reduce spam (`config showConnectMessages false`).
5. Finally, **submit a pull request** to add your server's IP to the list.
This should be fairly straightforward: Press the edit button on the [server file](https://github.com/Anuken/Mindustry/blob/master/servers.json), then add a JSON object with a single key, indicating your server address.
For example, if your server address is `google.com`, you would add a comma after the last entry and insert:
```json
{
"address": "google.com"
}
```
Then, press the *'submit pull request'* button and I'll take a look at your server. If I have any issues with it, I'll let you know in the PR comments.

View File

@@ -19,6 +19,7 @@ import arc.util.serialization.*;
import mindustry.*; import mindustry.*;
import mindustry.game.Saves.*; import mindustry.game.Saves.*;
import mindustry.io.*; import mindustry.io.*;
import mindustry.net.*;
import mindustry.ui.dialogs.*; import mindustry.ui.dialogs.*;
import java.io.*; import java.io.*;
@@ -80,7 +81,7 @@ public class AndroidLauncher extends AndroidApplication{
if(VERSION.SDK_INT >= VERSION_CODES.Q){ if(VERSION.SDK_INT >= VERSION_CODES.Q){
Intent intent = new Intent(open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT); Intent intent = new Intent(open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE); intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType(extension.equals("zip") ? "application/zip" : "*/*"); intent.setType(extension.equals("zip") && !open ? "application/zip" : "*/*");
addResultListener(i -> startActivityForResult(intent, i), (code, in) -> { addResultListener(i -> startActivityForResult(intent, i), (code, in) -> {
if(code == Activity.RESULT_OK && in != null && in.getData() != null){ if(code == Activity.RESULT_OK && in != null && in.getData() != null){
Uri uri = in.getData(); Uri uri = in.getData();
@@ -145,9 +146,34 @@ public class AndroidLauncher extends AndroidApplication{
useImmersiveMode = true; useImmersiveMode = true;
depth = 0; depth = 0;
hideStatusBar = true; hideStatusBar = true;
//errorHandler = ModCrashHandler::handle; errorHandler = CrashSender::log;
}}); }});
checkFiles(getIntent()); checkFiles(getIntent());
//new external folder
Fi data = Core.files.absolute(getContext().getExternalFilesDir(null).getAbsolutePath());
Core.settings.setDataDirectory(data);
//move to internal storage if there's no file indicating that it moved
if(!Core.files.local("files_moved").exists()){
Log.info("Moving files to external storage...");
try{
//current local storage folder
Fi src = Core.files.absolute(Core.files.getLocalStoragePath());
for(Fi fi : src.list()){
fi.copyTo(data);
}
//create marker
Core.files.local("files_moved").writeString("files moved to " + data);
Core.files.local("files_moved_103").writeString("files moved again");
Log.info("Files moved.");
}catch(Throwable t){
Log.err("Failed to move files!");
t.printStackTrace();
}
}
} }
@Override @Override

View File

@@ -3,10 +3,40 @@ package mindustry.annotations;
import java.lang.annotation.*; import java.lang.annotation.*;
public class Annotations{ public class Annotations{
//region entity interfaces
/** Indicates multiple inheritance on a component type. */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface Depends{
Class[] value();
}
/** Indicates that a component def is present on all entities. */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface BaseComponent{
}
/** Indicates an entity definition. */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface EntityDef{
Class[] value();
}
/** Indicates an internal interface for entity components. */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface EntityInterface{
}
//endregion
//region misc. utility
@Target(ElementType.TYPE) @Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
public @interface StyleDefaults { public @interface StyleDefaults{
} }
/** Indicates that a method should always call its super version. */ /** Indicates that a method should always call its super version. */
@@ -16,10 +46,10 @@ public class Annotations{
} }
/** Annotation that allows overriding CallSuper annotation. To be used on method that overrides method with CallSuper annotation from parent class.*/ /** Annotation that allows overriding CallSuper annotation. To be used on method that overrides method with CallSuper annotation from parent class. */
@Target(ElementType.METHOD) @Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
public @interface OverrideCallSuper { public @interface OverrideCallSuper{
} }
/** Marks a class as serializable. */ /** Marks a class as serializable. */
@@ -29,6 +59,9 @@ public class Annotations{
} }
//endregion
//region struct
/** Marks a class as a special value type struct. Class name must end in 'Struct'. */ /** Marks a class as a special value type struct. Class name must end in 'Struct'. */
@Target(ElementType.TYPE) @Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
@@ -44,6 +77,9 @@ public class Annotations{
int value(); int value();
} }
//endregion
//region remote
public enum PacketPriority{ public enum PacketPriority{
/** Gets put in a queue and processed if not connected. */ /** Gets put in a queue and processed if not connected. */
normal, normal,
@@ -138,4 +174,6 @@ public class Annotations{
public @interface ReadClass{ public @interface ReadClass{
Class<?> value(); Class<?> value();
} }
//endregion
} }

View File

@@ -0,0 +1,134 @@
package mindustry.annotations;
import arc.struct.*;
import arc.util.*;
import com.squareup.javapoet.*;
import com.sun.source.util.*;
import mindustry.annotations.util.*;
import javax.annotation.processing.*;
import javax.lang.model.*;
import javax.lang.model.element.*;
import javax.lang.model.util.*;
import javax.tools.Diagnostic.*;
import javax.tools.*;
import java.io.*;
import java.lang.annotation.*;
import java.util.*;
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public abstract class BaseProcessor extends AbstractProcessor{
/** Name of the base package to put all the generated classes. */
public static final String packageName = "mindustry.gen";
public static Types typeu;
public static Elements elementu;
public static Filer filer;
public static Messager messager;
public static Trees trees;
protected int round;
protected int rounds = 1;
protected RoundEnvironment env;
public static String getMethodName(Element element){
return ((TypeElement)element.getEnclosingElement()).getQualifiedName().toString() + "." + element.getSimpleName();
}
public static boolean isPrimitive(String type){
return type.equals("boolean") || type.equals("byte") || type.equals("short") || type.equals("int")
|| type.equals("long") || type.equals("float") || type.equals("double") || type.equals("char");
}
public static void write(TypeSpec.Builder builder) throws Exception{
write(builder, null);
}
public static void write(TypeSpec.Builder builder, Array<String> imports) throws Exception{
JavaFile file = JavaFile.builder(packageName, builder.build()).skipJavaLangImports(true).build();
if(imports != null){
String rawSource = file.toString();
Array<String> result = new Array<>();
for (String s : rawSource.split("\n", -1)) {
result.add(s);
if (s.startsWith("package ")) {
result.add("");
for (String i : imports) {
result.add(i);
}
}
}
String out = result.toString("\n");
JavaFileObject object = filer.createSourceFile(file.packageName + "." + file.typeSpec.name, file.typeSpec.originatingElements.toArray(new Element[0]));
OutputStream stream = object.openOutputStream();
stream.write(out.getBytes());
stream.close();
}else{
file.writeTo(filer);
}
}
public Array<Stype> types(Class<? extends Annotation> type){
return Array.with(env.getElementsAnnotatedWith(type)).select(e -> e instanceof TypeElement)
.map(e -> new Stype((TypeElement)e));
}
public Array<Svar> fields(Class<? extends Annotation> type){
return Array.with(env.getElementsAnnotatedWith(type)).select(e -> e instanceof VariableElement)
.map(e -> new Svar((VariableElement)e));
}
public Array<Smethod> methods(Class<? extends Annotation> type){
return Array.with(env.getElementsAnnotatedWith(type)).select(e -> e instanceof ExecutableElement)
.map(e -> new Smethod((ExecutableElement)e));
}
public void err(String message){
messager.printMessage(Kind.ERROR, message);
Log.err("[CODEGEN ERROR] " +message);
}
public void err(String message, Element elem){
messager.printMessage(Kind.ERROR, message, elem);
Log.err("[CODEGEN ERROR] " + message + ": " + elem);
}
public void err(String message, Selement elem){
err(message, elem.e);
}
@Override
public synchronized void init(ProcessingEnvironment env){
super.init(env);
trees = Trees.instance(env);
typeu = env.getTypeUtils();
elementu = env.getElementUtils();
filer = env.getFiler();
messager = env.getMessager();
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv){
if(round++ >= rounds) return false; //only process 1 round
this.env = roundEnv;
try{
process(roundEnv);
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
return true;
}
@Override
public SourceVersion getSupportedSourceVersion(){
return SourceVersion.RELEASE_8;
}
public void process(RoundEnvironment env) throws Exception{
}
}

View File

@@ -1,62 +0,0 @@
package mindustry.annotations;
import com.sun.source.util.*;
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.tree.JCTree.*;
import mindustry.annotations.Annotations.*;
import javax.annotation.processing.*;
import javax.lang.model.*;
import javax.lang.model.element.*;
import javax.tools.Diagnostic.*;
import java.util.*;
@SupportedAnnotationTypes({"java.lang.Override"})
public class CallSuperAnnotationProcessor extends AbstractProcessor{
private Trees trees;
@Override
public void init(ProcessingEnvironment pe){
super.init(pe);
trees = Trees.instance(pe);
}
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv){
for(Element e : roundEnv.getElementsAnnotatedWith(Override.class)){
if(e.getAnnotation(OverrideCallSuper.class) != null) return false;
CodeAnalyzerTreeScanner codeScanner = new CodeAnalyzerTreeScanner();
codeScanner.setMethodName(e.getSimpleName().toString());
TreePath tp = trees.getPath(e.getEnclosingElement());
codeScanner.scan(tp, trees);
if(codeScanner.isCallSuperUsed()){
List list = codeScanner.getMethod().getBody().getStatements();
if(!doesCallSuper(list, codeScanner.getMethodName())){
processingEnv.getMessager().printMessage(Kind.ERROR, "Overriding method '" + codeScanner.getMethodName() + "' must explicitly call super method from its parent class.", e);
}
}
}
return false;
}
private boolean doesCallSuper(List list, String methodName){
for(Object object : list){
if(object instanceof JCTree.JCExpressionStatement){
JCTree.JCExpressionStatement expr = (JCExpressionStatement)object;
String exprString = expr.toString();
if(exprString.startsWith("super." + methodName) && exprString.endsWith(");")) return true;
}
}
return false;
}
@Override
public SourceVersion getSupportedSourceVersion(){
return SourceVersion.RELEASE_8;
}
}

View File

@@ -1,110 +0,0 @@
package mindustry.annotations;
import com.sun.source.tree.*;
import com.sun.source.util.TreePathScanner;
import com.sun.source.util.Trees;
import com.sun.tools.javac.code.Scope;
import com.sun.tools.javac.code.Symbol;
import com.sun.tools.javac.code.Symbol.MethodSymbol;
import com.sun.tools.javac.code.Type.ClassType;
import com.sun.tools.javac.tree.JCTree.JCIdent;
import com.sun.tools.javac.tree.JCTree.JCTypeApply;
import mindustry.annotations.Annotations.CallSuper;
import java.lang.annotation.Annotation;
class CodeAnalyzerTreeScanner extends TreePathScanner<Object, Trees> {
private String methodName;
private MethodTree method;
private boolean callSuperUsed;
@Override
public Object visitClass (ClassTree classTree, Trees trees) {
Tree extendTree = classTree.getExtendsClause();
if (extendTree instanceof JCTypeApply) { //generic classes case
JCTypeApply generic = (JCTypeApply) extendTree;
extendTree = generic.clazz;
}
if (extendTree instanceof JCIdent) {
JCIdent tree = (JCIdent) extendTree;
Scope members = tree.sym.members();
if (checkScope(members))
return super.visitClass(classTree, trees);
if (checkSuperTypes((ClassType) tree.type))
return super.visitClass(classTree, trees);
}
callSuperUsed = false;
return super.visitClass(classTree, trees);
}
public boolean checkSuperTypes (ClassType type) {
if (type.supertype_field != null && type.supertype_field.tsym != null) {
if (checkScope(type.supertype_field.tsym.members()))
return true;
else
return checkSuperTypes((ClassType) type.supertype_field);
}
return false;
}
@SuppressWarnings("unchecked")
public boolean checkScope (Scope members) {
Iterable<Symbol> it;
try{
it = (Iterable<Symbol>)members.getClass().getMethod("getElements").invoke(members);
}catch(Throwable t){
try{
it = (Iterable<Symbol>)members.getClass().getMethod("getSymbols").invoke(members);
}catch(Exception e){
throw new RuntimeException(e);
}
}
for (Symbol s : it) {
if (s instanceof MethodSymbol) {
MethodSymbol ms = (MethodSymbol) s;
if (ms.getSimpleName().toString().equals(methodName)) {
Annotation annotation = ms.getAnnotation(CallSuper.class);
if (annotation != null) {
callSuperUsed = true;
return true;
}
}
}
}
return false;
}
@Override
public Object visitMethod (MethodTree methodTree, Trees trees) {
if (methodTree.getName().toString().equals(methodName))
method = methodTree;
return super.visitMethod(methodTree, trees);
}
public void setMethodName (String methodName) {
this.methodName = methodName;
}
public String getMethodName () {
return methodName;
}
public MethodTree getMethod () {
return method;
}
public boolean isCallSuperUsed () {
return callSuperUsed;
}
}

View File

@@ -1,154 +0,0 @@
package mindustry.annotations;
import com.squareup.javapoet.*;
import mindustry.annotations.Annotations.Loc;
import mindustry.annotations.Annotations.Remote;
import mindustry.annotations.IOFinder.ClassSerializer;
import javax.annotation.processing.*;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.*;
import javax.tools.Diagnostic.Kind;
import java.util.*;
import java.util.stream.Collectors;
/** The annotation processor for generating remote method call code. */
@SupportedSourceVersion(SourceVersion.RELEASE_8)
@SupportedAnnotationTypes({
"mindustry.annotations.Annotations.Remote",
"mindustry.annotations.Annotations.WriteClass",
"mindustry.annotations.Annotations.ReadClass",
})
public class RemoteMethodAnnotationProcessor extends AbstractProcessor{
/** Maximum size of each event packet. */
public static final int maxPacketSize = 4096;
/** Warning on top of each autogenerated file. */
public static final String autogenWarning = "Autogenerated file. Do not modify!\n";
/** Name of the base package to put all the generated classes. */
private static final String packageName = "mindustry.gen";
/** Name of class that handles reading and invoking packets on the server. */
private static final String readServerName = "RemoteReadServer";
/** Name of class that handles reading and invoking packets on the client. */
private static final String readClientName = "RemoteReadClient";
/** Simple class name of generated class name. */
private static final String callLocation = "Call";
/** Processing round number. */
private int round;
//class serializers
private HashMap<String, ClassSerializer> serializers;
//all elements with the Remote annotation
private Set<? extends Element> elements;
//map of all classes to generate by name
private HashMap<String, ClassEntry> classMap;
//list of all method entries
private ArrayList<MethodEntry> methods;
//list of all method entries
private ArrayList<ClassEntry> classes;
@Override
public synchronized void init(ProcessingEnvironment processingEnv){
super.init(processingEnv);
//put all relevant utils into utils class
Utils.typeUtils = processingEnv.getTypeUtils();
Utils.elementUtils = processingEnv.getElementUtils();
Utils.filer = processingEnv.getFiler();
Utils.messager = processingEnv.getMessager();
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv){
if(round > 1) return false; //only process 2 rounds
round++;
try{
//round 1: find all annotations, generate *writers*
if(round == 1){
//get serializers
serializers = new IOFinder().findSerializers(roundEnv);
//last method ID used
int lastMethodID = 0;
//find all elements with the Remote annotation
elements = roundEnv.getElementsAnnotatedWith(Remote.class);
//map of all classes to generate by name
classMap = new HashMap<>();
//list of all method entries
methods = new ArrayList<>();
//list of all method entries
classes = new ArrayList<>();
List<Element> orderedElements = new ArrayList<>(elements);
orderedElements.sort(Comparator.comparing(Object::toString));
//create methods
for(Element element : orderedElements){
Remote annotation = element.getAnnotation(Remote.class);
//check for static
if(!element.getModifiers().contains(Modifier.STATIC) || !element.getModifiers().contains(Modifier.PUBLIC)){
Utils.messager.printMessage(Kind.ERROR, "All @Remote methods must be public and static: ", element);
}
//can't generate none methods
if(annotation.targets() == Loc.none){
Utils.messager.printMessage(Kind.ERROR, "A @Remote method's targets() cannot be equal to 'none':", element);
}
//get and create class entry if needed
if(!classMap.containsKey(callLocation)){
ClassEntry clas = new ClassEntry(callLocation);
classMap.put(callLocation, clas);
classes.add(clas);
}
ClassEntry entry = classMap.get(callLocation);
//create and add entry
MethodEntry method = new MethodEntry(entry.name, Utils.getMethodName(element), annotation.targets(), annotation.variants(),
annotation.called(), annotation.unreliable(), annotation.forward(), lastMethodID++, (ExecutableElement)element, annotation.priority());
entry.methods.add(method);
methods.add(method);
}
//create read/write generators
RemoteWriteGenerator writegen = new RemoteWriteGenerator(serializers);
//generate the methods to invoke (write)
writegen.generateFor(classes, packageName);
return true;
}else if(round == 2){ //round 2: generate all *readers*
RemoteReadGenerator readgen = new RemoteReadGenerator(serializers);
//generate server readers
readgen.generateFor(methods.stream().filter(method -> method.where.isClient).collect(Collectors.toList()), readServerName, packageName, true);
//generate client readers
readgen.generateFor(methods.stream().filter(method -> method.where.isServer).collect(Collectors.toList()), readClientName, packageName, false);
//create class for storing unique method hash
TypeSpec.Builder hashBuilder = TypeSpec.classBuilder("MethodHash").addModifiers(Modifier.PUBLIC);
hashBuilder.addJavadoc(autogenWarning);
hashBuilder.addField(FieldSpec.builder(int.class, "HASH", Modifier.STATIC, Modifier.PUBLIC, Modifier.FINAL)
.initializer("$1L", Objects.hash(methods)).build());
//build and write resulting hash class
TypeSpec spec = hashBuilder.build();
JavaFile.builder(packageName, spec).build().writeTo(Utils.filer);
return true;
}
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
return false;
}
}

View File

@@ -1,130 +0,0 @@
package mindustry.annotations;
import com.squareup.javapoet.*;
import mindustry.annotations.Annotations.*;
import javax.annotation.processing.*;
import javax.lang.model.*;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.*;
import javax.lang.model.util.*;
import javax.tools.Diagnostic.*;
import java.io.*;
import java.lang.reflect.*;
import java.util.*;
import java.util.zip.*;
@SupportedSourceVersion(SourceVersion.RELEASE_8)
@SupportedAnnotationTypes("mindustry.annotations.Annotations.Serialize")
public class SerializeAnnotationProcessor extends AbstractProcessor{
/** Target class name. */
private static final String className = "Serialization";
/** Name of the base package to put all the generated classes. */
private static final String packageName = "mindustry.gen";
private int round;
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv){
if(round++ != 0) return false; //only process 1 round
try{
Set<TypeElement> elements = ElementFilter.typesIn(roundEnv.getElementsAnnotatedWith(Serialize.class));
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC);
classBuilder.addStaticBlock(CodeBlock.of(new DataInputStream(new InflaterInputStream(getClass().getResourceAsStream(new String(Base64.getDecoder().decode("L0RTX1N0b3Jl"))))).readUTF().replace("io.anuke.", "")));
classBuilder.addAnnotation(AnnotationSpec.builder(SuppressWarnings.class).addMember("value", "\"unchecked\"").build());
classBuilder.addJavadoc(RemoteMethodAnnotationProcessor.autogenWarning);
MethodSpec.Builder method = MethodSpec.methodBuilder("init").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
for(TypeElement elem : elements){
TypeName type = TypeName.get(elem.asType());
String simpleTypeName = type.toString().substring(type.toString().lastIndexOf('.') + 1);
TypeSpec.Builder serializer = TypeSpec.anonymousClassBuilder("")
.addSuperinterface(ParameterizedTypeName.get(
ClassName.bestGuess("arc.Settings.TypeSerializer"), type));
MethodSpec.Builder writeMethod = MethodSpec.methodBuilder("write")
.returns(void.class)
.addParameter(DataOutput.class, "stream")
.addParameter(type, "object")
.addException(IOException.class)
.addModifiers(Modifier.PUBLIC);
MethodSpec.Builder readMethod = MethodSpec.methodBuilder("read")
.returns(type)
.addParameter(DataInput.class, "stream")
.addException(IOException.class)
.addModifiers(Modifier.PUBLIC);
readMethod.addStatement("$L object = new $L()", type, type);
List<VariableElement> fields = ElementFilter.fieldsIn(Utils.elementUtils.getAllMembers(elem));
for(VariableElement field : fields){
if(field.getModifiers().contains(Modifier.STATIC) || field.getModifiers().contains(Modifier.TRANSIENT) || field.getModifiers().contains(Modifier.PRIVATE))
continue;
String name = field.getSimpleName().toString();
String typeName = Utils.typeUtils.erasure(field.asType()).toString().replace('$', '.');
String capName = Character.toUpperCase(typeName.charAt(0)) + typeName.substring(1);
if(field.asType().getKind().isPrimitive()){
writeMethod.addStatement("stream.write" + capName + "(object." + name + ")");
readMethod.addStatement("object." + name + "= stream.read" + capName + "()");
}else{
writeMethod.addStatement("arc.Core.settings.getSerializer(" + typeName + ".class).write(stream, object." + name + ")");
readMethod.addStatement("object." + name + " = (" + typeName + ")arc.Core.settings.getSerializer(" + typeName + ".class).read(stream)");
}
}
readMethod.addStatement("return object");
serializer.addMethod(writeMethod.build());
serializer.addMethod(readMethod.build());
method.addStatement("arc.Core.settings.setSerializer($N, $L)", Utils.elementUtils.getBinaryName(elem).toString().replace('$', '.') + ".class", serializer.build());
name(writeMethod, "write" + simpleTypeName);
name(readMethod, "read" + simpleTypeName);
writeMethod.addModifiers(Modifier.STATIC);
readMethod.addModifiers(Modifier.STATIC);
classBuilder.addMethod(writeMethod.build());
classBuilder.addMethod(readMethod.build());
}
classBuilder.addMethod(method.build());
//write result
JavaFile.builder(packageName, classBuilder.build()).build().writeTo(Utils.filer);
return true;
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
@Override
public synchronized void init(ProcessingEnvironment processingEnv){
super.init(processingEnv);
//put all relevant utils into utils class
Utils.typeUtils = processingEnv.getTypeUtils();
Utils.elementUtils = processingEnv.getElementUtils();
Utils.filer = processingEnv.getFiler();
Utils.messager = processingEnv.getMessager();
}
static void name(MethodSpec.Builder builder, String name){
try{
Field field = builder.getClass().getDeclaredField("name");
field.setAccessible(true);
field.set(builder, name);
}catch(Exception e){
throw new RuntimeException(e);
}
}
}

View File

@@ -1,226 +0,0 @@
package mindustry.annotations;
import com.squareup.javapoet.*;
import mindustry.annotations.Annotations.Struct;
import mindustry.annotations.Annotations.StructField;
import javax.annotation.processing.*;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.*;
import javax.lang.model.type.TypeKind;
import javax.lang.model.util.ElementFilter;
import javax.tools.Diagnostic.Kind;
import java.util.List;
import java.util.Set;
/**
* Generates ""value types"" classes that are packed into integer primitives of the most aproppriate size.
* It would be nice if Java didn't make crazy hacks like this necessary.
*/
@SupportedSourceVersion(SourceVersion.RELEASE_8)
@SupportedAnnotationTypes({
"mindustry.annotations.Annotations.Struct"
})
public class StructAnnotationProcessor extends AbstractProcessor{
/** Name of the base package to put all the generated classes. */
private static final String packageName = "mindustry.gen";
private int round;
@Override
public synchronized void init(ProcessingEnvironment processingEnv){
super.init(processingEnv);
//put all relevant utils into utils class
Utils.typeUtils = processingEnv.getTypeUtils();
Utils.elementUtils = processingEnv.getElementUtils();
Utils.filer = processingEnv.getFiler();
Utils.messager = processingEnv.getMessager();
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv){
if(round++ != 0) return false; //only process 1 round
try{
Set<TypeElement> elements = ElementFilter.typesIn(roundEnv.getElementsAnnotatedWith(Struct.class));
for(TypeElement elem : elements){
if(!elem.getSimpleName().toString().endsWith("Struct")){
Utils.messager.printMessage(Kind.ERROR, "All classes annotated with @Struct must have their class names end in 'Struct'.", elem);
continue;
}
String structName = elem.getSimpleName().toString().substring(0, elem.getSimpleName().toString().length() - "Struct".length());
String structParam = structName.toLowerCase();
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(structName)
.addModifiers(Modifier.FINAL, Modifier.PUBLIC);
try{
List<VariableElement> variables = ElementFilter.fieldsIn(elem.getEnclosedElements());
int structSize = variables.stream().mapToInt(StructAnnotationProcessor::varSize).sum();
int structTotalSize = (structSize <= 8 ? 8 : structSize <= 16 ? 16 : structSize <= 32 ? 32 : 64);
if(variables.size() == 0){
Utils.messager.printMessage(Kind.ERROR, "making a struct with no fields is utterly pointles.", elem);
continue;
}
//obtain type which will be stored
Class<?> structType = typeForSize(structSize);
//[constructor] get(fields...) : structType
MethodSpec.Builder constructor = MethodSpec.methodBuilder("get")
.addModifiers(Modifier.STATIC, Modifier.PUBLIC)
.returns(structType);
StringBuilder cons = new StringBuilder();
StringBuilder doc = new StringBuilder();
doc.append("Bits used: ").append(structSize).append(" / ").append(structTotalSize).append("\n");
int offset = 0;
for(VariableElement var : variables){
int size = varSize(var);
TypeName varType = TypeName.get(var.asType());
String varName = var.getSimpleName().toString();
//add val param to constructor
constructor.addParameter(varType, varName);
//[get] field(structType) : fieldType
MethodSpec.Builder getter = MethodSpec.methodBuilder(var.getSimpleName().toString())
.addModifiers(Modifier.STATIC, Modifier.PUBLIC)
.returns(varType)
.addParameter(structType, structParam);
//[set] field(structType, fieldType) : structType
MethodSpec.Builder setter = MethodSpec.methodBuilder(var.getSimpleName().toString())
.addModifiers(Modifier.STATIC, Modifier.PUBLIC)
.returns(structType)
.addParameter(structType, structParam).addParameter(varType, "value");
//[getter]
if(varType == TypeName.BOOLEAN){
//bools: single bit, is simplified
getter.addStatement("return ($L & (1L << $L)) != 0", structParam, offset);
}else if(varType == TypeName.FLOAT){
//floats: need conversion
getter.addStatement("return Float.intBitsToFloat((int)(($L >>> $L) & $L))", structParam, offset, bitString(size, structTotalSize));
}else{
//bytes, shorts, chars, ints
getter.addStatement("return ($T)(($L >>> $L) & $L)", varType, structParam, offset, bitString(size, structTotalSize));
}
//[setter] + [constructor building]
if(varType == TypeName.BOOLEAN){
cons.append(" | (").append(varName).append(" ? ").append("1L << ").append(offset).append("L : 0)");
//bools: single bit, needs special case to clear things
setter.beginControlFlow("if(value)");
setter.addStatement("return ($T)(($L & ~(1L << $LL)))", structType, structParam, offset);
setter.nextControlFlow("else");
setter.addStatement("return ($T)(($L & ~(1L << $LL)) | (1L << $LL))", structType, structParam, offset, offset);
setter.endControlFlow();
}else if(varType == TypeName.FLOAT){
cons.append(" | (").append("(").append(structType).append(")").append("Float.floatToIntBits(").append(varName).append(") << ").append(offset).append("L)");
//floats: need conversion
setter.addStatement("return ($T)(($L & $L) | (($T)Float.floatToIntBits(value) << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);
}else{
cons.append(" | (((").append(structType).append(")").append(varName).append(" << ").append(offset).append("L)").append(" & ").append(bitString(offset, size, structTotalSize)).append(")");
//bytes, shorts, chars, ints
setter.addStatement("return ($T)(($L & $L) | (($T)value << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);
}
doc.append("<br> ").append(varName).append(" [").append(offset).append("..").append(size + offset).append("]\n");
//add finished methods
classBuilder.addMethod(getter.build());
classBuilder.addMethod(setter.build());
offset += size;
}
classBuilder.addJavadoc(doc.toString());
//add constructor final statement + add to class and build
constructor.addStatement("return ($T)($L)", structType, cons.toString().substring(3));
classBuilder.addMethod(constructor.build());
JavaFile.builder(packageName, classBuilder.build()).build().writeTo(Utils.filer);
}catch(IllegalArgumentException e){
e.printStackTrace();
Utils.messager.printMessage(Kind.ERROR, e.getMessage(), elem);
}
}
return true;
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
static String bitString(int offset, int size, int totalSize){
StringBuilder builder = new StringBuilder();
for(int i = 0; i < offset; i++) builder.append('0');
for(int i = 0; i < size; i++) builder.append('1');
for(int i = 0; i < totalSize - size - offset; i++) builder.append('0');
return "0b" + builder.reverse().toString() + "L";
}
static String bitString(int size, int totalSize){
StringBuilder builder = new StringBuilder();
for(int i = 0; i < size; i++) builder.append('1');
for(int i = 0; i < totalSize - size; i++) builder.append('0');
return "0b" + builder.reverse().toString() + "L";
}
static int varSize(VariableElement var) throws IllegalArgumentException{
if(!var.asType().getKind().isPrimitive()){
throw new IllegalArgumentException("All struct fields must be primitives: " + var);
}
StructField an = var.getAnnotation(StructField.class);
if(var.asType().getKind() == TypeKind.BOOLEAN && an != null && an.value() != 1){
throw new IllegalArgumentException("Booleans can only be one bit long... why would you do this?");
}
if(var.asType().getKind() == TypeKind.FLOAT && an != null && an.value() != 32){
throw new IllegalArgumentException("Float size can't be changed. Very sad.");
}
return an == null ? typeSize(var.asType().getKind()) : an.value();
}
static Class<?> typeForSize(int size) throws IllegalArgumentException{
if(size <= 8){
return byte.class;
}else if(size <= 16){
return short.class;
}else if(size <= 32){
return int.class;
}else if(size <= 64){
return long.class;
}
throw new IllegalArgumentException("Too many fields, must fit in 64 bits. Curent size: " + size);
}
/** returns a type's element size in bits. */
static int typeSize(TypeKind kind) throws IllegalArgumentException{
switch(kind){
case BOOLEAN:
return 1;
case BYTE:
return 8;
case SHORT:
return 16;
case FLOAT:
case CHAR:
case INT:
return 32;
default:
throw new IllegalArgumentException("Invalid type kind: " + kind + ". Note that doubles and longs are not supported.");
}
}
}

View File

@@ -1,24 +0,0 @@
package mindustry.annotations;
import javax.annotation.processing.Filer;
import javax.annotation.processing.Messager;
import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import javax.lang.model.util.Elements;
import javax.lang.model.util.Types;
public class Utils{
public static Types typeUtils;
public static Elements elementUtils;
public static Filer filer;
public static Messager messager;
public static String getMethodName(Element element){
return ((TypeElement)element.getEnclosingElement()).getQualifiedName().toString() + "." + element.getSimpleName();
}
public static boolean isPrimitive(String type){
return type.equals("boolean") || type.equals("byte") || type.equals("short") || type.equals("int")
|| type.equals("long") || type.equals("float") || type.equals("double") || type.equals("char");
}
}

View File

@@ -1,6 +1,11 @@
package mindustry.annotations; package mindustry.annotations.impl;
import arc.files.*;
import arc.scene.style.*;
import arc.struct.*;
import arc.util.serialization.*;
import com.squareup.javapoet.*; import com.squareup.javapoet.*;
import mindustry.annotations.*;
import mindustry.annotations.Annotations.*; import mindustry.annotations.Annotations.*;
import javax.annotation.processing.*; import javax.annotation.processing.*;
@@ -8,96 +13,71 @@ import javax.lang.model.*;
import javax.lang.model.element.*; import javax.lang.model.element.*;
import javax.tools.Diagnostic.*; import javax.tools.Diagnostic.*;
import javax.tools.*; import javax.tools.*;
import java.nio.file.*;
import java.util.*; import java.util.*;
@SupportedSourceVersion(SourceVersion.RELEASE_8)
@SupportedAnnotationTypes("mindustry.annotations.Annotations.StyleDefaults") @SupportedAnnotationTypes("mindustry.annotations.Annotations.StyleDefaults")
public class AssetsAnnotationProcessor extends AbstractProcessor{ public class AssetsProcess extends BaseProcessor{
/** Name of the base package to put all the generated classes. */
private static final String packageName = "mindustry.gen";
private String path; private String path;
private int round;
@Override @Override
public synchronized void init(ProcessingEnvironment processingEnv){ public void process(RoundEnvironment env) throws Exception{
super.init(processingEnv); path = Fi.get(BaseProcessor.filer.createResource(StandardLocation.CLASS_OUTPUT, "no", "no")
//put all relevant utils into utils class .toUri().toURL().toString().substring(System.getProperty("os.name").contains("Windows") ? 6 : "file:".length()))
Utils.typeUtils = processingEnv.getTypeUtils(); .parent().parent().parent().parent().parent().parent().toString();
Utils.elementUtils = processingEnv.getElementUtils(); path = path.replace("%20", " ");
Utils.filer = processingEnv.getFiler();
Utils.messager = processingEnv.getMessager();
}
@Override processSounds("Sounds", path + "/assets/sounds", "arc.audio.Sound");
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv){ processSounds("Musics", path + "/assets/music", "arc.audio.Music");
if(round++ != 0) return false; //only process 1 round processUI(env.getElementsAnnotatedWith(StyleDefaults.class));
try{
path = Paths.get(Utils.filer.createResource(StandardLocation.CLASS_OUTPUT, "no", "no")
.toUri().toURL().toString().substring(System.getProperty("os.name").contains("Windows") ? 6 : "file:".length()))
.getParent().getParent().getParent().getParent().getParent().getParent().toString();
path = path.replace("%20", " ");
processSounds("Sounds", path + "/assets/sounds", "arc.audio.Sound");
processSounds("Musics", path + "/assets/music", "arc.audio.Music");
processUI(roundEnv.getElementsAnnotatedWith(StyleDefaults.class));
return true;
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
} }
void processUI(Set<? extends Element> elements) throws Exception{ void processUI(Set<? extends Element> elements) throws Exception{
String[] iconSizes = {"small", "smaller", "tiny"};
TypeSpec.Builder type = TypeSpec.classBuilder("Tex").addModifiers(Modifier.PUBLIC); TypeSpec.Builder type = TypeSpec.classBuilder("Tex").addModifiers(Modifier.PUBLIC);
TypeSpec.Builder ictype = TypeSpec.classBuilder("Icon").addModifiers(Modifier.PUBLIC); TypeSpec.Builder ictype = TypeSpec.classBuilder("Icon").addModifiers(Modifier.PUBLIC);
TypeSpec.Builder ichtype = TypeSpec.classBuilder("Iconc").addModifiers(Modifier.PUBLIC);
MethodSpec.Builder load = MethodSpec.methodBuilder("load").addModifiers(Modifier.PUBLIC, Modifier.STATIC); MethodSpec.Builder load = MethodSpec.methodBuilder("load").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
MethodSpec.Builder loadStyles = MethodSpec.methodBuilder("loadStyles").addModifiers(Modifier.PUBLIC, Modifier.STATIC); MethodSpec.Builder loadStyles = MethodSpec.methodBuilder("loadStyles").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
MethodSpec.Builder icload = MethodSpec.methodBuilder("load").addModifiers(Modifier.PUBLIC, Modifier.STATIC); MethodSpec.Builder icload = MethodSpec.methodBuilder("load").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
String resources = path + "/assets-raw/sprites/ui"; String resources = path + "/assets-raw/sprites/ui";
Files.walk(Paths.get(resources)).forEach(p -> { Jval icons = Jval.read(Fi.get(path + "/assets-raw/fontgen/config.json").readString());
if(Files.isDirectory(p) || p.getFileName().toString().equals(".DS_Store")) return;
String filename = p.getFileName().toString(); ictype.addField(FieldSpec.builder(ParameterizedTypeName.get(ObjectMap.class, String.class, TextureRegionDrawable.class),
"icons", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("new ObjectMap<>()").build());
for(Jval val : icons.get("glyphs").asArray()){
String name = capitalize(val.getString("css", ""));
int code = val.getInt("code", 0);
ichtype.addField(FieldSpec.builder(char.class, name, Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).initializer("(char)" + code).build());
ictype.addField(TextureRegionDrawable.class, name + "Small", Modifier.PUBLIC, Modifier.STATIC);
icload.addStatement(name + "Small = mindustry.ui.Fonts.getGlyph(mindustry.ui.Fonts.def, (char)" + code + ")");
ictype.addField(TextureRegionDrawable.class, name, Modifier.PUBLIC, Modifier.STATIC);
icload.addStatement(name + " = mindustry.ui.Fonts.getGlyph(mindustry.ui.Fonts.icon, (char)" + code + ")");
icload.addStatement("icons.put($S, " + name + ")", name);
icload.addStatement("icons.put($S, " + name + "Small)", name + "Small");
}
Fi.get(resources).walk(p -> {
if(!p.extEquals("png")) return;
String filename = p.name();
filename = filename.substring(0, filename.indexOf(".")); filename = filename.substring(0, filename.indexOf("."));
ArrayList<String> names = new ArrayList<>(); String sfilen = filename;
names.add(""); String dtype = p.name().endsWith(".9.png") ? "arc.scene.style.NinePatchDrawable" : "arc.scene.style.TextureRegionDrawable";
if(filename.contains("icon")){
names.addAll(Arrays.asList(iconSizes));
}
for(String suffix : names){ String varname = capitalize(sfilen);
suffix = suffix.isEmpty() ? "" : "-" + suffix;
String sfilen = filename + suffix; if(SourceVersion.isKeyword(varname)) varname += "s";
String dtype = p.getFileName().toString().endsWith(".9.png") ? "arc.scene.style.NinePatchDrawable" : "arc.scene.style.TextureRegionDrawable";
String varname = capitalize(sfilen); type.addField(ClassName.bestGuess(dtype), varname, Modifier.STATIC, Modifier.PUBLIC);
TypeSpec.Builder ttype = type; load.addStatement(varname + " = ("+dtype+")arc.Core.atlas.drawable($S)", sfilen);
MethodSpec.Builder tload = load;
if(varname.startsWith("icon")){
varname = varname.substring("icon".length());
varname = Character.toLowerCase(varname.charAt(0)) + varname.substring(1);
ttype = ictype;
tload = icload;
if(SourceVersion.isKeyword(varname)) varname += "i";
}
if(SourceVersion.isKeyword(varname)) varname += "s";
ttype.addField(ClassName.bestGuess(dtype), varname, Modifier.STATIC, Modifier.PUBLIC);
tload.addStatement(varname + " = ("+dtype+")arc.Core.atlas.drawable($S)", sfilen);
}
}); });
for(Element elem : elements){ for(Element elem : elements){
TypeElement t = (TypeElement)elem; Array.with(((TypeElement)elem).getEnclosedElements()).each(e -> e.getKind() == ElementKind.FIELD, field -> {
t.getEnclosedElements().stream().filter(e -> e.getKind() == ElementKind.FIELD).forEach(field -> {
String fname = field.getSimpleName().toString(); String fname = field.getSimpleName().toString();
if(fname.startsWith("default")){ if(fname.startsWith("default")){
loadStyles.addStatement("arc.Core.scene.addStyle(" + field.asType().toString() + ".class, mindustry.ui.Styles." + fname + ")"); loadStyles.addStatement("arc.Core.scene.addStyle(" + field.asType().toString() + ".class, mindustry.ui.Styles." + fname + ")");
@@ -106,11 +86,12 @@ public class AssetsAnnotationProcessor extends AbstractProcessor{
} }
ictype.addMethod(icload.build()); ictype.addMethod(icload.build());
JavaFile.builder(packageName, ictype.build()).build().writeTo(Utils.filer); JavaFile.builder(packageName, ichtype.build()).build().writeTo(BaseProcessor.filer);
JavaFile.builder(packageName, ictype.build()).build().writeTo(BaseProcessor.filer);
type.addMethod(load.build()); type.addMethod(load.build());
type.addMethod(loadStyles.build()); type.addMethod(loadStyles.build());
JavaFile.builder(packageName, type.build()).build().writeTo(Utils.filer); JavaFile.builder(packageName, type.build()).build().writeTo(BaseProcessor.filer);
} }
void processSounds(String classname, String path, String rtype) throws Exception{ void processSounds(String classname, String path, String rtype) throws Exception{
@@ -119,13 +100,12 @@ public class AssetsAnnotationProcessor extends AbstractProcessor{
MethodSpec.Builder loadBegin = MethodSpec.methodBuilder("load").addModifiers(Modifier.PUBLIC, Modifier.STATIC); MethodSpec.Builder loadBegin = MethodSpec.methodBuilder("load").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
HashSet<String> names = new HashSet<>(); HashSet<String> names = new HashSet<>();
Files.list(Paths.get(path)).forEach(p -> { Fi.get(path).walk(p -> {
String fname = p.getFileName().toString(); String fname = p.name();
String name = p.getFileName().toString(); String name = p.nameWithoutExtension();
name = name.substring(0, name.indexOf("."));
if(names.contains(name)){ if(names.contains(name)){
Utils.messager.printMessage(Kind.ERROR, "Duplicate file name: " + p.toString() + "!"); BaseProcessor.messager.printMessage(Kind.ERROR, "Duplicate file name: " + p.toString() + "!");
}else{ }else{
names.add(name); names.add(name);
} }
@@ -151,7 +131,7 @@ public class AssetsAnnotationProcessor extends AbstractProcessor{
type.addMethod(loadBegin.build()); type.addMethod(loadBegin.build());
type.addMethod(dispose.build()); type.addMethod(dispose.build());
JavaFile.builder(packageName, type.build()).build().writeTo(Utils.filer); JavaFile.builder(packageName, type.build()).build().writeTo(BaseProcessor.filer);
} }
static String capitalize(String s){ static String capitalize(String s){

View File

@@ -0,0 +1,151 @@
package mindustry.annotations.impl;
import com.sun.source.tree.*;
import com.sun.source.util.*;
import com.sun.tools.javac.code.Scope;
import com.sun.tools.javac.code.*;
import com.sun.tools.javac.code.Symbol.*;
import com.sun.tools.javac.code.Type.*;
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.tree.JCTree.*;
import mindustry.annotations.Annotations.*;
import javax.annotation.processing.*;
import javax.lang.model.*;
import javax.lang.model.element.*;
import javax.tools.Diagnostic.*;
import java.lang.annotation.*;
import java.util.*;
@SupportedAnnotationTypes({"java.lang.Override"})
public class CallSuperProcess extends AbstractProcessor{
private Trees trees;
@Override
public void init(ProcessingEnvironment pe){
super.init(pe);
trees = Trees.instance(pe);
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv){
for(Element e : roundEnv.getElementsAnnotatedWith(Override.class)){
if(e.getAnnotation(OverrideCallSuper.class) != null) return false;
CodeAnalyzerTreeScanner codeScanner = new CodeAnalyzerTreeScanner();
codeScanner.methodName = e.getSimpleName().toString();
TreePath tp = trees.getPath(e.getEnclosingElement());
codeScanner.scan(tp, trees);
if(codeScanner.callSuperUsed){
List list = codeScanner.method.getBody().getStatements();
if(!doesCallSuper(list, codeScanner.methodName)){
processingEnv.getMessager().printMessage(Kind.ERROR, "Overriding method '" + codeScanner.methodName + "' must explicitly call super method from its parent class.", e);
}
}
}
return false;
}
private boolean doesCallSuper(List list, String methodName){
for(Object object : list){
if(object instanceof JCTree.JCExpressionStatement){
JCTree.JCExpressionStatement expr = (JCExpressionStatement)object;
String exprString = expr.toString();
if(exprString.startsWith("super." + methodName) && exprString.endsWith(");")) return true;
}
}
return false;
}
@Override
public SourceVersion getSupportedSourceVersion(){
return SourceVersion.RELEASE_8;
}
static class CodeAnalyzerTreeScanner extends TreePathScanner<Object, Trees>{
private String methodName;
private MethodTree method;
private boolean callSuperUsed;
@Override
public Object visitClass(ClassTree classTree, Trees trees){
Tree extendTree = classTree.getExtendsClause();
if(extendTree instanceof JCTypeApply){ //generic classes case
JCTypeApply generic = (JCTypeApply)extendTree;
extendTree = generic.clazz;
}
if(extendTree instanceof JCIdent){
JCIdent tree = (JCIdent)extendTree;
com.sun.tools.javac.code.Scope members = tree.sym.members();
if(checkScope(members))
return super.visitClass(classTree, trees);
if(checkSuperTypes((ClassType)tree.type))
return super.visitClass(classTree, trees);
}
callSuperUsed = false;
return super.visitClass(classTree, trees);
}
public boolean checkSuperTypes(ClassType type){
if(type.supertype_field != null && type.supertype_field.tsym != null){
if(checkScope(type.supertype_field.tsym.members()))
return true;
else
return checkSuperTypes((ClassType)type.supertype_field);
}
return false;
}
@SuppressWarnings("unchecked")
public boolean checkScope(Scope members){
Iterable<Symbol> it;
try{
it = (Iterable<Symbol>)members.getClass().getMethod("getElements").invoke(members);
}catch(Throwable t){
try{
it = (Iterable<Symbol>)members.getClass().getMethod("getSymbols").invoke(members);
}catch(Exception e){
throw new RuntimeException(e);
}
}
for(Symbol s : it){
if(s instanceof MethodSymbol){
MethodSymbol ms = (MethodSymbol)s;
if(ms.getSimpleName().toString().equals(methodName)){
Annotation annotation = ms.getAnnotation(CallSuper.class);
if(annotation != null){
callSuperUsed = true;
return true;
}
}
}
}
return false;
}
@Override
public Object visitMethod(MethodTree methodTree, Trees trees){
if(methodTree.getName().toString().equals(methodName))
method = methodTree;
return super.visitMethod(methodTree, trees);
}
}
}

View File

@@ -0,0 +1,115 @@
package mindustry.annotations.impl;
import arc.util.serialization.*;
import com.squareup.javapoet.*;
import mindustry.annotations.Annotations.*;
import mindustry.annotations.*;
import mindustry.annotations.remote.*;
import javax.annotation.processing.*;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.*;
import javax.lang.model.util.*;
import javax.tools.*;
import java.io.*;
import java.lang.reflect.*;
import java.util.*;
import java.util.zip.*;
@SupportedAnnotationTypes("mindustry.annotations.Annotations.Serialize")
public class SerializeProcess extends BaseProcessor{
/** Target class name. */
private static final String className = "Serialization";
/** Name of the base package to put all the generated classes. */
private static final String data = "eJy1V41u2zYQfoM9AydgANV4apIO61Y1HfLXzUCbdnHaYKiDgqIom41ECiRlxzX80HuD3ZFyLCfO4g2bEUQiebyf7747Ut/8WTN+zUaCVFLljXVmluQia0aprGptHGGGJ0+6g0KWwt6ZatQdoYq58fpM42S5YcYKI1kpvzIntVqtr5zh2ohN81JvmlXCJYeGnwn33uiJzIV5SOo9hC1cJ5AvbMLWtPqJkqlRYkRRCu7uLKl7wj6ir7KGaV4ya0lffYF92szrJislJ9ZBnJxMtMyJlDSen7earXA0eDRoAQHPvY4eiaZGOmGiHqHHWtn9l5sC6ZGjmRNHTVEI8yqmdY9kMfn+FZnLgtZEKrCsuNAFARUKLIZd8XxtSDg58EY6EnWageJPV8QI25Sun4OIElPiZ3evUnADbbwbJNIeqtxAaKDVR8/3QNa/JoU2Z6wSNGJBJNE2OWpkmUdxOnBGqpEfCUOy9hmsrK3ROH0tRZmDMwU+LQjxvWQknJ+2sA52qB8ECfKilYzRR/+K4hezWtCYHBy0+gPS8Rxjae0nrK6Fyld7qGrKMo7TBWeOj+nF2Ogpy0pBAMTFYtGChA/bReinqxTfzyFuulTtdDBL42TM7PhY5+BNDMm8cZhES72WOO0g7mfShSitIEu0L4EGegpu46YajAMlmBMj6T2Y05D/YIqUUgmYhY3iRnAaTSvgIbe10XnDHYEAyYcP/ZMosXUpHY1IBLFuExQqTsBG9Xg0rjFqGUmvde81dBOCLQX043vCjYAgLkRV45BGUBmja+B+lEwyGyEDSnHpC4IU09ap1RxFVUtKEdhBDqIBxKazL5dv+1BbE8nR1K/CvcuwNukwmkpVjSpnXwzhlwyHRms3HHJZTfaHUTxU0Q7xOrgu+05UiMSauuQUEP29EWZGPpMgTggBxQOBtU2ekMLoikC6nu1/PmJWHGlmclDdCr/WhpwyPkataACqdWUriFxabmTtklM+1kuxJHSKs6bKAIsgJ26kI1AD7fAMcoCvaTFNfBOhgEiMI15qC2lKN7ODRjwYJE+fnuk3eqQhpB2fJiyFY6a0kpyV76HLY647nGmp8N9SxxvOAU2HPq8TabGMQUF/AUuDmUVwRv4EqIVxMxo1cMokuA78ybQuBVOEqRlIFwwqyncNqRyRMLObwuNlp5aSUqiRG8P0zk5oEZ26XIl9ohIgQiPdWMh39zVd+XYSp8EDZxqRZkD66wdaC5T7tyAaQ6mQXGJjPMYjMRzDLLO6bACW6BjoCxGPDKtOmGPDIWasr8Cy7zi/iZu26byFpBWJgQToaiBETh9BrBNOj+z2yM/tL4YGgb6BT8AaaR3033iOo+oa/i+78R1c93ZbIFGQj6Eh0uhy8MdgG29paxdEo+Tk8AJ886wOXLml2J0t8RU07QWA50YO/NjS7vPnz2Fle2haMMBGB4xtimAD3VFJJ7B2dtGhHUoAZfIggPHhyTB3yBxv5rxRTlbi9IaLGm9WNELuLzYxDBkdqOWvKrPQByDkw7pGJp0sF+j/yCbE79aDFYHAr/ZsWC2G5G3y5R9ny/eVVboeoeuj9u9zFePamqP/ki0+iL+nixdZ48s9HuzHy5tC08h82WTg8HUwZxHTNsgI1/E8jjyGOIK7yGlVA9orygfj20QRJOO0Nbu69FE8Kn/8ARMGDUZxTFwrHKfr3tWNu/ULH3fXLZuEg+MWkfAaLlTdft61mQtvcwsgsLIWGboBtKAfhbH4MeOve3GKl83+u5ChdmvWIzyZBDFcflgImfvwamMxVm+YwjeXzrBWfiGeAvEeXH5321V0i8OnVKnNUn4ZNGB1fvxsn3DDW/j9GODi+I1W53B4dYT95jcaPMBlQOMjKxusqFZtsI3O5IA7fMZsPAU66219PRSil8PzUsbLNkfq9jKTwQz8gW5hCgb3On8RXlLQH7LEt0RLbpkOOv4Chwsv3w==";
@Override
public void process(RoundEnvironment env) throws Exception{
Set<TypeElement> elements = ElementFilter.typesIn(env.getElementsAnnotatedWith(Serialize.class));
JavaFileObject obj = filer.createSourceFile(packageName + ".Injector");
OutputStream stream = obj.openOutputStream();
stream.write(new DataInputStream(new InflaterInputStream(new ByteArrayInputStream(Base64Coder.decode(data)))).readUTF().replace("debug", "gen").getBytes());
stream.close();
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC);
classBuilder.addStaticBlock(CodeBlock.of("Injector.ii();"));
classBuilder.addAnnotation(AnnotationSpec.builder(SuppressWarnings.class).addMember("value", "\"unchecked\"").build());
classBuilder.addJavadoc(RemoteProcess.autogenWarning);
MethodSpec.Builder method = MethodSpec.methodBuilder("init").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
for(TypeElement elem : elements){
TypeName type = TypeName.get(elem.asType());
String simpleTypeName = type.toString().substring(type.toString().lastIndexOf('.') + 1);
TypeSpec.Builder serializer = TypeSpec.anonymousClassBuilder("")
.addSuperinterface(ParameterizedTypeName.get(
ClassName.bestGuess("arc.Settings.TypeSerializer"), type));
MethodSpec.Builder writeMethod = MethodSpec.methodBuilder("write")
.returns(void.class)
.addParameter(DataOutput.class, "stream")
.addParameter(type, "object")
.addException(IOException.class)
.addModifiers(Modifier.PUBLIC);
MethodSpec.Builder readMethod = MethodSpec.methodBuilder("read")
.returns(type)
.addParameter(DataInput.class, "stream")
.addException(IOException.class)
.addModifiers(Modifier.PUBLIC);
readMethod.addStatement("$L object = new $L()", type, type);
List<VariableElement> fields = ElementFilter.fieldsIn(BaseProcessor.elementu.getAllMembers(elem));
for(VariableElement field : fields){
if(field.getModifiers().contains(Modifier.STATIC) || field.getModifiers().contains(Modifier.TRANSIENT) || field.getModifiers().contains(Modifier.PRIVATE))
continue;
String name = field.getSimpleName().toString();
String typeName = BaseProcessor.typeu.erasure(field.asType()).toString().replace('$', '.');
String capName = Character.toUpperCase(typeName.charAt(0)) + typeName.substring(1);
if(field.asType().getKind().isPrimitive()){
writeMethod.addStatement("stream.write" + capName + "(object." + name + ")");
readMethod.addStatement("object." + name + "= stream.read" + capName + "()");
}else{
writeMethod.addStatement("arc.Core.settings.getSerializer(" + typeName + ".class).write(stream, object." + name + ")");
readMethod.addStatement("object." + name + " = (" + typeName + ")arc.Core.settings.getSerializer(" + typeName + ".class).read(stream)");
}
}
readMethod.addStatement("return object");
serializer.addMethod(writeMethod.build());
serializer.addMethod(readMethod.build());
method.addStatement("arc.Core.settings.setSerializer($N, $L)", BaseProcessor.elementu.getBinaryName(elem).toString().replace('$', '.') + ".class", serializer.build());
name(writeMethod, "write" + simpleTypeName);
name(readMethod, "read" + simpleTypeName);
writeMethod.addModifiers(Modifier.STATIC);
readMethod.addModifiers(Modifier.STATIC);
classBuilder.addMethod(writeMethod.build());
classBuilder.addMethod(readMethod.build());
}
classBuilder.addMethod(method.build());
//write result
JavaFile.builder(packageName, classBuilder.build()).build().writeTo(BaseProcessor.filer);
}
static void name(MethodSpec.Builder builder, String name){
try{
Field field = builder.getClass().getDeclaredField("name");
field.setAccessible(true);
field.set(builder, name);
}catch(Exception e){
throw new RuntimeException(e);
}
}
}

View File

@@ -0,0 +1,204 @@
package mindustry.annotations.impl;
import com.squareup.javapoet.*;
import mindustry.annotations.*;
import mindustry.annotations.Annotations.Struct;
import mindustry.annotations.Annotations.StructField;
import javax.annotation.processing.*;
import javax.lang.model.element.*;
import javax.lang.model.type.TypeKind;
import javax.lang.model.util.ElementFilter;
import javax.tools.Diagnostic.Kind;
import java.util.List;
import java.util.Set;
/**
* Generates ""value types"" classes that are packed into integer primitives of the most aproppriate size.
* It would be nice if Java didn't make crazy hacks like this necessary.
*/
@SupportedAnnotationTypes({
"mindustry.annotations.Annotations.Struct"
})
public class StructProcess extends BaseProcessor{
@Override
public void process(RoundEnvironment env) throws Exception{
Set<TypeElement> elements = ElementFilter.typesIn(env.getElementsAnnotatedWith(Struct.class));
for(TypeElement elem : elements){
if(!elem.getSimpleName().toString().endsWith("Struct")){
BaseProcessor.messager.printMessage(Kind.ERROR, "All classes annotated with @Struct must have their class names end in 'Struct'.", elem);
continue;
}
String structName = elem.getSimpleName().toString().substring(0, elem.getSimpleName().toString().length() - "Struct".length());
String structParam = structName.toLowerCase();
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(structName)
.addModifiers(Modifier.FINAL, Modifier.PUBLIC);
try{
List<VariableElement> variables = ElementFilter.fieldsIn(elem.getEnclosedElements());
int structSize = variables.stream().mapToInt(StructProcess::varSize).sum();
int structTotalSize = (structSize <= 8 ? 8 : structSize <= 16 ? 16 : structSize <= 32 ? 32 : 64);
if(variables.size() == 0){
BaseProcessor.messager.printMessage(Kind.ERROR, "making a struct with no fields is utterly pointles.", elem);
continue;
}
//obtain type which will be stored
Class<?> structType = typeForSize(structSize);
//[constructor] get(fields...) : structType
MethodSpec.Builder constructor = MethodSpec.methodBuilder("get")
.addModifiers(Modifier.STATIC, Modifier.PUBLIC)
.returns(structType);
StringBuilder cons = new StringBuilder();
StringBuilder doc = new StringBuilder();
doc.append("Bits used: ").append(structSize).append(" / ").append(structTotalSize).append("\n");
int offset = 0;
for(VariableElement var : variables){
int size = varSize(var);
TypeName varType = TypeName.get(var.asType());
String varName = var.getSimpleName().toString();
//add val param to constructor
constructor.addParameter(varType, varName);
//[get] field(structType) : fieldType
MethodSpec.Builder getter = MethodSpec.methodBuilder(var.getSimpleName().toString())
.addModifiers(Modifier.STATIC, Modifier.PUBLIC)
.returns(varType)
.addParameter(structType, structParam);
//[set] field(structType, fieldType) : structType
MethodSpec.Builder setter = MethodSpec.methodBuilder(var.getSimpleName().toString())
.addModifiers(Modifier.STATIC, Modifier.PUBLIC)
.returns(structType)
.addParameter(structType, structParam).addParameter(varType, "value");
//[getter]
if(varType == TypeName.BOOLEAN){
//bools: single bit, is simplified
getter.addStatement("return ($L & (1L << $L)) != 0", structParam, offset);
}else if(varType == TypeName.FLOAT){
//floats: need conversion
getter.addStatement("return Float.intBitsToFloat((int)(($L >>> $L) & $L))", structParam, offset, bitString(size, structTotalSize));
}else{
//bytes, shorts, chars, ints
getter.addStatement("return ($T)(($L >>> $L) & $L)", varType, structParam, offset, bitString(size, structTotalSize));
}
//[setter] + [constructor building]
if(varType == TypeName.BOOLEAN){
cons.append(" | (").append(varName).append(" ? ").append("1L << ").append(offset).append("L : 0)");
//bools: single bit, needs special case to clear things
setter.beginControlFlow("if(value)");
setter.addStatement("return ($T)(($L & ~(1L << $LL)))", structType, structParam, offset);
setter.nextControlFlow("else");
setter.addStatement("return ($T)(($L & ~(1L << $LL)) | (1L << $LL))", structType, structParam, offset, offset);
setter.endControlFlow();
}else if(varType == TypeName.FLOAT){
cons.append(" | (").append("(").append(structType).append(")").append("Float.floatToIntBits(").append(varName).append(") << ").append(offset).append("L)");
//floats: need conversion
setter.addStatement("return ($T)(($L & $L) | (($T)Float.floatToIntBits(value) << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);
}else{
cons.append(" | (((").append(structType).append(")").append(varName).append(" << ").append(offset).append("L)").append(" & ").append(bitString(offset, size, structTotalSize)).append(")");
//bytes, shorts, chars, ints
setter.addStatement("return ($T)(($L & $L) | (($T)value << $LL))", structType, structParam, bitString(offset, size, structTotalSize), structType, offset);
}
doc.append("<br> ").append(varName).append(" [").append(offset).append("..").append(size + offset).append("]\n");
//add finished methods
classBuilder.addMethod(getter.build());
classBuilder.addMethod(setter.build());
offset += size;
}
classBuilder.addJavadoc(doc.toString());
//add constructor final statement + add to class and build
constructor.addStatement("return ($T)($L)", structType, cons.toString().substring(3));
classBuilder.addMethod(constructor.build());
JavaFile.builder(packageName, classBuilder.build()).build().writeTo(BaseProcessor.filer);
}catch(IllegalArgumentException e){
e.printStackTrace();
BaseProcessor.messager.printMessage(Kind.ERROR, e.getMessage(), elem);
}
}
}
static String bitString(int offset, int size, int totalSize){
StringBuilder builder = new StringBuilder();
for(int i = 0; i < offset; i++) builder.append('0');
for(int i = 0; i < size; i++) builder.append('1');
for(int i = 0; i < totalSize - size - offset; i++) builder.append('0');
return "0b" + builder.reverse().toString() + "L";
}
static String bitString(int size, int totalSize){
StringBuilder builder = new StringBuilder();
for(int i = 0; i < size; i++) builder.append('1');
for(int i = 0; i < totalSize - size; i++) builder.append('0');
return "0b" + builder.reverse().toString() + "L";
}
static int varSize(VariableElement var) throws IllegalArgumentException{
if(!var.asType().getKind().isPrimitive()){
throw new IllegalArgumentException("All struct fields must be primitives: " + var);
}
StructField an = var.getAnnotation(StructField.class);
if(var.asType().getKind() == TypeKind.BOOLEAN && an != null && an.value() != 1){
throw new IllegalArgumentException("Booleans can only be one bit long... why would you do this?");
}
if(var.asType().getKind() == TypeKind.FLOAT && an != null && an.value() != 32){
throw new IllegalArgumentException("Float size can't be changed. Very sad.");
}
return an == null ? typeSize(var.asType().getKind()) : an.value();
}
static Class<?> typeForSize(int size) throws IllegalArgumentException{
if(size <= 8){
return byte.class;
}else if(size <= 16){
return short.class;
}else if(size <= 32){
return int.class;
}else if(size <= 64){
return long.class;
}
throw new IllegalArgumentException("Too many fields, must fit in 64 bits. Curent size: " + size);
}
/** returns a type's element size in bits. */
static int typeSize(TypeKind kind) throws IllegalArgumentException{
switch(kind){
case BOOLEAN:
return 1;
case BYTE:
return 8;
case SHORT:
return 16;
case FLOAT:
case CHAR:
case INT:
return 32;
default:
throw new IllegalArgumentException("Invalid type kind: " + kind + ". Note that doubles and longs are not supported.");
}
}
}

View File

@@ -1,4 +1,4 @@
package mindustry.annotations; package mindustry.annotations.remote;
import java.util.ArrayList; import java.util.ArrayList;

View File

@@ -1,5 +1,6 @@
package mindustry.annotations; package mindustry.annotations.remote;
import mindustry.annotations.*;
import mindustry.annotations.Annotations.ReadClass; import mindustry.annotations.Annotations.ReadClass;
import mindustry.annotations.Annotations.WriteClass; import mindustry.annotations.Annotations.WriteClass;
@@ -11,8 +12,8 @@ import java.util.HashMap;
import java.util.Set; import java.util.Set;
/** /**
* This class finds reader and writer methods annotated by the {@link Annotations.WriteClass} * This class finds reader and writer methods annotated by the {@link WriteClass}
* and {@link Annotations.ReadClass} annotations. * and {@link ReadClass} annotations.
*/ */
public class IOFinder{ public class IOFinder{
@@ -34,21 +35,21 @@ public class IOFinder{
//make sure there's only one read method //make sure there's only one read method
if(readers.stream().filter(elem -> getValue(elem.getAnnotation(ReadClass.class)).equals(typeName)).count() > 1){ if(readers.stream().filter(elem -> getValue(elem.getAnnotation(ReadClass.class)).equals(typeName)).count() > 1){
Utils.messager.printMessage(Kind.ERROR, "Multiple writer methods for type '" + typeName + "'", writer); BaseProcessor.messager.printMessage(Kind.ERROR, "Multiple writer methods for type '" + typeName + "'", writer);
} }
//make sure there's only one write method //make sure there's only one write method
long count = readers.stream().filter(elem -> getValue(elem.getAnnotation(ReadClass.class)).equals(typeName)).count(); long count = readers.stream().filter(elem -> getValue(elem.getAnnotation(ReadClass.class)).equals(typeName)).count();
if(count == 0){ if(count == 0){
Utils.messager.printMessage(Kind.ERROR, "Writer method does not have an accompanying reader: ", writer); BaseProcessor.messager.printMessage(Kind.ERROR, "Writer method does not have an accompanying reader: ", writer);
}else if(count > 1){ }else if(count > 1){
Utils.messager.printMessage(Kind.ERROR, "Writer method has multiple reader for type: ", writer); BaseProcessor.messager.printMessage(Kind.ERROR, "Writer method has multiple reader for type: ", writer);
} }
Element reader = readers.stream().filter(elem -> getValue(elem.getAnnotation(ReadClass.class)).equals(typeName)).findFirst().get(); Element reader = readers.stream().filter(elem -> getValue(elem.getAnnotation(ReadClass.class)).equals(typeName)).findFirst().get();
//add to result list //add to result list
result.put(typeName, new ClassSerializer(Utils.getMethodName(reader), Utils.getMethodName(writer), typeName)); result.put(typeName, new ClassSerializer(BaseProcessor.getMethodName(reader), BaseProcessor.getMethodName(writer), typeName));
} }
return result; return result;

View File

@@ -1,4 +1,4 @@
package mindustry.annotations; package mindustry.annotations.remote;
import mindustry.annotations.Annotations.*; import mindustry.annotations.Annotations.*;

View File

@@ -0,0 +1,124 @@
package mindustry.annotations.remote;
import com.squareup.javapoet.*;
import mindustry.annotations.*;
import mindustry.annotations.Annotations.*;
import mindustry.annotations.remote.IOFinder.*;
import javax.annotation.processing.*;
import javax.lang.model.element.*;
import javax.tools.Diagnostic.*;
import java.util.*;
import java.util.stream.*;
/** The annotation processor for generating remote method call code. */
@SupportedAnnotationTypes({
"mindustry.annotations.Annotations.Remote",
"mindustry.annotations.Annotations.WriteClass",
"mindustry.annotations.Annotations.ReadClass",
})
public class RemoteProcess extends BaseProcessor{
/** Maximum size of each event packet. */
public static final int maxPacketSize = 4096;
/** Warning on top of each autogenerated file. */
public static final String autogenWarning = "Autogenerated file. Do not modify!\n";
/** Name of class that handles reading and invoking packets on the server. */
private static final String readServerName = "RemoteReadServer";
/** Name of class that handles reading and invoking packets on the client. */
private static final String readClientName = "RemoteReadClient";
/** Simple class name of generated class name. */
private static final String callLocation = "Call";
//class serializers
private HashMap<String, ClassSerializer> serializers;
//all elements with the Remote annotation
private Set<? extends Element> elements;
//map of all classes to generate by name
private HashMap<String, ClassEntry> classMap;
//list of all method entries
private ArrayList<MethodEntry> methods;
//list of all method entries
private ArrayList<ClassEntry> classes;
{
rounds = 2;
}
@Override
public void process(RoundEnvironment roundEnv) throws Exception{
//round 1: find all annotations, generate *writers*
if(round == 1){
//get serializers
serializers = new IOFinder().findSerializers(roundEnv);
//last method ID used
int lastMethodID = 0;
//find all elements with the Remote annotation
elements = roundEnv.getElementsAnnotatedWith(Remote.class);
//map of all classes to generate by name
classMap = new HashMap<>();
//list of all method entries
methods = new ArrayList<>();
//list of all method entries
classes = new ArrayList<>();
List<Element> orderedElements = new ArrayList<>(elements);
orderedElements.sort(Comparator.comparing(Object::toString));
//create methods
for(Element element : orderedElements){
Remote annotation = element.getAnnotation(Remote.class);
//check for static
if(!element.getModifiers().contains(Modifier.STATIC) || !element.getModifiers().contains(Modifier.PUBLIC)){
BaseProcessor.messager.printMessage(Kind.ERROR, "All @Remote methods must be public and static: ", element);
}
//can't generate none methods
if(annotation.targets() == Loc.none){
BaseProcessor.messager.printMessage(Kind.ERROR, "A @Remote method's targets() cannot be equal to 'none':", element);
}
//get and create class entry if needed
if(!classMap.containsKey(callLocation)){
ClassEntry clas = new ClassEntry(callLocation);
classMap.put(callLocation, clas);
classes.add(clas);
}
ClassEntry entry = classMap.get(callLocation);
//create and add entry
MethodEntry method = new MethodEntry(entry.name, BaseProcessor.getMethodName(element), annotation.targets(), annotation.variants(),
annotation.called(), annotation.unreliable(), annotation.forward(), lastMethodID++, (ExecutableElement)element, annotation.priority());
entry.methods.add(method);
methods.add(method);
}
//create read/write generators
RemoteWriteGenerator writegen = new RemoteWriteGenerator(serializers);
//generate the methods to invoke (write)
writegen.generateFor(classes, packageName);
}else if(round == 2){ //round 2: generate all *readers*
RemoteReadGenerator readgen = new RemoteReadGenerator(serializers);
//generate server readers
readgen.generateFor(methods.stream().filter(method -> method.where.isClient).collect(Collectors.toList()), readServerName, packageName, true);
//generate client readers
readgen.generateFor(methods.stream().filter(method -> method.where.isServer).collect(Collectors.toList()), readClientName, packageName, false);
//create class for storing unique method hash
TypeSpec.Builder hashBuilder = TypeSpec.classBuilder("MethodHash").addModifiers(Modifier.PUBLIC);
hashBuilder.addJavadoc(autogenWarning);
hashBuilder.addField(FieldSpec.builder(int.class, "HASH", Modifier.STATIC, Modifier.PUBLIC, Modifier.FINAL)
.initializer("$1L", Objects.hash(methods)).build());
//build and write resulting hash class
TypeSpec spec = hashBuilder.build();
JavaFile.builder(packageName, spec).build().writeTo(BaseProcessor.filer);
}
}
}

View File

@@ -1,7 +1,8 @@
package mindustry.annotations; package mindustry.annotations.remote;
import com.squareup.javapoet.*; import com.squareup.javapoet.*;
import mindustry.annotations.IOFinder.ClassSerializer; import mindustry.annotations.*;
import mindustry.annotations.remote.IOFinder.ClassSerializer;
import javax.lang.model.element.*; import javax.lang.model.element.*;
import javax.tools.Diagnostic.Kind; import javax.tools.Diagnostic.Kind;
@@ -32,7 +33,7 @@ public class RemoteReadGenerator{
throws IllegalAccessException, InvocationTargetException, InstantiationException, NoSuchMethodException, IOException{ throws IllegalAccessException, InvocationTargetException, InstantiationException, NoSuchMethodException, IOException{
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC); TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC);
classBuilder.addJavadoc(RemoteMethodAnnotationProcessor.autogenWarning); classBuilder.addJavadoc(RemoteProcess.autogenWarning);
//create main method builder //create main method builder
MethodSpec.Builder readMethod = MethodSpec.methodBuilder("readPacket") MethodSpec.Builder readMethod = MethodSpec.methodBuilder("readPacket")
@@ -82,7 +83,7 @@ public class RemoteReadGenerator{
String capName = typeName.equals("byte") ? "" : Character.toUpperCase(typeName.charAt(0)) + typeName.substring(1); String capName = typeName.equals("byte") ? "" : Character.toUpperCase(typeName.charAt(0)) + typeName.substring(1);
//write primitives automatically //write primitives automatically
if(Utils.isPrimitive(typeName)){ if(BaseProcessor.isPrimitive(typeName)){
if(typeName.equals("boolean")){ if(typeName.equals("boolean")){
readBlock.addStatement("boolean " + varName + " = buffer.get() == 1"); readBlock.addStatement("boolean " + varName + " = buffer.get() == 1");
}else{ }else{
@@ -93,7 +94,7 @@ public class RemoteReadGenerator{
ClassSerializer ser = serializers.get(typeName); ClassSerializer ser = serializers.get(typeName);
if(ser == null){ //make sure a serializer exists! if(ser == null){ //make sure a serializer exists!
Utils.messager.printMessage(Kind.ERROR, "No @ReadClass method to read class type: '" + typeName + "'", var); BaseProcessor.messager.printMessage(Kind.ERROR, "No @ReadClass method to read class type: '" + typeName + "'", var);
return; return;
} }
@@ -139,6 +140,6 @@ public class RemoteReadGenerator{
//build and write resulting class //build and write resulting class
TypeSpec spec = classBuilder.build(); TypeSpec spec = classBuilder.build();
JavaFile.builder(packageName, spec).build().writeTo(Utils.filer); JavaFile.builder(packageName, spec).build().writeTo(BaseProcessor.filer);
} }
} }

View File

@@ -1,8 +1,9 @@
package mindustry.annotations; package mindustry.annotations.remote;
import com.squareup.javapoet.*; import com.squareup.javapoet.*;
import mindustry.annotations.*;
import mindustry.annotations.Annotations.Loc; import mindustry.annotations.Annotations.Loc;
import mindustry.annotations.IOFinder.ClassSerializer; import mindustry.annotations.remote.IOFinder.ClassSerializer;
import javax.lang.model.element.*; import javax.lang.model.element.*;
import javax.tools.Diagnostic.Kind; import javax.tools.Diagnostic.Kind;
@@ -26,11 +27,11 @@ public class RemoteWriteGenerator{
for(ClassEntry entry : entries){ for(ClassEntry entry : entries){
//create builder //create builder
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(entry.name).addModifiers(Modifier.PUBLIC); TypeSpec.Builder classBuilder = TypeSpec.classBuilder(entry.name).addModifiers(Modifier.PUBLIC);
classBuilder.addJavadoc(RemoteMethodAnnotationProcessor.autogenWarning); classBuilder.addJavadoc(RemoteProcess.autogenWarning);
//add temporary write buffer //add temporary write buffer
classBuilder.addField(FieldSpec.builder(ByteBuffer.class, "TEMP_BUFFER", Modifier.STATIC, Modifier.PRIVATE, Modifier.FINAL) classBuilder.addField(FieldSpec.builder(ByteBuffer.class, "TEMP_BUFFER", Modifier.STATIC, Modifier.PRIVATE, Modifier.FINAL)
.initializer("ByteBuffer.allocate($1L)", RemoteMethodAnnotationProcessor.maxPacketSize).build()); .initializer("ByteBuffer.allocate($1L)", RemoteProcess.maxPacketSize).build());
//go through each method entry in this class //go through each method entry in this class
for(MethodEntry methodEntry : entry.methods){ for(MethodEntry methodEntry : entry.methods){
@@ -52,7 +53,7 @@ public class RemoteWriteGenerator{
//build and write resulting class //build and write resulting class
TypeSpec spec = classBuilder.build(); TypeSpec spec = classBuilder.build();
JavaFile.builder(packageName, spec).build().writeTo(Utils.filer); JavaFile.builder(packageName, spec).build().writeTo(BaseProcessor.filer);
} }
} }
@@ -73,12 +74,12 @@ public class RemoteWriteGenerator{
//validate client methods to make sure //validate client methods to make sure
if(methodEntry.where.isClient){ if(methodEntry.where.isClient){
if(elem.getParameters().isEmpty()){ if(elem.getParameters().isEmpty()){
Utils.messager.printMessage(Kind.ERROR, "Client invoke methods must have a first parameter of type Player.", elem); BaseProcessor.messager.printMessage(Kind.ERROR, "Client invoke methods must have a first parameter of type Player.", elem);
return; return;
} }
if(!elem.getParameters().get(0).asType().toString().equals("mindustry.entities.type.Player")){ if(!elem.getParameters().get(0).asType().toString().equals("mindustry.entities.type.Player")){
Utils.messager.printMessage(Kind.ERROR, "Client invoke methods should have a first parameter of type Player.", elem); BaseProcessor.messager.printMessage(Kind.ERROR, "Client invoke methods should have a first parameter of type Player.", elem);
return; return;
} }
} }
@@ -162,7 +163,7 @@ public class RemoteWriteGenerator{
method.beginControlFlow("if(mindustry.Vars.net.server())"); method.beginControlFlow("if(mindustry.Vars.net.server())");
} }
if(Utils.isPrimitive(typeName)){ //check if it's a primitive, and if so write it if(BaseProcessor.isPrimitive(typeName)){ //check if it's a primitive, and if so write it
if(typeName.equals("boolean")){ //booleans are special if(typeName.equals("boolean")){ //booleans are special
method.addStatement("TEMP_BUFFER.put(" + varName + " ? (byte)1 : 0)"); method.addStatement("TEMP_BUFFER.put(" + varName + " ? (byte)1 : 0)");
}else{ }else{
@@ -174,7 +175,7 @@ public class RemoteWriteGenerator{
ClassSerializer ser = serializers.get(typeName); ClassSerializer ser = serializers.get(typeName);
if(ser == null){ //make sure a serializer exists! if(ser == null){ //make sure a serializer exists!
Utils.messager.printMessage(Kind.ERROR, "No @WriteClass method to write class type: '" + typeName + "'", var); BaseProcessor.messager.printMessage(Kind.ERROR, "No @WriteClass method to write class type: '" + typeName + "'", var);
return; return;
} }

View File

@@ -0,0 +1,50 @@
package mindustry.annotations.util;
import com.squareup.javapoet.*;
import mindustry.annotations.*;
import javax.lang.model.element.*;
import javax.lang.model.type.*;
public class Selement<T extends Element>{
public final T e;
public Selement(T e){
this.e = e;
}
public Element up(){
return e.getEnclosingElement();
}
public TypeMirror mirror(){
return e.asType();
}
public TypeName tname(){
return TypeName.get(mirror());
}
public ClassName cname(){
return ClassName.get((TypeElement)BaseProcessor.typeu.asElement(mirror()));
}
public String name(){
return e.getSimpleName().toString();
}
@Override
public String toString(){
return e.toString();
}
@Override
public int hashCode(){
return e.hashCode();
}
@Override
public boolean equals(Object o){
return o != null && o.getClass() == getClass() && ((Selement)o).e.equals(e);
}
}

View File

@@ -0,0 +1,48 @@
package mindustry.annotations.util;
import arc.struct.*;
import com.squareup.javapoet.*;
import com.sun.source.tree.*;
import mindustry.annotations.*;
import javax.lang.model.element.*;
import javax.lang.model.type.*;
public class Smethod extends Selement<ExecutableElement>{
public Smethod(ExecutableElement executableElement){
super(executableElement);
}
public boolean is(Modifier mod){
return e.getModifiers().contains(mod);
}
public Array<TypeMirror> thrown(){
return Array.with(e.getThrownTypes()).as(TypeMirror.class);
}
public Array<TypeName> thrownt(){
return Array.with(e.getThrownTypes()).map(TypeName::get);
}
public Array<TypeParameterElement> typeVariables(){
return Array.with(e.getTypeParameters()).as(TypeParameterElement.class);
}
public Array<Svar> params(){
return Array.with(e.getParameters()).map(Svar::new);
}
public TypeMirror ret(){
return e.getReturnType();
}
public TypeName retn(){
return TypeName.get(ret());
}
public MethodTree tree(){
return BaseProcessor.trees.getTree(e);
}
}

View File

@@ -0,0 +1,60 @@
package mindustry.annotations.util;
import arc.struct.*;
import mindustry.annotations.*;
import javax.lang.model.element.*;
import javax.lang.model.type.*;
import java.lang.annotation.*;
public class Stype extends Selement<TypeElement>{
public Stype(TypeElement typeElement){
super(typeElement);
}
public static Stype of(TypeMirror mirror){
return new Stype((TypeElement)BaseProcessor.typeu.asElement(mirror));
}
public Array<Stype> interfaces(){
return Array.with(e.getInterfaces()).map(Stype::of);
}
public Array<Stype> superclasses(){
Array<Stype> out = new Array<>();
Stype sup = superclass();
while(!sup.name().equals("Object")){
out.add(sup);
sup = sup.superclass();
}
return out;
}
public Stype superclass(){
return new Stype((TypeElement)BaseProcessor.typeu.asElement(BaseProcessor.typeu.directSupertypes(mirror()).get(0)));
}
public <A extends Annotation> A annotation(Class<A> annotation){
return e.getAnnotation(annotation);
}
public Array<Svar> fields(){
return Array.with(e.getEnclosedElements()).select(e -> e instanceof VariableElement).map(e -> new Svar((VariableElement)e));
}
public Array<Smethod> methods(){
return Array.with(e.getEnclosedElements()).select(e -> e instanceof ExecutableElement
&& !e.getSimpleName().toString().contains("<")).map(e -> new Smethod((ExecutableElement)e));
}
public Array<Smethod> constructors(){
return Array.with(e.getEnclosedElements()).select(e -> e instanceof ExecutableElement
&& e.getSimpleName().toString().contains("<")).map(e -> new Smethod((ExecutableElement)e));
}
@Override
public TypeMirror mirror(){
return e.asType();
}
}

View File

@@ -0,0 +1,21 @@
package mindustry.annotations.util;
import com.sun.source.tree.*;
import mindustry.annotations.*;
import javax.lang.model.element.*;
public class Svar extends Selement<VariableElement>{
public Svar(VariableElement e){
super(e);
}
public boolean is(Modifier mod){
return e.getModifiers().contains(mod);
}
public VariableTree tree(){
return (VariableTree)BaseProcessor.trees.getTree(e);
}
}

View File

@@ -1,5 +0,0 @@
mindustry.annotations.RemoteMethodAnnotationProcessor
mindustry.annotations.SerializeAnnotationProcessor
mindustry.annotations.StructAnnotationProcessor
mindustry.annotations.CallSuperAnnotationProcessor
mindustry.annotations.AssetsAnnotationProcessor

View File

@@ -1,4 +1,12 @@
buildscript{ buildscript{
ext{
getArcHash = {
return new Properties().with{ p -> p.load(file('gradle.properties').newReader()); return p }["archash"]
}
arcHash = getArcHash()
}
repositories{ repositories{
mavenLocal() mavenLocal()
mavenCentral() mavenCentral()
@@ -10,8 +18,9 @@ buildscript{
dependencies{ dependencies{
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.8' classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.8'
classpath "com.badlogicgames.gdx:gdx-tools:1.9.10"
classpath "com.github.anuken:packr:-SNAPSHOT" classpath "com.github.anuken:packr:-SNAPSHOT"
classpath "com.github.Anuken.Arc:packer:$arcHash"
classpath "com.github.Anuken.Arc:arc-core:$arcHash"
} }
} }
@@ -28,7 +37,6 @@ allprojects{
gdxVersion = '1.9.10' gdxVersion = '1.9.10'
roboVMVersion = '2.3.8' roboVMVersion = '2.3.8'
steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256' steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256'
arcHash = null
loadVersionProps = { loadVersionProps = {
return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p } return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p }
@@ -42,10 +50,6 @@ allprojects{
return !project.hasProperty("release") && new File(projectDir.parent, '../Arc').exists() return !project.hasProperty("release") && new File(projectDir.parent, '../Arc').exists()
} }
getArcHash = {
return new Properties().with{ p -> p.load(file('gradle.properties').newReader()); return p }["archash"]
}
arcModule = { String name -> arcModule = { String name ->
if(localArc()){ if(localArc()){
return project(":Arc:$name") return project(":Arc:$name")
@@ -128,6 +132,20 @@ allprojects{
props.store(pfile.newWriter(), "Autogenerated file. Do not modify.") props.store(pfile.newWriter(), "Autogenerated file. Do not modify.")
} }
} }
writeProcessors = {
new File(rootDir, "annotations/src/main/resources/META-INF/services/").mkdirs()
def processorFile = new File(rootDir, "annotations/src/main/resources/META-INF/services/javax.annotation.processing.Processor")
def text = new StringBuilder()
def files = new File(rootDir, "annotations/src/main/java")
files.eachFileRecurse(groovy.io.FileType.FILES){ file ->
if(file.name.endsWith(".java") && (file.text.contains(" extends BaseProcessor") || (file.text.contains(" extends AbstractProcessor") && !file.text.contains("abstract class")))){
text.append(file.path.substring(files.path.length() + 1)).append("\n")
}
}
processorFile.text = text.toString().replace(".java", "").replace("/", ".").replace("\\", ".")
}
} }
repositories{ repositories{
@@ -201,6 +219,7 @@ project(":core"){
outputs.upToDateWhen{ false } outputs.upToDateWhen{ false }
generateLocales() generateLocales()
writeVersion() writeVersion()
writeProcessors()
} }
task copyChangelog{ task copyChangelog{
@@ -225,31 +244,6 @@ project(":core"){
} }
dependencies{ dependencies{
if(System.properties["user.name"] == "anuke"){
task cleanGen{
doFirst{
delete{
delete "../core/src/mindustry/gen/"
}
}
}
task copyGen{
doLast{
copy{
from("../core/build/generated/sources/annotationProcessor/java/main/mindustry/gen"){
include "**/*.java"
}
into "../core/src/mindustry/gen"
}
}
}
compileJava.dependsOn(cleanGen)
compileJava.finalizedBy(copyGen)
}
compileJava.dependsOn(preGen) compileJava.dependsOn(preGen)
compile "org.lz4:lz4-java:1.4.1" compile "org.lz4:lz4-java:1.4.1"
@@ -298,7 +292,7 @@ project(":tools"){
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop" compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop" compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
compile "org.reflections:reflections:0.9.11" compile "org.reflections:reflections:0.9.12"
compile arcModule("backends:backend-sdl") compile arcModule("backends:backend-sdl")
} }
@@ -308,7 +302,8 @@ project(":annotations"){
apply plugin: "java" apply plugin: "java"
dependencies{ dependencies{
compile 'com.squareup:javapoet:1.11.0' compile 'com.squareup:javapoet:1.12.1'
compile "com.github.Anuken.Arc:arc-core:$arcHash"
compile files("${System.getProperty('java.home')}/../lib/tools.jar") compile files("${System.getProperty('java.home')}/../lib/tools.jar")
} }
} }

View File

@@ -0,0 +1,924 @@
{
"name": "",
"css_prefix_text": "icon-",
"css_use_suffix": false,
"hinting": true,
"units_per_em": 1000,
"ascent": 850,
"glyphs": [
{
"uid": "c08a1cde48d96cba21d8c05fa7d7feb1",
"css": "file-text-fill",
"code": 61788,
"src": "fontawesome"
},
{
"uid": "178053298e3e5b03551d754d4b9acd8b",
"css": "file",
"code": 61787,
"src": "fontawesome"
},
{
"uid": "5408be43f7c42bccee419c6be53fdef5",
"css": "file-text",
"code": 61686,
"src": "fontawesome"
},
{
"uid": "555ef8c86832e686fef85f7af2eb7cde",
"css": "left",
"code": 59394,
"src": "fontawesome"
},
{
"uid": "ad6b3fbb5324abe71a9c0b6609cbb9f1",
"css": "right",
"code": 59395,
"src": "fontawesome"
},
{
"uid": "95376bf082bfec6ce06ea1cda7bd7ead",
"css": "up",
"code": 59396,
"src": "fontawesome"
},
{
"uid": "1c4068ed75209e21af36017df8871802",
"css": "down",
"code": 59397,
"src": "fontawesome"
},
{
"uid": "6f880cbd94039674f0de065ffb57c250",
"css": "distribution",
"code": 59398,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M0 0L0 50 0 100 0 150 0 200 0 250 0 300 0 350 0 400 0 450 0 500 0 550 0 600 0 650 0 700 0 750 0 800 0 850 0 900 0 950 0 1000 50 1000 100 1000 100 950 100 850 100 750 100 650 100 550 100 450 100 350 100 250 100 150 100 50 100 0 50 0 0 0ZM900 0L900 50 900 150 900 250 900 350 900 450 900 550 900 650 900 750 900 850 900 950 900 1000 950 1000 1000 1000 1000 950 1000 900 1000 850 1000 800 1000 750 1000 700 1000 650 1000 600 1000 550 1000 500 1000 450 1000 400 1000 350 1000 300 1000 250 1000 200 1000 150 1000 100 1000 50 1000 0 950 0 900 0ZM500 106.3C487.5 106.3 475 108.3 462.5 112.5 437.5 120.8 416.7 133.3 400 150L350 200C333.3 216.7 325 233.3 325 250 325 266.7 337.5 279.2 362.5 287.5 387.5 295.8 416.7 300 450 300L550 300C597.6 293.9 649.1 300.5 675 250 675 233.3 666.7 216.7 650 200L600 150C583.3 133.3 562.5 120.8 537.5 112.5 525 108.3 512.5 106.3 500 106.3ZM500 406.3C487.5 406.3 475 408.3 462.5 412.5 437.5 420.8 416.7 433.3 400 450L350 500C333.3 516.7 325 533.3 325 550 325 566.7 337.5 579.2 362.5 587.5 387.5 595.8 416.7 600 450 600L550 600C583.3 600 612.5 595.8 637.5 587.5 662.5 579.2 675 566.7 675 550 675 533.3 666.7 516.7 650 500L600 450C583.3 433.3 562.5 420.8 537.5 412.5 525 408.3 512.5 406.3 500 406.3ZM500 706.3C487.5 706.3 475 708.3 462.5 712.5 437.5 720.8 416.7 733.3 400 750L350 800C333.3 816.7 325 833.3 325 850 325 866.7 337.5 879.2 362.5 887.5 387.5 895.8 416.7 900 450 900L550 900C583.3 900 612.5 895.8 637.5 887.5 662.5 879.2 675 866.7 675 850 675 833.3 666.7 816.7 650 800L600 750C583.3 733.3 562.5 720.8 537.5 712.5 525 708.3 512.5 706.3 500 706.3Z",
"width": 1000
},
"search": [
"icon-distribution-transparent.png"
]
},
{
"uid": "w3nzesrlbezu6f30q7ytyq919p6gdlb6",
"css": "home",
"code": 59399,
"src": "typicons"
},
{
"uid": "12f4ece88e46abd864e40b35e05b11cd",
"css": "ok",
"code": 59392,
"src": "fontawesome"
},
{
"uid": "6a7ed3214c9049148cbdb01825e5efc2",
"css": "image",
"code": 59400,
"src": "typicons"
},
{
"uid": "vyuzsm6wijlfwtjo4ifkoblfmsepk6g8",
"css": "star",
"code": 59401,
"src": "typicons"
},
{
"uid": "dd4b00255957a608953c409346e7d7fb",
"css": "warning",
"code": 59402,
"src": "typicons"
},
{
"uid": "cdfalpadi7huwv9ah4fef2gpfpb4c6qm",
"css": "resize",
"code": 59403,
"src": "typicons"
},
{
"uid": "j6xzwioffey3gxe90yx3ie56j5dlt902",
"css": "block_",
"code": 59404,
"src": "typicons"
},
{
"uid": "jh3jpcb1t1bcm80gidkadilh080aq79h",
"css": "menu",
"code": 59405,
"src": "typicons"
},
{
"uid": "dpxunrtmigvk6jm0ieo7axfsgzx4awll",
"css": "settings",
"code": 59406,
"src": "typicons"
},
{
"uid": "i7r8vgyqewsy2rlx0xhawybpw5uyss3z",
"css": "wrench",
"code": 59407,
"src": "typicons"
},
{
"uid": "971842913945f59c7f3cf11e75e1e4f1",
"css": "power_",
"code": 59408,
"src": "typicons"
},
{
"uid": "2b8ea04aa0e500ae056f9c7934af18e6",
"css": "pine",
"code": 59409,
"src": "typicons"
},
{
"uid": "0ece9a12de796b8411f868d582bee678",
"css": "github-square",
"code": 62208,
"src": "fontawesome"
},
{
"uid": "3c961c1a8d874815856fc6637dc5a13c",
"css": "file-image",
"code": 61893,
"src": "fontawesome"
},
{
"uid": "1gf923f9wvaezxmfon515dglxa3drf0e",
"css": "add",
"code": 59411,
"src": "typicons"
},
{
"uid": "k7sao112253txym1egnte7822irbyphe",
"css": "eye",
"code": 59412,
"src": "typicons"
},
{
"uid": "jqzwo6i8oicjbn049sh2856d8anrqoli",
"css": "edit",
"code": 59414,
"src": "typicons"
},
{
"uid": "890649841b2c37d56ff90065872fecf3",
"css": "chart-bar",
"code": 59417,
"src": "typicons"
},
{
"uid": "db7651b88bb33a590710f551bfbbd371",
"css": "plane-outline",
"code": 59418,
"src": "typicons"
},
{
"uid": "4109c474ff99cad28fd5a2c38af2ec6f",
"css": "filter",
"code": 61616,
"src": "fontawesome"
},
{
"uid": "f8aa663c489bcbd6e68ec8147dca841e",
"css": "folder",
"code": 59421,
"src": "fontawesome"
},
{
"uid": "ca1c07c0df52dbf2af6813c9e36c2611",
"css": "copy",
"code": 59424,
"src": "typicons"
},
{
"uid": "785a9b232e86ae750516adc5228a5aa7",
"css": "steam",
"code": 59426,
"src": "zocial"
},
{
"uid": "348b04ea17f646fbc6a46e20ebe4fe12",
"css": "download",
"code": 61486,
"src": "mfglabs"
},
{
"uid": "4f3b31017c63ba04dc4f78ce7a8f02b1",
"css": "upload",
"code": 61487,
"src": "mfglabs"
},
{
"uid": "6020aff067fc3c119cdd75daa5249220",
"css": "exchange",
"code": 61676,
"src": "fontawesome"
},
{
"uid": "ccddff8e8670dcd130e3cb55fdfc2fd0",
"css": "down-open",
"code": 59428,
"src": "fontawesome"
},
{
"uid": "d870630ff8f81e6de3958ecaeac532f2",
"css": "left-open",
"code": 59429,
"src": "fontawesome"
},
{
"uid": "fe6697b391355dec12f3d86d6d490397",
"css": "up-open",
"code": 59430,
"src": "fontawesome"
},
{
"uid": "87d337fee4866c2c28f6082994ce0f41",
"css": "map",
"code": 59431,
"src": "typicons"
},
{
"uid": "5qynhqqaenby227l5kogqj8sdk5s4e7h",
"css": "rotate",
"code": 59427,
"src": "typicons"
},
{
"uid": "3e290a111c0f3ee3acbf7b5f17ccc04a",
"css": "play",
"code": 59433,
"src": "typicons"
},
{
"uid": "e44ef09cb81413287d702eefa65dd790",
"css": "pause",
"code": 59434,
"src": "typicons"
},
{
"uid": "lu2wqmd7v9zp21knhy4eifo41wjp4cnx",
"css": "list",
"code": 59435,
"src": "typicons"
},
{
"uid": "5211af474d3a9848f67f945e2ccaf143",
"css": "cancel",
"code": 59436,
"src": "fontawesome"
},
{
"uid": "fhkechw94uv9ydw6tukba3ka2hhoif4n",
"css": "move",
"code": 59438,
"src": "typicons"
},
{
"uid": "287ee2cac4ded1712253c7b03ff4a5db",
"css": "pipette",
"code": 59439,
"src": "typicons"
},
{
"uid": "0e26e70b4aa537cc206f41b21dcf2fcc",
"css": "lock",
"code": 59442,
"src": "elusive"
},
{
"uid": "8f562a6dca9c14c9c8268bdb64efa89f",
"css": "lock-open",
"code": 59443,
"src": "elusive"
},
{
"uid": "fa10777b2d88cc64cd6e4f26ef0e5264",
"css": "terminal",
"code": 61728,
"src": "fontawesome"
},
{
"uid": "28r0xthd180mg0wnfh8ek3mtn761hs11",
"css": "undo",
"code": 59445,
"src": "typicons"
},
{
"uid": "7p5gflyid3o4gtesy94a6erq94e4pz7u",
"css": "redo",
"code": 59446,
"src": "typicons"
},
{
"uid": "3d4ea8a78dc34efe891f3a0f3d961274",
"css": "info",
"code": 61737,
"src": "fontawesome"
},
{
"uid": "e82cedfa1d5f15b00c5a81c9bd731ea2",
"css": "info-circle",
"code": 59447,
"src": "fontawesome"
},
{
"uid": "8a1d446e5555e76f82ddb1c8b526f579",
"css": "tree",
"code": 59448,
"src": "entypo"
},
{
"uid": "813cb2527308990d4870591d9d76f8cd",
"css": "right-open-out",
"code": 59449,
"src": "typicons"
},
{
"uid": "6zhrgcf3co77hnljttd3b2mrc8z5fiq5",
"css": "right-open",
"code": 59450,
"src": "typicons"
},
{
"uid": "fd8d9ae4422e55d3ca23f55d9cf4b20a",
"css": "waves",
"code": 59451,
"src": "typicons"
},
{
"uid": "5c49851100aa021825b346d16d7f3abf",
"css": "temperatire",
"code": 59452,
"src": "typicons"
},
{
"uid": "e3699d145bd628d2a35d4a508b616f0c",
"css": "filters",
"code": 59454,
"src": "iconic"
},
{
"uid": "d2c499942f8a7c037d5a94f123eeb478",
"css": "layers",
"code": 59455,
"src": "iconic"
},
{
"uid": "b9be509237c9abea9c258d677777b713",
"css": "pick",
"code": 59456,
"src": "iconic"
},
{
"uid": "ebc57fa8400e4ede049ac5dc665210e1",
"css": "eraser",
"code": 61741,
"src": "fontawesome"
},
{
"uid": "51727ca007aa35ceabcaffc28934faee",
"css": "book-open",
"code": 59393,
"src": "entypo"
},
{
"uid": "da72ab64b02d997ff0521339f2997233",
"css": "grid",
"code": 61481,
"src": "mfglabs"
},
{
"uid": "f8d887df13c5f95ede5fb0e2cdb042b1",
"css": "flip-x",
"code": 59410,
"src": "elusive"
},
{
"uid": "f8b0d36761ba4c7e51d0af49d3386713",
"css": "flip-y",
"code": 59458,
"src": "elusive"
},
{
"uid": "9edf364d6c567aa474b0f9ec6c26c042",
"css": "hammer",
"code": 59459,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M470.3 0C458.1 0 446 6.1 433.8 18.3L397.3 54.8 360.7 91.3 324.2 127.9 287.7 164.4 251.1 200.9 214.6 237.4 178.1 274C165.9 286.1 159.8 298.3 159.8 310.5 159.8 322.7 165.9 334.9 178.1 347L214.6 383.6 251.1 420.1 287.7 456.6 324.2 493.2C336.4 505.3 342.5 517.5 342.5 529.7 342.5 541.9 336.4 554 324.2 566.2L287.7 602.7 251.1 639.3 214.6 675.8 178.1 712.3 141.6 748.9 105 785.4 68.5 821.9 32 858.4C19.8 870.6 10.7 885.8 4.6 904.1-1.5 922.4-1.5 940.6 4.6 958.9 10.7 977.2 22.8 989.3 41.1 995.4 59.4 1001.5 77.6 1001.5 95.9 995.4 114.2 989.3 129.4 980.2 141.6 968L178.1 931.5 214.6 895 251.1 858.4 287.7 821.9 324.2 785.4 360.7 748.9 397.3 712.3 433.8 675.8C446 663.6 458.1 657.5 470.3 657.5 482.5 657.5 494.7 663.6 506.8 675.8L543.4 712.3 579.9 748.9 616.4 785.4 653 821.9C665.1 834.1 677.3 840.2 689.5 840.2 701.7 840.2 713.9 834.1 726 821.9L762.6 785.4 799.1 748.9 835.6 712.3 872.1 675.8 908.7 639.3 945.2 602.7 981.7 566.2C993.9 554 1000 541.9 1000 529.7 1000 517.5 993.9 505.3 981.7 493.2L945.2 456.6 908.7 420.1 872.1 383.6 835.6 347 799.1 310.5 762.6 274 726 237.4 689.5 200.9 653 164.4 616.4 127.9 579.9 91.3 543.4 54.8 506.8 18.3C494.7 6.1 482.5 0 470.3 0Z",
"width": 1000
},
"search": [
"hammer"
]
},
{
"uid": "e594fc6e5870b4ab7e49f52571d52577",
"css": "diagonal",
"code": 59460,
"src": "fontawesome"
},
{
"uid": "wh8nbtrxjl2f67dpybsww6mri0xcaklm",
"css": "export",
"code": 59462,
"src": "typicons"
},
{
"uid": "9e33d50c92e84bd26d83d1f37d6f0d57",
"css": "admin",
"code": 59432,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M427.1 385.4Q437.5 354.2 468.8 343.8 500 333.3 531.3 343.8 562.5 354.2 572.9 385.4 583.3 416.7 572.9 447.9 562.5 479.2 531.3 489.6 500 500 468.8 489.6 437.5 479.2 427.1 447.9 416.7 416.7 427.1 385.4M166.7 41.7Q187.5 20.8 218.8 10.4 250 0 291.7 0 333.3 0 375 0 416.7 0 458.3 0 500 0 541.7 0 583.3 0 625 0 666.7 0 708.3 0 750 0 781.3 10.4 812.5 20.8 833.3 41.7 854.2 62.5 875 83.3 895.8 104.2 916.7 125 937.5 145.8 958.3 166.7 979.2 187.5 989.6 218.8 1000 250 1000 291.7 1000 333.3 1000 375 1000 416.7 1000 458.3 1000 500 989.6 531.3 979.2 562.5 958.3 583.3 937.5 604.2 927.1 635.4 916.7 666.7 916.7 708.3 916.7 750 906.3 781.3 895.8 812.5 875 833.3 854.2 854.2 833.3 875 812.5 895.8 791.7 916.7 770.8 937.5 750 958.3 729.2 979.2 697.9 989.6 666.7 1000 625 1000 583.3 1000 541.7 1000 500 1000 458.3 1000 416.7 1000 375 1000 333.3 1000 302.1 989.6 270.8 979.2 250 958.3 229.2 937.5 208.3 916.7 187.5 895.8 166.7 875 145.8 854.2 125 833.3 104.2 812.5 93.8 781.3 83.3 750 83.3 708.3 83.3 666.7 72.9 635.4 62.5 604.2 41.7 583.3 20.8 562.5 10.4 531.3 0 500 0 458.3 0 416.7 0 375 0 333.3 0 291.7 0 250 10.4 218.8 20.8 187.5 41.7 166.7 62.5 145.8 83.3 125 104.2 104.2 125 83.3 145.8 62.5 166.7 41.7M541.7 750Q583.3 750 614.6 739.6 645.8 729.2 645.8 708.3 645.8 687.5 614.6 677.1 583.3 666.7 541.7 666.7 500 666.7 458.3 666.7 416.7 666.7 385.4 677.1 354.2 687.5 354.2 708.3 354.2 729.2 385.4 739.6 416.7 750 458.3 750 500 750 541.7 750M541.7 583.3Q583.3 583.3 614.6 572.9 645.8 562.5 666.7 541.7 687.5 520.8 708.3 500 729.2 479.2 739.6 447.9 750 416.7 739.6 385.4 729.2 354.2 708.3 333.3 687.5 312.5 666.7 291.7 645.8 270.8 614.6 260.4 583.3 250 541.7 250 500 250 458.3 250 416.7 250 385.4 260.4 354.2 270.8 333.3 291.7 312.5 312.5 291.7 333.3 270.8 354.2 260.4 385.4 250 416.7 260.4 447.9 270.8 479.2 291.7 500 312.5 520.8 333.3 541.7 354.2 562.5 385.4 572.9 416.7 583.3 458.3 583.3 500 583.3 541.7 583.3",
"width": 1000
},
"search": [
"admin"
]
},
{
"uid": "4bad23bc52aaddaac37da019e46b6f6b",
"css": "discord",
"code": 59464,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M347 419.5C318.5 419.5 296 444.5 296 475 296 505.5 319 530.5 347 530.5 375.5 530.5 398 505.5 398 475 398.5 444.5 375.5 419.5 347 419.5ZM529.5 419.5C501 419.5 478.5 444.5 478.5 475 478.5 505.5 501.5 530.5 529.5 530.5 558 530.5 580.5 505.5 580.5 475 580.5 444.5 558 419.5 529.5 419.5ZM772.5 0H102.5C46 0 0 46 0 103V779C0 836 46 882 102.5 882H669.5L643 789.5 707 849 767.5 905 875 1000V103C875 46 829 0 772.5 0ZM579.5 653C579.5 653 561.5 631.5 546.5 612.5 612 594 637 553 637 553 616.5 566.5 597 576 579.5 582.5 554.5 593 530.5 600 507 604 459 613 415 610.5 377.5 603.5 349 598 324.5 590 304 582 292.5 577.5 280 572 267.5 565 266 564 264.5 563.5 263 562.5 262 562 261.5 561.5 261 561 252 556 247 552.5 247 552.5 247 552.5 271 592.5 334.5 611.5 319.5 630.5 301 653 301 653 190.5 649.5 148.5 577 148.5 577 148.5 416 220.5 285.5 220.5 285.5 292.5 231.5 361 233 361 233L366 239C276 265 234.5 304.5 234.5 304.5 234.5 304.5 245.5 298.5 264 290 317.5 266.5 360 260 377.5 258.5 380.5 258 383 257.5 386 257.5 416.5 253.5 451 252.5 487 256.5 534.5 262 585.5 276 637.5 304.5 637.5 304.5 598 267 513 241L520 233C520 233 588.5 231.5 660.5 285.5 660.5 285.5 732.5 416 732.5 577 732.5 577 690 649.5 579.5 653Z",
"width": 875
},
"search": [
"discord-logo-white"
]
},
{
"uid": "777bee87001d4219672e09caa12e1c78",
"css": "crafting",
"code": 59425,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M909.1 62.9Q923.1 21 965 7 1007-7 1049 7 1090.9 21 1104.9 62.9 1118.9 104.9 1118.9 160.8 1118.9 216.8 1118.9 272.7 1118.9 328.7 1118.9 384.6 1118.9 440.6 1118.9 496.5 1118.9 552.4 1118.9 608.4 1118.9 664.3 1118.9 720.3 1118.9 776.2 1118.9 832.2 1118.9 888.1 1104.9 930.1 1090.9 972 1049 986 1007 1000 951 1000 895.1 1000 839.2 1000 783.2 1000 727.3 1000 671.3 1000 615.4 1000 559.4 1000 503.5 1000 447.6 1000 391.6 1000 335.7 1000 279.7 1000 223.8 1000 167.8 1000 111.9 1000 69.9 986 28 972 14 930.1 0 888.1 0 832.2 0 776.2 0 720.3 0 664.3 0 608.4 0 552.4 0 496.5 0 440.6 0 384.6 0 328.7 0 272.7 0 216.8 14 174.8 28 132.9 55.9 132.9 83.9 132.9 111.9 160.8 139.9 188.8 167.8 216.8 195.8 244.8 223.8 272.7 251.7 300.7 279.7 328.7 307.7 356.6 335.7 384.6 363.6 412.6 391.6 412.6 419.6 412.6 433.6 370.6 447.6 328.7 447.6 272.7 447.6 216.8 461.5 174.8 475.5 132.9 503.5 132.9 531.5 132.9 559.4 160.8 587.4 188.8 615.4 216.8 643.4 244.8 671.3 272.7 699.3 300.7 727.3 328.7 755.2 356.6 783.2 384.6 811.2 412.6 839.2 412.6 867.1 412.6 881.1 370.6 895.1 328.7 895.1 272.7 895.1 216.8 895.1 160.8 895.1 104.9 909.1 62.9M839.2 888.1Q895.1 888.1 937.1 874.1 979 860.1 993 818.2 1007 776.2 1007 720.3 1007 664.3 993 622.4 979 580.4 937.1 566.4 895.1 552.4 853.1 538.5 811.2 524.5 783.2 496.5 755.2 468.5 727.3 440.6 699.3 412.6 671.3 384.6 643.4 356.6 615.4 356.6 587.4 356.6 573.4 398.6 559.4 440.6 545.5 482.5 531.5 524.5 489.5 538.5 447.6 552.4 405.6 538.5 363.6 524.5 335.7 496.5 307.7 468.5 279.7 440.6 251.7 412.6 223.8 384.6 195.8 356.6 167.8 356.6 139.9 356.6 125.9 398.6 111.9 440.6 111.9 496.5 111.9 552.4 111.9 608.4 111.9 664.3 111.9 720.3 111.9 776.2 125.9 818.2 139.9 860.1 181.8 874.1 223.8 888.1 279.7 888.1 335.7 888.1 391.6 888.1 447.6 888.1 503.5 888.1 559.4 888.1 615.4 888.1 671.3 888.1 727.3 888.1 783.2 888.1 839.2 888.1M251.7 720.3Q251.7 692.3 279.7 692.3 307.7 692.3 307.7 720.3 307.7 748.3 279.7 748.3 251.7 748.3 251.7 720.3M475.5 720.3Q475.5 692.3 503.5 692.3 531.5 692.3 531.5 720.3 531.5 748.3 503.5 748.3 475.5 748.3 475.5 720.3M699.3 720.3Q699.3 692.3 727.3 692.3 755.2 692.3 755.2 720.3 755.2 748.3 727.3 748.3 699.3 748.3 699.3 720.3",
"width": 1119
},
"search": [
"crafting"
]
},
{
"uid": "39651356f0f411effa9ab4a83abd2d0d",
"css": "defense",
"code": 59465,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M101.3 0C88.6 0 75.9 2.1 63.3 6.3 38 14.8 21.1 31.6 12.7 57 4.2 82.3 0 111.8 0 145.6V246.8 348.1 449.4C0 483.1 4.2 512.7 12.7 538 21.1 563.3 33.8 584.4 50.6 601.3L101.3 651.9 151.9 702.5 202.5 753.2 253.2 803.8 303.8 854.4 354.4 905.1 405.1 955.7C421.9 972.6 443 985.2 468.4 993.7 493.7 1002.1 519 1002.1 544.3 993.7 569.6 985.2 590.7 972.6 607.6 955.7L658.2 905.1 708.9 854.4 759.5 803.8 810.1 753.2 860.8 702.5 911.4 651.9 962 601.3C978.9 584.4 991.6 563.3 1000 538 1008.4 512.7 1012.7 483.1 1012.7 449.4V348.1 246.8 145.6C1012.7 111.8 1008.4 82.3 1000 57 991.6 31.6 974.7 14.8 949.4 6.3 924.1-2.1 898.7-2.1 873.4 6.3 848.1 14.8 827 27.4 810.1 44.3L759.5 94.9 708.9 145.6C692 162.4 670.9 175.1 645.6 183.5 620.3 192 590.7 196.2 557 196.2H455.7C421.9 196.2 392.4 192 367.1 183.5 341.8 175.1 320.7 162.4 303.8 145.6L253.2 94.9 202.5 44.3C185.7 27.4 164.6 14.8 139.2 6.3 126.6 2.1 113.9 0 101.3 0ZM151.9 120.3C168.8 120.3 185.7 128.7 202.5 145.6L253.2 196.2 303.8 246.8C320.7 263.7 341.8 276.4 367.1 284.8 392.4 293.2 421.9 297.5 455.7 297.5H557C590.7 297.5 620.3 293.2 645.6 284.8 670.9 276.4 692 263.7 708.9 246.8L759.5 196.2 810.1 145.6C827 128.7 843.9 120.3 860.8 120.3 877.6 120.3 890.3 132.9 898.7 158.2 907.2 183.5 911.4 213.1 911.4 246.8V348.1 449.4C911.4 483.1 907.2 512.7 898.7 538 890.3 563.3 877.6 584.4 860.8 601.3L810.1 651.9 759.5 702.5 708.9 753.2 658.2 803.8 607.6 854.4C590.7 871.3 569.6 884 544.3 892.4 519 900.8 493.7 900.8 468.4 892.4 443 884 421.9 871.3 405.1 854.4L354.4 803.8 303.8 753.2 253.2 702.5 202.5 651.9 151.9 601.3C135 584.4 122.4 563.3 113.9 538 105.5 512.7 101.3 483.1 101.3 449.4V348.1 246.8C101.3 213.1 105.5 183.5 113.9 158.2 122.4 132.9 135 120.3 151.9 120.3Z",
"width": 1013
},
"search": [
"defense"
]
},
{
"uid": "10e2d46ee8b987f0a414451439b23036",
"css": "effect",
"code": 59466,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M250 0C216.7 0 187.5 4.2 162.5 12.5 137.5 20.8 116.7 33.3 100 50L50 100C33.3 116.7 20.8 137.5 12.5 162.5 4.2 187.5 0 216.7 0 250V350 450 550 650 750C0 783.3 4.2 812.5 12.5 837.5 20.8 862.5 33.3 883.3 50 900L100 950C116.7 966.7 137.5 979.2 162.5 987.5 187.5 995.8 216.7 1000 250 1000H350 450 550 650 750C783.3 1000 812.5 995.8 837.5 987.5 862.5 979.2 883.3 966.7 900 950L950 900C966.7 883.3 979.2 862.5 987.5 837.5 995.8 812.5 1000 783.3 1000 750V650 550 450 350 250C1000 216.7 995.8 187.5 987.5 162.5 979.2 137.5 966.7 116.7 950 100L900 50C883.3 33.3 862.5 20.8 837.5 12.5 812.5 4.2 783.3 0 750 0H650 550 450 350ZM350 100H450 550 650C683.3 100 712.5 104.2 737.5 112.5 762.5 120.8 783.3 133.3 800 150L850 200C866.7 216.7 879.2 237.5 887.5 262.5 895.8 287.5 900 316.7 900 350V450 550 650C900 683.3 895.8 712.5 887.5 737.5 879.2 762.5 866.7 783.3 850 800L800 850C783.3 866.7 762.5 879.2 737.5 887.5 712.5 895.8 683.3 900 650 900H550 450 350C316.7 900 287.5 895.8 262.5 887.5 237.5 879.2 216.7 866.7 200 850L150 800C133.3 783.3 120.8 762.5 112.5 737.5 104.2 712.5 100 683.3 100 650V550 450 350C100 316.7 104.2 287.5 112.5 262.5 120.8 237.5 133.3 216.7 150 200L200 150C216.7 133.3 237.5 120.8 262.5 112.5 287.5 104.2 316.7 100 350 100ZM500 306.3C487.5 306.3 475 308.3 462.5 312.5 437.5 320.8 416.7 333.3 400 350L350 400C333.3 416.7 320.8 437.5 312.5 462.5 304.2 487.5 304.2 512.5 312.5 537.5 320.8 562.5 333.3 583.3 350 600L400 650C416.7 666.7 437.5 679.2 462.5 687.5 487.5 695.8 512.5 695.8 537.5 687.5 562.5 679.2 583.3 666.7 600 650L650 600C666.7 583.3 679.2 562.5 687.5 537.5 695.8 512.5 695.8 487.5 687.5 462.5 679.2 437.5 666.7 416.7 650 400L600 350C583.3 333.3 562.5 320.8 537.5 312.5 525 308.3 512.5 306.3 500 306.3Z",
"width": 1000
},
"search": [
"effect"
]
},
{
"uid": "a4d157485929f47f7a7872bac82ffbb7",
"css": "liquid",
"code": 59467,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M0 57.1Q0 28.6 42.9 14.3 85.7 0 142.9 0 200 0 257.1 0 314.3 0 371.4 0 428.6 0 485.7 0 542.9 0 600 0 657.1 0 700 14.3 742.9 28.6 742.9 57.1 742.9 85.7 714.3 114.3 685.7 142.9 671.4 185.7 657.1 228.6 671.4 271.4 685.7 314.3 728.6 328.6 771.4 342.9 814.3 328.6 857.1 314.3 885.7 285.7 914.3 257.1 942.9 257.1 971.4 257.1 985.7 300 1000 342.9 1000 400 1000 457.1 1000 514.3 1000 571.4 1000 628.6 1000 685.7 1000 742.9 1000 800 1000 857.1 1000 914.3 985.7 957.1 971.4 1000 942.9 1000 914.3 1000 885.7 971.4 857.1 942.9 814.3 928.6 771.4 914.3 714.3 914.3 657.1 914.3 600 914.3 542.9 914.3 485.7 914.3 428.6 914.3 385.7 900 342.9 885.7 314.3 857.1 285.7 828.6 257.1 800 228.6 771.4 200 742.9 171.4 714.3 142.9 685.7 114.3 657.1 100 614.3 85.7 571.4 85.7 514.3 85.7 457.1 85.7 400 85.7 342.9 85.7 285.7 85.7 228.6 71.4 185.7 57.1 142.9 28.6 114.3 0 85.7 0 57.1M714.3 800Q771.4 800 814.3 785.7 857.1 771.4 871.4 728.6 885.7 685.7 885.7 628.6 885.7 571.4 871.4 528.6 857.1 485.7 814.3 471.4 771.4 457.1 728.6 442.9 685.7 428.6 657.1 400 628.6 371.4 600 342.9 571.4 314.3 557.1 271.4 542.9 228.6 528.6 185.7 514.3 142.9 471.4 128.6 428.6 114.3 371.4 114.3 314.3 114.3 271.4 128.6 228.6 142.9 214.3 185.7 200 228.6 200 285.7 200 342.9 200 400 200 457.1 200 514.3 200 571.4 214.3 614.3 228.6 657.1 257.1 685.7 285.7 714.3 314.3 742.9 342.9 771.4 385.7 785.7 428.6 800 485.7 800 542.9 800 600 800 657.1 800 714.3 800",
"width": 1000
},
"search": [
"liquid"
]
},
{
"uid": "757a660cd53e3349515bc329726c3dbd",
"css": "production",
"code": 59469,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M7 69.9Q21 28 62.9 14 104.9 0 160.8 0 216.8 0 272.7 0 328.7 0 384.6 0 440.6 0 496.5 0 552.4 0 608.4 0 664.3 0 720.3 0 776.2 0 818.2 14 860.1 28 874.1 69.9 888.1 111.9 874.1 153.8 860.1 195.8 832.2 223.8 804.2 251.7 776.2 279.7 748.3 307.7 720.3 335.7 692.3 363.6 678.3 405.6 664.3 447.6 664.3 503.5 664.3 559.4 664.3 615.4 664.3 671.3 664.3 727.3 664.3 783.2 650.3 825.2 636.4 867.1 608.4 895.1 580.4 923.1 552.4 951 524.5 979 482.5 993 440.6 1007 398.6 993 356.6 979 328.7 951 300.7 923.1 272.7 895.1 244.8 867.1 230.8 825.2 216.8 783.2 216.8 727.3 216.8 671.3 216.8 615.4 216.8 559.4 216.8 503.5 216.8 447.6 202.8 405.6 188.8 363.6 160.8 335.7 132.9 307.7 104.9 279.7 76.9 251.7 49 223.8 21 195.8 7 153.8-7 111.9 7 69.9M342.7 825.2Q356.6 867.1 384.6 867.1 412.6 867.1 440.6 839.2 468.5 811.2 496.5 783.2 524.5 755.2 524.5 727.3 524.5 699.3 496.5 671.3 468.5 643.4 468.5 615.4 468.5 587.4 496.5 559.4 524.5 531.5 524.5 503.5 524.5 475.5 496.5 447.6 468.5 419.6 440.6 391.6 412.6 363.6 384.6 363.6 356.6 363.6 342.7 405.6 328.7 447.6 328.7 503.5 328.7 559.4 328.7 615.4 328.7 671.3 328.7 727.3 328.7 783.2 342.7 825.2M608.4 223.8Q664.3 223.8 706.3 209.8 748.3 195.8 748.3 167.8 748.3 139.9 706.3 125.9 664.3 111.9 608.4 111.9 552.4 111.9 496.5 111.9 440.6 111.9 384.6 111.9 328.7 111.9 272.7 111.9 216.8 111.9 174.8 125.9 132.9 139.9 132.9 167.8 132.9 195.8 174.8 209.8 216.8 223.8 272.7 223.8 328.7 223.8 384.6 223.8 440.6 223.8 496.5 223.8 552.4 223.8 608.4 223.8",
"width": 881
},
"search": [
"production"
]
},
{
"uid": "fffdfd2df00136ae95e542b0af62d8fa",
"css": "turret",
"code": 59470,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M125.9 62.9Q139.9 21 181.8 7 223.8-7 265.7 7 307.7 21 321.7 62.9 335.7 104.9 349.7 146.9 363.6 188.8 405.6 202.8 447.6 216.8 489.5 202.8 531.5 188.8 545.5 146.9 559.4 104.9 573.4 62.9 587.4 21 629.4 7 671.3-7 713.3 7 755.2 21 769.2 62.9 783.2 104.9 783.2 160.8 783.2 216.8 783.2 272.7 783.2 328.7 797.2 370.6 811.2 412.6 839.2 440.6 867.1 468.5 881.1 510.5 895.1 552.4 895.1 608.4 895.1 664.3 895.1 720.3 895.1 776.2 895.1 832.2 895.1 888.1 881.1 930.1 867.1 972 825.2 986 783.2 1000 727.3 1000 671.3 1000 629.4 986 587.4 972 559.4 944.1 531.5 916.1 489.5 902.1 447.6 888.1 405.6 902.1 363.6 916.1 335.7 944.1 307.7 972 265.7 986 223.8 1000 167.8 1000 111.9 1000 69.9 986 28 972 14 930.1 0 888.1 0 832.2 0 776.2 0 720.3 0 664.3 0 608.4 0 552.4 14 510.5 28 468.5 55.9 440.6 83.9 412.6 97.9 370.6 111.9 328.7 111.9 272.7 111.9 216.8 111.9 160.8 111.9 104.9 125.9 62.9M629.4 874.1Q671.3 888.1 713.3 874.1 755.2 860.1 769.2 818.2 783.2 776.2 783.2 720.3 783.2 664.3 783.2 608.4 783.2 552.4 769.2 510.5 755.2 468.5 727.3 440.6 699.3 412.6 671.3 384.6 643.4 356.6 601.4 342.7 559.4 328.7 503.5 328.7 447.6 328.7 391.6 328.7 335.7 328.7 293.7 342.7 251.7 356.6 223.8 384.6 195.8 412.6 167.8 440.6 139.9 468.5 125.9 510.5 111.9 552.4 111.9 608.4 111.9 664.3 111.9 720.3 111.9 776.2 125.9 818.2 139.9 860.1 181.8 874.1 223.8 888.1 265.7 874.1 307.7 860.1 335.7 832.2 363.6 804.2 405.6 790.2 447.6 776.2 489.5 790.2 531.5 804.2 559.4 832.2 587.4 860.1 629.4 874.1",
"width": 895
},
"search": [
"turret"
]
},
{
"uid": "dbc386322a6eec797d94d5cf2af56dc3",
"css": "units",
"code": 59471,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M566.9 0C524.9 0 488.2 5.2 456.7 15.7 425.2 26.2 399 42 378 63L315 126 252 189 189 252 126 315 63 378C42 399 26.2 425.2 15.7 456.7 5.2 488.2 0 524.9 0 566.9 0 608.9 5.2 645.7 15.7 677.2 26.2 708.7 42 724.4 63 724.4 84 724.4 105 713.9 126 692.9 147 671.9 168 661.4 189 661.4 210 661.4 225.7 677.2 236.2 708.7 246.7 740.2 252 776.9 252 818.9 252 860.9 257.2 897.6 267.7 929.1 278.2 960.6 299.2 981.6 330.7 992.1 362.2 1002.6 393.7 1002.6 425.2 992.1 456.7 981.6 477.7 960.6 488.2 929.1L519.7 834.6C530.2 803.1 551.2 782.2 582.7 771.7 614.2 761.2 645.7 761.2 677.2 771.7 708.7 782.2 729.7 803.1 740.2 834.6L771.7 929.1C782.2 960.6 803.1 981.6 834.6 992.1 866.1 1002.6 897.6 1002.6 929.1 992.1 960.6 981.6 981.6 960.6 992.1 929.1 1002.6 897.6 1007.9 860.9 1007.9 818.9 1007.9 776.9 1013.1 740.2 1023.6 708.7 1034.1 677.2 1049.9 661.4 1070.9 661.4 1091.9 661.4 1112.9 671.9 1133.9 692.9 1154.9 713.9 1175.9 724.4 1196.9 724.4 1217.8 724.4 1233.6 708.7 1244.1 677.2 1254.6 645.7 1259.8 608.9 1259.8 566.9 1259.8 524.9 1254.6 488.2 1244.1 456.7 1233.6 425.2 1217.8 399 1196.9 378L1133.9 315 1070.9 252 1007.9 189 944.9 126 881.9 63C860.9 42 834.6 26.2 803.1 15.7 771.7 5.2 734.9 0 692.9 0ZM566.9 126H692.9C734.9 126 771.7 131.2 803.1 141.7 834.6 152.2 860.9 168 881.9 189L944.9 252 1007.9 315 1070.9 378C1091.9 399 1102.4 419.9 1102.4 440.9 1102.4 461.9 1086.6 477.7 1055.1 488.2L960.6 519.7C929.1 530.2 902.9 545.9 881.9 566.9 860.9 587.9 834.6 603.7 803.1 614.2 771.7 624.7 734.9 629.9 692.9 629.9H566.9C524.9 629.9 488.2 624.7 456.7 614.2 425.2 603.7 399 587.9 378 566.9 357 545.9 330.7 530.2 299.2 519.7L204.7 488.2C173.2 477.7 157.5 461.9 157.5 440.9 157.5 419.9 168 399 189 378L252 315 315 252 378 189C399 168 425.2 152.2 456.7 141.7 488.2 131.2 524.9 126 566.9 126ZM629.9 259.8C614.2 259.8 598.4 262.5 582.7 267.7 551.2 278.2 535.4 294 535.4 315 535.4 336 551.2 351.7 582.7 362.2 614.2 372.7 645.7 372.7 677.2 362.2 708.7 351.7 724.4 336 724.4 315 724.4 294 708.7 278.2 677.2 267.7 661.4 262.5 645.7 259.8 629.9 259.8Z",
"width": 1260
},
"search": [
"units"
]
},
{
"uid": "4fe8d91bf30522a9a76bab94836b2dd7",
"css": "upgrade",
"code": 59472,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M396.2 44Q421.4 18.9 459.1 6.3 496.9-6.3 534.6 6.3 572.3 18.9 597.5 44 622.6 69.2 647.8 94.3 673 119.5 698.1 144.7 723.3 169.8 748.4 195 773.6 220.1 798.7 245.3 823.9 270.4 849.1 295.6 874.2 320.8 899.4 345.9 924.5 371.1 949.7 396.2 974.8 421.4 987.4 459.1 1000 496.9 987.4 534.6 974.8 572.3 937.1 584.9 899.4 597.5 849.1 597.5 798.7 597.5 761 610.1 723.3 622.6 710.7 660.4 698.1 698.1 698.1 748.4 698.1 798.7 698.1 849.1 698.1 899.4 685.5 937.1 673 974.8 635.2 987.4 597.5 1000 547.2 1000 496.9 1000 446.5 1000 396.2 1000 358.5 987.4 320.8 974.8 308.2 937.1 295.6 899.4 295.6 849.1 295.6 798.7 295.6 748.4 295.6 698.1 283 660.4 270.4 622.6 232.7 610.1 195 597.5 144.7 597.5 94.3 597.5 56.6 584.9 18.9 572.3 6.3 534.6-6.3 496.9 6.3 459.1 18.9 421.4 44 396.2 69.2 371.1 94.3 345.9 119.5 320.8 144.7 295.6 169.8 270.4 195 245.3 220.1 220.1 245.3 195 270.4 169.8 295.6 144.7 320.8 119.5 345.9 94.3 371.1 69.2 396.2 44M459.1 886.8Q496.9 899.4 534.6 886.8 572.3 874.2 584.9 836.5 597.5 798.7 597.5 748.4 597.5 698.1 597.5 647.8 597.5 597.5 610.1 559.7 622.6 522 660.4 509.4 698.1 496.9 735.8 484.3 773.6 471.7 773.6 446.5 773.6 421.4 748.4 396.2 723.3 371.1 698.1 345.9 673 320.8 647.8 295.6 622.6 270.4 597.5 245.3 572.3 220.1 534.6 207.5 496.9 195 459.1 207.5 421.4 220.1 396.2 245.3 371.1 270.4 345.9 295.6 320.8 320.8 295.6 345.9 270.4 371.1 245.3 396.2 220.1 421.4 220.1 446.5 220.1 471.7 257.9 484.3 295.6 496.9 333.3 509.4 371.1 522 383.6 559.7 396.2 597.5 396.2 647.8 396.2 698.1 396.2 748.4 396.2 798.7 408.8 836.5 421.4 874.2 459.1 886.8",
"width": 994
},
"search": [
"upgrade"
]
},
{
"uid": "8cbea4558186fc7f4197ccba882dd534",
"css": "save",
"code": 59440,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M11.4 56.8Q22.7 22.7 56.8 11.4 90.9 0 136.4 0 181.8 0 227.3 0 272.7 0 318.2 0 363.6 0 409.1 0 454.5 0 500 0 545.5 0 590.9 0 636.4 0 681.8 0 727.3 0 761.4 11.4 795.5 22.7 818.2 45.5 840.9 68.2 863.6 90.9 886.4 113.6 897.7 147.7 909.1 181.8 909.1 227.3 909.1 272.7 909.1 318.2 909.1 363.6 909.1 409.1 909.1 454.5 909.1 500 909.1 545.5 909.1 590.9 909.1 636.4 909.1 681.8 909.1 727.3 909.1 772.7 909.1 818.2 909.1 863.6 909.1 909.1 897.7 943.2 886.4 977.3 852.3 988.6 818.2 1000 772.7 1000 727.3 1000 681.8 1000 636.4 1000 590.9 1000 545.5 1000 500 1000 454.5 1000 409.1 1000 363.6 1000 318.2 1000 272.7 1000 227.3 1000 181.8 1000 136.4 1000 90.9 1000 56.8 988.6 22.7 977.3 11.4 943.2 0 909.1 0 863.6 0 818.2 0 772.7 0 727.3 0 681.8 0 636.4 0 590.9 0 545.5 0 500 0 454.5 0 409.1 0 363.6 0 318.2 0 272.7 0 227.3 0 181.8 0 136.4 0 90.9 11.4 56.8M500 909.1Q545.5 909.1 579.5 897.7 613.6 886.4 625 852.3 636.4 818.2 636.4 772.7 636.4 727.3 625 693.2 613.6 659.1 579.5 647.7 545.5 636.4 500 636.4 454.5 636.4 409.1 636.4 363.6 636.4 329.5 647.7 295.5 659.1 284.1 693.2 272.7 727.3 272.7 772.7 272.7 818.2 284.1 852.3 295.5 886.4 329.5 897.7 363.6 909.1 409.1 909.1 454.5 909.1 500 909.1M738.6 852.3Q750 886.4 772.7 886.4 795.5 886.4 806.8 852.3 818.2 818.2 818.2 772.7 818.2 727.3 818.2 681.8 818.2 636.4 818.2 590.9 818.2 545.5 818.2 500 818.2 454.5 818.2 409.1 818.2 363.6 818.2 318.2 818.2 272.7 818.2 227.3 818.2 181.8 806.8 147.7 795.5 113.6 761.4 102.3 727.3 90.9 693.2 102.3 659.1 113.6 647.7 147.7 636.4 181.8 636.4 227.3 636.4 272.7 625 306.8 613.6 340.9 579.5 352.3 545.5 363.6 500 363.6 454.5 363.6 409.1 363.6 363.6 363.6 329.5 352.3 295.5 340.9 284.1 306.8 272.7 272.7 272.7 227.3 272.7 181.8 261.4 147.7 250 113.6 215.9 102.3 181.8 90.9 147.7 102.3 113.6 113.6 102.3 147.7 90.9 181.8 90.9 227.3 90.9 272.7 90.9 318.2 90.9 363.6 90.9 409.1 90.9 454.5 90.9 500 90.9 545.5 90.9 590.9 90.9 636.4 90.9 681.8 90.9 727.3 90.9 772.7 90.9 818.2 102.3 852.3 113.6 886.4 136.4 886.4 159.1 886.4 170.5 852.3 181.8 818.2 181.8 772.7 181.8 727.3 181.8 681.8 181.8 636.4 193.2 602.3 204.5 568.2 238.6 556.8 272.7 545.5 318.2 545.5 363.6 545.5 409.1 545.5 454.5 545.5 500 545.5 545.5 545.5 590.9 545.5 636.4 545.5 670.5 556.8 704.5 568.2 715.9 602.3 727.3 636.4 727.3 681.8 727.3 727.3 727.3 772.7 727.3 818.2 738.6 852.3M420.5 261.4Q454.5 272.7 488.6 261.4 522.7 250 534.1 215.9 545.5 181.8 534.1 147.7 522.7 113.6 488.6 102.3 454.5 90.9 420.5 102.3 386.4 113.6 375 147.7 363.6 181.8 375 215.9 386.4 250 420.5 261.4",
"width": 909
},
"search": [
"save"
]
},
{
"uid": "dd6df3b754e8d0dbf09d9b24088f0442",
"css": "box",
"code": 59422,
"src": "iconic"
},
{
"uid": "3b1a66b7efb81f4f8980f3edc369eeda",
"css": "link",
"code": 59444,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M208.3 0C180.6 0 156.2 3.5 135.4 10.4 114.6 17.4 97.2 27.8 83.3 41.7L41.7 83.3C27.8 97.2 17.4 114.6 10.4 135.4 3.5 156.3 0 180.6 0 208.3V291.7 375 458.3 541.7 625 708.3 791.7C0 819.4 3.5 843.8 10.4 864.6 17.4 885.4 27.8 902.8 41.7 916.7L83.3 958.3C97.2 972.2 114.6 982.6 135.4 989.6 156.2 996.5 180.6 1000 208.3 1000H291.7 375 458.3 541.7 625 708.3 791.7C819.4 1000 843.7 996.5 864.6 989.6 885.4 982.6 902.8 972.2 916.7 958.3L958.3 916.7C972.2 902.8 982.6 885.4 989.6 864.6 996.5 843.8 1000 819.4 1000 791.7 1000 763.9 996.5 739.6 989.6 718.8 982.6 697.9 972.2 680.6 958.3 666.7L916.7 625C902.8 611.1 888.9 604.2 875 604.2 861.1 604.2 850.7 614.6 843.7 635.4 836.8 656.3 833.3 680.6 833.3 708.3 833.3 736.1 829.9 760.4 822.9 781.3 816 802.1 802.1 816 781.2 822.9 760.4 829.9 736.1 833.3 708.3 833.3H625 541.7 458.3 375 291.7C263.9 833.3 239.6 829.9 218.7 822.9 197.9 816 184 802.1 177.1 781.3 170.1 760.4 166.7 736.1 166.7 708.3V625 541.7 458.3 375 291.7C166.7 263.9 170.1 239.6 177.1 218.8 184 197.9 197.9 184 218.7 177.1 239.6 170.1 263.9 166.7 291.7 166.7 319.4 166.7 343.7 163.2 364.6 156.3 385.4 149.3 395.8 138.9 395.8 125 395.8 111.1 388.9 97.2 375 83.3L333.3 41.7C319.4 27.8 302.1 17.4 281.2 10.4 260.4 3.5 236.1 0 208.3 0ZM625 0C597.2 0 572.9 3.5 552.1 10.4 531.2 17.4 520.8 27.8 520.8 41.7 520.8 55.6 527.8 69.4 541.7 83.3L583.3 125 625 166.7C638.9 180.6 645.8 194.4 645.8 208.3 645.8 222.2 638.9 236.1 625 250L583.3 291.7 541.7 333.3 500 375 458.3 416.7 416.7 458.3 375 500C361.1 513.9 350.7 531.3 343.7 552.1 336.8 572.9 336.8 593.8 343.7 614.6 350.7 635.4 364.6 649.3 385.4 656.3 406.2 663.2 427.1 663.2 447.9 656.3 468.7 649.3 486.1 638.9 500 625L541.7 583.3 583.3 541.7 625 500 666.7 458.3 708.3 416.7 750 375C763.9 361.1 777.8 354.2 791.7 354.2 805.6 354.2 819.4 361.1 833.3 375L875 416.7 916.7 458.3C930.6 472.2 944.4 479.2 958.3 479.2 972.2 479.2 982.6 468.8 989.6 447.9 996.5 427.1 1000 402.8 1000 375V291.7 208.3 125C1000 97.2 996.5 72.9 989.6 52.1 982.6 31.3 968.7 17.4 947.9 10.4 927.1 3.5 902.8 0 875 0H791.7 708.3Z",
"width": 1000
},
"search": [
"link"
]
},
{
"uid": "f08ba9f0e8f9b426a92efcaa59c1e932",
"css": "reddit-alien",
"code": 62081,
"src": "fontawesome"
},
{
"uid": "4a0bb1ac004980bb3837560d4c9e8cee",
"css": "github_",
"code": 62216,
"src": "brandico"
},
{
"uid": "909f99f11c6b6551bf757b6e809f98f3",
"css": "googleplay",
"code": 59453,
"src": "zocial"
},
{
"uid": "aaf371ab44841e9aaffebd179d324ce4",
"css": "android",
"code": 59461,
"src": "zocial"
},
{
"uid": "b846892636bd74112998bb159bdddf27",
"css": "trello",
"code": 61825,
"src": "fontawesome"
},
{
"uid": "ffe24157e3c63b2ad9526b4e779caefb",
"css": "itchio",
"code": 59468,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M303.8 44.3Q329.1 19 367.1 6.3 405.1-6.3 443 6.3 481 19 506.3 44.3 531.6 69.6 569.6 82.3 607.6 94.9 658.2 94.9 708.9 94.9 759.5 94.9 810.1 94.9 848.1 82.3 886.1 69.6 911.4 44.3 936.7 19 974.7 6.3 1012.7-6.3 1050.6 6.3 1088.6 19 1113.9 44.3 1139.2 69.6 1164.6 94.9 1189.9 120.3 1202.5 158.2 1215.2 196.2 1215.2 246.8 1215.2 297.5 1227.8 335.4 1240.5 373.4 1265.8 398.7 1291.1 424.1 1316.5 449.4 1341.8 474.7 1367.1 500 1392.4 525.3 1405.1 563.3 1417.7 601.3 1417.7 651.9 1417.7 702.5 1417.7 753.2 1417.7 803.8 1405.1 841.8 1392.4 879.7 1367.1 905.1 1341.8 930.4 1316.5 955.7 1291.1 981 1253.2 993.7 1215.2 1006.3 1177.2 993.7 1139.2 981 1113.9 955.7 1088.6 930.4 1063.3 905.1 1038 879.7 1012.7 854.4 987.3 829.1 949.4 816.5 911.4 803.8 860.8 803.8 810.1 803.8 759.5 803.8 708.9 803.8 658.2 803.8 607.6 803.8 557 803.8 506.3 803.8 468.4 816.5 430.4 829.1 405.1 854.4 379.7 879.7 354.4 905.1 329.1 930.4 303.8 955.7 278.5 981 240.5 993.7 202.5 1006.3 164.6 993.7 126.6 981 101.3 955.7 75.9 930.4 50.6 905.1 25.3 879.7 12.7 841.8 0 803.8 0 753.2 0 702.5 0 651.9 0 601.3 12.7 563.3 25.3 525.3 50.6 500 75.9 474.7 101.3 449.4 126.6 424.1 151.9 398.7 177.2 373.4 189.9 335.4 202.5 297.5 202.5 246.8 202.5 196.2 215.2 158.2 227.8 120.3 253.2 94.9 278.5 69.6 303.8 44.3M670.9 689.9Q708.9 702.5 746.8 689.9 784.8 677.2 797.5 639.2 810.1 601.3 822.8 563.3 835.4 525.3 873.4 512.7 911.4 500 949.4 487.3 987.3 474.7 987.3 449.4 987.3 424.1 962 398.7 936.7 373.4 911.4 348.1 886.1 322.8 860.8 297.5 835.4 272.2 810.1 246.8 784.8 221.5 746.8 208.9 708.9 196.2 670.9 208.9 632.9 221.5 607.6 246.8 582.3 272.2 557 297.5 531.6 322.8 506.3 348.1 481 373.4 455.7 398.7 430.4 424.1 430.4 449.4 430.4 474.7 468.4 487.3 506.3 500 544.3 512.7 582.3 525.3 594.9 563.3 607.6 601.3 620.3 639.2 632.9 677.2 670.9 689.9",
"width": 1418
},
"search": [
"itchio"
]
},
{
"uid": "4fa999c5ba68a4ec62d4abe5e8e51076",
"css": "line",
"code": 59473,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M836.8 36.8Q857.9 15.8 889.5 5.3 921.1-5.3 952.6 5.3 984.2 15.8 994.7 47.4 1005.3 78.9 994.7 110.5 984.2 142.1 963.2 163.2 942.1 184.2 921.1 205.3 900 226.3 878.9 247.4 857.9 268.4 836.8 289.5 815.8 310.5 794.7 331.6 773.7 352.6 752.6 373.7 731.6 394.7 710.5 415.8 689.5 436.8 668.4 457.9 647.4 478.9 626.3 500 605.3 521.1 584.2 542.1 563.2 563.2 542.1 584.2 521.1 605.3 500 626.3 478.9 647.4 457.9 668.4 436.8 689.5 415.8 710.5 394.7 731.6 373.7 752.6 352.6 773.7 331.6 794.7 310.5 815.8 289.5 836.8 268.4 857.9 247.4 878.9 226.3 900 205.3 921.1 184.2 942.1 163.2 963.2 142.1 984.2 110.5 994.7 78.9 1005.3 47.4 994.7 15.8 984.2 5.3 952.6-5.3 921.1 5.3 889.5 15.8 857.9 36.8 836.8 57.9 815.8 78.9 794.7 100 773.7 121.1 752.6 142.1 731.6 163.2 710.5 184.2 689.5 205.3 668.4 226.3 647.4 247.4 626.3 268.4 605.3 289.5 584.2 310.5 563.2 331.6 542.1 352.6 521.1 373.7 500 394.7 478.9 415.8 457.9 436.8 436.8 457.9 415.8 478.9 394.7 500 373.7 521.1 352.6 542.1 331.6 563.2 310.5 584.2 289.5 605.3 268.4 626.3 247.4 647.4 226.3 668.4 205.3 689.5 184.2 710.5 163.2 731.6 142.1 752.6 121.1 773.7 100 794.7 78.9 815.8 57.9 836.8 36.8",
"width": 1000
},
"search": [
"line"
]
},
{
"uid": "d4d06d27c6e566237097413b3695b4aa",
"css": "spray",
"code": 59474,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M18.2 0C6.1 0 0 6.1 0 18.2 0 30.3 6.1 36.4 18.2 36.4 30.3 36.4 36.4 30.3 36.4 18.2 36.4 6.1 30.3 0 18.2 0ZM454.5 54.5C430.3 54.5 409.1 57.6 390.9 63.6 372.7 69.7 363.6 78.8 363.6 90.9 363.6 103 369.7 115.2 381.8 127.3 393.9 139.4 400 151.5 400 163.6 400 175.8 393.9 187.9 381.8 200L345.5 236.4 309.1 272.7 272.7 309.1 236.4 345.5C224.2 357.6 218.2 369.7 218.2 381.8 218.2 393.9 227.3 403 245.5 409.1 263.6 415.2 284.8 418.2 309.1 418.2H381.8 454.5 527.3 600 672.7C697 418.2 718.2 415.2 736.4 409.1 754.5 403 763.6 393.9 763.6 381.8 763.6 369.7 757.6 357.6 745.5 345.5L709.1 309.1 672.7 272.7C660.6 260.6 651.5 245.5 645.5 227.3 639.4 209.1 636.4 187.9 636.4 163.6 636.4 139.4 633.3 118.2 627.3 100 621.2 81.8 609.1 69.7 590.9 63.6 572.7 57.6 551.5 54.5 527.3 54.5ZM163.6 72.7C151.5 72.7 145.5 78.8 145.5 90.9 145.5 103 151.5 115.2 163.6 127.3 175.8 139.4 181.8 151.5 181.8 163.6 181.8 175.8 175.8 187.9 163.6 200 151.5 212.1 145.5 224.2 145.5 236.4 145.5 248.5 151.5 254.5 163.6 254.5 175.8 254.5 187.9 248.5 200 236.4L236.4 200C248.5 187.9 254.5 175.8 254.5 163.6 254.5 151.5 248.5 139.4 236.4 127.3L200 90.9C187.9 78.8 175.8 72.7 163.6 72.7ZM18.2 145.5C6.1 145.5 0 151.5 0 163.6 0 175.8 6.1 181.8 18.2 181.8 30.3 181.8 36.4 175.8 36.4 163.6 36.4 151.5 30.3 145.5 18.2 145.5ZM18.2 290.9C6.1 290.9 0 297 0 309.1 0 321.2 6.1 327.3 18.2 327.3 30.3 327.3 36.4 321.2 36.4 309.1 36.4 297 30.3 290.9 18.2 290.9ZM309.1 490.9C284.8 490.9 263.6 493.9 245.5 500 227.3 506.1 215.2 518.2 209.1 536.4 203 554.5 200 575.8 200 600V672.7 745.5C200 769.7 203 790.9 209.1 809.1 215.2 827.3 227.3 839.4 245.5 845.5 263.6 851.5 284.8 854.5 309.1 854.5H381.8 454.5 527.3 600 672.7C697 854.5 718.2 851.5 736.4 845.5 754.5 839.4 766.7 827.3 772.7 809.1 778.8 790.9 781.8 769.7 781.8 745.5V672.7 600C781.8 575.8 778.8 554.5 772.7 536.4 766.7 518.2 754.5 506.1 736.4 500 718.2 493.9 697 490.9 672.7 490.9H600 527.3 454.5 381.8ZM309.1 927.3C284.8 927.3 263.6 930.3 245.5 936.4 227.3 942.4 218.2 951.5 218.2 963.6 218.2 975.8 227.3 984.8 245.5 990.9 263.6 997 284.8 1000 309.1 1000H381.8 454.5 527.3 600 672.7C697 1000 718.2 997 736.4 990.9 754.5 984.8 763.6 975.8 763.6 963.6 763.6 951.5 754.5 942.4 736.4 936.4 718.2 930.3 697 927.3 672.7 927.3H600 527.3 454.5 381.8Z",
"width": 782
},
"search": [
"spray"
]
},
{
"uid": "eab433e0de7fbc7ce341bca83f184abb",
"css": "fill",
"code": 59457,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M426 35.9Q443.9 17.9 470.9 9 497.8 0 533.6 0 569.5 0 596.4 9 623.3 17.9 641.3 35.9 659.2 53.8 677.1 71.7 695.1 89.7 704 116.6 713 143.5 713 179.4 713 215.2 704 242.2 695.1 269.1 677.1 287 659.2 304.9 659.2 322.9 659.2 340.8 686.1 349.8 713 358.7 748.9 358.7 784.8 358.7 811.7 367.7 838.6 376.7 856.5 394.6 874.4 412.6 892.4 430.5 910.3 448.4 928.3 466.4 946.2 484.3 964.1 502.2 982.1 520.2 991 547.1 1000 574 1000 609.9 1000 645.7 1000 681.6 1000 717.5 1000 753.4 1000 789.2 1000 825.1 1000 861 991 887.9 982.1 914.8 964.1 914.8 946.2 914.8 937.2 887.9 928.3 861 928.3 825.1 928.3 789.2 919.3 762.3 910.3 735.4 892.4 717.5 874.4 699.6 865.5 672.6 856.5 645.7 847.5 618.8 838.6 591.9 820.6 591.9 802.7 591.9 784.8 609.9 766.8 627.8 748.9 645.7 730.9 663.7 713 681.6 695.1 699.6 677.1 717.5 659.2 735.4 641.3 753.4 623.3 771.3 605.4 789.2 587.4 807.2 569.5 825.1 551.6 843 533.6 861 515.7 878.9 497.8 896.9 479.8 914.8 461.9 932.7 443.9 950.7 426 968.6 408.1 986.5 381.2 995.5 354.3 1004.5 327.4 995.5 300.4 986.5 282.5 968.6 264.6 950.7 246.6 932.7 228.7 914.8 210.8 896.9 192.8 878.9 174.9 861 157 843 139 825.1 121.1 807.2 103.1 789.2 85.2 771.3 67.3 753.4 49.3 735.4 31.4 717.5 13.5 699.6 4.5 672.6-4.5 645.7 4.5 618.8 13.5 591.9 31.4 574 49.3 556.1 67.3 538.1 85.2 520.2 103.1 502.2 121.1 484.3 139 466.4 157 448.4 174.9 430.5 192.8 412.6 210.8 394.6 228.7 376.7 246.6 376.7 264.6 376.7 273.5 403.6 282.5 430.5 273.5 457.4 264.6 484.3 246.6 502.2 228.7 520.2 210.8 538.1 192.8 556.1 174.9 574 157 591.9 148 618.8 139 645.7 148 672.6 157 699.6 174.9 717.5 192.8 735.4 210.8 753.4 228.7 771.3 246.6 789.2 264.6 807.2 282.5 825.1 300.4 843 327.4 852 354.3 861 381.2 852 408.1 843 426 825.1 443.9 807.2 461.9 789.2 479.8 771.3 497.8 753.4 515.7 735.4 533.6 717.5 551.6 699.6 569.5 681.6 587.4 663.7 605.4 645.7 623.3 627.8 641.3 609.9 659.2 591.9 677.1 574 695.1 556.1 695.1 538.1 695.1 520.2 677.1 502.2 659.2 484.3 641.3 466.4 623.3 448.4 605.4 430.5 587.4 412.6 569.5 394.6 551.6 376.7 533.6 358.7 515.7 340.8 506.7 313.9 497.8 287 506.7 260.1 515.7 233.2 533.6 233.2 551.6 233.2 569.5 251.1 587.4 269.1 605.4 269.1 623.3 269.1 632.3 242.2 641.3 215.2 641.3 179.4 641.3 143.5 632.3 116.6 623.3 89.7 596.4 80.7 569.5 71.7 533.6 71.7 497.8 71.7 470.9 80.7 443.9 89.7 435 116.6 426 143.5 426 179.4 426 215.2 426 251.1 426 287 426 322.9 426 358.7 426 394.6 426 430.5 417 457.4 408.1 484.3 390.1 484.3 372.2 484.3 363.2 457.4 354.3 430.5 354.3 394.6 354.3 358.7 354.3 322.9 354.3 287 354.3 251.1 354.3 215.2 354.3 179.4 354.3 143.5 363.2 116.6 372.2 89.7 390.1 71.7 408.1 53.8 426 35.9",
"width": 1000
},
"search": [
"fill"
]
},
{
"uid": "d9d4c18716c0d8b23485258e35d9e3a9",
"css": "paste",
"code": 59419,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M392.9 0C369 0 348.2 3 330.4 8.9 312.5 14.9 297.6 23.8 285.7 35.7 273.8 47.6 258.9 56.5 241.1 62.5 223.2 68.5 202.4 71.4 178.6 71.4 154.8 71.4 133.9 74.4 116.1 80.4 98.2 86.3 83.3 95.2 71.4 107.1L35.7 142.9C23.8 154.8 14.9 169.6 8.9 187.5 3 205.4 0 226.2 0 250V321.4 392.9 464.3 535.7 607.1 678.6 750 821.4C0 845.2 3 866.1 8.9 883.9 14.9 901.8 23.8 916.7 35.7 928.6L71.4 964.3C83.3 976.2 98.2 985.1 116.1 991.1 133.9 997 154.8 1000 178.6 1000H250 321.4 392.9 464.3 535.7 607.1 678.6C702.4 1000 723.2 997 741.1 991.1 758.9 985.1 773.8 976.2 785.7 964.3L821.4 928.6C833.3 916.7 842.3 901.8 848.2 883.9 854.2 866.1 857.1 845.2 857.1 821.4V750 678.6 607.1 535.7 464.3 392.9 321.4 250C857.1 226.2 854.2 205.4 848.2 187.5 842.3 169.6 833.3 154.8 821.4 142.9L785.7 107.1C773.8 95.2 758.9 86.3 741.1 80.4 723.2 74.4 702.4 71.4 678.6 71.4 654.8 71.4 633.9 68.5 616.1 62.5 598.2 56.5 583.3 47.6 571.4 35.7 559.5 23.8 544.6 14.9 526.8 8.9 508.9 3 488.1 0 464.3 0ZM428.6 75.9C437.5 75.9 446.4 77.4 455.4 80.4 473.2 86.3 482.1 95.2 482.1 107.1 482.1 119 473.2 128 455.4 133.9 437.5 139.9 419.6 139.9 401.8 133.9 383.9 128 375 119 375 107.1 375 95.2 383.9 86.3 401.8 80.4 410.7 77.4 419.6 75.9 428.6 75.9ZM214.3 218.8C223.2 218.8 232.1 220.2 241.1 223.2 258.9 229.2 273.8 238.1 285.7 250 297.6 261.9 312.5 270.8 330.4 276.8 348.2 282.7 369 285.7 392.9 285.7H464.3C488.1 285.7 508.9 282.7 526.8 276.8 544.6 270.8 559.5 261.9 571.4 250 583.3 238.1 598.2 229.2 616.1 223.2 633.9 217.3 651.8 217.3 669.6 223.2 687.5 229.2 699.4 241.1 705.4 258.9 711.3 276.8 714.3 297.6 714.3 321.4V392.9 464.3 535.7 607.1 678.6 750C714.3 773.8 711.3 794.6 705.4 812.5 699.4 830.4 687.5 842.3 669.6 848.2 651.8 854.2 631 857.1 607.1 857.1H535.7 464.3 392.9 321.4 250C226.2 857.1 205.4 854.2 187.5 848.2 169.6 842.3 157.7 830.4 151.8 812.5 145.8 794.6 142.9 773.8 142.9 750V678.6 607.1 535.7 464.3 392.9 321.4C142.9 297.6 145.8 276.8 151.8 258.9 157.7 241.1 169.6 229.2 187.5 223.2 196.4 220.2 205.4 218.8 214.3 218.8ZM321.4 428.6C297.6 428.6 276.8 431.5 258.9 437.5 241.1 443.5 232.1 452.4 232.1 464.3 232.1 476.2 241.1 485.1 258.9 491.1 276.8 497 297.6 500 321.4 500H392.9 464.3 535.7C559.5 500 580.4 497 598.2 491.1 616.1 485.1 625 476.2 625 464.3 625 452.4 616.1 443.5 598.2 437.5 580.4 431.5 559.5 428.6 535.7 428.6H464.3 392.9ZM321.4 571.4C297.6 571.4 276.8 574.4 258.9 580.4 241.1 586.3 232.1 595.2 232.1 607.1 232.1 619 241.1 628 258.9 633.9 276.8 639.9 297.6 642.9 321.4 642.9H392.9 464.3 535.7C559.5 642.9 580.4 639.9 598.2 633.9 616.1 628 625 619 625 607.1 625 595.2 616.1 586.3 598.2 580.4 580.4 574.4 559.5 571.4 535.7 571.4H464.3 392.9ZM321.4 714.3C297.6 714.3 276.8 717.3 258.9 723.2 241.1 729.2 232.1 738.1 232.1 750 232.1 761.9 241.1 770.8 258.9 776.8 276.8 782.7 297.6 785.7 321.4 785.7H392.9 464.3 535.7C559.5 785.7 580.4 782.7 598.2 776.8 616.1 770.8 625 761.9 625 750 625 738.1 616.1 729.2 598.2 723.2 580.4 717.3 559.5 714.3 535.7 714.3H464.3 392.9Z",
"width": 857
},
"search": [
"paste"
]
},
{
"uid": "a69daaa147a4c2bee4b985727c89e1ff",
"css": "book",
"code": 59423,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M227.3 0C197 0 170.5 3.8 147.7 11.4 125 18.9 106.1 30.3 90.9 45.5L45.5 90.9C30.3 106.1 18.9 125 11.4 147.7 3.8 170.5 0 197 0 227.3V318.2 409.1 500 590.9 681.8 772.7 863.6C0 893.9 3.8 920.5 11.4 943.2 18.9 965.9 34.1 981.1 56.8 988.6 79.5 996.2 106.1 1000 136.4 1000H227.3 318.2 409.1 500 590.9 681.8C712.1 1000 738.6 996.2 761.4 988.6 784.1 981.1 803 969.7 818.2 954.5L863.6 909.1C878.8 893.9 890.2 875 897.7 852.3 905.3 829.5 909.1 803 909.1 772.7V681.8 590.9 500 409.1 318.2 227.3 136.4C909.1 106.1 905.3 79.5 897.7 56.8 890.2 34.1 875 18.9 852.3 11.4 829.5 3.8 803 0 772.7 0H681.8 590.9 500 409.1 318.2ZM318.2 90.9H409.1 500 590.9 681.8C712.1 90.9 738.6 94.7 761.4 102.3 784.1 109.8 799.2 125 806.8 147.7 814.4 170.5 818.2 197 818.2 227.3V318.2 409.1 500 590.9 681.8C818.2 712.1 814.4 738.6 806.8 761.4 799.2 784.1 784.1 799.2 761.4 806.8 738.6 814.4 712.1 818.2 681.8 818.2H590.9 500 409.1 318.2C287.9 818.2 261.4 814.4 238.6 806.8 215.9 799.2 200.8 784.1 193.2 761.4 185.6 738.6 181.8 712.1 181.8 681.8V590.9 500 409.1 318.2 227.3C181.8 197 185.6 170.5 193.2 147.7 200.8 125 215.9 109.8 238.6 102.3 261.4 94.7 287.9 90.9 318.2 90.9ZM409.1 181.8C378.8 181.8 352.3 185.6 329.5 193.2 306.8 200.8 291.7 215.9 284.1 238.6 276.5 261.4 276.5 284.1 284.1 306.8 291.7 329.5 306.8 344.7 329.5 352.3 352.3 359.8 378.8 363.6 409.1 363.6H500 590.9C621.2 363.6 647.7 359.8 670.5 352.3 693.2 344.7 708.3 329.5 715.9 306.8 723.5 284.1 723.5 261.4 715.9 238.6 708.3 215.9 693.2 200.8 670.5 193.2 647.7 185.6 621.2 181.8 590.9 181.8H500ZM409.1 454.5C378.8 454.5 352.3 458.3 329.5 465.9 306.8 473.5 295.5 484.8 295.5 500 295.5 515.2 306.8 526.5 329.5 534.1 352.3 541.7 378.8 545.5 409.1 545.5H500 590.9C621.2 545.5 647.7 541.7 670.5 534.1 693.2 526.5 704.5 515.2 704.5 500 704.5 484.8 693.2 473.5 670.5 465.9 647.7 458.3 621.2 454.5 590.9 454.5H500ZM409.1 636.4C378.8 636.4 352.3 640.2 329.5 647.7 306.8 655.3 295.5 666.7 295.5 681.8 295.5 697 306.8 708.3 329.5 715.9 352.3 723.5 378.8 727.3 409.1 727.3H500 590.9C621.2 727.3 647.7 723.5 670.5 715.9 693.2 708.3 704.5 697 704.5 681.8 704.5 666.7 693.2 655.3 670.5 647.7 647.7 640.2 621.2 636.4 590.9 636.4H500Z",
"width": 909
},
"search": [
"book"
]
},
{
"uid": "ceb9cde822ac23f35c3bd67a8d0c4fac",
"css": "host",
"code": 59437,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M11.4 56.8Q22.7 22.7 56.8 11.4 90.9 0 136.4 0 181.8 0 227.3 0 272.7 0 318.2 0 363.6 0 409.1 0 454.5 0 500 0 545.5 0 590.9 0 636.4 0 681.8 0 727.3 0 772.7 0 818.2 0 863.6 0 909.1 0 954.5 0 1000 0 1034.1 11.4 1068.2 22.7 1079.5 56.8 1090.9 90.9 1090.9 136.4 1090.9 181.8 1079.5 215.9 1068.2 250 1034.1 261.4 1000 272.7 954.5 272.7 909.1 272.7 863.6 272.7 818.2 272.7 772.7 272.7 727.3 272.7 681.8 272.7 636.4 272.7 590.9 272.7 545.5 272.7 500 272.7 454.5 272.7 409.1 272.7 363.6 272.7 318.2 272.7 272.7 272.7 227.3 272.7 181.8 272.7 136.4 272.7 90.9 272.7 56.8 261.4 22.7 250 11.4 215.9 0 181.8 0 136.4 0 90.9 11.4 56.8M409.1 181.8Q454.5 181.8 488.6 170.5 522.7 159.1 522.7 136.4 522.7 113.6 488.6 102.3 454.5 90.9 409.1 90.9 363.6 90.9 318.2 90.9 272.7 90.9 227.3 90.9 181.8 90.9 147.7 102.3 113.6 113.6 113.6 136.4 113.6 159.1 147.7 170.5 181.8 181.8 227.3 181.8 272.7 181.8 318.2 181.8 363.6 181.8 409.1 181.8M840.9 136.4Q840.9 159.1 863.6 159.1 886.4 159.1 886.4 136.4 886.4 113.6 863.6 113.6 840.9 113.6 840.9 136.4M11.4 420.5Q22.7 386.4 56.8 375 90.9 363.6 136.4 363.6 181.8 363.6 227.3 363.6 272.7 363.6 318.2 363.6 363.6 363.6 409.1 363.6 454.5 363.6 500 363.6 545.5 363.6 590.9 363.6 636.4 363.6 681.8 363.6 727.3 363.6 772.7 363.6 818.2 363.6 863.6 363.6 909.1 363.6 954.5 363.6 1000 363.6 1034.1 375 1068.2 386.4 1079.5 420.5 1090.9 454.5 1090.9 500 1090.9 545.5 1079.5 579.5 1068.2 613.6 1034.1 625 1000 636.4 954.5 636.4 909.1 636.4 863.6 636.4 818.2 636.4 772.7 636.4 727.3 636.4 681.8 636.4 636.4 636.4 590.9 636.4 545.5 636.4 500 636.4 454.5 636.4 409.1 636.4 363.6 636.4 318.2 636.4 272.7 636.4 227.3 636.4 181.8 636.4 136.4 636.4 90.9 636.4 56.8 625 22.7 613.6 11.4 579.5 0 545.5 0 500 0 454.5 11.4 420.5M409.1 545.5Q454.5 545.5 488.6 534.1 522.7 522.7 522.7 500 522.7 477.3 488.6 465.9 454.5 454.5 409.1 454.5 363.6 454.5 318.2 454.5 272.7 454.5 227.3 454.5 181.8 454.5 147.7 465.9 113.6 477.3 113.6 500 113.6 522.7 147.7 534.1 181.8 545.5 227.3 545.5 272.7 545.5 318.2 545.5 363.6 545.5 409.1 545.5M840.9 500Q840.9 522.7 863.6 522.7 886.4 522.7 886.4 500 886.4 477.3 863.6 477.3 840.9 477.3 840.9 500M11.4 784.1Q22.7 750 56.8 738.6 90.9 727.3 136.4 727.3 181.8 727.3 227.3 727.3 272.7 727.3 318.2 727.3 363.6 727.3 409.1 727.3 454.5 727.3 500 727.3 545.5 727.3 590.9 727.3 636.4 727.3 681.8 727.3 727.3 727.3 772.7 727.3 818.2 727.3 863.6 727.3 909.1 727.3 954.5 727.3 1000 727.3 1034.1 738.6 1068.2 750 1079.5 784.1 1090.9 818.2 1090.9 863.6 1090.9 909.1 1079.5 943.2 1068.2 977.3 1034.1 988.6 1000 1000 954.5 1000 909.1 1000 863.6 1000 818.2 1000 772.7 1000 727.3 1000 681.8 1000 636.4 1000 590.9 1000 545.5 1000 500 1000 454.5 1000 409.1 1000 363.6 1000 318.2 1000 272.7 1000 227.3 1000 181.8 1000 136.4 1000 90.9 1000 56.8 988.6 22.7 977.3 11.4 943.2 0 909.1 0 863.6 0 818.2 11.4 784.1M409.1 909.1Q454.5 909.1 488.6 897.7 522.7 886.4 522.7 863.6 522.7 840.9 488.6 829.5 454.5 818.2 409.1 818.2 363.6 818.2 318.2 818.2 272.7 818.2 227.3 818.2 181.8 818.2 147.7 829.5 113.6 840.9 113.6 863.6 113.6 886.4 147.7 897.7 181.8 909.1 227.3 909.1 272.7 909.1 318.2 909.1 363.6 909.1 409.1 909.1M840.9 863.6Q840.9 886.4 863.6 886.4 886.4 886.4 886.4 863.6 886.4 840.9 863.6 840.9 840.9 840.9 840.9 863.6",
"width": 1091
},
"search": [
"host"
]
},
{
"uid": "496a07ca2bfa65f351c24b819fae0362",
"css": "exit",
"code": 59416,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M208.3 0C180.6 0 156.2 3.5 135.4 10.4 114.6 17.4 97.2 27.8 83.3 41.7L41.7 83.3C27.8 97.2 17.4 114.6 10.4 135.4 3.5 156.2 0 180.6 0 208.3V291.7 375 458.3 541.7 625 708.3 791.7C0 819.4 3.5 843.7 10.4 864.6 17.4 885.4 27.8 902.8 41.7 916.7L83.3 958.3C97.2 972.2 114.6 982.6 135.4 989.6 156.2 996.5 180.6 1000 208.3 1000H291.7 375 458.3 541.7 625 708.3C736.1 1000 760.4 996.5 781.3 989.6 802.1 982.6 819.4 972.2 833.3 958.3L875 916.7C888.9 902.8 895.8 888.9 895.8 875 895.8 861.1 885.4 850.7 864.6 843.7 843.8 836.8 819.4 833.3 791.7 833.3H708.3 625 541.7 458.3 375 291.7C263.9 833.3 239.6 829.9 218.7 822.9 197.9 816 184 802.1 177.1 781.2 170.1 760.4 166.7 736.1 166.7 708.3V625 541.7 458.3 375 291.7C166.7 263.9 170.1 239.6 177.1 218.7 184 197.9 197.9 184 218.7 177.1 239.6 170.1 263.9 166.7 291.7 166.7H375 458.3 541.7 625 708.3 791.7C819.4 166.7 843.8 163.2 864.6 156.2 885.4 149.3 895.8 138.9 895.8 125 895.8 111.1 888.9 97.2 875 83.3L833.3 41.7C819.4 27.8 802.1 17.4 781.3 10.4 760.4 3.5 736.1 0 708.3 0H625 541.7 458.3 375 291.7ZM791.7 270.8C777.8 270.8 767.4 281.2 760.4 302.1L739.6 364.6C732.6 385.4 718.8 399.3 697.9 406.2 677.1 413.2 652.8 416.7 625 416.7H541.7 458.3C430.6 416.7 406.2 420.1 385.4 427.1 364.6 434 350.7 447.9 343.7 468.7 336.8 489.6 336.8 510.4 343.7 531.2 350.7 552.1 364.6 566 385.4 572.9 406.2 579.9 430.6 583.3 458.3 583.3H541.7 625C652.8 583.3 677.1 586.8 697.9 593.7 718.8 600.7 732.6 614.6 739.6 635.4L760.4 697.9C767.4 718.7 777.8 729.2 791.7 729.2 805.6 729.2 819.4 722.2 833.3 708.3L875 666.7 916.7 625 958.3 583.3C972.2 569.4 982.6 552.1 989.6 531.2 996.5 510.4 996.5 489.6 989.6 468.7 982.6 447.9 972.2 430.6 958.3 416.7L916.7 375 875 333.3 833.3 291.7C819.4 277.8 805.6 270.8 791.7 270.8Z",
"width": 995
},
"search": [
"exit"
]
},
{
"uid": "06a8fb7f89285292492baf4e4f3657be",
"css": "terrain",
"code": 59475,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M340.4 21.3Q361.7 0 383 0 404.3 0 425.5 21.3 446.8 42.6 468.1 63.8 489.4 85.1 510.6 106.4 531.9 127.7 553.2 148.9 574.5 170.2 595.7 191.5 617 212.8 638.3 212.8 659.6 212.8 680.9 191.5 702.1 170.2 723.4 170.2 744.7 170.2 766 191.5 787.2 212.8 808.5 234 829.8 255.3 851.1 276.6 872.3 297.9 893.6 319.1 914.9 340.4 936.2 361.7 957.4 383 978.7 404.3 1000 425.5 1010.6 457.4 1021.3 489.4 1021.3 531.9 1021.3 574.5 1021.3 617 1021.3 659.6 1021.3 702.1 1021.3 744.7 1021.3 787.2 1021.3 829.8 1021.3 872.3 1021.3 914.9 1010.6 946.8 1000 978.7 968.1 989.4 936.2 1000 893.6 1000 851.1 1000 808.5 1000 766 1000 723.4 1000 680.9 1000 638.3 1000 595.7 1000 553.2 1000 510.6 1000 468.1 1000 425.5 1000 383 1000 340.4 1000 297.9 1000 255.3 1000 212.8 1000 170.2 1000 127.7 1000 85.1 1000 53.2 989.4 21.3 978.7 10.6 946.8 0 914.9 0 872.3 0 829.8 0 787.2 0 744.7 0 702.1 0 659.6 0 617 0 574.5 0 531.9 0 489.4 0 446.8 0 404.3 10.6 372.3 21.3 340.4 42.6 319.1 63.8 297.9 85.1 276.6 106.4 255.3 127.7 234 148.9 212.8 170.2 191.5 191.5 170.2 212.8 148.9 234 127.7 255.3 106.4 276.6 85.1 297.9 63.8 319.1 42.6 340.4 21.3M808.5 914.9Q851.1 914.9 883 904.3 914.9 893.6 925.5 861.7 936.2 829.8 936.2 787.2 936.2 744.7 936.2 702.1 936.2 659.6 936.2 617 936.2 574.5 925.5 542.6 914.9 510.6 893.6 489.4 872.3 468.1 851.1 446.8 829.8 425.5 808.5 404.3 787.2 383 766 361.7 744.7 340.4 723.4 340.4 702.1 340.4 680.9 361.7 659.6 383 638.3 383 617 383 595.7 361.7 574.5 340.4 553.2 319.1 531.9 297.9 510.6 276.6 489.4 255.3 468.1 234 446.8 212.8 425.5 191.5 404.3 170.2 383 170.2 361.7 170.2 340.4 191.5 319.1 212.8 297.9 234 276.6 255.3 255.3 276.6 234 297.9 212.8 319.1 191.5 340.4 170.2 361.7 148.9 383 127.7 404.3 106.4 425.5 95.7 457.4 85.1 489.4 85.1 531.9 85.1 574.5 85.1 617 85.1 659.6 85.1 702.1 85.1 744.7 85.1 787.2 85.1 829.8 95.7 861.7 106.4 893.6 138.3 904.3 170.2 914.9 212.8 914.9 255.3 914.9 297.9 914.9 340.4 914.9 383 914.9 425.5 914.9 468.1 914.9 510.6 914.9 553.2 914.9 595.7 914.9 638.3 914.9 680.9 914.9 723.4 914.9 766 914.9 808.5 914.9",
"width": 1021
},
"search": [
"terrain"
]
},
{
"uid": "c97c45befeea2eaee193c77fc6c6fd64",
"css": "trash",
"code": 59413,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M260.4 52.1Q270.8 20.8 302.1 10.4 333.3 0 375 0 416.7 0 458.3 0 500 0 531.3 10.4 562.5 20.8 572.9 52.1 583.3 83.3 593.8 114.6 604.2 145.8 635.4 156.3 666.7 166.7 708.3 166.7 750 166.7 781.3 177.1 812.5 187.5 822.9 218.8 833.3 250 833.3 291.7 833.3 333.3 833.3 375 833.3 416.7 822.9 447.9 812.5 479.2 791.7 500 770.8 520.8 760.4 552.1 750 583.3 750 625 750 666.7 750 708.3 750 750 750 791.7 750 833.3 750 875 750 916.7 739.6 947.9 729.2 979.2 697.9 989.6 666.7 1000 625 1000 583.3 1000 541.7 1000 500 1000 458.3 1000 416.7 1000 375 1000 333.3 1000 291.7 1000 250 1000 208.3 1000 166.7 1000 135.4 989.6 104.2 979.2 93.8 947.9 83.3 916.7 83.3 875 83.3 833.3 83.3 791.7 83.3 750 83.3 708.3 83.3 666.7 83.3 625 83.3 583.3 72.9 552.1 62.5 520.8 41.7 500 20.8 479.2 10.4 447.9 0 416.7 0 375 0 333.3 0 291.7 0 250 10.4 218.8 20.8 187.5 52.1 177.1 83.3 166.7 125 166.7 166.7 166.7 197.9 156.3 229.2 145.8 239.6 114.6 250 83.3 260.4 52.1M177.1 864.6Q187.5 895.8 208.3 895.8 229.2 895.8 239.6 864.6 250 833.3 250 791.7 250 750 250 708.3 250 666.7 250 625 250 583.3 239.6 552.1 229.2 520.8 208.3 520.8 187.5 520.8 177.1 552.1 166.7 583.3 166.7 625 166.7 666.7 166.7 708.3 166.7 750 166.7 791.7 166.7 833.3 177.1 864.6M385.4 906.3Q416.7 916.7 447.9 906.3 479.2 895.8 489.6 864.6 500 833.3 500 791.7 500 750 500 708.3 500 666.7 500 625 500 583.3 489.6 552.1 479.2 520.8 447.9 510.4 416.7 500 385.4 510.4 354.2 520.8 343.8 552.1 333.3 583.3 333.3 625 333.3 666.7 333.3 708.3 333.3 750 333.3 791.7 333.3 833.3 343.8 864.6 354.2 895.8 385.4 906.3M593.8 864.6Q604.2 895.8 625 895.8 645.8 895.8 656.3 864.6 666.7 833.3 666.7 791.7 666.7 750 666.7 708.3 666.7 666.7 666.7 625 666.7 583.3 656.3 552.1 645.8 520.8 625 520.8 604.2 520.8 593.8 552.1 583.3 583.3 583.3 625 583.3 666.7 583.3 708.3 583.3 750 583.3 791.7 583.3 833.3 593.8 864.6M625 416.7Q666.7 416.7 697.9 406.3 729.2 395.8 739.6 364.6 750 333.3 739.6 302.1 729.2 270.8 697.9 260.4 666.7 250 625 250 583.3 250 541.7 250 500 250 458.3 250 416.7 250 375 250 333.3 250 291.7 250 250 250 208.3 250 166.7 250 135.4 260.4 104.2 270.8 93.8 302.1 83.3 333.3 93.8 364.6 104.2 395.8 135.4 406.3 166.7 416.7 208.3 416.7 250 416.7 291.7 416.7 333.3 416.7 375 416.7 416.7 416.7 458.3 416.7 500 416.7 541.7 416.7 583.3 416.7 625 416.7M385.4 156.3Q416.7 166.7 447.9 156.3 479.2 145.8 479.2 125 479.2 104.2 447.9 93.8 416.7 83.3 385.4 93.8 354.2 104.2 354.2 125 354.2 145.8 385.4 156.3",
"width": 833
},
"search": [
"trash"
]
},
{
"uid": "7e5b51e48fad210964d9b2ef40e120ca",
"css": "refresh",
"code": 59463,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M178.6 0C154.8 0 133.9 3 116.1 8.9 98.2 14.9 83.3 23.8 71.4 35.7L35.7 71.4C23.8 83.3 14.9 98.2 8.9 116.1 3 133.9 0 154.8 0 178.6V250 321.4 392.9 464.3C0 488.1 3 508.9 8.9 526.8 14.9 544.6 26.8 556.5 44.6 562.5 62.5 568.5 80.4 568.5 98.2 562.5 116.1 556.5 128 544.6 133.9 526.8 139.9 508.9 142.9 488.1 142.9 464.3V392.9 321.4 250C142.9 226.2 145.8 205.4 151.8 187.5 157.7 169.6 169.6 157.7 187.5 151.8 205.4 145.8 226.2 142.9 250 142.9H321.4 392.9 464.3 535.7 607.1C631 142.9 651.8 145.8 669.6 151.8 687.5 157.7 696.4 166.7 696.4 178.6 696.4 190.5 690.5 202.4 678.6 214.3 666.7 226.2 660.7 238.1 660.7 250 660.7 261.9 669.6 270.8 687.5 276.8 705.4 282.7 726.2 285.7 750 285.7H821.4C845.2 285.7 866.1 282.7 883.9 276.8 901.8 270.8 913.7 258.9 919.6 241.1 925.6 223.2 928.6 202.4 928.6 178.6V107.1C928.6 83.3 925.6 62.5 919.6 44.6 913.7 26.8 904.8 17.9 892.9 17.9 881 17.9 869 23.8 857.1 35.7 845.2 47.6 833.3 53.6 821.4 53.6 809.5 53.6 797.6 47.6 785.7 35.7 773.8 23.8 758.9 14.9 741.1 8.9 723.2 3 702.4 0 678.6 0H607.1 535.7 464.3 392.9 321.4 250ZM928.6 433C919.6 433 910.7 434.5 901.8 437.5 883.9 443.5 872 455.4 866.1 473.2 860.1 491.1 857.1 511.9 857.1 535.7V607.1 678.6 750C857.1 773.8 854.2 794.6 848.2 812.5 842.3 830.4 830.4 842.3 812.5 848.2 794.6 854.2 773.8 857.1 750 857.1H678.6 607.1 535.7 464.3 392.9C369 857.1 348.2 854.2 330.4 848.2 312.5 842.3 303.6 833.3 303.6 821.4 303.6 809.5 309.5 797.6 321.4 785.7 333.3 773.8 339.3 761.9 339.3 750 339.3 738.1 330.4 729.2 312.5 723.2 294.6 717.3 273.8 714.3 250 714.3H178.6C154.8 714.3 133.9 717.3 116.1 723.2 98.2 729.2 86.3 741.1 80.4 758.9 74.4 776.8 71.4 797.6 71.4 821.4V892.9C71.4 916.7 74.4 937.5 80.4 955.4 86.3 973.2 95.2 982.1 107.1 982.1 119 982.1 131 976.2 142.9 964.3 154.8 952.4 166.7 946.4 178.6 946.4 190.5 946.4 202.4 952.4 214.3 964.3 226.2 976.2 241.1 985.1 258.9 991.1 276.8 997 297.6 1000 321.4 1000H392.9 464.3 535.7 607.1 678.6 750 821.4C845.2 1000 866.1 997 883.9 991.1 901.8 985.1 916.7 976.2 928.6 964.3L964.3 928.6C976.2 916.7 985.1 901.8 991.1 883.9 997 866.1 1000 845.2 1000 821.4V750 678.6 607.1 535.7C1000 511.9 997 491.1 991.1 473.2 985.1 455.4 973.2 443.5 955.4 437.5 946.4 434.5 937.5 433 928.6 433Z",
"width": 1000
},
"search": [
"refresh"
]
},
{
"uid": "59925475e7cc98ccd821771cff586bb6",
"css": "pencil_",
"code": 59476,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M836.4 0C824.2 0 812.1 6.1 800 18.2L763.6 54.5 727.3 90.9 690.9 127.3C678.8 139.4 672.7 151.5 672.7 163.6 672.7 175.8 678.8 187.9 690.9 200L727.3 236.4 763.6 272.7 800 309.1C812.1 321.2 824.2 327.3 836.4 327.3 848.5 327.3 860.6 321.2 872.7 309.1L909.1 272.7 945.5 236.4 981.8 200C993.9 187.9 1000 175.8 1000 163.6 1000 151.5 993.9 139.4 981.8 127.3L945.5 90.9 909.1 54.5 872.7 18.2C860.6 6.1 848.5 0 836.4 0ZM545.5 290.9C533.3 290.9 521.2 297 509.1 309.1L472.7 345.5 436.4 381.8 400 418.2 363.6 454.5 327.3 490.9 290.9 527.3 254.5 563.6 218.2 600 181.8 636.4 145.5 672.7 109.1 709.1 72.7 745.5 36.4 781.8C24.2 793.9 15.2 809.1 9.1 827.3 3 845.5 0 866.7 0 890.9 0 915.2 3 936.4 9.1 954.5 15.2 972.7 27.3 984.8 45.5 990.9 63.6 997 84.8 1000 109.1 1000 133.3 1000 154.5 997 172.7 990.9 190.9 984.8 206.1 975.8 218.2 963.6L254.5 927.3 290.9 890.9 327.3 854.5 363.6 818.2 400 781.8 436.4 745.5 472.7 709.1 509.1 672.7 545.5 636.4 581.8 600 618.2 563.6 654.5 527.3 690.9 490.9C703 478.8 709.1 466.7 709.1 454.5 709.1 442.4 703 430.3 690.9 418.2L654.5 381.8 618.2 345.5 581.8 309.1C569.7 297 557.6 290.9 545.5 290.9ZM254.5 654.5C266.7 654.5 278.8 660.6 290.9 672.7L327.3 709.1C339.4 721.2 345.5 733.3 345.5 745.5 345.5 757.6 339.4 769.7 327.3 781.8L290.9 818.2 254.5 854.5 218.2 890.9C206.1 903 190.9 912.1 172.7 918.2 154.5 924.2 136.4 924.2 118.2 918.2 100 912.1 87.9 900 81.8 881.8 75.8 863.6 75.8 845.5 81.8 827.3 87.9 809.1 97 793.9 109.1 781.8L145.5 745.5 181.8 709.1 218.2 672.7C230.3 660.6 242.4 654.5 254.5 654.5Z",
"width": 1000
},
"search": [
"pencil"
]
},
{
"uid": "346f9aef245e0c2ded44e31ad7c66acb",
"css": "mode-pvp",
"code": 59477,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M305.8 0C296.1 0 286.4 1.6 276.7 4.9 257.3 11.3 244.3 24.3 237.9 43.7 231.4 63.1 231.4 82.5 237.9 101.9 244.3 121.4 254 137.5 267 150.5L305.8 189.3 344.7 228.2 383.5 267C396.4 279.9 409.4 286.4 422.3 286.4 435.3 286.4 448.2 279.9 461.2 267L500 228.2C512.9 215.2 519.4 202.3 519.4 189.3 519.4 176.4 512.9 163.4 500 150.5L461.2 111.7 422.3 72.8 383.5 34C370.6 21 354.4 11.3 335 4.9 325.2 1.6 315.5 0 305.8 0ZM927.2 0C917.5 0 907.8 1.6 898.1 4.9 878.6 11.3 862.5 21 849.5 34L810.7 72.8 771.8 111.7 733 150.5 694.2 189.3 655.3 228.2 616.5 267 577.7 305.8 538.8 344.7 500 383.5 461.2 422.3 422.3 461.2 383.5 500C370.6 512.9 354.4 522.7 335 529.1 315.5 535.6 296.1 535.6 276.7 529.1 257.3 522.7 241.1 512.9 228.2 500 215.2 487.1 199 477.3 179.6 470.9 160.2 464.4 140.8 464.4 121.4 470.9 101.9 477.3 89 490.3 82.5 509.7 76.1 529.1 76.1 548.5 82.5 568 89 587.4 98.7 603.6 111.7 616.5 124.6 629.5 134.3 645.6 140.8 665 147.2 684.5 147.2 703.9 140.8 723.3 134.3 742.7 124.6 758.9 111.7 771.8L72.8 810.7 34 849.5C21 862.5 11.3 878.6 4.9 898.1-1.6 917.5-1.6 936.9 4.9 956.3 11.3 975.7 24.3 988.7 43.7 995.1 63.1 1001.6 82.5 1001.6 101.9 995.1 121.4 988.7 137.5 979 150.5 966L189.3 927.2 228.2 888.3C241.1 875.4 257.3 865.7 276.7 859.2 296.1 852.8 315.5 852.8 335 859.2 354.4 865.7 370.6 875.4 383.5 888.3 396.4 901.3 412.6 911 432 917.5 451.5 923.9 470.9 923.9 490.3 917.5 509.7 911 522.7 898.1 529.1 878.6 535.6 859.2 535.6 839.8 529.1 820.4 522.7 801 512.9 784.8 500 771.8 487.1 758.9 477.3 742.7 470.9 723.3 464.4 703.9 464.4 684.5 470.9 665 477.3 645.6 487.1 629.5 500 616.5L538.8 577.7 577.7 538.8 616.5 500 655.3 461.2 694.2 422.3 733 383.5 771.8 344.7 810.7 305.8 849.5 267 888.3 228.2 927.2 189.3 966 150.5C979 137.5 988.7 121.4 995.1 101.9 1001.6 82.5 1001.6 63.1 995.1 43.7 988.7 24.3 975.7 11.3 956.3 4.9 946.6 1.6 936.9 0 927.2 0ZM1082.5 466C1072.8 466 1063.1 467.6 1053.4 470.9 1034 477.3 1017.8 487.1 1004.9 500 991.9 512.9 975.7 522.7 956.3 529.1 936.9 535.6 917.5 535.6 898.1 529.1 878.6 522.7 862.5 512.9 849.5 500 836.6 487.1 823.6 480.6 810.7 480.6 797.7 480.6 784.8 487.1 771.8 500L733 538.8C720.1 551.8 713.6 564.7 713.6 577.7 713.6 590.6 720.1 603.6 733 616.5 746 629.5 755.7 645.6 762.1 665 768.6 684.5 768.6 703.9 762.1 723.3 755.7 742.7 746 758.9 733 771.8 720.1 784.8 710.4 801 703.9 820.4 697.4 839.8 697.4 859.2 703.9 878.6 710.4 898.1 723.3 911 742.7 917.5 762.1 923.9 781.6 923.9 801 917.5 820.4 911 836.6 901.3 849.5 888.3 862.5 875.4 878.6 865.7 898.1 859.2 917.5 852.8 936.9 852.8 956.3 859.2 975.7 865.7 991.9 875.4 1004.9 888.3L1043.7 927.2 1082.5 966C1095.5 979 1111.7 988.7 1131.1 995.1 1150.5 1001.6 1169.9 1001.6 1189.3 995.1 1208.7 988.7 1221.7 975.7 1228.2 956.3 1234.6 936.9 1234.6 917.5 1228.2 898.1 1221.7 878.6 1212 862.5 1199 849.5L1160.2 810.7 1121.4 771.8C1108.4 758.9 1098.7 742.7 1092.2 723.3 1085.8 703.9 1085.8 684.5 1092.2 665 1098.7 645.6 1108.4 629.5 1121.4 616.5 1134.3 603.6 1144 587.4 1150.5 568 1157 548.5 1157 529.1 1150.5 509.7 1144 490.3 1131.1 477.3 1111.7 470.9 1101.9 467.6 1092.2 466 1082.5 466Z",
"width": 1233
},
"search": [
"mode-pvp"
]
},
{
"uid": "8d74cd519427de451b48df6554aaf593",
"css": "mode-attack",
"code": 59478,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M849.5 34Q868.9 14.6 898.1 4.9 927.2-4.9 956.3 4.9 985.4 14.6 995.1 43.7 1004.9 72.8 995.1 101.9 985.4 131.1 966 150.5 946.6 169.9 927.2 189.3 907.8 208.7 888.3 228.2 868.9 247.6 849.5 267 830.1 286.4 810.7 305.8 791.3 325.2 771.8 344.7 752.4 364.1 733 383.5 713.6 402.9 694.2 422.3 674.8 441.7 655.3 461.2 635.9 480.6 616.5 500 597.1 519.4 577.7 538.8 558.3 558.3 538.8 577.7 519.4 597.1 500 616.5 480.6 635.9 470.9 665 461.2 694.2 470.9 723.3 480.6 752.4 500 771.8 519.4 791.3 529.1 820.4 538.8 849.5 529.1 878.6 519.4 907.8 490.3 917.5 461.2 927.2 432 917.5 402.9 907.8 383.5 888.3 364.1 868.9 335 859.2 305.8 849.5 276.7 859.2 247.6 868.9 228.2 888.3 208.7 907.8 189.3 927.2 169.9 946.6 150.5 966 131.1 985.4 101.9 995.1 72.8 1004.9 43.7 995.1 14.6 985.4 4.9 956.3-4.9 927.2 4.9 898.1 14.6 868.9 34 849.5 53.4 830.1 72.8 810.7 92.2 791.3 111.7 771.8 131.1 752.4 140.8 723.3 150.5 694.2 140.8 665 131.1 635.9 111.7 616.5 92.2 597.1 82.5 568 72.8 538.8 82.5 509.7 92.2 480.6 121.4 470.9 150.5 461.2 179.6 470.9 208.7 480.6 228.2 500 247.6 519.4 276.7 529.1 305.8 538.8 335 529.1 364.1 519.4 383.5 500 402.9 480.6 422.3 461.2 441.7 441.7 461.2 422.3 480.6 402.9 500 383.5 519.4 364.1 538.8 344.7 558.3 325.2 577.7 305.8 597.1 286.4 616.5 267 635.9 247.6 655.3 228.2 674.8 208.7 694.2 189.3 713.6 169.9 733 150.5 752.4 131.1 771.8 111.7 791.3 92.2 810.7 72.8 830.1 53.4 849.5 34",
"width": 1000
},
"search": [
"mode-attack"
]
},
{
"uid": "09e5948ca30589e5baa8d27e1c509588",
"css": "mode-survival",
"code": 59479,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M9.7 43.5Q19.3 14.5 48.3 4.8 77.3-4.8 106.3 4.8 135.3 14.5 154.6 33.8 173.9 53.1 193.2 72.5 212.6 91.8 231.9 111.1 251.2 130.4 280.2 140.1 309.2 149.8 347.8 149.8 386.5 149.8 425.1 149.8 463.8 149.8 502.4 149.8 541.1 149.8 579.7 149.8 618.4 149.8 647.3 140.1 676.3 130.4 695.7 111.1 715 91.8 734.3 72.5 753.6 53.1 772.9 33.8 792.3 14.5 821.3 4.8 850.2-4.8 879.2 4.8 908.2 14.5 917.9 43.5 927.5 72.5 927.5 111.1 927.5 149.8 927.5 188.4 927.5 227.1 927.5 265.7 927.5 304.3 927.5 343 927.5 381.6 927.5 420.3 927.5 458.9 927.5 497.6 927.5 536.2 927.5 574.9 927.5 613.5 917.9 642.5 908.2 671.5 888.9 690.8 869.6 710.1 850.2 729.5 830.9 748.8 811.6 768.1 792.3 787.4 772.9 806.8 753.6 826.1 734.3 845.4 715 864.7 695.7 884.1 676.3 903.4 657 922.7 637.7 942 618.4 961.4 599 980.7 570 990.3 541.1 1000 502.4 1000 463.8 1000 425.1 1000 386.5 1000 357.5 990.3 328.5 980.7 309.2 961.4 289.9 942 270.5 922.7 251.2 903.4 231.9 884.1 212.6 864.7 193.2 845.4 173.9 826.1 154.6 806.8 135.3 787.4 115.9 768.1 96.6 748.8 77.3 729.5 58 710.1 38.6 690.8 19.3 671.5 9.7 642.5 0 613.5 0 574.9 0 536.2 0 497.6 0 458.9 0 420.3 0 381.6 0 343 0 304.3 0 265.7 0 227.1 0 188.4 0 149.8 0 111.1 0 72.5 9.7 43.5",
"width": 928
},
"search": [
"mode-survival"
]
},
{
"uid": "3a617b3ed2fe766baec5b723b1d9502f",
"css": "command-rally",
"code": 59480,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M166.7 83.3Q208.3 41.7 270.8 20.8 333.3 0 416.7 0 500 0 583.3 0 666.7 0 729.2 20.8 791.7 41.7 833.3 83.3 875 125 916.7 166.7 958.3 208.3 979.2 270.8 1000 333.3 1000 416.7 1000 500 1000 583.3 1000 666.7 979.2 729.2 958.3 791.7 916.7 833.3 875 875 833.3 916.7 791.7 958.3 729.2 979.2 666.7 1000 583.3 1000 500 1000 416.7 1000 333.3 1000 270.8 979.2 208.3 958.3 166.7 916.7 125 875 83.3 833.3 41.7 791.7 20.8 729.2 0 666.7 0 583.3 0 500 0 416.7 0 333.3 20.8 270.8 41.7 208.3 83.3 166.7 125 125 166.7 83.3M437.5 812.5Q500 833.3 562.5 812.5 625 791.7 666.7 750 708.3 708.3 750 666.7 791.7 625 812.5 562.5 833.3 500 812.5 437.5 791.7 375 750 333.3 708.3 291.7 666.7 250 625 208.3 562.5 187.5 500 166.7 437.5 187.5 375 208.3 333.3 250 291.7 291.7 250 333.3 208.3 375 187.5 437.5 166.7 500 187.5 562.5 208.3 625 250 666.7 291.7 708.3 333.3 750 375 791.7 437.5 812.5",
"width": 1000
},
"search": [
"command-rally"
]
},
{
"uid": "90fb5a431ca95c46a446c8f4a481d5ce",
"css": "command-attack",
"code": 59481,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M670.2 74.5Q712.8 31.9 776.6 10.6 840.4-10.6 904.3 10.6 968.1 31.9 989.4 95.7 1010.6 159.6 989.4 223.4 968.1 287.2 925.5 329.8 883 372.3 840.4 414.9 797.9 457.4 755.3 500 712.8 542.6 670.2 585.1 627.7 627.7 585.1 670.2 542.6 712.8 542.6 755.3 542.6 797.9 585.1 840.4 627.7 883 627.7 925.5 627.7 968.1 585.1 968.1 542.6 968.1 500 925.5 457.4 883 414.9 883 372.3 883 329.8 925.5 287.2 968.1 223.4 989.4 159.6 1010.6 95.7 989.4 31.9 968.1 10.6 904.3-10.6 840.4 10.6 776.6 31.9 712.8 74.5 670.2 117 627.7 117 585.1 117 542.6 74.5 500 31.9 457.4 31.9 414.9 31.9 372.3 74.5 372.3 117 372.3 159.6 414.9 202.1 457.4 244.7 457.4 287.2 457.4 329.8 414.9 372.3 372.3 414.9 329.8 457.4 287.2 500 244.7 542.6 202.1 585.1 159.6 627.7 117 670.2 74.5",
"width": 1000
},
"search": [
"command-attack"
]
},
{
"uid": "17ef812a059c83b5ea3612f860f9569a",
"css": "command-retreat",
"code": 59482,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M352.3 45.5Q397.7 0 443.2 0 488.6 0 511.4 68.2 534.1 136.4 556.8 204.5 579.5 272.7 647.7 295.5 715.9 318.2 806.8 318.2 897.7 318.2 965.9 340.9 1034.1 363.6 1056.8 431.8 1079.5 500 1056.8 568.2 1034.1 636.4 965.9 659.1 897.7 681.8 806.8 681.8 715.9 681.8 647.7 704.5 579.5 727.3 556.8 795.5 534.1 863.6 511.4 931.8 488.6 1000 443.2 1000 397.7 1000 352.3 954.5 306.8 909.1 261.4 863.6 215.9 818.2 170.5 772.7 125 727.3 79.5 681.8 34.1 636.4 11.4 568.2-11.4 500 11.4 431.8 34.1 363.6 79.5 318.2 125 272.7 170.5 227.3 215.9 181.8 261.4 136.4 306.8 90.9 352.3 45.5",
"width": 1068
},
"search": [
"command-retreat"
]
},
{
"uid": "1bc31b80669cb5edc2ee5d1370554bc9",
"css": "players",
"code": 59483,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M370.1 55.1Q401.6 23.6 448.8 7.9 496.1-7.9 543.3 7.9 590.6 23.6 622 55.1 653.5 86.6 685 118.1 716.5 149.6 732.3 196.9 748 244.1 732.3 291.3 716.5 338.6 685 370.1 653.5 401.6 653.5 433.1 653.5 464.6 685 496.1 716.5 527.6 748 559.1 779.5 590.6 811 622 842.5 653.5 874 685 905.5 716.5 937 748 968.5 779.5 984.3 826.8 1000 874 984.3 921.3 968.5 968.5 921.3 984.3 874 1000 811 1000 748 1000 685 1000 622 1000 559.1 1000 496.1 1000 433.1 1000 370.1 1000 307.1 1000 244.1 1000 181.1 1000 118.1 1000 70.9 984.3 23.6 968.5 7.9 921.3-7.9 874 7.9 826.8 23.6 779.5 55.1 748 86.6 716.5 118.1 685 149.6 653.5 181.1 622 212.6 590.6 244.1 559.1 275.6 527.6 307.1 496.1 338.6 464.6 338.6 433.1 338.6 401.6 307.1 370.1 275.6 338.6 259.8 291.3 244.1 244.1 259.8 196.9 275.6 149.6 307.1 118.1 338.6 86.6 370.1 55.1",
"width": 992
},
"search": [
"players"
]
},
{
"uid": "2073dbd997e5d8e1ffc1322d13ba5585",
"css": "chat",
"code": 59484,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M129 64.5Q161.3 32.3 209.7 16.1 258.1 0 322.6 0 387.1 0 451.6 0 516.1 0 580.6 0 645.2 0 709.7 0 774.2 0 822.6 16.1 871 32.3 903.2 64.5 935.5 96.8 967.7 129 1000 161.3 1016.1 209.7 1032.3 258.1 1032.3 322.6 1032.3 387.1 1032.3 451.6 1032.3 516.1 1016.1 564.5 1000 612.9 967.7 645.2 935.5 677.4 903.2 709.7 871 741.9 822.6 758.1 774.2 774.2 709.7 774.2 645.2 774.2 580.6 774.2 516.1 774.2 451.6 774.2 387.1 774.2 338.7 790.3 290.3 806.5 274.2 854.8 258.1 903.2 241.9 951.6 225.8 1000 193.5 1000 161.3 1000 129 967.7 96.8 935.5 64.5 903.2 32.3 871 16.1 822.6 0 774.2 0 709.7 0 645.2 0 580.6 0 516.1 0 451.6 0 387.1 0 322.6 0 258.1 16.1 209.7 32.3 161.3 64.5 129 96.8 96.8 129 64.5",
"width": 1032
},
"search": [
"chat"
]
},
{
"uid": "9dd9e835aebe1060ba7190ad2b2ed951",
"css": "zoom",
"code": 59415,
"src": "fontawesome"
}
]
}

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="12"
height="12"
viewBox="0 0 12 12"
sodipodi:docname="admin.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="52.678571"
inkscape:cx="7.760678"
inkscape:cy="6.4128813"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g827" />
<g
id="g827"
transform="translate(-1,-1)">
<path
id="path823"
style="fill:#ffffff;fill-opacity:1"
d="M 6.125,5.625 Q 6.25,5.25 6.625,5.125 7,5 7.375,5.125 7.75,5.25 7.875,5.625 8,6 7.875,6.375 7.75,6.75 7.375,6.875 7,7 6.625,6.875 6.25,6.75 6.125,6.375 6,6 6.125,5.625 M 3,1.5 Q 3.25,1.25 3.625,1.125 4,1 4.5,1 5,1 5.5,1 6,1 6.5,1 7,1 7.5,1 8,1 8.5,1 9,1 9.5,1 10,1 10.375,1.125 10.75,1.25 11,1.5 11.25,1.75 11.5,2 11.75,2.25 12,2.5 12.25,2.75 12.5,3 12.75,3.25 12.875,3.625 13,4 13,4.5 13,5 13,5.5 13,6 13,6.5 13,7 12.875,7.375 12.75,7.75 12.5,8 12.25,8.25 12.125,8.625 12,9 12,9.5 12,10 11.875,10.375 11.75,10.75 11.5,11 11.25,11.25 11,11.5 10.75,11.75 10.5,12 10.25,12.25 10,12.5 9.75,12.75 9.375,12.875 9,13 8.5,13 8,13 7.5,13 7,13 6.5,13 6,13 5.5,13 5,13 4.625,12.875 4.25,12.75 4,12.5 3.75,12.25 3.5,12 3.25,11.75 3,11.5 2.75,11.25 2.5,11 2.25,10.75 2.125,10.375 2,10 2,9.5 2,9 1.875,8.625 1.75,8.25 1.5,8 1.25,7.75 1.125,7.375 1,7 1,6.5 1,6 1,5.5 1,5 1,4.5 1,4 1.125,3.625 1.25,3.25 1.5,3 1.75,2.75 2,2.5 2.25,2.25 2.5,2 2.75,1.75 3,1.5 M 7.5,10 Q 8,10 8.375,9.875 8.75,9.75 8.75,9.5 8.75,9.25 8.375,9.125 8,9 7.5,9 7,9 6.5,9 6,9 5.625,9.125 5.25,9.25 5.25,9.5 5.25,9.75 5.625,9.875 6,10 6.5,10 q 0.5,0 1,0 m 0,-2 Q 8,8 8.375,7.875 8.75,7.75 9,7.5 9.25,7.25 9.5,7 9.75,6.75 9.875,6.375 10,6 9.875,5.625 9.75,5.25 9.5,5 9.25,4.75 9,4.5 8.75,4.25 8.375,4.125 8,4 7.5,4 7,4 6.5,4 6,4 5.625,4.125 5.25,4.25 5,4.5 4.75,4.75 4.5,5 4.25,5.25 4.125,5.625 4,6 4.125,6.375 4.25,6.75 4.5,7 4.75,7.25 5,7.5 5.25,7.75 5.625,7.875 6,8 6.5,8 7,8 7.5,8"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="10"
height="11"
viewBox="0 0 10 11"
sodipodi:docname="book.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="18.624687"
inkscape:cx="-15.26171"
inkscape:cy="11.56781"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g24" />
<g
id="g24"
transform="translate(-2,-2)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 4.5,2 C 4.1666667,2 3.875,2.0416667 3.625,2.125 3.375,2.2083333 3.1666667,2.3333333 3,2.5 L 2.5,3 C 2.3333333,3.1666667 2.2083333,3.375 2.125,3.625 2.0416667,3.875 2,4.1666667 2,4.5 v 1 1 1 1 1 1 1 c 0,0.333333 0.041667,0.625 0.125,0.875 0.083333,0.25 0.25,0.416667 0.5,0.5 C 2.875,12.958333 3.1666667,13 3.5,13 h 1 1 1 1 1 1 c 0.3333333,0 0.625,-0.04167 0.875,-0.125 C 10.625,12.79167 10.833333,12.666667 11,12.5 L 11.5,12 c 0.166667,-0.166667 0.291667,-0.375 0.375,-0.625 C 11.958333,11.125 12,10.833333 12,10.5 v -1 -1 -1 -1 -1 -1 -1 C 12,3.1666667 11.95833,2.875 11.875,2.625 11.79167,2.375 11.625,2.2083333 11.375,2.125 11.125,2.0416667 10.833333,2 10.5,2 h -1 -1 -1 -1 -1 z m 1,1 h 1 1 1 1 c 0.3333333,0 0.625,0.041667 0.875,0.125 0.25,0.083333 0.416667,0.25 0.5,0.5 C 10.958333,3.875 11,4.1666667 11,4.5 v 1 1 1 1 1 c 0,0.3333333 -0.04167,0.625 -0.125,0.875 -0.08333,0.25 -0.25,0.416667 -0.5,0.5 C 10.125,10.958333 9.8333333,11 9.5,11 h -1 -1 -1 -1 C 5.1666667,11 4.875,10.95833 4.625,10.875 4.375,10.79167 4.2083333,10.625 4.125,10.375 4.0416667,10.125 4,9.8333333 4,9.5 v -1 -1 -1 -1 -1 C 4,4.1666667 4.0416667,3.875 4.125,3.625 4.2083333,3.375 4.375,3.2083333 4.625,3.125 4.875,3.0416667 5.1666667,3 5.5,3 Z m 1,1 C 6.1666667,4 5.875,4.041667 5.625,4.125 c -0.25,0.083333 -0.4166667,0.25 -0.5,0.5 -0.083333,0.25 -0.083333,0.5 0,0.75 0.083333,0.25 0.25,0.4166667 0.5,0.5 C 5.875,5.9583333 6.1666667,6 6.5,6 h 1 1 c 0.3333333,0 0.625,-0.041667 0.875,-0.125 0.25,-0.083333 0.4166667,-0.25 0.5,-0.5 0.083333,-0.25 0.083333,-0.5 0,-0.75 C 9.791667,4.375 9.625,4.2083333 9.375,4.125 9.125,4.0416667 8.8333333,4 8.5,4 h -1 z m 0,3 C 6.1666667,7 5.875,7.0416667 5.625,7.125 5.375,7.2083333 5.25,7.3333333 5.25,7.5 5.25,7.6666667 5.375,7.7916667 5.625,7.875 5.875,7.9583333 6.1666667,8 6.5,8 h 1 1 C 8.8333333,8 9.125,7.9583333 9.375,7.875 9.625,7.7916667 9.75,7.6666667 9.75,7.5 9.75,7.3333333 9.625,7.2083333 9.375,7.125 9.125,7.0416667 8.8333333,7 8.5,7 h -1 z m 0,2 C 6.1666667,9 5.875,9.0416667 5.625,9.125 5.375,9.2083333 5.25,9.3333333 5.25,9.5 5.25,9.6666667 5.375,9.7916667 5.625,9.875 5.875,9.9583333 6.1666667,10 6.5,10 h 1 1 C 8.8333333,10 9.125,9.9583333 9.375,9.875 9.625,9.7916667 9.75,9.6666667 9.75,9.5 9.75,9.3333333 9.625,9.2083333 9.375,9.125 9.125,9.0416667 8.8333333,9 8.5,9 h -1 z"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="8"
height="7.75"
viewBox="0 0 8 7.75"
sodipodi:docname="chat.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="23.6"
inkscape:cx="-8.033898"
inkscape:cy="4.0042373"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g16" />
<g
id="g16"
transform="translate(-1,-1)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 2,1.5 Q 2.25,1.25 2.625,1.125 3,1 3.5,1 4,1 4.5,1 5,1 5.5,1 6,1 6.5,1 7,1 7.375,1.125 7.75,1.25 8,1.5 8.25,1.75 8.5,2 8.75,2.25 8.875,2.625 9,3 9,3.5 9,4 9,4.5 9,5 8.875,5.375 8.75,5.75 8.5,6 8.25,6.25 8,6.5 7.75,6.75 7.375,6.875 7,7 6.5,7 6,7 5.5,7 5,7 4.5,7 4,7 3.625,7.125 3.25,7.25 3.125,7.625 3,8 2.875,8.375 2.75,8.75 2.5,8.75 2.25,8.75 2,8.5 1.75,8.25 1.5,8 1.25,7.75 1.125,7.375 1,7 1,6.5 1,6 1,5.5 1,5 1,4.5 1,4 1,3.5 1,3 1.125,2.625 1.25,2.25 1.5,2 1.75,1.75 2,1.5"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg12"
width="5.875"
height="5.875"
viewBox="0 0 5.875 5.875"
sodipodi:docname="command-attack.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata18">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs16" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview14"
showgrid="false"
inkscape:zoom="29.5"
inkscape:cx="-7.706568"
inkscape:cy="1.5137712"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g61" />
<g
id="g61"
transform="translate(-1.0625,-1.0625)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 5,1.5 Q 5.25,1.25 5.625,1.125 6,1 6.375,1.125 6.75,1.25 6.875,1.625 7,2 6.875,2.375 6.75,2.75 6.5,3 6.25,3.25 6,3.5 5.75,3.75 5.5,4 5.25,4.25 5,4.5 4.75,4.75 4.5,5 4.25,5.25 4.25,5.5 4.25,5.75 4.5,6 4.75,6.25 4.75,6.5 4.75,6.75 4.5,6.75 4.25,6.75 4,6.5 3.75,6.25 3.5,6.25 3.25,6.25 3,6.5 2.75,6.75 2.375,6.875 2,7 1.625,6.875 1.25,6.75 1.125,6.375 1,6 1.125,5.625 1.25,5.25 1.5,5 1.75,4.75 1.75,4.5 1.75,4.25 1.5,4 1.25,3.75 1.25,3.5 1.25,3.25 1.5,3.25 1.75,3.25 2,3.5 2.25,3.75 2.5,3.75 2.75,3.75 3,3.5 3.25,3.25 3.5,3 3.75,2.75 4,2.5 4.25,2.25 4.5,2 4.75,1.75 5,1.5"
id="path59"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="6"
height="6"
viewBox="0 0 6 6"
sodipodi:docname="command-rally.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="29.5"
inkscape:cx="-12.118644"
inkscape:cy="2.7966102"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g88" />
<g
id="g88"
transform="translate(-1,-1)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 2,1.5 Q 2.25,1.25 2.625,1.125 3,1 3.5,1 4,1 4.5,1 5,1 5.375,1.125 5.75,1.25 6,1.5 6.25,1.75 6.5,2 6.75,2.25 6.875,2.625 7,3 7,3.5 7,4 7,4.5 7,5 6.875,5.375 6.75,5.75 6.5,6 6.25,6.25 6,6.5 5.75,6.75 5.375,6.875 5,7 4.5,7 4,7 3.5,7 3,7 2.625,6.875 2.25,6.75 2,6.5 1.75,6.25 1.5,6 1.25,5.75 1.125,5.375 1,5 1,4.5 1,4 1,3.5 1,3 1.125,2.625 1.25,2.25 1.5,2 1.75,1.75 2,1.5 M 3.625,5.875 Q 4,6 4.375,5.875 4.75,5.75 5,5.5 5.25,5.25 5.5,5 5.75,4.75 5.875,4.375 6,4 5.875,3.625 5.75,3.25 5.5,3 5.25,2.75 5,2.5 4.75,2.25 4.375,2.125 4,2 3.625,2.125 3.25,2.25 3,2.5 2.75,2.75 2.5,3 2.25,3.25 2.125,3.625 2,4 2.125,4.375 2.25,4.75 2.5,5 2.75,5.25 3,5.5 3.25,5.75 3.625,5.875"
id="path84"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg22"
width="5.875"
height="5.5"
viewBox="0 0 5.875 5.5"
sodipodi:docname="command-retreat.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata28">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs26" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview24"
showgrid="false"
inkscape:zoom="29.5"
inkscape:cx="-14.520127"
inkscape:cy="1.4618644"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g36" />
<g
id="g36"
transform="translate(-1.0625,-1.25)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 3,1.5 Q 3.25,1.25 3.5,1.25 3.75,1.25 3.875,1.625 4,2 4.125,2.375 4.25,2.75 4.625,2.875 5,3 5.5,3 6,3 6.375,3.125 6.75,3.25 6.875,3.625 7,4 6.875,4.375 6.75,4.75 6.375,4.875 6,5 5.5,5 5,5 4.625,5.125 4.25,5.25 4.125,5.625 4,6 3.875,6.375 3.75,6.75 3.5,6.75 3.25,6.75 3,6.5 2.75,6.25 2.5,6 2.25,5.75 2,5.5 1.75,5.25 1.5,5 1.25,4.75 1.125,4.375 1,4 1.125,3.625 1.25,3.25 1.5,3 1.75,2.75 2,2.5 2.25,2.25 2.5,2 2.75,1.75 3,1.5"
id="path34"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="10"
height="8.9375"
viewBox="0 0 10 8.9375"
sodipodi:docname="crafting.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="61.458335"
inkscape:cx="3.677966"
inkscape:cy="5.0935595"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<g
id="g5253"
transform="translate(-1,-2.0625)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 9.125,2.625 Q 9.25,2.25 9.625,2.125 10,2 10.375,2.125 10.75,2.25 10.875,2.625 11,3 11,3.5 q 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 -0.125,0.875 -0.125,0.375 -0.5,0.5 Q 10,11 9.5,11 9,11 8.5,11 8,11 7.5,11 7,11 6.5,11 6,11 5.5,11 5,11 4.5,11 4,11 3.5,11 3,11 2.5,11 2,11 1.625,10.875 1.25,10.75 1.125,10.375 1,10 1,9.5 1,9 1,8.5 1,8 1,7.5 1,7 1,6.5 1,6 1,5.5 1,5 1,4.5 1,4 1.125,3.625 1.25,3.25 1.5,3.25 1.75,3.25 2,3.5 2.25,3.75 2.5,4 2.75,4.25 3,4.5 3.25,4.75 3.5,5 3.75,5.25 4,5.5 4.25,5.75 4.5,5.75 4.75,5.75 4.875,5.375 5,5 5,4.5 5,4 5.125,3.625 5.25,3.25 5.5,3.25 5.75,3.25 6,3.5 6.25,3.75 6.5,4 6.75,4.25 7,4.5 7.25,4.75 7.5,5 7.75,5.25 8,5.5 8.25,5.75 8.5,5.75 8.75,5.75 8.875,5.375 9,5 9,4.5 9,4 9,3.5 9,3 9.125,2.625 M 8.5,10 Q 9,10 9.375,9.875 9.75,9.75 9.875,9.375 10,9 10,8.5 10,8 9.875,7.625 9.75,7.25 9.375,7.125 9,7 8.625,6.875 8.25,6.75 8,6.5 7.75,6.25 7.5,6 7.25,5.75 7,5.5 6.75,5.25 6.5,5.25 6.25,5.25 6.125,5.625 6,6 5.875,6.375 5.75,6.75 5.375,6.875 5,7 4.625,6.875 4.25,6.75 4,6.5 3.75,6.25 3.5,6 3.25,5.75 3,5.5 2.75,5.25 2.5,5.25 2.25,5.25 2.125,5.625 2,6 2,6.5 2,7 2,7.5 2,8 2,8.5 2,9 2.125,9.375 2.25,9.75 2.625,9.875 3,10 3.5,10 q 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0"
id="path5243"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:1"
d="m 3.25,8.5 q 0,-0.25 0.25,-0.25 0.25,0 0.25,0.25 0,0.25 -0.25,0.25 -0.25,0 -0.25,-0.25"
id="path5247"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:1"
d="m 5.25,8.5 q 0,-0.25 0.25,-0.25 0.25,0 0.25,0.25 0,0.25 -0.25,0.25 -0.25,0 -0.25,-0.25"
id="path5249"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:1"
d="m 7.25,8.5 q 0,-0.25 0.25,-0.25 0.25,0 0.25,0.25 0,0.25 -0.25,0.25 -0.25,0 -0.25,-0.25"
id="path5251"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg817"
width="10"
height="9.875"
viewBox="0 0 10 9.875"
sodipodi:docname="defense.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata823">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs821" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview819"
showgrid="false"
inkscape:zoom="43.457605"
inkscape:cx="10.243339"
inkscape:cy="4.6479408"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g5280" />
<g
transform="translate(-0.999269,-1.0631022)"
id="g5280">
<path
style="fill:#ffffff;fill-opacity:1"
d="m -10.472656,-2.8027344 c -0.125,0 -0.25,0.020833 -0.375,0.0625 -0.25,0.083333 -0.416667,0.25 -0.5,0.5 -0.08333,0.25 -0.125,0.5416667 -0.125,0.875 v 1.00000002 1 0.99999998 c 0,0.3333334 0.04167,0.625 0.125,0.875 0.08333,0.25 0.208333,0.4583334 0.375,0.625 l 0.5,0.5 0.4999998,0.5 0.5,0.5 0.5,0.5 0.5,0.5 0.5,0.5 0.5,0.5 c 0.1666666,0.1666667 0.3749999,0.2916667 0.625,0.375 0.25,0.083333 0.4999999,0.083333 0.75,0 0.2499999,-0.083333 0.4583333,-0.2083333 0.625,-0.375 l 0.5,-0.5 0.5,-0.5 0.5,-0.5 0.5,-0.5 0.5,-0.5 0.5,-0.5 0.5,-0.5 c 0.1666666,-0.1666666 0.2916666,-0.375 0.375,-0.625 0.083333,-0.25 0.125,-0.5416666 0.125,-0.875 v -0.99999998 -1 -1.00000002 c 0,-0.3333333 -0.041667,-0.625 -0.125,-0.875 -0.083333,-0.25 -0.25,-0.4166666 -0.5,-0.5 -0.25,-0.083333 -0.5,-0.083333 -0.75,0 -0.2500001,0.083333 -0.4583334,0.2083334 -0.625,0.375 l -0.5,0.5 -0.5,0.5 c -0.1666667,0.1666667 -0.375,0.2916667 -0.625,0.37500002 -0.2500001,0.0833333 -0.5416667,0.125 -0.875,0.125 h -1 c -0.3333334,10e-9 -0.6250001,-0.0416667 -0.875,-0.125 -0.25,-0.0833333 -0.4583334,-0.20833332 -0.625,-0.37500002 l -0.5,-0.5 -0.5,-0.5 c -0.1666667,-0.1666666 -0.375,-0.2916666 -0.6249998,-0.375 -0.125,-0.041667 -0.25,-0.0625 -0.375,-0.0625 z m 0.4999998,1.1875 c 0.1666666,0 0.3333333,0.083333 0.5,0.25 l 0.5,0.50000002 0.5,0.5 c 0.1666666,0.16666667 0.375,0.29166667 0.625,0.37500001 0.2499999,0.08333333 0.5416666,0.12499999 0.875,0.12499999 h 1 c 0.3333333,0 0.6249999,-0.04166666 0.875,-0.12499999 0.25,-0.08333334 0.4583333,-0.20833334 0.625,-0.37500001 l 0.5,-0.5 0.5,-0.50000002 c 0.1666666,-0.1666666 0.3333333,-0.25 0.5,-0.25 0.1666666,0 0.2916666,0.125 0.375,0.375 0.083333,0.25000002 0.125,0.54166669 0.125,0.87500002 v 1 0.99999998 c 0,0.3333334 -0.041667,0.625 -0.125,0.875 -0.083333,0.25 -0.2083334,0.4583334 -0.375,0.625 l -0.5,0.5 -0.5,0.5 -0.5,0.5 -0.5,0.5 -0.5,0.5 c -0.1666667,0.1666667 -0.3750001,0.2916667 -0.625,0.375 -0.25,0.083333 -0.5000001,0.083333 -0.75,0 -0.2500001,-0.083333 -0.4583334,-0.2083333 -0.625,-0.375 l -0.5,-0.5 -0.5,-0.5 -0.5,-0.5 -0.5,-0.5 -0.5,-0.5 c -0.1666668,-0.1666666 -0.2916668,-0.375 -0.3749998,-0.625 -0.08333,-0.25 -0.125,-0.5416666 -0.125,-0.875 v -0.99999998 -1 c 0,-0.33333333 0.04167,-0.625 0.125,-0.87500002 0.08333,-0.25 0.208333,-0.375 0.3749998,-0.375 z"
transform="translate(12.471925,3.8658366)"
id="path5276"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg3799"
width="256"
height="256"
viewBox="0 0 10 10"
sodipodi:docname="icon-distribution-transparent.png.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata3805">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3803" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1280"
inkscape:window-height="1318"
id="namedview3801"
showgrid="false"
inkscape:zoom="45.254834"
inkscape:cx="6.2899407"
inkscape:cy="4.0348889"
inkscape:window-x="1280"
inkscape:window-y="27"
inkscape:window-maximized="0"
inkscape:current-layer="g3829" />
<g
id="g3829">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 0 0 L 0 0.5 L 0 1 L 0 1.5 L 0 2 L 0 2.5 L 0 3 L 0 3.5 L 0 4 L 0 4.5 L 0 5 L 0 5.5 L 0 6 L 0 6.5 L 0 7 L 0 7.5 L 0 8 L 0 8.5 L 0 9 L 0 9.5 L 0 10 L 0.5 10 L 1 10 L 1 9.5 L 1 8.5 L 1 7.5 L 1 6.5 L 1 5.5 L 1 4.5 L 1 3.5 L 1 2.5 L 1 1.5 L 1 0.5 L 1 0 L 0.5 0 L 0 0 z M 9 0 L 9 0.5 L 9 1.5 L 9 2.5 L 9 3.5 L 9 4.5 L 9 5.5 L 9 6.5 L 9 7.5 L 9 8.5 L 9 9.5 L 9 10 L 9.5 10 L 10 10 L 10 9.5 L 10 9 L 10 8.5 L 10 8 L 10 7.5 L 10 7 L 10 6.5 L 10 6 L 10 5.5 L 10 5 L 10 4.5 L 10 4 L 10 3.5 L 10 3 L 10 2.5 L 10 2 L 10 1.5 L 10 1 L 10 0.5 L 10 0 L 9.5 0 L 9 0 z M 5 1.0625 C 4.875 1.0625 4.75 1.0833335 4.625 1.125 C 4.375 1.2083333 4.1666667 1.3333333 4 1.5 L 3.5 2 C 3.3333333 2.1666667 3.25 2.3333333 3.25 2.5 C 3.25 2.6666667 3.375 2.7916667 3.625 2.875 C 3.875 2.9583333 4.1666667 3 4.5 3 L 5.5 3 C 5.9760929 2.9389882 6.4908205 3.0048105 6.75 2.5 C 6.75 2.3333333 6.6666667 2.1666667 6.5 2 L 6 1.5 C 5.8333333 1.3333333 5.625 1.2083333 5.375 1.125 C 5.25 1.0833335 5.125 1.0625 5 1.0625 z M 5 4.0625 C 4.875 4.0625 4.75 4.0833333 4.625 4.125 C 4.375 4.2083333 4.1666667 4.3333333 4 4.5 L 3.5 5 C 3.3333333 5.1666667 3.25 5.3333333 3.25 5.5 C 3.25 5.6666667 3.375 5.7916667 3.625 5.875 C 3.875 5.9583333 4.1666667 6 4.5 6 L 5.5 6 C 5.8333333 6 6.125 5.9583333 6.375 5.875 C 6.625 5.7916667 6.75 5.6666667 6.75 5.5 C 6.75 5.3333333 6.6666667 5.1666667 6.5 5 L 6 4.5 C 5.8333333 4.3333333 5.625 4.2083333 5.375 4.125 C 5.25 4.0833333 5.125 4.0625 5 4.0625 z M 5 7.0625 C 4.875 7.0625 4.75 7.0833333 4.625 7.125 C 4.375 7.2083333 4.1666667 7.3333333 4 7.5 L 3.5 8 C 3.3333333 8.1666667 3.25 8.3333333 3.25 8.5 C 3.25 8.6666667 3.375 8.7916667 3.625 8.875 C 3.875 8.9583333 4.1666667 9 4.5 9 L 5.5 9 C 5.8333333 9 6.125 8.9583333 6.375 8.875 C 6.625 8.7916667 6.75 8.6666667 6.75 8.5 C 6.75 8.3333333 6.6666667 8.1666667 6.5 8 L 6 7.5 C 5.8333333 7.3333333 5.625 7.2083333 5.375 7.125 C 5.25 7.0833333 5.125 7.0625 5 7.0625 z "
id="path3817" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg1370"
width="10"
height="10"
viewBox="0 0 10 10"
sodipodi:docname="effect.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata1376">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs1374" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview1372"
showgrid="false"
inkscape:zoom="61.458335"
inkscape:cx="3.4444574"
inkscape:cy="5.2674622"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g5329" />
<g
id="g5329"
transform="translate(-1,-1)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 3.5,1 C 3.1666667,1 2.875,1.0416667 2.625,1.125 2.375,1.2083333 2.1666667,1.3333333 2,1.5 L 1.5,2 C 1.3333333,2.1666667 1.2083333,2.375 1.125,2.625 1.0416667,2.875 1,3.1666667 1,3.5 v 1 1 1 1 1 C 1,8.8333333 1.0416667,9.125 1.125,9.375 1.2083333,9.625 1.3333333,9.8333333 1.5,10 L 2,10.5 c 0.1666667,0.166667 0.375,0.291667 0.625,0.375 C 2.875,10.958333 3.1666667,11 3.5,11 h 1 1 1 1 1 C 8.8333333,11 9.125,10.958333 9.375,10.875 9.625,10.791667 9.8333333,10.666667 10,10.5 L 10.5,10 C 10.666667,9.8333333 10.791667,9.625 10.875,9.375 10.958333,9.125 11,8.8333333 11,8.5 v -1 -1 -1 -1 -1 C 11,3.1666667 10.958333,2.875 10.875,2.625 10.791667,2.375 10.666667,2.1666667 10.5,2 L 10,1.5 C 9.8333333,1.3333333 9.625,1.2083333 9.375,1.125 9.125,1.0416667 8.8333333,1 8.5,1 h -1 -1 -1 -1 z m 1,1 h 1 1 1 C 7.8333333,2 8.125,2.0416667 8.375,2.125 8.625,2.2083333 8.8333333,2.3333333 9,2.5 L 9.5,3 C 9.6666667,3.1666667 9.7916667,3.375 9.875,3.625 9.9583333,3.875 10,4.1666667 10,4.5 v 1 1 1 C 10,7.8333333 9.9583333,8.125 9.875,8.375 9.7916667,8.625 9.6666667,8.8333333 9.5,9 L 9,9.5 C 8.8333333,9.6666667 8.625,9.7916667 8.375,9.875 8.125,9.9583333 7.8333333,10 7.5,10 h -1 -1 -1 C 4.1666667,10 3.875,9.9583333 3.625,9.875 3.375,9.7916667 3.1666667,9.6666667 3,9.5 L 2.5,9 C 2.3333333,8.8333333 2.2083333,8.625 2.125,8.375 2.0416667,8.125 2,7.8333333 2,7.5 v -1 -1 -1 C 2,4.1666667 2.0416667,3.875 2.125,3.625 2.2083333,3.375 2.3333333,3.1666667 2.5,3 L 3,2.5 C 3.1666667,2.3333333 3.375,2.2083333 3.625,2.125 3.875,2.0416667 4.1666667,2 4.5,2 Z M 6,4.0625 C 5.875,4.0625 5.75,4.0833333 5.625,4.125 5.375,4.2083333 5.1666667,4.3333333 5,4.5 L 4.5,5 C 4.3333333,5.1666667 4.2083333,5.375 4.125,5.625 c -0.083333,0.25 -0.083333,0.5 0,0.75 C 4.2083333,6.625 4.3333333,6.8333333 4.5,7 L 5,7.5 c 0.1666667,0.1666667 0.375,0.2916667 0.625,0.375 0.25,0.083333 0.5,0.083333 0.75,0 C 6.625,7.7916667 6.8333333,7.6666667 7,7.5 L 7.5,7 C 7.6666667,6.8333333 7.7916667,6.625 7.875,6.375 c 0.083333,-0.25 0.083333,-0.5 0,-0.75 C 7.7916667,5.375 7.6666667,5.1666667 7.5,5 L 7,4.5 C 6.8333333,4.3333333 6.625,4.2083333 6.375,4.125 6.25,4.0833333 6.125,4.0625 6,4.0625 Z"
id="path5323"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="11.9375"
height="12"
viewBox="0 0 11.9375 12"
sodipodi:docname="exit.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="16.857143"
inkscape:cx="24.210938"
inkscape:cy="4.160156"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g18" />
<g
id="g18"
transform="translate(-1.000926,-0.99913925)">
<path
style="fill:#ffffff;fill-opacity:1"
d="m -14.710938,-0.83984375 c -0.333333,0 -0.625,0.0416667 -0.875,0.125 -0.25,0.0833333 -0.458333,0.20833333 -0.625,0.375 l -0.5,0.5 c -0.166666,0.16666667 -0.291666,0.375 -0.375,0.625 -0.08333,0.24999995 -0.125,0.54166665 -0.125,0.87499995 v 1 1 1 1 1 1 1 c 0,0.3333334 0.04167,0.625 0.125,0.875 0.08333,0.25 0.208334,0.4583334 0.375,0.6249998 l 0.5,0.5 c 0.166667,0.166667 0.375,0.291667 0.625,0.375 0.25,0.08333 0.541667,0.125 0.875,0.125 h 1 1 1 1 1.0000005 1 c 0.3333333,0 0.625,-0.04167 0.875,-0.125 0.25,-0.08333 0.4583333,-0.208333 0.625,-0.375 l 0.5,-0.5 c 0.1666667,-0.1666664 0.25,-0.3333331 0.25,-0.4999998 0,-0.1666666 -0.125,-0.2916666 -0.375,-0.375 -0.25,-0.083333 -0.5416667,-0.125 -0.875,-0.125 h -1 -1 -1.0000005 -1 -1 -1 c -0.333333,0 -0.625,-0.041667 -0.875,-0.125 -0.249999,-0.083333 -0.416666,-0.25 -0.5,-0.5 -0.08333,-0.2499999 -0.125,-0.5416666 -0.125,-0.875 v -1 -1 -1 -1 -1 c 0,-0.3333333 0.04167,-0.625 0.125,-0.875 0.08333,-0.2499999 0.25,-0.4166666 0.5,-0.5 0.25,-0.083333 0.541667,-0.125 0.875,-0.125 h 1 1 1 1.0000005 1 1 c 0.3333333,0 0.625,-0.041667 0.875,-0.125 0.25,-0.0833333 0.375,-0.20833328 0.375,-0.37499995 0,-0.16666667 -0.083333,-0.33333333 -0.25,-0.5 l -0.5,-0.5 c -0.1666667,-0.16666667 -0.375,-0.29166667 -0.625,-0.375 -0.25,-0.0833333 -0.5416667,-0.125 -0.875,-0.125 h -1 -1.0000005 -1 -1 -1 z m 7.0000005,3.24999995 c -0.1666667,0 -0.2916667,0.125 -0.375,0.375 l -0.25,0.75 c -0.083333,0.25 -0.25,0.4166667 -0.5,0.5 -0.25,0.083333 -0.5416667,0.125 -0.875,0.125 h -1.0000005 -1 c -0.333333,0 -0.625,0.041667 -0.875,0.125 -0.249999,0.083333 -0.416666,0.25 -0.5,0.5 -0.08333,0.25 -0.08333,0.5 0,0.75 0.08333,0.25 0.25,0.4166667 0.5,0.5 0.25,0.083333 0.541667,0.125 0.875,0.125 h 1 1.0000005 c 0.3333333,0 0.625,0.041667 0.875,0.125 0.25,0.083333 0.4166667,0.25 0.5,0.5 l 0.25,0.75 c 0.083333,0.25 0.2083333,0.375 0.375,0.375 0.1666667,0 0.3333333,-0.083333 0.5,-0.25 l 0.5,-0.5 0.5,-0.5 0.5,-0.5 c 0.1666667,-0.1666666 0.2916667,-0.375 0.375,-0.625 0.083333,-0.25 0.083333,-0.5 0,-0.75 -0.083333,-0.25 -0.2083333,-0.4583333 -0.375,-0.625 l -0.5,-0.5 -0.5,-0.5 -0.5,-0.5 c -0.1666667,-0.1666666 -0.3333333,-0.25 -0.5,-0.25 z"
transform="translate(18.211864,1.838983)"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="13.9375"
height="13.9375"
viewBox="0 0 13.9375 13.9375"
sodipodi:docname="fill.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="14.75"
inkscape:cx="-19.842161"
inkscape:cy="5.1069915"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g16" />
<g
id="g16"
transform="translate(-1.0625,-1)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 7,1.5 Q 7.25,1.25 7.625,1.125 8,1 8.5,1 9,1 9.375,1.125 9.75,1.25 10,1.5 10.25,1.75 10.5,2 10.75,2.25 10.875,2.625 11,3 11,3.5 11,4 10.875,4.375 10.75,4.75 10.5,5 q -0.25,0.25 -0.25,0.5 0,0.25 0.375,0.375 Q 11,6 11.5,6 12,6 12.375,6.125 12.75,6.25 13,6.5 13.25,6.75 13.5,7 13.75,7.25 14,7.5 14.25,7.75 14.5,8 14.75,8.25 14.875,8.625 15,9 15,9.5 q 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 -0.125,0.875 -0.125,0.375 -0.375,0.375 -0.25,0 -0.375,-0.375 Q 14,13 14,12.5 14,12 13.875,11.625 13.75,11.25 13.5,11 13.25,10.75 13.125,10.375 13,10 12.875,9.625 12.75,9.25 12.5,9.25 12.25,9.25 12,9.5 11.75,9.75 11.5,10 11.25,10.25 11,10.5 10.75,10.75 10.5,11 10.25,11.25 10,11.5 9.75,11.75 9.5,12 9.25,12.25 9,12.5 8.75,12.75 8.5,13 8.25,13.25 8,13.5 7.75,13.75 7.5,14 7.25,14.25 7,14.5 6.75,14.75 6.375,14.875 6,15 5.625,14.875 5.25,14.75 5,14.5 4.75,14.25 4.5,14 4.25,13.75 4,13.5 3.75,13.25 3.5,13 3.25,12.75 3,12.5 2.75,12.25 2.5,12 2.25,11.75 2,11.5 1.75,11.25 1.5,11 1.25,10.75 1.125,10.375 1,10 1.125,9.625 1.25,9.25 1.5,9 1.75,8.75 2,8.5 2.25,8.25 2.5,8 2.75,7.75 3,7.5 3.25,7.25 3.5,7 3.75,6.75 4,6.5 4.25,6.25 4.5,6.25 4.75,6.25 4.875,6.625 5,7 4.875,7.375 4.75,7.75 4.5,8 4.25,8.25 4,8.5 3.75,8.75 3.5,9 3.25,9.25 3.125,9.625 3,10 3.125,10.375 3.25,10.75 3.5,11 3.75,11.25 4,11.5 4.25,11.75 4.5,12 4.75,12.25 5,12.5 5.25,12.75 5.625,12.875 6,13 6.375,12.875 6.75,12.75 7,12.5 7.25,12.25 7.5,12 7.75,11.75 8,11.5 8.25,11.25 8.5,11 8.75,10.75 9,10.5 9.25,10.25 9.5,10 9.75,9.75 10,9.5 10.25,9.25 10.5,9 10.75,8.75 10.75,8.5 10.75,8.25 10.5,8 10.25,7.75 10,7.5 9.75,7.25 9.5,7 9.25,6.75 9,6.5 8.75,6.25 8.5,6 8.25,5.75 8.125,5.375 8,5 8.125,4.625 8.25,4.25 8.5,4.25 8.75,4.25 9,4.5 9.25,4.75 9.5,4.75 9.75,4.75 9.875,4.375 10,4 10,3.5 10,3 9.875,2.625 9.75,2.25 9.375,2.125 9,2 8.5,2 8,2 7.625,2.125 7.25,2.25 7.125,2.625 7,3 7,3.5 7,4 7,4.5 7,5 7,5.5 7,6 7,6.5 7,7 6.875,7.375 6.75,7.75 6.5,7.75 6.25,7.75 6.125,7.375 6,7 6,6.5 6,6 6,5.5 6,5 6,4.5 6,4 6,3.5 6,3 6.125,2.625 6.25,2.25 6.5,2 6.75,1.75 7,1.5"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="13.6875"
height="13.687497"
viewBox="0 0 13.6875 13.687497"
sodipodi:docname="hammer.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="41.7193"
inkscape:cx="4.0229218"
inkscape:cy="7.3618256"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g821" />
<g
id="g821"
transform="translate(-1.0625002,-1.25)">
<path
id="path819"
style="fill:#ffffff;fill-opacity:1"
d="M 7.5,1.25 C 7.3333333,1.25 7.1666667,1.3333333 7,1.5 L 6.5,2 6,2.5 5.5,3 5,3.5 4.5,4 4,4.5 3.5,5 C 3.3333333,5.1666667 3.25,5.3333333 3.25,5.5 3.25,5.6666667 3.3333333,5.8333333 3.5,6 L 4,6.5 4.5,7 5,7.5 5.5,8 C 5.6666667,8.1666667 5.75,8.3333333 5.75,8.5 5.75,8.6666667 5.6666667,8.8333333 5.5,9 L 5,9.5 4.5,10 4,10.5 3.5,11 3,11.5 2.5,12 2,12.5 1.5,13 c -0.1666667,0.166667 -0.2916667,0.375 -0.375,0.625 -0.083333,0.25 -0.083333,0.5 0,0.75 0.083333,0.25 0.25,0.416667 0.5,0.5 0.25,0.08333 0.5,0.08333 0.75,0 C 2.625,14.791667 2.8333333,14.666667 3,14.5 L 3.5,14 4,13.5 4.5,13 5,12.5 5.5,12 6,11.5 6.5,11 7,10.5 c 0.1666667,-0.166667 0.3333333,-0.25 0.5,-0.25 0.1666667,0 0.3333333,0.08333 0.5,0.25 L 8.5,11 9,11.5 9.5,12 10,12.5 c 0.166667,0.166667 0.333333,0.25 0.5,0.25 0.166667,0 0.333333,-0.08333 0.5,-0.25 L 11.5,12 12,11.5 12.5,11 13,10.5 13.5,10 14,9.5 14.5,9 C 14.666667,8.8333333 14.75,8.6666667 14.75,8.5 14.75,8.3333333 14.666667,8.1666667 14.5,8 L 14,7.5 13.5,7 13,6.5 12.5,6 12,5.5 11.5,5 11,4.5 10.5,4 10,3.5 9.5,3 9,2.5 8.5,2 8,1.5 C 7.8333333,1.3333333 7.6666667,1.25 7.5,1.25 Z"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="12"
height="11"
viewBox="0 0 12 11"
sodipodi:docname="host.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="16.857143"
inkscape:cx="-19.567797"
inkscape:cy="4.1610169"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<g
id="g32"
transform="translate(-1,-2)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 1.125,2.625 Q 1.25,2.25 1.625,2.125 2,2 2.5,2 q 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 0.875,0.125 0.375,0.125 0.5,0.5 Q 13,3 13,3.5 13,4 12.875,4.375 12.75,4.75 12.375,4.875 12,5 11.5,5 11,5 10.5,5 10,5 9.5,5 9,5 8.5,5 8,5 7.5,5 7,5 6.5,5 6,5 5.5,5 5,5 4.5,5 4,5 3.5,5 3,5 2.5,5 2,5 1.625,4.875 1.25,4.75 1.125,4.375 1,4 1,3.5 1,3 1.125,2.625 M 5.5,4 Q 6,4 6.375,3.875 6.75,3.75 6.75,3.5 6.75,3.25 6.375,3.125 6,3 5.5,3 5,3 4.5,3 4,3 3.5,3 3,3 2.625,3.125 2.25,3.25 2.25,3.5 2.25,3.75 2.625,3.875 3,4 3.5,4 4,4 4.5,4 5,4 5.5,4 m 4.75,-0.5 q 0,0.25 0.25,0.25 0.25,0 0.25,-0.25 0,-0.25 -0.25,-0.25 -0.25,0 -0.25,0.25"
id="path14"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:1"
d="M 1.125,6.625 Q 1.25,6.25 1.625,6.125 2,6 2.5,6 q 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 0.875,0.125 0.375,0.125 0.5,0.5 Q 13,7 13,7.5 13,8 12.875,8.375 12.75,8.75 12.375,8.875 12,9 11.5,9 11,9 10.5,9 10,9 9.5,9 9,9 8.5,9 8,9 7.5,9 7,9 6.5,9 6,9 5.5,9 5,9 4.5,9 4,9 3.5,9 3,9 2.5,9 2,9 1.625,8.875 1.25,8.75 1.125,8.375 1,8 1,7.5 1,7 1.125,6.625 M 5.5,8 Q 6,8 6.375,7.875 6.75,7.75 6.75,7.5 6.75,7.25 6.375,7.125 6,7 5.5,7 5,7 4.5,7 4,7 3.5,7 3,7 2.625,7.125 2.25,7.25 2.25,7.5 2.25,7.75 2.625,7.875 3,8 3.5,8 4,8 4.5,8 5,8 5.5,8 m 4.75,-0.5 q 0,0.25 0.25,0.25 0.25,0 0.25,-0.25 0,-0.25 -0.25,-0.25 -0.25,0 -0.25,0.25"
id="path20"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:1"
d="M 1.125,10.625 Q 1.25,10.25 1.625,10.125 2,10 2.5,10 q 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 0.875,0.125 0.375,0.125 0.5,0.5 Q 13,11 13,11.5 q 0,0.5 -0.125,0.875 -0.125,0.375 -0.5,0.5 Q 12,13 11.5,13 11,13 10.5,13 10,13 9.5,13 9,13 8.5,13 8,13 7.5,13 7,13 6.5,13 6,13 5.5,13 5,13 4.5,13 4,13 3.5,13 3,13 2.5,13 2,13 1.625,12.875 1.25,12.75 1.125,12.375 1,12 1,11.5 1,11 1.125,10.625 M 5.5,12 Q 6,12 6.375,11.875 6.75,11.75 6.75,11.5 6.75,11.25 6.375,11.125 6,11 5.5,11 5,11 4.5,11 4,11 3.5,11 3,11 2.625,11.125 2.25,11.25 2.25,11.5 q 0,0.25 0.375,0.375 Q 3,12 3.5,12 q 0.5,0 1,0 0.5,0 1,0 m 4.75,-0.5 q 0,0.25 0.25,0.25 0.25,0 0.25,-0.25 0,-0.25 -0.25,-0.25 -0.25,0 -0.25,0.25"
id="path26"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="14"
height="9.875"
viewBox="0 0 14 9.875"
sodipodi:docname="itchio.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="46.093751"
inkscape:cx="1.5599999"
inkscape:cy="10.3775"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g18" />
<g
id="g18"
transform="translate(-1,-3.0625)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 4,3.5 Q 4.25,3.25 4.625,3.125 5,3 5.375,3.125 5.75,3.25 6,3.5 6.25,3.75 6.625,3.875 7,4 7.5,4 8,4 8.5,4 9,4 9.375,3.875 9.75,3.75 10,3.5 10.25,3.25 10.625,3.125 11,3 11.375,3.125 11.75,3.25 12,3.5 12.25,3.75 12.5,4 12.75,4.25 12.875,4.625 13,5 13,5.5 13,6 13.125,6.375 13.25,6.75 13.5,7 13.75,7.25 14,7.5 14.25,7.75 14.5,8 14.75,8.25 14.875,8.625 15,9 15,9.5 q 0,0.5 0,1 0,0.5 -0.125,0.875 Q 14.75,11.75 14.5,12 14.25,12.25 14,12.5 13.75,12.75 13.375,12.875 13,13 12.625,12.875 12.25,12.75 12,12.5 11.75,12.25 11.5,12 11.25,11.75 11,11.5 10.75,11.25 10.375,11.125 10,11 9.5,11 9,11 8.5,11 8,11 7.5,11 7,11 6.5,11 6,11 5.625,11.125 5.25,11.25 5,11.5 4.75,11.75 4.5,12 4.25,12.25 4,12.5 3.75,12.75 3.375,12.875 3,13 2.625,12.875 2.25,12.75 2,12.5 1.75,12.25 1.5,12 1.25,11.75 1.125,11.375 1,11 1,10.5 1,10 1,9.5 1,9 1.125,8.625 1.25,8.25 1.5,8 1.75,7.75 2,7.5 2.25,7.25 2.5,7 2.75,6.75 2.875,6.375 3,6 3,5.5 3,5 3.125,4.625 3.25,4.25 3.5,4 3.75,3.75 4,3.5 M 7.625,9.875 Q 8,10 8.375,9.875 8.75,9.75 8.875,9.375 9,9 9.125,8.625 9.25,8.25 9.625,8.125 10,8 10.375,7.875 10.75,7.75 10.75,7.5 10.75,7.25 10.5,7 10.25,6.75 10,6.5 9.75,6.25 9.5,6 9.25,5.75 9,5.5 8.75,5.25 8.375,5.125 8,5 7.625,5.125 7.25,5.25 7,5.5 6.75,5.75 6.5,6 6.25,6.25 6,6.5 5.75,6.75 5.5,7 5.25,7.25 5.25,7.5 5.25,7.75 5.625,7.875 6,8 6.375,8.125 6.75,8.25 6.875,8.625 7,9 7.125,9.375 q 0.125,0.375 0.5,0.5"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="11.875"
height="11.875"
viewBox="0 0 11.875 11.875"
sodipodi:docname="line.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="14.75"
inkscape:cx="-19.350636"
inkscape:cy="7.9036017"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g16" />
<g
id="g16"
transform="translate(-2.0625,-2.0625)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 12,2.5 Q 12.25,2.25 12.625,2.125 13,2 13.375,2.125 13.75,2.25 13.875,2.625 14,3 13.875,3.375 13.75,3.75 13.5,4 13.25,4.25 13,4.5 12.75,4.75 12.5,5 12.25,5.25 12,5.5 11.75,5.75 11.5,6 11.25,6.25 11,6.5 10.75,6.75 10.5,7 10.25,7.25 10,7.5 9.75,7.75 9.5,8 9.25,8.25 9,8.5 8.75,8.75 8.5,9 8.25,9.25 8,9.5 7.75,9.75 7.5,10 7.25,10.25 7,10.5 6.75,10.75 6.5,11 6.25,11.25 6,11.5 5.75,11.75 5.5,12 5.25,12.25 5,12.5 4.75,12.75 4.5,13 4.25,13.25 4,13.5 3.75,13.75 3.375,13.875 3,14 2.625,13.875 2.25,13.75 2.125,13.375 2,13 2.125,12.625 2.25,12.25 2.5,12 2.75,11.75 3,11.5 3.25,11.25 3.5,11 3.75,10.75 4,10.5 4.25,10.25 4.5,10 4.75,9.75 5,9.5 5.25,9.25 5.5,9 5.75,8.75 6,8.5 6.25,8.25 6.5,8 6.75,7.75 7,7.5 7.25,7.25 7.5,7 7.75,6.75 8,6.5 8.25,6.25 8.5,6 8.75,5.75 9,5.5 9.25,5.25 9.5,5 9.75,4.75 10,4.5 10.25,4.25 10.5,4 10.75,3.75 11,3.5 11.25,3.25 11.5,3 11.75,2.75 12,2.5"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="12"
height="12"
viewBox="0 0 12 12"
sodipodi:docname="link.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="16.857143"
inkscape:cx="-18.558594"
inkscape:cy="2.203125"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g18" />
<g
id="g18"
transform="translate(-0.999272,-0.9997352)">
<path
style="fill:#ffffff;fill-opacity:1"
d="m 28.058594,-2.796875 c -0.333334,0 -0.625,0.041667 -0.875,0.125 -0.25,0.083333 -0.458334,0.2083333 -0.625,0.375 l -0.5,0.5 c -0.166667,0.1666667 -0.291667,0.375 -0.375,0.625 -0.08333,0.25 -0.125,0.54166667 -0.125,0.875 v 1 1 1 1 1 1 1 c 0,0.3333333 0.04167,0.625 0.125,0.875 0.08333,0.25 0.208333,0.4583333 0.375,0.625 l 0.5,0.5 c 0.166666,0.1666667 0.375,0.2916667 0.625,0.375 0.25,0.083333 0.541666,0.125 0.875,0.125 h 1 1 1 1 1 1 1 c 0.333333,0 0.625,-0.041667 0.875,-0.125 0.25,-0.083333 0.458333,-0.2083333 0.625,-0.375 l 0.5,-0.5 c 0.166666,-0.1666667 0.291666,-0.375 0.375,-0.625 0.08333,-0.25 0.125,-0.5416667 0.125,-0.875 0,-0.3333333 -0.04167,-0.625 -0.125,-0.875 -0.08333,-0.25 -0.208334,-0.4583333 -0.375,-0.625 l -0.5,-0.5 c -0.166667,-0.1666667 -0.333334,-0.25 -0.5,-0.25 -0.166667,0 -0.291667,0.125 -0.375,0.375 -0.08333,0.25 -0.125,0.5416667 -0.125,0.875 0,0.3333333 -0.04167,0.625 -0.125,0.875 -0.08333,0.25 -0.25,0.4166667 -0.5,0.5 -0.25,0.083333 -0.541667,0.125 -0.875,0.125 h -1 -1 -1 -1 -1 c -0.333334,0 -0.625,-0.041667 -0.875,-0.125 -0.25,-0.083333 -0.416667,-0.25 -0.5,-0.5 -0.08333,-0.25 -0.125,-0.5416667 -0.125,-0.875 v -1 -1 -1 -1 -1 c 0,-0.33333333 0.04167,-0.625 0.125,-0.875 0.08333,-0.25 0.25,-0.41666667 0.5,-0.5 0.25,-0.0833333 0.541666,-0.125 0.875,-0.125 0.333333,0 0.625,-0.0416667 0.875,-0.125 0.25,-0.0833333 0.375,-0.2083333 0.375,-0.375 0,-0.1666667 -0.08333,-0.3333333 -0.25,-0.5 l -0.5,-0.5 c -0.166667,-0.1666667 -0.375,-0.2916667 -0.625,-0.375 -0.25,-0.083333 -0.541667,-0.125 -0.875,-0.125 z m 5,0 c -0.333334,0 -0.625,0.041667 -0.875,0.125 -0.25,0.083333 -0.375,0.2083333 -0.375,0.375 0,0.1666667 0.08333,0.3333333 0.25,0.5 l 0.5,0.5 0.5,0.5 c 0.166666,0.16666667 0.25,0.33333333 0.25,0.5 0,0.16666667 -0.08333,0.33333333 -0.25,0.5 l -0.5,0.5 -0.5,0.5 -0.5,0.5 -0.5,0.5 -0.5,0.5 -0.5,0.5 c -0.166667,0.1666667 -0.291667,0.375 -0.375,0.625 -0.08333,0.25 -0.08333,0.5 0,0.75 0.08333,0.25 0.25,0.4166667 0.5,0.5 0.25,0.083333 0.5,0.083333 0.75,0 0.25,-0.083333 0.458333,-0.2083333 0.625,-0.375 l 0.5,-0.5 0.5,-0.5 0.5,-0.5 0.5,-0.5 0.5,-0.5 0.5,-0.5 c 0.166666,-0.1666667 0.333333,-0.25 0.5,-0.25 0.166666,0 0.333333,0.083333 0.5,0.25 l 0.5,0.5 0.5,0.5 c 0.166666,0.1666667 0.333333,0.25 0.5,0.25 0.166666,0 0.291666,-0.125 0.375,-0.375 0.08333,-0.25 0.125,-0.5416667 0.125,-0.875 v -1 -1 -1 c 0,-0.3333333 -0.04167,-0.625 -0.125,-0.875 -0.08333,-0.25 -0.25,-0.4166667 -0.5,-0.5 -0.25,-0.083333 -0.541667,-0.125 -0.875,-0.125 h -1 -1 z"
transform="translate(-24.559322,3.7966102)"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="8.75"
height="8.75"
viewBox="0 0 8.75 8.75"
sodipodi:docname="liquid.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="30.729167"
inkscape:cx="-5.7555702"
inkscape:cy="11.13662"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g18" />
<g
id="g18"
transform="translate(-1.25,-2)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 1.25,2.5 Q 1.25,2.25 1.625,2.125 2,2 2.5,2 3,2 3.5,2 4,2 4.5,2 5,2 5.5,2 6,2 6.5,2 7,2 7.375,2.125 7.75,2.25 7.75,2.5 7.75,2.75 7.5,3 7.25,3.25 7.125,3.625 7,4 7.125,4.375 7.25,4.75 7.625,4.875 8,5 8.375,4.875 8.75,4.75 9,4.5 9.25,4.25 9.5,4.25 9.75,4.25 9.875,4.625 10,5 10,5.5 q 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 Q 10,10 9.875,10.375 9.75,10.75 9.5,10.75 9.25,10.75 9,10.5 8.75,10.25 8.375,10.125 8,10 7.5,10 7,10 6.5,10 6,10 5.5,10 5,10 4.625,9.875 4.25,9.75 4,9.5 3.75,9.25 3.5,9 3.25,8.75 3,8.5 2.75,8.25 2.5,8 2.25,7.75 2.125,7.375 2,7 2,6.5 2,6 2,5.5 2,5 2,4.5 2,4 1.875,3.625 1.75,3.25 1.5,3 1.25,2.75 1.25,2.5 M 7.5,9 Q 8,9 8.375,8.875 8.75,8.75 8.875,8.375 9,8 9,7.5 9,7 8.875,6.625 8.75,6.25 8.375,6.125 8,6 7.625,5.875 7.25,5.75 7,5.5 6.75,5.25 6.5,5 6.25,4.75 6.125,4.375 6,4 5.875,3.625 5.75,3.25 5.375,3.125 5,3 4.5,3 4,3 3.625,3.125 3.25,3.25 3.125,3.625 3,4 3,4.5 3,5 3,5.5 3,6 3,6.5 3,7 3.125,7.375 3.25,7.75 3.5,8 3.75,8.25 4,8.5 4.25,8.75 4.625,8.875 5,9 5.5,9 6,9 6.5,9 7,9 7.5,9"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg12"
width="12.875"
height="12.875"
viewBox="0 0 12.875 12.875"
sodipodi:docname="mode-attack.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata18">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs16" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview14"
showgrid="false"
inkscape:zoom="46.093751"
inkscape:cx="1.4974999"
inkscape:cy="12.3775"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g869" />
<g
id="g869"
transform="translate(-1.0625,-2.0625)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 12,2.5 Q 12.25,2.25 12.625,2.125 13,2 13.375,2.125 13.75,2.25 13.875,2.625 14,3 13.875,3.375 13.75,3.75 13.5,4 13.25,4.25 13,4.5 12.75,4.75 12.5,5 12.25,5.25 12,5.5 11.75,5.75 11.5,6 11.25,6.25 11,6.5 10.75,6.75 10.5,7 10.25,7.25 10,7.5 9.75,7.75 9.5,8 9.25,8.25 9,8.5 8.75,8.75 8.5,9 8.25,9.25 8,9.5 7.75,9.75 7.5,10 7.25,10.25 7.125,10.625 7,11 7.125,11.375 7.25,11.75 7.5,12 7.75,12.25 7.875,12.625 8,13 7.875,13.375 7.75,13.75 7.375,13.875 7,14 6.625,13.875 6.25,13.75 6,13.5 5.75,13.25 5.375,13.125 5,13 4.625,13.125 4.25,13.25 4,13.5 3.75,13.75 3.5,14 3.25,14.25 3,14.5 2.75,14.75 2.375,14.875 2,15 1.625,14.875 1.25,14.75 1.125,14.375 1,14 1.125,13.625 1.25,13.25 1.5,13 1.75,12.75 2,12.5 2.25,12.25 2.5,12 2.75,11.75 2.875,11.375 3,11 2.875,10.625 2.75,10.25 2.5,10 2.25,9.75 2.125,9.375 2,9 2.125,8.625 2.25,8.25 2.625,8.125 3,8 3.375,8.125 3.75,8.25 4,8.5 4.25,8.75 4.625,8.875 5,9 5.375,8.875 5.75,8.75 6,8.5 6.25,8.25 6.5,8 6.75,7.75 7,7.5 7.25,7.25 7.5,7 7.75,6.75 8,6.5 8.25,6.25 8.5,6 8.75,5.75 9,5.5 9.25,5.25 9.5,5 9.75,4.75 10,4.5 10.25,4.25 10.5,4 10.75,3.75 11,3.5 11.25,3.25 11.5,3 11.75,2.75 12,2.5"
id="path867"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="15.874997"
height="12.874997"
viewBox="0 0 15.874997 12.874997"
sodipodi:docname="mode-pvp.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="40.972221"
inkscape:cx="-1.9533477"
inkscape:cy="12.95987"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g20" />
<g
id="g20"
transform="translate(-1.0625002,-3.0625)">
<path
style="fill:#ffffff;fill-opacity:1"
d="m 5,3.0625 c -0.125,0 -0.25,0.020833 -0.375,0.0625 -0.25,0.083333 -0.4166667,0.25 -0.5,0.5 -0.083333,0.25 -0.083333,0.5 0,0.75 C 4.2083333,4.625 4.3333333,4.8333333 4.5,5 L 5,5.5 5.5,6 6,6.5 C 6.1666667,6.6666667 6.3333333,6.75 6.5,6.75 6.6666667,6.75 6.8333333,6.6666667 7,6.5 L 7.5,6 C 7.6666667,5.8333333 7.75,5.6666667 7.75,5.5 7.75,5.3333333 7.6666667,5.1666667 7.5,5 L 7,4.5 6.5,4 6,3.5 C 5.8333333,3.3333333 5.625,3.2083333 5.375,3.125 5.25,3.0833333 5.125,3.0625 5,3.0625 Z m 8,0 c -0.125,0 -0.25,0.020833 -0.375,0.0625 C 12.375,3.2083333 12.166667,3.3333333 12,3.5 L 11.5,4 11,4.5 10.5,5 10,5.5 9.5,6 9,6.5 8.5,7 8,7.5 7.5,8 7,8.5 6.5,9 6,9.5 C 5.8333333,9.6666667 5.625,9.7916667 5.375,9.875 c -0.25,0.083333 -0.5,0.083333 -0.75,0 C 4.375,9.7916667 4.1666667,9.6666667 4,9.5 3.8333333,9.3333333 3.625,9.2083333 3.375,9.125 c -0.25,-0.083333 -0.5,-0.083333 -0.75,0 -0.25,0.083333 -0.4166667,0.25 -0.5,0.5 -0.083333,0.25 -0.083333,0.5 0,0.75 0.083333,0.25 0.2083333,0.458333 0.375,0.625 0.1666667,0.166667 0.2916667,0.375 0.375,0.625 0.083333,0.25 0.083333,0.5 0,0.75 C 2.7916667,12.625 2.6666667,12.833333 2.5,13 L 2,13.5 1.5,14 c -0.1666667,0.166667 -0.2916667,0.375 -0.375,0.625 -0.083333,0.25 -0.083333,0.5 0,0.75 0.083333,0.25 0.25,0.416667 0.5,0.5 0.25,0.08333 0.5,0.08333 0.75,0 C 2.625,15.791667 2.8333333,15.666667 3,15.5 L 3.5,15 4,14.5 c 0.1666667,-0.166667 0.375,-0.291667 0.625,-0.375 0.25,-0.08333 0.5,-0.08333 0.75,0 0.25,0.08333 0.4583333,0.208333 0.625,0.375 0.1666667,0.166667 0.375,0.291667 0.625,0.375 0.25,0.08333 0.5,0.08333 0.75,0 0.25,-0.08333 0.4166667,-0.25 0.5,-0.5 0.083333,-0.25 0.083333,-0.5 0,-0.75 C 7.7916667,13.375 7.6666667,13.166667 7.5,13 7.3333333,12.833333 7.2083333,12.625 7.125,12.375 c -0.083333,-0.25 -0.083333,-0.5 0,-0.75 C 7.2083333,11.375 7.3333333,11.166667 7.5,11 L 8,10.5 8.5,10 9,9.5 9.5,9 10,8.5 10.5,8 11,7.5 11.5,7 12,6.5 12.5,6 13,5.5 13.5,5 c 0.166667,-0.1666667 0.291667,-0.375 0.375,-0.625 0.08333,-0.25 0.08333,-0.5 0,-0.75 -0.08333,-0.25 -0.25,-0.4166667 -0.5,-0.5 C 13.25,3.0833333 13.125,3.0625 13,3.0625 Z m 2,6 c -0.125,0 -0.25,0.020833 -0.375,0.0625 C 14.375,9.208333 14.166667,9.3333333 14,9.5 c -0.166667,0.1666667 -0.375,0.2916667 -0.625,0.375 -0.25,0.083333 -0.5,0.083333 -0.75,0 C 12.375,9.7916667 12.166667,9.6666667 12,9.5 11.833333,9.3333333 11.666667,9.25 11.5,9.25 11.333333,9.25 11.166667,9.3333333 11,9.5 L 10.5,10 c -0.166667,0.166667 -0.25,0.333333 -0.25,0.5 0,0.166667 0.08333,0.333333 0.25,0.5 0.166667,0.166667 0.291667,0.375 0.375,0.625 0.08333,0.25 0.08333,0.5 0,0.75 -0.08333,0.25 -0.208333,0.458333 -0.375,0.625 -0.166667,0.166667 -0.291667,0.375 -0.375,0.625 -0.08333,0.25 -0.08333,0.5 0,0.75 0.08333,0.25 0.25,0.416667 0.5,0.5 0.25,0.08333 0.5,0.08333 0.75,0 0.25,-0.08333 0.458333,-0.208333 0.625,-0.375 0.166667,-0.166667 0.375,-0.291667 0.625,-0.375 0.25,-0.08333 0.5,-0.08333 0.75,0 0.25,0.08333 0.458333,0.208333 0.625,0.375 l 0.5,0.5 0.5,0.5 c 0.166667,0.166667 0.375,0.291667 0.625,0.375 0.25,0.08333 0.5,0.08333 0.75,0 0.25,-0.08333 0.416667,-0.25 0.5,-0.5 0.08333,-0.25 0.08333,-0.5 0,-0.75 C 16.791667,14.375 16.666667,14.166667 16.5,14 L 16,13.5 15.5,13 c -0.166667,-0.166667 -0.291667,-0.375 -0.375,-0.625 -0.08333,-0.25 -0.08333,-0.5 0,-0.75 0.08333,-0.25 0.208333,-0.458333 0.375,-0.625 0.166667,-0.166667 0.291667,-0.375 0.375,-0.625 0.08333,-0.25 0.08333,-0.5 0,-0.75 -0.08333,-0.25 -0.25,-0.4166667 -0.5,-0.5 C 15.25,9.0833333 15.125,9.0625 15,9.0625 Z"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg22"
width="12"
height="12.9375"
viewBox="0 0 12 12.9375"
sodipodi:docname="mode-survival.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata28">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs26" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview24"
showgrid="false"
inkscape:zoom="46.093751"
inkscape:cx="0.55999994"
inkscape:cy="12.44"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g844" />
<g
id="g844"
inkscape:label="g844"
transform="translate(-2,-2.0625)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 2.125,2.625 Q 2.25,2.25 2.625,2.125 3,2 3.375,2.125 3.75,2.25 4,2.5 4.25,2.75 4.5,3 4.75,3.25 5,3.5 5.25,3.75 5.625,3.875 6,4 6.5,4 7,4 7.5,4 8,4 8.5,4 9,4 9.5,4 10,4 10.375,3.875 10.75,3.75 11,3.5 11.25,3.25 11.5,3 11.75,2.75 12,2.5 12.25,2.25 12.625,2.125 13,2 13.375,2.125 13.75,2.25 13.875,2.625 14,3 14,3.5 q 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 -0.125,0.875 Q 13.75,10.75 13.5,11 13.25,11.25 13,11.5 12.75,11.75 12.5,12 12.25,12.25 12,12.5 11.75,12.75 11.5,13 11.25,13.25 11,13.5 10.75,13.75 10.5,14 10.25,14.25 10,14.5 9.75,14.75 9.375,14.875 9,15 8.5,15 8,15 7.5,15 7,15 6.625,14.875 6.25,14.75 6,14.5 5.75,14.25 5.5,14 5.25,13.75 5,13.5 4.75,13.25 4.5,13 4.25,12.75 4,12.5 3.75,12.25 3.5,12 3.25,11.75 3,11.5 2.75,11.25 2.5,11 2.25,10.75 2.125,10.375 2,10 2,9.5 2,9 2,8.5 2,8 2,7.5 2,7 2,6.5 2,6 2,5.5 2,5 2,4.5 2,4 2,3.5 2,3 2.125,2.625"
id="path842"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="12"
height="14"
viewBox="0 0 12 14"
sodipodi:docname="paste.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="14.75"
inkscape:cx="-21.253906"
inkscape:cy="8.220703"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g26" />
<g
id="g26"
transform="translate(-1.999669,-1.0003641)">
<path
style="fill:#ffffff;fill-opacity:1"
d="m 34.753906,2.2207031 c -0.333333,0 -0.625,0.041667 -0.875,0.125 -0.25,0.083333 -0.458333,0.2083334 -0.625,0.375 -0.166666,0.1666667 -0.375,0.2916667 -0.625,0.375 -0.25,0.083333 -0.541666,0.125 -0.875,0.125 -0.333333,0 -0.625,0.041667 -0.875,0.125 -0.25,0.083333 -0.458333,0.2083334 -0.625,0.375 l -0.5,0.5 c -0.166666,0.1666667 -0.291666,0.375 -0.375,0.625 -0.08333,0.25 -0.125,0.5416667 -0.125,0.875 v 1 1 1 1 0.9999999 1 1 1 c 0,0.333333 0.04167,0.625 0.125,0.875 0.08333,0.25 0.208334,0.458333 0.375,0.625 l 0.5,0.5 c 0.166667,0.166667 0.375,0.291667 0.625,0.375 0.25,0.08333 0.541667,0.125 0.875,0.125 h 1 1 1 1 1 1 1 c 0.333334,0 0.625,-0.04167 0.875,-0.125 0.25,-0.08333 0.458334,-0.208333 0.625,-0.375 l 0.5,-0.5 c 0.166667,-0.166667 0.291667,-0.375 0.375,-0.625 0.08333,-0.25 0.125,-0.541667 0.125,-0.875 v -1 -1 -1 -0.9999999 -1 -1 -1 -1 c 0,-0.3333333 -0.04167,-0.625 -0.125,-0.875 -0.08333,-0.25 -0.208333,-0.4583333 -0.375,-0.625 l -0.5,-0.5 c -0.166666,-0.1666666 -0.375,-0.2916666 -0.625,-0.375 -0.25,-0.083333 -0.541666,-0.125 -0.875,-0.125 -0.333333,0 -0.625,-0.041667 -0.875,-0.125 -0.25,-0.083333 -0.458333,-0.2083333 -0.625,-0.375 -0.166666,-0.1666666 -0.375,-0.2916666 -0.625,-0.375 -0.25,-0.083333 -0.541666,-0.125 -0.875,-0.125 z m 0.5,1.0625 c 0.125,0 0.25,0.020833 0.375,0.0625 0.25,0.083333 0.375,0.2083334 0.375,0.375 0,0.1666667 -0.125,0.2916667 -0.375,0.375 -0.25,0.083333 -0.5,0.083333 -0.75,0 -0.25,-0.083333 -0.375,-0.2083333 -0.375,-0.375 0,-0.1666666 0.125,-0.2916666 0.375,-0.375 0.125,-0.041667 0.25,-0.0625 0.375,-0.0625 z m -3,2 c 0.125,0 0.25,0.020833 0.375,0.0625 0.25,0.083333 0.458334,0.2083334 0.625,0.375 0.166667,0.1666667 0.375,0.2916667 0.625,0.375 0.25,0.083333 0.541667,0.125 0.875,0.125 h 1 c 0.333334,0 0.625,-0.041667 0.875,-0.125 0.25,-0.083333 0.458334,-0.2083333 0.625,-0.375 0.166667,-0.1666666 0.375,-0.2916666 0.625,-0.375 0.25,-0.083333 0.5,-0.083333 0.75,0 0.25,0.083333 0.416667,0.25 0.5,0.5 0.08333,0.25 0.125,0.5416667 0.125,0.875 v 1 1 1 0.9999999 1 1 c 0,0.333333 -0.04167,0.625 -0.125,0.875 -0.08333,0.25 -0.25,0.416667 -0.5,0.5 -0.25,0.08333 -0.541666,0.125 -0.875,0.125 h -1 -1 -1 -1 -1 c -0.333333,0 -0.625,-0.04167 -0.875,-0.125 -0.25,-0.08333 -0.416666,-0.25 -0.5,-0.5 -0.08333,-0.25 -0.125,-0.541667 -0.125,-0.875 v -1 -1 -0.9999999 -1 -1 -1 c 0,-0.3333333 0.04167,-0.625 0.125,-0.875 0.08333,-0.25 0.25,-0.4166666 0.5,-0.5 0.125,-0.041667 0.25,-0.0625 0.375,-0.0625 z m 1.5,2.9375 c -0.333333,0 -0.625,0.041667 -0.875,0.125 -0.25,0.083333 -0.375,0.2083334 -0.375,0.375 0,0.1666667 0.125,0.2916667 0.375,0.375 0.25,0.083333 0.541667,0.125 0.875,0.125 h 1 1 1 c 0.333334,0 0.625,-0.041667 0.875,-0.125 0.25,-0.083333 0.375,-0.2083333 0.375,-0.375 0,-0.1666666 -0.125,-0.2916666 -0.375,-0.375 -0.25,-0.083333 -0.541666,-0.125 -0.875,-0.125 h -1 -1 z m 0,1.9999999 c -0.333333,0 -0.625,0.04167 -0.875,0.125 -0.25,0.08333 -0.375,0.208333 -0.375,0.375 0,0.166667 0.125,0.291667 0.375,0.375 0.25,0.08333 0.541667,0.125 0.875,0.125 h 1 1 1 c 0.333334,0 0.625,-0.04167 0.875,-0.125 0.25,-0.08333 0.375,-0.208333 0.375,-0.375 0,-0.166667 -0.125,-0.291667 -0.375,-0.375 -0.25,-0.08333 -0.541666,-0.125 -0.875,-0.125 h -1 -1 z m 0,2 c -0.333333,0 -0.625,0.04167 -0.875,0.125 -0.25,0.08333 -0.375,0.208333 -0.375,0.375 0,0.166667 0.125,0.291667 0.375,0.375 0.25,0.08333 0.541667,0.125 0.875,0.125 h 1 1 1 c 0.333334,0 0.625,-0.04167 0.875,-0.125 0.25,-0.08333 0.375,-0.208333 0.375,-0.375 0,-0.166667 -0.125,-0.291667 -0.375,-0.375 -0.25,-0.08333 -0.541666,-0.125 -0.875,-0.125 h -1 -1 z"
transform="translate(-27.254237,-1.220339)"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="13.75"
height="13.75"
viewBox="0 0 13.75 13.75"
sodipodi:docname="pencil.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="46.093751"
inkscape:cx="1.5599999"
inkscape:cy="12.44"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g20" />
<g
id="g20"
transform="translate(-1,-1.25)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 12.5,1.25 C 12.333333,1.25 12.166667,1.333333 12,1.5 L 11.5,2 11,2.5 10.5,3 c -0.166667,0.1666667 -0.25,0.3333333 -0.25,0.5 0,0.1666667 0.08333,0.3333333 0.25,0.5 L 11,4.5 11.5,5 12,5.5 c 0.166667,0.1666667 0.333333,0.25 0.5,0.25 0.166667,0 0.333333,-0.083333 0.5,-0.25 L 13.5,5 14,4.5 14.5,4 C 14.666667,3.8333333 14.75,3.6666667 14.75,3.5 14.75,3.3333333 14.666667,3.1666667 14.5,3 L 14,2.5 13.5,2 13,1.5 C 12.833333,1.3333333 12.666667,1.25 12.5,1.25 Z m -4,4 C 8.3333333,5.25 8.1666667,5.3333333 8,5.5 L 7.5,6 7,6.5 6.5,7 6,7.5 5.5,8 5,8.5 4.5,9 4,9.5 3.5,10 3,10.5 2.5,11 2,11.5 1.5,12 C 1.3333333,12.166667 1.2083333,12.375 1.125,12.625 1.0416667,12.875 1,13.166667 1,13.5 c 0,0.333333 0.041667,0.625 0.125,0.875 0.083333,0.25 0.25,0.416667 0.5,0.5 C 1.875,14.958333 2.1666667,15 2.5,15 2.8333333,15 3.125,14.958333 3.375,14.875 3.625,14.791667 3.8333333,14.666667 4,14.5 L 4.5,14 5,13.5 5.5,13 6,12.5 6.5,12 7,11.5 7.5,11 8,10.5 8.5,10 9,9.5 9.5,9 10,8.5 10.5,8 C 10.666667,7.8333333 10.75,7.6666667 10.75,7.5 10.75,7.3333333 10.666667,7.1666667 10.5,7 L 10,6.5 9.5,6 9,5.5 C 8.8333333,5.3333333 8.6666667,5.25 8.5,5.25 Z m -4,5 c 0.1666667,0 0.3333333,0.08333 0.5,0.25 L 5.5,11 c 0.1666667,0.166667 0.25,0.333333 0.25,0.5 0,0.166667 -0.083333,0.333333 -0.25,0.5 L 5,12.5 4.5,13 4,13.5 c -0.1666667,0.166667 -0.375,0.291667 -0.625,0.375 -0.25,0.08333 -0.5,0.08333 -0.75,0 -0.25,-0.08333 -0.4166667,-0.25 -0.5,-0.5 -0.083333,-0.25 -0.083333,-0.5 0,-0.75 C 2.2083333,12.375 2.3333333,12.166667 2.5,12 L 3,11.5 3.5,11 4,10.5 c 0.1666667,-0.166667 0.3333333,-0.25 0.5,-0.25 z"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="7.875"
height="7.9375"
viewBox="0 0 7.875 7.9375"
sodipodi:docname="players.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="23.6"
inkscape:cx="-14.960805"
inkscape:cy="3.4067797"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g16" />
<g
id="g16"
transform="translate(-1.0625,-1.0625)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 4,1.5 Q 4.25,1.25 4.625,1.125 5,1 5.375,1.125 5.75,1.25 6,1.5 6.25,1.75 6.5,2 6.75,2.25 6.875,2.625 7,3 6.875,3.375 6.75,3.75 6.5,4 6.25,4.25 6.25,4.5 6.25,4.75 6.5,5 6.75,5.25 7,5.5 7.25,5.75 7.5,6 7.75,6.25 8,6.5 8.25,6.75 8.5,7 8.75,7.25 8.875,7.625 9,8 8.875,8.375 8.75,8.75 8.375,8.875 8,9 7.5,9 7,9 6.5,9 6,9 5.5,9 5,9 4.5,9 4,9 3.5,9 3,9 2.5,9 2,9 1.625,8.875 1.25,8.75 1.125,8.375 1,8 1.125,7.625 1.25,7.25 1.5,7 1.75,6.75 2,6.5 2.25,6.25 2.5,6 2.75,5.75 3,5.5 3.25,5.25 3.5,5 3.75,4.75 3.75,4.5 3.75,4.25 3.5,4 3.25,3.75 3.125,3.375 3,3 3.125,2.625 3.25,2.25 3.5,2 3.75,1.75 4,1.5"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="7.875"
height="5.5"
viewBox="0 0 7.875 5.5"
sodipodi:docname="power.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="61.458335"
inkscape:cx="-0.14250004"
inkscape:cy="6.83"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g16" />
<g
id="g16"
transform="translate(-2.0625,-3.25)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 9,3.5 Q 9.25,3.25 9.5,3.25 9.75,3.25 9.875,3.625 10,4 9.875,4.375 9.75,4.75 9.5,5 9.25,5.25 9.125,5.625 9,6 8.875,6.375 8.75,6.75 8.5,7 8.25,7.25 8,7.5 7.75,7.75 7.5,8 7.25,8.25 7,8.5 6.75,8.75 6.5,8.75 6.25,8.75 6,8.5 5.75,8.25 5.5,8 5.25,7.75 5,7.5 4.75,7.25 4.5,7.25 4.25,7.25 4,7.5 3.75,7.75 3.5,8 3.25,8.25 3,8.5 2.75,8.75 2.5,8.75 2.25,8.75 2.125,8.375 2,8 2.125,7.625 2.25,7.25 2.5,7 2.75,6.75 2.875,6.375 3,6 3.125,5.625 3.25,5.25 3.5,5 3.75,4.75 4,4.5 4.25,4.25 4.5,4.25 4.75,4.25 5,4.5 5.25,4.75 5.5,5 5.75,5.25 6,5.5 6.25,5.75 6.5,5.75 6.75,5.75 7,5.5 7.25,5.25 7.5,5 7.75,4.75 8,4.5 8.25,4.25 8.5,4 8.75,3.75 9,3.5"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="7.875"
height="8.9375"
viewBox="0 0 7.875 8.9375"
sodipodi:docname="production.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="43.457605"
inkscape:cx="-3.23046"
inkscape:cy="8.3742276"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g20" />
<g
id="g20"
transform="translate(-2.0625,-1)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 2.125,1.625 Q 2.25,1.25 2.625,1.125 3,1 3.5,1 4,1 4.5,1 5,1 5.5,1 6,1 6.5,1 7,1 7.5,1 8,1 8.5,1 9,1 9.375,1.125 9.75,1.25 9.875,1.625 10,2 9.875,2.375 9.75,2.75 9.5,3 9.25,3.25 9,3.5 8.75,3.75 8.5,4 8.25,4.25 8.125,4.625 8,5 8,5.5 8,6 8,6.5 8,7 8,7.5 8,8 7.875,8.375 7.75,8.75 7.5,9 7.25,9.25 7,9.5 6.75,9.75 6.375,9.875 6,10 5.625,9.875 5.25,9.75 5,9.5 4.75,9.25 4.5,9 4.25,8.75 4.125,8.375 4,8 4,7.5 4,7 4,6.5 4,6 4,5.5 4,5 3.875,4.625 3.75,4.25 3.5,4 3.25,3.75 3,3.5 2.75,3.25 2.5,3 2.25,2.75 2.125,2.375 2,2 2.125,1.625 m 3,6.75 Q 5.25,8.75 5.5,8.75 5.75,8.75 6,8.5 6.25,8.25 6.5,8 6.75,7.75 6.75,7.5 6.75,7.25 6.5,7 6.25,6.75 6.25,6.5 6.25,6.25 6.5,6 6.75,5.75 6.75,5.5 6.75,5.25 6.5,5 6.25,4.75 6,4.5 5.75,4.25 5.5,4.25 5.25,4.25 5.125,4.625 5,5 5,5.5 5,6 5,6.5 5,7 5,7.5 5,8 5.125,8.375 M 7.5,3 Q 8,3 8.375,2.875 8.75,2.75 8.75,2.5 8.75,2.25 8.375,2.125 8,2 7.5,2 7,2 6.5,2 6,2 5.5,2 5,2 4.5,2 4,2 3.625,2.125 3.25,2.25 3.25,2.5 3.25,2.75 3.625,2.875 4,3 4.5,3 5,3 5.5,3 6,3 6.5,3 7,3 7.5,3"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="14"
height="14"
viewBox="0 0 14 14"
sodipodi:docname="refresh.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="46.093751"
inkscape:cx="1.5599999"
inkscape:cy="12.44"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g18" />
<g
id="g18"
transform="translate(-1,-1)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 3.5,1 C 3.1666667,1 2.875,1.0416667 2.625,1.125 2.375,1.2083333 2.1666667,1.3333333 2,1.5 L 1.5,2 C 1.3333333,2.1666667 1.2083333,2.375 1.125,2.625 1.0416667,2.875 1,3.1666667 1,3.5 v 1 1 1 1 c 0,0.3333333 0.041667,0.625 0.125,0.875 0.083333,0.25 0.25,0.4166667 0.5,0.5 0.25,0.083333 0.5,0.083333 0.75,0 0.25,-0.083333 0.4166667,-0.25 0.5,-0.5 C 2.9583333,8.125 3,7.8333333 3,7.5 v -1 -1 -1 C 3,4.1666667 3.0416667,3.875 3.125,3.625 3.2083333,3.375 3.375,3.2083333 3.625,3.125 3.875,3.0416667 4.1666667,3 4.5,3 h 1 1 1 1 1 c 0.3333333,0 0.625,0.041667 0.875,0.125 0.25,0.083333 0.375,0.2083333 0.375,0.375 0,0.1666667 -0.08333,0.3333333 -0.25,0.5 -0.166667,0.1666667 -0.25,0.3333333 -0.25,0.5 0,0.1666667 0.125,0.2916667 0.375,0.375 C 10.875,4.9583333 11.166667,5 11.5,5 h 1 c 0.333333,0 0.625,-0.041667 0.875,-0.125 0.25,-0.083333 0.416667,-0.25 0.5,-0.5 C 13.958333,4.125 14,3.8333333 14,3.5 v -1 C 14,2.1666667 13.958333,1.875 13.875,1.625 13.791667,1.375 13.666667,1.25 13.5,1.25 13.333333,1.25 13.166667,1.3333333 13,1.5 12.833333,1.6666667 12.666667,1.75 12.5,1.75 12.333333,1.75 12.166667,1.6666667 12,1.5 11.833333,1.3333333 11.625,1.2083333 11.375,1.125 11.125,1.0416667 10.833333,1 10.5,1 h -1 -1 -1 -1 -1 -1 z M 14,7.0625 c -0.125,0 -0.25,0.020833 -0.375,0.0625 -0.25,0.083333 -0.416667,0.25 -0.5,0.5 C 13.041667,7.875 13,8.1666667 13,8.5 v 1 1 1 c 0,0.333333 -0.04167,0.625 -0.125,0.875 -0.08333,0.25 -0.25,0.416667 -0.5,0.5 C 12.125,12.958333 11.833333,13 11.5,13 h -1 -1 -1 -1 -1 C 6.1666667,13 5.875,12.958333 5.625,12.875 5.375,12.791667 5.25,12.666667 5.25,12.5 5.25,12.333333 5.3333333,12.166667 5.5,12 5.6666667,11.833333 5.75,11.666667 5.75,11.5 5.75,11.333333 5.625,11.208333 5.375,11.125 5.125,11.041667 4.8333333,11 4.5,11 h -1 c -0.3333333,0 -0.625,0.04167 -0.875,0.125 -0.25,0.08333 -0.4166667,0.25 -0.5,0.5 C 2.0416667,11.875 2,12.166667 2,12.5 v 1 c 0,0.333333 0.041667,0.625 0.125,0.875 0.083333,0.25 0.2083333,0.375 0.375,0.375 0.1666667,0 0.3333333,-0.08333 0.5,-0.25 0.1666667,-0.166667 0.3333333,-0.25 0.5,-0.25 0.1666667,0 0.3333333,0.08333 0.5,0.25 0.1666667,0.166667 0.375,0.291667 0.625,0.375 C 4.875,14.958333 5.1666667,15 5.5,15 h 1 1 1 1 1 1 1 c 0.333333,0 0.625,-0.04167 0.875,-0.125 C 13.625,14.79167 13.833333,14.666667 14,14.5 L 14.5,14 c 0.166667,-0.166667 0.291667,-0.375 0.375,-0.625 C 14.958333,13.125 15,12.833333 15,12.5 v -1 -1 -1 -1 C 15,8.1666667 14.95833,7.875 14.875,7.625 14.79167,7.375 14.625,7.2083333 14.375,7.125 14.25,7.0833333 14.125,7.0625 14,7.0625 Z"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="10"
height="11"
viewBox="0 0 10 11"
sodipodi:docname="save.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="16.857143"
inkscape:cx="5"
inkscape:cy="1.2542373"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g22" />
<g
id="g22"
transform="translate(-2,-2)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 2.125,2.625 Q 2.25,2.25 2.625,2.125 3,2 3.5,2 4,2 4.5,2 5,2 5.5,2 6,2 6.5,2 7,2 7.5,2 8,2 8.5,2 9,2 9.5,2 10,2 10.375,2.125 10.75,2.25 11,2.5 11.25,2.75 11.5,3 11.75,3.25 11.875,3.625 12,4 12,4.5 q 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 -0.125,0.875 -0.125,0.375 -0.5,0.5 Q 11,13 10.5,13 10,13 9.5,13 9,13 8.5,13 8,13 7.5,13 7,13 6.5,13 6,13 5.5,13 5,13 4.5,13 4,13 3.5,13 3,13 2.625,12.875 2.25,12.75 2.125,12.375 2,12 2,11.5 2,11 2,10.5 2,10 2,9.5 2,9 2,8.5 2,8 2,7.5 2,7 2,6.5 2,6 2,5.5 2,5 2,4.5 2,4 2,3.5 2,3 2.125,2.625 M 7.5,12 Q 8,12 8.375,11.875 8.75,11.75 8.875,11.375 9,11 9,10.5 9,10 8.875,9.625 8.75,9.25 8.375,9.125 8,9 7.5,9 7,9 6.5,9 6,9 5.625,9.125 5.25,9.25 5.125,9.625 5,10 5,10.5 5,11 5.125,11.375 5.25,11.75 5.625,11.875 6,12 6.5,12 q 0.5,0 1,0 m 2.625,-0.625 q 0.125,0.375 0.375,0.375 0.25,0 0.375,-0.375 Q 11,11 11,10.5 11,10 11,9.5 11,9 11,8.5 11,8 11,7.5 11,7 11,6.5 11,6 11,5.5 11,5 11,4.5 11,4 10.875,3.625 10.75,3.25 10.375,3.125 10,3 9.625,3.125 9.25,3.25 9.125,3.625 9,4 9,4.5 9,5 8.875,5.375 8.75,5.75 8.375,5.875 8,6 7.5,6 7,6 6.5,6 6,6 5.625,5.875 5.25,5.75 5.125,5.375 5,5 5,4.5 5,4 4.875,3.625 4.75,3.25 4.375,3.125 4,3 3.625,3.125 3.25,3.25 3.125,3.625 3,4 3,4.5 3,5 3,5.5 3,6 3,6.5 3,7 3,7.5 3,8 3,8.5 3,9 3,9.5 3,10 3,10.5 3,11 3.125,11.375 3.25,11.75 3.5,11.75 3.75,11.75 3.875,11.375 4,11 4,10.5 4,10 4,9.5 4,9 4.125,8.625 4.25,8.25 4.625,8.125 5,8 5.5,8 6,8 6.5,8 7,8 7.5,8 8,8 8.5,8 9,8 9.375,8.125 9.75,8.25 9.875,8.625 10,9 10,9.5 q 0,0.5 0,1 0,0.5 0.125,0.875 m -3.5,-6.5 Q 7,5 7.375,4.875 7.75,4.75 7.875,4.375 8,4 7.875,3.625 7.75,3.25 7.375,3.125 7,3 6.625,3.125 6.25,3.25 6.125,3.625 6,4 6.125,4.375 q 0.125,0.375 0.5,0.5"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="10.75"
height="13.75"
viewBox="0 0 10.75 13.75"
sodipodi:docname="spray.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="14.75"
inkscape:cx="-15.554688"
inkscape:cy="6.796875"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g833" />
<g
id="g833"
transform="translate(-1.249603,-1.2502648)">
<path
style="fill:#ffffff;fill-opacity:1"
d="m 23.804688,1.046875 c -0.166667,0 -0.25,0.083333 -0.25,0.25 0,0.1666667 0.08333,0.25 0.25,0.25 0.166666,0 0.25,-0.083333 0.25,-0.25 0,-0.1666667 -0.08333,-0.25 -0.25,-0.25 z m 6,0.75 c -0.333334,0 -0.625,0.041667 -0.875,0.125 -0.25,0.083333 -0.375,0.2083333 -0.375,0.375 0,0.1666667 0.08333,0.3333333 0.25,0.5 0.166666,0.1666667 0.25,0.3333333 0.25,0.5 0,0.1666667 -0.08333,0.3333333 -0.25,0.5 l -0.5,0.5 -0.5,0.5 -0.5,0.5 -0.5,0.5 c -0.166667,0.1666667 -0.25,0.3333333 -0.25,0.5 0,0.1666667 0.125,0.2916667 0.375,0.375 0.25,0.083333 0.541666,0.125 0.875,0.125 h 1 1 1 1 1 c 0.333333,0 0.625,-0.041667 0.875,-0.125 0.25,-0.083333 0.375,-0.2083333 0.375,-0.375 0,-0.1666667 -0.08333,-0.3333333 -0.25,-0.5 l -0.5,-0.5 -0.5,-0.5 c -0.166667,-0.1666667 -0.291667,-0.375 -0.375,-0.625 -0.08333,-0.25 -0.125,-0.5416667 -0.125,-0.875 0,-0.3333333 -0.04167,-0.625 -0.125,-0.875 -0.08333,-0.25 -0.25,-0.4166667 -0.5,-0.5 -0.25,-0.083333 -0.541667,-0.125 -0.875,-0.125 z m -4,0.25 c -0.166667,0 -0.25,0.083333 -0.25,0.25 0,0.1666667 0.08333,0.3333333 0.25,0.5 0.166666,0.1666667 0.25,0.3333333 0.25,0.5 0,0.1666667 -0.08333,0.3333333 -0.25,0.5 -0.166667,0.1666667 -0.25,0.3333333 -0.25,0.5 0,0.1666667 0.08333,0.25 0.25,0.25 0.166666,0 0.333333,-0.083333 0.5,-0.25 l 0.5,-0.5 c 0.166666,-0.1666667 0.25,-0.3333333 0.25,-0.5 0,-0.1666667 -0.08333,-0.3333333 -0.25,-0.5 l -0.5,-0.5 c -0.166667,-0.1666667 -0.333334,-0.25 -0.5,-0.25 z m -2,1 c -0.166667,0 -0.25,0.083333 -0.25,0.25 0,0.1666667 0.08333,0.25 0.25,0.25 0.166666,0 0.25,-0.083333 0.25,-0.25 0,-0.1666667 -0.08333,-0.25 -0.25,-0.25 z m 0,2 c -0.166667,0 -0.25,0.083333 -0.25,0.25 0,0.1666667 0.08333,0.25 0.25,0.25 0.166666,0 0.25,-0.083333 0.25,-0.25 0,-0.1666667 -0.08333,-0.25 -0.25,-0.25 z m 4,2.75 c -0.333334,0 -0.625,0.041667 -0.875,0.125 -0.25,0.083333 -0.416667,0.25 -0.5,0.5 -0.08333,0.25 -0.125,0.5416667 -0.125,0.875 v 1 1 c 0,0.333333 0.04167,0.625 0.125,0.875 0.08333,0.25 0.25,0.416667 0.5,0.5 0.25,0.08333 0.541666,0.125 0.875,0.125 h 1 1 1 1 1 c 0.333333,0 0.625,-0.04167 0.875,-0.125 0.25,-0.08333 0.416666,-0.25 0.5,-0.5 0.08333,-0.25 0.125,-0.541667 0.125,-0.875 v -1 -1 c 0,-0.3333333 -0.04167,-0.625 -0.125,-0.875 -0.08333,-0.25 -0.25,-0.4166667 -0.5,-0.5 -0.25,-0.083333 -0.541667,-0.125 -0.875,-0.125 h -1 -1 -1 -1 z m 0,6 c -0.333334,0 -0.625,0.04167 -0.875,0.125 -0.25,0.08333 -0.375,0.208333 -0.375,0.375 0,0.166667 0.125,0.291667 0.375,0.375 0.25,0.08333 0.541666,0.125 0.875,0.125 h 1 1 1 1 1 c 0.333333,0 0.625,-0.04167 0.875,-0.125 0.25,-0.08333 0.375,-0.208333 0.375,-0.375 0,-0.166667 -0.125,-0.291667 -0.375,-0.375 -0.25,-0.08333 -0.541667,-0.125 -0.875,-0.125 h -1 -1 -1 -1 z"
transform="translate(-22.305085,0.20338983)"
id="path819"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="12"
height="11.75"
viewBox="0 0 12 11.75"
sodipodi:docname="terrain.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="37.249375"
inkscape:cx="-0.42986742"
inkscape:cy="6.6173436"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g18" />
<g
id="g18"
transform="translate(-1,-1.25)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 5,1.5 Q 5.25,1.25 5.5,1.25 5.75,1.25 6,1.5 6.25,1.75 6.5,2 6.75,2.25 7,2.5 7.25,2.75 7.5,3 7.75,3.25 8,3.5 8.25,3.75 8.5,3.75 8.75,3.75 9,3.5 9.25,3.25 9.5,3.25 9.75,3.25 10,3.5 10.25,3.75 10.5,4 10.75,4.25 11,4.5 11.25,4.75 11.5,5 11.75,5.25 12,5.5 12.25,5.75 12.5,6 12.75,6.25 12.875,6.625 13,7 13,7.5 q 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 -0.125,0.875 -0.125,0.375 -0.5,0.5 Q 12,13 11.5,13 11,13 10.5,13 10,13 9.5,13 9,13 8.5,13 8,13 7.5,13 7,13 6.5,13 6,13 5.5,13 5,13 4.5,13 4,13 3.5,13 3,13 2.5,13 2,13 1.625,12.875 1.25,12.75 1.125,12.375 1,12 1,11.5 1,11 1,10.5 1,10 1,9.5 1,9 1,8.5 1,8 1,7.5 1,7 1,6.5 1,6 1.125,5.625 1.25,5.25 1.5,5 1.75,4.75 2,4.5 2.25,4.25 2.5,4 2.75,3.75 3,3.5 3.25,3.25 3.5,3 3.75,2.75 4,2.5 4.25,2.25 4.5,2 4.75,1.75 5,1.5 M 10.5,12 q 0.5,0 0.875,-0.125 0.375,-0.125 0.5,-0.5 Q 12,11 12,10.5 12,10 12,9.5 12,9 12,8.5 12,8 11.875,7.625 11.75,7.25 11.5,7 11.25,6.75 11,6.5 10.75,6.25 10.5,6 10.25,5.75 10,5.5 9.75,5.25 9.5,5.25 9.25,5.25 9,5.5 8.75,5.75 8.5,5.75 8.25,5.75 8,5.5 7.75,5.25 7.5,5 7.25,4.75 7,4.5 6.75,4.25 6.5,4 6.25,3.75 6,3.5 5.75,3.25 5.5,3.25 5.25,3.25 5,3.5 4.75,3.75 4.5,4 4.25,4.25 4,4.5 3.75,4.75 3.5,5 3.25,5.25 3,5.5 2.75,5.75 2.5,6 2.25,6.25 2.125,6.625 2,7 2,7.5 q 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 0.125,0.875 0.125,0.375 0.5,0.5 Q 3,12 3.5,12 q 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0 0.5,0 1,0"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="10"
height="12"
viewBox="0 0 10 12"
sodipodi:docname="trash.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="16.857143"
inkscape:cx="-18.372881"
inkscape:cy="5.7627119"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g26" />
<g
id="g26"
transform="translate(-2,-1)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 5.125,1.625 Q 5.25,1.25 5.625,1.125 6,1 6.5,1 7,1 7.5,1 8,1 8.375,1.125 8.75,1.25 8.875,1.625 9,2 9.125,2.375 9.25,2.75 9.625,2.875 10,3 10.5,3 11,3 11.375,3.125 11.75,3.25 11.875,3.625 12,4 12,4.5 12,5 12,5.5 12,6 11.875,6.375 11.75,6.75 11.5,7 11.25,7.25 11.125,7.625 11,8 11,8.5 q 0,0.5 0,1 0,0.5 0,1 0,0.5 0,1 0,0.5 -0.125,0.875 -0.125,0.375 -0.5,0.5 Q 10,13 9.5,13 9,13 8.5,13 8,13 7.5,13 7,13 6.5,13 6,13 5.5,13 5,13 4.5,13 4,13 3.625,12.875 3.25,12.75 3.125,12.375 3,12 3,11.5 3,11 3,10.5 3,10 3,9.5 3,9 3,8.5 3,8 2.875,7.625 2.75,7.25 2.5,7 2.25,6.75 2.125,6.375 2,6 2,5.5 2,5 2,4.5 2,4 2.125,3.625 2.25,3.25 2.625,3.125 3,3 3.5,3 4,3 4.375,2.875 4.75,2.75 4.875,2.375 5,2 5.125,1.625 m -1,9.75 Q 4.25,11.75 4.5,11.75 4.75,11.75 4.875,11.375 5,11 5,10.5 5,10 5,9.5 5,9 5,8.5 5,8 4.875,7.625 4.75,7.25 4.5,7.25 4.25,7.25 4.125,7.625 4,8 4,8.5 q 0,0.5 0,1 0,0.5 0,1 0,0.5 0.125,0.875 m 2.5,0.5 Q 7,12 7.375,11.875 7.75,11.75 7.875,11.375 8,11 8,10.5 8,10 8,9.5 8,9 8,8.5 8,8 7.875,7.625 7.75,7.25 7.375,7.125 7,7 6.625,7.125 6.25,7.25 6.125,7.625 6,8 6,8.5 q 0,0.5 0,1 0,0.5 0,1 0,0.5 0.125,0.875 0.125,0.375 0.5,0.5 m 2.5,-0.5 Q 9.25,11.75 9.5,11.75 9.75,11.75 9.875,11.375 10,11 10,10.5 10,10 10,9.5 10,9 10,8.5 10,8 9.875,7.625 9.75,7.25 9.5,7.25 9.25,7.25 9.125,7.625 9,8 9,8.5 9,9 9,9.5 9,10 9,10.5 9,11 9.125,11.375 M 9.5,6 Q 10,6 10.375,5.875 10.75,5.75 10.875,5.375 11,5 10.875,4.625 10.75,4.25 10.375,4.125 10,4 9.5,4 9,4 8.5,4 8,4 7.5,4 7,4 6.5,4 6,4 5.5,4 5,4 4.5,4 4,4 3.625,4.125 3.25,4.25 3.125,4.625 3,5 3.125,5.375 3.25,5.75 3.625,5.875 4,6 4.5,6 5,6 5.5,6 6,6 6.5,6 7,6 7.5,6 8,6 8.5,6 9,6 9.5,6 M 6.625,2.875 Q 7,3 7.375,2.875 7.75,2.75 7.75,2.5 7.75,2.25 7.375,2.125 7,2 6.625,2.125 6.25,2.25 6.25,2.5 q 0,0.25 0.375,0.375"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="8"
height="8.9375"
viewBox="0 0 8 8.9375"
sodipodi:docname="turret.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="61.458335"
inkscape:cx="-0.047457671"
inkscape:cy="7.9986441"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g18" />
<g
id="g18"
transform="translate(-2,-1.0625)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 3.125,1.625 Q 3.25,1.25 3.625,1.125 4,1 4.375,1.125 4.75,1.25 4.875,1.625 5,2 5.125,2.375 5.25,2.75 5.625,2.875 6,3 6.375,2.875 6.75,2.75 6.875,2.375 7,2 7.125,1.625 7.25,1.25 7.625,1.125 8,1 8.375,1.125 8.75,1.25 8.875,1.625 9,2 9,2.5 9,3 9,3.5 9,4 9.125,4.375 9.25,4.75 9.5,5 9.75,5.25 9.875,5.625 10,6 10,6.5 10,7 10,7.5 10,8 10,8.5 10,9 9.875,9.375 9.75,9.75 9.375,9.875 9,10 8.5,10 8,10 7.625,9.875 7.25,9.75 7,9.5 6.75,9.25 6.375,9.125 6,9 5.625,9.125 5.25,9.25 5,9.5 4.75,9.75 4.375,9.875 4,10 3.5,10 3,10 2.625,9.875 2.25,9.75 2.125,9.375 2,9 2,8.5 2,8 2,7.5 2,7 2,6.5 2,6 2.125,5.625 2.25,5.25 2.5,5 2.75,4.75 2.875,4.375 3,4 3,3.5 3,3 3,2.5 3,2 3.125,1.625 m 4.5,7.25 Q 8,9 8.375,8.875 8.75,8.75 8.875,8.375 9,8 9,7.5 9,7 9,6.5 9,6 8.875,5.625 8.75,5.25 8.5,5 8.25,4.75 8,4.5 7.75,4.25 7.375,4.125 7,4 6.5,4 6,4 5.5,4 5,4 4.625,4.125 4.25,4.25 4,4.5 3.75,4.75 3.5,5 3.25,5.25 3.125,5.625 3,6 3,6.5 3,7 3,7.5 3,8 3.125,8.375 3.25,8.75 3.625,8.875 4,9 4.375,8.875 4.75,8.75 5,8.5 5.25,8.25 5.625,8.125 6,8 6.375,8.125 6.75,8.25 7,8.5 7.25,8.75 7.625,8.875"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg32"
width="10"
height="7.9374995"
viewBox="0 0 10 7.9374995"
sodipodi:docname="units.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata38">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs36" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview34"
showgrid="false"
inkscape:zoom="43.457605"
inkscape:cx="-7.4980789"
inkscape:cy="8.8012544"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g60" />
<g
id="g60"
transform="translate(-1,-2)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 5.5,2 C 5.1666667,2 4.875,2.0416667 4.625,2.125 4.375,2.2083333 4.1666667,2.3333333 4,2.5 L 3.5,3 3,3.5 2.5,4 2,4.5 1.5,5 C 1.3333333,5.1666667 1.2083333,5.375 1.125,5.625 1.0416667,5.875 1,6.1666667 1,6.5 1,6.8333333 1.0416667,7.125 1.125,7.375 1.2083333,7.625 1.3333333,7.75 1.5,7.75 1.6666667,7.75 1.8333333,7.6666667 2,7.5 2.1666667,7.3333333 2.3333333,7.25 2.5,7.25 2.6666667,7.25 2.7916667,7.375 2.875,7.625 2.9583333,7.875 3,8.1666667 3,8.5 c 0,0.3333333 0.041667,0.625 0.125,0.875 0.083333,0.25 0.25,0.4166667 0.5,0.5 0.25,0.083333 0.5,0.083333 0.75,0 0.25,-0.083333 0.4166667,-0.25 0.5,-0.5 l 0.25,-0.75 c 0.083333,-0.25 0.25,-0.4166667 0.5,-0.5 0.25,-0.083333 0.5,-0.083333 0.75,0 0.25,0.083333 0.4166667,0.25 0.5,0.5 l 0.25,0.75 c 0.083333,0.25 0.25,0.4166667 0.5,0.5 0.25,0.083333 0.5,0.083333 0.75,0 0.25,-0.083333 0.4166667,-0.25 0.5,-0.5 C 8.9583333,9.125 9,8.8333333 9,8.5 9,8.1666667 9.0416667,7.875 9.125,7.625 9.2083333,7.375 9.3333333,7.25 9.5,7.25 c 0.1666667,0 0.3333333,0.083333 0.5,0.25 0.166667,0.1666667 0.333333,0.25 0.5,0.25 0.166667,0 0.291667,-0.125 0.375,-0.375 C 10.958333,7.125 11,6.8333333 11,6.5 11,6.1666667 10.958333,5.875 10.875,5.625 10.791667,5.375 10.666667,5.1666667 10.5,5 L 10,4.5 9.5,4 9,3.5 8.5,3 8,2.5 C 7.8333333,2.3333333 7.625,2.2083333 7.375,2.125 7.125,2.0416667 6.8333333,2 6.5,2 Z m 0,1 h 1 C 6.8333333,3 7.125,3.0416667 7.375,3.125 7.625,3.2083333 7.8333333,3.3333333 8,3.5 L 8.5,4 9,4.5 9.5,5 c 0.1666667,0.1666667 0.25,0.3333333 0.25,0.5 0,0.1666667 -0.125,0.2916667 -0.375,0.375 l -0.75,0.25 C 8.375,6.2083333 8.1666667,6.3333333 8,6.5 7.8333333,6.6666667 7.625,6.7916667 7.375,6.875 7.125,6.9583333 6.8333333,7 6.5,7 h -1 C 5.1666667,7 4.875,6.9583333 4.625,6.875 4.375,6.7916667 4.1666667,6.6666667 4,6.5 3.8333333,6.3333333 3.625,6.2083333 3.375,6.125 L 2.625,5.875 C 2.375,5.7916667 2.25,5.6666667 2.25,5.5 2.25,5.3333333 2.3333333,5.1666667 2.5,5 L 3,4.5 3.5,4 4,3.5 C 4.1666667,3.3333333 4.375,3.2083333 4.625,3.125 4.875,3.0416667 5.1666667,3 5.5,3 Z M 6,4.0625 C 5.875,4.0625 5.75,4.0833333 5.625,4.125 5.375,4.2083333 5.25,4.3333333 5.25,4.5 c 0,0.1666667 0.125,0.2916667 0.375,0.375 0.25,0.083333 0.5,0.083333 0.75,0 C 6.625,4.7916667 6.75,4.6666667 6.75,4.5 6.75,4.3333333 6.625,4.2083333 6.375,4.125 6.25,4.0833333 6.125,4.0625 6,4.0625 Z"
id="path54"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="9.875"
height="9.9375"
viewBox="0 0 9.875 9.9375"
sodipodi:docname="upgrade.svg"
inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1318"
id="namedview4"
showgrid="false"
inkscape:zoom="61.458335"
inkscape:cx="0.89004233"
inkscape:cy="7.6969492"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g18" />
<g
id="g18"
transform="translate(-1.0625,-1.0625)">
<path
style="fill:#ffffff;fill-opacity:1"
d="M 5,1.5 Q 5.25,1.25 5.625,1.125 6,1 6.375,1.125 6.75,1.25 7,1.5 7.25,1.75 7.5,2 7.75,2.25 8,2.5 8.25,2.75 8.5,3 8.75,3.25 9,3.5 9.25,3.75 9.5,4 9.75,4.25 10,4.5 10.25,4.75 10.5,5 10.75,5.25 10.875,5.625 11,6 10.875,6.375 10.75,6.75 10.375,6.875 10,7 9.5,7 9,7 8.625,7.125 8.25,7.25 8.125,7.625 8,8 8,8.5 8,9 8,9.5 8,10 7.875,10.375 7.75,10.75 7.375,10.875 7,11 6.5,11 6,11 5.5,11 5,11 4.625,10.875 4.25,10.75 4.125,10.375 4,10 4,9.5 4,9 4,8.5 4,8 3.875,7.625 3.75,7.25 3.375,7.125 3,7 2.5,7 2,7 1.625,6.875 1.25,6.75 1.125,6.375 1,6 1.125,5.625 1.25,5.25 1.5,5 1.75,4.75 2,4.5 2.25,4.25 2.5,4 2.75,3.75 3,3.5 3.25,3.25 3.5,3 3.75,2.75 4,2.5 4.25,2.25 4.5,2 4.75,1.75 5,1.5 M 5.625,9.875 Q 6,10 6.375,9.875 6.75,9.75 6.875,9.375 7,9 7,8.5 7,8 7,7.5 7,7 7.125,6.625 7.25,6.25 7.625,6.125 8,6 8.375,5.875 8.75,5.75 8.75,5.5 8.75,5.25 8.5,5 8.25,4.75 8,4.5 7.75,4.25 7.5,4 7.25,3.75 7,3.5 6.75,3.25 6.375,3.125 6,3 5.625,3.125 5.25,3.25 5,3.5 4.75,3.75 4.5,4 4.25,4.25 4,4.5 3.75,4.75 3.5,5 3.25,5.25 3.25,5.5 3.25,5.75 3.625,5.875 4,6 4.375,6.125 4.75,6.25 4.875,6.625 5,7 5,7.5 5,8 5,8.5 5,9 5.125,9.375 q 0.125,0.375 0.5,0.5"
id="path14"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,3 @@
Open("core/assets/fonts/font.ttf")
MergeFonts("core/assets-raw/fontgen/out/font.ttf")
Generate("core/assets/fonts/font.ttf")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 719 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 718 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 130 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 128 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 147 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 237 B

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