ccsaver/build.properties0000644000175000001440000000007110071244264016725 0ustar nyerglerusers00000000000000saverbeans.path = /home/nyergler/Applications/saverbeans ccsaver/build.xml0000644000175000001440000001142410065547727015352 0ustar nyerglerusers00000000000000 Property saverbeans.path not found. Please copy build.properties.sample to build.properties and follow the instructions in that file. Property saverbeans.path is invalid. Please set it to the installation path of the SaverBeans SDK. ccsaver/src/0000755000175000001440000000000010071244023014272 5ustar nyerglerusers00000000000000ccsaver/src/conf/0000755000175000001440000000000010071244023015217 5ustar nyerglerusers00000000000000ccsaver/src/conf/ccsaver.xml0000644000175000001440000000342410065570446017410 0ustar nyerglerusers00000000000000 <_description> Sample screensaver written as an exercise of long-rusty Java skills. Loads random Creative Commons licensed images from the internet for your slide show viewing pleasure. ccsaver/src/conf/CVS/0000755000175000001440000000000010071244023015652 5ustar nyerglerusers00000000000000ccsaver/src/conf/CVS/Root0000644000175000001440000000005010071244023016513 0ustar nyerglerusers00000000000000:extssh:nyergler@shell.modwest.com:/cvs ccsaver/src/conf/CVS/Repository0000644000175000001440000000002110071244023017745 0ustar nyerglerusers00000000000000ccsaver/src/conf ccsaver/src/conf/CVS/Entries0000644000175000001440000000005410071244023017205 0ustar nyerglerusers00000000000000/ccsaver.xml/1.3/Mon Jun 21 14:31:02 2004// ccsaver/src/doc/0000755000175000001440000000000010071244023015037 5ustar nyerglerusers00000000000000ccsaver/src/doc/unix/0000755000175000001440000000000010071244023016022 5ustar nyerglerusers00000000000000ccsaver/src/doc/unix/README.txt0000644000175000001440000001245310065547730017543 0ustar nyerglerusers00000000000000------------------------------------------------------------------------------- Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. This program is free software; you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------- SaverBeans Screensaver Pack Unix README --------------------------------------- Requirements: * Administrator access * lesstif (provides /usr/X11R6/lib/libXm.so) Any version will do - you may need an older version if you don't have glibc2.3; such is the case with Java Desktop System for example. * xscreensaver (any version should do, 4-14 and greater is known to work) * Java VM 1.5 Beta or higher (Get at http://java.sun.com/). To Install: * Edit Makefile and jdkhome and xscreensaverhome to valid directories * Run 'make' to build the screensaver binaries for your platform * In the future, there will be a 'make install' task (contributions welcome). For now this has to be done manually: * Copy files to the right directories. Java Desktop System: SCREENSAVER_BIN=/usr/lib/xscreensaver SCREENSAVER_CONF=/usr/lib/xscreensaver/config Solaris: SCREENSAVER_BIN=/usr/openwin/lib/xscreensaver SCREENSAVER_CONF=/usr/openwin/share/control-center-2.0/screensavers Red Hat 9: SCREENSAVER_BIN=/usr/X11R6/bin SCREENSAVER_CONF=/usr/share/control-center/screensavers Other platforms: SCREENSAVER_BIN=(search for an xscreensaver, like apollonian) SCREENSAVER_CONF=(search for a config file, like apollonian.xml) Please check where your other screensavers are installed. You will need root access to do this (RPM will be provided later) 1. Copy or symbolically link *.jar to SCREENSAVER_BIN 2. Copy *.xml to SCREENSAVER_CONF 3. For each screensaver, you will see two files, e.g. bouncingline and bouncingline-bin. Copy or symbolically link bouncingline and bouncingline-bin to SCREENSAVER_BIN * Edit ~/.xscreensaver and add an entry for the screensaver. For example, for BouncingLine, add the following to the programs section: "Bouncing Line (Java)" /full/path/to/bouncingline -root \n\ (the bouncingline.bin, saverbeans-examples.jar saverbeans-api.jar files must appear in the same directory) NOTE: If you don't have a .xscreensaver file, go to your screensaver preferences and adjust the settings of a screensaver. The file will be created for you automatically. * Make sure the Java Virtual Machine can be located by each screensaver from the shell launched by the xscreensaver process. The following sources will be checked for your Java Virtual Machine (in order). See the screensaver wrapper script for more details. At worst, you can always edit these scripts directly, but usually editing ~/.xscreensaver and adding -jdkhome will suffice. - -jdkhome parameter, if present (this parameter is also set by the screensaver "Java Home" option in the control panel) - $JAVA_HOME environment variable, if set - `rpm -ql j2sdk`, if available - `which java`, if found - otherwise error * Run xscreensaver-demo to test and select. Look for "Bouncing Line (Java)". If it works, you should see a bouncing line in the preview window. If not, look for an error message in stderr. To Run: * Go to screensaver settings - the new screensavers will appear there. For a basic example, look for BouncingLine. Release Notes: * JDK 1.4 support is upcoming in a future release. * If it does not work but you get no error, try running bouncingline directly from the commandline and observe the output. * If you get an error containing: libjvm.so: cannot open shared object file: No such file or directory Then the screensaver cannot find the JDK. Pass -jdkhome as a parameter, pointing to a valid installation of J2SDK 1.5.0 or greater. * If you get the error: Could not find class sun/awt/X11/XEmbeddedFrame Exception in thread "main" java.lang.NoClassDefFoundError: sun/awt/X11/XEmbeddedFrame Then you're not using JDK 1.5. JDK 1.5 is currently required on Linux/Solaris. See above for how to fix this (most likely with -jdkhome) * If you get the error: java.lang.UnsupportedClassVersionError ... (unsupported major.minor version) Then you're not using JDK 1.5. JDK 1.5 is currently required on Linux/Solaris. See above for how to fix this (most likely with -jdkhome) * If "Bouncing Line" does not appear, try restarting xscreensaver (or log out and log back in): pkill xscreensaver xscreensaver -nosplash & ccsaver/src/doc/unix/CVS/0000755000175000001440000000000010071244023016455 5ustar nyerglerusers00000000000000ccsaver/src/doc/unix/CVS/Root0000644000175000001440000000005010071244023017316 0ustar nyerglerusers00000000000000:extssh:nyergler@shell.modwest.com:/cvs ccsaver/src/doc/unix/CVS/Repository0000644000175000001440000000002510071244023020554 0ustar nyerglerusers00000000000000ccsaver/src/doc/unix ccsaver/src/doc/unix/CVS/Entries0000644000175000001440000000005310071244023020007 0ustar nyerglerusers00000000000000/README.txt/1.1/Mon Jun 21 12:08:56 2004// ccsaver/src/doc/win32/0000755000175000001440000000000010071244023016001 5ustar nyerglerusers00000000000000ccsaver/src/doc/win32/README.txt0000644000175000001440000000300210065547730017510 0ustar nyerglerusers00000000000000------------------------------------------------------------------------------- Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. This program is free software; you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------- SaverBeans Screensaver Pack Windows README ------------------------------------------ Requirements: * Administrator access, to copy screensaver to Windows system directory * Windows ME or XP (may work on other versions of Windows as well) * Java VM 1.4 or higher (Get at http://java.com/) To Install: * Copy all files in this directory (except for this README) to your Windows system directory (e.g. c:\windows\system32). To Run: * Go to screensaver settings - the new screensavers will appear there. For a basic example, look for BouncingLine. ccsaver/src/doc/win32/CVS/0000755000175000001440000000000010071244023016434 5ustar nyerglerusers00000000000000ccsaver/src/doc/win32/CVS/Root0000644000175000001440000000005010071244023017275 0ustar nyerglerusers00000000000000:extssh:nyergler@shell.modwest.com:/cvs ccsaver/src/doc/win32/CVS/Repository0000644000175000001440000000002610071244023020534 0ustar nyerglerusers00000000000000ccsaver/src/doc/win32 ccsaver/src/doc/win32/CVS/Entries0000644000175000001440000000005310071244023017766 0ustar nyerglerusers00000000000000/README.txt/1.1/Mon Jun 21 12:08:56 2004// ccsaver/src/doc/CVS/0000755000175000001440000000000010071244023015472 5ustar nyerglerusers00000000000000ccsaver/src/doc/CVS/Root0000644000175000001440000000005010071244023016333 0ustar nyerglerusers00000000000000:extssh:nyergler@shell.modwest.com:/cvs ccsaver/src/doc/CVS/Repository0000644000175000001440000000002010071244023017564 0ustar nyerglerusers00000000000000ccsaver/src/doc ccsaver/src/doc/CVS/Entries0000644000175000001440000000002710071244023017025 0ustar nyerglerusers00000000000000D/unix//// D/win32//// ccsaver/src/java/0000755000175000001440000000000010071244023015213 5ustar nyerglerusers00000000000000ccsaver/src/java/CcSaver.java0000644000175000001440000001340410071244211017405 0ustar nyerglerusers00000000000000/* * ccsaver * copyright 2004, Nathan R. Yergler * http://yergler.net/projects/ccsaver * licensed under the GNU GPL * * Sample JDIC SaverBeans screen saver which displays random, Creative Commons * licensed images. */ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.font.FontRenderContext; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Vector; import javax.imageio.ImageIO; import org.jdesktop.jdic.screensaver.ScreensaverSettings; import org.jdesktop.jdic.screensaver.SimpleScreensaver; /** * @author Nathan R. Yergler */ public class CcSaver extends SimpleScreensaver { private UrlTaskFactory taskFactory; private Vector urlQueue; private Color background = Color.BLACK; private int cn_location = 0; public void init() { // get the preferences ScreensaverSettings settings = getContext().getSettings(); this._setBackground(settings.getProperty("color")); // set up the timer for switching images long interval = 30 * 1000; try { interval = Long.getLong(settings.getProperty("interval")).longValue() * 1000; } catch (Exception e){ } // instantiate the URL queue and retrieval timers this.urlQueue = new Vector(10); this.taskFactory = new UrlTaskFactory(interval, this.urlQueue); // show the CC logo while we load up the first image this.urlQueue.addElement(this.loadImage("/cc.jpg")); // create the first task this.taskFactory.newTask(UrlTaskFactory.NOW); } // init private void _setBackground(String colorOption) { Color lineColor = Color.BLACK; if( colorOption != null ) { String COLOR_FORMAT = "Color must be in #rrggbb format"; if( colorOption.length() != 7 ) { throw new RuntimeException( COLOR_FORMAT ); } try { int r = Integer.parseInt( colorOption.substring( 1, 3 ), 16 ); int g = Integer.parseInt( colorOption.substring( 3, 5 ), 16 ); int b = Integer.parseInt( colorOption.substring( 5, 7 ), 16 ); lineColor = new Color( r, g, b ); } catch( NumberFormatException e ) { throw new RuntimeException( COLOR_FORMAT ); } } this.background = lineColor; } // _setBackground public Image loadImage(String path) { Image imageData = null; try { InputStream in = getClass().getResourceAsStream(path); imageData = ImageIO.read(in); in.close(); imageData.flush(); } catch (IOException e) { return null; } return imageData; } public Image loadImage(URL imageUrl) { // Open composite image (can be created with Skinner) Image compositeImage = null; try { InputStream in = imageUrl.openStream(); compositeImage = ImageIO.read( in ); in.close(); compositeImage.flush(); } catch( IOException e ) { return null; } return compositeImage; } // loadImage public void paint(Graphics g) { Image currImage = null; // see if there is a URL in the queue if (this.urlQueue.isEmpty()) { // no items exist, bail out return; } Object qObj = this.urlQueue.remove(0); if (qObj instanceof URL) { // load the image to draw currImage = loadImage((URL)qObj); } else if (qObj instanceof Image) { currImage = (Image)qObj; } else { // not an Image or URL return; } if (currImage == null) { // an error occured retrieving the image; display the error message currImage = this.loadImage("/error.jpg"); } this.paintImage(g, currImage); // schedule the next URL retrieval this.taskFactory.newTask(); } // paint public void paintImage(Graphics g, Image paintImage) { Graphics2D g2 = (Graphics2D) g; Component c = getContext().getComponent(); Dimension d = c.getSize(); // Clears the previously drawn image. g2.setColor(this.background); g2.fillRect(0, 0, d.width, d.height); // Creates the buffered image. int w = d.width; int h = d.height; BufferedImage buffImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); Graphics2D gbi = buffImg.createGraphics(); gbi.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f)); // calculate the position of the image (currently centered) int img_x = (w - paintImage.getWidth(null)) / 2; int img_y = (h - paintImage.getHeight(null)) / 2; ((Graphics)gbi).drawImage(paintImage, img_x, img_y, null); drawCopyright(w, h, gbi); // Draws the buffered image. g2.drawImage(buffImg, null, 0, 0); } // paintImage /** * @param cn_x * @param cn_y * @param w * @param h * @param gbi */ private void drawCopyright(int w, int h, Graphics2D gbi) { // ** display copyright notice ** int cn_x = 0; int cn_y = 0; String C_MSG = "images copyright OpenPhoto.net"; FontRenderContext frc = gbi.getFontRenderContext(); Rectangle2D msg_bounds = gbi.getFont().getStringBounds(C_MSG, frc); // calculation the location switch (cn_location){ case 0 : cn_x = 0; cn_y = 10; break; case 1 : cn_x = w - (int)msg_bounds.getWidth(); cn_y = 10; break; case 2 : cn_x = w - (int)msg_bounds.getWidth(); cn_y = h - 10; // (int)msg_bounds.getHeight(); break; case 3 : cn_x = 10; cn_y = h - (int)msg_bounds.getHeight(); break; } // draw the copyright notice in the corner gbi.setColor(Color.WHITE); // gbi. gbi.drawString(C_MSG, cn_x, cn_y); // increment the location counter if (cn_location == 3) { cn_location = 0; } else { cn_location++; } } } // CcSaver ccsaver/src/java/FreeMediaUrlSource.java0000644000175000001440000000120710065547730021561 0ustar nyerglerusers00000000000000/* * ccsaver * copyright 2004, Nathan R. Yergler * http://yergler.net/projects/ccsaver * licensed under the GNU GPL * * FreeMediaUrlSource.java * $Id: FreeMediaUrlSource.java,v 1.1 2004/06/21 12:08:56 nyergler Exp $ * Generates image URLs from the FreeMedia website; currently broken. */ public class FreeMediaUrlSource extends UrlSource { protected int MAX_ID=23044; protected String nextUrlString() { // TODO: Implement FreeMedia specific retrieval return ""; // return "http://legacy.openphoto.net/cgi-bin/image?image_id=" + String.valueOf(this.randNums.nextInt(this.MAX_ID)) + "&geometry=800x600&filters=&rotate="; } } ccsaver/src/java/OpenPhotoUrlSource.java0000644000175000001440000000122210065547730021650 0ustar nyerglerusers00000000000000/* * ccsaver * copyright 2004, Nathan R. Yergler * http://yergler.net/projects/ccsaver * licensed under the GNU GPL * * OpenPhotoUrlSource.java * $Id: OpenPhotoUrlSource.java,v 1.1 2004/06/21 12:08:56 nyergler Exp $ * Generates image URLs from the OpenPhoto.net website. */ public class OpenPhotoUrlSource extends UrlSource { // MAX_ID stores the number of images in OpenPhoto; this should probably be detected somehow protected int MAX_ID=23044; public String nextUrlString() { return "http://legacy.openphoto.net/cgi-bin/image?image_id=" + String.valueOf(this.randNums.nextInt(this.MAX_ID)) + "&geometry=800x600&filters=&rotate="; } } ccsaver/src/java/UrlSource.java0000644000175000001440000000131710065547730020021 0ustar nyerglerusers00000000000000/* * ccsaver * copyright 2004, Nathan R. Yergler * http://yergler.net/projects/ccsaver * licensed under the GNU GPL * * UrlSource.java * $Id: UrlSource.java,v 1.1 2004/06/21 12:08:56 nyergler Exp $ */ import java.net.MalformedURLException; import java.net.URL; import java.util.Random; public abstract class UrlSource { protected int MAX_ID=23044; protected Random randNums = new Random(); public UrlSource() { // stub constructor super(); } // nextUrlString: sub-classes must implement protected abstract String nextUrlString(); public URL nextUrl() { try { return new URL(this.nextUrlString()); } catch (MalformedURLException e) { return null; } } // nextUrl } // UrlSource ccsaver/src/java/UrlTaskFactory.java0000644000175000001440000000365710065550352021016 0ustar nyerglerusers00000000000000/* * ccsaver * copyright 2004, Nathan R. Yergler * http://yergler.net/projects/ccsaver * licensed under the GNU GPL * * UrlTaskFactory.java * $Id: UrlTaskFactory.java,v 1.2 2004/06/21 12:13:30 nyergler Exp $ * Factory class for UrlTimerTasks; manages a list of possible image sources, as well as * references to the screen-savers URL queue. */ import java.util.Vector; import java.util.Timer; public class UrlTaskFactory { public static final long NOW = 0; public UrlSource[] sources; private long interval = 1000; private Timer timer = null; private Vector urlQueue = null; public UrlTaskFactory(long interval, Vector urlQueue) { // store the constructor parameters this.interval = interval; this.urlQueue = urlQueue; // create the timer this.timer = new Timer(); // initialize the source list // XXX we do this statically now, but is there a way to use introspection to instantiate all available sources? this.sources = new UrlSource[1]; this.sources[0] = new OpenPhotoUrlSource(); } // getInterval: return the current interval, in milliseconds public long getInterval() { return this.interval; } // getInterval // setInterval_msec: sets the interval to a new value, specified in milliseconds public void setInterval_msec(long interval) { this.interval = interval; } // setInterval_sec: sets the interval to a new value, specified in seconds public void setInterval_sec(long interval) { this.interval = interval * 1000; } // newTask: creates and schedules a task object, using the default interval public void newTask() { // defer to the more generalized newTask method (pass in default interval) this.newTask(this.interval); } // newTask // newTask: creates and schedules a task object, using the specified interval public void newTask(long scheduleInterval) { this.timer.schedule(new UrlTimerTask(this.urlQueue, this), scheduleInterval); } // newTask } // UrlTaskFactory ccsaver/src/java/UrlTimerTask.java0000644000175000001440000000163610065550353020463 0ustar nyerglerusers00000000000000/* * ccsaver * copyright 2004, Nathan R. Yergler * http://yergler.net/projects/ccsaver * licensed under the GNU GPL * * UrlTimerTask.java * $Id: UrlTimerTask.java,v 1.2 2004/06/21 12:13:31 nyergler Exp $ * Implements a java.util.TimerTask sub-class which retrieves an image URL from a random * source when called. */ import java.net.URL; import java.util.Vector; import java.util.Random; import java.util.TimerTask; public class UrlTimerTask extends TimerTask { private Vector queue = null; private UrlTaskFactory factory = null; private Random randNums = new Random(); public UrlTimerTask(Vector queue, UrlTaskFactory factory) { super(); this.queue = queue; this.factory = factory; } public void run() { URL imageURL; imageURL = this.factory.sources[this.randNums.nextInt(this.factory.sources.length)].nextUrl(); // add the URL to the queue this.queue.addElement(imageURL); } } ccsaver/src/java/CVS/0000755000175000001440000000000010071244023015646 5ustar nyerglerusers00000000000000ccsaver/src/java/CVS/Root0000644000175000001440000000005010071244023016507 0ustar nyerglerusers00000000000000:extssh:nyergler@shell.modwest.com:/cvs ccsaver/src/java/CVS/Repository0000644000175000001440000000002110071244023017741 0ustar nyerglerusers00000000000000ccsaver/src/java ccsaver/src/java/CVS/Entries0000644000175000001440000000046210071244463017214 0ustar nyerglerusers00000000000000/CcSaver.java/1.5/Fri Jul 2 11:35:37 2004// /FreeMediaUrlSource.java/1.1/Mon Jun 21 12:08:56 2004// /OpenPhotoUrlSource.java/1.1/Mon Jun 21 12:08:56 2004// /UrlSource.java/1.1/Mon Jun 21 12:08:56 2004// /UrlTaskFactory.java/1.2/Mon Jun 21 12:13:30 2004// /UrlTimerTask.java/1.2/Mon Jun 21 12:13:31 2004// ccsaver/src/res/0000755000175000001440000000000010071244023015063 5ustar nyerglerusers00000000000000ccsaver/src/res/cc.jpg0000644000175000001440000002103710065547727016201 0ustar nyerglerusers00000000000000JFIF,,Created with The GIMPC  !"$"$C" L  !1AQa"2q #BRbr3$Ccs&4DSTU ?p    T5O4 EpNSOiv[#YS/Oh&r;BR}Xщ%U˂Kd~" jKKⰦx,4|I[S)KZ*RI=Giޑt%wq 0;Nhl}I:tꖈȄJ- nH'ēllF~OSPL[[%ڃl{ Sj4Jΰy9.\IeFLL6zfJa>˲qI:ZBY*9,U&gp[kR&ܭl=NYT1^+YZVRϔIo6!W`cso=0:8⊔dĘ=z]JQjH'8n^U:ϒR 08D6E; [%Tͷ%6,erzp~2gJE5N>yRz<Έi M%͸By%G9&a5Z?24HoZTٙ8I:Dz)#V"mRJݴoiUq)b.|F{86׫VZ]zAsTS8;vY*U5Id'ԘyMwQҤ,i)RN#L] aFIo&&7O><=&-JJB4&% BǑ| :E-a4T9Ճ9L}DN>c,p8Fگj굶*D!"vA dx 1a7ln鄫Yݪ@*Rrԙ#BMHz%ziޢ?oVOhMt}2<*O8gTO*[[.82*YD!!!!kz!zË[ L* K ]l=UImz~U\ O,N"ch(ZB"!ie*]a&ԥK4da wS='8A2ҳ.Lq%*BI sOĺe.Kj}rsS OA?b6~Z~@R*MR~~gEYǦz$rkW(ymcT9q cQb\c䪕Wͫ0A<9F!!!c+#Od{N+PRHȊ{굨B9KLȅa}ԏԒOcmjo60K~x^r=i8J_avKRWn)~$Jy q$'dx <c I'bzok *uՙEx+=>Hm7hHdS/=q͠D#6Oo@!@!@!@!@!@!@"8sܶS߼-9T3v7Y@ MI zЦGBzZayePn$HP8 xb>q4aU]F>~i<Bd^9+Wf=Y}Cf.>S/WNNyGUGpT{!7-?#/=$s %]m[q J )'W*[sZmX K+W>cGX+@!@#I;9ֽ1,kiQA>@Vް%]9fRq .+y$88s3ӏTάKZ*Q=$rVan-A)H$#҄]f\9G:= K O6W(KG-?)UJU$Kғ"am!IP zb?lxC٣ ZҸᘝ)2Lv(2y/g5K6YOj$EUj\k~>?2d(K4 iĘ WvԍFy˴BSZkwČ9<#yҍ'u:u-:2e[(7.pg1GSQ۟&󍜶i{&u)2%VBs=_8F7nW>fST Q!M}2qp`$mup&أR[=.\wP{WSiRZT33m%eaHqdDSLzzvQ yd4JP_T$+ 7i Yfm4yڋ$3XpaCKI䮙M5vfѶ;~iLUlכ8[y)= )9蔫1`37mr]5TjB4Hri/w=!hI&;ƞ죪e9̭>ݕu!mCI|4%JO{FiIFRMk%Ҳ@ݒuRإ;SE2e81՗miIW$8 Ҥ,I)RN# ٯh]ZQF*S$E@;Sb'Y;2IйUgK㽜ck5\n-4ծ$NK>V'BpFq$6M˱7*IumC!i#" }aQZlf~t>kl(/'tc\E+]Qa[*P7#[Au'MȪnbM+Js<·Ż*eɡme*hQ|OH!_tz> O8x1ݠ 2@y]b+:}0RpžveG^q`qX1l%2mDzE|{(x!~Q˩~-)wJ bus'i0;GA),ÊԋbTn<(hwK3u)  ɋfJcYb,$$:⻩G$+cI:J&|gr?thSөri,<^M/0NT0}RzGBm|LJ*i½&ējNN]ifP- ! #|gY9g8Wmtxe[SL<<;e)Ls:qEKY*RIc%vө;Qn&$m[ R Ay+pŁ_7YFקR>ہƖ~%)֨岬jE"+AΠ*qo0I{D7fIcÖ́nT7wWRóK#:!! Rr=Y _%8>I3UvowQxp[>yT˶RIR> 8CW3˔\S<\] ^̗rP(L ~8}rQJrc*ЛЋԔ ^J?_WUYŕQUپʷ9G@vXBc'uԩ|'n-∉`(UsHIVK[d]|=" :ɕFEٓnKTԼ\OyL:q<дR-3@ZLZBa6T^ÙA9)WQØ E#m-(f*s Z}&Os6J@qe˹PPv#+{K62tD4+vV i@$tLLOAi)uOs%Ő >'$@VLsɾטqMIumlyE S8%gI^?,r nTwLnZ:JKҵ2%[JvUĨUetS )>P9m0H=$b,FjVzM)f@qXZI J >Ё ImKzipɦ : e O$dst0V wlu1K`k!?;H6~*(8$mo^4kZZNx<IB?')-IMQ78d" KjuK*qey賓b@~-aIRp$EA<կzʤ9;==oBjݩQ8j~QUR)r]I&[yۈ<Ҥ8ݭ-uZtJ%yٟe0 _!ǐYZ,)m܂bӺ-'\Sϲxcqcmzj:] Vpt %0gB\H֨Ӵzf$g\J֒&*_Y81i8L9}9CA6ޢΠ[O[U17=dW6*1r *.=ZRQjFNSgZ9nbU4=ID՝~eٻa$8줨ޓDpкzڬ֑'$kXpe2>OSV*.j .M<]Y(~1a_t4KurJI?-SfP˪L N{=/tɖ7iΧ֓W:8ҞgV,ܵyKHqP蒋.(tRr'ѷu>fAa*KGfzuv;ZUE^^ $B>2SrҍL3.mVGBBF6jW^F&o;xDd0(ޗ]fP^ij]=iוd%)T{DnͲ-KoBAp9[ѫ]!(I[@R=Ï\vvj*_TQrJ]ʷf'=}x':v:?\ջ2rV*QYGNx3<Ϻ)r{ÒJhR?SqqB>ۘ9 98fɴϷKVRڶS)!*YZS-=mH۴4IdZ 0z'$ĒLe!!!!jz[.Pnxg}K7WCȂ#lckQ8㍪mxb8#'^Oj"&Xbf]i[yRPn$)+IAEo^S8jPQ+U97#*kY< >^vHݶ1EE-o2q9JeW0^nj o- Kne_cڻcj-j/C R˧JVӊ̲@s?6~3mm;>?"w݌bиDL~g#XmP]Kc / 'S,`(n4f.:B6x&*$@!K.2*S&> 2H˟<@s2pLIvV]떸ohvÍɑ789H=ϬG 2;CitܱTl\W 0;8WvZG*G(nH(J>^NF'u($OI'd!!!!!!!!-VOH;OJɼ7]e.إ@=5dm/A_.UܴJxg4-zFCY{ҿPhk¹4>tJJa=QH kOJ \$F'P4Gw@P^l  'Xet$IJ(J8ƝJUI&TRqӪ$ " k-,wsKDѡ֏bD А/zQ-PY.y'H# =ݥ4u4<_6iwu!RFg (e#&!$5ÙŠ16ishsj\CThJΏ77FZyD=|.˫ZRz?I3FOާy} {z mzsh^F79(քIrK4t{+Ejn2t<Pt1깏, M 6/Ra CTk*캮ż.NI1ӳʋ¿Okffu^rfA*NAwcjgILY'UĥvNBBĉ[\\ 8"XrE2T&ZA@}Mb8+1c ӧ k:w-|Xi-~khe ;bY+"ؚgT4zzIJzw}}v:=}q͓b0]c+<},uDkkRsߤ%W %/17 ߥ~rY:>7b5k&kd>P[ ta,ߡ{9-Ψ~aEcT|bɡwvBm])mQpHb&F*2K)ykUpHJ TmY%ƽռ6Q,irՅNTUa7q!(Q $f{?]SB ]J3b!3.vc^J|tAaL#4>X0Y:DMPvMhYTBB[r''UƍXDR&JDge~uy˩`77MkAOss r|s(U"F@yfuj5r$ VG=k-e6fm WB 5*ĵՑ >G%97k2tqBKO;^JR6Ә9r[Mњ6"3cؑ3 PJS@Q%LQ->hy?~}۪=LzsrR2{$%j&"| f] Roh^B,}NԱ+=St/i5=tMmR FF4tk溶)5.6i2Q yj׸)&NL丮P!cFed)L1Ϲs|b9=G {֥ONmD\/씴SO@L>oqe0wF@85P4ءC{ADJG#,^ _[V|Wf< /\,t %|IYd[,+-RAaHS J{{ pl~vhIKKaOG]_g͙M2THLJn/bNթrZNs ^Ju@{+f9?WP1h#c#lorzvrDǬ13SzS/O cOyGk >Llͣpy #{MJՍ,%I$y%8epm,E>Ҥ-Fwƞc8V,R4((!sHr5M}8'?&ho|Gi6'd3S<$Hi݄bE2( 3rc&ŔhNU|7Eq j٣U ?=+^mNSOJ$ޔ6`@ ?.[ݱlZV4MkF-lI{J""T"返eliZsE/LZٞҾh؍s$\)ޚf'4iB"?;4~7"qCaK-g(ܕ-GP--CudFPҫ@x\|n0Ps524-_3, S6P[ӋBgeMi!k9R)  >lHcEդ5k\DejiD60*֠?bO. Dx|a樧rXW9Nw 0Nœ\ٿ2WGI9شcrGg?-Wy?4ӱ9[jc1݊ V &Hѳzu 4`^u.%{ 뎍]MBӦ)+dikO>fKPP O .6o|)cVsT:x-zZ@cp}l:,Na @7Dd:|-ktʟPƉS̑8M;1&L2Q/T>)-Ӈ TIL}Lmsssssssssssssssssssssssssssssssssssssssccsaver/src/res/CVS/0000755000175000001440000000000010071244023015516 5ustar nyerglerusers00000000000000ccsaver/src/res/CVS/Root0000644000175000001440000000005010071244023016357 0ustar nyerglerusers00000000000000:extssh:nyergler@shell.modwest.com:/cvs ccsaver/src/res/CVS/Repository0000644000175000001440000000002010071244023017610 0ustar nyerglerusers00000000000000ccsaver/src/res ccsaver/src/res/CVS/Entries0000644000175000001440000000012710071244023017052 0ustar nyerglerusers00000000000000/cc.jpg/1.1/Mon Jun 21 12:08:55 2004/-kb/ /error.jpg/1.2/Mon Jun 21 14:36:54 2004/-kb/ ccsaver/src/CVS/0000755000175000001440000000000010071244023014725 5ustar nyerglerusers00000000000000ccsaver/src/CVS/Root0000644000175000001440000000005010071244023015566 0ustar nyerglerusers00000000000000:extssh:nyergler@shell.modwest.com:/cvs ccsaver/src/CVS/Repository0000644000175000001440000000001410071244023017022 0ustar nyerglerusers00000000000000ccsaver/src ccsaver/src/CVS/Entries0000644000175000001440000000005210071244023016256 0ustar nyerglerusers00000000000000D/conf//// D/doc//// D/java//// D/res////