From 4410e4b95fb17b96e288962932f8362a69aa90de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Fri, 2 Aug 2024 15:20:13 +0200 Subject: [PATCH] Added: Window icons for various dialogs including save/open/export/import --- CHANGELOG.md | 1 + .../flash/gui/AdvancedSettingsDialog.java | 2 +- .../decompiler/flash/gui/ExportDialog.java | 2 +- src/com/jpexs/decompiler/flash/gui/Main.java | 8 ++- .../jpexs/decompiler/flash/gui/MainPanel.java | 63 +++++++++--------- .../decompiler/flash/gui/NewFileDialog.java | 2 +- src/com/jpexs/decompiler/flash/gui/View.java | 26 ++++++++ .../generictageditors/BinaryDataEditor.java | 2 +- .../flash/gui/graphics/exportjava32.png | Bin 0 -> 2486 bytes .../flash/gui/graphics/importscript32.png | Bin 0 -> 1899 bytes .../flash/gui/graphics/replacealpha32.png | Bin 0 -> 1846 bytes .../flash/gui/graphics/saveasexe32.png | Bin 0 -> 1382 bytes 12 files changed, 66 insertions(+), 40 deletions(-) create mode 100644 src/com/jpexs/decompiler/flash/gui/graphics/exportjava32.png create mode 100644 src/com/jpexs/decompiler/flash/gui/graphics/importscript32.png create mode 100644 src/com/jpexs/decompiler/flash/gui/graphics/replacealpha32.png create mode 100644 src/com/jpexs/decompiler/flash/gui/graphics/saveasexe32.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fc1f4d95..787658005 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ All notable changes to this project will be documented in this file. - [#1290] Export to FlashDevelop project - [#1290] Export to IntelliJ IDEA project - Export FLA context menu on SWFs +- Window icons for various dialogs including save/open/export/import ### Fixed - Debugger - getting children of top level variables diff --git a/src/com/jpexs/decompiler/flash/gui/AdvancedSettingsDialog.java b/src/com/jpexs/decompiler/flash/gui/AdvancedSettingsDialog.java index dad1f066b..fc38ff35e 100644 --- a/src/com/jpexs/decompiler/flash/gui/AdvancedSettingsDialog.java +++ b/src/com/jpexs/decompiler/flash/gui/AdvancedSettingsDialog.java @@ -108,7 +108,7 @@ public class AdvancedSettingsDialog extends AppDialog { super(owner); initComponents(selectedCategory); View.centerScreen(this); - View.setWindowIcon(this); + View.setWindowIcon(this, "settings"); //configurationTable.setCellEditor(configurationTable.getDefaultEditor(null)); pack(); diff --git a/src/com/jpexs/decompiler/flash/gui/ExportDialog.java b/src/com/jpexs/decompiler/flash/gui/ExportDialog.java index 585cc1d76..c5bcff36a 100644 --- a/src/com/jpexs/decompiler/flash/gui/ExportDialog.java +++ b/src/com/jpexs/decompiler/flash/gui/ExportDialog.java @@ -453,7 +453,7 @@ public class ExportDialog extends AppDialog { cnt.add(buttonsPanel, BorderLayout.SOUTH); pack(); View.centerScreen(this); - View.setWindowIcon(this); + View.setWindowIcon(this, "export"); getRootPane().setDefaultButton(okButton); setModal(true); String pct = "" + Configuration.lastSelectedExportZoom.get() * 100; diff --git a/src/com/jpexs/decompiler/flash/gui/Main.java b/src/com/jpexs/decompiler/flash/gui/Main.java index 75654a2ea..5c73e8326 100644 --- a/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/src/com/jpexs/decompiler/flash/gui/Main.java @@ -1997,8 +1997,7 @@ public class Main { } public static boolean saveFileDialog(Openable openable, final SaveFileMode mode) { - JFileChooser fc = new JFileChooser(); - fc.setCurrentDirectory(new File(Configuration.lastSaveDir.get())); + String ext = ".swf"; switch (mode) { case SAVE: @@ -2011,6 +2010,9 @@ public class Main { ext = ".exe"; break; } + + JFileChooser fc = View.getFileChooserWithIcon(mode == SaveFileMode.EXE ? "saveasexe" : "saveas"); + fc.setCurrentDirectory(new File(Configuration.lastSaveDir.get())); FileFilter swfFilter = new FileFilter() { @Override @@ -2175,7 +2177,7 @@ public class Main { public static boolean openFileDialog() { View.checkAccess(); - JFileChooser fc = new JFileChooser(); + JFileChooser fc = View.getFileChooserWithIcon("open"); if (Configuration.openMultipleFiles.get()) { fc.setMultiSelectionEnabled(true); } diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 1850da607..1c6bafc76 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -3317,7 +3317,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se return; } - JFileChooser fc = new JFileChooser(); + JFileChooser fc = View.getFileChooserWithIcon("exportflashdevelop"); String selDir = Configuration.lastOpenDir.get(); fc.setCurrentDirectory(new File(selDir)); if (!selDir.endsWith(File.separator)) { @@ -3426,10 +3426,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se return; } - JFileChooser fc = new JFileChooser(); - String selDir = Configuration.lastOpenDir.get(); - fc.setCurrentDirectory(new File(selDir)); - JFileChooser chooser = new JFileChooser(); + JFileChooser chooser = View.getFileChooserWithIcon("exportidea"); chooser.setCurrentDirectory(new File(Configuration.lastExportDir.get())); chooser.setDialogTitle(translate("export.project.select.directory")); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); @@ -3502,7 +3499,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se if (swf == null) { return; } - JFileChooser fc = new JFileChooser(); + JFileChooser fc = View.getFileChooserWithIcon("exportfla"); String selDir = Configuration.lastOpenDir.get(); fc.setCurrentDirectory(new File(selDir)); if (!selDir.endsWith(File.separator)) { @@ -3658,7 +3655,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se public void importMovie(final SWF swf) { ViewMessages.showMessageDialog(MainPanel.this, translate("message.info.importMovies2"), translate("message.info"), JOptionPane.INFORMATION_MESSAGE, Configuration.showImportMovieInfo); - JFileChooser chooser = new JFileChooser(); + JFileChooser chooser = View.getFileChooserWithIcon("importmovie"); chooser.setCurrentDirectory(new File(Configuration.lastExportDir.get())); chooser.setDialogTitle(translate("import.select.directory")); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); @@ -3718,7 +3715,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se public void importSound(final SWF swf) { ViewMessages.showMessageDialog(MainPanel.this, translate("message.info.importSounds2"), translate("message.info"), JOptionPane.INFORMATION_MESSAGE, Configuration.showImportSoundInfo); - JFileChooser chooser = new JFileChooser(); + JFileChooser chooser = View.getFileChooserWithIcon("importsound"); chooser.setCurrentDirectory(new File(Configuration.lastExportDir.get())); chooser.setDialogTitle(translate("import.select.directory")); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); @@ -3778,7 +3775,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se public void importSprite(final SWF swf) { ViewMessages.showMessageDialog(MainPanel.this, translate("message.info.importSprites"), translate("message.info"), JOptionPane.INFORMATION_MESSAGE, Configuration.showImportSpriteInfo); - JFileChooser chooser = new JFileChooser(); + JFileChooser chooser = View.getFileChooserWithIcon("importsprite"); chooser.setCurrentDirectory(new File(Configuration.lastExportDir.get())); chooser.setDialogTitle(translate("import.select.directory")); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); @@ -3837,7 +3834,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se public void importShape(final SWF swf, boolean noFill) { ViewMessages.showMessageDialog(MainPanel.this, translate("message.info.importShapes2"), translate("message.info"), JOptionPane.INFORMATION_MESSAGE, Configuration.showImportShapeInfo); - JFileChooser chooser = new JFileChooser(); + JFileChooser chooser = View.getFileChooserWithIcon("importshape"); chooser.setCurrentDirectory(new File(Configuration.lastExportDir.get())); chooser.setDialogTitle(translate("import.select.directory")); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); @@ -3897,7 +3894,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se public void importImage(final SWF swf) { ViewMessages.showMessageDialog(MainPanel.this, translate("message.info.importImages2"), translate("message.info"), JOptionPane.INFORMATION_MESSAGE, Configuration.showImportImageInfo); - JFileChooser chooser = new JFileChooser(); + JFileChooser chooser = View.getFileChooserWithIcon("importimage"); chooser.setCurrentDirectory(new File(Configuration.lastExportDir.get())); chooser.setDialogTitle(translate("import.select.directory")); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); @@ -3955,7 +3952,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se public void importText(final SWF swf) { ViewMessages.showMessageDialog(MainPanel.this, translate("message.info.importTexts2"), translate("message.info"), JOptionPane.INFORMATION_MESSAGE, Configuration.showImportTextInfo); - JFileChooser chooser = new JFileChooser(); + JFileChooser chooser = View.getFileChooserWithIcon("importtext"); chooser.setCurrentDirectory(new File(Configuration.lastExportDir.get())); chooser.setDialogTitle(translate("import.select.directory")); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); @@ -4055,7 +4052,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } ViewMessages.showMessageDialog(MainPanel.this, translate("message.info.importScripts2"), translate("message.info"), JOptionPane.INFORMATION_MESSAGE, Configuration.showImportScriptsInfo); - JFileChooser chooser = new JFileChooser(); + JFileChooser chooser = View.getFileChooserWithIcon("importscript"); chooser.setCurrentDirectory(new File(Configuration.lastExportDir.get())); chooser.setDialogTitle(translate("import.select.directory")); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); @@ -4149,7 +4146,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se public void importSymbolClass(final SWF swf) { ViewMessages.showMessageDialog(MainPanel.this, translate("message.info.importSymbolClass").replace("%file%", SymbolClassExporter.SYMBOL_CLASS_EXPORT_FILENAME), translate("message.info"), JOptionPane.INFORMATION_MESSAGE, Configuration.showImportSymbolClassInfo); - JFileChooser chooser = new JFileChooser(); + JFileChooser chooser = View.getFileChooserWithIcon("importsymbolclass"); chooser.setCurrentDirectory(new File(Configuration.lastExportDir.get())); chooser.setDialogTitle(translate("import.select.directory")); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); @@ -4165,8 +4162,8 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } } - private String selectExportDir() { - JFileChooser chooser = new JFileChooser(); + private String selectExportDir(String icon) { + JFileChooser chooser = View.getFileChooserWithIcon(icon); chooser.setCurrentDirectory(new File(Configuration.lastExportDir.get())); chooser.setDialogTitle(translate("export.select.directory")); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); @@ -4191,7 +4188,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } final ExportDialog export = new ExportDialog(Main.getDefaultDialogsOwner(), sel); if (export.showExportDialog() == AppDialog.OK_OPTION) { - final String selFile = selectExportDir(); + final String selFile = selectExportDir("export"); if (selFile != null) { final long timeBefore = System.currentTimeMillis(); @@ -4254,7 +4251,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se for (SWF item : swfs) { SWF swf = (SWF) item; - final String selFile = selectExportDir(); + final String selFile = selectExportDir("exportjava"); if (selFile != null) { Main.startWork(translate("work.exporting") + "...", null); @@ -4290,7 +4287,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } for (SWF swf : swfs) { - final String selFile = selectExportDir(); + final String selFile = selectExportDir("exportxml"); if (selFile != null) { Main.startWork(translate("work.exporting") + "...", null); @@ -4332,7 +4329,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } for (SWF swf : swfs) { - File selectedFile = showImportFileChooser("filter.xml|*.xml", false); + File selectedFile = showImportFileChooser("filter.xml|*.xml", false, "importxml"); if (selectedFile != null) { File selfile = Helper.fixDialogFile(selectedFile); try { @@ -4848,25 +4845,25 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se TreeItem ti0 = items.get(0); File file = null; if (ti0 instanceof SoundTag) { - file = showImportFileChooser("filter.sounds|*.mp3;*.wav|filter.sounds.mp3|*.mp3|filter.sounds.wav|*.wav", false); + file = showImportFileChooser("filter.sounds|*.mp3;*.wav|filter.sounds.mp3|*.mp3|filter.sounds.wav|*.wav", false, "importsound"); } if (ti0 instanceof ImageTag) { - file = showImportFileChooser("filter.images|*.jpg;*.jpeg;*.gif;*.png;*.bmp", true); + file = showImportFileChooser("filter.images|*.jpg;*.jpeg;*.gif;*.png;*.bmp", true, "importimage"); } if (ti0 instanceof ShapeTag) { - file = showImportFileChooser("filter.images|*.jpg;*.jpeg;*.gif;*.png;*.bmp;*.svg", true); + file = showImportFileChooser("filter.images|*.jpg;*.jpeg;*.gif;*.png;*.bmp;*.svg", true, "importshape"); } if (ti0 instanceof MorphShapeTag) { return replaceMorphShape((MorphShapeTag) ti0, create, true); } if (ti0 instanceof DefineVideoStreamTag) { - file = showImportFileChooser("filter.movies|*.flv", false); + file = showImportFileChooser("filter.movies|*.flv", false, "importmovie"); } if (ti0 instanceof DefineBinaryDataTag) { - file = showImportFileChooser("", false); + file = showImportFileChooser("", false, "importbinarydata"); } if (ti0 instanceof UnknownTag) { - file = showImportFileChooser("", false); + file = showImportFileChooser("", false, "importother"); } if (file == null) { return false; @@ -5018,7 +5015,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } if (item instanceof DefineSpriteTag) { String filter = "filter.images|*.gif"; - File selectedFile = showImportFileChooser(filter, false); + File selectedFile = showImportFileChooser(filter, false, "importsprite"); if (selectedFile != null) { File selfile = Helper.fixDialogFile(selectedFile); DefineSpriteTag sprite = (DefineSpriteTag) item; @@ -5060,7 +5057,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se if (item instanceof ShapeTag) { ShapeTag st = (ShapeTag) item; String filter = "filter.images|*.jpg;*.jpeg;*.gif;*.png;*.bmp;*.svg"; - File selectedFile = showImportFileChooser(filter, true); + File selectedFile = showImportFileChooser(filter, true, "importshape"); if (selectedFile != null) { File selfile = Helper.fixDialogFile(selectedFile); byte[] data = null; @@ -5110,7 +5107,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se if (item instanceof DefineBitsJPEG3Tag || item instanceof DefineBitsJPEG4Tag) { ImageTag it = (ImageTag) item; if (it.importSupported()) { - File selectedFile = showImportFileChooser("", false); + File selectedFile = showImportFileChooser("", false, "replacealpha"); if (selectedFile != null) { File selfile = Helper.fixDialogFile(selectedFile); byte[] data = Helper.readFile(selfile.getAbsolutePath()); @@ -5162,14 +5159,14 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se export(true, selected); } - public File showImportFileChooser(String filter, boolean imagePreview) { - return showImportFileChooser(filter, imagePreview, null); + public File showImportFileChooser(String filter, boolean imagePreview, String icon) { + return showImportFileChooser(filter, imagePreview, null, icon); } - public File showImportFileChooser(String filter, boolean imagePreview, String title) { + public File showImportFileChooser(String filter, boolean imagePreview, String title, String icon) { String[] filterArray = filter.length() > 0 ? filter.split("\\|") : new String[0]; - JFileChooser fc = new JFileChooser(); + JFileChooser fc = View.getFileChooserWithIcon(icon); fc.setCurrentDirectory(new File(Configuration.lastOpenDir.get())); if (imagePreview) { fc.setAccessory(new FileChooserImagePreview(fc)); diff --git a/src/com/jpexs/decompiler/flash/gui/NewFileDialog.java b/src/com/jpexs/decompiler/flash/gui/NewFileDialog.java index cf80866ab..8cf91bac7 100644 --- a/src/com/jpexs/decompiler/flash/gui/NewFileDialog.java +++ b/src/com/jpexs/decompiler/flash/gui/NewFileDialog.java @@ -222,7 +222,7 @@ public class NewFileDialog extends AppDialog { pack(); setResizable(false); View.centerScreen(this); - View.setWindowIcon(this); + View.setWindowIcon(this, "newswf"); setModal(true); widthEditor.setValue(550); diff --git a/src/com/jpexs/decompiler/flash/gui/View.java b/src/com/jpexs/decompiler/flash/gui/View.java index 0dc04fc96..c67333dfc 100644 --- a/src/com/jpexs/decompiler/flash/gui/View.java +++ b/src/com/jpexs/decompiler/flash/gui/View.java @@ -29,6 +29,7 @@ import java.awt.Graphics; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; +import java.awt.HeadlessException; import java.awt.Image; import java.awt.Insets; import java.awt.Point; @@ -67,6 +68,7 @@ import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JEditorPane; +import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenuItem; @@ -320,6 +322,17 @@ public class View { } } + /** + * Sets icon of the window. + * @param f + * @param icon Icon identifier. Icon must exist in 16 and 32 variant + */ + public static void setWindowIcon(Window f, String icon) { + List images = new ArrayList<>(); + images.add(loadImage(icon + "16")); + images.add(loadImage(icon + "32")); + f.setIconImages(images); + } /** * Sets icon of specified frame to ASDec icon * @@ -932,4 +945,17 @@ public class View { } } } + + public static JFileChooser getFileChooserWithIcon(String iconName) { + return new JFileChooser() { + + @Override + protected JDialog createDialog(Component parent) throws HeadlessException { + JDialog dialog = super.createDialog(parent); + setWindowIcon(dialog, iconName); + dialog.getRootPane().setWindowDecorationStyle(JRootPane.FRAME); + return dialog; + } + }; + } } diff --git a/src/com/jpexs/decompiler/flash/gui/generictageditors/BinaryDataEditor.java b/src/com/jpexs/decompiler/flash/gui/generictageditors/BinaryDataEditor.java index 805961383..2acf84637 100644 --- a/src/com/jpexs/decompiler/flash/gui/generictageditors/BinaryDataEditor.java +++ b/src/com/jpexs/decompiler/flash/gui/generictageditors/BinaryDataEditor.java @@ -120,7 +120,7 @@ public class BinaryDataEditor extends JPanel implements GenericTagEditor { } private void replaceActionPerformed(ActionEvent evt) { - File selectedFile = mainPanel.showImportFileChooser("", false); + File selectedFile = mainPanel.showImportFileChooser("", false, "importbinarydata"); if (selectedFile != null) { File selfile = Helper.fixDialogFile(selectedFile); byte[] data = Helper.readFile(selfile.getAbsolutePath()); diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/exportjava32.png b/src/com/jpexs/decompiler/flash/gui/graphics/exportjava32.png new file mode 100644 index 0000000000000000000000000000000000000000..7660c2d3c7e35ea5b75107fa114a2d387d760db4 GIT binary patch literal 2486 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 literal 0 HcmV?d00001 diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/saveasexe32.png b/src/com/jpexs/decompiler/flash/gui/graphics/saveasexe32.png new file mode 100644 index 0000000000000000000000000000000000000000..e3cbe129134feb96be79b4c8aba1d93e49f28340 GIT binary patch literal 1382 zcmV-s1)2JZP)EX>4Tx04R}tkv&MmKpe$iQ>8^J4ptCx$WUFhAS&W0RV;#q(pG5I!Q|2}Xws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;vxAeOi5bWxZD8-pLEHP9LY~pC=`JAGy0|+(0>c`thv3l_Hp_EWT>m<8{ps& z7%fuvy2rbNoxS~grq$mMYVdNTmQkiI00006VoOIv000300RL*)U>^Vg010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=m-J~E)CEYJn#Sj17k@-7j9ixQ2H0tuTmE-4U}%Ae?S!kwY3WM3*Cr_ zAOu2D!KMa^)Y7DZx%Zs&x|q+HX~fRlT)1$Uxp05;KF|BS@5uhsmp=7kmQ)p#axVc9 z!D+mB{f%QU0^WJd(wP?y5n{whx$ln())-EG^1~8P0XAIFNIkQhym$>~g|ZkF@IhH# zIzZ3}Fa>P5sL;q94?i$PVx+VxM1>+Mjm#0XCkVI@m5Q^>PETP?xe|m36=w-?U^Z7o zSe(mPoSS2>t|AW3t_QQSvVtN=NfM}npv=$DGgJUv?~tYmD&=Y*8h3o=dd=@#0wn{` z2hg1raL(>Q1!PnOx(Az}A|(Up-2sxs5-AtJFbY6>61cqs814e?dm!1?9;E=tj`wdj zVJI2EjwtXp6OJ;;WC3>R0-IQ*WDShj1ps8^1OGYYV&t6sS9$MQUcJfZuO4M94;)AcR1SN{Z*v z^S^TIc z$uAo5K2WU~Zs$7617k$2z-At(rIrxj+poVG3GnPwi_}ufW*+)ue=-2Tom{D>mf$^) zEgasFss<%^Pd&BV$+iFOWX7MsmXFjk;mTS;8UoJyZFd?1SJn#ZnXu&}Jpwn0B~*ZR zP#US_{i}g-)x=pB*kjyr*HLMVm&gLhd1RhU0U>@kd$%bz|&oLIM|l{)-FOAooK6H{N~e6`(nW zA@7s7FMZgKk;EDnW-Y(1Z*uPJdl+MQ`NV4!MS(?Gn00*gXQUkm7InZMzzw+PWuOTV zF;o*vmRb^M9$ zgrey9AT!Xa1)Q~*ZV*gj1#0bo>*Jq-NggVqcK&pT!CHr+-KdWJeIPNNZg8TTYp)+W oI0=9TZ~(aff8>e+e*?e&1Dd8;Ch;9TrT_o{07*qoM6N<$f>qRZuK)l5 literal 0 HcmV?d00001