From 76840ff5c2cf9e7a09f1c55d63c1ced55372ba5b Mon Sep 17 00:00:00 2001 From: Khopa Date: Thu, 3 Dec 2020 22:48:28 +0100 Subject: [PATCH] Added display settings to the toolbar. --- game/theater/controlpoint.py | 2 +- qt_ui/displayoptions.py | 1 - qt_ui/uiconstants.py | 18 ++++++++++ qt_ui/windows/QLiberationWindow.py | 37 +++++++++++++++++---- resources/stylesheets/style-dcs.css | 15 +++++++++ resources/ui/misc/all-flight-paths.png | Bin 0 -> 761 bytes resources/ui/misc/blue-sam.png | Bin 0 -> 2118 bytes resources/ui/misc/dark/discord.png | Bin 0 -> 804 bytes resources/ui/misc/dark/github.png | Bin 0 -> 1494 bytes resources/ui/misc/detection-sam.png | Bin 0 -> 2373 bytes resources/ui/misc/discord.png | Bin 0 -> 817 bytes resources/ui/misc/flight-path.png | Bin 0 -> 478 bytes resources/ui/misc/github.png | Bin 0 -> 1391 bytes resources/ui/misc/hide-flight-path.png | Bin 0 -> 760 bytes resources/ui/misc/light/arrows-h.png | Bin 0 -> 206 bytes resources/ui/misc/light/bullseye.png | Bin 0 -> 677 bytes resources/ui/misc/light/circle-o-notch.png | Bin 0 -> 598 bytes resources/ui/misc/light/circle-o.png | Bin 0 -> 540 bytes resources/ui/misc/light/circle-thin.png | Bin 0 -> 481 bytes resources/ui/misc/light/circle.png | Bin 0 -> 417 bytes resources/ui/misc/light/discord.png | Bin 0 -> 817 bytes resources/ui/misc/light/dot-circle-o.png | Bin 0 -> 602 bytes resources/ui/misc/light/eraser.png | Bin 0 -> 352 bytes resources/ui/misc/light/fighter-jet.png | Bin 0 -> 391 bytes resources/ui/misc/light/flag.png | Bin 0 -> 370 bytes resources/ui/misc/light/github.png | Bin 0 -> 1391 bytes resources/ui/misc/light/industry.png | Bin 0 -> 233 bytes resources/ui/misc/light/info.png | Bin 0 -> 166 bytes resources/ui/misc/light/map-marker.png | Bin 0 -> 407 bytes resources/ui/misc/light/map-o.png | Bin 0 -> 400 bytes resources/ui/misc/light/map.png | Bin 0 -> 370 bytes resources/ui/misc/light/object-group.png | Bin 0 -> 157 bytes resources/ui/misc/light/object-ungroup.png | Bin 0 -> 170 bytes resources/ui/misc/light/plane.png | Bin 0 -> 465 bytes resources/ui/misc/medium/discord.png | Bin 0 -> 803 bytes resources/ui/misc/medium/github.png | Bin 0 -> 1519 bytes resources/ui/misc/red-sam.png | Bin 0 -> 2119 bytes 37 files changed, 65 insertions(+), 8 deletions(-) create mode 100644 resources/ui/misc/all-flight-paths.png create mode 100644 resources/ui/misc/blue-sam.png create mode 100644 resources/ui/misc/dark/discord.png create mode 100644 resources/ui/misc/dark/github.png create mode 100644 resources/ui/misc/detection-sam.png create mode 100644 resources/ui/misc/discord.png create mode 100644 resources/ui/misc/flight-path.png create mode 100644 resources/ui/misc/github.png create mode 100644 resources/ui/misc/hide-flight-path.png create mode 100644 resources/ui/misc/light/arrows-h.png create mode 100644 resources/ui/misc/light/bullseye.png create mode 100644 resources/ui/misc/light/circle-o-notch.png create mode 100644 resources/ui/misc/light/circle-o.png create mode 100644 resources/ui/misc/light/circle-thin.png create mode 100644 resources/ui/misc/light/circle.png create mode 100644 resources/ui/misc/light/discord.png create mode 100644 resources/ui/misc/light/dot-circle-o.png create mode 100644 resources/ui/misc/light/eraser.png create mode 100644 resources/ui/misc/light/fighter-jet.png create mode 100644 resources/ui/misc/light/flag.png create mode 100644 resources/ui/misc/light/github.png create mode 100644 resources/ui/misc/light/industry.png create mode 100644 resources/ui/misc/light/info.png create mode 100644 resources/ui/misc/light/map-marker.png create mode 100644 resources/ui/misc/light/map-o.png create mode 100644 resources/ui/misc/light/map.png create mode 100644 resources/ui/misc/light/object-group.png create mode 100644 resources/ui/misc/light/object-ungroup.png create mode 100644 resources/ui/misc/light/plane.png create mode 100644 resources/ui/misc/medium/discord.png create mode 100644 resources/ui/misc/medium/github.png create mode 100644 resources/ui/misc/red-sam.png diff --git a/game/theater/controlpoint.py b/game/theater/controlpoint.py index f95aa479..43f82e87 100644 --- a/game/theater/controlpoint.py +++ b/game/theater/controlpoint.py @@ -230,7 +230,7 @@ class ControlPoint(MissionTarget, ABC): self.stances: Dict[int, CombatStance] = {} self.pending_unit_deliveries: Optional[UnitsDeliveryEvent] = None - self.target_position = None + self.target_position: Point = None def __repr__(self): return f"<{__class__}: {self.name}>" diff --git a/qt_ui/displayoptions.py b/qt_ui/displayoptions.py index 6cbbffc5..28a9ae4d 100644 --- a/qt_ui/displayoptions.py +++ b/qt_ui/displayoptions.py @@ -50,7 +50,6 @@ class DisplayOptions: ground_objects = DisplayRule("Ground Objects", True) control_points = DisplayRule("Control Points", True) lines = DisplayRule("Lines", True) - events = DisplayRule("Events", True) sam_ranges = DisplayRule("Ally SAM Threat Range", False) enemy_sam_ranges = DisplayRule("Enemy SAM Threat Range", True) detection_range = DisplayRule("SAM Detection Range", False) diff --git a/qt_ui/uiconstants.py b/qt_ui/uiconstants.py index 3d35f96f..d82a4c0f 100644 --- a/qt_ui/uiconstants.py +++ b/qt_ui/uiconstants.py @@ -78,6 +78,24 @@ def load_icons(): ICONS["New"] = QPixmap("./resources/ui/misc/"+get_theme_icons()+"/new.png") ICONS["Open"] = QPixmap("./resources/ui/misc/"+get_theme_icons()+"/open.png") ICONS["Save"] = QPixmap("./resources/ui/misc/"+get_theme_icons()+"/save.png") + ICONS["Discord"] = QPixmap("./resources/ui/misc/"+get_theme_icons()+"/discord.png") + ICONS["Github"] = QPixmap("./resources/ui/misc/"+get_theme_icons()+"/github.png") + + + ICONS["Control Points"] = QPixmap("./resources/ui/misc/" + get_theme_icons() + "/circle.png") + ICONS["Ground Objects"] = QPixmap("./resources/ui/misc/" + get_theme_icons() + "/industry.png") + ICONS["Lines"] = QPixmap("./resources/ui/misc/" + get_theme_icons() + "/arrows-h.png") + ICONS["Waypoint Information"] = QPixmap("./resources/ui/misc/" + get_theme_icons() + "/info.png") + ICONS["Map Polygon Debug Mode"] = QPixmap("./resources/ui/misc/" + get_theme_icons() + "/map.png") + ICONS["Ally SAM Threat Range"] = QPixmap("./resources/ui/misc/blue-sam.png") + ICONS["Enemy SAM Threat Range"] = QPixmap("./resources/ui/misc/red-sam.png") + ICONS["SAM Detection Range"] = QPixmap("./resources/ui/misc/detection-sam.png") + ICONS["Display Culling Zones"] = QPixmap("./resources/ui/misc/" + get_theme_icons() + "/eraser.png") + ICONS["Hide Flight Paths"] = QPixmap("./resources/ui/misc/hide-flight-path.png") + ICONS["Show Selected Flight Path"] = QPixmap("./resources/ui/misc/flight-path.png") + ICONS["Show All Flight Paths"] = QPixmap("./resources/ui/misc/all-flight-paths.png") + + ICONS["Hangar"] = QPixmap("./resources/ui/misc/hangar.png") ICONS["Terrain_Caucasus"] = QPixmap("./resources/ui/terrain_caucasus.gif") diff --git a/qt_ui/windows/QLiberationWindow.py b/qt_ui/windows/QLiberationWindow.py index a2c442f3..66c74c56 100644 --- a/qt_ui/windows/QLiberationWindow.py +++ b/qt_ui/windows/QLiberationWindow.py @@ -52,8 +52,8 @@ class QLiberationWindow(QMainWindow): self.initUi() self.initActions() - self.initMenuBar() self.initToolbar() + self.initMenuBar() self.connectSignals() screen = QDesktopWidget().screenGeometry() @@ -120,12 +120,27 @@ class QLiberationWindow(QMainWindow): self.showLiberationPrefDialogAction.setIcon(QIcon.fromTheme("help-about")) self.showLiberationPrefDialogAction.triggered.connect(self.showLiberationDialog) + self.openDiscordAction = QAction("&Discord Server", self) + self.openDiscordAction.setIcon(CONST.ICONS["Discord"]) + self.openDiscordAction.triggered.connect(lambda: webbrowser.open_new_tab("https://" + "discord.gg" + "/" + "bKrt" + "rkJ")) + + self.openGithubAction = QAction("&Github Repo", self) + self.openGithubAction.setIcon(CONST.ICONS["Github"]) + self.openGithubAction.triggered.connect(lambda: webbrowser.open_new_tab("https://github.com/khopa/dcs_liberation")) + def initToolbar(self): self.tool_bar = self.addToolBar("File") self.tool_bar.addAction(self.newGameAction) self.tool_bar.addAction(self.openAction) self.tool_bar.addAction(self.saveGameAction) + self.links_bar = self.addToolBar("Links") + self.links_bar.addAction(self.openDiscordAction) + self.links_bar.addAction(self.openGithubAction) + + self.display_bar = self.addToolBar("Display") + + def initMenuBar(self): self.menu = self.menuBar() @@ -145,20 +160,26 @@ class QLiberationWindow(QMainWindow): last_was_group = True for item in DisplayOptions.menu_items(): if isinstance(item, DisplayRule): - displayMenu.addAction(self.make_display_rule_action(item)) + action = self.make_display_rule_action(item) + displayMenu.addAction(action) + if action.icon(): + self.display_bar.addAction(action) last_was_group = False elif isinstance(item, DisplayGroup): if not last_was_group: displayMenu.addSeparator() + self.display_bar.addSeparator() group = QActionGroup(displayMenu) for display_rule in item: - displayMenu.addAction( - self.make_display_rule_action(display_rule, group)) + action = self.make_display_rule_action(display_rule, group) + displayMenu.addAction(action) + if action.icon(): + self.display_bar.addAction(action) last_was_group = True help_menu = self.menu.addMenu("&Help") - help_menu.addAction("&Discord Server", lambda: webbrowser.open_new_tab("https://" + "discord.gg" + "/" + "bKrt" + "rkJ")) - help_menu.addAction("&Github Repository", lambda: webbrowser.open_new_tab("https://github.com/khopa/dcs_liberation")) + help_menu.addAction(self.openDiscordAction) + help_menu.addAction(self.openGithubAction) help_menu.addAction("&Releases", lambda: webbrowser.open_new_tab("https://github.com/Khopa/dcs_liberation/releases")) help_menu.addAction("&Online Manual", lambda: webbrowser.open_new_tab(URLS["Manual"])) help_menu.addAction("&ED Forum Thread", lambda: webbrowser.open_new_tab(URLS["ForumThread"])) @@ -177,6 +198,10 @@ class QLiberationWindow(QMainWindow): return closure action = QAction(f"&{display_rule.menu_text}", group) + + if display_rule.menu_text in CONST.ICONS.keys(): + action.setIcon(CONST.ICONS[display_rule.menu_text]) + action.setCheckable(True) action.setChecked(display_rule.value) action.toggled.connect(make_check_closure()) diff --git a/resources/stylesheets/style-dcs.css b/resources/stylesheets/style-dcs.css index 2737b213..5cf07d77 100644 --- a/resources/stylesheets/style-dcs.css +++ b/resources/stylesheets/style-dcs.css @@ -48,6 +48,21 @@ QMenuBar::item:pressed { background: #1D2731; } +QToolButton:checked { + border-color: #435466; + background: #14202B; +} + +QToolButton:hover { + background: #536476; +} + +QToolBar::separator { + background:white; + width:1px; + height:1px; +} + QMenu::item:selected { background: #435466; } diff --git a/resources/ui/misc/all-flight-paths.png b/resources/ui/misc/all-flight-paths.png new file mode 100644 index 0000000000000000000000000000000000000000..1e0bae20ed41976c9283972a1da781eb073badae GIT binary patch literal 761 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0**;UK~z{r&DOnZ z6hR!u@w;fmx2Oa$LD42?d_yoP6e5VAjVTQH7bx142S_XW(2ikq5NcQSLaoXdyv7@R z!bdz)8+$|(?d7~Ey}7e8J(z|D31t@Q_Zw5tKIy{__~KoG7TiJyrZHu0>!Ij{qxgk* zCEnvL9%B&Sa1}-IuD}6&#UmU=JK{Z{PdtS4(7nwzU?$x2%55~;aRc2pkh=*#;B@p3 zfzZz@dEta>J)TX7zV96OVF2Hu-+?tz$3W=kmDmHm0z^MO|6|Y|=*MuGg5{2%mw%an zezaE9uPQT`{jU?4YeExP{^giYa2?7Zx~#cW=x=AmDYF6tcHE2O_0xq*Vgk@~~l zn%rmuUgqAZ`sD&e%jD3H%{czxB(zDp;pQhg(TvqLOm4Uzl=v2q4NwK_gi7oaG~*E5 z=tZgn@1RPkDmVgF!iRjDR2TFHzDlTMYC-zb&LygbchDML`IA|Jb+`#_wykO?ksr`1 zXfI&~A}6$;gQ7nm+pM`%=pPg;M%>@XVJ-BxY?40u r3sx%b*hN{?YFK6h%fA{fZYq_(E67&NNu8N<00000NkvXXu0mjfSZ!M6 literal 0 HcmV?d00001 diff --git a/resources/ui/misc/blue-sam.png b/resources/ui/misc/blue-sam.png new file mode 100644 index 0000000000000000000000000000000000000000..4be4366219c6133f6afc974d237c5eab3c31aad5 GIT binary patch literal 2118 zcmV-M2)Xx(P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T|D>^->b6N0BP7gnL-)i65@2-l- z!>);IPT|IT@ObnL-$xiS!q#yh2Q890jtn!ef&lP5hO6$+r%YQV&E$3>fE|B~+c zuWjEp7?p3oELTln`_2~x&&cR=(~;;y#e6{}hbfmPP>)`xOFCNYzrAhcH+F4VzcD9= zXK}>@`Uam|cELCGRw0*fl|v0&DS;Y1&wb{0I_`dR_p@F()Bq#@&tlDnpWNr2@DE)& zxr$*xZx+Dfbb!$=(wNoN3g(s;(DFPEXjmjjr!&_FlBxebyl?;Ya;O2;Y&Ofy8P;!p zs&9PK|2L^5DNiF43pj}#-`Hfgfrc{x%d)`WPsOOfAeh12B!W@2LRl(9F;`u69VXee zwO^mh=hrRm=s7Zc?1L$KL1xw#Jn-1Bx<5a8_Be`6VD)-vy7B8!&KE$F&H<}dLpmCR zWH1bcOa?eXP`034l0a`V(IoU{Bjl24NF)-lVDkomN(D~7vKLgz^yzz7uej-_k8X;~ z(>1QZp+ko>2jBbmySYN4ll135unwHdZv<;^7f880OdR_dQlT(N#UdTA!324$1rirS zm_P|i`5dGpQA{omLPr~XW#gS7;cAS$x)+L(7~o6U1L3eZHZpvWJ^*RZ!0QK(4kXj* z8{{rXgb~moK>J*Q?rPg;AmTev7Rjhz^EDU?EWh-MF}je4tkA% zx`I=q-fePsMgxyL^~|!NPd@*Mb`XPLf#%M32>blFtZ}Fmt7WFv>A>DT4|GNj%4kLm zinI2gD-^-G_BLR38aVOdUMS#pSz4V~Ax+>LIjxkcR*%K|Nn1&vBuO{R&1$WijF3V>)njv`C9n)kog0HJDqK~m#?`z5-1po8 z72KN0`yYW;HM6s2sf1&bv|{Q>rLuHBWn?asSL%_xg$f^*OQq!qCdI1J`20%7q&P-!&afBP_0a3WTxrPmpTrK?EB>3EJlk5RLz zoodV~+A^Nuq20;~=+ViH#L4hyFq>$M!x~p&LN!JlPl+|#X{>}bPSj3fdL!B~!lPT( z#*st_9KJ*?rZrc`sfa+x(){T0r-y>!=(kCb!R2-@T1Z8f4$H?oj&U#Qg(R9z%pag3 z9yQUqb|v_a4@2nF6EvpB1F8kx(eF8<_=d)yht}>cm_9p(+nS;=t3}A}d-2ztvI2!t z>6F~0!jaI~w5SCIOf(Zqpx4`If`r_32;%4unXzg$kR*jBJCx8h>rG3GTSq9MrPnAH zi*!CEfo8kyjNGJ9<)Rkqi3g@ocntb~2dJmijR&TGTv<{{#1IB#&<1e#P?E@y(- zY^3uk2{=US0b(XKi210sTDqh)i28$A{~AsYZM_TVF-#!)?dn-Tg&LmlLpC0xaRMNeKM@W0-$w)_g>!0K%B|PcF5>ta? zaWAm)WCUWVkqeU$I6F%F5$^u^shE5QvqUL=ki- zECxT(Nac_*WRJ<&K|a~CG5q4XSnq%kJDfu%aY~D3?uu@Z%lNKM@Foo-Ik_ z8)r6Z^mkWJ7X-cIkU=}16Z~LxG~4$s?{z)Y-`}rnZH+4?K-lrzAC`K@{dsNfflws&L?jx&4)38i z%#{Fn7RPfw(PH}Jk_GKAZ0cV(^FcTV*OWj#FTM8G!t>+))&4-R-6mSTX=-yp1`nvv w#h|CjDvWn_xc>Rr;QFKT@T)@-`0@bwAD>Aj!Ug&FaR2}S07*qoM6N<$f{~pAvH$=8 literal 0 HcmV?d00001 diff --git a/resources/ui/misc/dark/discord.png b/resources/ui/misc/dark/discord.png new file mode 100644 index 0000000000000000000000000000000000000000..97739171e0b73585e591001986ac2fd956113017 GIT binary patch literal 804 zcmV+<1Ka$GP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Tr2KEHE*zo((Ctu0qi4GFex8cd)e z*i7+$48<&mwXg)bySlnIU@M9_S1>Jb2d=^m=KR8DDl-9`G-9^Hei#9#;5_JP9!!G? zFcQ>Pcn>e(5jcMn?11lZ6i$=K4{VA4Nr2!BF=t=~9ERJl4pzZb=!;&#b?Agea0s5m zHj=oHO;nNq!N*~`;Tv3rW#B*VkF3Z|aOtdO3rT#yMk;>^55RaB1G}KV!IeICgFf|b zj6_KV`1hkRZ$LYc`V5n)g0`drTVSArD`OZdQaXXH!PY`atY`@+|4dAe*ELi#%kV6& zz?xudsVHWgz=~ii$xmr9OoV-qwX^*MfAblibxt)!F+GllVL!qsZ)C`w%yPXh4x=S= zXLFZK>ln`@pBT?f!MLpMidp&sW350dR0^&N>EJ=`aOEnw7v>a-qf8mI)dcd<(wO?V|4_ZR>{3Er?)@X>O0`^*@#r)#9<|?=ZO~va(o>YDn|6BS@PQjoi6DWUCJd*FiS@7HLuk@iW zed;@{MiX%TKSjg8viWd(UJ0&c`DfS{ImfyB(3d{bGG=>x7Bpinzyil9*=ik!6W~(W z7tVodE!ktRAAARUU@yea#d-jn*(-X|{eTUq$E0ujEbpacfDR^HDh{g)U+XcJy*%(! zuqx;96>aAwEtz7n_w3_VgM0dHu*X}Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf5C8xR5CN?ty>$Qp1#3w}K~z{rwU=LL z9YqwzcW%;J+a{@LP$MQpT5bIYRz;(^fd;Ea@I|X4*nkBQp-3wf5v=-9<3mXiYhQe_ z(28Qg2N44q*5S#A|RXRCxmS!_VLlJc;rPNVUBZu@bh!N1-CM5RSt>xSh5t zm!PZze$<~pg<2hV!<{Jk4OtQNZ$`-RO;FBjY922ajS>gwd>di_UJJj5J#_pIId7nA zH9}KyH#`H^q3Z;48Yu_-$PYsq{}67REp*iaor=I7_%xIg_a!4S?SOA6;|jZsZ=hj_ z46+>^4*HUiFg$% z?Af@1kj-XyAzqB$NHc4XtH4Nw0}$kdrHxt zpf<5)ML?T|b~tUHrFm|x7T^4g3&ymBVYt@6O~czb0PA449MIk_Xoo9>F|AG#Q=YGr z1=qo4CJM3kjN2)%aCOF9&wDR)U>)4(i!%}1>XHLWJ3-rPIYilD%=`I#emkWmSeGjl zMtMI0zoGmib<)+!yH@w7P;hBn2C=O*>ZAyh00k;cLa1GyFsxk#vI~fFD!Ed8t3M23^dMq24 z=2wGirmQvgCpssokm4e3MzN*HHYf{pbY`er+}Y95LZjsvwpg7&Dm#jFdKU-Qva0W) z-JB_jzC{dTn7#uTeTk}N^q2Ds&|%PjwooXXrk%22N)G%&L8-AsQ9zb}HZ>@H1Emk6 z`bT8juq02DNZbjc@q#+ITEk-d@K(Fo5wV@`Zvj;329fk-gN7FK=udm#nX=o51+nd|Mh?yPme2XEW}x!b`Uk z>TnQrnMh%1Xy_cqo?+xWJG0sQQCdX#en#0!oq;v5)|IWjnGD!JI5;@wyU&H#)-gGt zJDi}KObIah2Vxf^{DNqF36Ee<8_aQd8pGP}kHWhMtrm4Ph;1E|1G;8uA$FrcYoP=T zu#d+!j47{m0Tq-Dm!KAt7F{Non$q0P32);Ocn()I{ z{bbW^pBkYuLAO^OlY40>Sr)AN=MZCz{5;ee&~B#{e}-=x)utT0PDNU>&)bX~@X$W5 zjL?l`4;_-OSC*8l?}57MZqSb;zTj@|u_hzOU|qvGE6!#)VV_V)#h> z*FPqY%``5QbwKc;Oa7W^q3I?Q|C*gb;d!LmD*v^;#=mCDbETS`pZ~8}5`p2`9G&Kfg}IJ?|BgX11t+h!UunjjQ{`u07*qoM6N<$f(D(guK)l5 literal 0 HcmV?d00001 diff --git a/resources/ui/misc/detection-sam.png b/resources/ui/misc/detection-sam.png new file mode 100644 index 0000000000000000000000000000000000000000..033ce349544a777eab06716ba99eee34bb858585 GIT binary patch literal 2373 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 literal 0 HcmV?d00001 diff --git a/resources/ui/misc/flight-path.png b/resources/ui/misc/flight-path.png new file mode 100644 index 0000000000000000000000000000000000000000..5e43c639040942835a6d770ff484d167faa0f101 GIT binary patch literal 478 zcmV<40U`d0P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0dq-2K~z{r?bS^$ z13?_e@tyXdjS?Y^mJwf+LBWvumAt7UJLqxH(H4yZ{oxjW`P-MB<@A5OjV2 zv$M&zwxY=(k@+Q`{5v!IFteR)Jr@@jm%olOwIaUnCn%jr;T5+^sS@>f!UWP-gXA3J zX2^PErJurTpD1TR%gbRV_-H=~R+m8mOK3Cw(a0pn7+XYR&}A`PG>1Kuu@c^dx`1e& zF^8l+(Nbh}Wym9c!z`w`Ne4B9Xd1ALN5{fqZ2qr#rThh8-^3O#;EDGp4gvaZrDVT%_*Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf5dZ)S5dnW>Uy%R+1q4Y%K~z{rwU=FJ z990y@XJ)h6bhV_7B@jt8V*R3xMJj$hHRwaCz7|37L9h?vg9yc^;)6sVBqG*O6hBZZ zE#yHc2-X(5R0vXoQTrsKpp7-f*pRRNnAv2;-+yvuv%A^sCe{Aozvtd_&OPVM-Fxrc zah**f48xlcLvRp20Q+Gl6z1XY@CTTKXFSi#BmX<1DC#Hqakxmk0{TM17@9f;-9>nu zri#2i5Fi7GVabB}@H9LO2jDhymG3sw$tEA)#+0C9WXyGQP~{AotO_y$d(7Mt@`Z0} zti@2Q&CLeRd*QSVoIu=brY%EbErw!E!#!qd4E*%uN%E6$Yg5+%iUCh0MJR`vYGIDa zw4X$HW^&5K;^RTF_-VORdJ_GHI|tjYpj0}F?-#V&Of9`vRm7xnnQ09uhs|N4-hsr& zU?h^@yk9K7gFH)N6SOC2e;pJGACY)I@e50(du(_N#Z+v|F>LBppwrZAv1!q)`_BpZ zK@xbgq=36^cm;}Gl_&ly;%TPys_VLX>QUs+($ye}wtT3pMA04AtiWO`M@Bhg9o6WB zy9(Q3KPT9<3<*k1r58n)7$p0qL4v7tN5^i)1*VEYK5geeUVECt7TE!EzBYg;C>qm3yJU3V`W zpna!w*m}wQMm!Lt9Oo`;)+5O^s3{p&Y~+9`YrqQs&=%Im>dO!I#>OfTVki1X)n4}f z(;CCBcriBCK`|`nxMrYV9ptaEbv+X%xq^7 zo+Ifq>f_c)`w)pfV}XTm8J5+Sj+r{Nu&}Tz9^3@VWjV*y8MV$~v)2H9H^Ki5gWxe! zIh^}BbTvmW?}YEn+!D%VIY+e!b%zt4HdzDy^S{|5$Cg)C&Xec@{ND9E9WXz^%f$Hw zImt@hPrLF4Y=IAedp0{rF;67w_=jzWSXSHV>QcKEj>J2H^F+Bd z0}ApM6=`3-glu^Q!zW}m(lj(ig{&5^CL6+HD~GR~(j^7xPCtUwYw`rswBc2ZHShxB zpUCqHyeG5V`#Sg9NX|CqaFmj0iWlN^DnUAE)%G+52^qF002ovPDHLkV1k*il}G>p literal 0 HcmV?d00001 diff --git a/resources/ui/misc/hide-flight-path.png b/resources/ui/misc/hide-flight-path.png new file mode 100644 index 0000000000000000000000000000000000000000..94eb9731f5b879b1a224300683385f771331bc1f GIT binary patch literal 760 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0*y&TK~z{r?Up@= z6G0e;CnhEc5rj0?1g{cXqlHJrpF-sN1I0v$oQ0s)XJ<++EmRbQ2#H!;V`ZV>4}uC} zrFd8gLHvPOxRH>UGd|yBHtcOC*-cCii@fmg%}gfw-kon|HfpAsY$_Iu`ygq$Q`Hs| zdm`~^!c%y-873koYLRe1;W3D@ZSVpX8LtzkBL50}f+|Sz1{{E?uEYidB>GA?0&CDS zkxr+bX0zEbx(O#4pNMRGpwC3LT2k z23XR0Sb^hu6nRaw+im4DvCQ0adg4FIU4a5zhI{<*DLsN*6RA{6`Ax7Vt}=JAJ9B*L zW5^E`374dee#5ayB=V%&RmyRkPN`H`7lwApV@5oFwHedPHd1oLk#@_^Ba&ST_$<&4j7_!IFZR@WJC46z#xQq zv+#lBcVx_~0VO!k+-s&Sx8@u{jLR_=6QTZ3XahmA7`RRHGp60sI3~t1AUpXe2CQdp zR1<;s0J&F8Q}hR3!jkS;M3N1!au~WN0uAt_SHM*iF2Y^&u~h?1?18>(e&m}ltb8V9 qrbQ%qnHeQI@F=M^x8=k6}ogF7+8JRz@ zH630vA&uAcp}bH#(@mzH(1+((>!xe8#xIF!dON48)AIYpT}Rh`W1W{~R(>Mp%$v}d zhrhgkEd8cxA@)PQPD8Nqp9Rl44$rjF6*2UngD`$ BQQZIl literal 0 HcmV?d00001 diff --git a/resources/ui/misc/light/bullseye.png b/resources/ui/misc/light/bullseye.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc4519db7ccc7fd4c11186a430f9bcc85d438b0 GIT binary patch literal 677 zcmV;W0$TlvP)&?A4*Y4VZ!!UE_J;t{z8-SK{Ma4P??xz9pLIK*6D*`le$q8)OJ0#Y3Fo_&h{%i-Hd$=v0yq}GCw?Se67R*t`zZcU zd=QHDBMpE9@kgPAu9|II(EY+R)HgG;jgYU4bzn(E{4*>|w?^>vMp}RSgzVijboTBU zZqLs=1Mq-<3sFk}26**8!neY#5ba6l7otKU06E2#;t9b!uQ4mdHQ*)iTQ(oaT8ibA zC%PH6$kvQbSad)EHksd!n_ORT`O4hBM92sFgG!;0T470yYkTkw$_eAP1Z~%zX*~ zRDgxlyJ5mVI1G!xDlp~HOaY$^M`Ia?(iC{_Fj)hhdT4urFAn`X-|!b|+bclUyZxol z8>6k^oSSBX>a_n-&F9jFTYhuO>wu(r049`Rquy}KQ{RqPN#tFNSOlH~DA2>z!Q6=> zb^s-d__5J&%X>xrv5OPaz8`}k(rm52hAJQ;+t&9M5gBk5$SBc%zyd$j`kAXhry~6g zSm2LZcex6b6zM_00uR;tBFirDTag|IETFwkT?I}QX*ghkA+^?7BETb{U_CDRQ0YM4 z@+| zdh{siLejCM17pn94{DTv3a|&fl5elTE>Qldt2Kw{UPfSEl0rdI&WOIr5C-AFo@ zR7<}rl13!;xD=8Wj4`YEr8Xv?1>T&hPJuC?K{(I~Or$Zky@mVzUaBJ}$x-l&t+@R&38)JwSkYdj=xHAQGS^jlw@(hmd5CPE@2Ur8QPr!ra z=XY(s*&O#F0xm6o1Za!RoHp=q26v`_6U**=Hc~KE%l0`FQDSZKULhrojT3(SfrO&mzGd;T3*R{M> eg!kY6w!H%ybLb`FC9X370000rJ0Ty0=w&_6RIXV>fXD2nbT6=06Kq*-&16|iM{K56k7E^JFMuq}5Z5ts1 zZftil6tF$OJsQC3FJ46X(4@b+ik*}Lni)JsN9JgfbU*-@8O6o{DleCvU`jj-1^eAa) zW^WBLN6?P#|Pjf zAi(Kz!F2}al6C?C%*|{!UvN!;K<3WgE`X1K023d8=YRksAAqNT04u#+hwwnstHS(< zj?8SFFRqxRVd9}-b14ZbPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0>(*1K~z{r?Uy}h z6hRcnZ`XK&g@uqp!I;8`1PvU5AtopUKS0Dv8;=&X zqJ<%-s71mR7D5C+f~WD$-+%V)-mbTI37WfW?gxL~n>TM}-p=mr&UuweCDTrPvu&eO zKtp&w)|JcUqi7PnLieq!F60!@9GXJMG>3Ji;+ajrpe(w8dlhX!lb+|@CH5PC0QJ)D zro9nAgTI9T33ndNqAWUtE~1}kf}A_(7k*=?dJw%qC3GDfMz_&Ci>wOeY7Fin>^1ZQ zy+(t!OhjS_NZ5>dhf3%HI!M*J;(vxBv?GtuDWu)p>HGd7wic4}b_L&L*OJ(rd0WmA z?EndzFh#CdwrNnn7tA(xK{oL-9BcOC!qylITCoD?IB#y#iLd2u0o%WW;CmNo5!{MC zZo`Lg2Tqu6C2q~IfFov8q1surA8kcfkX}d$h%H;6a+Ir|Un7DwN$lble8r|hUkTIW zk_}=LL2nhstlL4T$Ht~&Yj$a}fgqF){WCUa1hFCOj!?|HBQ(~!Q_KN>(z5uHXu=$3_R zP@m-}w`k$IkWV(YE(FolV`DUSRC5KHs>9 z-r^@9_8pzH)D=;##@O%(&5g!!ql0SAp_ESjGW1qEPUU*1@4{a|2dG#_wH09z9lai- v?aZMI(lhlC{~1dB73=&p>lD!D0y3FD>Asx*wqn4z00000NkvXXu0mjfb_8{} literal 0 HcmV?d00001 diff --git a/resources/ui/misc/light/dot-circle-o.png b/resources/ui/misc/light/dot-circle-o.png new file mode 100644 index 0000000000000000000000000000000000000000..7dfd0f5102e0f3328605c424c086d04049ecfbd1 GIT binary patch literal 602 zcmV-g0;TnBK!{+ag`OUEG2s%+BtMH=$==-h-o8t$l7R=iZ)X1UpWR_+q!T&r zVs(sxNlCXQ-H>!y(%GQelJrT^s-)Lu_VoxkNmo0O%8#dk;6(t-%bS2 zweNcUsRV~}(Ylk+4_!%x?pw4zpF`j#g)HN$;cI97dY+o z)1lx}ML6YbD~m970w1FFxTKr0(#$?fx-O|LX(xPbN!QHmi^FP3x)AMGOS2EGFY^B$ zq9WIM*&XlV2n3!xjJ&5fI5&Zw12{}G>QQ$<0cJ_J;}+?5Y(bZ5$9Mk~r)nU%C+Shb zt}AI>2an8zq$?UMIH~_G%$wPh@^s5dj5?C_$}+D@qDgf3Y0Q(J>qwIWfB>(^b07*qoM6N<$f_VWG_W%F@ literal 0 HcmV?d00001 diff --git a/resources/ui/misc/light/eraser.png b/resources/ui/misc/light/eraser.png new file mode 100644 index 0000000000000000000000000000000000000000..730e55ff6e8170496f0fd58921c82817018272c8 GIT binary patch literal 352 zcmV-m0iXVfP)??1s1gj@1Hh9@p6oZ+(D`0b-tj0>S{`Xwa%h%>QX_07j-VRfa;SvTR=edR-ODyc3+p;0I;Ku6_`H= zoT!iLUZ;&yWds619Rjw25n#N`0^e{CTmo0XHE;o(0|&ryL_FmMOb}W|t_5sH#BR41 z^nw6t0R5f9FtAR$1=9%vermx{L_B}_J9i3HZ?c>4hg0yuLuM0Blrin^QhNsK5ph;v z{v9wA5vOHBv*h=Hz)D2y7nu7BEc_+>GqrscH`V2D#=DX3DlQuHkZPocx}jdE?NrffZUW8h-Hf`U-doO_daACgjVwQ} zZmHM#!sJNu1?sl?I7H(?yr>VU#gBe5NB|%rLVX1qN!vdV5dq)#K#`F&&r>Eaa%zEE zpcbfHVDgu_4sZ!{fhk}aSYh}NI!>+>&VoF*>Ylok$StY|>eCPB!98m!~g&Q literal 0 HcmV?d00001 diff --git a/resources/ui/misc/light/github.png b/resources/ui/misc/light/github.png new file mode 100644 index 0000000000000000000000000000000000000000..2668dabd84db21d7381622a3245f7fe84efba970 GIT binary patch literal 1391 zcmV-#1(5oQP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf5dZ)S5dnW>Uy%R+1q4Y%K~z{rwU=FJ z990y@XJ)h6bhV_7B@jt8V*R3xMJj$hHRwaCz7|37L9h?vg9yc^;)6sVBqG*O6hBZZ zE#yHc2-X(5R0vXoQTrsKpp7-f*pRRNnAv2;-+yvuv%A^sCe{Aozvtd_&OPVM-Fxrc zah**f48xlcLvRp20Q+Gl6z1XY@CTTKXFSi#BmX<1DC#Hqakxmk0{TM17@9f;-9>nu zri#2i5Fi7GVabB}@H9LO2jDhymG3sw$tEA)#+0C9WXyGQP~{AotO_y$d(7Mt@`Z0} zti@2Q&CLeRd*QSVoIu=brY%EbErw!E!#!qd4E*%uN%E6$Yg5+%iUCh0MJR`vYGIDa zw4X$HW^&5K;^RTF_-VORdJ_GHI|tjYpj0}F?-#V&Of9`vRm7xnnQ09uhs|N4-hsr& zU?h^@yk9K7gFH)N6SOC2e;pJGACY)I@e50(du(_N#Z+v|F>LBppwrZAv1!q)`_BpZ zK@xbgq=36^cm;}Gl_&ly;%TPys_VLX>QUs+($ye}wtT3pMA04AtiWO`M@Bhg9o6WB zy9(Q3KPT9<3<*k1r58n)7$p0qL4v7tN5^i)1*VEYK5geeUVECt7TE!EzBYg;C>qm3yJU3V`W zpna!w*m}wQMm!Lt9Oo`;)+5O^s3{p&Y~+9`YrqQs&=%Im>dO!I#>OfTVki1X)n4}f z(;CCBcriBCK`|`nxMrYV9ptaEbv+X%xq^7 zo+Ifq>f_c)`w)pfV}XTm8J5+Sj+r{Nu&}Tz9^3@VWjV*y8MV$~v)2H9H^Ki5gWxe! zIh^}BbTvmW?}YEn+!D%VIY+e!b%zt4HdzDy^S{|5$Cg)C&Xec@{ND9E9WXz^%f$Hw zImt@hPrLF4Y=IAedp0{rF;67w_=jzWSXSHV>QcKEj>J2H^F+Bd z0}ApM6=`3-glu^Q!zW}m(lj(ig{&5^CL6+HD~GR~(j^7xPCtUwYw`rswBc2ZHShxB zpUCqHyeG5V`#Sg9NX|CqaFmj0iWlN^DnUAE)%G+52^qF002ovPDHLkV1k*il}G>p literal 0 HcmV?d00001 diff --git a/resources/ui/misc/light/industry.png b/resources/ui/misc/light/industry.png new file mode 100644 index 0000000000000000000000000000000000000000..cc37442b8441a03b583bb87d7b9ebfe48b1b47ad GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v}~Lo-U3d z5v^~pALL{*6mh-SnSJ^~+!m#S({z$!c5dajp78isqoaY8x}ePe+s`J|D}Jzhx$A`O z3tRvDS$R^NCz>>u-ubyaa?1`A7N-aQSvDMd85*Cm(}(k9Da*DUKF_>ZCu}&pl`UMQ zL6vXo4kgAl1?!HAawa5y=?mVe#Q4T`&ts9i8Na`ot(lv+``qFVCj}NDN>eWQ^XN`m d{NDSgd3n+TCj7m%ts3Z322WQ%mvv4FO#qJ#U%>zX literal 0 HcmV?d00001 diff --git a/resources/ui/misc/light/info.png b/resources/ui/misc/light/info.png new file mode 100644 index 0000000000000000000000000000000000000000..67e9088f85db3ee8ace693ad12cb0ea694625c24 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@o&cW^S0Mc#1}qL(uK@CyOM?7@ z84ew0y#7c6$Yo6Oc6VVG2~Ce%54w7eL~DDpd;QDf$MT z8JSRm#DYX8#6%Z_qL1Yc#kh8zI!rmz9jqMR^Vy1JE7hx4pnwdx11ex8RRJY%+-2|( zxCa_Gs}Zu&G5<2w8ckX0gIE%eGfQ4veG< zbBDJuVPgQSjHV-pH!-}QzW#%q34cp_#;pLB#`xUfJ@d>B7ce!pwFXj)F9n_r?=%L$ zn7_xcmLD#WDlFj*Fy0wJAm)T?9wl4=PFet*MgtItpt~SyxBy%P09-}~5Qv8@!XE+e z`ELtwwFSU+C*cAx0G=G-FTh@B00MF20J!ZmTmbfgS4;RCa1h!r_%hO3e=DUXmQNF{ z^;c-WRss%z_qEl30Lj0EuR-L%QflKPrB^SXegGi*c)Ehl(trQ}002ovPDHLkV1f}j Bq0|5X literal 0 HcmV?d00001 diff --git a/resources/ui/misc/light/map-o.png b/resources/ui/misc/light/map-o.png new file mode 100644 index 0000000000000000000000000000000000000000..9474954e74a4b25f11536fd6fb15d9824b0c1415 GIT binary patch literal 400 zcmV;B0dM|^P)pWj%K@+^|oBA^8BfOoAaP@c$}0&l=;s;L0Rz#~v| ztUd4oTmyp+iza!gX)CX%23Ekc);fSxsa^4=^?5sGSOeV)+qZKyt umm$p8*$y0?dDvKf&LfvQ!W~bW710kmgiOVs>3yL90000Ygr+ zArY-_r!Vwlb`)s)pDQKAbLBxG2UDN9MuvzD(>k``Zf4i)hl0PjYMa=C8kH3leGMdp zVq71t-m&*vRnGfu?y=APue~{U=KtFjk|#ry7I5-3OtW`>AX6ZkW!ey(AR=7D@@2;B zWAj7w54iGhY+#LHoS#_~_`&W2!=DW+Y#cN>0zT)z|G8wsN4Wy_9%eOH21kJhSMIY; z{dLWlCx24esauf?l09ubukZU;>k}mQ!2Vg}+jT-Q(UUV%B^wweVCc$e=d@pOi{Gya z^I?xujrDqE_1tRGIThP*lX)IhQ%Zh3S2fsCH{r~ugL*$#e%CCj`lou+kZ;Ep> Lu6{1-oD!MgTe~DWM4f$96NN literal 0 HcmV?d00001 diff --git a/resources/ui/misc/light/object-ungroup.png b/resources/ui/misc/light/object-ungroup.png new file mode 100644 index 0000000000000000000000000000000000000000..ddc9fe8d7d24fa3392d35cc959b0c985fda1d752 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8j$P6SM;yum+DYgKg5LY1m|NsA`H|O64vKUK( z{DK)Ap4~_Tagw~D~i!Ts>VJLpZMIp4iRFV93LAk##A1mg@tib)}^b!eSZ{ zWM2wbG>P*VaIIKAJMdh-fTix*x$^%E7R<|Ylbk>8hoXAylBJ)^#sBU$J?-*pQ9sZ? N22WQ%mvv4FO#q4dH(&q& literal 0 HcmV?d00001 diff --git a/resources/ui/misc/light/plane.png b/resources/ui/misc/light/plane.png new file mode 100644 index 0000000000000000000000000000000000000000..2c492f6404fb9d10dc22dc59fe65fb3e72bc1423 GIT binary patch literal 465 zcmV;?0WSWDP)=!T*8^iYw=52c}UeT`s-elEV z=*Pz#^P^VhnVQ)Ecezr4lxQ8N8PVMW{-+Fg{Z;`I(ZxV#BRSj`+J9hwZXF;I&c2R% z0k@Ijt#vCvzjz&qS9Gd?JB-7kkX1uWh^K$1tHM3>@L%H!q0%E8al)PZ00000NkvXX Hu0mjfW9`qE literal 0 HcmV?d00001 diff --git a/resources/ui/misc/medium/discord.png b/resources/ui/misc/medium/discord.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a43e0a8dba28ada14a729fc764c87c11980548 GIT binary patch literal 803 zcmV+;1Kj+HP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!THex}TVuNN_D2ve*F^l;J{3y948=Dzqg-NlnQes5z zMi$J7@uMshl9XSW&-Xp=Io@-;=gibK_ipaDK0Wt6bKd89&hwu0zRxt2N~K&aHNo1N zsh&WCwO;XlOvG%2?XV68i^bwDY^s=Z9n%W;;Rf7h&Tp(&-UM*ch&ceqU<#avOCU!p zU?DWYRFJ;G2N;GYp!s{?ApC$+aDhaAVq^Lz0fMi_^ul5|0ry}BY=H$Z7QKdB&<|^% z2VTN{l6Z)X6ia~MvoM439j?I!&=Xf8Rpbt6=~T^DlK6-C9spEJO_7hCg1&_3osa$V@ zp;zV}7g*##L8YOVAwrj--=HU&a5Hd`73BRkIREz9>492cQr1ZC5J! zkT3a^Z&!^ zf|g2s;d01o$)1Ax!S`?&jzD-{s7J7uy<*7i2h@P-nAF?8RM#9SKqnKf2E%OOYbQo! zPX>Mts>(%tne9B*l1WU~HT7{@L3{c#P>;8sNov(b6+YB@-39fK&p_*c6CU8>4>nT$ hU$c4wHBKOx8v*_VsF&@I+;#u}002ovPDHLkV1k83bzlGh literal 0 HcmV?d00001 diff --git a/resources/ui/misc/medium/github.png b/resources/ui/misc/medium/github.png new file mode 100644 index 0000000000000000000000000000000000000000..9e82b032e00505e53f5c682614580a746a67a37e GIT binary patch literal 1519 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGf5C8xR5CN?ty>$Qp1%ydNK~z{rwU=FJ zTtyVe=k9K5O`EhzsYXmmZTyasYQc{ugKdoiQcVfO~L6j?IgC9l-E4h}U5bsyz!w;K%R_IF9m5NR7P~(F`AiPe4U#37mlga2I3M zu0Wy#cGZWWLam8=VIC#FA*+J<4G1~D6UupQ&C^NIsBnPEEr=uVM)(!n%Ea%Giw3&x zKxivAz;kdTy3Qcy5Oct;{5X{H_u=;WLbp($QxVt?Ux0Grp=c!L9IyjrTw#~-EetFn z&0s$NC_+j2VJedure6tI0d%Y?x$X{{_c88y#<{jXg?JCj32ld*@E4ZRhlLVO#uaw0 z+&6CVBz#H4!021~{3$%YoA1}j6WV_n&zt18=lEI=jd9&|e15N{bm7D{no3k{hivsh zBhSLnD{17F_PjjoicW|&40a+n!40&faI!Y>PE6G`g<)h;7fo+8Bm)uw4$QwhO9oNmyg0_Vf)_ zbrW34#I>H|w7`34uk-sdnVZRl-NA6*`CDzX9HFf?IiSoJR9=%1Cgi@Z?(SX4Rj{t3 zyL%#=&7OhZ(EgD==~~m3&GtEt^AT+!dXl0DZLQZNWusO%uAT(={V4s!|7OfV*dH`w z=zt^avBQx(8g!XSE6Z`#$|ltTU8$GZn@db?EY8kepH8Q}QmM2At2gkQU#vXOTP+E` zgx?0u7?h~T(c@9Lw7(t`8)&yP`Oj1;RVbnhJyVRCz?LGrB3g)yDHQbSFwmqO=c37E zKBqZMfoVkUVA8uxepQ3YLBB4q!;D$VcvZZ2oJ?jPPOKyuR}q;%ma*h4UUnJIrRA} zDhK*%5vnb}DhG5iD9kF8G4%KM*Ac=a#X{j(5>O{#Gu;KEvm0YG_qMdmNZ!)aG>aT0 zPnH*o#b+3c?PTK?D$~M*9MI(;=rIvPZ*T7fjJ}BC{LtXw!zi7~=5mMFQyon?orc;* zhY;V{nav*R>FGJo_i6}jos3d||^GyDO5jW_ob z+IUXQkI>er9MCgMZ@6|8C>JU~6!fg>W93R9JwOGW2IZ?t>KII!>1pllzrxyh9A1DU zDORXt(5pq|RySe=7*k?j2fA{(Hk{dLyR`*^YKVXDo7!5nt3ftu;6d3|1cW_M=W-_= z>KRoHC88lEnj=R72d>COSlxOjYMyKc*D;>xBq+?fCJ!($djH2jw!eZn&v~9kDhDRX z31$2_&vmyW6Jd2K(vkz#X5fH@>by>b9vJ(X5dG~6Jn!^Op>P|^PLmLwqA8W?XI=L$ zFO@oBN5z0Hoff?drCT;+%SX76J{TB%lzsrW;c0joT@~!g!$+yEV!a3T9`F%cr45Uc zOb--IIEI3S2tubC1}FPZSK*;y1S z5j9rlU*$FYYo>D^o|47?HH*SVLl4L;P}gh}p;9>*g^G;c4Ojo?v>Z6{Km0v6<{vVT VDl`z{Ut|CP002ovPDHLkV1hm5zI^}y literal 0 HcmV?d00001 diff --git a/resources/ui/misc/red-sam.png b/resources/ui/misc/red-sam.png new file mode 100644 index 0000000000000000000000000000000000000000..bdfd28db8eecc60bb58c6f224f6b130c297c2e95 GIT binary patch literal 2119 zcmV-N2)Or&P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T9DwHHm&bi$6&c5?&y*}^S>s_1QjK}u*(xef8 zz(=}x=4bEDZ)U!~?@SzP*RF;CC;wFfzk2cMHOF52!(|aUxIt(&LFb*YRLD&2*nQXh z*k^VZ+0QPCOHSasU)z_MK6UbLfM!Z7m)A9I3ly&xE)Rs^$7~;NV?5w=T`k{km?MgDlj?#S-WsisC&LDuZ? z(7og1nYr0t+AX{LHZm|7BOXyJ1q zryK5&lY&_{_H6j{)>mFTdOX{HW1I7~;F0~Q4QEchbreOWcyWMhgaDY(gqr999{Z|Z zg5ANt})Shqg`t(^ZVYf?@$bZBx8 zFj_VoH+ud;gy!?QLBV||gmB*_Tn&QX;e=Fl1h^IlFXqxjst?S#+##6kjqF0xycIiObHRI6I$Ky#}9h zg}@0sJfA-U1-k(QSS?XWhEq$~ZmD{l?#AfYMEJJ-2P)kam`}fR6KhgJf)5|CAZO^^ z!QDh8CNDCiY(HmW>)EV-2}`=ZHP7LEFAdqs@W5rizfzziZ?1y$8&(-M16!?PM8R< zrM~b&Aq{i7hMMT@IYGDT;BxTvogEB)nU2>@ATIfnWWVU1q0tZ&k4XFEFCi=R1#T2s zCpIo7U>oNH8DIXVS`i!`4>&PV7y3oQuXKMWxdi&`;EGsWR+40lZUPFHTo~0%{(P+b z0)n?2BTh%~uZV^5#e_0?1W`MQiD*KE5c)&scVs&W0Z;E)iED3@ll*h`>{*zpR^Ctx zxsTHz&SGP15HibUD59|tNa<~iC8!Z)D;kZJTqW2MO~RDA2yYv0a|@swCWBE(mkM3q z@Veaafk+Hy$_1#_+cAGIxRH$8T>;B9|IM0II5xT+d9Xth1*Ty+62B)267s0@zqfRl zMV};)BqKg_P4tbGrbSAZ&_Ji`U^NGwGl;3@RqFq#cO*&tm<1@aA(B zZU;Gr31O^`E2D8d2}Q_gMLe*2_YX3A8Ff>tR#>DB=X6cdPufFnyZd0;D~iWh7s^H* z49kQB&X&xs1KGpV`6Vc!L5WOU#1(b34(Y-YkW*z8Ksd9|6AY z$mg>vPQ)moUvzNdrKJO2T+8b}yyaW0+n)e8{)uKNIPiHV&v&P?gj&d=`pYPwE8_`J zL~oy?t;XkZ!#X@KvJwv&y9Rl5!9SK3=y&9~;K1O)(cP(e8bIi2Na}GVPkjBp2XdLY z?~_BM11ZU&K!ENyDbX@&pn+45W7(;79W2WR1rHn-&dJ2Z zYIG=h>z5z<$=->HiC&4U;5{|4n$!O}?D@-~mr`me_Z3YoU4h!5d*jB^T#v#$rxxg{ z5XiQPUU6OugnxY5#*aRE^PW`u;J5&nl)y@U|NK)|FU+OK3b}>L6(w}-8geVPQ0;}n x34b_xE-^In>iC`azs`RC{;d9g!T%P3{{XC09i_<6x$FP{002ovPDHLkV1lt4`M&@F literal 0 HcmV?d00001