From a8787c38f05bf82a3827ea02aeded7faab3c42d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BE=9D=E7=91=AA=E8=B2=93?= Date: Wed, 7 Dec 2016 01:50:28 +0800 Subject: [PATCH] Added first uno control image. --- PokemonGoIV/0Main.vb | 17 ++ PokemonGoIV/1Data.vb | 14 ++ PokemonGoIV/8Registry.vb | 55 +++++++ PokemonGoIV/9Load.vb | 28 ++++ excludes/team-instinct-vector.svg | 83 ++++++++++ excludes/team-mystic-vector.svg | 106 +++++++++++++ excludes/team-valor-vector.svg | 147 ++++++++++++++++++ oxt/AddonConfiguration.xcs | 37 +++++ oxt/AddonConfiguration.xcu | 63 ++++++++ oxt/META-INF/manifest.xml | 2 + oxt/PokemonGoIV/0Main.xba | 19 ++- oxt/PokemonGoIV/1Data.xba | 16 +- oxt/PokemonGoIV/8Registry.xba | 58 +++++++ oxt/PokemonGoIV/9Load.xba | 30 +++- .../DialogStrings_en_US.properties | 8 +- .../DialogStrings_zh_TW.properties | 4 +- oxt/PokemonGoIV/DlgMain.xdl | 2 + oxt/PokemonGoIV/script.xlb | 1 + oxt/icons/team-instinct.png | Bin 0 -> 2028 bytes oxt/icons/team-mystic.png | Bin 0 -> 2319 bytes oxt/icons/team-valor.png | Bin 0 -> 2390 bytes 21 files changed, 683 insertions(+), 7 deletions(-) create mode 100644 PokemonGoIV/8Registry.vb create mode 100644 excludes/team-instinct-vector.svg create mode 100644 excludes/team-mystic-vector.svg create mode 100644 excludes/team-valor-vector.svg create mode 100644 oxt/AddonConfiguration.xcs create mode 100644 oxt/AddonConfiguration.xcu create mode 100644 oxt/PokemonGoIV/8Registry.xba create mode 100644 oxt/icons/team-instinct.png create mode 100644 oxt/icons/team-mystic.png create mode 100644 oxt/icons/team-valor.png diff --git a/PokemonGoIV/0Main.vb b/PokemonGoIV/0Main.vb index 609334b..6edd1aa 100644 --- a/PokemonGoIV/0Main.vb +++ b/PokemonGoIV/0Main.vb @@ -1,3 +1,17 @@ +' Copyright (c) 2016 imacat. +' +' Licensed under the Apache License, Version 2.0 (the "License"); +' you may not use this file except in compliance with the License. +' You may obtain a copy of the License at +' +' http://www.apache.org/licenses/LICENSE-2.0 +' +' Unless required by applicable law or agreed to in writing, software +' distributed under the License is distributed on an "AS IS" BASIS, +' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +' See the License for the specific language governing permissions and +' limitations under the License. + ' 0Main: The main module for the Pokémon GO IV calculator ' by imacat , 2016-11-27 @@ -79,6 +93,9 @@ Function fnAskParam As aFindIVParam oDialog.getControl ("cbxBest3").setVisible (False) oDialog.getControl ("lstApprasal2").setVisible (False) + ' TODO: To be removed. + oDialog.getControl ("imgTeam").getModel.setPropertyValue ("ImageURL", fnGetImageUrl ("TeamValor")) + If oDialog.execute = 0 Then aQuery.bIsCancelled = True fnAskParam = aQuery diff --git a/PokemonGoIV/1Data.vb b/PokemonGoIV/1Data.vb index 51b3f6b..76852c1 100644 --- a/PokemonGoIV/1Data.vb +++ b/PokemonGoIV/1Data.vb @@ -1,3 +1,17 @@ +' Copyright (c) 2016 imacat. +' +' Licensed under the Apache License, Version 2.0 (the "License"); +' you may not use this file except in compliance with the License. +' You may obtain a copy of the License at +' +' http://www.apache.org/licenses/LICENSE-2.0 +' +' Unless required by applicable law or agreed to in writing, software +' distributed under the License is distributed on an "AS IS" BASIS, +' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +' See the License for the specific language governing permissions and +' limitations under the License. + ' 1Data: The Pokémon GO data for IV calculation ' by imacat , 2016-12-06 ' Generated with 9Load.subReadDataSheets () diff --git a/PokemonGoIV/8Registry.vb b/PokemonGoIV/8Registry.vb new file mode 100644 index 0000000..0ee9ffe --- /dev/null +++ b/PokemonGoIV/8Registry.vb @@ -0,0 +1,55 @@ +' 8Registry: Utilities used from other modules to access to PokemonGoIV private configuration +' Taken from TextToColumns, 2016-12-07 + +Option Explicit + +Const BASE_KEY As String = "/org.openoffice.Office.Addons.PokemonGoIV.AddonConfiguration/" + +' fnGetImageUrl: Returns the image URL for the UNO image controls. +Function fnGetImageUrl (sName As String) As String + Dim oRegKey As Object + + oRegKey = fnGetRegistryKeyContent (BASE_KEY & "FileResources/" & sName) + fnGetImageUrl = fnExpandMacroFieldExpression (oRegKey.Url) +End Function + +' fnGetRegistryKeyContent: Returns the registry key content +Function fnGetRegistryKeyContent (sKeyName as string, Optional bforUpdate as Boolean) + Dim oConfigProvider As Object + Dim aNodePath (0) As New com.sun.star.beans.PropertyValue + + oConfigProvider = createUnoService ( _ + "com.sun.star.configuration.ConfigurationProvider") + aNodePath(0).Name = "nodepath" + aNodePath(0).Value = sKeyName + If IsMissing (bForUpdate) Then + fnGetRegistryKeyContent = oConfigProvider.createInstanceWithArguments ("com.sun.star.configuration.ConfigurationAccess", aNodePath()) + Else + If bForUpdate Then + fnGetRegistryKeyContent = oConfigProvider.createInstanceWithArguments ("com.sun.star.configuration.ConfigurationUpdateAccess", aNodePath()) + Else + fnGetRegistryKeyContent = oConfigProvider.createInstanceWithArguments ("com.sun.star.configuration.ConfigurationAccess", aNodePath()) + End If + End If +End Function + +' fnExpandMacroFieldExpression +Function fnExpandMacroFieldExpression (sURL As String) As String + Dim sTemp As String + Dim oSM As Object + Dim oMacroExpander As Object + + ' Gets the service manager + oSM = getProcessServiceManager + ' Gets the macro expander + oMacroExpander = oSM.DefaultContext.getValueByName ( _ + "/singletons/com.sun.star.util.theMacroExpander") + + 'cut the vnd.sun.star.expand: part + sTemp = Join (Split (sURL, "vnd.sun.star.expand:")) + + 'Expand the macrofield expression + sTemp = oMacroExpander.ExpandMacros (sTemp) + sTemp = Trim (sTemp) + fnExpandMacroFieldExpression = sTemp +End Function diff --git a/PokemonGoIV/9Load.vb b/PokemonGoIV/9Load.vb index 91138a3..c416308 100644 --- a/PokemonGoIV/9Load.vb +++ b/PokemonGoIV/9Load.vb @@ -1,3 +1,17 @@ +' Copyright (c) 2016 imacat. +' +' Licensed under the Apache License, Version 2.0 (the "License"); +' you may not use this file except in compliance with the License. +' You may obtain a copy of the License at +' +' http://www.apache.org/licenses/LICENSE-2.0 +' +' Unless required by applicable law or agreed to in writing, software +' distributed under the License is distributed on an "AS IS" BASIS, +' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +' See the License for the specific language governing permissions and +' limitations under the License. + ' 9Load: The Pokémon GO data sheets loader ' by imacat , 2016-11-28 @@ -9,6 +23,20 @@ Sub subReadDataSheets Dim sOutput as String, mData As Variant sOutput = "" _ + & "' Copyright (c) 2016 imacat." & Chr (10) _ + & "' " & Chr (10) _ + & "' Licensed under the Apache License, Version 2.0 (the ""License"");" & Chr (10) _ + & "' you may not use this file except in compliance with the License." & Chr (10) _ + & "' You may obtain a copy of the License at" & Chr (10) _ + & "' " & Chr (10) _ + & "' http://www.apache.org/licenses/LICENSE-2.0" & Chr (10) _ + & "' " & Chr (10) _ + & "' Unless required by applicable law or agreed to in writing, software" & Chr (10) _ + & "' distributed under the License is distributed on an ""AS IS"" BASIS," & Chr (10) _ + & "' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied." & Chr (10) _ + & "' See the License for the specific language governing permissions and" & Chr (10) _ + & "' limitations under the License." & Chr (10) _ + & Chr (10) _ & "' 1Data: The Pokémon GO data for IV calculation" & Chr (10) _ & "' by imacat , " & Format (Date (), "yyyy-mm-dd") & Chr (10) _ & "' Generated with 9Load.subReadDataSheets ()" & Chr (10) _ diff --git a/excludes/team-instinct-vector.svg b/excludes/team-instinct-vector.svg new file mode 100644 index 0000000..0d83e15 --- /dev/null +++ b/excludes/team-instinct-vector.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + diff --git a/excludes/team-mystic-vector.svg b/excludes/team-mystic-vector.svg new file mode 100644 index 0000000..3bd124d --- /dev/null +++ b/excludes/team-mystic-vector.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/excludes/team-valor-vector.svg b/excludes/team-valor-vector.svg new file mode 100644 index 0000000..8cb37d9 --- /dev/null +++ b/excludes/team-valor-vector.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + diff --git a/oxt/AddonConfiguration.xcs b/oxt/AddonConfiguration.xcs new file mode 100644 index 0000000..e5405ca --- /dev/null +++ b/oxt/AddonConfiguration.xcs @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/oxt/AddonConfiguration.xcu b/oxt/AddonConfiguration.xcu new file mode 100644 index 0000000..32a65b9 --- /dev/null +++ b/oxt/AddonConfiguration.xcu @@ -0,0 +1,63 @@ + + + + + + + + PokemonGoIV + + + Calculates the individual values (IVs) of the Pokémon. + 計算寶可夢的 IV 值。 + + + @VERSION@ + + + Apache License + + + imacat + 依瑪貓 + + + imacat@mail.imacat.idv.tw + + + Copyright © 2016 imacat + 版權所有 © 2016 依瑪貓 + + + + + + + + + + %origin%/icons/team-valor.png + + + + + %origin%/icons/team-mystic.png + + + + + %origin%/icons/team-instinct.png + + + + + + + + + Found no matching IV. + 找不出符合的 IV 值。 + + + + diff --git a/oxt/META-INF/manifest.xml b/oxt/META-INF/manifest.xml index d7cb8ef..8db909b 100644 --- a/oxt/META-INF/manifest.xml +++ b/oxt/META-INF/manifest.xml @@ -3,5 +3,7 @@ + + diff --git a/oxt/PokemonGoIV/0Main.xba b/oxt/PokemonGoIV/0Main.xba index d28fb1d..f14bfcf 100644 --- a/oxt/PokemonGoIV/0Main.xba +++ b/oxt/PokemonGoIV/0Main.xba @@ -1,6 +1,20 @@ -' 0Main: The main module for the Pokémon GO IV calculator +' Copyright (c) 2016 imacat. +' +' Licensed under the Apache License, Version 2.0 (the "License"); +' you may not use this file except in compliance with the License. +' You may obtain a copy of the License at +' +' http://www.apache.org/licenses/LICENSE-2.0 +' +' Unless required by applicable law or agreed to in writing, software +' distributed under the License is distributed on an "AS IS" BASIS, +' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +' See the License for the specific language governing permissions and +' limitations under the License. + +' 0Main: The main module for the Pokémon GO IV calculator ' by imacat <imacat@mail.imacat.idv.tw>, 2016-11-27 Option Explicit @@ -81,6 +95,9 @@ Function fnAskParam As aFindIVParam oDialog.getControl ("cbxBest3").setVisible (False) oDialog.getControl ("lstApprasal2").setVisible (False) + ' TODO: To be removed. + oDialog.getControl ("imgTeam").getModel.setPropertyValue ("ImageURL", fnGetImageUrl ("TeamValor")) + If oDialog.execute = 0 Then aQuery.bIsCancelled = True fnAskParam = aQuery diff --git a/oxt/PokemonGoIV/1Data.xba b/oxt/PokemonGoIV/1Data.xba index 9e5ab7c..12666b1 100644 --- a/oxt/PokemonGoIV/1Data.xba +++ b/oxt/PokemonGoIV/1Data.xba @@ -1,6 +1,20 @@ -' 1Data: The Pokémon GO data for IV calculation +' Copyright (c) 2016 imacat. +' +' Licensed under the Apache License, Version 2.0 (the "License"); +' you may not use this file except in compliance with the License. +' You may obtain a copy of the License at +' +' http://www.apache.org/licenses/LICENSE-2.0 +' +' Unless required by applicable law or agreed to in writing, software +' distributed under the License is distributed on an "AS IS" BASIS, +' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +' See the License for the specific language governing permissions and +' limitations under the License. + +' 1Data: The Pokémon GO data for IV calculation ' by imacat <imacat@mail.imacat.idv.tw>, 2016-12-06 ' Generated with 9Load.subReadDataSheets () diff --git a/oxt/PokemonGoIV/8Registry.xba b/oxt/PokemonGoIV/8Registry.xba new file mode 100644 index 0000000..ab34638 --- /dev/null +++ b/oxt/PokemonGoIV/8Registry.xba @@ -0,0 +1,58 @@ + + +' 8Registry: Utilities used from other modules to access to PokemonGoIV private configuration +' Taken from TextToColumns, 2016-12-07 + +Option Explicit + +Const BASE_KEY As String = "/org.openoffice.Office.Addons.PokemonGoIV.AddonConfiguration/" + +' fnGetImageUrl: Returns the image URL for the UNO image controls. +Function fnGetImageUrl (sName As String) As String + Dim oRegKey As Object + + oRegKey = fnGetRegistryKeyContent (BASE_KEY & "FileResources/" & sName) + fnGetImageUrl = fnExpandMacroFieldExpression (oRegKey.Url) +End Function + +' fnGetRegistryKeyContent: Returns the registry key content +Function fnGetRegistryKeyContent (sKeyName as string, Optional bforUpdate as Boolean) + Dim oConfigProvider As Object + Dim aNodePath (0) As New com.sun.star.beans.PropertyValue + + oConfigProvider = createUnoService ( _ + "com.sun.star.configuration.ConfigurationProvider") + aNodePath(0).Name = "nodepath" + aNodePath(0).Value = sKeyName + If IsMissing (bForUpdate) Then + fnGetRegistryKeyContent = oConfigProvider.createInstanceWithArguments ("com.sun.star.configuration.ConfigurationAccess", aNodePath()) + Else + If bForUpdate Then + fnGetRegistryKeyContent = oConfigProvider.createInstanceWithArguments ("com.sun.star.configuration.ConfigurationUpdateAccess", aNodePath()) + Else + fnGetRegistryKeyContent = oConfigProvider.createInstanceWithArguments ("com.sun.star.configuration.ConfigurationAccess", aNodePath()) + End If + End If +End Function + +' fnExpandMacroFieldExpression +Function fnExpandMacroFieldExpression (sURL As String) As String + Dim sTemp As String + Dim oSM As Object + Dim oMacroExpander As Object + + ' Gets the service manager + oSM = getProcessServiceManager + ' Gets the macro expander + oMacroExpander = oSM.DefaultContext.getValueByName ( _ + "/singletons/com.sun.star.util.theMacroExpander") + + 'cut the vnd.sun.star.expand: part + sTemp = Join (Split (sURL, "vnd.sun.star.expand:")) + + 'Expand the macrofield expression + sTemp = oMacroExpander.ExpandMacros (sTemp) + sTemp = Trim (sTemp) + fnExpandMacroFieldExpression = sTemp +End Function + \ No newline at end of file diff --git a/oxt/PokemonGoIV/9Load.xba b/oxt/PokemonGoIV/9Load.xba index 35785b9..3ae3092 100644 --- a/oxt/PokemonGoIV/9Load.xba +++ b/oxt/PokemonGoIV/9Load.xba @@ -1,6 +1,20 @@ -' 9Load: The Pokémon GO data sheets loader +' Copyright (c) 2016 imacat. +' +' Licensed under the Apache License, Version 2.0 (the "License"); +' you may not use this file except in compliance with the License. +' You may obtain a copy of the License at +' +' http://www.apache.org/licenses/LICENSE-2.0 +' +' Unless required by applicable law or agreed to in writing, software +' distributed under the License is distributed on an "AS IS" BASIS, +' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +' See the License for the specific language governing permissions and +' limitations under the License. + +' 9Load: The Pokémon GO data sheets loader ' by imacat <imacat@mail.imacat.idv.tw>, 2016-11-28 Option Explicit @@ -11,6 +25,20 @@ Sub subReadDataSheets Dim sOutput as String, mData As Variant sOutput = "" _ + & "' Copyright (c) 2016 imacat." & Chr (10) _ + & "' " & Chr (10) _ + & "' Licensed under the Apache License, Version 2.0 (the ""License"");" & Chr (10) _ + & "' you may not use this file except in compliance with the License." & Chr (10) _ + & "' You may obtain a copy of the License at" & Chr (10) _ + & "' " & Chr (10) _ + & "' http://www.apache.org/licenses/LICENSE-2.0" & Chr (10) _ + & "' " & Chr (10) _ + & "' Unless required by applicable law or agreed to in writing, software" & Chr (10) _ + & "' distributed under the License is distributed on an ""AS IS"" BASIS," & Chr (10) _ + & "' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied." & Chr (10) _ + & "' See the License for the specific language governing permissions and" & Chr (10) _ + & "' limitations under the License." & Chr (10) _ + & Chr (10) _ & "' 1Data: The Pokémon GO data for IV calculation" & Chr (10) _ & "' by imacat <imacat@mail.imacat.idv.tw>, " & Format (Date (), "yyyy-mm-dd") & Chr (10) _ & "' Generated with 9Load.subReadDataSheets ()" & Chr (10) _ diff --git a/oxt/PokemonGoIV/DialogStrings_en_US.properties b/oxt/PokemonGoIV/DialogStrings_en_US.properties index fb69cda..2820e17 100644 --- a/oxt/PokemonGoIV/DialogStrings_en_US.properties +++ b/oxt/PokemonGoIV/DialogStrings_en_US.properties @@ -1,8 +1,8 @@ # Strings for Dialog Library PokemonGoIV 2.DlgMain.HelpText= -3.DlgMain.Title=Pok\u00c3\u00a9mon GO IV Calculator +3.DlgMain.Title=Pok\u00e9mon GO IV Calculator 22.DlgMain.txtPokemon.HelpText= -23.DlgMain.txtPokemon.Label=~Pok\u00c3\u00a9mon: +23.DlgMain.txtPokemon.Label=~Pok\u00e9mon: 26.DlgMain.txtCP.HelpText= 27.DlgMain.txtCP.Label=~CP: 28.DlgMain.numCP.HelpText= @@ -14,7 +14,7 @@ 40.DlgMain.txtPlayerLevel.HelpText= 41.DlgMain.txtPlayerLevel.Label=Player ~level: 46.DlgMain.cbxIsNew.HelpText= -47.DlgMain.cbxIsNew.Label=This Pok\u00c3\u00a9mon is ~newly-caught and was not powered-up yet. +47.DlgMain.cbxIsNew.Label=This Pok\u00e9mon has not been powered-up yet. 50.DlgMain.grpApprasals.HelpText= 51.DlgMain.grpApprasals.Label=Team Leader Apprasal 85.DlgMain.btnOK.HelpText= @@ -39,3 +39,5 @@ 195.DlgMain.txtBestAfter.HelpText= 201.DlgMain.cbxBest2.HelpText= 203.DlgMain.cbxBest3.HelpText= +205.DlgMain.imgTeam.HelpText= +207.DlgMain.imgTeam.HelpText= diff --git a/oxt/PokemonGoIV/DialogStrings_zh_TW.properties b/oxt/PokemonGoIV/DialogStrings_zh_TW.properties index 4820686..a420a33 100644 --- a/oxt/PokemonGoIV/DialogStrings_zh_TW.properties +++ b/oxt/PokemonGoIV/DialogStrings_zh_TW.properties @@ -14,7 +14,7 @@ 40.DlgMain.txtPlayerLevel.HelpText= 41.DlgMain.txtPlayerLevel.Label=\u73a9\u5bb6\u7b49\u7d1a(~L)\uff1a 46.DlgMain.cbxIsNew.HelpText= -47.DlgMain.cbxIsNew.Label=\u6211\u525b\u6293\u5230\u9019\u96bb\u5bf6\u53ef\u5922\uff0c\u9084\u6c92\u5f37\u5316\u904e(~N)\u3002 +47.DlgMain.cbxIsNew.Label=\u9019\u96bb\u5bf6\u53ef\u5922\u9084\u6c92\u5f37\u5316\u904e(~N)\u3002 50.DlgMain.grpApprasals.HelpText= 51.DlgMain.grpApprasals.Label=\u968a\u9577\u8a55\u50f9 85.DlgMain.btnOK.HelpText= @@ -39,3 +39,5 @@ 195.DlgMain.txtBestAfter.HelpText= 201.DlgMain.cbxBest2.HelpText= 203.DlgMain.cbxBest3.HelpText= +205.DlgMain.imgTeam.HelpText= +207.DlgMain.imgTeam.HelpText= diff --git a/oxt/PokemonGoIV/DlgMain.xdl b/oxt/PokemonGoIV/DlgMain.xdl index 9fac6a1..2c6439d 100644 --- a/oxt/PokemonGoIV/DlgMain.xdl +++ b/oxt/PokemonGoIV/DlgMain.xdl @@ -5,6 +5,7 @@ + @@ -260,6 +261,7 @@ + diff --git a/oxt/PokemonGoIV/script.xlb b/oxt/PokemonGoIV/script.xlb index f2a3b24..fc8d57b 100644 --- a/oxt/PokemonGoIV/script.xlb +++ b/oxt/PokemonGoIV/script.xlb @@ -4,4 +4,5 @@ + \ No newline at end of file diff --git a/oxt/icons/team-instinct.png b/oxt/icons/team-instinct.png new file mode 100644 index 0000000000000000000000000000000000000000..45b58d9c20b5cff098937db7bad67f386b8a03b9 GIT binary patch literal 2028 zcmV-P)@L%o3)6h@G~m9U>j3wp5&gNkBRZjBN#U z&{{1mXhB8`>X(`sN??K3iH=pK1cOs(aVoZ00)bFwXhj6_#(==K=X#HYll7KEyEH!5M9xoP2}wMk!rg|h!(jjla1&HD7(exZSSzsvjCy` z;5RdJOa3fv!GqS?j7gG6WZHq~yVpKTnRBJicbgcUDY#=n8W5@UpZDw~e{M_11LH?L zhg7XaPGR^E`^1h9^Sp=XlXgLL4*;jiJz<}G16PU=W+KE?rBcP+JtW(A0OlqDS`Me* zB97xY`Jw6#-*(3jCqGo3sPWB@*LaQ#-o5JT8+JVQry-MdKd>L*(&-&pmZ$a3@bGw+ z9~wI4TBTU-tJKO@{N9`W8P#{Isi%uyHv)Vku%ODl+VDblV0+p8~L<6Q~58gM!aOkt-{szAaC zP5jeX=3a%5MOg{tb#ic4kUzMp)kgH38gofpegKG~_W&b1HmVYIh%RNKhP&l~?g6$* zYmI-h;BHTOc!%r~kxi&RuW)mB<|w}s$WdW2ASwDQB0OvrM1t2Ps_Ov+;63psGCUg; z7I#NmDy$G?F)$Tq0n*w6!(xF|z?ZtQJD9L^UV47?WKSeydZel88nFVAC89DH2&FOx zuBHQpZP_KI!25s*+^20hnIgKuZi(LB8*n{FFm}{4#!?;zDFue5s6!aOgX%1hR+Jy% z>U|hlsqnGDX@L_i%o4c2%ZsU2DrUVivHAUe0xWajq1HAY6Hg-Ky+>6S05bs#I0!TY zlLVR+cBt@?D2qULg02Cr5tV7Bb9$}5d1~m}yo)^BYO44MD%4qdmC`PxTw1|AvM2KxX9J<{MKh+nyMC))s4=KpBu| z*GxzzYl`ha^lQ#7;lHQ)ZiZzTr+i>EQ&;9g^t@}?YrEAKgc__sWU=eIg+OI{@kD`V zY>nnwfynkYN=%kZja$Yj?lhyZn+FDP#6!&}(?IW!G;W>#=}xRH5jiDB=D9|S1+rr% zJ@?c0TPnW>nc+(MhXdk4fM{KCRKnsd01@)_1kM!wW*yFg>xh*wrD@5H76yD0n zDV>v~JRw8kEuQnhU+qBTjwH^j3r>Z40K>l|Bt?*y6;b^LE?s>nd~IndgS+#6r%&)tOSk5NYMsNVp` zM0EA#GnIAk2s(ECYtxj`PcI=gFpRV^Nla?(}Du zyxrg19n)V!e|G6RqVl@Jl2HBj{4V|0bvFPcjJ0AQ*H30Z#%etZvPzS!|#CqVAq8p&h z2@j1fLl`f}lfAjV`^*7y)555VK87$pT%W#HM4tu@`f@%jXAq=Mt?s&Qupzh?bOxXX z_jYg2!UKch*DzQj`bgW+Q-Xs9ZcqXGvrCUCJcpHdod3(`Nd5y&Z6B=qwCGd-0000< KMNUMnLSTZ2JkhcM literal 0 HcmV?d00001 diff --git a/oxt/icons/team-mystic.png b/oxt/icons/team-mystic.png new file mode 100644 index 0000000000000000000000000000000000000000..7523dfa76335255ca259cb41720df9f4e84b541b GIT binary patch literal 2319 zcmV+q3GnubP)RzZT?mT~f?sa7Az-_j8CU=@iuL8coZW*_S#qh3pEOAod zgZj-{OXQUN z$&HA^kDPItq^#tgEKpphmQnkwq>$AK>cUn?^g4c5r?Y|xZ`4B!yKhTM}vtxi@W zxD+^|EHRY1iDA=-*UJ})XL4sc(+p(Oh3z-=5-0|C9#FuvE-JY-#oOvPN~kB#pP&7y zncY`bN`jXRZ3CN(u{mf;o!^gOb~>_0yA$33js=b`lYLWXb83<;=op<)c$H)`fN>bl zAiFQDseg(^-TU>%eW^sebh%7F2Kxr^0b-4Z9?aL4+WdTMJ20Y*;QMrS&IfJ9abd7D z{azn}y^6rSz{!=`VvcJSaVM}Haes``ngcDPKJD=*Gud--=5;PjJ>A>N1$$2>a#sRZ z0DBC6Be<(V`MgZ`dIh&4zr6mV9%F0(1$YOk6|)mTCzX3uVw${YQlV+&YvnEL^<%RY zSq;!jFjzYBZ@@w`ZXPyw_fZ8G+t4p90A5G5fx9&Fqt$&Fl`9C4$h7?)^h2Nns0Cb^ zJ96g6<(o#d0@z|);$U`iP@CS6>})$Ol0E<&9uq=8^qf3=*<$g3#hB$cafr5y^1vwMMlQY=ROgd-Wy-ibU&Zl?x7{+ z=cuq7s*wX*7c{3=_O}iosO7`=cxDqpYlPMVpY{uxHEiLYV-7vF-3J^kaT)L?&}y>D zz%h~8nw~hnVejb}Q~K4~hWL}g>agg|s3n|+Ec!wkAUI80ie$nXvRyDW(Upb zEdcQa*)v?pZU{?eXsD9Y&5eYe5t!oG+2TTNHQkths)~UGI4@IE9lnlMKI`T#fK)X zMojI^7E?UO%fPeUmMwH0$R2QyjG2<|kPzk$aYzhQFxKC2NCaSi+y@9+Qu6>3nOp|Q zW4c|DU5$a0n-Rgq-HZ3Yi=^3JOxKi(_AYR|WV6ggXPInM(3EwM!bOIk_t7h&d2xdjIzucqrFOl-h*B7&J7?~ z5vErwSl@+ z#CAW$7bA7u#XbFu`^81cO!lf6y#0A~E4SDfFqaJm!NK(1KzVEHF~(D2iZSd+VSfzd zP6ZHpfkk72K@kjt1FI14TIA*og`iduIE#J;4E8gM?>x5>-26hRa6zScup&XNI4_8T@L~NsT1zRO$xd{*JAijVS>VK=Id##H2?EqKw0%30 z9(Lv?^}Hzldp0MDzz+yu0q-A~$!} zuy{WCR2eydbDR|#tL7X|!5$R$y&d3ZJO9hswz%JpbwLS+Ebn zn&NOZj_#!**~>rZu?l@^B)pS ztXTVC*>%?sgHo`jq5b$s(K|pb=m9ym-by+bM+|W;P~ROI7(7sdhdeY)*l1t^a6J`X zz5oOp!sgW3)z%)Af>P;1uv%n`f|k@`n@QYHwT(4tawKjs<5*x0kPystFjG_&rB7*3 zw&e2y1~n{1W@7=&xrYI?nnKWAe``>anrvvNK?+5S3^om>UKzh7`Ih?r-)j0`P%Tbm za?b+igvHosEg!z8V$6cQCsVWu@@%Aa-N*Hn;>z&5uqAaxrQ2gj1QQE$<03a`X=dc8m^Y)F4T=X(%ZP=W;elP{gk;vpG pfL#R9S1~(a=uPKo?NDaLe*%ec*UJxl9oPT>002ovPDHLkV1g2tRbK!A literal 0 HcmV?d00001 diff --git a/oxt/icons/team-valor.png b/oxt/icons/team-valor.png new file mode 100644 index 0000000000000000000000000000000000000000..df5bbcb630def1f684e94b456d3aaf82a581ab72 GIT binary patch literal 2390 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 IM6N<$g0DxBWdHyG literal 0 HcmV?d00001